Créer un fichier de traduction .po sous WordPress

Mis à jour le :

Les thèmes et les plugins WordPress sont développés en anglais et doivent faire l’objet d’une traduction française pour être compréhensibles du plus grand nombre.

Ce tutoriel abordera 3 cas : quand un fichier .po existe déjà, quand il est absent alors même que le thème ou le plugin dispose de chaînes traduisibles, et quand le thème ou le plugin n’est pas prêt à être traduit.

Avant de vous lancer, vérifiez que la traduction n’existe pas déjà : pour les thèmes et les extensions du répertoire officiel, la communauté traduit les textes sur translate.wordpress.org, et WordPress installe automatiquement les traductions françaises dans le dossier wp-content/languages. Vous pouvez aussi les récupérer sans attendre avec le bouton Mettre à jour les traductions de l’écran Tableau de bord > Mises à jour. Si la traduction y est incomplète, y contribuer profitera à tous les utilisateurs.

Écran Tableau de bord > Mises à jour de WordPress 7.1.2 en français : version actuelle 7.1.2 avec mises à jour automatiques de maintenance et de sécurité, message « Vous avez la dernière version de WordPress. », extensions et thèmes à jour, puis section Traductions avec le message « De nouvelles traductions sont disponibles. » et le bouton « Mettre à jour les traductions ».
La section Traductions de l’écran des mises à jour, avec le bouton Mettre à jour les traductions

Cas n°1 – Un fichier .po est présent

C’est le cas le plus courant et le plus simple. Le thème ou l’extension dispose d’un fichier .po généralement situé dans un sous-dossier /languages ou /lang, parfois à la racine du dossier. Les traductions installées depuis translate.wordpress.org se trouvent, elles, dans wp-content/languages/plugins ou wp-content/languages/themes : un fichier .po, un fichier .mo, un fichier .l10n.php et parfois des fichiers .json pour les textes affichés en JavaScript. Celles de WordPress lui-même sont rangées à la racine de wp-content/languages (fr_FR.po, admin-fr_FR.po…).

Capture d'écran - Présence d'un fichier .mo / .po
Poedit est LE logiciel de traduction .po qui générera vos .mo

Pour procéder à la traduction, éditez ce catalogue de chaînes de traduction à l’aide de Poedit. Ce logiciel, disponible pour Windows, macOS et Linux et gratuit dans sa version de base, génère à chaque enregistrement le fichier compilé .mo qui sert à afficher les textes traduits sur votre site.

Pour en savoir plus, reportez-vous au tutoriel dédié à Poedit.

Vous préférez traduire sans quitter l’administration ? L’extension Loco Translate intègre un éditeur de traduction à WordPress. Dans Loco Translate > Extensions (ou Thèmes), choisissez l’élément à traduire, puis Nouvelle langue ; à l’étape Choisissez un emplacement, sélectionnez Personnalisé. Vos fichiers sont alors enregistrés dans wp-content/languages/loco, à l’abri des mises à jour, et Loco Translate les charge en priorité tant qu’il reste activé. À chaque enregistrement, il génère aussi les fichiers .mo et .l10n.php.

Il est important de nommer correctement vos fichiers .po / .mo, sinon impossible de faire fonctionner la traduction. Pour une extension, le nom associe son domaine de traduction, indiqué par l’en-tête Text Domain de son fichier principal, et le code de la langue : wpchannel-fr_FR.po et wpchannel-fr_FR.mo pour une extension dont le domaine est wpchannel. Dans le dossier d’un thème, le code de la langue suffit : fr_FR.po et fr_FR.mo. Dans wp-content/languages/themes, en revanche, le domaine du thème revient en tête, par exemple twentytwentyfive-fr_FR.mo.

Attention à l’ordre de chargement : WordPress cherche d’abord dans wp-content/languages/plugins (ou themes), puis seulement dans le dossier de l’extension ou du thème. Si une traduction officielle y est installée, vos fichiers placés dans le dossier de l’extension sont donc ignorés. Depuis WordPress 6.5, un fichier .l10n.php est en outre chargé à la place du .mo du même nom : après avoir corrigé un .po, régénérez ce fichier avec la commande wp i18n make-php présentée plus bas, ou supprimez-le, sinon vos corrections n’apparaîtront pas.

Enfin, les fichiers rangés dans le dossier d’une extension disparaissent à chaque mise à jour de celle-ci, et ceux de wp-content/languages peuvent être remplacés lors d’une mise à jour des traductions. Pour corriger durablement la traduction d’une extension du répertoire officiel, je vous conseille donc l’emplacement personnalisé de Loco Translate.

Cas n°2 – Aucun fichier .po existant

Ce cas est le plus complexe car il faut d’abord extraire du code les chaînes à traduire. Dans cette situation, il n’existe aucun fichier de traduction pré-configuré mais le thème ou le plugin est annoncé comme étant prêt à traduire.

Vérifiez d’abord la présence d’un fichier .pot, souvent dans le sous-dossier /languages : ce modèle contient toutes les chaînes à traduire et sert à créer un .po. S’il existe, passez directement à l’étape n°3.

Étape n°1 – Récupération des sources de traduction

Rapatriez dans un premier temps le dossier de votre thème ou du plugin à traduire sur votre bureau. Ce sera plus simple par la suite.

Étape n°2 – Création du modèle .pot

Il faut savoir qu’une chaine de traduction est facilement identifiable dans le code PHP d’un thème ou d’un plugin WordPress. En effet, elle est entourée d’une fonction de traduction comme __(), _e() ou leurs variantes sécurisées esc_html__() et esc_html_e(), comme dans cet exemple :

<h1><?php esc_html_e( 'Hello World', 'wpchannel' ); ?></h1>
<h1><?php echo esc_html__( 'Hello World', 'wpchannel' ); ?></h1>
<?php
$wpc_count = (int) get_comments_number();
/* translators: %d: number of comments. */
printf( esc_html( _n( '%d comment', '%d comments', $wpc_count, 'wpchannel' ) ), $wpc_count );

La fonction est formée d’une part de la chaine à traduire et d’autres part du domaine du thème ou du plugin. Ce domaine permet de regrouper les chaines issus d’un même projet – utilisé notamment par des plugins comme WPML qui gère les sites multilingues.

Dans la première ligne, esc_html_e() ajoute automatiquement le echo et affiche donc la traduction. La seconde, avec esc_html__(), ne le fait pas. Ces variantes échappent le texte traduit : préférez-les à _e() et __(), qui afficheraient tel quel le code HTML d’une traduction malveillante. Enfin, _n() choisit la forme du singulier ou du pluriel selon le nombre, et le commentaire translators: guide les traducteurs.

Pour aller plus loin et comprendre comment gérer les variables dans les chaînes de traduction, reportez-vous au guide d’internationalisation des extensions WordPress (en anglais). Vous y apprendrez que WordPress s’appuie sur les outils et le format Gettext, à travers ses propres fonctions de traduction.

Pour extraire toutes ces chaînes, la méthode la plus fiable passe par WP-CLI, l’interface en ligne de commande de WordPress. Placez-vous dans le dossier du thème ou de l’extension, puis lancez :

wp i18n make-pot . languages/wpchannel.pot

La commande reconnaît toutes les fonctions de traduction de WordPress, y compris dans les fichiers JavaScript et block.json, reprend les commentaires destinés aux traducteurs et lit le domaine dans l’en-tête Text Domain. Elle fonctionne même sans installation de WordPress, par exemple sur la copie de votre bureau. Sans ligne de commande, Loco Translate propose un bouton Créer un modèle, et la version Pro de Poedit sait analyser un thème ou une extension WordPress.

Étape n°3 – Création du fichier .po

Lancez Poedit puis faites Fichier > Nouveau à partir d’un fichier POT/PO…, sélectionnez le fichier .pot et choisissez le français de France (code fr_FR) : Poedit applique automatiquement les formes plurielles du français (nplurals=2; plural=(n > 1);).

Bingo ! Toutes les traductions sont apparues… ou du moins les chaînes à traduire car maintenant c’est à vous de travailler.

Une fois la traduction terminée, enregistrez le fichier. Poedit propose le nom fr_FR.po, qui convient pour un thème ; pour une extension, renommez-le en wpchannel-fr_FR.po, avec le domaine de l’extension. Poedit crée le fichier .mo en même temps.

Et n’oubliez pas de transférer les fichiers .po et .mo à l’aide d’un client FTP dans le sous-dossier /languages du thème ou de l’extension concerné, ou dans wp-content/languages/plugins (ou themes), en respectant les règles de nommage vues au cas n°1.

WP-CLI sait aussi produire ces fichiers : make-mo crée les .mo, make-php les .l10n.php que WordPress charge en priorité depuis sa version 6.5, et make-json les fichiers .json des textes affichés en JavaScript, par exemple dans l’éditeur de blocs. L’option --no-purge conserve ces textes dans le .po :

wp i18n make-mo languages
wp i18n make-php languages
wp i18n make-json languages --no-purge

À chaque nouvelle version du thème ou de l’extension, régénérez le .pot, puis mettez à jour votre .po avec Traduction > Mettre à jour depuis un fichier POT… dans Poedit, ou avec la commande wp i18n update-po languages/wpchannel.pot languages : les traductions existantes sont conservées et seules les nouvelles chaînes restent à traduire.

Cas n°3 – Le thème ou le plugin n’est pas translation-ready

C’est le cas le plus rare… premièrement, contactez le développeur pour qu’il fasse un effort ! Deuxièmement, si vous développez vous-même le thème ou l’extension, rendez-le prêt à traduire : entourez chaque texte d’une fonction de traduction, comme vu au cas n°2, déclarez le domaine dans l’en-tête du fichier principal (ou du style.css d’un thème) et indiquez à WordPress où se trouvent les traductions livrées avec le code :

<?php
/**
 * Plugin Name: My Plugin
 * Text Domain: wpchannel
 * Domain Path: /languages
 */

add_action( 'init', 'wpc_load_textdomain' );

/**
 * Registers the plugin's languages folder; WordPress loads the files just in time.
 */
function wpc_load_textdomain() {
	load_plugin_textdomain( 'wpchannel', false, dirname( plugin_basename( __FILE__ ) ) . '/languages' );
}

Pour un thème, l’équivalent est load_theme_textdomain( 'wpchannel', get_template_directory() . '/languages' ), appelé sur l’action after_setup_theme. Pour un thème ou une extension hébergés sur le répertoire officiel, cet appel est même superflu depuis WordPress 4.6 : les traductions de translate.wordpress.org sont chargées automatiquement. Depuis WordPress 6.7, ces fonctions se contentent d’ailleurs d’indiquer le dossier : les traductions sont chargées « juste à temps », à la première chaîne traduite.

Si une fonction de traduction s’exécute trop tôt, par exemple dès le chargement du fichier principal de l’extension, WordPress le signale en mode débogage (WP_DEBUG) par la notice « Le chargement de la traduction pour le domaine wpchannel a été déclenché trop tôt » (fonction _load_textdomain_just_in_time) : déplacez ce code sur l’action init ou plus tard.

Dans tous les cas, rappelez-vous d’une chose concernant la gestion des traductions : ne jamais effectuer une traduction directement dans le code, jamais !

Pour traduire les contenus eux-mêmes, lisez mon retour d’expérience sur Polylang.

Avatar de Aurélien Denis

Protégez votre site WordPress

Vos données sont précieuses,
ne prenez pas le risque de tout perdre.
Confiez-moi votre maintenance !

Ces articles devraient t’intéresser…

87 réponses

  1. Avatar de Yunicia
    Yunicia

    Merci beaucoup !

    Votre article m’a été d’un grand secours =)

  2. Avatar de Elise Bouvier
    Elise Bouvier

    Bonsoir !
    Cool c’est toujours actif 🙂
    Moi j’ai une question qui concerne les emails transactionnels de mes commandes woocommerce envoyés en automatique.
    J’ai des clients anglais / français et grecs et un woocommerce qui match en fonction de la géolocalisation.
    Il y a t il une solution pour que les emails soient envoyés traduits en fonction du pays du client ?
    (je suis vraiment désolée si ma question n’a rien à voir ici mais j’ai l’impression que je peux obtenir un début de réponse 😀 )
    Merci par avance !

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Bonjour, sauf à créer un site multilingue je ne vois pas comment faire cela… 🙂

  3. Avatar de melissa 57
    melissa 57

    Bonjour,

    je ne suis pas sûre que cette discussion soit toujours active mais je tente le coup! tout d’abord, merci pour cet article très intéressant.
    ‘C’est effectivement très simple mais malheureusement les traductions ne sont toujours pas visible sur mon site : j’ai bien suivi le tutoriel, les fichiers .po et .mo sont bien dans le fichier Language du plugin à traduire (Recipe cards) mais toujours rien.
    Sauriez-vous d’où ca peut venir ? je suis désolée j’imagine bien qu’on vous a posé cette question pluieurs fois en lisant les commentaires mais rien n’y fait je suis bloquée …!
    merci d’avance de votre aide

    Melissa

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Bonjour, cela peut être causé par pleins de choses. Essayez de passer par l’extension Loco Translate pour traduire vos extensions et thèmes pour vous faciliter la vie.

  4. Avatar de Olivier C
    Olivier C

    « Rapatriez dans un premier temps le dossier de votre thème ou du plugins à traduire sur votre bureau. Ce sera plus simple par la suite. » »

    Meu non. Il suffit de configurer ces lignes comme suit dans le fichier .po pour tout traduire à partir d’un chemin relatif :

    « X-Poedit-Basepath: .\n »
    « X-Poedit-SearchPath-0: .\n »
    « X-Poedit-SearchPath-1: ..\n »

  5. Avatar de 8pics
    8pics

    Bonjour Aurélien,

    Super blog, je le consulte régulièrement.

    J’ai une question sur les fichiers .po et PoEdit :

    Est ce qu’on peut mettre des variables dans le fichier de trad pour récupérer le nom de la catégorie parente sur laquelle s’affiche la traduction.
    Un exemple sera plus clair. Ce qui me dérange ce sont les titres des pages archives de wordpress :

    – par défaut on a : Category archives : « nom de la catégorie »
    – Si on se creuse un peu le crâne pour la traduction et qu’on enlève ce mot moche « archive » : Tous les articles de : nom de la catégorie
    – Mais ce que je voudrais, c’est parvenir à : « Nom de la catégorie parente » (en variable dans le fichier PO) : Tous les articles de : « nom de la catégorie actuelle » (qui est une catégorie enfant du coup et qui s’affiche toujours par défaut car c’est comme ça que sont fait la plupart des thèmes.)

    Je n’ai pas envi d’aller modifier le thème et de m’embêter avec les futures mises à jour pour un si petit détail ou d’utiliser un thème enfant pour UNE traduction du coup j’ai eu cette idée mais je ne sais pas si c’est possible, et je ne trouve pas d’information la dessus.

    Si tu as la réponse je te lirais avec plaisir 🙂

    Merci

    Romain

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Merci d’apprécier WordPress Channel ! 😎

      Pour répondre à ta question, il te faut modifier ton thème en créant des chaines de traduction avec des variables. Ce n’est pas très compliqué mais c’est le passage obligé. Ensuite, dans ton PO tu pourras traduire des variables qui peuvent prendre la forme d’un %s ou %d par exemple. Plus d’infos sur : https://codex.wordpress.org/I18n_for_WordPress_Developers

  6. Avatar de bed
    bed

    merci pour ce super tutu kom d’hab!
    j’ai juste une question pour un wp installé en francais et un theme en arabe,qui ne s’affiche pas , comment faire please

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Pour un site multilingue, le recours à un plugin comme WPML est indispensable.

  7. Avatar de Noaneo
    Noaneo

    Bonjour,
    j’essaie de traduire cette phrase avec PoEdit
    You can change or remove MyThemeShop link from footer and use your own custom text. Tip: You can use our affiliate link and earn 60% commission on every sale.
    mais à chaque fois j’ai une erreur
    erreur: format specifications in ‘msgid’ and ‘msgstr’ for argument 1 are not the same
    Merci

  8. Avatar de Christelle
    Christelle

    Bonjour Aurélien,
    J’ai traduit un plugin (cas n° 2 pas de fichier po) et j’ai bien transféré mes fichiers .mo et .po mais il ne se passe rien ? Que puis-je faire ? Merci d’avance 🙂

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Le nom du plugin doit figurer dans le nom du .mo pour que cela fonctionne et le plugin doit supporter l’ajout de traductions.

      1. Avatar de Christelle
        Christelle

        Merci de ta réponse. Pour le nom c’était déjà fait. Comment savoir si le plugin supporte l’ajout de traduction ? Et si ce n’est pas le cas, que faire ? C’est un plugin payant ça m’embêterait de l’avoir acheter pour rien… J’ai essayé de contacter son concepteur mais 0 réponse…

        1. Avatar de Noaneo
          Noaneo

          Bonjour,
          vous avez regardé le code de votre plugin?
          Etait il comme dans l’exemple codé pour être traduit ?
          Vous avez mis les fichiers langues directement dans le plugin ou un sous dossier languages ?
          Avez vous mis aussi les fichiers en default.po et default.mo ?

  9. Avatar de isabelle
    isabelle

    Bonjour Aurélien, j’ai tenté maintes fois sans succès, là oui je suis désespérée 🙂 j’ai sahifa en local et lorsque je vais sur themeforest sahifa =>sahifa=>languages : j’ai un fichier tout blanc fr_FR.mo puis au-dessous un fichier avec un A à l’intérieur nommé sur le côté: Type gettext message catalog, lorsque j’ouvre ce fichier je tombe sur la page fr_FR.po.sahifa v1 – poedit et tous les textes originaux sans déjà traduits en français (donc ok), ensuite j’ai fais fichier enregister sous fr_FR.po soit Fr_FR et à chaque fois il me dit qu’il existe déjà.
    si vous pouvez me venir en aide, je vous remercie à l’avance, car ce thème sahifa serait bien sympathique en français pour moi travailler mes dossiers que j’importe d’overblog
    Cordialement
    Isa

  10. Avatar de Dixit
    Dixit

    Un tuto très clair sur les fichiers .po.Il est vrai que c’est assez fastidieux à faire, mais on est assez content quand on a terminé et qu’on peut mettre en ligne sa traduction proprement !

  11. Avatar de Monasoleil
    Monasoleil

    Bonjuour Aurélien,

    Merci beaucoup pour votre tutoriel, il m’a beaucoup aidé. Je viens de créer un nouveau blog car je veux partager ma passion http://www.montarot.ca

  12. Avatar de Mickael
    Mickael

    J’ai bien suivi ce super tuto mais malheureusement la traduction ne se fait pas. J’utilise le plugin qTranslate, peut être est ce que ça vient de la ?
    J’ai fait un thème perso dans lequel j’ai créer un répertoire languages. Dans functions.php j’ai :
    add_action(‘init’, ‘my_theme_setup’);
    function my_theme_setup(){
    load_theme_textdomain( ‘ot’, get_template_directory() . ‘/languages’ );
    }

    Lorque je passe en anglais, ma traduction ne se fait pas (en sachant que ma source est en français). Au secours !!!

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Difficile à dire sans accéder au code mais il est conseillé de coder les chaines dans votre thème en anglais pour éviter la gestion des accents notamment.

  13. Avatar de xav
    xav

    Bonjour,
    comment wp reconnait la langue des utilisateurs ?
    Parce que l’ip n’est pas toujours fiable, il y a les cookies et la langue par default du navigateur ?
    Merci

    1. Avatar de Aurélien Denis
      Aurélien Denis

      WordPress ne reconnaît pas la langue des utilisateurs. C’est le fichier de configuration wp-config.php qui la détermine. Ensuite, il faut passer par un plugin comme WPML pour faire un site multilingue aussi bien en back-office qu’en front-office.

  14. Avatar de Administrateur
    Administrateur

    Bonjour, merci pour le tuto que j’avais déjà expérimenté. Cette fois-ci j’ai un gros problème. J’ai récupéré le fichier en_US.po dans le dossier lang de mon thème comme d’habitude, mais quand je l’ouvre avec poedit, rien ne s’affiche ! Il n’y a rien dans la colonne de gauche..

    Une idée de comment je pourrais régler le problème ?

    Merci d’avance 😉

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Il faut générer le PO alors…

  15. Avatar de Philippe
    Philippe

    Bonjour, à partir du .pot fourni dans le thème d’un blog en cours, j’ai généré le fr_FR sans souci, à part qu’il manque des expressions à traduire. Comment les ajouter manuellement ? J’ai ajouté les « __ » et les « _e » dans les mot-clés, mais cela n’a rien changé. Egalement, je voudrais modifier une expression mal saisie : dans les pages, j’ai _e( ‘No search results found…’ mais dans PoEdit, j’ai « No search results found.. » (deux points au lieu de trois), ce qui fait que la version FR n’est pas traduite sur le blog. Que faire pour la modifier ?

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Je vais éditer l’article mais il faut aussi chercher les préfixes _x et _n. Si des expressions ne sont pas dedans, il faut faire mettre à jour le PO.

      1. Avatar de Philippe
        Philippe

        Merci Aurélien, j’ai ajouté les préfixes, Enregistrer, mais malgré la mise à jour du catalogue depuis le fichier POT, on ne m’affiche aucune nouvelle chaîne à ajouter.

        1. Avatar de Aurélien Denis
          Aurélien Denis

          Je peux pas vous dire comme cela, c’est difficile…

  16. Avatar de lafeegraphik
    lafeegraphik

    j’ai utilisé l’éditeur « poedit » (http://www.poedit.net/) pour les traductions. Par contre lorsque j’écrasais les fichiers mo et po, cela ne fonctionnait pas. J’ai du les supprimer sur le serveur puis les placer à nouveau en vérifiant bien que l’extension était correct (pas d’espace avant le point…). J’espère que ça marchera pour vous !

  17. Avatar de Lucie
    Lucie

    Merci pour vos tutos toujours très qualitatifs !

    Problématiques concernant traduction :

    1- J’ai traduit le fichier .po. Cela a bien fonctionné pour les mots concernant le formulaire de contact mais pas pour le reste (!)

    2- Les espaces ne sont pas pris en compte – Du coup je reçois par exemple par email Merciprenom (càd Thank you a bien été traduit par « Merci » mais l’espace ajouté après « Merci » est inexistant, c tout collé) – idem pour les autres champs. Si l’espace n’est pas en premier ou dernier ça fonctionne en revanche.

    Auriez-vous des suggestions ?

    1. Avatar de Lucie
      Lucie

      J’ai enfin résolu ces 2 points. Mon fichier .po n’était pas pris en compte. Il a fallut que je supprime d’abord le .po côté hébergeur avant de basculer le .po modifié localement + rebasculer le .mo et tout a été pris en compte, extra !

      1. Avatar de Aurélien Denis
        Aurélien Denis

        OK problème résolu alors ? 🙂

        1. Avatar de Lucie
          Lucie

          Oui parfaitement et même si j’ai buggé sur une partie du .po votre tuto m’a permis de découvrir ce système de traduction m’évitant de nombreuses heures « d’épluchage » de code php, merci bcp !

          1. Avatar de Emmanuelle
            Emmanuelle

            Bonjour,

            Nous utilisons « Easy digital download » et « PDF Invoice ». Nous avons traduis les fichiers .mo et .po ce que nous voulions pour que cela soit en français mais la traduction ne s’affiche pas… D’où le problème peut-il provenir ?

            Merci,
            Emmanuelle

          2. Avatar de Aurélien Denis
            Aurélien Denis

            Sûrement une question de nommage des fichiers de traduction ou d’emplacements. Généralement, les auteurs de plugins livrent des informations à ce sujet… ou alors il faut les contacter.

  18. Avatar de laurence
    laurence

    Génial ce post ! je devais traduire une partie d’un thème pour un client et du coup cela c’est fait très facilement. ça faisait 2 heures que je galérai avec des extensions inefficaces.

  19. Avatar de Jean-Pierre Marcé
    Jean-Pierre Marcé

    Bonjour, j’ai essayé de traduire un petit plugin « Simple Contact Form Revisited widget » mais il n’y pas de répertoire lang ou language. J’ai créé les fichiers fr_FR.mo et .po avec poedit et les ai mis à la racine du plugin. Mais cela ne traduit rien. Je suppose que ce plugin n’est pas prêt pour être traduit. Comment le savoir?

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Si vous êtes parvenu à faire détecter des chaînes à traduire par Poedit, il doit y avoir un moyen de les faire prendre en charge par le plugin. Cela dit, il commence à dater et le mieux serait de prendre contact avec son auteur. 😉

      1. Avatar de Jean-Pierre Marcé
        Jean-Pierre Marcé

        Merci de votre réponse. Les chaines sont détectées, pas toutes, par _e et __

        Je cherchais un formulaire de contact simple qu’on puisse mettre dans les widgets de façon à ce qu’il apparaisse sur toutes les pages. Pour le moment j’ai traduit en « dur » dans les routines php bien je sache que cela ne devrait pas se faire (retraité maintenant, j’ai fait du développement de logiciel pendant toute ma carrière…). je vais chercher une autre solution.

        Je suis déçu de rencontrer problème sur problème avec les extensions que je tente d’utiliser et de devoir régulièrement contacter les auteurs.

        1. Avatar de Aurélien Denis
          Aurélien Denis

          Avez-vous testé Contact Form 7 ? Le shortcode (bout de code entre crochet) fonctionne dans n’importe quel widget texte de WordPress. 😉

          1. Avatar de Jean-Pierre Marcé
            Jean-Pierre Marcé

            Merci, oui je connais Contact Form 7 que j’utilise par ailleurs. Merci de votre suggesstion de recopier le shortcode dans un widget.

  20. Avatar de Laurent Duquerroy
    Laurent Duquerroy

    Pour tester Poedit, j’ai décidé de traduire le plugin Milestone bien connu sur WordPress.com. Il est au téléchargement pour un WP auto-hébergé, mais disponible en allemand. Après avoir ouvert le fichier .po, des chaînes semblent « verrouillées » dans un fichier .po. Impossible donc de les traduire. Comble de malheur, certaines chaînes sont des expressions qui apparaissent en front.
    Bref. Quelqu’un saurait-il me dire comment déverrouiller ces chaînes ? Après avoir fouillé dans les paramètres de poedit et sur le web, je n’est encore rien trouvé.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Les chaînes ne sont pas verrouillées. Il faut veiller à bien configurer le catalogue pour les formes plurielles (c’est juste une question de configuration). Plus d’infos ici : http://wordpress.stackexchange.com/questions/33312/how-to-translate-plural-forms-for-themes-plugins-with-poedit

      1. Avatar de Laurent
        Laurent

        Merci Aurélien pour ce coup de pouce et ce lien.

  21. Avatar de Office
    Office

    Bonjour,

    J’ai bien effectué le tuto, par contre sur mon plugin j’ai un problème de traduction partielle. J’ai bien traduit avec Poiedit les lignes de codes correspondent bien aux fichiers sources, mais j’ai quand même des traductions qui ne passe pas. Comment résoudre cela ?

  22. Avatar de marwa0001
    marwa0001

    bonjour , svp j’ai besoin de savoir comment je peux faire un site avec la langue fr/an ,je veux quand j’accède a mon site (front)je trouve un lien (fr/an) et quand je clique « An » tout le site change en anglais (page ,menu ,contenu).
    pour le moment je travail sur wordpress version 3.5.1 fr (le fichier langages est vide).
    j’ai essayé avec des plugin mais ca fonctionne pas .
    Est ce que je dois avoir un autre dossier worpdress (version anglais ) sous ma racine pour que sa marche ??

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Le plugin multilingue que je recommande : WPML. Payant mais vraiment pas cher !

  23. Avatar de Mélanie
    Mélanie

    Bonjour,

    Je suis confrontée au même pb avec le thème REASON, je ne parviens à traduire le terme « Category » en français et n’ai pas très bien compris la réponse d’Aurélien.
    Puis-je avoir plus d’explications ?

    D’avance merci.

    1. Avatar de Pierre
      Pierre

      Bonjour,

      Je n’ai pas encore approfondi la question, désolé. Mais si je sais ce qu’est un fichier .po, je ne sais pas comment « vérifier que la chaine est internationalisée dans le thème. » C’est vrai que sa réponse n’est guère limpide pour un non-expert de WP… Le premier qui trouve la solution informe l’autre !
      Bonne chance …

      1. Avatar de Mélanie
        Mélanie

        Très bien.
        J’ai cherché un peu, mais je débute sur wordpress.
        Je suis évidemment preneuse d’une solution !
        Avis aux experts wordpress !!!

    2. Avatar de Aurélien Denis
      Aurélien Denis

      Pas de panique, ce n’est pas très compliqué… il faut suivre le cas n°2 à la lettre pour mettre à jour le fichier de traduction à partir du thème original. Recherchez ensuite les termes relatifs à « category ». Il y est forcément dans 99%. 😉

      1. Avatar de Pierre
        Pierre

        Bonsoir Aurélien,
        Pas de panique, c’est sûr. Mais c’est bizarre : mon thème est traduit, j’ai inspecté son fichier de traduction .po (acheté sur wptrads.fr) et tout est traduit. Pourtant, c’est bien le terme anglais « Category » qui s’affiche…

        1. Avatar de Mélanie
          Mélanie

          Bonjour,
          J’ai trouvé la solution pour mon thème. Dans l’éditeur, « Modèle pour la page d’accueil », il suffit de remplacer :

          CODE NON FORMATE DONC INVISIBLE, DESOLE

          J’espère que ça marchera pour toi.
          Bon we

        2. Avatar de Pierre
          Pierre

          Effectivement, le code est invisible. Mais j’ai aussi trouvé la parade : modifier le fichier category.php.
          Merci !

  24. Avatar de Pierre
    Pierre

    Bonjour,
    Très intéressant cet article ; je n’y ai pourtant pas trouvé la réponse à mon problème : j’utilise bien sûr WP en français avec un thème (Ovid, de Themeforest) traduit lui aussi en français, mais pas moyen de remplacer le terme anglais Category qui apparaît sur mes pages (p.ex. ici http://www.ecolesrec.ch/category/es/espees/). Vous n’auriez pas une idée du problème ? D’avance merci !

    1. Avatar de Aurélien Denis
      Aurélien Denis

      2 solutions : soit le fichier PO est incomplet auquel il faut le mettre à jour par rapport à la source, soit il faut vérifier que la chaine est internationalisée dans le thème.

  25. Avatar de sebastien
    sebastien

    Excuse moi aurélien mais je pense que tu n’as pas compris ma question.
    Si le fichier.mo est dans le dossier wp-content/plugins/monplugin, directement dans ce dossier là, pas dans un dossier lang ou language, je dois mettre le path du dossier monplugin (path serveur) ?

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Il te faut créer la traduction sur ta machine personnelle et non directement sur le serveur car le .mo ne sera pas généré. Si tu opères en local, alors oui mais restez sur le bureau est plus simple et rapide.

  26. Avatar de sebastien
    sebastien

    concernant le chemi, tu peux en dire davantage ?
    Si mon fichier.mo est dans le dossier wp-content/plugins/monplugin je dois mettre le path du dossier monplugin, c’est ça ?

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Chaque plugin / thème fonctionne différemment. Certains disposeront d’un dossier /lang ou /languages, d’autre pas. Il faut voir avec l’auteur lorsqu’aucune information n’est proposée.

  27. Avatar de sebastien
    sebastien

    y’a un truc que j’arrive pas à faire avec poedit c’est enregistré un fichier .pot
    .po et .mo sans probleme mais pas le .pot
    comment on fait ?

  28. Avatar de Laurent
    Laurent

    Merci pour ce tutoriel tout à fait éducatif.
    Mais pourquoi ne faut-il « jamais effectuer une traduction directement dans le code, jamais ! »

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Car tu ne peux pas gérer plusieurs langues, que c’est compliqué si tu as besoin d’aller rechercher pour éditer une chaîne et un tas d’autres raisons que je n’ai pas en tête. 😉

      1. Avatar de Laurent
        Laurent

        Ces raisons sont logiques en effet. J’ai crains un instant que d’autres conséquences, plus technico-techniques, soient envisageables. Après avoir fait la traduction d’un thème dans le code, je vais pourvoir, grâce à ce tutoriel, mettre enfin mon thème à jour avec sa dernière version et faire la traduction en deux temps trois mouvements !
        Merci Aurélien pour cette somme de travail présentée dans ce site et dont tout le monde est bénéficiaire.

  29. Avatar de Fabrice COURT
    Fabrice COURT

    Merci de cet article Aurélien !

    A noter un site assez pratique pour traduire grossièrement un .po :
    http://littlesvr.ca/ostd/translatepot.php

  30. Avatar de jerome
    jerome

    ha oui effectivement le formulaire est dans le footer mais j’étais sur mon iphone et je ne l’ai pas vu…

  31. Avatar de Jérôme
    Jérôme

    Bonjour,
    Je ne savais ou envoyer ma suggestion (je n’ai pas vu de contact email sur le site…).

    Bref, serait il possible de faire un tutoriel complet (A à Z) sur la mise en ligne (transfert de local au serveur) de wp?
    Je m’explique, je suis en train de finir mon thème perso en local et je souhaite le mettre enfin en ligne, mais après une simple recherche Google (wordpress local en ligne) je m’aperçoit que beaucoup de gens galère avec la mise en ligne de leur wordpress.

    Dois je réinstaller un nouveau wordpress sur mon serveur ou y glisser tout mon dossier wordpress local en bourin?

    Je sais pas du tout comment faire et j’ai peur de perdre la configuration des bdd, plugins, menu, widgets…. je ne suis pas le seul dans ce cas apparemment.

    Merci
    ++

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Le formulaire de contact est dans le pied de page. 😉

      Sinon, oui c’est une bonne idée de tutoriel mais c’est compréhensible que beaucoup de monde galèrent sur une opération de ce niveau technique…

    2. Avatar de noaneo
      noaneo

      Bonjour,
      Mettre sur FTP, tout votre site local et dans la base de de donnée, la sauvegarde de votre site local puis comme si vous le déplacez d’un dossier, d’un serveur ou d’un nom de domaine, modifier l’url dans la base de donnée, tos les codes sont dans cet article
      http://olivierlabbe.com/2009/03/deplacer-wordpress-dun-dossier-serveur-ou-nom-de-domaine/
      les codes sont à mettre un par un dans l’onglet SQL.

  32. Avatar de Guy
    Guy

    @noaneo: c’est probalement le cas numéro 3: Le thème ou le plugin n’est pas translation-ready. D’autre part le répertoire language n’est pas nécessairement « language », c’est la fonction load_theme_textdomain (qui doit être présente pour que le thème soit traduisible, il existe le pendant pour les plugins) qui définit à la fois le répertoire des fichiers de traduction et le domaine de traduction.

    Mots clés: Mettre __ et _e est très insuffisant, WordPress nous fournit une dizaine de mots clés pour les traductions, il FAUT les mettre tous pour assurer une traduction de qualité: __, _e, _n, _x, _ex, _nx, esc_attr__, esc_attr_e, esc_attr_x, esc_html__, esc_html_e, esc_html_x, _n_noop, _nx_noop

    1. Avatar de noaneo
      noaneo

      oui le thème n’était pas fait pour la traduction, mais comme j’ai fait cela fonctionne parfaitement.
      Merci

  33. Avatar de noaneo
    noaneo

    merci pour ce tuto, j’ai créé un dossier language puis mis les fichiers en_EN.po (essayer default.po ) et en_EN.mo puis fr_FR.po et fr_FR.mo ,malgré toout le thème reste en anglais, pourquoi?
    site test : http://er.v.free.fr/

    Merci

    1. Avatar de noaneo
      noaneo

      il faut rajouter un code dans functions.php pour que la traduction soit prise en compte, sinon on n’a pas de fichier po. et .mo d’origine.

  34. Avatar de Guy
    Guy

    Pour des traductions directement dans l’interface d’administration, il existe aussi l’extension « codestyling localisation ».

    Pas forcément très ergonomique pour des centaines de termes à traduire mais très très pratique pour ajouter ou enrichir des traductions (on peut également visualiser l’emplacement des chaines dans les fichiers php)

  35. Avatar de Kim
    Kim

    POEdit, c’est tellement chiant, chez Wysija on a décidé de se mettre sur Transifex. Un genre de GlotPress, en mieux.

    https://www.transifex.com/projects/p/wysija/

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Merci de l’info même si je note que ce n’est pas gratuit. 🙂

      1. Avatar de Kim
        Kim

        C’est gratuit pour les projets open source! 🙂 Bref, pour ceux qui font des plugins comme nous, Transifex est comme un outil envoyé du ciel…

  36. Avatar de Grégoire Noyelle
    Grégoire Noyelle

    Merci Aurélien. Je recommande également ce bon tuto par Amaury

  37. Avatar de www.web-geek.fr
    www.web-geek.fr

    Très bon tuto, je ne savais même pas que c’était possible de créer un fichier de traduction chez WordPress, même pour un plugin.

    En tout cas ça à l’air plus facile à mettre en place que ce je pensais.

  38. Avatar de ScreenFeedFr
    ScreenFeedFr

    Salut.

    Pour les formes plurielles, ce ne serait pas plutôt nplurals=2; plural=(n>1) ?
    En tout cas c’est ce qui est indiqué dans la trad fr de WP.
    Et pour les mots clés, _n et _x sont assez courants aussi.

    A+
    Greg

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Oui les formes plurielles changent en fonction des pays. Pour en savoir plus, direction : http://translate.sourceforge.net/wiki/l10n/pluralforms

      OK pour les mots-clés additionnels.

      P.S : indiques « Greg » comme nom hein ! 😉

  39. Avatar de Wolforg
    Wolforg

    Excellent tuto, manque juste la gestion des historiques de traductions mais ça dégrossit déjà pas mal le job 😀

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Tu peux m’en dire plus toi qui gère des traductions WordPress au quotidien ? 🙂

      1. Avatar de Wolforg
        Wolforg

        Oui, bien sur.
        En fait PoEdit peut gérer un dictionnaire de traductions. Il suffit de créer un base de référence puis d’indiquer le répertoire ou les traductions sont stockées. Une fois que c’est fait, il faut à chaque nouvelle trad dire à PoEdit d’aller chercher à traduire automatiquement. Ca n’affranchit pas de la vérification de la trad mais ça traduit les termes les plus récurrents 😀

        1. Avatar de Aurélien Denis
          Aurélien Denis

          C’est donc à ça que sert cette fonction de traduction auto ?

          1. Avatar de Wolforg
            Wolforg

            Et ouais, comme quoi avec WP on en apprend tous les jours et c’est ça qui est bon 🙂

        2. Avatar de Grégoire Noyelle
          Grégoire Noyelle

          Super cette fonction. Merci Je vais tester. Et effectivement pour les termes récurrents, quel gain de temps