tfeserver: Blog de tfe

html, scripts et tout un tas de trucs...

site multilingue: gettext (version RSS)

publié le Tue, 12 Jun 2007 19:29:05 GMT, dans la categorie Web

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 à 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 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" cré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".

Nouveau commentaire

Pseudo:
Site:
Email:
AntiSpam (2+2=?):
Message:
Validation: