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