Commencer la traduction d’un plugin avec POEdit

Lorsque l’on veut traduire un plugin ou un thème WordPress que l’on développe avec les fonctions gettext() pour WordPress afin de permettre la traduction dans différentes langues, l’un des meilleurs outils est POEdit, disponible en version gratuite. L’internationalisation i18n est le processus de développement d’une extension afin qu’elle puisse être facilement traduite dans d’autres langues.

Un lac avec une copie de l'accueil de POEdit, et les mot-clés WordPress, i18n, Theme, Plugin

Fichiers de traduction

Il existe deux types de fichiers de traductions, l’un avec l’extension .po est le fichier d’édition, l’autre avec l’extension .mo est le fichier compilé. WordPress utilise le fichier compilé, indispensable pour que les chaînes de caractères soient traduites.

Pour modifier des traductions, le fichier .po est chargé par POEdit. Lorsque le fichier est sauvegardé, le fichier .mo est produit. Le dossier contenant le fichier .mo et le textdomain sont définis avec la fonction load_plugin_textdomain(). Il est habituel de créer un dossier languages ou lang pour stocker les fichiers. POEdit est capable de mettre à jour les chaînes de caractères utilisées en inspectant le code source d’un plugin ou d’un thème. On crée donc un dossier languages ou lang à la racine de l’extension.

POEdit

On lance alors POEdit, on tombe sur l’écran d’accueil :

POEdit écran d'accueil

On cherche alors à lancer Translate WordPress theme or plugin. Et l’on tombe sur l’écran :

POEdit, WordPress Extras pour débuter une traduction d'un thème ou d'une extension

Alors là, on est coincé, soit on achète la version pro de POEdit, soit on crée manuellement le fichier de traduction.

Nommage des fichiers de traduction

Les fichiers de traduction d’une extension se nomment du nom du textdomain suivi de l’identifiant locale. Le nom textdomain est défini dans la fonction load_plugin_textdomain() et utilisé dans les fonctions de traduction de WordPress : __(), _e(), _n() … Quelques exemples d’identifiants pour certaines langues : en_US (Anglais, USA), zh_TW (Chinois de Taiwan), fr_CA pour le français du Canada, fr_FR pour le français de France. Donc, si l’on développe une extension, dont le textdomain est myplug, que l’on traduit pour le français de France, on nomme le fichier de traduction éditable myplug-fr_FR.po. Pour un thème, on nomme simplement le fichier avec l’extension locale (par exemple fr_FR.po) dans le dossier défini avec la fonction load_theme_textdomain(). Si l’on veut personnaliser une traduction, sans que celle-ci soit écrasée lors d’une mise à jour, on suit la même logique : textdomain-fr_FR.po et textdomain-fr_FR.mo, que l’on copie dans le dossier languages/plugins ou languages/themes du répertoire wp-content.

Dans mon cas, pour un plugin Icon Inserter, avec le hook init, on définit le textdomain :

Le deuxième argument est déprécié, on laisse false, $dirname est le nom du dossier de l’extension. Donc, je crée un fichier vide icon-inserter-fr_FR.po et l’on essaie d’ouvrir ce fichier avec POEdit.

POEdit ouvrir un fichier .po vide

Et POEdit nous indique qu’il ne peut pas ouvrir le fichier car il est corrompu ou non reconnu.

POEdit message d'erreur après la tentative d'ouverture d'un fichier .po vide

Entête du fichier .po

On remplit alors le fichier de la façon suivante, en l’adaptant si besoin.

Extraction des chaînes

Ainsi, en sélectionnant Edit a translation, POEdit s’ouvre, en s’étonnant qu’aucune traduction n’est présente :

POEdit s'ouvre, le message aucune traduction présente s'affiche

On clique alors sur Extraire des sources, les propriétés du catalogue s’ouvre, on clique sur OK, POEdit extrait du code les chaînes à traduire, il n’y a plus qu’à commencer la traduction.

Et hop, on peut traduire son extension, ou son thème avec la version gratuite de POEdit.

Soumettre un commentaire

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

Ce site utilise Akismet pour réduire les indésirables.