Un client avait acheté un thème premium pour sa boutique en ligne, avec un bandeau de livraison affichant en permanence « Free shipping on orders over $50 ». Ce texte n’apparaissait dans aucun article, aucune page, aucun widget : il était écrit directement dans un fichier PHP du thème, entouré d’une fonction esc_html__() qui le rendait techniquement traduisible pour WordPress, mais invisible pour l’équipe éditoriale qui ne pouvait pas mettre les mains dans le code.
C’est exactement le cas d’usage pour lequel le module WPML String Translation a été conçu : il permet de traduire depuis l’interface d’administration des chaînes de texte qui, autrement, ne seraient accessibles qu’en modifiant directement les fichiers du thème ou d’un plugin, une opération risquée et non pérenne face aux futures mises à jour.
Comment WPML détecte ces chaînes
Un développeur de thème respectueux des standards WordPress entoure chaque texte affiché à l’utilisateur des fonctions d’internationalisation natives, comme __(), _e() ou esc_html__(), avec un domaine de texte cohérent. WPML s’appuie sur ce même mécanisme : le module String Translation scanne le thème et les plugins actifs à la recherche de ces appels de fonction, puis liste chaque chaîne trouvée dans l’écran WPML > Traduction des chaînes.
Pour lancer ce scan, il faut se rendre dans WPML > Traduction des thèmes et plugins, cocher le thème ou le plugin concerné, puis cliquer sur le bouton de scan. WPML analyse alors les fichiers du domaine de texte déclaré et ajoute chaque chaîne détectée à la liste des chaînes traduisibles.
Traduire une chaîne détectée
Une fois le scan effectué, chaque chaîne apparaît avec son texte original et un lien « Traduire ». Le clic ouvre une fenêtre de traduction classique, identique dans son fonctionnement à celle utilisée pour un article. La traduction saisie s’affiche alors automatiquement à la place du texte original, mais uniquement pour les visiteurs consultant le site dans la langue correspondante : le texte source du fichier PHP reste inchangé, ce qui protège la traduction d’un éventuel écrasement lors d’une mise à jour du thème.

Le cas des chaînes absentes du domaine de texte
Certains développeurs de thèmes premium, notamment ceux qui ne suivent pas rigoureusement les standards de codage WordPress, écrivent parfois du texte directement en dur, sans aucune fonction d’internationalisation autour. Dans ce cas, le scan de WPML ne détecte rien, puisqu’il n’a aucun point d’accroche dans le code. La seule solution reste alors de modifier le fichier concerné pour y ajouter la fonction __() appropriée, idéalement dans un thème enfant pour préserver la modification lors des mises à jour.
Organiser les chaînes par domaine
Sur un site avec plusieurs extensions actives, la liste des chaînes détectées peut rapidement dépasser plusieurs centaines de lignes. WPML permet de filtrer cette liste par domaine de texte, ce qui isole les chaînes propres au thème de celles ajoutées par chaque plugin. Je recommande de traiter ces domaines un par un, en commençant par le thème principal puisqu’il concentre généralement les libellés les plus visibles pour les visiteurs : boutons d’appel à l’action, messages de formulaire, textes de navigation secondaire.
- Filtrez par domaine de texte pour ne pas vous perdre dans une liste trop longue.
- Priorisez les chaînes visibles en façade avant les messages d’erreur techniques rarement affichés.
- Documentez dans un tableau partagé les chaînes déjà traduites, pour ne pas refaire le travail après une mise à jour du thème qui en ajouterait de nouvelles.
Un cas fréquent : les chaînes qui se dupliquent au scan
Un phénomène surprend souvent les débutants : relancer un scan après une mise à jour du thème peut faire apparaître la même chaîne en double, avec un statut « non traduit » à côté de l’ancienne version déjà traduite. Cela arrive lorsque le développeur du thème modifie légèrement le texte source d’une version à l’autre, même d’un simple espace ou d’une majuscule : WPML considère alors qu’il s’agit d’une chaîne différente. Un nettoyage périodique de la liste, en supprimant les entrées obsolètes qui ne correspondent plus à aucun texte du thème actif, garde cet écran lisible.
Je conseille à mes clients de relancer le scan de chaînes systématiquement après chaque mise à jour de thème ou de plugin, et de traiter les nouvelles entrées dans la semaine, avant qu’elles ne s’accumulent en silence.
Notre verdict
String Translation résout précisément le problème des textes codés en dur dans un thème : il rend traduisible depuis l’interface d’administration un contenu qui, sans ce module, resterait inaccessible à toute personne ne sachant pas modifier du PHP. La contrepartie est un entretien régulier de la liste des chaînes détectées, particulièrement après chaque mise à jour du thème, pour éviter les doublons et les oublis.