Créer et utiliser des fichiers de traduction avec BIRT

Bonjour,

Aujourd’hui nous allons parler de la traduction des rapports BIRT.
birt_logoCela peut devenir une pratique incontournable dès lors que les clients de vos rapports n’ont pas tous la même langue et qu’il n’est pas possible de ne faire qu’une version ( anglaise en générale ) des rapports.

Nous allons voir qu’il est assez simple de rendre un rapport multilingue, même si cela peut vite devenir fastidieux si vous devez maintenir un grand nombre de traductions.

La traduction se base sur un élément principal : le fichier « .properties ». Ce fichier contient un ensemble d’associations « clés=valeurs » correspondant à toutes les traductions de vos textes dans le ou les rapports. Exemple d’un fichier « .properties » contenant la traduction de deux clés « welcome » et « bye »  :

« traduction.properties » :

welcome=Welcome
bye=Goodbye

« traduction_fr_FR.properties » :

welcome=Bienvenu
bye=Au revoir

Il est possible d’organiser les traductions pour retrouver plus facilement les clés en ajoutant des « . » , exemple :

title.welcome = Bienvenu
common.hour=Heure

Un fichier doit être créé pour chaque langue. Tous les fichiers contenant les traductions vont se présenter sous la forme « toto_xx_XX.properties » avec « xx_XX » représentant le code de la langue contenue dans le fichier. (exemple pour la langue allemande : « toto_de_De.properties »).

J’utilise en général un fichier par défaut, sans suffixe, (exemple:  « toto.properties » ) qui contient la version anglaise des traductions. C’est ce fichier que j’associe au rapport. Si aucun fichier de traduction ne correspond à la locale de l’utilisateur, c’est ce dernier qui sera utilisé. Grâce à ce système, en l’absence du bon fichier de traduction, l’utilisateur verra son rapport traduit en anglais.

Pour lier un fichier de traduction, et par conséquent toutes langues déclinées pour ce nom de fichier, rendez vous dans les propriétés du rapport. Se rendre dans la partie « Resources »,  dans la section « Properties Files » cliquez sur « Add files » et sélectionnez le fichier « traduction.properties ».

add_traduction

Vous pouvez lier autant de fichiers de traductions que vous souhaitez. Il peut en effet être intéressant de créer des fichiers comme « common.properties » contenant des traductions communes à de nombreux rapports puis des fichiers de traduction spécifiques pour chaque rapport.

Maintenant que le ou les fichiers de traduction sont liés au rapport, il va falloir lier les traductions aux textes à traduire. Selon le type de champ à traduire, plusieurs possibilités :

  • Les labels

Dès que vous pouvez, utilisez ce type champ, sa traduction est très facile. Pour cela, cliquez sur le label à traduire puis, dans ses propriétés, cliquez sur la partie « Localization ». Vous aurez alors la liste de tous les couples clé/valeur présents dans vos fichiers de traductions liés au rapport. Sélectionnez la bonne valeur puis cliquez sur « OK ».

label_traduction

Si vous avez correctement ajouter vos fichiers de traduction à votre rapport, les différentes clés seront affichées avec leur valeur dans la locale de votre système, dans mon cas en français. Cela n’est possible que parce que j’ai également le fichier « traduction_fr_FR.properties » qui a été automatiquement reconnu. Si ce fichier n’existait pas, les valeurs seraient celles contenues dans le fichier « traduction.properties », dans mon cas, en anglais.

A noter qu’il est également possible de traduire les champs sur lesquels on va appliquer des « Map »:map_traduction

  • Custom text

Il arrive assez souvent qu’on ait à mélanger du texte et des valeurs afin de créer des paragraphes/lignes de texte avec un contenu dynamique. Dans ce cas, les types d’objets sont « Text » (mode « Html »+ »Dynamic Text »),  « Data » ou encore « Dynamic Text ». Voici un exemple de script que l’on pourrait retrouver dans ces champs:

"Bonjour, nous somme le"+today()

Dans ce cas, il faut traduire la partie « Bonjour, nous somme le ». Pour ça, rajouter la traduction de cette phrase dans votre fichier de traduction puis, remplacez la partie « Bonjour, nous sommes le » par :

reportContext.getMessage("welcometoday", reportContext.getLocale());

Dans mon fichier de traduction, j’ai donc :

« traduction.properties » :

welcome=Welcome
welcometoday=Welcome, today is the
bye=Goodbye

« traduction_fr_FR.properties » :

welcome=Bienvenu
welcometoday=Bienvenu, nous sommes le 
bye=Au revoir

Afin de faciliter la traduction et d’éviter d’avoir à écrire ce script  à chaque fois,il est possible de créer une fonction javascript dans un fichier « .js » que vous utiliserez comme ressource des rapports, voici la fonction prenant en paramètre la clé:

function translate(value){
 return reportContext.getMessage(value, reportContext.getLocale());
}

Le champ texte se présentera donc maintenant sous cette forme :

translation("welcometoday")+":"+BirtDateTime.today()
  • Externalised text  

.Enfin, une dernière méthode pour traduire les textes qu’il est possible d’utiliser à chaque fois que l’on rencontre cette icône :

externalised_TOn la rencontre souvent notamment dans les graphiques. Prenons l’exemple du titre du graphique que l’on souhaite traduire : cliquez sur l’icône à côté du titre puis cochez la case  « Externalised text », enfin, sélectionnez la traduction que vous souhaitez affecter au titre et cliquez sur « OK ».

externalised_graph

Et voilà ! c’es terminé, vous avez maintenant toutes les cartes en mains pour traduire vos rapports.

Nous verrons dans un prochain article comment tester ces traduction grâce à la fonction « Preview » de BIRT.

Tags: , , , , , , , , , , , , , , ,

Laisser un commentaire

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

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.