←back to Blog

Explications sur l’internationalisation de WordPress et créer un fichier PO avec Poedit

Vous avez repéré un thème ou un plugin internationalisé qui vous plait ?
Traduisez-le et partagez-le à la communautée !

( Si le thème ou plugin en question n’est pas internationalisé, consultez la partie 3 de l’excellent article de Marc Charlet. )

 

Télécharger et installer Poedit

Direction le site internet de l’outil : https://www.poedit.net/

Vous trouverez sur la page de téléchargement une version pour chaque plateforme (Windows, Mac OS et Linux).

Prenez la bonne version et installez-la ! ( pour windows: Next – I’accept – Next – Next- Next – Next – Install – Finish )

 

Précision sur le fonctionnement de l’internationalisation dans WordPress

WordPress permet dans son implémentation de délimiter les traductions dans des « domaines ». On peut faire l’analogie avec le découpage de la France en départements / régions.

Pour cela, les fonctions d’internationalisations disposent de plusieurs paramètres :

function __($text, $domain = ‘default’)

function _e($text, $domain = ‘default’)

Le premier paramètre ($text) correspond à la chaine de texte à traduire. Tandis que le deuxième ($domain) correspond au domaine de traduction. On peut d’ailleurs remarquer que si on n’utilise pas de deuxième paramètre, le domaine prend la valeur « default ». (le cas des chaines originales de WordPress)

Le fichier PO/MO présent dans le pack français traduit l’ensemble du domaine « default » de WordPress.

Exemple: Une chaine de texte du domaine « default » traduit par le pack français.

<?php _e(‘Anonymous’); ?>

Attention: N’étendez pas la traduction par défaut à d’autres plugins ou thèmes, au risque d’avoir de nombreux problème lors des mises à jour du pack français…

 

Vous l’aurez compris, il faut que votre thème ou plugin, dispose de son propre domaine de traduction pour toutes les chaines à traduire. Si ça n’est pas le cas, uniformiser le nom du domaine.

Exemple: Une chaine du plugin SimpleTagging, utilisant le domaine « simpletagging ».

<?php _e(‘Simple Tagging: Options’, ‘simpletagging’); ?>

Le principe est le même pour les thèmes et les plugins.

 

Nommage des fichiers de traduction (PO/MO)

Selon le cas, plugin ou thème, le nommage des fichiers de traduction est différent, explications !

Les thèmes

C’est le cas le plus simple, votre fichier de traduction doit juste être nommé dans le code de langue utilisé.

Exemple pour un WordPress français, il faudra juste nommé vos fichiers en fr_FR.po et fr_FR.mo et les placer dans le même dossier que votre thème.

Plus généralement, il faudra que vos fichiers soient nommer de la même façon que la constante « WPLANG » fixée dans le fichier wp-config.php

define (‘WPLANG’, ‘fr_FR’);

Les plugins

Cette fois-çi c’est un tout petit peu plus compliqué, votre fichier doit être nommé de la façon suivante : domaine – code langue .mo

Exemple pour le plugin SimpleTagging (rappel, le domaine de traduction est « simpletagging ») :

simpletagging-fr_FR.po

simpletagging-fr_FR.mo

 

Attention: Tout cela ne vaut que si vos plugins et thèmes sont bien développés… si cela ne fonctionne pas le plus simple est de contacter l’auteur pour savoir quelle est la spécificité. (il n’est pas rare de voir des dossiers « languages » dans les plugins, le cas échant déplacer vos fichiers de traduction dedans)

 

Créer un fichier PO et POT depuis les sources dans Poedit

L’ancienne méthode en ligne de commande est révolue ! (sauf cas spécifique)

Poedit vous permet de créer directement un fichier PO depuis les sources de votre plugin ou thème.
Mon exemple traitera d’un plugin, mais c’est le même principe pour les thèmes !

  1. Lancer Poedit
  2. Cliquer « Fichier – Nouveau catologue »
  3. Une fenêtre configuration apparait
    1. Compléter l’onglet « Info projet »
      Poedit-InfoProjet
    2. Compléter l’onglet « Chemins »
      1. Ajouter un chemin grâce au bouton : Pedit-Ajoutchemin
      2. Copier/coller le chemin de votre projet à l’aide de la barre d’adresse ou saisissez-la manuellement (cliquer pour agrandir)
        Poedit-Adresse
        Peoedit-OngletAdresse
    3. Compléter l’onglet « Mots clé »
      1. Ajouter un mot clé grâce au bouton: Pedit-Ajoutchemin
      2. Ajouter les mots clés : ‘__’, ‘_e’ et ‘_c’
      3. Résultat à obtenir:
        Poedit-Motscles
    4. Appuyer sur Ok
  4. Enregistrer le fichier avec comme nom, le domaine de votre plugin (exemple: exemple.po)
  5. Si tout se déroule bien, Poedit vous affiche une fenêtre avec les chaines ajoutées et éventuellement supprimées.
  6. Ne commencez pas tout de suite la traduction.
  7. Enregistrer le fichier et fermer Poedit.
  8. Dupliquer le fichier exemple.po en exemple.pot
  9. Supprimer le fichier exemple.mo créé automatiquement lors de l’enregistrement
  10. Renommer le fichier exemple.po en exemple-fr_FR.po
  11. Vous pouvez alors éditer ce fichier avec Poedit et réaliser la traduction française
  12. Le fichier POT permettra à d’autres personnes d’éventuellement traduire votre thème/plugin sans s’embêter à générer un fichier PO depuis les sources.

 

Mise à jour de votre traduction (POT)

Si vous effectuez des modifications dans les sources du plugins ou du thème:

  1. Il vous suffit de renommer le fichier exemple.pot en fichier exemple.po
  2. De le mettre à jour, pour cela:
    1. Menu « Catalogue » – « Mise à jour depuis les sources »
    2. Vous aurez un aperçu des ajouts et des suppressions
    3. Valider
    4. Enregistrer et fermer Poedit
  3. Renommer le fichier exemple.po en exemple.pot
  4. Supprimer le fichier exemple.mo créé automatiquement lors de l’enregistrement

Vous disposez alors d’un fichier POT à jour.

 

Mise à jour de votre traduction PO depuis un fichier POT

  1. Ouvrer votre traduction exemple-fr_FR.po avec Poedit
  2. Cliquer sur le sur menu « Catalogue – Mettre à jour depuis fichier POT »
  3. Sélectionner le fichier POT
  4. Valider les modifications
  5. Traduiser les nouvelles chaines
  6. Enregistrer !

Vous disposez d’un fichier de traduction à jour.

 

Bonne traduction ;)

15 réponses à “Explications sur l’internationalisation de WordPress et créer un fichier PO avec Poedit”

  1. Avatar de Sinklar
    Sinklar

    Le mois passé j’ai utilisé ce principe pour la production d’un site web d’entreprise comprenant plusieurs langues. C’est extrêmement pratique pour traduire tous les éléments customisés de menus et autres. Pas pour le contenu bien évidemment, ce n’est pas le but de la manoeuvre…

  2. Avatar de Masamune
    Masamune

    Enfin un tutoriel qui nous donne ce qu’on attend.
    En plus de cela, clair et concis, que du bonheur.

    Un grand merci pour ce travail bien fait ;).

  3. Avatar de Emmanuel
    Emmanuel

    Milles merci!

    15 jours que je galérais pour l’utilisation des fichiers PO/MO d’un thème Wootheme.. …et vous m’avez donné la réponse.. ….ils avaient préfixé le nom des fichiers du nom du thème du coup, ça ne marchait pas..

    merci encore

    Emmanuel

  4. Avatar de nikos
    nikos

    Alors je ne laisse pas souvent des msg sur les forums mais là merci BEAUCOUP pour ce tuto super clair !
    J’ai passé l’après midi a essayer de comprendre comment gettext fonctionné, aucun tuto sur le net n’était suffisamment complet ou commencé a dater … et en fait pas besoin de compiler quoi que ce soit .. :)
    Merci !

  5. Avatar de Samuel
    Samuel

    J’ai aussi pas mal galéré…

    Du PO au POT en supprimant MO, puis du PO au MO tout en conservant POT pour modifier PO qui deviendra MO, je dis chapeau !!

    Merci beaucoup :)

  6. Avatar de Igor
    Igor

    Bonjour,

    Je veux traduire un plugin qui s’appelle s2member… J’ai téléchargé le fichier .pot du s2member et sauvegardé dans un dossier local, J’ai téléchargé Poedit, j’ouvre mon fichier .pot, je configure, je fais la sauvegarde, je clique OK et rien ne se passe…

    Est-ce qu’il y a un problème avec la configuration ?

    Informations (sur votre image, dans votre logiciel, le nom de cette rubrique s’appelle Info Projet… pourquoi ?)
    =============================
    Nom et version du projet : c’est déjà donné – s2Member 111105
    Équipe de traduction : j’ai donné mon nom
    Adresse électronique : j’ai donné mon adresse e-mail
    Langue : j’ai choisi français (à la quelle je veux traduire le texte anglais)
    Pays : mon pays je suppose (France)
    Jeu de caractère : déjà donné UTF-8
    Jeu de caractère du code source : je suppose que c’est utf-8 (non?)
    Formes plurielles : j’ai écrit comme vous (nplurals=2; plural=n>1)

    Chemins
    =======
    Le chemin de quoi ? J’ai donné un chemin du dossier où mon fichier .pot se trouve (est-ce que c’est important?) : \\IGOLIV\Users\fnac\Documents\Sites\IL\wp-content\plugins\s2member\includes\translations

    Mots clés
    ========
    j’ai ajouté comme vous : 1e ligne __, 2e _e, 3e _c

    Puis, à la fenêtre « enregistrer sous » je donne un nom : s2member.po, je clique sur ENREGISTRER… et rien ne se passe… en bas, du logiciel c’est marqué :
    Traduit à 0%, 615 chaînes (0 approximatives, 0 marqueurs incorrects, 615 restant à traduire)

    Est-que vous avez une idée pourquoi ça ne fait rien… ?

    Merci et à bientôt,
    Igor

  7. Avatar de Bruno
    Bruno

    Bonjour,

    Merci pour cet article, mais je rencontre tout de même un problème. Il me trouve seulement 5 lignes à traduire sur tout un thème. Je pense que ça doit être à cause du _e nom mis. Mais je ne sais pas ou vraiement mettre le code sans provoquer ensuite des erreurs.

    Par exemple j’ai ceci entre balise h2 et dans une class nommé « pagetitle »>Archive for Archive for et pour F, Y dois je le mettre _e thetime(‘F, Y’)

    Merci pour vos conseils

  8. Avatar de Bruno
    Bruno

    Bonjour

    J’ai résolu moi même mes problèmes. Mais je pense qu’il manque juste une petite chose mais qui à son importance. Il faut bien que le dossier lang ou language soient appelé. Mais comment l’écrire mettre cette ligne ou dans le header, functions,

    Merci

  9. Avatar de soluware sàrl
    soluware sàrl

    Magnifique ! Génial! Formidable! Voilà des gens qui savent expliquer. Merci de tout coeur.
    PS : ne pas oublier que pour les plugins il faut souvent mettre les fichiers mo et po dans le dossier language du plugin lui-même.

  10. Avatar de soluware sàrl
    soluware sàrl

    Remarque supplémentaire :
    pour la traduction d’un modèle les fichiers doivent se nommer fr_FR.mo et fr_FR.po et se trouver dans le répertoire du modèle (par exemple pour les modèles RocketTheme) et ça marche !

  11. Avatar de Boyquotes
    Boyquotes

    Merci, clair et net, j’ai mieux compris la chaîne de traduction .pot, .po, .mo avec cet article.

  12. Avatar de summ3r
    summ3r

    Bonjour,

    Si vous êtes intéressés de traduire logiciels pour Internet, pour PC, pour mobiles ou tout autre type de logiciels, je vous recommandons chaleureusement le nouvel instrument numérique ”l10n” que mon équipe a récemment créé – et qui a toutes les chances de rendre vos activités de bureau bien plus faciles et rapides.

    https://poeditor.com/

    POEditor est intuitif, basé sur travail en collaboration. Il comprend de nombreuses fonctions qui puissent vous soutenir lors du processus de gestion de traductions, que vous pourriez découvrir sur notre page Internet.Vous pouvez importer depuis multiples types de fichiers de localisation (pot, po, xls, xlsx, strings, xml, resx, properties) ou se servir directement de notre REST API.
    N’hésitez pas de l’essayer et/ou le proposer aux développeurs ou, en général, a ceux qui en seraient intéressés.

  13. Avatar de Florent
    Florent

    On pourrait ajouter comment le faire vraiment fonctionner après. Ajouter ceci dans votre fichier de fonctions :
    // multilingue
    add_action( 'init', 'make_wpm_multilang' );
    function make_wpm_multilang() {
    load_plugin_textdomain('VOTRE_PLUGIN', false, dirname( plugin_basename( __FILE__ ) ).'/VOTRE_DOSSIER_LANGUES');
    }

    En remplaçant comme il se doit VOTRE_PLUGIN et VOTRE DOSSIER_LANGUES

    Cordialement

  14. Avatar de yvan colleter
    yvan colleter

    Bonjour,
    J’ai suivi à la lettre ce tutoriel et l’indication de Laurent,mais la traduction ne fonctionne pas. J’utilise Worpress et le thème Colorway. J’ai passé la journée dessus et la franchement je galère…
    Peut-être que ce thème pose un problème?
    j’ai testé d’autres thèmes, la traduction fonction sur les pages… et les fichiers monthemes-fr_FR.po et mo étaient déjà présents dans le dossier content/languages/theme
    Pourriez vous me dire si le thème colorway pose un problème?

    Yvan

  15. Avatar de mike Monexpertinfo.com
    mike Monexpertinfo.com

    super intéressant votre article ,je chercher cette solution depuis un moment