Jean ROCHARD
Je partage ma passion de Wordpress dans des articles techniques sur les plugins, thèmes, nouveautés geek et optimisation SEO "on-site".
Jean ROCHARD

@jean_rochard

Chez Terre Digitale, on mange du Wordpress dès le petit-dej'.
Petit guide pour mettre en place les Facebook Instant Articles à partir de vos posts Wordpress : https://t.co/lSbzdM6z9j - 7 mois ago

Nous allons voir ici comment traduire un thème ou un plugin wordpress. On peut avoir ce besoin lorsque l’on réalise un site multilingue, ou plus simplement lorsque l’on veut traduire un thème qui a été développé par exemple uniquement en Anglais et dont vous voulez un affichage 100% en Français.

Il faut bien différencier les 2 opérations de traduction suivante :

  • la traduction des contenus des pages, articles… qui sont stockés dans votre base de données.  Elle peut être mise en oeuvre de plusieurs façons : soit en réalisant un site par langue avec une installation multisite de wordpress, soit avec des plugins comme WPML, qTranslate ou Polylang. Ce sujet sera abordé dans un autre article spécifique.
  • la traduction des éléments du thème qui sont inclus dans des fichiers codés en PHP (et non en base de données). Cela peut être par exemple le texte d’un bouton « Read More », le premier élément de menu « Home », un formulaire de recherche « Search », un formulaire de contact prédéfini avec « Last Name », « First Name »… Idem pour les plugins qui peuvent contenir des textes à traduire dans la langue cible de votre site web. A noter également que les éléments présents dans la partie « Admin » de votre site WordPress sont également concernés. C’est ce sujet qui nous intéresse aujourd’hui.

Une fois ces 2 types de traduction réalisées, votre site pourra soit automatiquement s’adapter à la langue du navigateur de l’internaute soit proposer un switch manuel (souvent sous forme de drapeaux) pour passer d’une langue à l’autre.

Dernier point, n’oubliez pas de définir la langue de WordPress dans le menu « Réglages->Général » puis la liste déroulante « Langue du site » en bas de l’écran (depuis la version 4 de WordPress, puisqu’auparavant il fallait modifier le fichier wp-config.php en ajoutant la ligne define(‘WPLANG’, ‘fr_FR’); ).

Les fichiers .POT, .PO et .MO

Les thèmes WordPress de bonne qualité sont aujourd’hui tous prêts à être traduits. Ils vous fournissent un ensemble de  fichiers (.POT, .PO, .MO) pour adapter votre site dans votre langue et vous n’aurez pas à aller bidouiller directement dans le code PHP pour modifier des valeurs qui seraient écrites « en dur » dans une langue qui ne vous convient pas.

Le fichier .POT (quasiment toujours en Anglais) est la fichier de base qui va contenir tous les éléments textuels à traduire. Il est généré automatiquement par des outils qui vont parcourir tout le code du thème ou du plugin et extraire les textes originaux.

Ce fichier est mis à votre disposition dans le répertoire suivant : wp-content/themes/[nom-du-theme]/languages/[file].pot
Pour un plugin : wp-content/plugins/[nom-du-plugin]/languages/[file].pot

Le répertoire peut également être nommé « lang » plutôt que « languages ». Vous trouverez également à côté de ce fichier .POT, des fichiers .PO et .MO déclinés selon les différentes langues à gérer. Si vous n’avez pas de fichier .POT, aucun soucis, un .PO et un .MO suffiront à poursuivre le processus.

Le fichier .PO contient lui la liste des éléments à traduire et une 2ème colonne contenant les traductions pour une langue donnée. Cette langue est identifiée dans le nom du fichier : fr_FR.po qui correspondra à la version Française de la traduction, es_ES.po à la version espagnole, de_DE.po à la version Allemande et ainsi de suite. Tous les codes langues sont disponibles ici.

Le fichier .MO est lui un fichier « technique » indispensable mais qui n’est que la version compilée du fichier .PO. C’est l’outil qui va vous assister dans la traduction (POEDIT que nous allons voir ci dessous) qui le générera. Attention, il faut toujours veiller à bien mettre à jour les fichiers .PO et .MO en même temps pour que les version de ces fichiers soient les mêmes.

Traduire son thème

Il existe plusieurs outils et méthode pour cela :

1) Utiliser le logiciel POEDIT

POEDIT est le logiciel incontournable (et gratuit) pour éditer vos fichiers .PO et faire vos traductions. Il et disponible pour Windows, Mac et Linux et est très simple d’utilisation. Il existe une version payante qui apporte des fonctionnalités supplémentaires (support notamment) mais vous pouvez tout à fait l’utiliser de façon opérationnelle dans sa version gratuite.

Une fois installé et exécuté, POEDIT vous propose de modifier une traduction existante ou de créer un nouveau fichier .PO. Vous pouvez faire ceci à partir d’un fichier .POT ou bien d’un autre fichier .PO. Choisissez ensuite la langue cible et POEDIT vous ouvrira un nouveau fichier correctement nommé n’attendant plus que la saisie des traductions. Il génèrera également automatiquement le fichier .MO a chaque sauvegarde valide de votre fichier .PO (bouton « Valider » pour effectuer cette opération).

Bien sûr, vous n’avez pas l’obligation de traduire chaque terme. Voici une copie d’écran de l’interface :

poedit

2) Utiliser un plugin comme Loco Translate

Il existe bien sûr des alternatives à POEDIT comme le plugin Loco Translate. Il vous permettra d’effectuer vos traductions de fichiers .PO directement dans WordPress. Plus simple que POEDIT, son seul désavantage est de demander l’installation d’un plugin supplémentaire ; mais c’est clairement un « must have ». Ce plugin vous aidera à bien nommer les fichiers et à les mettre au bon endroit (cf chapitre suivant).

L’équipe de Loco Translate met aussi à votre disposition son éditeur de fichier Po directement en ligne ici : https://localise.biz/free/poeditor

Vous pouvez aussi consulter le codex WordPress pour trouver d’autres outils de traduction.

Où placer ses traductions de plugin et de thème ?

Si vous stockez vos traductions au niveau des répertoires décrits au début de cet article (dans « wp-content/themes/[nom-du-theme]/languages/ » et dans « wp-content/plugins/[nom-du-plugin]/languages/« ), vous n’êtes pas à l’abri de perdre vos fichiers lors d’une éventuelle mise à jour de thème ou de plugin.

Depuis WordPress 3.7, la solution a ce problème est simple grâce au répertoire « wp-content/languages/ » :

  • placez vos traductions de thème selon le modèle suivant :
    « wp-content/languages/themes/[textdomain-du-theme]-fr_FR.po« 
  • placez vos traductions de plugin selon le modèle suivant :
    « wp-content/languages/plugins/[nom-du-plugin]-fr_FR.po »

Attention, pour un thème, c’est bien le « text domain » et non le nom du thème qui préfixera le nom des fichiers. Pour le trouver, référez vous au chapitre suivant. Dans le cas d’un thème enfant est différent, voyons également cela dans la suite.

Où placer ses traductions de thème enfant ?

1) Paramétrer le « Text Domain »

Il faut tout d’abord adapter la valeur « Text Domain » définie dans le fichier style.css de votre thème enfant :

  • si vous voulez traduire des éléments du thème parent, il faut mettre le même « Text Domain » que le thème parent (dans ce cas, vous pouvez le repérer en parcourant le code PHP ou en allant voir le fichier style.css du parent)
  • si vous voulez ajouter vos propres éléments traduisibles de manière indépendante, alors mettez votre propre « Text Domain » et utilisez le dans vos variables de texte internationalisables (avec les _e en PHP)

2) Dans le répertoire de votre thème enfant

Ajoutez un répertoire « languages » dans le répertoire du thème enfant. Mettez y les fichiers PO et MO sans préfixe autre que fr_FR par exemple. C’est ce que conseille le codex WordPress.

Enfin, ajoutez ces lignes dans votre fichier functions.php (en remplaçant the-text-domain par le « Text Domain » de votre thème enfant) :

<?php
function my_child_theme_setup() {
    load_child_theme_textdomain( 'the-text-domain', get_stylesheet_directory() . '/languages' );
}
add_action( 'after_setup_theme', 'my_child_theme_setup' );

Et c’est tout ! Maintenant que votre thème et vos plugins sont traduits, vous pouvez passer en site multilingue avec WPML par exemple. Bonnes traductions !