Développer un site multilingue est assez simple , il existe certain standard tel que gettext sur lesquels il est possible de s’appuyer. En revanche quand arrive le délicat problème du javascript les choses se compliquent.
On peut utiliser la solution bourine du « tableau de traduction » :
<pre>var tabLangue = new Array; tabLangue["pres_error"] = "Le formulaire n'est pas correctement rempli"; tabLangue["pres_duree"] = "La durée doit être une valeur numérique";</pre>
Mais dès qu’il faut intercaler des variables dans les traductions ça devient un enfer!.
J’ai finalement pris mon courage à deux mains et ai pondu une petite classe basée sur [prototype|http://www.prototypejs.org|en] (1.6) qui permet justement d’intégrer très facilement des variables dans les chaines à traduire. Ceux qui ont déjà utilisé gettext ne devrait pas être dépaysé :
var i18n = new I18n(); i18n.load(lang_fr);// On charge l objet de traduction alert(i18n._('confirm',12)); // clé + argument pour remplacer les %x alert(i18n._('players','Jean','50')) ;
Les objets de traduction se présentent sous cette forme :
var = lang_fr{ 'confirm' : 'Voulez vous supprimer %0 utilisateurs', 'players' : 'Le player de %0 lui à couté %1 euros', }
Si la classe vous intéresse vous pourrez trouver la source ici : Internationalisation