gettext
L’utilisation de gettext est certainement la façon la plus sure de traduire un site.
Nous allons voir comment l’installer et l’utiliser en toute simplicité.
Fonctionnement gettext
Pour pouvoir appliquer des traductions avec gettext on va avoir besoin de deux types de fichiers :
- .po : C’est le fichier où l’on va entrer les traductions. Ce fichier est uniquement lisible par les humains.
- .mo : C’est le fichier compilé du .po où son stockées les traductions. Ce fichier est uniquement lisible par php.

L’installation gettext
Pour l’installer sur votre serveur, il n’y a rien de plus simple. Il suffit d’entrer “apt-get install php-gettext” dans votre console linux (attention il faut être loguer en root), Et tout s’installe automatiquement.
L’organisation des traductions
Pour ne pas se perdre au milieu de tous les fichiers de traductions, nous allons créer un dossier par langue.

arborescence gettext
L’utilisation de gettext en php
Dans un premier temps vous devez retrouver votre fichier gettext.inc pour l’inclure
Il doit se situer normalement dans “/usr/share/php/php-gettext/”.
Nous allons créer notre premier fichier multilingue : bienvenue.php
//inclusion de la librairie gettext
require_once('/usr/share/php/php-gettext/gettext.inc');
$dir=setlocale(LC_ALL, 'fr_FR');
if($dir =='')
{
die("Erreur : la localisation n'est pas implémentée sur votre plate-forme ou la variable de localisation n'existe pas");
}
// Spécifie la localisation des tables de traduction
bindtextdomain("welcome", "./language");
// Choisit le domaine
textdomain("welcome");
// La traduction est cherché dans ./language/fr_FR/LC_MESSAGES/welcome.mo
// Affichage d'un message de test
echo gettext("hello")."</br>";
// Ou utilisation de l'alias _() pour gettext()
echo _("goodbye");
Maintenant il faut ouvrir votre page bienvenue.php.
Normalement vous devriez voir le message “hello” suivit de “goodbye”;
Ceci est normal, vu que gettext ne trouve pas la traduction, il affiche alors le mot non traduit.
création et compilation des fichiers de traductions
Tout d’abord nous allons créer notre fichier de traduction.
Dans votre console linux, positionnez-vous dans le dossier où ce situe votre fichier bienvenue.php
Une fois ceci fait, on lance la comande :
xgettext -kT_gettext -kT_ bienvenue.php
Le gettext va alors récupèrer les chaînes à traduire dans le code source bienvenue.php, il va génèrer automatiquement le fichier .po
Un fichier messages.po doit être créer dans la racine, nous allons le renommer welcome.po et le copier dans “languagefr_FRLC_MESSAGES”
Maintenant nous allons pouvoir éditer notre fichier et traduire les mots répertoriés(de la page bienvenue.php) par get text.
Pour qu’une traduction soit effectuée, il faut définir un identifiant de message : msgid et le texte attacher à celui-ci : msgtr.
pour nous nous allons mettre :
#: bienvenue.php:19 msgid "hello" msgstr "salut" #: bienvenue.php:20 msgid "goodbye" msgstr "aurevoir"
Pour compiler notre fichier welcome.po, il faut utiliser la commande msgfmt.
Il faut bien sur ce positionner dans le dossier ou est situé welcome.po, et taper “msgfmt welcome.po -o welcome.mo ”
Normalement vous devez voir apparaître votre fichier welcome.mo.
Voici ce que cela va donner au final sur notre arborecence :

arborescence gettext
Maintenant vous pouvez ouvrir votre page bienvenue.php
eh la ! Miracle on voit que la traduction se met en français


(4 votes, moyenne: 4,75 max : 5)
janvier 19th, 2009 at 10 h 57 min
Merci beaucoup pour ces informations sur gettext.