La traduction d’un thème ou plugin WordPress est pour beaucoup de gens une procédure compliquée, longue, très technique, uniquement pour les développeurs.
Pour faciliter cette tâche à ces personnes-là et surmonter ces difficultés, nous allons voir à travers ce tutoriel comment parvenir à traduire tout seul son joli thème (ou plugin) qui a peut-être pu nous coûter une petite somme d’argent.
Petit hors sujet pas très HS. Récemment, j’ai publié un tutoriel sur la création d’une Job Board avec WordPress. Dans ce tutoriel, j’ai utilisé le plugin WP Job Manager qui a l’avantage d’être traduit en Français. Or, malheureusement, comme je l’avais indiqué dans l’article, la traduction n’était pas assez fidèle au sens des mots ou alors parfois on y trouvait des fautes de frappe (une seule faute repérée a priori).
Il y a quelque temps, un des lecteurs du blog s’est arrêté devant ces erreurs de traduction et avait besoin de les corriger. En effet, en tant que détenteur d’un site d’offre d’emploi sérieux, on ne peut pas se permettre de présenter à ses visiteurs internautes une Job Board avec du texte insensé. Le plugin présente également des erreurs de traduction dans la partie administration, ce qui peut porter à confusion l’administrateur.
La question qui se pose alors est : Comment corriger ces erreurs de traduction et plus généralement comment traduire son thème ou plugin WordPress si ça n’a pas déjà été fait par quelqu’un d’autre ?
On commencera tout d’abord par voir comment traduire un thème ou plugin de manière générale, puis une fois ceci acquis, la modification d’une traduction se fera d’une manière quasi similaire.
Traduire un Thème ou Plugin WordPress avec Poedit
Dans la suite du tutoriel je parlerai de la traduction du thème, mais ça reste exactement le même processus à suivre pour le plugin.
Selon votre thème, la traduction de celui-ci peut-être assez rapide à faire. Ceci est dans le cas où le thème est déjà prêt à être traduit. Comment savoir cela ?
Dans le dossier de votre thème, vérifiez s’il existe au moins deux fichiers possédant les extensions .po et .mo. Ceux-ci se trouvent généralement dans un répertoire intitulé « languages » ou « lang ». Ils peuvent aussi se trouver à la racine de votre thème. Si aucune traduction n’a été faite au thème, vous trouverez uniquement le fichier .po.
Si vous ne trouvez ces fichiers nulle part dans votre thème, alors cela signifie que le concepteur de votre thème n’a pas pris le temps de mettre en place un thème qui soit prêt à la traduction. Mais rien n’est perdu, nous verrons dans la seconde partie du tutoriel comment résoudre ce problème et faire de votre thème un support prêt à la traduction.
Commençons par le premier cas où votre thème possède bien les fichiers .po et .mo.
Le premier fichier .po contient toute la liste des mots et phrases à traduire avec leur position (numéro de la ligne) dans les fichiers où ils se situent dans le thème. Voici un exemple de phrase à traduire qu’on retrouve dans le fichier .po :
Dans « msgid » on retrouve la phrase à traduire et en dessous dans « msgstr » la phrase traduite (ici le champ est vide car le thème n’a pas encore été traduit). Enfin, on retrouve plus haut le(s) fichier(s) dans le(s)quel(s) se trouve cette phrase avec le numéro de la ligne.
Le second fichier .mo est un fichier binaire généré automatiquement après la traduction du thème.
Afin de procéder à la traduction de notre thème, nous allons utiliser le logiciel Poedit qui est assez simple à utiliser. Une fois installé, cliquez sur « Ouvrir » puis retrouvez le fichier .po de votre thème :
Le fichier s’intitule ici « default.po ». On retrouve souvent ce nom lorsque aucune traduction n’a été faite pour le thème. Ce fichier contient la langue de base qui est l’anglais. On retrouve souvent aussi les noms en_GB.po et en_US.po comme fichiers de base.
Voici le tableau affichant toutes les lignes de chaînes de caractères à traduire dans la colonne de gauche « Texte original » et les traductions dans la colonne de droite « Traduction » qui est vide pour l’instant.
Tout en bas de l’écran on a deux champs : le premier contient la phrase sélectionnée dans le tableau du haut, et le second pour saisir la traduction. Celle-ci sera affichée de manière instantanée dans la colonne de droite du tableau devant la phrase d’origine correspondante. Rien de bien compliqué. Voici un exemple de traduction :
Vous remarquez que dans certaines chaînes de caractères il y a du code HTML. Il faut donc traduire uniquement ce qu’il y a à l’intérieur des balises. Par exemple :
There is a new version of %1$s available. <a href="%2$s" class="thickbox" title="%1$s">View version %3$s Details</a> or <a href="%4$s" >upgrade automatically</a>.
en :
Il y a une nouvelle version de %1$s disponible. <a href="%2$s" class="thickbox" title="%1$s">Voir les détails de la version %3$s</a> or <a href="%4$s" >mettre à jour automatiquement</a>.
Voilà, il faut traduire ligne par ligne ce fichier .po et une fois que tout est traduit il faut enregistrer-sous le fichier et le nommer en suivant la convention (i.e fr_FR.po). Un fichier fr_FR.mo sera automatiquement créé.
Placez ces deux fichiers dans le dossier « langue » de votre thème (même endroit que le fichier .po d’origine) si ce n’est pas déjà fait.
Modifier la traduction d’un thème ou plugin WordPress
Revenons à notre plugin mal traduit. Maintenant que nous avons appris à traduire un thème ou plugin WordPress, la modification de cette traduction est encore plus facile.
Dans notre plugin WP Job Manager, qui permet de créer une job board avec WordPress, ouvrez avec Poedit le fichier « job_manager-fr_FR.po » qui est situé dans le dossier plugins/wp-job-manager/languages. Voici deux exemples d’erreur de traduction à corriger :
Une fois toutes les erreurs corrigées, enregistrez le fichier. Le fichier .mo sera automatiquement mis à jour. Pareil, si vous travaillez sur un site en ligne n’oubliez d’uploader vos deux fichiers au bon endroit.
Traduire un Thème ou Plugin WordPress qui ne possède pas de fichier .po
Ici les choses se compliquent un peu plus vu que le concepteur du thème n’a pas fait l’effort de nous mettre à disposition un thème prêt à la traduction. Il faut donc faire ce travail à sa place et générer le bon fichier de traduction. Pour ce faire, il va falloir parcourir tous les fichiers de votre thème et traduire les phrases écrites en dur dans le code.
Prenons cet exemple d’extrait de fichier non traduit tiré d’un thème :
Nous allons utiliser le Framework GNU Gettext qui utilise les méthodes __(), _e(), _n() ainsi que d’autres fonctions permettant de récupérer le texte passé en paramètre, puis vont chercher au bon endroit la traduction correspondante pour les renvoyer par la suite.
Voici ce que devient notre code :
La fonction _n() à la ligne 27 permet de prendre en compte les traductions plurielles.
La fonction _e() à la ligne 42 permet d’afficher directement sur la page la traduction du message contenu dans le paramètre de cette fonction.
La fonction __() à ligne 43 permet de traduire le message lorsqu’il est utilisé en tant que paramètre d’une autre fonction.
Les caractères spéciaux ← et → aux lignes 43 et 44 représentent respectivement une flèche droite et une flèche gauche.
Vous remarquez que dans les paramètres de chacune de ces fonctions, nous avons utilisé un même argument à la fin, qui est « MonThemeWP ». Cet argument s’appelle le Domaine, ou Contexte pour être plus parlant. Notre domaine ici est le thème ou plugin qu’on est en train de traduire. Cela permet de traduire uniquement les chaînes de caractères traduisibles qui se trouvent dans ce thème-là. Vous adapterez donc ce domaine à votre propre thème ou plugin.
Voilà, il faut continuer ce même travail de mise en place d’un thème traduisible sur tous les autres fichiers du thème qui contiennent des phrases écrites en dur.
La prochaine étape est la création d’un répertoire à la racine de votre thème, intitulé « languages » ou « lang » ou tout autre nom qui va dans ce sens-là.
Enfin, avant de commencer à créer notre de dictionnaire de traduction, nous allons dire à WordPress qu’il doit prendre en compte cette traduction avec le domaine et répertoire donnés. C’est une ligne de code qu’il faut ajouter comme suit dans le fichier functions.php :
load_theme_textdomain('MonThemeWP', get_template_directory() . '/languages');
Création du dictionnaire de traduction avec Poedit
Avec le logiciel Poedit, créez un nouveau catalogue dans Fichier > Nouveau catalogue. Voici la configuration à faire pour créer notre dictionnaire :
Pour la langue française, la forme plurielle est nplurals=2; plural=n>1;
Dans « Chemins des sources », il faut indiquer un chemin relatif du répertoire « languages » créé plus haut. Il suffit juste de mettre deux points « .. » et on sélectionnera le répertoire par la suite lorsqu’on cliquera sur « Accepter ».
Dans « Mots-clés source », on ajoute les fonctions __(), _e() et _n().
Cliquez ensuite sur « Accepter » et sélectionnez le répertoire « languages » dans lequel vos deux fichiers .po et .mo seront créés. Ce dernier sera généré automatiquement.
Le fichier aura le nom « default.po » par défaut. Vous pouvez le renommer directement « fr_FR.po », mais je vous conseille de laisser le nom par défaut et de faire dessus votre traduction vers le Français et puis d’enregistrer-sous et nommer un nouveau fichier en l’intitulant « fr_FR.po » comme nous l’avons fait dans la première partie du tutoriel pour la traduction d’un thème possédant déjà un fichier .po. En faisant de cette manière, vous permettrez aux personnes qui utiliseront votre thème de travailler sur le fichier par défaut pour créer un nouveau fichier .po sous une autre langue. Ainsi, le fichier « default.po » sera le fichier de base en Anglais et compréhensible par tout le monde.
Une fois tout ça mis en place, vous aurez un fichier .po qui contient toute la liste des mots et phrases à traduire avec leur position (numéro de la ligne) dans les fichiers où ils se situent dans le thème. C’est exactement comme ce que l’on avait dans la première partie du tutoriel. Pour ne pas me répéter, il suffit désormais de suivre l’explication faite dans ce début de tuto.
Dernière chose, il vous arrivera peut-être d’ajouter de nouvelles phrases dans votre thème, en utilisant bien sûr les fonctions gettext vues plus haut. Dans ce cas, il suffit de mettre à jour votre catalogue sur Poedit (voir l’image suivante) et les nouvelles phrases ajoutées apparaîtront dans votre liste de texte à traduire.
N’oubliez pas d’enregistrer ensuite votre traduction et d’envoyer vos deux fichiers .po et .mo vers votre serveur en ligne si vous travaillez en ligne.
Conclusion
Pour conclure, nous avons vu dans ce tutoriel plusieurs cas de traduction possibles.
Le premier cas qui est le plus courant, c’est la traduction d’un thème WordPress qui possède déjà un support de traduction avec le fichier .po existant. Un nouveau fichier est alors créé avec la nouvelle traduction.
Le second cas permettait de résoudre notre problème avec le plugin présentant quelques erreurs de traduction; c’est donc la retraduction d’un plugin à partir d’une traduction déjà existante. Aucun nouveau fichier n’est créé.
Le dernier cas est celui du thème qui n’a pas du tout été conçu pour être traduit. La procédure à suivre dans ce cas était beaucoup plus longue puisqu’il fallait ouvrir tous les fichiers du thème un à un et ajouter les règles de traduction. Aujourd’hui, il existe heureusement de moins en moins de thèmes WordPress qui ne possèdent pas de fichiers de traduction.
Enfin, si vous rencontrez un problème dans la traduction de votre thème ou plugin WordPress alors n’hésitez pas à poster un commentaire plus bas dans la page.
Cet article vous a plu?
Abonnez-vous alors à notre newsletter pour recevoir des trucs utiles pour votre site WordPress.
Bonjour! Si vous êtes intéressés de traduire un theme WP, je vous recommande chaleureusement un instrument ”l10n » en-ligne intuitif et basé sur travail en collaboration, qui a toutes les chances de rendre vos activités de bureau bien plus faciles et rapides: https://poeditor.com/
Vous pouvez télécharger un module WordPress ici https://wordpress.org/extend/plugins/poeditor/
Hello,
Cependant, j’ai dû rater une étape… après avoir remis mes fichier en_EN et fr_FR sur le serveur, il ne se passe rien sur mon site, il est toujours en anglais. Comment faire pour que le fichier devienne actif alors ?
Merci beaucoup pour ton article très utile !!!
Bonjour Jenni,
Merci de passer par ici!
Essayez d’insérer cette ligne de code dans votre fichier config.php à la racine de votre installation WordPress :
define('WPLANG', 'fr_FR');
Juste au dessus de la ligne
define('WP_DEBUG', false);
Bonjour,
J’ai aussi le même souci que celui rencontré par Jenni et sans plus de succès y compris en essayant l’astuce de Kika-Gaga. J’ai bien uploager le fichier.po et .mo dans le répertoire languages du plugin job manager (mais quel nom doivent-ils porter?). Le site WP est bien en français. Merci de votre aide.
Patrick
Merci beaucoup pour votre reponse 🙂 J’ai testé, ca ne fonctionne pas… une autre idée peut-être ?
Il faut juste ajouter la commande suivante: $locale=’fr_FR’; après define(‘WPLANG’,’fr_FR’).
Ca devrait marcher!
Bonjour,
Je suis assez novice dans la traduction de thème, voici mon problème :
J’ai téléchargé un thème qui ne contient pas de fichier langue et donc le créateur n’a pas laissé la possibilité pour le traduire. J’ai donc télécharger la version premium de Poedit afin que cela puisse fonctionner. Malheureusement ça ne marche pas, il m’indique « no load_theme_textdomain call and lacking metadata ».
J’ai donc supposé que le thème n’était pas préparé et je suis tombée sur votre article.
Pouvez-vous m’expliquer comment fonctionne Gettext, car j’avoue être perdue avec cette notion ?
Merci d’avance pour votre compréhension et patience. 🙂
Bonjour,
Je ne sais pas si je peux expliquer la chose autrement!
Pour faire simple, vous repérez tous les mots et expressions que vous souhaitez rendre traduisibles. Puis, il a 3 cas :
* Si le mot/expression sera affiché directement sur le site, vous utilisez la fonction _e() de la manière suivante : _e(‘VOTRE_MOT_EXPRESSION’, ‘VOTRE_CONTEXTE’)
* Si le mot/expression sera affiché directement sur le site et utilisé au singulier OU au pluriel, vous utilisez la fonction _n() ainsi : _n(‘FORME_SINGULIERE’,’FORME_PLURIELLE’,’VOTRE_CONTEXTE)
* Si le mot/expression est utilisé comme paramètre d’une autre fonction créée ailleurs dans votre thème, et que cette fonction affichera par suite d’une manière ou d’une autre ce mot/expression sur le site, alors vous utilisez la fonction __() comme dans le premier cas.
Voilà, je ne sais pas si j’ai été un peu plus clair. Le mieux est de voir comment ceci est fait sur d’autres thèmes. Vous pouvez prendre les thèmes par défaut comme Twentyfourteen, Twentyfifteen, …
Merci pour votre réponse, je vais essayer de m’en sortir en comparant avec les thèmes que vous avez mentionné.
Bonne continuation pour votre site. 🙂
Bonjour Akasha48,
Une alternative pourrait être aussi d’utiliser le plugin Weglot. Sans code, ni manipulation de fichiers sources, vous pouvez traduire et diffuser votre site en plusieurs langues rapidement.
Une période d’essai de 14j permet de l’utiliser gratuitement, c’est très pratique pour se faire une idée.
La documentation détaillée : https://weglot.com/fr/wordpress-integration
Augustin
Bonjour,
Est-ce qu’il est possible de traduire de longue phrases avec PoEdit? Quel est la limite de mots?
Bonjour,
Il n’existe pas de limite de mots à ce que je sache. Cependant, il m’est rarement (voire jamais) arrivé de voir de longues phrases à traduire dans un thème ou plugin WordPress.
Bonjour,
Merci beaucoup pour cet article qui vient me sauver la vie! cependant j’ai comme un petit souci! je vous explique : quand j’ouvre le fichier langage sur filezilla tout se passe bien j’ai les .po et .mo mais quand j’ouvre poedit je ne trouve pas le thème dans téléchargement je crois que j’ai du directement le télécharger sur wordpress si jamais c’est possible!! Donc auriez vous la gentillesse de me donner un petit coup de pouce? je vous en serai très reconnaissante!
Merci d’avance.
Bonjour,
Je ne suis pas sûr d’avoir compris exactement ce que vous voulez dire.
Le mieux est de télécharger le dossier de votre thème en local, faire votre traduction puis renvoyer uniquement le dossier langage vers le dossier de votre thème qui est en ligne via filezilla.
Hello,
Merci beaucoup pour ce tuto très bien expliqué.
Tout fonctionne parfaitement 😉
Bonjour,
Une question pour le dernier cas, ou on doit modifier le code dans tous les fichiers, si le plugin a une mise à jour, on perd toutes les modifications alors il faut tout recommencer, non ?
Bonjour Anouar,
Bravo pour cet article-tuto ultra complet et riche en information.
Je suis le co-fondateur d’une startup (Weglot) qui simplifie le process de traduction de site web. Nous avons une extension Worpdress dédiée qui pourrait vous intéresser. Etant donné votre intérêt pour les solutions efficaces et pratiques je pense que Weglot devrait vous plaire.
De notre côté, votre oeil avisé pourrait aussi nous aider à améliorer d’avantage notre solution.
Voici le lien de notre site avec un guide d’utilisation détaillé de notre plugin : https://weglot.com/fr/wordpress-integration
A votre disposition pour échanger d’avantage.
Augustin
Bonjour,
Concernant la traduction des plugins:
Comment faire pour éviter de perdre les modifications suite aux mises à jours des plugins?
Y a t-il un moyen d’éviter cela, un dossier spécial à créer dans un thème enfant par ex?
Cordialement,
Bonjour Seb,
Pour éviter de perdre vos traductions suite aux mises à jour des plugin, il est préférable d’installer ses fichiers de traduction à l’extérieur du dossier du plugin/thème. Pour les plugins cela se fait dans le dossier « wp-content/languages/plugins » (/themes pour les thèmes).
Il faudra bien nommer vos fichiers dans ce cas. Ils doivent prendre le nom du « textdomain » du plugin.
Bonjour,
Je rencontre quelques problèmes au niveau de la traduction de mon site. J’utilise WP JOB MANAGER et le plugin POLYLANG pour traduire mes pages, articles et offres d’emplois. Pour l’instant tout va bien. Mais quand je passe à la page en anglais, quelques phrases du plugin WP JOB MANAGER ne se traduisent pas parmi lesquelles j’ai : « Il n’y a aucune offre correspond à votre recherche. » Il m’afficher toujours cette phrase qu’on soit en anglais ou français.
Est – ce un problème avec les fichiers .po et .mo de mon plugin?
Je tiens à vous dire que le WP JOB MANAGER ne comporte qu’un fichier .pot dans le dossier Langue.
Nuzhah