Blogue Nmédia solutions
3 novembre 2009

Expérimentation BAML

INTRODUCTION

En WPF, les fichiers BAML (BinaryApplication Markup Language) sont le résultat de la compilation d’un fichier XAML. Nous verrons dans cet article comment faire la gestion des ressources à l’aide de ces fichiers.

Tout d’abord, présentons un peu plus les fichiers BAML et leur utilité. Ils sont situés dans le dossier obj\Debug de votre application, où chaque contrôle XAML en possèdera un. Pour visualiser le contenu de ces fichiers, voici les étapes à suivre.

 

1. Installation du Red Gate’s .Net Reflector . Il est l’un des outils les plus connus dans le milieu pour voir le contenu et explorer les assemblies .Net.

2. Installation de l’add-in BAML Viewer pour le .Net Reflector. C’est ce qui fera en sorte que vous serez en mesure de visualiser le contenu des fichiers à partir du Reflector.

3. Dans cet article, nous utiliserons une petite application nommée myPiggyBank pour faire la démonstration. Voici une capture d’écran de la vue proposée par BAML Viewer.

Figure 1 Capture d’écran du .Net Reflector et du BAML Viewer sur un fichier BAML

 

APPROCHE POUR TRADUIRE VOTRE APPLICATION

Pour traduire votre application sans la retoucher à l’aide des fichiers BAML, voici la marche à suivre :

1. Ajout dans le fichier .csproj de votre projet la ligne suivante :

<UICulture>fr-CA</UICulture>

Figure 2 Ligne à ajouter dans le fichier .csproj

2. Enlever le commentaire sur la ligne suivante dans le fichier AssemblyInfo.cs du projet :

[assembly: NeutralResourcesLanguage("fr-CA", UltimateResourceFallbackLocation.Satellite)]

 

3. Il faut alors assigner un identifiant unique pour tous les contrôles. Cela peut se faire à la main et être long et le risque d’erreur est élevé. Il existe cependant une façon rapide de tout faire générer à la main via msbuild. Pour ce faire, allez dans votre menu Démarrer > Visual Studio 2008 > Visual Studio Tools > Visual Studio 2008 Command prompt  et entrez la ligne de commande suivante :

msbuild /t:updateuid myPiggyBank.App.csproj

* Note : Ce processus doit être fait à chaque ajout / retrait des contrôles de votre application. Une bonne pratique serait de mettre la commande dans les commandes à exécuter lors de la compilation.

4. Pour extraire les ressources de votre application, il faut alors télécharger l’utilitaire LocBaml.exe vers le dossier obj\Debug du projet. En ligne de commandes, utilisez la ligne suivante :

LocBaml /parse myPiggyBank.App.g.fr-cA.resources /out :o utput.csv

5. Vous pouvez maintenant modifier vos ressources sans problème. Une fois ces changements complétés, il faut générer un fichier localisé.

LocBaml /generate /trans:output.csv myPiggyBank.App.g.fr-CA.resources /out:. /cul:en-CA

 

6. Il faut maintenant compiler l’assembly.

Al.exe /out:myPiggyBank.resources.dll /cultures:en-CA /embed:myPiggyBank.App.g.fr-CA.resources

Voilà, votre application est disponible avec les ressources en en-CA. Il ne vous reste qu’à créer un dossier en-CA dans le répertoire bin\Debug de votre projet.

 

Références

http://blogs.msdn.com/jimoneil/archive/2009/01/12/b-is-for-baml.aspx

http://www.codeproject.com/KB/WPF/WPFUsingLocbaml.aspx

http://msdn.microsoft.com/en-us/library/ms754231(VS.100).aspx

Commentaires

[2 commentaires]
novembre 8, 2009

Donc la conclusion, c’est qu’il s’agit d’une belle méthode pour projets WPF avec plusieurs employés de background assez diversifiés (plusieurs développeurs, responsable de documentation techniques, traducteur / localisateurs) et une portée plus internationale que nationale.

Est-ce que c’est bien ça ?

novembre 10, 2009

Exactement.
Cependant, il semble que dans la vie de tous les jours ce ne soit pas la méthode de localisation la plus utilisée compte tenu que l’on recommande tout de même l’utilisation de fichiers de ressources (.resx)tradionnels.

Donc, ces fichiers demeurent même en WPF la meilleure solution pour la localisation.

Commenter

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

 

Switch to our mobile site