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-StringData
des 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-StringData
qui 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,
.psd1
qui 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-LocalizedData
qui 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 , $PSUIculture
la 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