You are on page 1of 5

THEMA

about_Script_Internationalization
KURZBESCHREIBUNG
Beschreibt die Skriptinternationalisierungsfeatures von Windows
PowerShell 2.0, mit denen mit Skripts leicht Meldungen und
Anweisungen fr Benutzer in ihrer Benutzeroberflchensprache
angezeigt werden knnen.
DETAILBESCHREIBUNG
Mit den Skriptinternationalisierungsfeatures in Windows
PowerShell knnen Sie Benutzern weltweit eine hhere
Benutzerfreundlichkeit bieten, indem Hilfe und Benutzermeldungen
fr Skripts und Funktionen in der Benutzeroberflchensprache des
Benutzers angezeigt werden.

Die Skriptinternationalisierungsfeatures fragen whrend der
Ausfhrung die Benutzeroberflchenkultur des Betriebssystems ab,
importieren die entsprechenden bersetzten Textzeichenfolgen und
zeigen sie fr den Benutzer an. Im Datenabschnitt knnen Sie
Textzeichenfolgen getrennt von Code speichern, sodass sie bequem
identifiziert und extrahiert werden knnen. Das neue Cmdlet
"ConvertFrom-StringData" konvertiert Textzeichenfolgen in
wrterbuchhnliche Hashtabellen, um die bersetzung zu erleichtern.
Die bei der Skriptinternationalisierung verwendeten Windows
PowerShell 2.0-Features werden von Windows PowerShell 1.0 nicht
untersttzt. Skripts, die diese Features enthalten, werden in
Windows PowerShell 1.0 nicht ohne nderungen ausgefhrt.
Zum Untersttzen 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
Benutzeroberflchensprache gespeichert, die im System fr
Elemente wie Datum, Uhrzeit und Whrung verwendet wird. In
der $PSUICulture-Variablen wird der Name der Benutzerober-
flchensprache gespeichert, die im System fr Benutzerober-
flchenelemente wie Mens und Textzeichenfolgen verwendet
wird.
-- Das Cmdlet "ConvertFrom-StringData", das Textzeichenfolgen
in wrterbuchhnliche 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 fr eine angegebene Sprache zur Laufzeit
in ein Skript importiert werden. Dieses Cmdlet erkennt und
importiert Zeichenfolgen in allen von Windows untersttzten
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 Schlssel-Wert-Paaren in einer
here-Zeichenfolge an. Jedes Schlssel-Wert-Paar muss in einer
eigenen Zeile aufgefhrt werden. Wenn Sie Kommentare
einschlieen, mssen sich die Kommentare in separaten Zeilen
befinden.
Das Cmdlet "ConvertFrom-StringData" konvertiert die
Schlssel-Wert-Paare in der here-Zeichenfolge in eine
wrterbuchhnliche Hashtabelle, die im Wert der Datenabschnitts-
variablen gespeichert wird.
Im folgenden Beispiel enthlt der Datenabschnitt des Skripts
"Welt.ps1" den Satz von Aufforderungsmeldungen fr Englisch
(USA) (en-US) fr 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 fr die einzelnen
Benutzeroberflchensprachen 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-Hans
Wenn das Skript "Welt.ps1" z. B. im Verzeichnis "C:\Skripts"
gespeichert wird, wrden Sie eine Dateiverzeichnisstruktur
erstellen, die etwa folgendermaen 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 knnte die folgende Anweisung enthalten:
ConvertFrom-StringData @'
helloWorld = Hallo, Welt. (auf Deutsch)
errorMsg1 = Das Feld fr 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 fr 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 Benutzeroberflchensprache 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 fr
en-US angezeigt.
BEISPIEL:
In diesem Beispiel wird gezeigt, wie die Skriptinternationalisie-
rungsfeatures in einem Skript verwendet werden, um einen Wochentag
fr die Benutzer in der Sprache anzuzeigen, die auf dem Computer
festgelegt ist.

Im Folgenden wird die Skriptdatei "Beispiel1.ps1" vollstndig
dargestellt.
Das Skript beginnt mit dem Datenbereich "Day" ($Day), der einen
ConvertFrom-StringData-Befehl enthlt. Der an "ConvertFrom-
StringData" gesendete Ausdruck ist eine here-Zeichenfolge, die
die Namen der Tage in der Standardbenutzeroberflchenkultur
(en-US) in Schlssel-Wert-Paaren enthlt. Das Cmdlet "ConvertFrom-
StringData" konvertiert die Schlssel-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 fr $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 untersttzen, werden in
Unterverzeichnissen des Skriptverzeichnisses mit Namen
gespeichert, die den $PSUICulture-Werten entsprechen.
Im Folgenden wird ".\de-DE\beispiel1.psd1" vollstndig aufgefhrt:
# culture="en-US"
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 ausfhren, 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