Freigeben über


about_Script_Internationalization

THEMA
    about_Script_Internationalization

KURZBESCHREIBUNG
    Beschreibt die Skriptinternationalisierungsfeatures von Windows 
    PowerShell 2.0, mit denen mit Skripts leicht Meldungen und 
    Anweisungen für Benutzer in ihrer Benutzeroberflächensprache 
    angezeigt werden können.


DETAILBESCHREIBUNG
    Mit den Skriptinternationalisierungsfeatures in Windows 
    PowerShell können Sie Benutzern weltweit eine höhere 
    Benutzerfreundlichkeit bieten, indem Hilfe und Benutzermeldungen 
    für Skripts und Funktionen in der Benutzeroberflächensprache des 
    Benutzers angezeigt werden.
    
    Die Skriptinternationalisierungsfeatures fragen während der 
    Ausführung die Benutzeroberflächenkultur des Betriebssystems ab, 
    importieren die entsprechenden übersetzten Textzeichenfolgen und 
    zeigen sie für den Benutzer an. Im Datenabschnitt können Sie 
    Textzeichenfolgen getrennt von Code speichern, sodass sie bequem 
    identifiziert und extrahiert werden können. Das neue Cmdlet 
    "ConvertFrom-StringData" konvertiert Textzeichenfolgen in 
    wörterbuchähnliche Hashtabellen, um die Übersetzung zu erleichtern. 

    Die bei der Skriptinternationalisierung verwendeten Windows 
    PowerShell 2.0-Features werden von Windows PowerShell 1.0 nicht 
    unterstützt. Skripts, die diese Features enthalten, werden in 
    Windows PowerShell 1.0 nicht ohne Änderungen ausgeführt.  

    Zum Unterstützen von internationalem Hilfetext umfasst Windows 
    PowerShell 2.0 die folgenden Features:

       -- Ein Datenabschnitt, mit dem Textzeichenfolgen von 
          Codeanweisungen getrennt werden. Weitere Informationen zum 
          Datenabschnitt finden Sie unter "about_Data_Sections".

       -- Neue automatische Variablen ("$PSCulture" und 
          "$PSUICulture"). Mit "$PSCulture" wird der Name der 
          Benutzeroberflächensprache gespeichert, die im System für 
          Elemente wie Datum, Uhrzeit und Währung verwendet wird. In 
          der $PSUICulture-Variablen wird der Name der Benutzerober-
          flächensprache gespeichert, die im System für Benutzerober-
          flächenelemente wie Menüs und Textzeichenfolgen verwendet 
          wird.

       -- Das Cmdlet "ConvertFrom-StringData", das Textzeichenfolgen 
          in wörterbuchähnliche Hashtabellen konvertiert, um die 
          Übersetzung zu erleichtern. Weitere Informationen finden 
          Sie unter "ConvertFrom-StringData".

       -- Der neue Dateityp ".psd1", in dem übersetzte Textzeichenfol-
          gen gespeichert werden. Die PSD1-Dateien werden in 
          sprachspezifischen Unterverzeichnissen des Skriptverzeich-
          nisses gespeichert.
    
       -- Das Cmdlet "Import-LocalizedData", mit dem übersetzte 
          Textzeichenfolgen für eine angegebene Sprache zur Laufzeit 
          in ein Skript importiert werden. Dieses Cmdlet erkennt und 
          importiert Zeichenfolgen in allen von Windows unterstützten 
          Sprachen. Weitere Informationen finden Sie unter 
          "Import-LocalizedData".


 DER DATENABSCHNITT: Speichern von Standardzeichenfolgen
 
     Verwenden Sie im Skript einen Datenabschnitt, 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 in einer 
     eigenen Zeile aufgeführt werden. Wenn Sie Kommentare 
     einschließen, müssen sich die Kommentare in separaten Zeilen 
     befinden.

     Das Cmdlet "ConvertFrom-StringData" konvertiert die 
     Schlüssel-Wert-Paare in der here-Zeichenfolge in eine 
     wörterbuchähnliche Hashtabelle, die im Wert der Datenabschnitts-
     variablen gespeichert wird.

     Im folgenden Beispiel enthält der Datenabschnitt des Skripts 
     "Welt.ps1" den Satz von Aufforderungsmeldungen für Englisch 
     (USA) (en-US) für ein Skript. Das Cmdlet "ConvertFrom-StringData"
     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-Zeichenfolgen finden Sie unter "about_Quoting_Rules".


 PSD1-DATEIEN: Speichern von übersetzten Zeichenfolgen

    Speichern Sie die Skriptmeldungen für die einzelnen 
    Benutzeroberflächensprachen in separaten Textdateien mit dem 
    gleichen Namen wie das Skript und der PSD1-Dateinamenerweiterung. 
    Speichern Sie die Dateien in Unterverzeichnissen des 
    Skriptverzeichnisses mit den Namen der Kulturen im folgenden Format:

    <Sprache>-<Region>

    Beispiele: de-DE, ar-SA und zh-CN


    Wenn das Skript "Welt.ps1" z. B. im Verzeichnis "C:\Skripts" 
    gespeichert wird, würden Sie eine Dateiverzeichnisstruktur 
    erstellen, die etwa folgendermaßen aussieht:

    C:\Skripts
    C:\Skripts\Welt.ps1
        C:\Skripts\de-DE\Welt.psd1  
            C:\Skripts\ar-SA\Welt.psd1  
            C:\Skripts\zh-CN\Welt.psd1  
        ... 


    Die Datei "Welt.psd1" im Unterverzeichnis "de-DE" des 
    Skriptverzeichnisses könnte die folgende Anweisung enthalten:


        ConvertFrom-StringData @'
        helloWorld = Hallo, Welt. (auf Deutsch)
        errorMsg1 = Das Feld für den Benutzernamen darf nicht leer sein. (auf Deutsch)
            promptMsg = Geben Sie Ihren Benutzernamen ein. (auf Deutsch)
    '@


    Entsprechend kann die Datei "Welt.psd1" im Unterverzeichnis 
    "ar-SA" des Skriptverzeichnisses die folgende Anweisung enthalten:


        ConvertFrom-StringData @'
        helloWorld = Hallo, Welt. (auf Arabisch)
        errorMsg1 = Das Feld für den Benutzernamen darf nicht leer sein. (auf Arabisch)
            promptMsg = Geben Sie Ihren Benutzernamen ein. (auf Arabisch)
    '@


 IMPORT-LOCALIZEDDATA: Dynamischer Abruf übersetzter Zeichenfolgen

    Rufen Sie die Zeichenfolgen in der Benutzeroberflächensprache des 
    aktuellen Benutzers mit dem Cmdlet "Import-LocalizedData" ab. 

    Mit "Import-LocalizedData" wird der Wert der automatischen 
    $PSUICulture-Variablen gesucht und der Inhalt der 
    <Skriptname>.psd1-Dateien in das Unterverzeichnis importiert, 
    das dem $PSUICulture-Wert entspricht. Danach wird der importierte 
    Inhalt in der vom Wert des BindingVariable-Parameters angegebenen 
    Variablen gespeichert. 

    import-localizeddata -bindingVariable msgTable

    Wenn z. B. der Befehl "Import-LocalizedData" im Skript 
    "C:\Skripts\Welt.ps1" angezeigt wird und der Wert von 
    $PSUICulture "ar-SA" lautet, sucht "Import-LocalizedData" die 
    folgende Datei:

         C:\Skripts\ar-SA\Welt.psd1

    Danach werden die arabischen Textzeichenfolgen aus der Datei in 
    die $msgTable-Variable importiert. Dabei werden alle 
    Standardzeichenfolgen ersetzt, die im Datenabschnitt des Skripts 
    "Welt.ps1" definiert sind.

    Wenn das Skript Benutzermeldungen mithilfe der $msgTable-Variablen 
    anzeigt, werden die Meldungen daher auf Arabisch angezeigt.

    Mit dem folgenden Skript wird z. B. die Meldung "Geben Sie Ihren 
    Benutzernamen ein" auf Arabisch angezeigt:

    if (!($username)) { $msgTable.promptMsg }  
    
    Wenn "Import-LocalizedData" keine PSD1-Datei findet, die mit dem 
    Wert von "$PSUIculture" übereinstimmt, wird der Wert von 
    "$msgTable" nicht ersetzt, und mit dem Aufruf von 
    "$msgTable.promptMsg" werden die Fallback-Zeichenfolgen für 
    en-US angezeigt.



 BEISPIEL:

    In diesem Beispiel wird gezeigt, wie die Skriptinternationalisie-
    rungsfeatures in einem Skript verwendet werden, um einen Wochentag 
    für die Benutzer in der Sprache anzuzeigen, die auf dem Computer 
    festgelegt ist.
     
    Im Folgenden wird die Skriptdatei "Beispiel1.ps1" vollständig 
    dargestellt. 

    Das Skript beginnt mit dem Datenbereich "Day" ($Day), der einen 
    ConvertFrom-StringData-Befehl enthält. Der an "ConvertFrom-
    StringData" gesendete Ausdruck ist eine here-Zeichenfolge, die 
    die Namen der Tage in der Standardbenutzeroberflächenkultur 
    (en-US) in Schlüssel-Wert-Paaren enthält. Das Cmdlet "ConvertFrom-
    StringData" konvertiert die Schlüssel-Wert-Paare in der here-
    Zeichenfolge in eine Hashtabelle und speichert sie dann im Wert 
    der $Day-Variablen.

    Mit dem Befehl "Import-LocalizedData" wird den Inhalt der 
    PSD1-Datei in dem Verzeichnis importiert, das dem Wert der 
    automatischen $PSUICulture-Variablen entspricht, und in der 
    $Day-Variablen gespeichert. Dabei werden die im Datenabschnitt 
    definierten Werte von "$Day" ersetzt.

    Mit den verbleibenden Befehlen werden die Zeichenfolgen in ein 
    Array geladen und angezeigt. 
   
         $Day = DATA {
         # culture=\\"en-US\\"
         ConvertFrom-StringData @'
            messageDate = Today is
            d1 = Monday
            d2 = Tuesday
            d3 = Wednesday
            d4 = Thursday
            d5 = Friday
            d6 = Saturday
            d7 = Sunday
         '@
         }


    Import-LocalizedData -BindingVariable Day

    # Erstellen eines Arrays mit Wochentagen.
    $a = $Day.d1, $Day.d2, $Day.d3, $Day.d4, $Day.d5, $Day.d6, $Day.d7


        # Abrufen des Wochentags als Zahl (Montag = 1).
        # Index für $a, um den Namen des Tags abzurufen.
        # Erstellen eines Satzes mit der Zeichenfolgenformatierung.

        "{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 wird ".\de-DE\beispiel1.psd1" vollständig aufgeführt:

            # culture=\\"de-DE\\"
        ConvertFrom-StringData @'
        messageDate = Heute ist 
        d1 = Montag
        d2 = Dienstag
        d3 = Mittwoch
        d4 = Donnerstag
        d5 = Freitag
        d6 = Samstag
        d7 = Sonntag
        '@

    Wenn Sie daher "Beispiel.ps1" in einem System ausführen, auf dem 
    "de-DE" der Wert von "$PSUICulture" ist, gibt das Skript 
    Folgendes aus:
    

    Heute ist Freitag


SIEHE AUCH
    about_Data_Sections
    about_Automatic_Variables
    about_Hash_Tables
    about_Quoting_Rules
    ConvertFrom-StringData
    Import-LocalizedData