Traduire un thème WordPress custom
Vous avez créé vous-même votre thème WordPress et vous voulez le traduire ? Alors vous êtes au bon endroit. Dans cet article, je ne vais pas vous montrer comment traduire vos pages et vos articles, pour cela il existe des plugins de traduction comme Polylang ou WPML, qui ne nécessitent pas vraiment de compétences en développement. Je vais plutôt vous expliquer comment faire en sorte que les chaînes de caractère écrites dans le code source de votre thème soient traduisibles : c’est ce qu’on appelle l’internationalisation. Ainsi, votre thème sera compatible avec les plugins que je viens d’évoquer.
- Créer un textdomain pour votre thème
- Encapsuler les chaînes de caractères
- Générer un fichier de template de traduction
- Créer les fichiers pour traduire votre thème WordPress dans n’importe quelle langue
- Mettre à jour votre template de traduction
- Fonctionnement des thèmes WordPress traduis avec les plugins multilingues
Créer un textdomain pour votre thème
La première étape pour internationaliser (traduire) votre thème WordPress custom est de déclarer ce qu’on appelle un textdomain. Un textdomain sert un quelque sorte d’identifiant, qui permettra par la suite à WordPress de retrouver les chaînes de caractère à traduire. Pas d’inquiétude, tout va vite s’éclaircir :
- Rendez-vous d’abord dans le fichier functions.php. À l’aide de la fonction
load_theme_textdomain
, vous allez pouvoir enregistrer votre textdomain. Le premier paramètre servira de nom, choisissez quelque chose d’explicite. Le second paramètre correspond au chemin vers le répertoire qui contiendra vos traductions, par convention, appelez-le languages. Attention, vous devez également créer manuellement le répertoire. Finalement, attachez la fonction au hookafter_setup_theme
.
<?php
function my_theme_after_setup_theme(){
load_theme_textdomain('my_theme',get_template_directory()."/languages");
}
add_action('after_setup_theme', 'my_theme_after_setup_theme');
- Ensuite, il vous faut également renseigner votre textdomain dans l’en-tête du ficher style.css, ainsi que le chemin vers le répertoire des traductions.
/*
Theme Name: My theme
Text Domain: my_theme
Domain Path: /languages
*/
Encapsuler les chaînes de caractères
Pour pouvoir traduire les chaînes de caractères de votre thème WordPress, encapsulez-les à l’aide des fonctions d’internationalisation natives. Cela évite que les chaînes soient juste hard-codées dans vos fichiers de template. À titre personnel, j’utilise exclusivement la plus basique de ces fonctions : _()
. Toutefois, il en existe d’autres, plus complexes, qui prennent par exemple en charge les pluriels, si vous en avez l’utilité.
Dans le code ci-dessous, j’ai encapsulé les chaînes de caractère pour mon fichier de template 404.php. C’est un bon exemple, car dans ce template, votre contenu textuel sera généralement directement inscrit dans le fichier. Mais pour traduire votre thème WordPress dans son intégralité, vous devez faire cette opération pour l’intégralité tous vos fichiers .php contenant des chaînes.
<?php get_header(); ?>
<main>
<h1><?php echo __("Erreur 404","my_theme"); ?></h1>
<p><?php echo __("Vérifiez que vous n'avez pas fait d'erreur dans l'URL.","my_theme"); ?></p>
</main>
<?php get_footer(); ?>
Générer un fichier de template de traduction
À partir de maintenant, tout va se passer dans le back-office de WordPress :
- Téléchargez le plugin Loco translate depuis le répertoire des extensions WordPress.
- Rendez-vous dans l’onglet Thèmes du plugin. Normalement, votre thème et son textdomain devraient s’afficher.
- Rendez-vous dessus, puis cliquez sur Créer un modèle. Cette opération va générer un template de traduction en .pot dans votre dossier languages.
Ce fichier .pot contient toutes les chaînes de caractères que vous avez encapsulées avec les fonctions d’internationalisation. Il servira de base pour traduire votre thème WordPress dans toutes les langues de votre choix.
Créer les fichiers pour traduire votre thème WordPress dans n’importe quelle langue
Maintenant, vous avez la possibilité de cliquer sur le bouton Nouvelle langue :
- Choisissez la langue de votre choix.
- Ensuite, en ce qui concerne l’emplacement, je vous conseille de cocher la case Auteur. Ainsi, vos fichiers de traduction seront enregistrés dans votre répertoire languages, ce qui rendra votre thème plus facile à distribuer pour d’autres installations WordPress.
- Cliquez sur Commencer la traduction.
- À partir de là, vous aurez une interface graphique à votre disposition pour traduire toutes les chaînes individuellement.
À l’issue de la traduction, deux fichiers en .po et en .mo seront générés dans votre répertoire languages, ils contiennent les chaînes traduites. Vous n’aurez pas besoin d’y toucher manuellement.
Mettre à jour votre template de traduction
Vous allez certainement faire évoluer vos fichiers de thème WordPress avec le temps, et vous aurez alors besoin de traduire les nouvelles chaînes :
- N’oubliez pas d’encapsuler vos nouvelles chaînes avec les fonctions d’internationalisation.
- Pour mettre à jour le template de traduction .pot, allez sur le plugin Loco Translate et cliquez sur votre thème.
- Cliquez sur Modifier le modèle, puis sur Synchroniser.
Vos nouvelles chaînes ont été récupérées, et ainsi vous pouvez mettre à jour chacune des langues traduites :
- Cliquez sur la langue à mettre à jour.
- Cliquez sur Synchroniser.
- Ensuite, vous pourrez traduire les nouvelles chaînes depuis l’interface.
De cette manière, vous pouvez mettre à jour les .mo et .po pour chaque langue.
Fonctionnement des thèmes WordPress traduis avec les plugins multilingues
L’intérêt de traduire votre thème WordPress est qu’il sera compatible avec les plugins pour sites multilingues, comme WPML ou Polylang. De cette manière, les chaînes de caractère présentes dans vos fichiers de template s’afficheront dans le bon langage quand vous passerez d’une langue à l’autre sur votre site.