about_Script_Internationalization
Kurze Beschreibung
Beschreibt die Skript-Internationalisierungsfeatures, mit denen Skripts Nachrichten und Anweisungen für Benutzer in ihrer Benutzeroberflächensprache 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 fragen die Benutzeroberflächenkultur 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 von Code speichern, sodass sie leicht identifiziert und extrahiert werden. Ein neues Cmdlet ConvertFrom-StringData
, konvertiert Textzeichenfolgen in wörterbuchähnliche Hashtabellen, um die Übersetzung zu erleichtern.
Zur Unterstützung von internationalem Hilfetext 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 ui-Sprache, die im System für Elemente wie Datum, Uhrzeit und Währung verwendet wird. Die$PSUICulture
Variable speichert den Namen der ui-Sprache, die auf dem 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
der übersetzte Textzeichenfolgen speichert. 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 Datenabschnitt 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 enthalten. Wenn Sie Kommentare einfügen, müssen sich die Kommentare in separaten Zeilen befinden.
Das ConvertFrom-StringData
Cmdlet konvertiert die Schlüssel-Wert-Paare in der hier-Zeichenfolge in eine wörterbuchähnliche Hashtabelle, die im Wert der Datenabschnittsvariablen gespeichert ist.
Im folgenden Beispiel enthält der Abschnitt "Daten" des World.ps1
Skripts den Englisch-USA (en-US)-Satz 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 den hier aufgeführten 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 Skriptverzeichnisses mit Namen der 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 etwa 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 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.
'@
Ebenso kann die World.psd1
Datei im Unterverzeichnis ar-SA des Skriptverzeichnisses die folgende Anweisung enthalten:
ConvertFrom-StringData -StringData @'
helloWorld = مرحبًا أيها العالَم
errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
promptMsg = يرجى إدخال اسم المستخدم الخاص بك
'@
Import-LocalizedData: Dynamischer Abruf übersetzter Zeichenfolgen
Verwenden Sie das Import-LocalizedData
Cmdlet, um die Zeichenfolgen in der Benutzeroberflächensprache des aktuellen Benutzers abzurufen.
Import-LocalizedData
findet den Wert der $PSUICulture
automatischen Variablen 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 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
findet die folgende Datei:
C:\Scripts\ar-SA\World.psd1
Anschließend werden die arabischen Textzeichenfolgen aus der Datei in die $msgTable
Variable importiert, wobei alle Standardzeichenfolgen ersetzt werden, die im Abschnitt "Daten" des World.ps1
Skripts definiert werden können.
Wenn das Skript die Variable zum Anzeigen von Benutzernachrichten verwendet $msgTable
, werden die Meldungen in Arabisch angezeigt.
Das folgende Skript zeigt beispielsweise die Meldung "Bitte Geben Sie Ihren Benutzernamen" in Arabisch an:
if (!($username)) { $msgTable.promptMsg }
Wenn Import-LocalizedData
keine .psd1
Datei gefunden wird, die dem Wert $PSUIculture
entspricht, wird der Wert von $msgTable
nicht ersetzt, und der Aufruf zum $msgTable.promptMsg
Anzeigen der Fallback-en-US-Zeichenfolgen.
Beispiele
Dieses Beispiel zeigt, wie die Skript-Internationalisierungsfeatures in einem Skript verwendet werden, um benutzern in der Sprache, die auf dem Computer festgelegt ist, einen Wochentag anzuzeigen.
Nachfolgend finden Sie eine vollständige Auflistung der Skriptdatei "Sample1.ps1".
Das Skript beginnt mit einem Datenabschnitt mit dem Namen Tag ($Day), der einen ConvertFrom-StringData
Befehl enthält. Der an übermittelte ConvertFrom-StringData
Ausdruck ist eine here-Zeichenfolge, die die Tagnamen in der Standard-UI-Kultur (en-US) in Schlüssel-Wert-Paaren enthält. Das ConvertFrom-StringData
Cmdlet konvertiert die Schlüssel-Wert-Paare in der hier-Zeichenfolge in eine Hashtabelle und speichert sie dann im Wert der $Day
Variablen.
Der Import-LocalizedData
Befehl importiert den Inhalt der .psd1
Datei im Verzeichnis, der dem Wert der $PSUICulture
automatischen Variablen entspricht, und speichert sie dann in der $Day
Variablen, wobei die Werte ersetzt werden, die $Day
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 Skriptverzeichnisses mit Namen gespeichert, die den $PSUICulture
Werten entsprechen.
Es folgt 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" lautet, lautet die Ausgabe des Skripts wie folgt:
Heute ist Freitag