2007-06-12-ean
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".