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
Créer ensuite votre fichier bundle
Maintenir le fichier resource
Windows -> “favorites” (CTRL-3)
Ajouter une langue
Clic droit sur le fichier properties -> add locale
Choisir la langue et le pays correspondant à la traduction
Maintenance des traductions
Clic droit sur le fichier properties -> open
Les traductions sont présentées selon un couple clé/valeur
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
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
Tester le rapport
Tool -> option -> compilation and execution
On peut forcer la langue par défaut directement dans Ireport, lorsque celui-ci se lance.
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.