about_Script_Internationalization
Kurze Beschreibung
Beschreibt die Skript internationalisierungsfeatures, die es Skripts erleichtern, Nachrichten und Anweisungen für Benutzer in ihrer Benutzeroberflächensprache anzuzeigen.
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 fragen die Ui-Kultur des Betriebssystems während der Ausführung ab, importieren die entsprechenden übersetzten Textzeichenfolgen und zeigen sie dem Benutzer an. Im Abschnitt Daten können Sie Textzeichenfolgen getrennt vom Code speichern, sodass sie leicht identifiziert und extrahiert werden können. 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, in dem Textzeichenfolgen von Codeanweisungen getrennt werden. Weitere Informationen zum Abschnitt Daten finden Sie unter about_Data_Sections.
Neue automatische Variablen
$PSCulture
und$PSUICulture
.$PSCulture
speichert den Namen der Benutzeroberflächensprache, die im System für Elemente wie Datum, Uhrzeit und Währung verwendet wird. Die$PSUICulture
Variable speichert den Namen der Benutzeroberflächensprache, die im System für Benutzeroberflächenelemente wie Menüs und Textzeichenfolgen verwendet wird.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
, in dem übersetzte Textzeichenfolgen gespeichert werden. Die.psd1
Dateien werden in sprachspezifischen Unterverzeichnissen des Skriptverzeichnisses gespeichert.Ein Cmdlet ,
Import-LocalizedData
das übersetzte Textzeichenfolgen für eine angegebene Sprache zur Laufzeit in ein Skript importiert. Dieses Cmdlet erkennt und importiert Zeichenfolgen in jeder von Windows unterstützten Sprache. Weitere Informationen finden Sie unter Import-LocalizedData.
Der Datenabschnitt: Speichern von Standardzeichenfolgen
Verwenden Sie einen Abschnitt Daten im Skript, um die Textzeichenfolgen in der Standardsprache zu speichern. Ordnen Sie die Zeichenfolgen in Schlüssel-Wert-Paaren in einer here-Zeichenfolge an. Jedes Schlüssel-Wert-Paar muss sich in einer separaten Zeile befinden. Wenn Sie Kommentare einschließen, müssen sich die Kommentare in separaten Zeilen befinden.
Das ConvertFrom-StringData
Cmdlet konvertiert die Schlüssel-Wert-Paare in der here-string in eine wörterbuchähnliche Hashtabelle, die im Wert der Data-Abschnittsvariable gespeichert ist.
Im folgenden Beispiel enthält der Abschnitt Daten des World.ps1
Skripts den satz English-United States (en-US) von Eingabeaufforderungsmeldungen 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 here-strings 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 Skriptverzeichnisses mit Namen von Kulturen im folgenden Format:
<language>-<region>
Beispiele: de-DE, ar-SA und zh-Hans
Wenn das World.ps1
Skript beispielsweise im C:\Scripts
Verzeichnis gespeichert ist, erstellen Sie eine Dateiverzeichnisstruktur, die 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 Unterverzeichnis de-DE des Skriptverzeichnisses enthält möglicherweise die folgende Anweisung:
ConvertFrom-StringData -StringData @'
helloWorld = Hallo, Welt.
errorMsg1 = Das Feld Benutzername darf nicht leer sein.
promptMsg = Geben Sie Ihren Benutzernamen ein.
'@
Ebenso kann die World.psd1
Datei im Unterverzeichnis ar-SA des Skriptverzeichnisses die folgende Anweisung enthalten:
ConvertFrom-StringData -StringData @'
helloWorld = مرحبًا أيها العالَم
errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
promptMsg = يرجى إدخال اسم المستخدم الخاص بك
'@
Import-LocalizedData: Dynamisches Abrufen übersetzter Zeichenfolgen
Verwenden Sie Import-LocalizedData
das Cmdlet, um die Zeichenfolgen in der Benutzeroberflächensprache des aktuellen Benutzers abzurufen.
Import-LocalizedData
sucht den Wert der $PSUICulture
automatischen Variablen und importiert den Inhalt der <script-name>.psd1
Dateien in das Unterverzeichnis, das dem $PSUICulture
Wert entspricht. Anschließend wird der importierte Inhalt in der Variablen gespeichert, die durch den Wert des BindingVariable-Parameters angegeben wird.
Import-LocalizedData -BindingVariable msgTable
Wenn der Import-LocalizedData
Befehl beispielsweise im C:\Scripts\World.ps1
Skript angezeigt wird und der Wert von $PSUICulture
"ar-SA" lautet, Import-LocalizedData
sucht die folgende Datei:
C:\Scripts\ar-SA\World.psd1
Anschließend importiert es die arabischen Textzeichenfolgen aus der Datei in die $msgTable
Variable und ersetzt alle Standardzeichenfolgen, die möglicherweise im Abschnitt Daten des World.ps1
Skripts definiert werden.
Wenn das Skript die $msgTable
Variable zum Anzeigen von Benutzernachrichten verwendet, werden die Nachrichten daher auf Arabisch angezeigt.
Das folgende Skript zeigt beispielsweise die Meldung "Geben Sie Ihren Benutzernamen ein" auf Arabisch an:
if (!($username)) { $msgTable.promptMsg }
Wenn Import-LocalizedData
keine .psd1
Datei gefunden wird, die dem Wert von $PSUIculture
entspricht, wird der Wert von $msgTable
nicht ersetzt, und der Aufruf von $msgTable.promptMsg
zeigt die Fallbackzeichenfolgen en-US an.
Beispiele
In diesem Beispiel wird gezeigt, wie die Skript internationalisierungsfeatures in einem Skript verwendet werden, um Benutzern einen Wochentag in der sprache anzuzeigen, die auf dem Computer festgelegt ist.
Im Folgenden finden Sie eine vollständige Auflistung der Sample1.ps1 Skriptdatei.
Das Skript beginnt mit einem Datenabschnitt mit dem Namen Day ($Day), der einen ConvertFrom-StringData
Befehl enthält. Der an übermittelte ConvertFrom-StringData
Ausdruck ist eine here-Zeichenfolge, die die Tagnamen in der Standard-Benutzeroberflächenkultur en-US in Schlüssel-Wert-Paaren enthält. Das ConvertFrom-StringData
Cmdlet konvertiert die Schlüssel-Wert-Paare in der here-string in eine Hashtabelle und speichert sie dann im Wert der $Day
Variablen.
Der Import-LocalizedData
Befehl importiert den Inhalt der .psd1
Datei in das Verzeichnis, das dem Wert der $PSUICulture
automatischen Variablen entspricht, und speichert ihn dann in der $Day
Variablen, wobei die im Abschnitt Daten definierten Werte $Day
ersetzt werden.
Die restlichen 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 Skriptverzeichnisses mit Namen gespeichert, die den $PSUICulture
Werten entsprechen.
Im Folgenden 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 also Sample.ps1 auf einem System ausführen, auf dem der Wert von $PSUICulture
de-DE lautet, lautet die Ausgabe des Skripts:
Heute ist Freitag