IReport: Internationalisation ou I18N pour les intimes

IReport est un outil de reporting très utilisé dans le monde open source, il possède comme tout bon outil standard du monde java, une fonction d’internationalisation (I18N).

Resource bundle

Le « resource bundle » ou paquet de ressources en français est un ensemble de fichiers permettant de stocker les différentes traductions des phrases utilisées dans vos rapports. Ces fichiers dont l’extension est .properties peuvent être édités à l’aide d’un simple éditeur de texte classique.

Le nom de vos fichiers doivent obligatoirement être construit de la manière suivante :

<nom_du_bundle> [ _code iso langue[ _code iso pays] autre code]]]

Voici les sites de références pour ces valeurs

Ainsi qu’une liste de noms valides pour votre fichier bundle

  • traductions_fr_CA_UNIX
  • traductions _nl_NL
  • traductions _fr
  • traductions _en_GB
  • traductions _en
  • traductions

NB : Pour fonctionner la ressource doit se trouver dans le même répertoire que le rapport, il faut ensuite la lier au rapport (voir plus bas)

Création d’une ressource dans Ireport

File -> New -> Resource bundle

Resource bundle

Resource bundle

Créer ensuite votre fichier bundle

Sélection du resource bundle

Sélection du resource bundle

Maintenir le fichier resource

Windows -> “favorites” (CTRL-3)

Maintenance des fichiers de traduction

Maintenance des fichiers de traduction

Ajouter une langue

Clic droit sur le fichier properties -> add locale

Ajout d'une locale

Ajout d’une locale

Choisir la langue et le pays correspondant à la traduction

Sélection code iso langue et pays

Sélection code iso langue et pays

Maintenance des traductions

Clic droit sur le fichier properties -> open

Maintenance des traductions

Les traductions sont présentées selon un couple clé/valeur

Visionnage des traductions de toutes les langues

NB : il est possible d’ajouter des balises HTML dans le cas ou vous voulez mettre un seul mot en gras par exemple.

Il est possible d’insérer des paramètres dynamiques dans les phrases, utile pour certaines langues qui ne placent pas les mots dans le même ordre.

Jusque 3 paramètres maximum -> {0},{1},{2}

Connecter Ireport au bundle

Propriétés du rapport

Lier le bundle au rapport

Lier le bundle au rapport
  Syntaxe Exemple
Avec $R{} $R{key} $R{invoice}
Avec str str(« key ») str(« invoice »)
Avec msg et 1 paramètre msg($R{key}, <arg0>) msg($R{invoice.number}, $F{DOCUMENTNO})
Avec msg et 2 paramètres msg($R{key}, <arg0>, <arg1>) msg($R{invoice.number}, 100)
Avec msg et 3 paramètres msg($R{key}, <arg0>, <arg1>, <arg2>) msg($R{invoice.number}, 100,200

La propriété standard suivante définit la langue utilisée par le rapport

article6_image9_ireport_internationalisation_i18n

Paramètre natif de la langue dans IReport

Tester le rapport

Tool -> option -> compilation and execution

On peut forcer la langue par défaut directement dans Ireport, lorsque celui-ci se lance.

article6_image10_ireport_internationalisation_i18n

Forcer la langue par défaut dans IReport

Bonnes pratiques

Je finirai cet article par quelques bonnes pratiques issus de ma propre expérience concernant la création d’un fichier bundle:

  • Ne gérer que deux langues (défaut+autre) en phase de développement, et d’en ajouter une fois les développements terminés.
  • Utiliser l’anglais pour vos clés de traduction.
  • Séparer les mots de vos clés par un point si votre traduction est composée de plusieurs mots (ex: numéro de facture -> invoice.number).
  • Toujours mettre les clés en minuscule.
  • Pensez que vous pouvez réutiliser votre fichier de traduction pour tous vos rapports, soyez génériques.

Laisser un commentaire

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

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> 

Petit calcul pour valider votre commentaire! merci * Time limit is exhausted. Please reload CAPTCHA.