Projet

Général

Profil

Import-LocalizedData

A l'origine ce script a été conçu par Jacques Barathon alias Janel .
Il permet la localisation de script sous PowerShell v1, c'est-à-dire que le contenu d'un message s'adapte à la langue en cours dans une session PowerShell.

function Import-LocalizedData([string] $DataFileName,
                              [System.Globalization.CultureInfo] $UIculture = (Get-UIculture))

La fonction ci-dessus permet d'importer des données selon la culture de la session en cours ou en précisant une culture particulière.
Fonctionne avec PowerShell version 1.

Chaque fichier de données doit être placé dans un répertoire portant le nom de la culture ("fr-FR", "en-US", etc).
Ce répertoire lui-même doit être placé dans le même répertoire que le script.

Par défaut, le fichier lu aura le même nom que le script, avec une extension différente: .psl1 (pour PowerShell Localization, v1 ).
Mais on peut préciser un autre nom de fichier. Attention à ne pas préciser l'extension, elle est rajoutée par la fonction!

Enfin, le contenu d'un fichier doit être sous la forme suivante :
<nom> = <valeur>

Pour faciliter la lecture du fichier, on peut ajouter des lignes vierges et des lignes de commentaire commençant par #.

get-content c:\tests\fr-FR\test-local.psl1
#culture "fr-FR" 

Welcome = Bienvenue au jeu "Devinez un jour" !
Prompt  = Tapez un nom de jour
Success = Vous avez deviné ! Toutes nos félicitations !
get-content c:\tests\en-US\test-local.psl1
# culture "en-US" 
Welcome = Welcome to the "Guess a day" game!
Prompt = Enter the name of any day
Success = You had it right! Congratulations!
c:\tests\test-local.ps1 :
param ([System.Globalization.CultureInfo]$myculture = (get-UIculture))

. c:\scripts\import-localizeddata.ps1

$messages = import-localizeddata -uiculture $myculture

$messages.Welcome
$messages.Prompt
$messages.Success

De mon coté j'ai complété ce script afin de gérer des caractères de contrôles insérés dans le contenu des messages, on utilise ceux du C-C# et pas ceux de PowerShell :

  Key= \tSuccess\r\n.
  Key= \TSuccess\r\n.  \T provoquera une erreur, car les caractères de contrôles sont sensibles à la casse
  Key= \\TSuccess\r\n.  \\T est transformé en \T.
  Key= \\tSuccess\r\n.  \\t est transformé en \t.

J'ai également ajouté la gestion d'une culture par défaut et les membres isBasicLatin, isDefaultCulture, Get, GetCallerPath, GetCaller et GetCulture sur la hashtable construite par la fonction Import-LocalizedData.

Usage

  0) Le fichier .psl1 est chargé via l'appel à la fonction Import-LocalizedData

  1) NecessaryParameter={0} : le paramètre {1} doit être renseigné. 
  2) $LogDatas.Get("NecessaryParameter","FunctionName","ParameterName")  
  3) function Set-LogXMLConfigurator([String] $FileName=$(Throw $LogDatas.Get("NecessaryParameter","Set-LogXMLConfigurator","FileName")),

Vous pouvez consulter le Wrapper Log4Posh qui utilise la localisation à l'aide cette fonction.