Freigeben über


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-StringDatadas Textzeichenfolgen in wörterbuchähnliche Hashtabellen konvertiert, um die Übersetzung zu erleichtern. Weitere Informationen finden Sie unter ConvertFrom-StringData.

  • Ein neuer Dateityp, .psd1der übersetzte Textzeichenfolgen speichert. Die .psd1 Dateien werden in sprachspezifischen Unterverzeichnissen des Skriptverzeichnisses gespeichert.

  • Ein Cmdlet, Import-LocalizedDatadas ü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 $PSUIcultureentspricht, 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

Siehe auch