asset 1
asset 2
asset 3
asset 2
asset 21

WordPress : comment fonctionne la traduction ?

20 août 2025

J’ai écrit un tuto­riel sur la manière de tra­duire des exten­sions Word­Press. Mais peut-être, vou­lez-vous com­prendre com­ment fonc­tionne la tra­duc­tion dans ce CMS ? Je vais vous l’ex­pli­quer dans cet article et je vais en pro­fi­ter pour vous mon­trer qu’il existe diverses manières de tra­duire et quelle option choi­sir selon les cas.

Les fichiers .po et .mo dans WordPress. Qu’est-ce que c’est ?

Tra­duire un thème, une exten­sion ou l’in­ter­face de Word­Press repose sur deux types de fichiers : les .po et .mo. Ils sont uti­li­sés pour les traductions. 

  • .po = (Por­table Object). C’est le fichier texte lisible, où l’on écrit/édite les traductions.
  • .mo = (Machine Object). C’est ver­sion com­pi­lée et binaire du .po, lue par Word­Press en production.

Dans le fichier .po, on va trou­ver des msgid et des msg­str : le msgid est la chaîne ori­gi­nale et le msg­str est la chaîne traduite.

msgid "Read more"
msgstr "Lire la suite"

Il existe un troi­sième fichier, le .pot, soit le tem­plate, c’est-à-dire le modèle, qui com­porte uni­que­ment les chaînes ori­gi­nales et donc aucune tra­duc­tion. Il sert de base pour créer le .po pour chaque langue.

Où sont rangées les traductions ?

  • Les fichiers de tra­duc­tion du Cœur de Word­Press se trouvent dans : wp-content/languages
  • Les fichiers de tra­duc­tion du thème se trouvent dans : wp-content/languages/themes/
  • Les fichiers de tra­duc­tion des exten­sions se trouvent dans : wp-content/languages/plugins/
liste de tous les fichiers wordpress et emplacement fichiers traduction

Pour que Word­Press trouve la bonne tra­duc­tion, les thèmes et les exten­sions doivent uti­li­ser un text domain, autre­ment dit un iden­ti­fiant, et doivent suivre un nom­mage bien pré­cis pour que les tra­duc­tions s’af­fichent. Voi­ci le nom­mage utilisé :

<text-domain>-<locale>.po
et
<text-domain>-<locale>.mo
Ce qui donne par exemple : redirection-fr_FR.mo

Donc, on a :

  1. le text domain (exemple : redirection)
  2. la langue du site, la locale : fr_FR (Fran­çais de France, ici)
  3. le type de fichier : .mo

D’ailleurs, pour qu’une exten­sion ou un thème soit tra­dui­sible, la per­sonne qui a fait le déve­lop­pe­ment doit avoir pré­pa­ré le code pour cela. 

Les différentes manières de traduire une extension ou un thème WordPress

  1. Ins­tal­ler l’ex­ten­sion Loco Trans­late. Elle vous per­met de tra­duire vos chaînes direc­te­ment depuis le tableau de bord de votre site (donc sans pas­ser par le FTP). Les fichiers cités plus hauts, sont créés auto­ma­ti­que­ment et sto­ckés au bon endroit et elle gère les textes côté JavaS­cript.
    Cette solu­tion est utile pour tra­duire quelques chaînes en uti­li­sant votre propre voca­bu­laire, ou que ces chaînes ne sont pas encore tra­duites « offi­ciel­le­ment ». Donc en atten­dant vous uti­li­sez cette alter­na­tive.
    Ces chaînes ne seront tra­duites que sur votre site.
  2. Vous pou­vez uti­li­ser le logi­ciel Poe­dit qui existe en ver­sion gra­tuite et payante. Avec Poe­dit, vous ne tra­vaille­rez pas en ligne. Vous tra­vaille­rez direc­te­ment sur le fichier .po, le logi­ciel vous per­met­tra de faire la com­pi­la­tion pour géné­rer le fichier .mo. Vous devrez envoyer le .po et le .mo sur le site via FTP. Cette manière de faire est utile si vous avez pas mal de chaînes à tra­duire. Par exemple si vous avez déve­lop­pé votre propre exten­sion, ou si l’ex­ten­sion que vous vou­lez tra­duire n’est pas « i18n-rea­dy » (prêt pour l’internationalisation). C’est aus­si une façon d’é­vi­ter d’a­jou­ter une autre exten­sion à votre site WordPress.
  3. Enfin, la troi­sième façon de tra­duire vos thèmes est et exten­sions est de pas­ser par la pla­te­forme offi­cielle trans​late​.word​press​.org. Les tra­duc­tions seront alors publiques pour tous les thèmes et les exten­sions héber­gées sur Word​Press​.org. Après vali­da­tion, les sites reçoivent auto­ma­ti­que­ment les mises à jour. C’est une bonne manière de contri­buer à la com­mu­nau­té et de béné­fi­cier de packs de langue auto­ma­tiques.
interface loco translate
Inter­face Loco Translate
interface poedit
Inter­face PoEdit

Si rien ne se tra­duit, il peut y avoir plu­sieurs rai­sons à cela. 

  • Vous avez peut-être choi­si la mau­vaise langue sur votre site : par exemple, fr_CA (Cana­da) vs fr_FR (France)
  • Le fichier de trad est au mau­vais endroit.
  • Le Nom du fichier ne cor­res­pond pas au text domain.
  • Vous devez vider le Cache.
  • Le pro­jet n’a pas de text domain décla­ré ou mélange plu­sieurs text domains.
    Dans ces cas, n’hé­si­tez pas à contac­ter la per­sonne qui a déve­lop­pé le thème ou l’ex­ten­sion pour qu’il rende le pro­jet « i18n-rea­dy » (prêt pour l’internationalisation).

Problèmes pouvant être rencontrés

Si la tra­duc­tion est prise en compte pour cer­taines phrases seule­ment, il est pos­sible que :

  • Le texte d’origine a légè­re­ment chan­gé (ponc­tua­tion, espace), il suf­fit alors de mettre à jour les fichiers en les synchronisant.
  • La phrase vient de l’édi­teur de blocs (JS), pré­fé­rez dans ce cas Loco Trans­late, ou géné­rez les fichiers JS adéquats.

Vos fichiers .mo sont bien en place, mais les textes res­tent en anglais.

Le pro­jet n’a pas de text domain décla­ré ou mélange plu­sieurs text domains.
Dans ces cas, deman­dez au déve­lop­peur de rendre le pro­jet “i18n-rea­dy” (prêt pour l’internationalisation). Une fois ces bases en place, vos tra­duc­tions via Loco, Poe­dit ou la pla­te­forme offi­cielle s’appliqueront immé­dia­te­ment.

Pour résumer :

  • Le fichier.po est le fichier texte à éditer ; 
  • Le fichier.mo est la ver­sion lue par WordPress.
  • Pour corriger/adapter rapid­ment les tra­duc­tions sur votre site, pré­fé­rez Loco Trans­late.
  • Pour pro­jets struc­tu­rés/hors ligne, Poe­dit sera votre ami(et pré­voyez l’étape JS si besoin).
  • Enfin, pour que la tra­duc­tion pro­fite à tous et toutes, ce sera grâce à trans​late​.word​press​.org.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *