Partager via


about_Script_Internationalization

Description courte

Décrit les fonctionnalités d’internationalisation de script qui permettent aux scripts d’afficher facilement des messages et des instructions pour les 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.

  • De nouvelles variables automatiques et $PSCulture$PSUICulture. $PSCulture stocke le nom de la langue de l’interface utilisateur utilisée 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 de l’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 à 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 les 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 des 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 here en une table de hachage de type dictionnaire qui est 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 le jeu English-United États (en-US) de messages d’invite pour un script. 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 here, consultez about_Quoting_Rules.

Fichiers PSD1 : stockage de chaînes traduites

Enregistrez les messages de script pour chaque langue d’interface utilisateur dans des fichiers texte distincts portant le même nom que le script et l’extension de nom de .psd1 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 devez créer une structure de répertoires de fichiers qui ressemble à 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 dans le sous-répertoire 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 d’interface utilisateur de l’utilisateur actuel, utilisez l’applet de Import-LocalizedData commande.

Import-LocalizedData recherche la valeur de la $PSUICulture variable automatique et importe le contenu des fichiers dans le <script-name>.psd1 sous-répertoire correspondant à 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 de $PSUICulture est « 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 toutes 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 variable pour afficher les $msgTable 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 impossible de trouver un .psd1 fichier 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 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 de type here qui contient les noms de jours 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 de la chaîne here en table de hachage, puis l’enregistre dans la valeur de la $Day variable.

La Import-LocalizedData commande importe le contenu du fichier dans le .psd1 répertoire qui correspond à la valeur de la $PSUICulture variable automatique, puis l’enregistre dans la $Day variable, en remplaçant les valeurs de $Day qui sont 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 .psd1 fichiers qui prennent en charge le script sont enregistrés dans des sous-répertoires du répertoire de script avec des noms correspondant aux $PSUICulture valeurs.

Voici 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 dé-DE, la sortie du script est :

Heute ist Freitag

Voir aussi