L'application devant etre multisite et l'entreprise utilisatrice de l'application étant susceptible d'etre implantée dans plusieurs pays, il nous a semblé évident qu'il était nécessaire de prévoir un mécanisme d'adaptation automatique de celle-ci à la langue des utilisateurs locaux.
Tous les textes apparaissant dans le projet ne sont jamais écris "en dur". Ils sont référencés au moyen d'une clef. Pour chaque langue, un fichier associe un texte à chaque clef.
La traduction du projet dans n'importe quelle langue, mais aussi de l'intitulé de tous les champs et des noms de tables, ne nécessite que la création de ces fichiers de correspondance. Et ceci, bien sur, sans avoir à recompiler l'application pour le plus grand confort des utilisateurs.
La fenetre principale offre la possibilité d'accéder au choix de la langue, via des boites de selection. Pour le francais et l'anglais, des racourcis graphiques sont par ailleurs disponibles.
Lorsqu'une nouvelle langue est sélectionnée, un événement est transmis à toutes les classes disposant d'une repre´sentation graphique afin de mettre aussitot leur contenu à jour. A noter que la boite de selection de langue recoit elle-aussi cet événement et voit aussi ses messages immédiatement traduits.
Nous avons spécialement développé un composant qui permet en quelques clics de souris de modifier la localisation de l'application et ceci en temps réel sans avoir à la redémarrer. Nous l'avons appellé le I18NChooser. Il se présente sous forme d'une simple boite de dialogue comportant une barre d'outils (shortcuts) et de deux listes déroulantes contenant l'ensemble des langues et des pays respectant parfaitement la norme ISO 3166 pour les pays et ISO 639 pour les languages.
Mais ce n'est pas tout : nous avons aussi prévu le cas ou ces normes pourraient changer : ces listes sont crées à partir de deux fichiers lus au démarrage de l'application qu'il suffira de mettre à jour : le composant s'automodifiera sans recompilation.
Bien évidemment, la langue de l'I18NChooser est elle-meme modifiée par le choix de la locale.
Par exemple la fenetre de base de GPI (langue par défaut : locale fr_FR) .
Après sélection de la langue anglaise (locale : en_US; second bouton racourcis) .
Bien évidemment, on peut détacher les barres d'outils et celle des racourcis de l'I18NChooser ne fait pas exception.