Traduction de modules contrib de Drupal

Voici des instructions pas-à-pas pour la traduction de modules contrib de Drupal.

Depuis la sortie de http://localize.drupal.org/, voir aussi cette documentation: DrupalL10n -- JonathanLessard 2010-07-16 11:30:29

Présentation sommaire de gettext

Le manuel de gettext est long mais très instructif. Le lire au complet n'est peut-être pas nécessaire et ce guide devrait vous suffire pour les spécificités de Drupal. Quelques petites choses à savoir sur gettext:

Gestion des fichiers .po et .pot

Création des fichier de template (.pot)

Module Translation template extractor (Potx)

Il suffit d'installer le module sur votre site Drupal, choisir le ou les modules pour lesquels générer le template, et le module se chargera de l'exporter dans le bon format. PotX

Par ligne de commande:

Par interface:

Extractor.php

Pour extraire les chaînes déjà taggées avec des t(), utiliser l'extractor installé dans apc/drupal-pot/extractor, comme suit:

anarcat@homere:/var/alternc/html/d/dev01/apc/drupal-4.7.2/modules/administration$ php ../../../drupal-pot/extractor.php
Invalid marker content in merged.inc:745
* t($type)
Invalid marker content in merged.inc:787
* t($watchdog->type)

Ceci génère des fichiers .pot dans le répertoire courant, selon le nombre de fichiers avec des t() détectés par le site.

Pour extraire les .pot du core ainsi que le script extractor.php, utilisez la commande CVS:

cvs -z6 -d:pserver:anonymous:anonymous@cvs.drupal.org:/cvs/drupal-contrib co contributions/translations/drupal-pot

La dernière version de extractor.php peut être placée dans un répertoire et lancée à partir d'un browser. Ceci génèrera des .pot pour tous les fichiers trouvés dans ce répertoire et ses sous-répertoires -- DavidLesieur 2006-07-19 15:35:45

Importation au SVN de Koumbit

Pour importer un module donné dans notre SVN pour pouvoir y collaborer, on utilise la séquence de commandes suivantes:

svn mkdir https://svn.koumbit.net/svn/koumbit/trunk/drupal/contrib/modules/administration/
svn co https://svn.koumbit.net/svn/koumbit/trunk/drupal/contrib/modules/administration/
cd administration/
svn add *
svn commit -m"import 4.7 module"
[... the extractor step above ...]
svn add *.pot
svn commit -m"add .pot files"

À partir de là, on peut travailler "offline" sur les .pot et faire un svn update sur le serveur de prod au besoin.

Normalisation: fusion en un fichier

De là, il est préférable de travailler sur un seul fichier par module. On fait donc un merge. Il faut aussi placer le fichier .pot dans un répertoire po/. Donc:

svn mkdir
for f in *.pot
svn mv $f po
svn commit -m"move to subdir"
cd po
msgcat --use-first  general.pot [^g]*.pot | msgattrib  --no-fuzzy -o tmp
svn delete *.pot
mv tmp administration.pot
svn add administration.pot
svn commit -m"merge in one file"

Élimination des chaînes déjà traduites dans le noyau et autres doublons

Plusieurs modules réutilisent des chaînes déjà présentes dans le core de Drupal. Il est alors préférable de réduire la tâche en éliminant ces chaînes en double. Vu qu'il n'y a pas de commande gettext qui fait le travail, on fait appel à une combinaison de commandes:

msgcomm cck.pot ../../../../drupal-pot/*.pot > common.pot
msgcomm -u cck.pot common.pot > new
mv new cck.pot
rm common.pot

La première commande isole les chaînes communes au core et au .pot du module à traduire. Le common.pot contient donc ces chaînes que nous voulons retirer de cck.pot. Pour retirer ces chaînes du cck.pot, il ne reste qu'à aller chercher les chaînes "uniques" aux deux fichiers, qui sont en fait uniques seulement à cck.pot, et donc pas dans le core. Les deux dernières commandes ne sont qu'un trivial ménage.

Création des fichiers à traduire (fr.po/es.po/etc) et traduction

Pour créer une nouvelle traduction, on utilise généralement msginit:

msginit -l fr

ceci va créer un fichier fr.po dans le répertoire courant, prêt à traduire.

Le manuel de drupal a des bonne suggestions de logiciels à utiliser pour la traduction des fichiers .po.

Mise à jour du template (.pot) et des fichiers traduits (.po) après le changement des chaînes originales

Une fois qu'on a ajouté ou modifié des t() dans les fichiers sources, il faut mettre à jour les traductions. Pour ce faire, on ré-créé un fichier .pot et on propage les changements aux traductions. Cette tache requiert les scripts "drupal-pot", disponibles dans le cvs de drupal ainsi que php installé localement.

$ php ../../../drupal-pot/extractor.php
$ msgcat -F --use-first general.pot <other .pot files> -o po/<module>.pot
$ cd po
$ msgmerge -U -F fr.po <module>.pot #backup in ~<module>

Si la source d'une chaîne déjà traduite dans le .po a été modifiée, cette chaîne sera marquée comme fuzzy dans le .po mis à jour par msgmerge. Toute chaîne marquée fuzzy devra être révisée par les traducteurs.

Traduire les fichiers .po

Une fois que les fichiers .po ont été générés et présent dans svn, vous devez les télécharger avec un client svn pour ensuite les éditer avec un éditeur de ficher .po.

Clients subversion

télécharger les fichiers de svn

Une fois votre client svn installé, il suffit de faire un "check-out" du repository des modules à traduire. https://svn.koumbit.net/svn/koumbit/trunk/drupal/contrib/modules/

Sous Debian:

svn co https://svn.koumbit.net/svn/koumbit/trunk/drupal/contrib/modules/

Éditeurs de fichier .po

Choisiez un éditeur dans la liste suivante:

À surveiller lors de la traduction

Les conseils suivants sont basés sur des erreurs fréquentes rencontrées dans des traductions.

Nouveautés 2008

Voici quelques nouveautés sur le plan de la localisation, communiquées lors de DrupalCon2008.

Module Localization Client

Il y a un cool petit module qui s'appelle Localization client pour D5-D6, qui permettra d'effectuer beaucoup plus rapidement la traduction « à la mitaine » directement dans la base de données... Un genre de croisement entre Firebug et PoEdit mais pour Drupal !!!

http://drupal.org/project/l10n_client

Pour l'instant, Localization Client requiert que le module locale soit patché. Télécharger le ici

Projet de serveur de traduction central

Gábor Hojtsy est aussi en train de lancer un projet de serveur central pour les traductions, qui pourrait (dans un an ou plus selon moi) remplacer le CVS.

http://drupal.org/project/l10n_server

http://l10n.drupalfr.org

Pour l'instant, il faut continer à soumettre sur le CVS les fichiers traduits à l'aide de PoEdit (ou Localization client puis extraits avec Potx). Cependant, les soumettre aussi sur le serveur central en développement permettrait de tester le système de serveur. Les traductions (ou fichiers .po) entrés sur le serveur peuvent être soumis en tant que « suggestions » pour être validées par la communauté.

Références


CategoryDrupal

TraductionDrupal (last edited 2019-05-14 14:51:05 by kienan)