TfeServer

Blog de tfe, Web, Unix et Scripts...?

site multilingue: gettext

Publié le 12/06/2007 dans Web

Merci e  ciel pour m'avoir fait de©couvrir cette petite merveille. Ce billet n'a pas pour but d'eªtre complet: pour cela veuillez vous re©fe©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\n" "POT-Creation-Date: 2002-04-06 21:44-0500\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: gettext_example.php:12 msgid "une phrase" msgstr "sa traduction"

Il suffit de cre©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 cre©er un "mo". Cela se fait via l'utilitaire "msgfmt", e©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 e©crire "sa traduction".