GeoDirectory

Charger correctement les fichiers de langue WordPress

Les fonctionnalités de localisation de WordPress vous permettent de rendre les plugins et les thèmes facilement traduisibles via les fichiers de langue WordPress (fichiers po/mo).

C'est vrai notamment depuis WordPress 3.7 et c'est devenu bien plus simple depuis WordPress 4.6.

De nombreuses améliorations ont été apportées à l'ensemble du système de traduction de WordPress, et j'ai estimé qu'un article remis à jour s'imposait vraiment.

Les fichiers de langue WordPress – La confusion ( Édition développeurs )

Pour les développeurs, tout se résume à la façon d'indiquer à WordPress que vous disposez de fichiers de traduction de la bonne manière.

En tant que développeurs, on nous a dit d'utiliser « load_plugin_textdomain() » et de le pointer vers notre fichier de langue dans le dossier de notre plugin.

Cependant, par le passé, c'était le seul endroit où WordPress regardait et si un client y ajoutait son propre fichier de langue, celui-ci disparaissait à la prochaine mise à jour !

Il y a quelque temps, un article sur le web préconisait d'effectuer un second appel, cette fois avec la fonction « load_textdomain() », pour pointer vers un fichier dans le dossier des langues de WP, et c'est ce que beaucoup de personnes ont fait (nous y compris).

Cela permettait aux utilisateurs de placer leurs fichiers de langue à un emplacement prédéfini dans le dossier des langues de WP, et la traduction n'était ainsi pas perdue lors de la mise à jour du plugin.

Les fichiers de langue WordPress – La confusion ( Édition utilisateurs )

Les utilisateurs doivent savoir où placer une traduction personnalisée pour un plugin/thème ; le problème est que par le passé, cet emplacement pouvait être plusieurs endroits différents.

La documentation WP indique aux développeurs de créer un lien vers un dossier appelé « languages » à l'intérieur de leur dossier de plugin, mais le développeur peut utiliser le dossier « lang » et même dans ce cas, cela sera perdu lors de la mise à jour du plugin/thème.

Certains développeurs ajoutaient une seconde vérification, là encore à un emplacement choisi par le développeur, mais souvent dans un dossier au nom personnalisé dans le dossier des langues de WP.

Cela signifiait qu'il n'existait aucun moyen cohérent pour un utilisateur de savoir où placer ses fichiers de traduction personnalisés en toute sécurité.

Charger les fichiers de langue de la bonne façon (2017)

Depuis WP 4.6, c'est devenu bien plus simple, aussi bien pour les utilisateurs que pour les développeurs !

En tant que développeur, vous devez simplement vous assurer que vous chargez vos fichiers de langue correctement, en suivant la documentation WP ci-dessous :

<br />
// for plugins<br />
add_action( 'init', 'myplugin_load_textdomain' );<br />
function myplugin_load_textdomain() {<br />
  load_plugin_textdomain( 'my-plugin', false, basename( dirname( __FILE__ ) ) . '/languages' );<br />
}<br />

<br />
// for themes<br />
add_action( 'after_setup_theme', 'my_theme_setup' );<br />
function my_theme_setup(){<br />
    load_theme_textdomain( 'my-theme', get_template_directory() . '/languages' );<br />
}<br />

Notez que nous déclenchons ces actions sur les hooks 'init' et 'after_setup_theme', ce qui devrait garantir un chargement sans problème.

Si vous les déclenchez directement ou avant leurs hooks respectifs, vous risquez de rencontrer des problèmes avec certaines chaînes non traduites, et les plugins destinés à manipuler les traductions ou à créer des sites multilingues, comme WPML, pourraient ne pas fonctionner du tout.

En tant qu'utilisateurs, nous disposons désormais d'un emplacement pratique et au nommage cohérent où placer nos fichiers de langue.

'my-plugin' et 'my-theme' correspondent au textdomain du plugin/thème (généralement indiqué dans le fichier readme.txt du plugin ou en haut du fichier style.css du thème).

Il s'agit d'une nette amélioration par rapport à l'ancienne méthode et cela évitera, dans la plupart des cas, de perdre les traductions lors des mises à jour.

Dans certains cas, le plugin/thème peut déjà disposer d'une nouvelle traduction dans votre langue stockée sur wp.org ; si c'est le cas, elle pourrait écraser votre fichier .mo, mais dans la plupart des situations, c'est ce que vous souhaiterez.

Vous pouvez contribuer aux traductions sur wp.org si le plugin y est hébergé ; s'il s'agit d'un plugin premium, il y a peu de chances qu'il soit écrasé.

Informations complémentaires

WordPress tentera de trouver vos fichiers de langue WordPress à plusieurs endroits ; pour un plugin avec le textdomain 'my-plugin', il cherchera d'abord ici :

/wp-content/languages/plugins/my-plugin-en_US.mo

S'il ne trouve pas de traduction à cet emplacement et que le plugin indique où en trouver une en local, il cherchera là :

/wp-content/plugins/my-plugin/languages/my-plugin-en_US.mo

Si le plugin ne spécifie pas de chemin, WordPress cherchera ici à la place :

/wp-content/languages/my-plugin-en_US.mo

La documentation WordPress doit être suivie, mais en réalité, à partir de WP 4.6, vous n'avez même pas besoin de spécifier un fichier local si vous n'en incluez aucun (s'ils sont stockés sur le dépôt wp.org), vous pouvez donc simplement ajouter ceci :

<br />
// for plugins<br />
add_action( 'init', 'myplugin_load_textdomain' );<br />
function myplugin_load_textdomain() {<br />
  load_plugin_textdomain( 'my-plugin');<br />
}<br />
<br />
// for themes<br />
add_action( 'after_setup_theme', 'my_theme_setup' );<br />
function my_theme_setup(){<br />
    load_theme_textdomain( 'my-theme');<br />
}<br />

J'espère que cela clarifie un peu les choses concernant les traductions, et si vous avez des questions ou quelque chose à ajouter, veuillez laisser un commentaire ci-dessous.