Traductions de plugin ou de thème WordPress

all-flag

Comment Gérer vous présente deux tableaux résumés des fonctions WordPress pour préparer vos plugins ou thèmes WordPress à l’internationalisation et à la traduction dans toutes les langues.

Comme je suis en train de développer mes propres plugins et propres thèmes pour le moment, je m’attache à respecter les standards définis par WorPress tout comme en HTML5 et en CSS3 (autant que possible si j’ai entièrement “la main”).

Pour cette raison, toutes les chaines qui peuvent être internationaliser et être traduites en plusieurs langues sont systématiquement préparer dans ce sens.

Et il m’arrive souvent de ne pas me rappeler qu’elle est la fonction la mieux adaptée à chaque situation.

publicités

Alors pour gagner du temps et éviter d’aller rechercher à chaque fois l’information dans la documentation WordPress, j’ai regroupé dans un tableau les fonctions utiles pour encoder les chaînes de caractères traduisibles.

Avant cela, je me permets d’ajouter quelques rappels au sujet de l’internationalisation qui n’est pas ici un appel dérivé d’un chant partisan. 😉

i18n, mais qu’est-ce que c’est ?

Qui la première fois ne s’est pas retrouvée devant ces quatre caractères en se demandant mais qu’est-ce que c’est ? Et moi, le premier.

i18n c’est l’abréviation de internationalisation (“internationalization” en anglais. Quelle chance ! Il y a juste une lettre qui change entre le français et l’anglais) et “18” parce qu’il y a 18 lettres entre “i” et “n” !

Qu’est-ce que c’est l’internationalisation (i18n) ?

En informatique et donc dans WordPress, l’internationalisation est le processus de développement de votre plugin ou de votre thème pour le préparer de sorte qu’il puisse facilement être traduit dans d’autres langues.

Et la localisation (l10n) ?

La localisation ou régionalisation est le processus ultérieur de traduction du plugin ou du thème. Des compétences de traducteurs sont nécessaires à cet étape.

La localisation (“localization” en anglais) est abrégé en l10n et “10” parce qu’il y a 10 lettres entre “l” et “n”.

En quoi l’internationalisation (i18n) est importante ?

WordPress est utilisé dans le monde entier. Il représente en avril 2015 (date où je consulte ces statistiques sur w3techs.com) 23,7 % de tous les sites Internet installés dans le monde avec une part de marché de 60,4 % tous CMS confondus !

C’est une raison suffisante et une bonne idée de préparer un plugin ou un thème WordPress pour qu’il puisse être facilement traduit en plusieurs langues.

Et en tant que développeur, c’est à la fois une bonne pratique, un gain de temps et une excellente opportunité.

5 choses à se rappeler

  1. WordPress utilise les bibliothèques et outils gettext pour i18n.
  2. Il est d’usage d’écrire les programmes, plugins, thèmes en anglais ainsi que la documentation qui va avec.
  3. Les chaînes traduisibles sont donc écrites en anglais.
  4. Les chaînes traduisibles sont analysées à partir des appels de fonctions spéciales dans le code source, ils ne sont pas obtenus au moment de l’exécution.
  5. Il faut utiliser un domaine de texte (text domain en anglais. Pas trop compliqué non plus à comprendre en tant que français) propres à votre plugin ou votre thème pour désigner tous les textes appartenant l’un ou à l’autre.

Note : La fonction gettext de référence pour la traduction en PHP est _().
Pour WordPress, la fonction de référence est __() avec un underscore en plus soit deux underscores suivis de parenthèses (ce n’est pas forcément visible selon la police de caractères utilisés). S’il n’y a pas de traduction, le texte original est utilisé.

Tableaux des fonctions spéciales pour internationalisation plugin et thème WordPress

Note : Pour faciliter les lecteurs français, les exemples sont en français. Normalement, les chaînes sont en anglais. Pour chaque fonction, vous avez un lien direct vers le codex WordPress.

Chaînes à traduire en PHP

Pour avoir une chaîne traduisible dans votre développement, il vous suffit simplement d’envelopper la chaîne à traduire dans un __() avec quelques spécificités selon les cas.

Fonction Utilisation Valeurs retournées
__() <?php __( 'texte à traduire', 'texte-domaine' ); ?> Texte traduit.
_e() <?php _e( 'texte à traduire et afficher', 'texte-domaine' ); ?> Ne retourne pas de valeur. Affiche directement le texte traduit.
_n() <?php printf( _n( 'Nous avons un texte à traduire.', 'Nous avons %d textes à traduire.', $nombre, 'texte-domaine' ), $nombre ); ?> Soit le singulier, soit le pluriel du texte traduit.
_nx() <?php printf( _nx( 'Nous avons un texte à traduire.', 'Nous avons %d textes à traduire.', $nombre, 'informations contextuelles pour les traducteurs' , 'texte-domaine' ), $nombre ); ?> Soit le singulier, soit le pluriel du texte traduit dans le contexte.
_x() <?php _x( 'texte à traduire', 'informations contextuelles pour les traducteurs', 'texte-domaine' ); ?> Texte traduit dans le contexte.
_ex() <?php _ex( 'texte à traduire et afficher', 'informations contextuelles pour les traducteurs', 'texte-domaine' ); ?> Ne retourne pas de valeur. Affiche directement soit le singulier, soit le pluriel du texte traduit dans le contexte.

Chaînes à traduire en HTML

Note : Considérez par avance que les traductions ne sont pas des chaînes de confiance. Pensez à les nettoyer avant tout affichage avec un echo.

Fonction Utilisation Valeurs retournées
esc_attr__() <?php esc_attr__( 'texte à traduire', 'texte-domaine' ); ?> Texte traduit échappé pour une utilisation sûre dans un attribut.
esc_attr_e() <?php esc_attr_e( 'texte à traduire et afficher', 'texte-domaine' ); ?> Ne retourne pas de valeur. Affiche directement le texte traduit échappé pour une utilisation sûre dans un attribut. Encode < inférieur, > supérieur, & esperluette, ‘ simple guillemet et double guillemets.
esc_attr_x() <?php esc_attr_x( 'texte à traduire', 'informations contextuelles pour les traducteurs', 'texte-domaine' ); ?> Texte traduit échappé pour une utilisation sûre dans un attribut dans le contexte.
esc_html__() <?php esc_html__( 'texte à traduire', 'texte-domaine' ); ?> Texte traduit échappé pour une utilisation sûre en HTML.
esc_html_e() <?php esc_html_e( 'texte à traduire et afficher', 'texte-domaine' ); ?> Ne retourne pas de valeur. Affiche directement le texte traduit échappé pour une utilisation sûre en HTML. Encode < inférieur, > supérieur, & esperluette, ‘ simple guillemet et double guillemets.
esc_html_x() <?php esc_html_x( 'texte à traduire', 'informations contextuelles pour les traducteurs', 'texte-domaine' ); ?> Texte traduit échappé pour une utilisation sûre en HTML dans le contexte.

Voilà, j’espère que vous comprenez mieux l’utilité de chacune de ces fonctions et vous pouvez vous y référer autant que vous le voulez.

D’autres fonctions existent également. L’essentiel est là avec quelques bonnes bases.

Pour aller plus loin :

La documentation WordPress en anglais : i18n for WordPress Developers avec de bonnes pratiques, quelques astuces supplémentaires entre autres.

Crédit photo : flagburningworld.com [CC BY-SA 3.0], via Wikimedia Commons


Partager cette page Comment Gérer :

Soyez le 1er à donner votre avis sur " Traductions de plugin ou de thème WordPress "

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strong>