octobre
2009
Comme vous le savez peut-être l’internationalisation à base de ResourceBundle ne supporte que des fichiers .properties encodé en ISO-8859-1, il faut donc encoder les caractères spéciaux sous la forme \uxxx ce qui n’est pas très lisible lorsque vous utilisez des languages comme l’arabe ou le chinois. De plus, si vous voulez ou devez utiliser des fichiers .properties encodés en UTF-8 vous êtes bloqués dès que vous devez utiliser des caractères spéciaux.
Une première solution est de passer par des fichiers XML en spécifiant l’encodage UTF-8.
Néanmoins, Spring propose une solution avec la classe ReloadableResourceBundleMessageSource. En effet, avec cette classe on peut spécifier l’encodage utilisé pour les fichiers directement dans le mesageSource. En plus de cela, cette classe suppporte également le rechargement des fichiers properties soit à intervalle régulier soit en utilisant la méthode clearCache().
Il faut faire attention en passant à cette classe que les liens vers le(s) basename(s) se fait en utilisant des ressources Spring, donc en suivant la nomenclature de ces dernières.
Voici un exemple d’utilisation avec Spring :
<property name="basenames">
<list>
<value>classpath:org/project/i18n/messages</value>
<value>classpath:org/project/i18n/errors</value>
</list>
</property>
<property name="cacheSeconds" value="-1" />
<property name="fileEncodings" value="UTF-8" />
<property name="defaultEncoding" value="UTF-8" />
</bean>
Mettre cacheSeconds à -1 permet d’indiquer de ne pas chercher à recharger les fichiers .properties.
2 Commentaires + Ajouter un commentaire
Archives
- novembre 2011
- avril 2010
- mars 2010
- février 2010
- janvier 2010
- décembre 2009
- novembre 2009
- octobre 2009
- septembre 2009
- juillet 2009
- juin 2009
- avril 2009
- mars 2009
- février 2009
- octobre 2008
- septembre 2008
- mars 2008
- février 2008
- janvier 2008
- décembre 2007
- novembre 2007
- octobre 2007
- septembre 2007
- août 2007
- juillet 2007
- juin 2007
- mai 2007
- avril 2007
Catégories
- AMD
- Apple
- Cartes graphiques
- Chrome
- Conception
- Divers
- Eclipse
- English
- Hardware
- Informatique générale
- Intégration continue
- IntelliJ Idea
- Java
- JTheque
- Linux
- Logiciels
- Mes articles
- Mes critiques de livres
- Mes projets
- Microsoft
- Mon serveur perso
- Office 2007
- Open Source
- Outils
- Perso
- PHP
- Processeurs
- Programmation
- Sécurité
- Spring
- Windows Vista
- Windows XP
Effectivement, c’est une solution aussi
Par contre, le désavantage, c’est que le fichier n’est pas de plus lisibles avec tout ces échappements. Alors que mes fichiers sont parfaitement lisibles sans aucun échappement.
Ah tiens j’ai eu à me cogner ce genre de problématique il y a pas longtemps pour un portage en chinois. De notre côté on est resté sur des fichiers ascii classiques avec de l’encodage unicode géré par un éditeur. D’ailleurs j’ai détaillé ici : http://hakanai.free.fr/index.php/the-news/47-resourcebundle-chinois