La plupart du temps (et c’est une bonne chose), les plugins pour WordPress fournissent des fichiers contenant leur traduction dans un certain nombre de langues. Seulement voilà, on souhaite parfois adapter cette traduction pour un besoin spécifique. La solution la plus simple est alors de modifier directement le fichier correspondant à notre langue. Mais c’est une erreur et ce pour une raison évidente : lorsque vous (ou la personne qui passera derrière vous) lancerez la mise à jour du plugin, votre modification sera purement et simplement écrasée.
La meilleure solution est donc de surcharger la traduction avec votre propre fichier, que vous placerez au choix dans votre template ou dans un plugin maison.
Première chose à faire : relever le domaine d’application de la traduction. Pour ce faire, allez faire un tour dans le fichier php principal du plugin et cherchez une ligne similaire à celle-ci :
load_plugin_textdomain('domaine', false, dirname( plugin_basename( __FILE__ ) ) . '/languages/');
Le premier paramètre de cette fonction est le domaine qui nous intéresse. Ouvrez ensuite le fichier functions.php de votre template (ou le fichier php de votre plugin maison), et copiez le code suivant :
add_action( 'after_setup_theme', 'changeLanguage' );
function changeLanguage(){
unload_textdomain( 'domaine' );
load_plugin_textdomain('domaine', false, '../themes/nomDeMonTemplate/languages/');
}
Le fait d’appeler l’action ‘after_setup_theme’ nous assure que la fonction changeLanguage() sera bien lancée après le chargement du plugin dont on souhaite modifier la traduction. La fonction unload_textdomain() va, comme son nom l’indique, décharger (et donc ne plus tenir compte de) la traduction fournie par le plugin. Puis on charge le nouveau fichier de traduction grâce à la fonction load_plugin_textdomain().
Une fois ce code placé au bon endroit, il ne vous reste plus qu’à copier/coller le fichier .po de la traduction originale à l’endroit de votre choix (que vous avez défini comme 3e paramètre de la fonction load_plugin_textdomain()), l’ouvrir, le modifier et le sauvegarder à l’aide du logiciel poedit. Et le tour est joué !
Désormais, vous pourrez mettre à jour les plugins installés sur votre WordPress sans crainte de perdre vos traductions maison.
Bonjour,
Merci pour cette astuce effectivement intéressante par contre je me pose la question si ce code est tjs d’actualité car il y a eu me semble t-il des modifs pour la traduction depuis?
Est-ce que l’on doit sauvegarder juste les quelques chaînes modifiés ou faut-il stocker tout le fichier ?
D’aure part peux t-on créer un sous-répertoire (thème enfant par ex.) pour stocker ces fichiers ?