« Bouton toujours affiché en anglais » : c’est la ligne exacte notée dans le ticket de support envoyé par un client agacé, pour un thème premium acheté sur une place de marché et pourtant traduit en français via un fichier .mo bien présent dans le dossier languages. Aucune erreur fatale, aucun avertissement dans les journaux : juste quelques chaînes qui refusent obstinément de changer de langue.
Le symptôme reste partiel : le menu principal, les titres de section et les boutons d’appel à l’action passent bien en français, mais le texte du pied de page, généré par un fichier footer-widgets.php distinct, reste figé en anglais, comme si aucune traduction n’existait pour ces chaînes précises.
Diagnostic : un domaine de texte qui varie dans le même thème
La cause se trouve presque toujours dans une incohérence du domaine de texte utilisé par les appels à __() ou _e(). Un thème premium, souvent assemblé à partir de plusieurs modules développés séparément puis fusionnés, peut contenir plusieurs valeurs différentes selon les fichiers :
// Dans header.php
esc_html_e( 'Accueil', 'premium-theme' );
// Dans footer-widgets.php, ajouté plus tard par un autre développeur
esc_html_e( 'Tous droits réservés', 'premiumtheme' );
La différence entre premium-theme et premiumtheme suffit : le fichier .mo ne contient de traduction que pour l’un des deux domaines, et WordPress ne fait aucun rapprochement automatique entre des domaines qui se ressemblent. La chaîne cherchée sous le mauvais domaine reste simplement affichée dans sa version d’origine, sans avertissement visible côté public.
Repérer toutes les variantes présentes
Une recherche sur l’ensemble des fichiers du thème permet de lister rapidement les domaines réellement utilisés :
grep -rEo "'[a-z0-9_-]+'\)" wp-content/themes/premium-theme/*.php | sort -u
Sur un thème premium particulier, un diagnostic mené de cette façon a fait remonter quatre domaines de texte distincts dans les seuls fichiers PHP du thème, résultat visible d’un assemblage de modules jamais harmonisé par l’éditeur du thème.
Correctif
Le correctif consiste à harmoniser tous les appels sur un domaine unique, puis à régénérer le fichier .pot de référence avant de retraduire les chaînes concernées :
- choisir le domaine correct, généralement celui déclaré dans l’en-tête de
style.css - remplacer toutes les occurrences des domaines incorrects par cette valeur, fichier par fichier
- régénérer le fichier
.potavecwp i18n make-potpour vérifier qu’un seul domaine apparaît désormais - mettre à jour le fichier
.pofrançais avec les chaînes manquantes, puis recompiler en.mo
Ce correctif doit être appliqué dans un thème enfant ou conservé dans un correctif à réappliquer après chaque mise à jour du thème premium, faute de quoi la prochaine mise à jour réintroduira l’incohérence d’origine.

Prévention avant l’achat d’un thème premium
Avant de retenir un thème premium pour un projet multilingue, un rapide grep sur les fichiers téléchargés en version d’essai permet de vérifier la cohérence des domaines de texte. Un thème correctement internationalisé n’affiche qu’une seule valeur de domaine, identique à celle de son en-tête style.css.
Un tableau de contrôle simple, tenu à jour pour chaque thème premium retenu, évite de refaire ce diagnostic à chaque mise à jour :
| Vérification | Méthode | Résultat attendu |
|---|---|---|
| Domaine unique | grep sur les appels de traduction | Une seule valeur trouvée |
| Domaine conforme | Comparaison avec l’en-tête style.css | Valeurs identiques |
| Fichiers de langue présents | Contenu du dossier languages | Un .mo par langue annoncée |
Ce contrôle prend quelques minutes et évite des heures de diagnostic une fois le thème installé sur un site en production, alors que le client attend déjà une version traduite fonctionnelle.
Un domaine de texte qui varie d’un fichier à l’autre ne provoque jamais d’erreur fatale : c’est justement ce qui rend le problème long à diagnostiquer sans une vérification méthodique du code source.
En résumé
Le « textdomain mismatch » reste l’une des causes les plus fréquentes de chaînes non traduites dans les thèmes premium assemblés à partir de plusieurs sources. Le diagnostic ne demande qu’une recherche textuelle simple, mais la prévention, elle, passe par un contrôle systématique avant d’adopter un thème pour un projet destiné à plusieurs langues.