Fils RSS pour les
Articles
Commentaires

poedit_shortcut.jpgEn 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
    poedit_first_screen.jpg

  • ouvrez un nouveau catalogue à partir d'un fichier POT
    peoedit_menu_pot.jpg  poedit_ouvrir_pot.jpg

  • entrez les renseignements nécessaires au projet2
    poedit_pot_config.jpg  poedit_pot_config2.jpg

  • poedit demande immédiatement de nommer et de sauvegarder le fichier po
    poedit_sauver_po1.jpg

  • 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
    poedit_edit_po_first.jpg  poedit_edit_po_second.jpg

(i)faites glisser la séparation verticale dans la fenêtre d'édition à l'aide de la souris

  • Entrez vos premières traductions
    poedit-traduc1.jpg  poedit-traduc2.jpg  poedit-traduc3.jpg  poedit-traduc4.jpg

  • 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
    poedit-po-sauver1.jpg  poedit-po-sauver2.jpg  
    poedit-po-sauver3.jpg

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

(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.;(

poedit-test0.jpg

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

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <?php require_once get_template_directory()."/gbfunctions.php"; ?>
  3. <html xmlns="http://www.w3.org/1999/xhtml">

et insérer la déclaration à la toute première ligne comme ceci:

  1. <?php load_theme_textdomain('GreenBridge');?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <?php require_once get_template_directory()."/gbfunctions.php"; ?>
  4. <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:

  1. <?php
  2. load_theme_textdomain('GreenBridge');
  3. if ( function_exists('register_sidebar') )

Si vous faites une ré-actualisation de l'affichage de votre première page (index.php) vous obtiendrez ceci::d

poedit-test1.jpg

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.


  1. double clic sur l'icône [retour]
  2. complétez toutes les cases [retour]
  3. vides dans ce premier écran [retour]
  4. valeurs par défaut dans les préférences de l'éditeur dans poedit [retour]

Tags: , , , , , , , , ,

19 réponses à “Internationalisation des thèmes::partie 5::poedit::Les fichiers PO et MO”

  1. le 13 jan 2007 à 9:56 Alain Rousseau

    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?

  2. le 13 jan 2007 à 10:08 Alain Rousseau

    Problème résolu. Avec mes excuses. Une étape omise : renommer en fr_FR.po…

  3. le 13 jan 2007 à 10:54 Marc Charlet

    heureux que tu aies trouvé… )
    Si tu as d’autres questions n’hésite pas.

  4. le 17 juin 2007 à 0:49 Arena

    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 … ???

  5. le 17 juin 2007 à 8:13 Marc Charlet

    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?

  6. le 17 juin 2007 à 9:47 Marc Charlet

    (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 !

  7. le 17 juin 2007 à 11:39 Arena

    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.

  8. le 23 oct 2007 à 3:00 sousou

    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?

  9. le 27 oct 2007 à 9:47 Marc Charlet

    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

  10. le 29 oct 2007 à 20:51 sousou

    Effectivement, je n’avais pas vu le reste. C’est plus clair en voyant la page précedente.

  11. le 21 nov 2007 à 21:38 Emmanuel

    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 !

  12. le 21 nov 2007 à 21:45 Marc Charlet

    la réponse se trouve probablement dans l’article sur les plugins

  13. le 21 nov 2007 à 22:01 Emmanuel

    ohhhhhh merci. j’avais pas vu cet article -)
    Je vais lire tout ça.
    Désolé du dérangement !

  14. le 21 nov 2007 à 22:10 Emmanuel

    Nan, ben finalmenet, ca ne m’avance pas plus… j’arrive pas à faire charger le fichier de langue…

  15. le 21 nov 2007 à 23:05 Emmanuel

    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);
    }

  16. le 28 nov 2007 à 3:47 Max

    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 !

  17. le 28 nov 2007 à 4:44 Max

    Je viens de refaire entièrement ton tuto avec tes fichiers et j’ai la même erreur…humm…

  18. le 29 nov 2007 à 17:11 Max

    j’ai télécharger la dernière version de PoEdit et ça fonctionne -)

  19. le 30 nov 2007 à 7:24 Marc Charlet

    je suis ravi que cela fonctionne et je te souhaite bonne continuation.