Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Kurzbeschreibung
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,
$PSCultureund$PSUICulture.$PSCulturespeichert den Namen der ui-Sprache, die im System für Elemente wie Datum, Uhrzeit und Währung verwendet wird. Die variable$PSUICulturespeichert den Namen der ui-Sprache, die auf dem System für Benutzeroberflächenelemente wie Menüs und Textzeichenfolgen verwendet wird.Ein Cmdlet,
ConvertFrom-StringData, das Textzeichenfolgen in wörterbuchähnliche Hashtabellen konvertiert, um die Übersetzung zu erleichtern. Weitere Informationen finden Sie unter ConvertFrom-StringData.Ein neuer Dateityp,
.psd1, der übersetzte Textzeichenfolgen speichert. Die.psd1Dateien werden in sprachspezifischen Unterverzeichnissen des Skriptverzeichnisses gespeichert.Ein Cmdlet
Import-LocalizedData, das ü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 in einer eigenen Zeile stehen. Wenn Sie Kommentare einfügen, müssen sich die Kommentare in separaten Zeilen befinden.
Das Cmdlet ConvertFrom-StringData 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 Skripts World.ps1 den Satz Eingabeaufforderungsnachrichten für die Sprache „Englisch-USA“ (en-US). Das cmdlet ConvertFrom-StringData konvertiert die Zeichenfolgen in eine Hashtabelle und speichert sie in der variablen $msgtable.
$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 ü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-SAund zh-Hans
Wenn beispielsweise das skript World.ps1 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 Cmdlet Import-LocalizedData, 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 beispielsweise der Befehl Import-LocalizedData im skript C:\Scripts\World.ps1 angezeigt wird und der Wert von $PSUICulture "ar-SA" lautet, findet Import-LocalizedData die folgende Datei:
C:\Scripts\ar-SA\World.psd1
Anschließend importiert sie die arabischen Textzeichenfolgen aus der Datei in die $msgTable Variable, wobei alle Standardzeichenfolgen ersetzt werden, die im Abschnitt "Daten" des skripts World.ps1 definiert werden können.
Wenn das Skript daher die $msgTable Variable zum Anzeigen von Benutzernachrichten verwendet, werden die Nachrichten auf 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 findet, die dem Wert von $PSUICultureentspricht, wird der Wert von $msgTable nicht ersetzt, und der Aufruf von $msgTable.promptMsg zeigt die Ersatz-en-US-Zeichenfolgen an.
Examples
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.
Es folgt 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 ConvertFrom-StringData übermittelte Ausdruck ist ein Here-String, der die Tagesnamen in der Standard-UI-Kultur (en-US) in Schlüssel-Wert-Paaren enthält. Das cmdlet ConvertFrom-StringData konvertiert die Schlüssel-Wert-Paare in der hier-Zeichenfolge in eine Hashtabelle und speichert sie dann im Wert der $Day Variablen.
Der Befehl Import-LocalizedData importiert den Inhalt der .psd1 Datei im Verzeichnis, die dem Wert der automatischen variablen $PSUICulture entspricht, und speichert sie dann in der variablen $Day, wobei die Werte von $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 Skriptverzeichnisses mit Namen gespeichert, die den $PSUICulture Werten entsprechen.
Es folgt eine vollständige Auflistung der .\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 daher Sample.ps1 auf einem System ausführen, auf dem der Wert von $PSUICulture de-DEist, lautet die Ausgabe des Skripts:
Heute ist Freitag