about_Script_Internationalization

Description courte

Décrit les fonctionnalités d’internationalisation de script qui facilitent l’affichage des messages et des instructions aux utilisateurs dans leur langage d’interface utilisateur.

Description longue

Les fonctionnalités d’internationalisation des scripts PowerShell vous permettent de mieux servir les utilisateurs dans le monde entier en affichant de l’aide et des messages utilisateur dans la langue de l’utilisateur.

Les fonctionnalités d’internationalisation de script interrogent la culture de l’interface utilisateur du système d’exploitation pendant l’exécution, importent les chaînes de texte traduites appropriées et les affichent à l’utilisateur. La section Données vous permet de stocker des chaînes de texte distinctes du code afin qu’elles soient facilement identifiées et extraites. Une nouvelle applet de commande, convertit ConvertFrom-StringDatades chaînes de texte en tables de hachage de type dictionnaire pour faciliter la traduction.

Pour prendre en charge le texte d’aide international, PowerShell inclut les fonctionnalités suivantes :

  • Section Données qui sépare les chaînes de texte des instructions de code. Pour plus d’informations sur la section Données, consultez about_Data_Sections.

  • Nouvelles variables automatiques, $PSCulture et $PSUICulture. $PSCulture stocke le nom du langage d’interface utilisateur utilisé sur le système pour les éléments tels que la date, l’heure et la devise. La $PSUICulture variable stocke le nom de la langue d’interface utilisateur utilisée sur le système pour les éléments d’interface utilisateur tels que les menus et les chaînes de texte.

  • Applet de commande, ConvertFrom-StringDataqui convertit les chaînes de texte en tables de hachage de type dictionnaire pour faciliter la traduction. Pour plus d’informations, consultez ConvertFrom-StringData.

  • Nouveau type de fichier, .psd1qui stocke les chaînes de texte traduites. Les .psd1 fichiers sont stockés dans des sous-répertoires spécifiques au langage du répertoire de script.

  • Applet de commande, Import-LocalizedDataqui importe des chaînes de texte traduites pour une langue spécifiée dans un script au moment de l’exécution. Cette applet de commande reconnaît et importe des chaînes dans n’importe quelle langue prise en charge par Windows. Pour plus d’informations, consultez Import-LocalizedData.

Section Données : stockage des chaînes par défaut

Utilisez une section Données dans le script pour stocker les chaînes de texte dans la langue par défaut. Organisez les chaînes dans les paires clé/valeur dans une chaîne ici. Chaque paire clé/valeur doit se trouver sur une ligne distincte. Si vous incluez des commentaires, les commentaires doivent se trouver sur des lignes distinctes.

L’applet ConvertFrom-StringData de commande convertit les paires clé/valeur dans la chaîne ici en une table de hachage de type dictionnaire stockée dans la valeur de la variable de section Données.

Dans l’exemple suivant, la section Données du World.ps1 script inclut l’ensemble de messages d’invite en anglais (en-US) de États-Unis messages d’invite. L’applet ConvertFrom-StringData de commande convertit les chaînes en table de hachage et les stocke dans la $msgtable variable.

$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.
'@
}

Pour plus d’informations sur les chaînes ici, consultez about_Quoting_Rules.

Fichiers PSD1 : stockage de chaînes traduites

Enregistrez les messages de script pour chaque langue de l’interface utilisateur dans des fichiers texte distincts portant le même nom que le script et l’extension de .psd1 nom de fichier. Stockez les fichiers dans les sous-répertoires du répertoire de script avec des noms de cultures au format suivant :

<language>-<region>

Exemples : de-DE, ar-SA et zh-Hans

Par exemple, si le World.ps1 script est stocké dans le C:\Scripts répertoire, vous créez une structure de répertoires de fichiers semblable à ce qui suit :

C:\Scripts
C:\Scripts\World.ps1
C:\Scripts\de-DE\World.psd1
C:\Scripts\ar-SA\World.psd1
C:\Scripts\zh-CN\World.psd1
...

Le World.psd1 fichier du sous-répertoire de dé-DE du répertoire de script peut inclure l’instruction suivante :

ConvertFrom-StringData -StringData @'
helloWorld = Hallo, Welt.
errorMsg1 = Das Feld Benutzername darf nicht leer sein.
promptMsg = Geben Sie Ihren Benutzernamen ein.
'@

De même, le World.psd1 fichier dans le sous-répertoire ar-SA du répertoire de script peut inclure l’instruction suivante :

ConvertFrom-StringData -StringData @'
helloWorld = مرحبًا أيها العالَم
errorMsg1 = لا يمكنك ترك حقل اسم المستخدم فارغًا
promptMsg = يرجى إدخال اسم المستخدم الخاص بك
'@

Import-LocalizedData : récupération dynamique de chaînes traduites

Pour récupérer les chaînes dans la langue de l’interface utilisateur de l’utilisateur actuel, utilisez l’applet Import-LocalizedData de commande.

Import-LocalizedData recherche la valeur de la $PSUICulture variable automatique et importe le contenu des <script-name>.psd1 fichiers dans le sous-répertoire qui correspond à la $PSUICulture valeur. Ensuite, il enregistre le contenu importé dans la variable spécifiée par la valeur du paramètre BindingVariable .

Import-LocalizedData -BindingVariable msgTable

Par exemple, si la Import-LocalizedData commande apparaît dans le C:\Scripts\World.ps1 script et que la valeur est $PSUICulture « ar-SA », Import-LocalizedData recherche le fichier suivant :

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

Ensuite, il importe les chaînes de texte arabe du fichier dans la $msgTable variable, en remplaçant les chaînes par défaut qui peuvent être définies dans la section Données du World.ps1 script.

Par conséquent, lorsque le script utilise la $msgTable variable pour afficher les messages utilisateur, les messages sont affichés en arabe.

Par exemple, le script suivant affiche le message « Veuillez entrer votre nom d’utilisateur » en arabe :

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

Si Import-LocalizedData vous ne trouvez pas de .psd1 fichier correspondant à la valeur , $PSUIculturela valeur de $msgTable n’est pas remplacée et l’appel pour $msgTable.promptMsg afficher les chaînes en-US de secours.

Exemples

Cet exemple montre comment les fonctionnalités d’internationalisation de script sont utilisées dans un script pour afficher un jour de la semaine aux utilisateurs dans la langue définie sur l’ordinateur.

Voici une liste complète du fichier de script Sample1.ps1.

Le script commence par une section Données nommée Day ($Day) qui contient une ConvertFrom-StringData commande. L’expression soumise ConvertFrom-StringData est une chaîne ici qui contient les noms de jour dans la culture d’interface utilisateur par défaut, en-US, dans les paires clé/valeur. L’applet ConvertFrom-StringData de commande convertit les paires clé/valeur dans la chaîne ici en table de hachage, puis l’enregistre dans la valeur de la $Day variable.

La Import-LocalizedData commande importe le contenu du .psd1 fichier dans le répertoire qui correspond à la valeur de la $PSUICulture variable automatique, puis l’enregistre dans la $Day variable, en remplaçant les valeurs définies $Day dans la section Données.

Les commandes restantes chargent les chaînes dans un tableau et les affichent.

$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

Les .psd1 fichiers qui prennent en charge le script sont enregistrés dans les sous-répertoires du répertoire de script avec des noms qui correspondent aux $PSUICulture valeurs.

Voici une liste complète des .\de-DE\sample1.psd1éléments suivants :

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

Par conséquent, lorsque vous exécutez Sample.ps1 sur un système sur lequel la valeur est $PSUICulture de-DE, la sortie du script est :

Heute ist Freitag

Voir aussi