Internationalisation (i18n) des sites
26 février 2008 – 23:31
L’internationalisation (aussi connu sous l’abréviation i18n) d’une application permet de la faire fonctionner dans des contextes culturels différentes sans grande complexité. La notion i18n est beaucoup utilisé pour les portails, les applications lourdes et commence à être utilisé pour des sites personnels.
L’internationalisation des sites devient un jeu d’enfants grâce à Spring. Ici nous allons traiter un cas simple avec 2 façons de faire pour traduire rapidement, et sans trop de code, une page web.
Pour notre cas nous utilisons 2 fichiers : messages_fr.properties et messages_en.properties, respectivement les fichier en français et anglais. Voici leur contenu :
messages_fr.properties
heading=Locales en Francais
greeting=Bienvenu
chaine=Je suis injecté par le controller
messages_en.properties
heading=Locales in English
greeting=Welcome
chaine=I am injected by the controller
La première manière d’exploiter ces fichiers est de les paramétrer dans la classe Controller une RessourceBundle qui ira lire les données du fichier que nous souhaitons utiliser.
La variable (String) strLoc prends la valeur « fr » dans ce cas ci mais rien ne vous empêche d’utiliser la langue que vous préférez.
http://java.sun.com/j2se/1.4.2/docs/api/java/util/ResourceBundle.html
http://java.sun.com/j2se/1.4.2/docs/api/java/util/Locale.html
La deuxième façon, et la plus simple à mes yeux, est de mettre le paramétrage directement dans les JSP. Cela allège le code de la classe Controller et ne change quasi rien dans les JSP à part ajouter ce code en entête (ou dans un fichier include si vous avez envie).Le seul code à mettre dans le Controller est la ligne suivante :
-
myModel.put(“resource”, strLoc) ;
ensuite le code à mettre dans les JSP :
-
<fmt value=“$model.resource”>
-
</fmt><fmt basename=“messages”>
Maintenant si vous avez dans vos pages des balises JSTL du type suivant, celui ci sera traduit lors de la construction de la page. Avec une Locale paramétré à “fr” nous avons “Locales en Français” et avec “en” nous obtenons “Locales in English”
-
<fmt key=“title”>
Et voilà, vous venez d’internationaliser votre site en moins de 30 minutes.