Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Brève description
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, ConvertFrom-StringData, convertit les 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,
$PSCultureet$PSUICulture.$PSCulturestocke le nom de la langue d’interface utilisateur utilisée sur le système pour les éléments tels que la date, l’heure et la devise. La variable$PSUICulturestocke 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 des chaînes de texte en tables de hachage de type dictionnaire pour faciliter la traduction. Pour plus d'informations, voir ConvertFrom-StringData.Nouveau type de fichier,
.psd1, qui stocke les chaînes de texte traduites. Les fichiers.psd1sont stockés dans des sous-répertoires spécifiques à la langue 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. Disposez les chaînes de caractères en appaires clé/valeur dans une section de données (here-string). 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 de commande ConvertFrom-StringData 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 Data du script World.ps1 comprend le jeu de messages d'invite en anglais et aux États-Unis (en-US) pour un script. L’applet de commande ConvertFrom-StringData convertit les chaînes en table de hachage et les stocke dans la variable $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.
'@
}
Pour plus d'informations sur les chaînes de caractères, voir 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 nom de fichier .psd1. 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-SAet zh-Hans
Par exemple, si le script World.ps1 est stocké dans le répertoire C:\Scripts, vous devez créer 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 fichier World.psd1 dans le sous-répertoire de-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 fichier World.psd1 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 de commande Import-LocalizedData.
Import-LocalizedData recherche la valeur de la variable automatique $PSUICulture et importe le contenu des fichiers <script-name>.psd1 dans le sous-répertoire qui correspond à la valeur $PSUICulture. 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 commande Import-LocalizedData apparaît dans le script C:\Scripts\World.ps1 et que la valeur de $PSUICulture est «ar-SA», Import-LocalizedData trouve le fichier suivant :
C:\Scripts\ar-SA\World.psd1
Ensuite, il importe les chaînes de texte arabe du fichier dans la variable $msgTable, en remplaçant les chaînes par défaut qui peuvent être définies dans la section Données du script World.ps1.
Par conséquent, lorsque le script utilise la variable $msgTable 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 ne trouve pas de fichier .psd1 qui correspond à la valeur de $PSUICulture, la valeur de $msgTable n’est pas remplacée et l’appel à $msgTable.promptMsg affiche les chaînes de secours en-US.
Examples
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 commande ConvertFrom-StringData. L'expression soumise à ConvertFrom-StringData est une chaîne ici qui contient les noms des jours dans la culture par défaut de l'interface utilisateur, en-US, sous forme de paires clé/valeur. L’applet de commande ConvertFrom-StringData convertit les paires clé/valeur dans la chaîne ici en une table de hachage, puis l’enregistre dans la valeur de la variable $Day.
La commande Import-LocalizedData importe le contenu du fichier .psd1 dans le répertoire qui correspond à la valeur de la variable automatique $PSUICulture, puis l’enregistre dans la variable $Day, en remplaçant les valeurs de $Day définies 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 fichiers .psd1 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 valeurs de $PSUICulture.
Vous trouverez ci-dessous une liste complète de .\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
'@
Par conséquent, lorsque vous exécutez Sample.ps1 sur un système sur lequel la valeur de $PSUICulture est de-DE, la sortie du script est :
Heute ist Freitag