RUBRIQUE
about_Script_Internationalization
DESCRIPTION COURTE
Décrit les fonctionnalités d'internationalisation des scripts de
Windows PowerShell 2.0 qui permettent aux scripts d'afficher
aisément des messages et instructions pour les utilisateurs dans
la langue de l'interface utilisateur.
DESCRIPTION LONGUE
Les fonctionnalités d'internationalisation des scripts de Windows
PowerShell vous permettent de mieux servir les utilisateurs dans
le monde entier en affichant l'aide et les messages utilisateur
pour les scripts et fonctions dans la langue de l'interface
utilisateur de l'utilisateur.
Les fonctionnalités d'internationalisation des scripts
interrogent la culture d'interface utilisateur du système
d'exploitation pendant l'exécution, importent les chaînes de
texte traduites appropriées et les affichent à l'intention de
l'utilisateur. La section Data vous permettant de stocker des
chaînes de texte séparées du code, elles sont facilement
identifiées et extraites. Une nouvelle applet de commande,
ConvertFrom-StringData, convertit les chaînes de texte en tables
de hachage de style dictionnaire pour faciliter la traduction.
Les fonctionnalités de Windows PowerShell 2.0 utilisées dans
l'internationalisation des scripts ne sont pas prises en charge
par Windows PowerShell 1.0. Les scripts qui incluent ces
fonctionnalités ne s'exécuteront pas dans Windows PowerShell 1.0
sans modification.
Pour prendre en charge le texte d'aide international, Windows
PowerShell 2.0 inclut les fonctionnalités suivantes :
-- Section Data qui sépare les chaînes de texte des
instructions de code. Pour plus d'informations sur
la section Data, consultez about_Data_Sections.
-- Nouvelles variables automatiques, $PSCulture et
$PSUICulture. $PSCulture stocke le nom de la langue
de l'interface utilisateur employée sur le système pour
les éléments tels que la date, l'heure et la devise.
La variable $PSUICulture stocke le nom de la langue de
l'interface utilisateur employée sur le système pour les
éléments de l'interface utilisateur tels que les menus et
chaînes de texte.
-- Applet de commande, ConvertFrom-StringData, qui convertit
les chaînes de texte en tables de hachage de style
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 fichiers .psd1 sont stockés dans les
sous-répertoires spécifiques à une langue du répertoire de
scripts.
-- Applet de commande, Import-LocalizedData, qui importe les
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 les chaînes dans toute langue
prise en charge par Windows. Pour plus d'informations,
consultez Import-LocalizedData.
SECTION DATA : stockage de chaînes par défaut
Utilisez une section Data dans le script pour stocker les
chaînes de texte dans la langue par défaut. Disposez les chaînes
dans des paires clé/valeur dans une chaîne here-string. Chaque
paire clé/valeur doit figurer sur une ligne séparée. Si vous
incluez des commentaires, ils doivent se trouver sur des
lignes séparées.
L'applet de commande ConvertFrom-StringData convertit les paires
clé/valeur de la chaîne here-string en une table de hachage de
style dictionnaire stockée dans la valeur de la variable de la
section Data.
Dans l'exemple suivant, la section Data du script World.ps1
inclut l'ensemble en anglais des États-Unis (en-US) des messages
d'invite pour un script. L'applet de commande ConvertFrom-StringD
ata convertit les chaînes en une 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 here-strings, 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 séparés avec 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
scripts avec les noms de cultures au format suivant :
<langue>-<région>
Exemples : fr-FR, ar-SA et zh-CN
Par exemple, si le script World.ps1 est stocké dans le répertoire
C:\Scripts, vous créez une structure de répertoire de fichiers
qui ressemble aux éléments suivants :
C:\Scripts
C:\Scripts\World.ps1
C:\Scripts\fr-FR\World.psd1
C:\Scripts\ar-SA\World.psd1
C:\Scripts\zh-CN\World.psd1
...
Le fichier World.psd1 dans le sous-répertoire fr-FR du répertoire
de scripts peut inclure l'instruction suivante :
ConvertFrom-StringData @'
helloWorld = Hello, World (en français).
errorMsg1 = You cannot leave the user name field blank (en français).
promptMsg = Please enter your user name (en français).
'@
De même, le fichier World.psd1 dans le sous-répertoire ar-SA du
répertoire de scripts peut inclure l'instruction suivante :
ConvertFrom-StringData @'
helloWorld = Hello, World (en arabe).
errorMsg1 = You cannot leave the user name field blank (en arabe).
promptMsg = Please enter your user name (en arabe).
'@
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
<nom-script>.psd1 dans le sous-répertoire qui correspond à la
valeur $PSUICulture. Elle enregistre ensuite 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 recherche le fichier suivant :
C:\Scripts\ar-SA\World.psd1
Elle importe ensuite les chaînes de texte en arabe à partir du
fichier dans la variable $msgTable, en remplaçant toutes les
chaînes par défaut qui peuvent être définies dans la section Data
du script World.ps1.
En conséquence, lorsque le script utilise la variable $msgTable
pour afficher des messages utilisateur, les messages sont
affichés en arabe.
Par exemple, le script suivant affiche le message " Please enter
your user name " en arabe :
if (!($username)) { $msgTable.promptMsg }
Si Import-LocalizedData ne parvient pas à trouver un 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 en-US de base.
EXEMPLE
Cet exemple illustre l'utilisation des fonctionnalités
d'internationalisation des scripts dans un script pour afficher
un jour de la semaine à l'intention des utilisateurs dans la
langue définie sur l'ordinateur.
Voici les informations complètes du fichier de script Sample1.ps1.
Le script commence par une section Data nommée Day ($Day) qui
contient une commande ConvertFrom-StringData. L'expression
envoyée à ConvertFrom-StringData est une chaîne here-string qui
contient les noms de jours dans la culture d'interface
utilisateur par défaut, en-US, dans des paires clé/valeur.
L'applet de commande ConvertFrom-StringData convertit les paires
clé/valeur de la chaîne here-string 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 Data.
Les commandes restantes chargent les chaînes dans un tableau et
les affichent.
$Day = DATA {
# culture=\\"en-US\\"
ConvertFrom-StringData @'
messageDate = Today is
d1 = Monday
d2 = Tuesday
d3 = Wednesday
d4 = Thursday
d5 = Friday
d6 = Saturday
d7 = Sunday
'@
}
Import-LocalizedData -BindingVariable Day
# Générer un tableau des jours de la semaine.
$a = $Day.d1, $Day.d2, $Day.d3, $Day.d4, $Day.d5, $Day.d6, $Day.d7
# Obtenir le jour de la semaine sous forme de nombre (Monday = 1).
# Indexer dans $a pour obtenir le nom du jour.
# Utiliser la mise en forme de chaîne pour générer une phrase.
"{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 scripts
avec les noms qui correspondent aux valeurs $PSUICulture.
Voici les informations complètes du fichier .\fr-FR\sample1.psd1 :
# culture=\\"fr-FR\\"
ConvertFrom-StringData @'
messageDate = Today is
d1 = lundi
d2 = mardi
d3 = mercredi
d4 = jeudi
d5 = vendredi
d6 = samedi
d7 = dimanche
'@
En conséquence, lorsque vous exécutez Sample.ps1 sur un système
sur lequel la valeur de $PSUICulture est fr-FR, la sortie du
script est :
Today is vendredi
VOIR AUSSI
about_Data_Sections
about_Automatic_Variables
about_Hash_Tables
about_Quoting_Rules
ConvertFrom-StringData
Import-LocalizedData