Freigeben über


Import-LocalizedData

Importiert sprachspezifische Daten in Skripts und Funktionen basierend auf der für das Betriebssystem ausgewählten Benutzeroberflächenkultur.

Syntax

Import-LocalizedData
      [[-BindingVariable] <String>]
      [[-UICulture] <String>]
      [-BaseDirectory <String>]
      [-FileName <String>]
      [-SupportedCommand <String[]>]
      [<CommonParameters>]

Beschreibung

Das Import-LocalizedData Cmdlet ruft Zeichenfolgen dynamisch aus einem Unterverzeichnis ab, dessen Name dem Benutzeroberflächensprachensatz für den aktuellen Benutzer des Betriebssystems entspricht. Es wurde entwickelt, um Skripts zum Anzeigen von Benutzermeldungen in der vom aktuellen Benutzer ausgewählten Benutzersprache zu ermöglichen.

Import-LocalizedData Importiert Daten aus .psd1 Dateien in sprachspezifischen Unterverzeichnissen des Skriptverzeichnisses und speichert sie in einer lokalen Variablen, die im Befehl angegeben ist. Das Cmdlet wählt das Unterverzeichnis und die Datei basierend auf dem Wert der $PSUICulture automatischen Variablen aus. Wenn Sie die lokale Variable im Skript verwenden, um eine Benutzermeldung anzuzeigen, wird die Meldung in der Benutzeroberflächensprache des Benutzers angezeigt.

Sie können die Parameter Import-LocalizedData verwenden, um eine alternative Benutzeroberflächenkultur, einen Pfad und dateinamen anzugeben, um unterstützte Befehle hinzuzufügen und die Fehlermeldung zu unterdrücken, die angezeigt wird, wenn die .psd1 Dateien nicht gefunden werden.

Das Import-LocalizedData Cmdlet unterstützt die Skript-Internationalisierungsinitiative, die in Windows PowerShell 2.0 eingeführt wurde. Ziel dieser Initiative ist es, Benutzern weltweit einen besseren Dienst zu bieten, indem es Skripts erleichtert wird, Benutzermeldungen in der Sprache der Benutzeroberfläche des aktuellen Benutzers anzuzeigen. Weitere Informationen hierzu und zum Format der .psd1 Dateien finden Sie unter about_Script_Internationalization.

Beispiele

Beispiel 1: Importieren von Textzeichenfolgen

In diesem Beispiel werden Textzeichenfolgen in die $Messages Variable importiert. Es werden die Standardwerte aller anderen Cmdlet-Parameter verwendet.

Import-LocalizedData -BindingVariable "Messages"

Wenn der Befehl im Skript Archives.ps1 im C:\Test Verzeichnis enthalten ist und der Wert der $PsUICulture automatischen Variablen "zh-CN" lautet, Import-LocalizedData importiert die Archives.psd1 Datei im C:\test\zh-CN Verzeichnis in die $Messages Variable.

Beispiel 2: Importieren lokalisierter Datenzeichenfolgen

Dieses Beispiel wird an der Befehlszeile ausgeführt, die sich nicht in einem Skript befindet. Er ruft lokalisierte Datenzeichenfolgen aus der Datei „Test.psd1“ ab, und zeigt sie in der Befehlszeile an. Da der Befehl in einem Skript nicht verwendet wird, ist der FileName-Parameter erforderlich. Der Befehl verwendet den UICulture-Parameter , um die en-US-Kultur anzugeben.

Import-LocalizedData -FileName "Test.psd1" -UICulture "en-US"

Name           Value
----           -----
Msg3           "Use $_ to represent the object that's being processed."
Msg2           "This command requires the credentials of a member of the Administrators group on the...
Msg1           "The Name parameter is missing from the command."

Import-LocalizedData gibt eine Hashtabelle zurück, die die lokalisierten Datenzeichenfolgen enthält.

Beispiel 3: Importieren von Ui-Kulturzeichenfolgen

Import-LocalizedData -BindingVariable "MsgTbl" -UICulture "ar-SA" -FileName "Simple" -BaseDirectory "C:\Data\Localized"

Mit diesem Befehl werden Textzeichenfolgen in die $MsgTbl Variable eines Skripts importiert.

Es verwendet den UICulture-Parameter , um das Cmdlet zum Importieren von Daten aus der Simple.psd1 Datei im ar-SA Unterverzeichnis von C:\Data\Localized.

Beispiel 4: Importieren lokalisierter Daten in ein Skript

In diesem Beispiel wird veranschaulicht, wie lokalisierte Daten in einem einfachen Skript verwendet werden.

PS C:\> # In C:\Test\en-US\Test.psd1:

ConvertFrom-StringData @'

# English strings

Msg1 = "The Name parameter is missing from the command."
Msg2 = "This command requires the credentials of a member of the Administrators group on the computer."
Msg3 = "Use $_ to represent the object that's being processed."
'@

# In C:\Test\Test.ps1

Import-LocalizedData -BindingVariable "Messages"
Write-Host $Messages.Msg2

# In Windows PowerShell

PS C:\> .\Test.ps1

This command requires the credentials of a member of the Administrators group on the computer.

Der erste Teil des Beispiels zeigt den Inhalt der Test.psd1 Datei. Sie enthält einen ConvertFrom-StringData Befehl, der eine Reihe benannter Textzeichenfolgen in eine Hashtabelle konvertiert. Die Test.psd1 Datei befindet sich im Unterverzeichnis "en-US" des C:\Test Verzeichnisses, das das Skript enthält.

Der zweite Teil des Beispiels zeigt den Inhalt des Test.ps1 Skripts. Sie enthält einen Import-LocalizedData Befehl, mit dem die Daten aus der übereinstimmenden .psd1 Datei in die $Messages Variable importiert werden, und ein Write-Host Befehl, der eine der Nachrichten in der $Messages Variablen in das Hostprogramm schreibt.

Der letzte Teil des Beispiels führt das Skript aus. Die Ausgabe zeigt, dass die richtige Benutzermeldung in der Benutzeroberflächensprache angezeigt wird, die für den aktuellen Benutzer des Betriebssystems festgelegt wurde.

Beispiel 5: Ersetzen von Standardtextzeichenfolgen in einem Skript

In diesem Beispiel wird gezeigt, wie Import-LocalizedData Sie standardtextzeichenfolgen ersetzen, die im DATENabschnitt eines Skripts definiert sind.

PS C:\> # In TestScript.ps1
$UserMessages = DATA

{    ConvertFrom-StringData @'

    # English strings

        Msg1 = "Enter a name."
        Msg2 = "Enter your employee ID."
        Msg3 = "Enter your building number."
'@
}

Import-LocalizedData -BindingVariable "UserMessages"
$UserMessages.Msg1...

In diesem Beispiel enthält der DATA-Abschnitt des Skripts "TestScript.ps1" einen ConvertFrom-StringData Befehl, mit dem der Inhalt des DATENabschnitts in eine Hashtabelle konvertiert und im Wert der $UserMessages Variablen gespeichert wird.

Das Skript enthält auch einen Import-LocalizedData Befehl, der eine Hashtabelle von übersetzten Textzeichenfolgen aus der Datei TestScript.psd1 in das unterverzeichnis importiert, das durch den Wert der $PsUICulture Variablen angegeben wird. Wenn der Befehl die .psd1 Datei findet, speichert er die übersetzten Zeichenfolgen aus der Datei im Wert derselben $UserMessages Variablen, wobei die hashtable überschrieben wird, die von der DATA-Abschnittslogik gespeichert wird.

Der dritte Befehl zeigt die erste Meldung in der $UserMessages Variablen an.

Wenn der Import-LocalizedData Befehl eine .psd1 Datei für die $PsUICulture Sprache findet, enthält der Wert der $UserMessages Variablen die übersetzten Textzeichenfolgen. Wenn der Befehl aus irgendeinem Grund fehlschlägt, zeigt der Befehl die im DATA-Abschnitt des Skripts definierten Standardtextzeichenfolgen an.

Beispiel 6: Unterdrücken von Fehlermeldungen, wenn die UI-Kultur nicht gefunden wird

In diesem Beispiel wird gezeigt, wie Die Fehlermeldungen unterdrückt werden, die angezeigt werden, wenn Import-LocalizedData die Verzeichnisse nicht gefunden werden können, die der Benutzeroberflächenkultur entsprechen, oder eine Datei für das Skript in diesen Verzeichnissen nicht finden .psd1 kann.

PS C:\> # In Day1.ps1

Import-LocalizedData -BindingVariable "Day"

# In Day2.ps1

Import-LocalizedData -BindingVariable "Day" -ErrorAction:SilentlyContinue

PS C:\> .\Day1.ps1
Import-LocalizedData : Can't find PowerShell data file 'Day1.psd1' in directory 'C:\ps-test\fr-BE\'
or any parent culture directories.
At C:\ps-test\Day1.ps1:17 char:21+ Import-LocalizedData <<<<  Day
Today is Tuesday

PS C:\> .\Day2.ps1
Today is Tuesday

Sie können den allgemeinen ErrorAction-Parameter mit dem Wert "SilentlyContinue" verwenden, um die Fehlermeldung zu unterdrücken. Dies ist besonders hilfreich, wenn Sie Benutzernachrichten in einer Standard- oder Fallbacksprache bereitgestellt haben und keine Fehlermeldung erforderlich ist.

In diesem Beispiel werden zwei Skripts Day1.ps1 und Day2.ps1 verglichen, die einen Import-LocalizedData Befehl enthalten. Die Skripts sind identisch, mit der Ausnahme, dass Day2 den gemeinsamen ErrorAction-Parameter mit einem Wert von SilentlyContinueverwendet.

Die Beispielausgabe zeigt die Ergebnisse der Ausführung beider Skripts, wenn die Benutzeroberflächenkultur auf "Festgelegt" festgelegt fr-BE ist und keine übereinstimmenden Dateien oder Verzeichnisse für diese Benutzeroberflächenkultur vorhanden sind. Day1.ps1 zeigt eine Fehlermeldung und englische Ausgabe an. Day2.ps1 zeigt einfach die englische Ausgabe an.

Parameter

-BaseDirectory

Gibt das Basisverzeichnis an, in dem sich die .psd1 Dateien befinden. Der Standardwert ist das Verzeichnis, in dem das Skript gespeichert ist. Import-LocalizedData sucht nach der .psd1 Datei für das Skript in einem sprachspezifischen Unterverzeichnis des Basisverzeichnisses.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-BindingVariable

Gibt die Variable an, in die die Textzeichenfolgen importiert werden. Geben Sie einen Variablennamen ohne Dollarzeichen ($) ein.

Dieser Parameter ist in Windows PowerShell 2.0 erforderlich. Dieser Parameter ist in Windows PowerShell 3.0 optional. Wenn Sie diesen Parameter weglassen, Import-LocalizedData wird eine Hashtabelle der Textzeichenfolgen zurückgegeben. Die Hashtabelle wird an die Pipeline übergeben oder in der Befehlszeile angezeigt.

Wenn Sie zum Ersetzen von Im DATA-Abschnitt eines Skripts angegebenen Standardtextzeichenfolgen verwenden Import-LocalizedData , weisen Sie den DATA-Abschnitt einer Variablen zu, und geben Sie den Namen der DATA-Abschnittsvariablen in den Wert des BindingVariable-Parameters ein. Wenn Import-LocalizedData der importierte Inhalt dann in " BindingVariable" gespeichert wird, werden die importierten Daten durch die Standardtextzeichenfolgen ersetzt. Wenn Sie keine Standardtextzeichenfolgen angeben, können Sie einen beliebigen Variablennamen auswählen.

Typ:String
Aliase:Variable
Position:0
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-FileName

Gibt den Namen der Zu importierenden Datendatei an.psd1) . Geben Sie einen Dateinamen ein. Sie können einen Dateinamen angeben, der seine Dateinamenerweiterung nicht enthält .psd1 , oder Sie können den Dateinamen einschließlich der .psd1 Dateinamenerweiterung angeben. Datendateien sollten als Unicode oder UTF-8 gespeichert werden.

Der Parameter FileName ist erforderlich, wenn Import-LocalizedData er nicht in einem Skript verwendet wird. Anderenfalls ist der Parameter optional, und der Standardwert ist der Basisname des Skripts. Sie können diesen Parameter verwenden, um nach Import-LocalizedData einer anderen .psd1 Datei zu suchen.

Wenn z. B. der Dateiname ausgelassen wird und der Skriptname lautet FindFiles.ps1, Import-LocalizedData wird nach der FindFiles.psd1 Datendatei gesucht.

Typ:String
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-SupportedCommand

Gibt Cmdlets und Funktionen an, die nur Daten generieren.

Verwenden Sie diesen Parameter, um Cmdlets und Funktionen einzuschließen, die Sie geschrieben oder getestet haben. Weitere Informationen finden Sie unter about_Script_Internationalization.

Typ:String[]
Position:Named
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

-UICulture

Gibt eine alternative Benutzeroberflächenkultur an. Der Standardwert ist der Wert der $PsUICulture automatischen Variablen. Geben Sie eine Benutzeroberflächenkultur im <language>-<region> Format ein, zen-US. B. , oder de-DEar-SA.

Der Wert des UICulture-Parameters bestimmt das sprachspezifische Unterverzeichnis (innerhalb des Basisverzeichnisses), aus dem Import-LocalizedData die .psd1 Datei für das Skript abgerufen wird.

Das Cmdlet sucht nach einem Unterverzeichnis mit demselben Namen wie der Wert des UICulture-Parameters oder der $PsUICulture automatischen Variablen, z de-DE . B. oder ar-SA. Wenn das Verzeichnis nicht gefunden werden kann oder das Verzeichnis keine Datei für das Skript enthält .psd1 , sucht es nach einem Unterverzeichnis mit dem Namen des Sprachcodes, z. B. de oder ar. Wenn das Unterverzeichnis oder .psd1 die Datei nicht gefunden werden kann, schlägt der Befehl fehl, und die Daten werden in der im Skript angegebenen Standardsprache angezeigt.

Typ:String
Position:1
Standardwert:None
Erforderlich:False
Pipelineeingabe akzeptieren:False
Platzhalterzeichen akzeptieren:False

Eingaben

None

Sie können keine Objekte an dieses Cmdlet weiterleiten.

Ausgaben

Hashtable

Mit diesem Cmdlet wird die Hashtabelle in der Variablen gespeichert, die durch den Wert des BindingVariable-Parameters angegeben wird.

Hinweise

  • Bevor Sie Ihre Benutzernachrichten verwenden Import-LocalizedData, lokalisieren Sie Ihre Benutzernachrichten. Formatieren Sie die Nachrichten für jedes Gebietsschema (UI-Kultur) in einer Hashtable von Schlüsselwertpaaren, und speichern Sie die Hashtable in einer Datei mit demselben Namen wie das Skript und eine .psd1 Dateinamenerweiterung. Erstellen Sie ein Verzeichnis unter dem Skriptverzeichnis für jede unterstützte Benutzeroberflächenkultur, und speichern Sie dann die .psd1 Datei für jede UI-Kultur im Verzeichnis mit dem Namen der Benutzeroberflächenkultur.

    Lokalisieren Sie beispielsweise Ihre Benutzernachrichten für das Gebietsschema de-DE, und formatieren Sie sie in einer Hashtabelle. Speichern Sie die Hashtabelle in einer <ScriptName>.psd1 Datei. Erstellen Sie dann unter dem Skriptverzeichnis ein de-DE Unterverzeichnis, und speichern Sie die deutsche <ScriptName>.psd1 Datei im de-DE Unterverzeichnis. Wiederholen Sie diese Methode für jedes Gebietsschema, das Sie unterstützen.

  • Import-LocalizedData führt eine strukturierte Suche nach den lokalisierten Benutzernachrichten für ein Skript aus.

    Import-LocalizedData beginnt die Suche im Verzeichnis, in dem sich die Skriptdatei befindet (oder den Wert des BaseDirectory-Parameters ). Anschließend wird innerhalb des Basisverzeichnisses nach einem Unterverzeichnis mit demselben Namen wie der Wert der $PsUICulture Variablen (oder der Wert des UICulture-Parameters ) gesucht, z de-DE . B. oder ar-SA. Anschließend wird in diesem Unterverzeichnis nach einer .psd1 Datei mit demselben Namen wie das Skript (oder der Wert des FileName-Parameters ) durchsucht.

    Wenn Import-LocalizedData ein Unterverzeichnis mit dem Namen der Benutzeroberflächenkultur nicht gefunden werden kann oder das Unterverzeichnis keine Datei für das Skript enthält .psd1 , sucht es nach einer .psd1 Datei für das Skript in einem Unterverzeichnis mit dem Namen des Sprachcodes, z. B. de oder ar. Wenn das Unterverzeichnis oder .psd1 die Datei nicht gefunden werden kann, schlägt der Befehl fehl, werden die Daten in der Standardsprache im Skript angezeigt, und es wird eine Fehlermeldung angezeigt, in der erläutert wird, dass die Daten nicht importiert werden konnten. Verwenden Sie den allgemeinen ErrorAction-Parameter mit dem Wert "SilentlyContinue", um die Nachricht zu unterdrücken und ordnungsgemäß fehlzuschlagen.

    Wenn Import-LocalizedData das Unterverzeichnis und die .psd1 Datei gefunden werden, importiert sie die Hashtabelle von Benutzernachrichten in den Wert des BindingVariable-Parameters im Befehl. Wenn Sie dann eine Nachricht aus der Hashtabelle in der Variablen anzeigen, wird die lokalisierte Nachricht angezeigt.

    Weitere Informationen finden Sie unter about_Script_Internationalization.