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       




Table des matières