mercredi 25 novembre 2009, par Brice Favre
J’ai entamé ce billet suite à une conversation avec des stagiaires sur les différents modules de traduction disponible sur Drupal. La partie traduction, internationalisation ou encore localisation d’un site internet est un aspect qu’on voit finalement très peu dans notre beau pays qu’est la France. De façon générale, les pays qui bénéficie d’une seule langue officielle et qui est activement parlée dans le monde ne s’en soucie guère, hormis dans le sens langue étrangère vers langue du pays.
Le créateur de Drupal étant flamand, il y’a de forte propabilité que cet aspect soit bien traité dans le système. Globalement c’est le cas a quelques petites bizarreries près.
Drupal dispose, dans ses librairies, de la fonction php la plus courte du monde vu qu’elle n’a qu’une lettre : t() ; C’est aussi celle qui est le plus couramment utilisée car elle effectue la traduction des chaines de caractères de l’interface de l’application. En gros chaque fois qu’un module ou une fonction de drupal affiche une ligne de caractère, t l’entoure. Pour faire la liaison entre la chaine d’origine et les chaines traduites, Drupal utilise des fichiers gettext qui sont identifié par l’extension .po. L’avantage d’avoir choisi ce format est qu’il est très répandu notamment pour la gestion des traductions des interfaces des installations Linux. Même si on ne peut pas utiliser les fichiers directement, on peut se servir des applications qui ont été développés comme poedit.
Par défaut Drupal propose une interface permettant de connaitre le nombre de chaînes utilisées sur votre site et de savoir combien ont été traduites (le lien est admin/build/translate). A partir de ce système la communauté a développé plusieurs modules qui ont été développés pour simplifier la vie d’un traducteur. Celui que je retiendrais en tête est Localization Client.
En ce qui concerne les éléments dynamiques d’un site (termes de menus, termes de taxonomie), vous trouverez toutes une série de module "translation" qui intégrerons ces termes en tant que terme traduisible par les interfaces.
Pour les contenus et les blocks, c’est un peu plus complexes mais possible aussi. Le seul point un peu bizarre est la gestion des titres des blocs. Pour résoudre le problème j’ai eu à recourir à une modification d’un template en ajoutant la fonction t() sur le titre mais je pense qu’il y’a d’autres solution que je n’ai pas exploré.
Pour procéder à la traduction des modules, mais aussi récupérer des modules déjà traduit, la communauté Drupal est en train de développer un site spécialisé sur le sujet. Il utilise le pendant de Localization Client, à savoir Localization Server. Ce site es accessible à l’adresse suivante : http://localize.drupal.org/. A terme il est destiné a contenir toutes les traductions de tous les modules drupal que l’on trouve sur drupal.org. La partie française n’est pas en reste (la création d’un compte est nécessaire pour pouvoir y accéder).
Une fois sur le site, vous pouvez vous rendre sur l’onglet Export pour pouvoir récupérer les fichiers de traduction. Entrez le nom du module que dont vous désirez la traduction dans le champ "Project", comme par exemple Views. Plusieurs options se présentent ensuite à vous comme la version du module que vous utilisez ou les options de packaging. Pour ma part, je choisis le package "All in one file" qui me transmet un fichier .po et laisse les autres options par défaut. En cliquant sur Export vous récupérez le fichier que vous pouvez ensuite importer sur vos site par le biais de l’interface de traduction de l’interface de Drupal. Rien ne vous empêche de rajouter vos propres lignes et traduction puis de les réimporter sur http://localize.drupal.org/. Tout le monde y gagnera.
Voilà, maintenant rien ne vous empêche de participer à l’effort de traduction et de dupliquer vos sites en plusieurs langues. Reste à apprendre les langues ou faire confiance au nouveau traducteur de Google.