La traduction d’un thème ou d’un plugin peut parfois être compliquée, surtout si le code source ne l’a pas prévue.
Il peut donc arriver que vous ne réussissiez pas à traduire un bouton ou un mot sur une page, même avec l’utilisation de Poedit ou de l’extension Loco Translate.
Il vous reste donc deux solutions :
- Mettre les mains dans le code et chercher dans les fichiers du thème ou du plugin où se situe l’expression à traduire ou modifier. Il vous faudra alors ensuite copier ces fichiers dans votre thème enfant pour ne pas perdre les modifications aux prochaines mises à jour.
- Utiliser le snippet suivant qui va faire toutes les modifications automatiquement à votre place.
Intégrez le code suivant dans le fichier functions.php
de votre thème enfant.
Il vous reste maintenant à modifier les chaines de caractères 'texte à traduire'
et 'la traduction que vous souhaitez afficher à vos visiteurs'
par ce que vous voulez.
Voici un exemple sur un site ou il fallait remplacer l’expression “produits apparentés” par “blog similaire :”
Et le snippet utilisé :
Vérifiez bien avant d’utiliser cette fonction que l’expression à traduire ou à modifier est unique, car elle sera modifiée partout sur votre site.
Merci Alex pour cette info comme d’habitude clair et tres pratique
je m ‘en sert deja sur mon site mais je n’arrive pas faire une deuxième traduction comment ajouter une autre traduction
si je copie une seconde fois le code en modifiant ce qui m’intéresse le site plante
je pense qu’il ne faut pas copier le tout pour une seconde trad mais mes essais ne sont pas concluants
merci de m’aider M’sieur
Bonjour, pour une seconde traduction tu peux utiliser le même code exactement mais en renommant la fonction. Il ne peut y avoir deux fonctions avec le même nom donc rajoute un 2 après et le tour est joué!
Bonjour, si vous gardez souvenir de où exactement il faut ajouter le 2 je veux bien. Merci d’avance
Merci pour l’astuce ! J’ai un souci pour changer la phrase complète “Calculer les frais d’expédition” sur la page panier de Woocommerce. Ca ne fonctionne pas, même en mettant un anti-slash devant l’apostrophe. Pour l’instant, j’ai contourné le problème en ne remplaçant que “Calculer les frais d”, le mot expédition n’étant pas un problème. Avez-vous une idée ?
Merci !
Hello, tu es sur que ça ne marche pas simplement en traduisant le plugin avec Loco Translate?
Je n’ai pas essayé avec un plug-in. Ta méthode me convient bien, sachant que je n’ai que ce bout de texte à modifier pour l’instant.
Merci ce snippet m’a été très utile pour des chaines de caractères se situant sur le blog du site et se traduisant ni avec Poedit, ni avec loco-translate et aussi bien pour les traductions thème que pour les traductions plugins. Pour ne pas les citer il s’agit de “leave a comment”. Il me reste “your comment” qui refuse toujours de se traduire et le thème regina lite me refuse l’accès au fichier concerné : wp-comments-post.php.
Mais je n’ai pas dit mon dernier mot !!! Encore merci.
Merci beaucoup pour tous ces partages, ces petites astuces, c’est un domaine passionnant… 😉
Merci pour le snippet “wpm_traduction”, il fonctionne mais il agit sur les 2 versions du site (Anglais et Français) sur lequel j’ai installé Polylang.
Comment faire pour restreindre son action sur une seule langue ?
Bonjour,
Il faut que vous adaptiez le code en vérifiant quelle est la langue active avec la fonction de polylang pll_current_language()
Vous pouvez par exemple tester le code ci-dessous :
function wpm_traduction($texte) {
if(“fr”==pll_current_language()){
$texte = str_ireplace(‘texte à traduire’, ‘la traduction que vous souhaitez afficher à vos visiteurs’, $texte);
}
return $texte;
}
add_filter(‘gettext’, ‘wpm_traduction’);
add_filter(‘ngettext’, ‘wpm_traduction’);
Bonjour,
Merci pour ce code.
Je l’ai utilisé pour traduire le mot “Product” en “Produit”
Malheureusement, il me traduit aussi le mot “Production” en “Produition”.
Comment faire pour qu’il traduise uniquement quand il trouve le mot entier exclusivement ?
Merci à vous,
Bonjour,
ce n’est pas possible avec cette technique.
Bonjour et merci pour vos articles riches et utiles !
Je viens d’utiliser cette fonction qui à très bien traduit un élément qui restait, malgré tous mes efforts, en Anglais. Le but était de changer des “Read More” en “Lire la suite”.
Cependant, le changement n’est effectif que sur ma page d’accueil, mes pages catégories affichent toujours “Read More”. Y a-t-il une action supplémentaire à effectuer ?
Je vous remercie par avance de votre aide !
Amicalement,
Manon
Bonjour Manon. Il n’y a aucune raison que cela ne marche pas. L’expression était la même?
Je t’avoue que la comme ça je ne sais pas d’ou ça peut provenir. Tu as essayé avec Loco Translate?
Oui c’est la première chose que j’ai tenté, mais pour le même résultat.
Entre temps j’ai trouvé la solution, il fallait que je remplace également le terme dans le “archive.php” et c’est tout bon maintenant !
En tout cas je te remercie d’avoir pris le temps de me répondre ! 🙂
Bonjour et merci pour ce tuto très simple…
Mais pour moi ça se refuse à tout fonctionnement, et je m’arrache un peu les cheveux sur ce coup là…
J’ai testé avec un peu n’importe quoi sur mon site rien à faire, des textes sur la page d’accueil ou ailleurs!
WordPress dernière version à jour avec woocommerce et le thème twentyseventeen… Et surtout un plugin non traduit : Product Add-Ons WooCommerce
Merci d’avance de votre aide 😉
Lucio
Bonjour, as-tu essayé avec le plugin Loco Translate?
Non je vais tester. Merci de ta réponse en tout cas 🙂
🙂
Merci
Avec plaisir 😉
Alors là c’est un super snippet ! J’avais des problèmes de traduction approximatives de DIVI. Voilà qui est réglé ! Merci mille fois.
Bonjour, j’ai trouvé votre site car je cherchais désespéramment à traduire un chaîne de caractères rebelle sur woocommerce alors que toutes les autres fonctionnent bien. J’ai cru avoir trouvé le graal mais malheureusement le code n’a pas fonctionné 🙁 Si vous avez une idée ou update du sujet je suis preneur !
Bravo pour votre site rempli d’astuces,
Belle journée,
Julien
Bonjour, si ça ne fonctionne ni avec Locotranslate ni avec le snippet, je ne sais quoi te dire. Peut-être voir avec un prestataire développeur du coup.
Super, merci bcp !!! PEut on changer la couleur du texte en même temps ?
Bonjour pour la couleur du texte, il faudra ajouter du code css dans le fichier style.css
Bonjour Alex,
existe t il un moyen de savoir dans quel plugin ou thème se situe un mot à traduire sans avoir à faire une recherche par plugin ?
J’utilise locotranslate.
Merci pour votre aide 🙂
Bonjour, pas vraiment mais suivant où elle se trouve ça te donne souvent un indice 😉
Bonjour,
et comment faire lorsque le site est en deux langues?
est-il possible d’ajouter une variante de traduction dans le fichier function, plutôt qu’une traduction définitive ?
merci pour votre lumière
Bonjour,
Oui tu peux utiliser une condition PHP sur la langue de la page.
Salut à toute l’équipe !
Je suis désespérée car il m’est impossible de traduire entièrement mon thème. J’ai traduit tous les fichiers .po avec Poedit, j’ai ajouté le snippet au fichier functions.php de mon thème enfant, mais certaines chaines de caractère ne veulent toujours pas se traduire… Auriez-vous une autre solution ?
Merci !
Difficile à dire comme ça, cela vient peut-être d’une extension à traduire.
Ça fonctionne bien, mais si on a plusieurs chaine de caractères à traduire, comment ont écrit le snippet.
Bonjour, il faut redéfinir la fonction autant de fois que nécessaire en changeant son nom à chaque fois.
Super!! c’est exactement ce que je cherchais, après plusieurs heures je vais pouvoir me retirer ça de la tête, merci!
Bonjour,
J’ai dû changer le mot “or” en “ou”. Le problème c’est qu’avec cette fonction ça me change toutes les mots contenant le mot “or” en “ou” comme par exemple elementor devient elementou, categorie devient categouie. Comment je peux faire pour faire échapper “or” dans la fonction en disant que c’est un mot entier ?
Hello, tu ne peux pas. Tu as essayé via l’extension Loco Translate plutôt ?
Merci beaucoup,
C’est un bon article qui vient de régler mon problème. J’ai utilisé le plugin Snippets code.
Je voudrais savoir comment utiliser aussi ce code pour traduire plusieurs chaînes de caractères ?
J’ai répété la fonction et ou le code en entier mais ça ne marche pas.
Aidez moi alors.
Merci d’avance
Hello, il faut renommer la fonction à chaque fois que tu veux l’utiliser plusieurs fois car on ne peut pas déclarer deux fois une fonction avec le même nom.
Bonjour,
Le snippet proposé peut-il fonctionner pour traduire un plugin ?
J’utilise Loco Translate pour traduire un plugin mais une chaîne de caractères que j’aimerais traduire n’apparait pas dans la liste de l’extension. J’ai donc essayé le snippet suivant… sans succès.
Merci 🙂
Bonjour, oui ça marche aussi.
Bonjour,
Merci pour cette astuce. Comment faire pour renommer la fonction ? Je suis débutante et je ne sais pas comment faire pour ajouter plusieurs termes à traduire.
Merci d’avance
Bonjour, tu peux ajouter un “2” après le nom de la fonction par exemple.
Bonjour, ce snippet serait bien intéressant mais le code php proposé n’est pas bien rédigé.
Bonjour, pourquoi ça ?
function change_translate_text( $translated_text ) {
if ( ‘Old Text’ === $translated_text ) {
$translated_text = ‘New Text!’;
}
return $translated_text;
}
add_filter( ‘gettext’, ‘change_translate_text’, 20 );
Super, merci beaucoup. Je suis complètement néophyte avec WordPress ( ex Joomla et Virtuemart) et si je veux modifier plusieurs traductions, quelle est la solution svp
Bonjour, je m’appelle Sergio et j’habite en Guyane Française. Je lis pas mal de vos articles qui sont très intéressants (surtout pour les débutants). Je travaille actuelle sur un site multilangue (français-portuguais) et voudrais traduire une chaine de caractères dans le plugin “Contact form 7” qui n’est pas encore traduit en portuguais. Mon problème est que si je fais une traduction dans mon fichier function.php ce qui sera remplacé se verra tant dans la partie portuguais que dans la partie français. Question : est-ce que je peut faire une remplacement de caractères genre “veuillez choisir une option” dans mon site portuguais et garder la même expression dans mon site français ?
Bonjour, tu dois faire une condition PHP sur la langue pour que tout fonctionne bien.