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-StringDatakonvertiert 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-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 Skriptverzeichniss gespeichert.

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

Siehe auch