GetText

La traduction d’une application est un vrais problème car il faut une méthode qui rajoute peu de travail au développeur et qui permettent une traduction facile.

On peut bien sur bricoler un système personelle pour gérer ce problème mais il faudra aussi dévelloper les outils annexe permettant de maintenir à jours les différentes traduction

GetText est un outils très utilisé dans le monde de l’open source et disponible pour de nombreux languages. Il est très discret à utiliser puisqu’il suffit de remplacer:

echo "Hello World";

par

echo _("Hello World");

La chaine hello world sera ensuite extraite automatiquement de votre code source par les outils de gettext. Les développeurs n’ont donc pas à se soucier de maintenir à jour le fichier de traduction.

#Extraction des chaines à traduire Pour extraire les chaines à traduire de vos fichier php il suffit d’utiliser la commande:

xgettext *.php

Cela va vous générer un fichier messages.po.

Il faut ensuite le compiler en fichier .mo utilisable par gettext.

msgfmt messages.po

L’un des principeaux problème avec beaucoup de méthode est la mise à jour des fichier de traduction. Et c’est là où à mon gout gettext trouve tout son intêret.

  • Commencez par renommer le fichier messages.po en old.po.
  • Générez le fichier messages.po
  • Mergez les deux fichier grace à cette commande:
msgmerge old.po messages.po --output-file=messages.po

#Quid des performances? GetText est puissant et on pourrait penser que cette solution est plus lente que un $lang[$language][‘welcome’]. Et bien non l’extension gettext est écrite en C et ses performance sont meilleur que le simple tableau de string.

Un benchmark

#Bibliographie Un article intérressant sur gettext et php: http://www.onlamp.com/pub/a/php/2002/06/13/php.html

Le site de gettext: http://www.gnu.org/software/gettext/