about_Script_Internationalization
Kurze Beschreibung
Beschreibt die Skript-Internationalisierungsfeatures, mit denen Skripts Nachrichten und Anweisungen für Benutzer in ihrer Benutzeroberfläche (UI)-Sprache anzeigen können.
Lange Beschreibung
Mit den PowerShell-Skript-Internationalisierungsfeatures können Sie Benutzer auf der ganzen Welt besser bedienen, indem Sie Hilfe- und Benutzernachrichten in der Sprache des Benutzers anzeigen.
Die Skript-Internationalisierungsfeatures abfragen die Ui-Kultur des Betriebssystems während der Ausführung, importieren Sie die entsprechenden übersetzten Textzeichenfolgen, und zeigen Sie sie dem Benutzer an. Im Abschnitt "Daten" können Sie Textzeichenfolgen separat vom Code speichern, sodass sie einfach identifiziert und extrahiert werden. Ein neues Cmdlet, ConvertFrom-StringData
konvertiert Textzeichenfolgen in Wörterbuch-ähnliche Hashtabellen, um die Übersetzung zu erleichtern.
Um internationalen Hilfetext zu unterstützen, enthält PowerShell die folgenden Features:
Ein Datenabschnitt, der Textzeichenfolgen von Codeanweisungen trennt. Weitere Informationen zum Abschnitt "Daten" finden Sie unter about_Data_Sections.
Neue automatische Variablen
$PSCulture
und$PSUICulture
.$PSCulture
speichert den Namen der auf dem System verwendeten Benutzeroberflächensprache für Elemente wie Datum, Uhrzeit und Währung. Die$PSUICulture
Variable speichert den Namen der auf dem System verwendeten Benutzeroberflächensprache für Benutzeroberflächenelemente wie Menüs und Textzeichenfolgen.Ein Cmdlet,
ConvertFrom-StringData
das Textzeichenfolgen in Wörterbuch-ähnliche Hashtabellen konvertiert, um die Übersetzung zu erleichtern. Weitere Informationen finden Sie unter ConvertFrom-StringData.Ein neuer Dateityp,
.psd1
der übersetzte Textzeichenfolgen speichert. Die.psd1
Dateien werden in sprachspezifischen Unterverzeichnissen des Skriptverzeichniss gespeichert.Ein Cmdlet,
Import-LocalizedData
das übersetzte Textzeichenfolgen für eine angegebene Sprache in ein Skript zur Laufzeit importiert. Dieses Cmdlet erkennt und importiert Zeichenfolgen in jeder unterstützten Windows-Sprache. Weitere Informationen finden Sie unter Import-LocalizedData.
Der Abschnitt "Daten": Speichern von Standardzeichenfolgen
Verwenden Sie einen Datenabschnitt im Skript, um die Textzeichenfolgen in der Standardsprache zu speichern. Ordnen Sie die Zeichenfolgen in Schlüssel-/Wertpaaren in einer hier Zeichenfolge an. Jedes Schlüssel-/Wertpaar muss sich in einer separaten Zeile sein. Wenn Sie Kommentare einschließen, müssen die Kommentare in separaten Zeilen enthalten sein.
Das ConvertFrom-StringData
Cmdlet konvertiert die Schlüssel-/Wertpaare in die hier Zeichenfolge in eine wörterbuchähnliche Hashtabelle, die im Wert der Datenabschnittsvariable gespeichert ist.
Im folgenden Beispiel enthält der Abschnitt "Daten" des World.ps1
Skripts die English-United Staaten (en-US) von Eingabeaufforderungsnachrichten für ein Skript. Das ConvertFrom-StringData
Cmdlet konvertiert die Zeichenfolgen in eine Hashtabelle und speichert sie in der $msgtable
Variablen.
$msgTable = Data {
#culture="en-US"
ConvertFrom-StringData @'
helloWorld = Hello, World.
errorMsg1 = You cannot leave the user name field blank.
promptMsg = Please enter your user name.
'@
}
Weitere Informationen zu hier Zeichenfolgen finden Sie unter about_Quoting_Rules.
PSD1-Dateien: Speichern übersetzter Zeichenfolgen
Speichern Sie die Skriptnachrichten für jede Ui-Sprache in separaten Textdateien mit demselben Namen wie das Skript und die .psd1
Dateinamenerweiterung. Speichern Sie die Dateien in Unterverzeichnissen des Skriptverzeichniss mit Namen von Kulturen im folgenden Format:
<language>-<region>
Beispiele: de-DE, ar-SA und zh-Hans
Wenn das Skript beispielsweise im C:\Scripts
Verzeichnis gespeichert ist, würden Sie eine Dateiverzeichnisstruktur erstellen, die World.ps1
wie folgt aussieht:
C:\Scripts
C:\Scripts\World.ps1
C:\Scripts\de-DE\World.psd1
C:\Scripts\ar-SA\World.psd1
C:\Scripts\zh-CN\World.psd1
...
Die World.psd1
Datei im De-DE-Unterverzeichnis des Skriptverzeichniss kann die folgende Anweisung enthalten:
ConvertFrom-StringData -StringData @'
helloWorld = Hallo, Welt.
errorMsg1 = Das Feld Benutzername darf nicht leer sein.
promptMsg = Geben Sie Ihren Benutzernamen ein.
'@
Ähnlich enthält die World.psd1
Datei im Ar-SA-Unterverzeichnis des Skriptverzeichniss möglicherweise die folgende Anweisung:
ConvertFrom-StringData -StringData @'
helloWorld = مرحبًا أيها العالَم
errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
promptMsg = يرجى إدخال اسم المستخدم الخاص بك
'@
Import-lokalisierteData: Dynamischer Abruf von übersetzten Zeichenfolgen
Um die Zeichenfolgen in der Benutzeroberflächensprache des aktuellen Benutzers abzurufen, verwenden Sie das Import-LocalizedData
Cmdlet.
Import-LocalizedData
findet den Wert der $PSUICulture
automatischen Variable und importiert den Inhalt der <script-name>.psd1
Dateien im Unterverzeichnis, das dem $PSUICulture
Wert entspricht. Anschließend speichert er den importierten Inhalt in der Variablen, die durch den Wert des BindingVariable-Parameters angegeben ist.
Import-LocalizedData -BindingVariable msgTable
Wenn der Befehl beispielsweise im C:\Scripts\World.ps1
Skript angezeigt wird und der Import-LocalizedData
Wert $PSUICulture
"ar-SA" lautet, Import-LocalizedData
findet die folgende Datei:
C:\Scripts\ar-SA\World.psd1
Anschließend importiert sie die arabischen Textzeichenfolgen aus der Datei in die $msgTable
Variable, ersetzen alle Standardzeichenfolgen, die im Abschnitt "Daten" des World.ps1
Skripts definiert werden können.
Wenn das Skript die $msgTable
Variable zum Anzeigen von Benutzernachrichten verwendet, werden die Nachrichten in Arabisch angezeigt.
Das folgende Skript zeigt beispielsweise die Meldung "Bitte Ihren Benutzernamen eingeben" in Arabisch an:
if (!($username)) { $msgTable.promptMsg }
Wenn Import-LocalizedData
keine .psd1
Datei gefunden wird, die dem Wert entspricht, wird der Wert $msgTable
$PSUIculture
nicht ersetzt, und der Aufruf, um $msgTable.promptMsg
die Fallback-en-US-Zeichenfolgen anzuzeigen.
Beispiele
In diesem Beispiel wird gezeigt, wie die Skript-Internationalisierungsfeatures in einem Skript verwendet werden, um einen Tag der Woche für Benutzer in der Sprache anzuzeigen, die auf dem Computer festgelegt ist.
Im Folgenden finden Sie eine vollständige Auflistung der skriptdatei Sample1.ps1.
Das Skript beginnt mit einem Datenabschnitt namens "Tag" ($Day), der einen ConvertFrom-StringData
Befehl enthält. Der an diese Stelle übermittelte ConvertFrom-StringData
Ausdruck ist eine hier-Zeichenfolge, die die Tagnamen in der Standard-UI-Kultur, en-US, in Schlüssel-/Wertpaaren enthält. Das ConvertFrom-StringData
Cmdlet konvertiert die Schlüssel-/Wertpaare in der hier Zeichenfolge in eine Hashtabelle und speichert sie dann im Wert der $Day
Variablen.
Der Import-LocalizedData
Befehl importiert den Inhalt der Datei in das Verzeichnis, das dem Wert $PSUICulture
der .psd1
automatischen Variable entspricht, und speichert ihn dann in der $Day
Variablen, indem die Werte $Day
ersetzt werden, die im Abschnitt "Daten" definiert sind.
Die verbleibenden Befehle laden die Zeichenfolgen in ein Array und zeigen sie an.
$Day = Data {
#culture="en-US"
ConvertFrom-StringData -StringData @'
messageDate = Today is
d0 = Sunday
d1 = Monday
d2 = Tuesday
d3 = Wednesday
d4 = Thursday
d5 = Friday
d6 = Saturday
'@
}
Import-LocalizedData -BindingVariable Day
#Build an array of weekdays.
$a = $Day.d0, $Day.d1, $Day.d2, $Day.d3, $Day.d4, $Day.d5, $Day.d6
# Get the day of the week as a number (Monday = 1).
# Index into $a to get the name of the day.
# Use string formatting to build a sentence.
"{0} {1}" -f $Day.messageDate, $a[(Get-Date -UFormat %u)] | Out-Host
Die .psd1
Dateien, die das Skript unterstützen, werden in Unterverzeichnissen des Skriptverzeichniss mit Namen gespeichert, die den $PSUICulture
Werten entsprechen.
Nachfolgend finden Sie eine vollständige Auflistung von .\de-DE\sample1.psd1
:
# culture="de-DE"
ConvertFrom-StringData @'
messageDate = Heute ist
d0 = Sonntag
d1 = Montag
d2 = Dienstag
d3 = Mittwoch
d4 = Donnerstag
d5 = Freitag
d6 = Samstag
'@
Wenn Sie Sample.ps1 auf einem System ausführen, auf dem der Wert $PSUICulture
de-DE ist, lautet die Ausgabe des Skripts:
Heute ist Freitag