Traduire n’importe quel mot ou string avec le filtre gettext
Dec 19, 2021
Je vous assure, traduire WordPress, j’en ai vu de toutes les couleurs. Peu importe l’extension que vous utilisez, que ce soit WPML, TranslatePress ou une autre des (nombreuses) solutions disponibles qui aborde la traduction WordPress de manière, et je vous confirme, TRÈS différente l’une de l’autre (ahem, MultilingualPress…), avec l’accumulation de code et d’extensions, il se peut qu’un mot ou une phrase décide de ne pas s’entendre avec vous.
En tout cas, c’était le cas pour moi où certaines strings ne traduisaient pas comme je le désirais.
Un autre cas est : si votre site est disponible en une seule langue et que vous voulez traduire certains mots sans passer par une extension. Dans ce cas, je vous invite à creuser dans ces quelques lignes de code, le filtre gettext
.
<?phpadd_filter( 'gettext', 'translate_strings', 20, 3 );function translate_strings($translated, $original, $domain) {if ($domain == 'woocommerce') {if ($original == 'Store' ) {$translated = 'Exposition';} else if($original == 'General Setting') {$translated = 'Paramètres';}}return $translated;}
Il faut adapter les if / else
et la variable $translated
pour votre cas particulier. N’hésitez pas à laisser vos questions/commentaires dans le bas de la page.
Si vous ne connaissez pas le $domain
, vous pouvez l’ignorer dans votre usage de ce filtre. Comme dans cet exemple, qui utilise l’instruction switch
à la place.
<?phpadd_filter( 'gettext', 'translate_strings', 20, 3 );function translate_strings( $translated, $original, $domain ) {switch ( $original ) {case 'Store' :$translated = 'Exposition';break;case 'General Setting' :$translated = 'Paramètres';break;}return $translated;}
J’espère que ce hook/filtre vous sera d’une certaine utilité comme il me l’a été. Personnellement, je le garde en poche lorsque j’ai du debuggage relié à des traductions WordPress. Au fait, en bon français développeur frontal, suis-je supposé dire Hook? Filter?? Filtre???
Published on December 19, 2021
Written by Vladislav Kim