Hou la la! Si vous vous demandez ce que signifie cet article, ne vous inquiétez pas, vous n’êtes pas le seul! Comme vous le savez, WordPress est traduit dans de nombreuses langues, mais très souvent les plugins ou thèmes contiennent des chaînes qui ne sont pas traduites dans votre propre langue et c’est plus que frustrant: c’est irritant.

Alors pourquoi cela arrive-t-il? Probablement parce que les développeurs n’utilisent pas comme ils le devraient internationalisation. C’est-à-dire l’utilisation de fonctions spécifiques incluses dans WordPress qui permettent un moyen facile de tout traduire.

Étape 1 – Chargement des fichiers de traduction

La toute première étape lors de la création d’un thème est de charger des fichiers de traduction, il existe de nombreuses façons de le faire, mais le plus simple est d’utiliser ce code:

add_action('after_setup_theme', 'my_theme_setup');
function my_theme_setup(){
    load_theme_textdomain('my_theme', get_template_directory() . '/languages');
}

Lorsque vous travaillez sur un plugin, c’est à peu près la même chose:

function myplugin_init() {
  load_plugin_textdomain( 'my-plugin', false, dirname( plugin_basename( __FILE__ ) ) ); 
}
add_action('plugins_loaded', 'myplugin_init');

Maintenant que les fichiers sont chargés dans un dossier «languages», vous pouvez créer un fichier .pot ou .po en utilisant PO Modifier logiciel gratuit.

Étape 2 – Traduire les chaînes

Lorsque vous avez besoin d’une chaîne traduisible, vous devez inclure la chaîne contient dans une fonction. Les fonctions les plus utilisées sont _e () et __ (). Voici un exemple d’utilisation de __ ():

echo '<p>' . __( 'This is the string content', 'textdomain' ) . '</p>';

Qu’est-ce que cette fonction renvoie la chaîne contient, mais elle ne l’affiche pas. C’est pourquoi nous devons utiliser l’écho. Mais la fonction _e () imprime la chaîne contient sans utiliser echo ou print:

echo '<p>';
_e( 'This is the string content', 'textdomain' );
echo '</p>';

Étape 3 – Traduction de la chaîne contenant des variables

Mais parfois, votre chaîne peut contenir des variables. L’utilisation de _e () et __ () ne fonctionne pas. Donc, dans ce cas, vous devez utiliser les fonctions printf () et sprintf (). Comme nous l’avons vu précédemment, printf () fait écho à la chaîne tandis que sprintf () la stocke.

echo '<p>';
printf( __( 'I bought %d books.' ), $_books_count );
echo '</p>';

echo '<p>';
echo sprintf( __( 'I bought %d books.' ), $_books_count );
echo '</p>';

Étape 4 – Chaînes avec plus d’une variable

Dans le cas d’une chaîne contenant plus d’une variable, utilisez le code suivant:

printf( __( 'I bought %1$s books, and %2$s tomatoes.' ), $books_count, $tomatoes_count );

Étape 5 – Gérer les pluriels

Dans l’exemple ci-dessus, j’ai acheté des livres et des tomates. Mais qu’est-ce que j’ai acheté un seul livre? Le code imprimera «1 livres», et ce n’est pas correct. Donc, pour traiter le pluriel, il existe une autre fonction appelée _n (). Voici comment l’utiliser:

printf( _n( 'i bought %d book.', 'i bought %d books.', $books_count ), $books_count );

Étape 6 – Contextes

Parfois, un mot peut avoir des significations différentes en raison de son contexte. Vous pouvez ensuite utiliser ces fonctions _x () et _ex (). Le second fait écho à la chaîne tandis que le premier ne stocke que son contenu. Ces fonctions ont un deuxième argument pour expliquer son contexte. Exemple: si un mot est utilisé deux fois dans une page mais a des significations différentes dans le contenu et dans la barre latérale, alors votre code ressemblerait à quelque chose comme ceci:

/*
APPARENT (obvious vs. not clear) — It was apparent to all, Joe was the apparent loser. 
Two different contexts for the word "apparent"
*/

// In the content
echo _x( 'apparent', 'in_content', 'my-plugin-domain' );

// In the sidebar
echo _x( 'apparent', 'in_sidebar', 'my-plugin-domain' );

Étape 7 – Internationalisation Javascript

Et enfin, lorsque vous avez une chaîne à doit être traduisible dans un fichier javascript, vous pouvez utiliser une méthode définie dans le codex en utilisant wp_localize_script ().

// In your PHP file:

wp_enqueue_script( 'script-handle', … );
wp_localize_script( 'script-handle', 'objectL10n', array(
    'speed'  => $distance / $time,
    'submit' => __( 'Submit', 'my-plugin-domain' ),
) );

// in the javascript file:

$('#submit').val(objectL10n.submit);
$('#speed').val('{speed} km/h'.replace('{speed}', objectL10n.speed));

Remplacez simplement vos propres variables et vous avez terminé!

Share: