about_Script_Internationalization

Letzte Aktualisierung: Mai 2014

Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

THEMA

about_Script_Internationalization

KURZE BESCHREIBUNG

Beschreibt die Funktionen des Skript-Internationalisierung von Windows PowerShell® 2.0, mit denen Skripts ganz einfach Meldungen und Informationen für Benutzer in der Sprache ihrer Benutzeroberfläche (UI) anzeigen können.

LANGE BESCHREIBUNG

Mit den Funktionen der Windows PowerShell-Skript-Internationalisierung können den Bedürfnissen von Benutzer auf der ganzen Welt besser gerecht werden, indem Sie Hilfe und Benutzermeldungen für Skripts und Funktionen in der Benutzeroberflächensprache des jeweiligen Benutzers anzeigen lassen.

Die Funktionen der Skript-Internationalisierung fragen während der Ausführung die UI-Kultur des Betriebssystems ab, importieren die entsprechenden übersetzten Textzeichenfolgen und zeigen diese dem Benutzer an. Im Data-Abschnitt können Sie Textzeichenfolgen getrennt vom Code speichern, damit diese leicht identifiziert und extrahiert werden können. Das neue ConvertFrom-StringData-Cmdlet konvertiert Textzeichenfolgen in wörterbuch-ähnliche Hash-Tabellen, um die Übersetzung zu vereinfachen.

Die in Windows PowerShell 2.0 verwendeten Funktionen zur Skript-Internationalisierung werden von Windows PowerShell 1.0 nicht unterstützt. Skripts, die diese Funktionen enthalten, können in Windows PowerShell 1.0 nicht unverändert ausgeführt werden.

Zur Unterstützung von internationalem Hilfetext bietet Windows PowerShell 2.0 die folgenden Funktionen:

  • – einen Data-Abschnitt, der Textzeichenfolgen von Code-Anweisungen trennt. Weitere Informationen zum Data-Abschnitt finden Sie unter „about_Data_Sections“.

  • – die neuen automatischen Variablen $PSCulture und $PSUICulture. $PSCulture speichert den Namen der Benutzeroberflächensprache, die auf dem System für Elemente wie z. B. Datum, Uhrzeit und Währung verwendet wird. Die $PSUICulture-Variable speichert den Namen der Benutzeroberflächensprache, die auf dem System für Benutzeroberflächenelemente wie Menüs und Textzeichenfolgen verwendet wird.

  • – das ConvertFrom-StringData-Cmdlet, das Textzeichenfolgen in wörterbuch-ähnliche Hash-Tabellen konvertiert, um die Übersetzung zu erleichtern. Weitere Informationen finden Sie unter „ConvertFrom-StringData“.

  • – den neuen Dateityp psd1, in dem übersetzte Textzeichenfolgen gespeichert werden. Die psd1-Dateien werden in sprachspezifischen Unterverzeichnissen des Skript-Verzeichnisses gespeichert.

  • – das Import-LocalizedData-Cmdlet, das zur Laufzeit übersetzte Textzeichenfolgen für eine angegebene Sprache in ein Skript importiert. Dieses Cmdlet erkennt und importieret Zeichenfolgen in jeder von Windows unterstützten Sprache. Weitere Informationen finden Sie unter „Import-LocalizedData“.

DER DATA-ABSCHNITT: SPEICHERN VON STANDARDZEICHENFOLGEN

Verwenden Sie einen Data-Abschnitt zum Speichern der Textzeichenfolgen in der Standardsprache. Ordnen Sie die Zeichenfolgen im Schlüssel-Wert-Paaren in eine 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-Zeichenfolge in eine wörterbuch-ähnliche Hash-Tabelle, die im Wert der Data-Abschnittsvariablen gespeichert ist.

Im folgenden Beispiel enthält der Data-Abschnitt des World.ps1-Skripts den Satz „Englisch-USA (En-US)“ für Befehlszeilennmeldungen für ein Skript. Das ConvertFrom-StringData-Cmdlet konvertiert die Zeichenfolgen in eine Hash-Tabelle und speichert diese 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-Zeichenfolgen finden Sie unter „about_Quoting_Rules“.

PSD1-DATEIEN: SPEICHERN VON ÜBERSETZTEN ZEICHENFOLGEN

Die Skript-Meldungen für jede Benutzeroberflächensprache werden in separaten Textdateien mit dem gleichen Namen wie das Skript und der psd1-Dateinamenerweiterung gespeichert. Speichern Sie die Dateien in den Unterverzeichnissen des Skript-Verzeichnisses mit den Namen der Kulturen im folgenden Format:

        <language>–<region>

Beispiele: de-DE, ar-SA und zh-Hans.

Wenn z. B. das World.ps1-Skript im Verzeichnis C:\Scripts gespeichert ist, würden Sie eine Verzeichnisstruktur für die Datei erstellen, die der folgenden ähnelt:

    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 Skript-Verzeichnisses könnte z. B. die folgende Anweisung enthalten:

        ConvertFrom-StringData @'
            helloWorld = Hello, World (in German).
            errorMsg1 = You cannot leave the user name field blank (in German).
            promptMsg = Please enter your user name (in German).
        '@

In gleicher Weise enthält die World.psd1-Datei im Unterverzeichnis „ar-SA“ des Skript-Verzeichnisses möglicherweise die folgende Anweisung:

        ConvertFrom-StringData @'
            helloWorld = Hello, World (in Arabic).
            errorMsg1 = You cannot leave the user name field blank (in Arabic).
            promptMsg = Please enter your user name (in Arabic).
        '@

IMPORT-LOCALIZEDDATA: DYNAMISCHES ABRUFEN VON ÜBERSETZTEN ZEICHENFOLGEN

Zum Abrufen der Zeichenfolgen in der Benutzeroberflächensprache des aktuellen Benutzers verwenden Sie das Import-LocalizedData-Cmdlet.Abschnittstext hier einfügen.

Import-LocalizedData findet den Wert der automatischen Variablen „$PSUICulture“ und importiert den Inhalt der <Skriptname>psd1-Dateien aus dem Unterverzeichnis, das dem $PSUICulture-Wert entspricht. Anschließend wird der importierte Inhalt in der Variablen gespeichert, die durch den Wert des BindingVariable-Parameters angegeben ist.

        import-localizeddata -bindingVariable msgTable

Wenn z. B. der Import-LocalizedData-Befehl im C:\Scripts\World.ps1-Skript vorkommt, und der Wert von $PSUICulture „Ar-SA“ lautet, findet Import-LocalizedData die folgende Datei:

         C:\Scripts\ar-SA\World.psd1

Anschließend importiert es die arabischen Textzeichenfolgen aus der Datei in die $msgTable-Variable, wodurch die Standardzeichenfolgen ersetzt werden, die möglicherweise im Data-Abschnitt des World.ps1-Skripts definiert sind.

Das Ergebnis: Wenn das Skript die $msgTable-Variable verwendet, um Benutzermeldungen anzuzeigen, werden diese Meldungen auf Arabisch angezeigt.

Das folgende Skript zeigt beispielsweise die Meldung „Bitte geben Sie Ihren Benutzernamen ein“ auf Arabisch an:

        if (!($username)) { $msgTable.promptMsg }

Wenn Import-LocalizedData keine .psd1-Datei finden kann, die dem Wert von $PSUIculture entspricht, wird der Wert von $msgTable nicht ersetzt, und beim Aufruf von $msgTable.promptMsg werden die ursprünglichen en-US-Zeichenfolgen angezeigt.

BEISPIEL

Dieses Beispiel zeigt, wie die Funktionen zur Skript-Internationalisierung in einem Skript verwendet werden, um Benutzern den Wochentag in der Sprache anzuzeigen, die auf dem Computer festgelegt ist.

Im Folgenden finden eine vollständige Auflistung der Sample1.ps1-Skriptdatei.

Das Skript beginnt mit einem Data-Abschnitt namens „Day“ ($Day), der einen ConvertFrom-StringData-Befehl enthält. Der an ConvertFrom-StringData gesendete Ausdruck ist eine here-Zeichenfolge, welche in Form von Schlüssel-Wert-Paaren die Namen der Wochentage in der Standard-UI-Kultur „en-US“ enthält. Das ConvertFrom-StringData-Cmdlet konvertiert die Schlüssel-Wert-Paare in der here-Zeichenfolge in eine Hash-Tabelle und speichert diese dann im Wert der $Day-Variablen.

Der Import-LocalizedData-Befehl importiert den Inhalt der .psd1-Datei aus dem Verzeichnis, das dem Wert der automatischen Variablen „$PSUICulture“ entspricht, und speichert ihn dann in der $Day-Variablen, wobei die Werte von $Day ersetzt werden, die im Data-Abschnitt definiert sind.

Die restlichen Befehle laden die Zeichenfolgen in ein Array und zeigen sie an.

        $Day = DATA {
        # culture=\"en-US\"
        ConvertFrom-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 den Unterverzeichnissen des Skript-Verzeichnisses gespeichert, und zwar mit Namen, die den Werten von $PSUICulture entsprechen.

Im Folgenden finden Sie eine vollständige Auflistung von .\de-DE\sample1.psd1:

        # culture=\"de-DE\"
        ConvertFrom-StringData @'
        messageDate = Today is 
            d0 = Sunday (in German)
            d1 = Monday (in German)
            d2 = Tuesday (in German)
            d3 = Wednesday (in German)
            d4 = Thursday (in German)
            d5 = Friday (in German)
            d6 = Saturday (in German)
        '@

Das Ergebnis: Wenn Sie Sample.ps1 auf einem System ausführen, auf dem der $PSUICulture-Wert „de-DE“ ist, lautet die Ausgabe des Skripts:

        Today is Friday (in German)

SIEHE AUCH

about_Data_Sections

about_Automatic_Variables

about_Hash_Tables

about_Quoting_Rules

ConvertFrom-StringData

Import-LocalizedData