Le plug-in de traduction de chaînes String Translation de WPML vous permet de traduire des textes dans votre thème et vos plug-ins.

Toutefois, pour que ces traductions s’affichent sur le site, certaines conditions doivent être remplies :

  • Les textes doivent être enveloppés dans des appels GetText.
  • Un argument domaine de texte est obligatoire.

Tous les textes codés en dur dans le PHP et non enveloppés dans des appels GetText avec un domaine de texte ne seront pas traduits par WPML.

Exemples

Texte statique non enveloppé avec GetText

<h2>Links</h2>

Problème : le mot Links (Liens) n’est pas enveloppé dans un appel GetText. Donc il n’est pas traduisible.

Solution : enveloppez le texte dans l’appel écho GetText :

<h2><?php _e('Links','theme-text-domain'); ?></h2>

Nous avons enveloppé « Links » dans l’appel gettext _e() (écho traduisible). Maintenant, WPML peut le traduire.

Texte dans une fonction non enveloppée avec GetText

by <?php echo(the_author('', false)); ?>

Problème : l’expression n’est pas traduisible.

Solution : cette expression comprend du texte statique et un peu de texte dynamique. Tout doit être enveloppé dans un appel GetText et utiliser des arguments.

<?php printf( __( 'by %s', 'theme-text-domain' ), the_author('', false) ); ?>

Le texte que le traducteur verra est « par %s ». C’est idéal car ainsi le traducteur peut changer l’ordre des mots, ce qui est nécessaire dans certaines langues.

Notez que dans ce cas, nous avons utilisé la fonction d’appel GetText __ (). Cet appel est similaire à _e (), mais il n’effectue pas l’édition (comme le fait écho). L’appel printf s’en occupe.

Absence de l’argument domaine de texte

<?php _e('Roadmap') ?>

Problème : il n’y a pas d’argument domaine de texte dans l’appel GetText.

Solution : ajouter un domaine de texte.

<?php _e('Roadmap','theme-text-domain') ?>

Un domaine de texte indique à GetText (et à WPML) à quoi le texte appartient. C’est une chaîne qui ne veut rien dire, sauf pour vous. Vous pouvez choisir n’importe quelle chaîne, mais vous devez être cohérent. La valeur de domaine de texte regroupera ensemble les chaînes de même nature.

De toute évidence, « domaine-texte-thème » n’est pas un nom unique et valable. Par exemple, si vous avez appelé votre thème « star-geeks« , ce serait une meilleure valeur pour le domaine de texte.