tfe Homepage

12/06/2007

site multilingue: gettext

Merci à  ciel pour m'avoir fait découvrir cette petite merveille. Ce billet n'a pas pour but d'être complet: pour cela veuillez vous référer e  la documentation officielle. GNU/gettext est un outils permettant de localiser ses messages. L'ensemble des variables texte se retrouvent alors dans un fichier ayant l'extension "po".

structure du fichier po

msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION " "POT-Creation-Date: 2002-04-06 21:44-0500 " "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE " "Last-Translator: FULL NAME <EMAIL@ADDRESS> " "Language-Team: LANGUAGE <LL@li.org> " "MIME-Version: 1.0 " "Content-Type: text/plain; charset=CHARSET " "Content-Transfer-Encoding: 8bit " #: gettext_example.php:12 msgid "une phrase" msgstr "sa traduction"

Il suffit de créer alors un fichier "po" dans le dossier de la langue correspondante: locales/fr/LC_MESSAGES , locales/es/LC_MESSAGES , ou autre. Par soucis de performance, il faut compiler le fichier "po" pour créer un "mo". Cela se fait via l'utilitaire "msgfmt", également disponible pour windows.

Une fois le fichier "mo" cre©e, voila le code php qui va bien.

$language = 'fr'; putenv("LANG=$language"); setlocale(LC_ALL, $language); $domain = 'messages'; bindtextdomain($domain, "./locales"); textdomain($domain); echo gettext("une phrase");

Par exemple, ce petit code php va écrire "sa traduction".