Internationalisation des thèmes::partie 5::poedit::Les fichiers PO et MO
26 septembre 2006 par Marc Charlet
En partant des sources php modifiées, nous avons généré le fichier POT, le fichier catalogue des messages. Nous allons, dans ce billet, expliquer comment, au départ de ce fichier POT, générer le fichier PO, le fichier source des traductions, et ensuite le fichier MO, le fichier compilé de ces traductions. L'ensemble du travail s'effectuera en utilisant le programme poedit.
Installer le programme poedit
- poedit pour windows est disponible ici
- lancer le programme d'installation et accepter les valeurs par défaut.
poedit, première utilisation, mode d'emploi
-
lancez le programme poedit1

-
entrez les renseignements nécessaires au projet2

-
poedit demande immédiatement de nommer et de sauvegarder le fichier po

-
poedit ouvre alors l'écran d'édition reprenant l'ensemble des messages sources en anglais avec leurs équivalents3 traduits dans la langue de votre choix

(i)faites glisser la séparation verticale dans la fenêtre d'édition à l'aide de la souris
-
sauvegardez vos premières traductions en cliquant sur l'icône du menu
les traductions sont maintenant reprises à la fin de la liste des messages

-
Quittez poedit et vérifier que les fichiers greenbridei.po et greenbridge.mo ont bien été générés

(i)C'est en quittant le programme la première fois que le fichier MO est généré4
Mise en place des traductions dans l'environnement test
A partir de maintenant, nous allons travailler 'en direct' sur nos fichiers dans notre environnement de test Apache/MySQL/PHP. Toutes nos modifications et adaptations se feront 'en temps réel' et nous pourrons de cette façon visualiser immédiatement le résultat de notre travail.
-
Il faut copier l'ensemble des fichiers que nous avons transformés dans l'environnement de test, soit au minimum
- le fichier index.php
- le fichier greenbridgei.pot
- le fichier greenbridgei.po
- renommez greenbridgei.po en fr_FR.po
- ouvrez fr_FR.po avec poedit et sauvegardez immédiatement le fichier et quittez poedit
Premiers tests et premiers résultats
Si vous affichez votre site maintenant, vous ne verrez pas encore apparaître vos premières traductions.;(

Pour que le moteur wordpress tiennent compte de nos traduction, il faut déclarer l'utilisation de notre environnement de traduction $textdomain dans chacunes des pages à afficher. Pour ce faire , la méthode la plus simple est de faire cette déclaration dans le fichier source qui est inclu dans l'affichage de chaque page: le fichier header.php.
modifiez header.php
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<?php require_once get_template_directory()."/gbfunctions.php"; ?>
-
<html xmlns="http://www.w3.org/1999/xhtml">
et insérer la déclaration à la toute première ligne comme ceci:
-
<?php load_theme_textdomain('GreenBridge');?>
-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
<?php require_once get_template_directory()."/gbfunctions.php"; ?>
-
<html xmlns="http://www.w3.org/1999/xhtml">
Pour plus de sûreté, insérez également la déclaration au début du fichier functions.php comme ceci:
-
<?php
-
load_theme_textdomain('GreenBridge');
Si vous faites une ré-actualisation de l'affichage de votre première page (index.php) vous obtiendrez ceci::d

Nous pouvons vérifier que la date est au format français et que le [by] a bien été traduit en [par], conformément au contenu de notre fichier fr_FR.po. On vérifie également que le survol du titre d'un billet par la souris provoque bien l'affichage du message traduit [Lien permanent vers] nom du billet.
La traduction de notre thème va consister ,pour l'essentiel, en une série de cycles interactifs de:
- modifications de la traduction dans l'éditeur poedit
- sauvegarde des modifications
- ré-actualisation de l'affichage du site et visualisation du résultat
Nous verrons dans l'avant-dernier billet de cette série, comment mettre en place un environnement et une méthode pratique de travail qui vont nous permettre de mener à bien un projet de traduction complet de n'importe quel thème.
Tags: gettext, guide-débutant, mo, po, pot, thème, Traductions, utilitaire, Web, Wordpress
19 réponses à “Internationalisation des thèmes::partie 5::poedit::Les fichiers PO et MO”

Je travaille sous windows xp avec un serveur local WAMP 5, (php5.. avec extension php_gettext activée).
Après toutes les étapes (scrupulusement suivies à priori) aucune traduction n’apparaît après actualisation ou fermeture/réouverture.
J’ai refait le parcours à 2 reprises pour un résultat identique.
Auriez-vous une piste?
Problème résolu. Avec mes excuses. Une étape omise : renommer en fr_FR.po…
heureux que tu aies trouvé…
Si tu as d’autres questions n’hésite pas.
bonjour bonsoir.
Sous poedit j’ai une erreur de type
msgfmt : 1 fatal error
(invalid control sequence) ???
si quelqu’un a une idée !
ps : quand je regarde mon .po, toutes les traductions sont bien dedans … ???
bonjour Arena,
j’ai déjà rencontré ce type de situation :s
si peoedit donne un message d’erreur…c’est qu’il y a une erreur ;(
Dans ses messages d’erreur, poedit donne le numéro de la ligne incriminée. As-tu bien analysé la syntaxe de la ligne en question?
Peux-tu nous l’envoyer?
(juste pour info)
Dans le plugin instantupgrade (version 0.2) par exemple, la ligne 75 du fichier pot comprenait plusieurs paires de guillements et un point virgule terminal
msgid “… work folder.</p>”, “iu”);
ce qui générait 3 messages d’erreur dans poedit
…\Temp\poeE1.tmp\ref.pot:75: missing `msgstr’ section
…\Temp\poeE1.tmp\ref.pot:75:88: parse error
…\Temp\poeE1.tmp\ref.pot:76: end-of-line within string
msgmerge: found 3 fatal errors
la suppression de ,”iu”); a remis tout en ordre !
Merci de vos réponses. J’ai réussi à contourner le problème.
Il s’agit bien de caractères ou séquence de caractères non supportés par poEdit.
Bonjour, j’ai l’impression que dans cet article vous demarrez d’un fichier tout fait au depart mais avez vous utilisé la le parser php pour detecter dans les differents fichiers .php du repertoire specifie les occurence de gettext(’text’) ou _(’text’).
Je ne parviens pas a faire detecter mes fichiers php, j’utilise la version 1.3.7 de poedit sous win xp .
A un certain endroit dans poedit il est inscrit chemin base de donnee. A quoi correspond t’il?
Avez vous des infos a ce sujet?
bonjour,
désolé pour le délais dans la réponse mais j’ai été fort peu disponible cette semaine (boulot-boulot).
Ceci étant dit, je ne comprends pas bien ta question: le fichier de départ pour poedit est le fichier POT que tu as constitué à l’étape précédente (internationalisation des themes partie4)
Ce fichier est lui-même le résultat du travail sur les sources php de ton thème, sources que tu as modifiées tout au long de cette série d’articles.
PS: pour certains thèmes et par exemple pour wp lui-même, tu peux trouver les fichiers POT sur le net…
Effectivement, je n’avais pas vu le reste. C’est plus clair en voyant la page précedente.
Salut à tous,
Dites, j’ai un petit soucis que je n’arrive pas à régler. Je viens de traduire un plugin. Ok pour toutes les étapes. Excepté celle qui permette de charger la langue. Je ne m’en sors pas.
Il y a une petite différence je pense entre un plugin et un thème, je ne pense pas qu’il faille rajouter de code dans le fichier principal .php. je me trompe ?
Est ce que quelqu’un pourrait regarder et me dire ce qui cloche ?
http://mondesauvage.free.fr/share/acronyms.zip
Merci d’avance !
la réponse se trouve probablement dans l’article sur les plugins…
ohhhhhh merci. j’avais pas vu cet article
Je vais lire tout ça.
Désolé du dérangement !
Nan, ben finalmenet, ca ne m’avance pas plus… j’arrive pas à faire charger le fichier de langue…
Résolu. Il faut en plus déclarer :
$currentLocale = get_locale();
if(!empty($currentLocale))
{
$moFile = dirname(FILE) . “/nom_du_plugin-” . $currentLocale . “.mo”;
if(@file_exists($moFile) && is_readable($moFile)) load_textdomain(’nom_du_plugin’, $moFile);
}
Bonjour, merci beaucoup pour ce tuto qui m’éclaire beaucoup sur ce domaine que je ne maitrise pas du tout…
Je me suis lancé dans la traduction d’un thème en souhaitant tester dans un premier temps le bon fonctionnement d’une page avant d’aller plus loin…
J’arrive à générer le fichier .pot (bien que je n’ai aucun message de confirmation sous DOS…)
mais, quand je charge ce fichier sous Poedit, il me dit que ce n’est pas un fichier POT valide…
Des idées ?…
La structure ressemble pourtant en tous points à ton fichier…
Question stupide qui n’a peut être rien à voir :
Faut-il absolument que j’insère les variables partout (sidebar, header, etc.) pour que cela fonctionne ?…
NB : Je suis sous Vista, et je travail en local avec Wamp5
Merci d’avance pour ta patience !
Je viens de refaire entièrement ton tuto avec tes fichiers et j’ai la même erreur…humm…
j’ai télécharger la dernière version de PoEdit et ça fonctionne
je suis ravi que cela fonctionne et je te souhaite bonne continuation.