L'internationalisation est présente par défaut dans JAXX et utilise la librairie Nuiton-I18n
Une option a été ajoutée dans le plugin maven de JAXX : i18nable pour permettre ou non l'utilisation de ce système.
Par défaut, l'option est active (donc aucune configuration supplémentaire n'est nécessaire pour utiliser i18n dans JAXX). Pour la désactiver, il suffit de rajouter <i18nable>false</i18nable> dans la configuration du plugin.
Le fonctionnement est simple : lors de la compilation JAXX, lorsque l'on rencontre certains attributs on encapsule la valeur de l'attribution par un appel à la méthode :
org.nuiton.i18n.I18n._(String)
La liste des attributs en question sont les suivants :
Ensuite l'utilisation du parserJava du plugin i18n permet la détection des clefs i18n.
Si on prend l'exemple suivant, on a une JFrame avec le titre myKey :
<JFrame id='mainFrame'
width='800'
height='800'
title='myKey'/>
Maintenant, si on configure le plugin i18n de la manière suivante (pour plus d'information sur le plugin i18n, reportez vous à la documentation ad-hoc ):
<plugin>
<groupId>org.nuiton.i18n</groupId>
<artifactId>maven-i18n-plugin</artifactId>
<configuration>
<entries>
<entry>
<basedir>${maven.gen.dir}/java</basedir>
</entry>
</entries>
</configuration>
<executions>
<execution>
<goals>
<goal>parserJava</goal>
<goal>bundle</goal>
</goals>
</execution>
</executions>
</plugin>
On peut changer le titre de la JFrame depuis le fichier de traduction en changeant la valeur pour la clé myKey.
Le parserJaxx du plugin i18n avait besoin des appels explicites à la méthode de traduction et de par sa conception n'était pas capable de détecter les nouvelles clés à traduire. Il faut lui préférer l'utilisation du parserJava qui se sert du code Java généré pour travailler avec les traductions.