Découvrez comment utiliser les fonctions gettext pour rendre les textes des thèmes et des extensions traduisibles dans WPML.
Pour vous assurer que les textes des thèmes et des extensions sont traduisibles et s’affichent correctement sur votre site, vous devez remplir deux conditions :
- Envelopper les textes dans une fonction gettext
- Inclure un argument de domaine de texte
Les bases de gettext
Considérez la chaîne de texte suivante, « Thank you! », qui appartient au domaine « my-plugin-domain » :
__( 'Thank you!', 'my-plugin-domain' );
Pour afficher la chaîne de texte dans le navigateur, utilisez la fonction _e() :
_e( 'Thank you!', 'my-plugin-domain' );
Lorsque vous utilisez du HTML, enveloppez-la dans des balises HTML :
<h2><?php _e( 'Thank you!', 'my-plugin-domain' ); ?></h2>
Si vous avez un lien séparé du texte environnant, utilisez la fonction esc_html_e() :
<a href="http://wpml.org/" ><?php esc_html_e( 'Translated with WPML', 'my-domain' ); ?></a>
Bonnes pratiques pour gettext
1. N’enveloppez jamais une variable ou une constante dans une fonction gettext
Cela rendra les chaînes impossibles à analyser, et donc non traduisibles.
Incorrect
<?php
if ( $morning ) {
define( 'GREETING', 'Good morning' );
} else {
define( 'GREETING', 'Good afternoon' );
}
_e( GREETING, 'my-domain' );
?>
Correct
<?php
if ( $morning ) {
_e( 'Good morning', 'my-domain' );
} else {
_e( 'Good afternoon', 'my-domain' );
}
?>
2. Échappez la sortie pour des raisons de sécurité
Si une chaîne de texte est immédiatement rendue dans la sortie, utilisez des fonctions d’échappement, comme esc_html_ et esc_attr_ pour vous protéger contre les attaques XSS.
echo '<div>' . esc_html__( 'Back to homepage', 'my-domain' ) . '</div>';
3. Ajoutez des commentaires pour les traducteurs
Cela aide les traducteurs à comprendre le contexte dans lequel les textes ou les variables apparaissent.
/* translators: %1$s is status label (e.g. "active" and %2$s is quantity of bits/s (e.g. 12 Gbit/s) */ printf( esc_html__( 'State of your network is %1$s. Maximum download speed is %2$s.', 'my-plugin-domain' ), $state, $speed );
Ressources supplémentaires
Pour en savoir plus sur gettext, consultez le Codex WordPress officiel.