Multilingue Javascript

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

2 réflexions sur « Multilingue Javascript »

  1. keusta

    hello grunk, je découvre ton blog technique (via le topic « le framework c’est mal » sur developpez)
    j’ai appris quelques trucs mais je voulais surtout te faire un retour sur l’affichage du code dans la page qui est à moitié caché lorsqu’il est trop long…

    ma solution
    #content pre{
    padding:0 10px;
    border:1px solid;
    overflow:auto;
    }

    on peut tout de même faire un copier coller malgré tout cela gène juste au niveau de la lecture.
    🙂

    Répondre

Répondre à keusta Annuler la réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *