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 !
- Lancer Poedit
- Cliquer « Fichier – Nouveau catologue »
- Une fenêtre configuration apparait
- Compléter l’onglet « Info projet »
- Compléter l’onglet « Chemins »
- Compléter l’onglet « Mots clé »
- Appuyer sur Ok
- Enregistrer le fichier avec comme nom, le domaine de votre plugin (exemple: exemple.po)
- Si tout se déroule bien, Poedit vous affiche une fenêtre avec les chaines ajoutées et éventuellement supprimées.
- Ne commencez pas tout de suite la traduction.
- Enregistrer le fichier et fermer Poedit.
- Dupliquer le fichier exemple.po en exemple.pot
- Supprimer le fichier exemple.mo créé automatiquement lors de l’enregistrement
- Renommer le fichier exemple.po en exemple-fr_FR.po
- Vous pouvez alors éditer ce fichier avec Poedit et réaliser la traduction française
- 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:
- Il vous suffit de renommer le fichier exemple.pot en fichier exemple.po
- De le mettre à jour, pour cela:
- Menu « Catalogue » – « Mise à jour depuis les sources »
- Vous aurez un aperçu des ajouts et des suppressions
- Valider
- Enregistrer et fermer Poedit
- Renommer le fichier exemple.po en exemple.pot
- 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
- Ouvrer votre traduction exemple-fr_FR.po avec Poedit
- Cliquer sur le sur menu « Catalogue – Mettre à jour depuis fichier POT »
- Sélectionner le fichier POT
- Valider les modifications
- Traduiser les nouvelles chaines
- 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”
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…
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 ;).
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
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 !
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 :)
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
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
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
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.
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 !
Merci, clair et net, j’ai mieux compris la chaîne de traduction .pot, .po, .mo avec cet article.
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.
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
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
super intéressant votre article ,je chercher cette solution depuis un moment