WPML

capture d’écran atahualpaJe vais vous montrer comment utiliser Atahualpa, de Bytes For All, pour créer des sites WordPress multilingues avec WPML.

Un thème pour un site WordPress multilingue doit avoir toutes ses chaînes de texte enveloppées dans des appels gettext, mais ce n’est pas tout à fait suffisant. L’utilisation de gettext dans le thème lui permet de s’afficher dans une langue (unique) différente de celle dans laquelle il a été initialement conçu.

Pour fonctionner de manière multilingue, le thème doit permettre aux visiteurs de choisir leur langue d’affichage et fournir le contenu correct pour chaque langue.

Une version multilingue pour Atahualpa


Commençons par la fin. Voici un site de démonstration propulsé par une version modifiée d’Atahualpa et voici le thème modifié que vous pouvez télécharger et utiliser.

Ce que nous avons modifié pour rendre Atahualpa multilingue

1. Ajouter wpml-integration.php au répertoire du thème


wpml-integration.php se trouve dans le répertoire de WPML sous docs/theme-integration. Il inclut un ensemble de fonctions qui aident à rendre les thèmes multilingues.

Toutes ces fonctions sont conçues pour que les thèmes utilisent WPML s’il est actif ou l’ignorent s’il est manquant. Cela signifie que le thème fonctionnera de manière multilingue si WPML est disponible, ou normalement (dans une seule langue) dans le cas contraire.

Ajouté à functions.php :

include dirname(__FILE__) . '/wpml-integration.php';

Cette instruction charge wpml-integration.php et le rend disponible pour tous les fichiers du thème.

2. Ajouter des sélecteurs de langue


Les sélecteurs de langue permettent aux visiteurs de choisir la langue dans laquelle le site est affiché. Il est souvent judicieux d’ajouter plusieurs types de sélecteurs de langue. Les visiteurs parcourent rapidement le site et recherchent des indices visuels vers les contenus dans leur langue. Différentes personnes regardent à différents endroits, donc l’ajout de différents types de sélecteurs de langue à différentes parties de la page aidera les visiteurs à trouver leur langue.

Nous avons ajouté le sélecteur de langue déroulant de WPML à la barre latérale en l’ajoutant à header.php :

<?php wpml_languages_selector() ?>
atahualpa_drop_down_language_selector
Sélecteur de langue déroulant

Nous avons également ajouté une liste horizontale de langues dans le pied de page du site. De nombreux utilisateurs font d’abord défiler la page jusqu’en bas pour voir ce qui s’y trouve (et quelle est la longueur des pages), c’est donc un bon endroit pour indiquer que les pages sont disponibles dans d’autres langues. Nous avons ajouté le code suivant à footer.php :

<?php wpml_languages_list() ?>
Sélecteur de langue horizontal dans le pied de page
Sélecteur de langue horizontal dans le pied de page

Enfin, nous avons ajouté un sélecteur de langue à la fin de chaque article. Cela ajoute une phrase à chaque article, indiquant dans quelles autres langues il est disponible. Nous avons ajouté ce qui suit à index.php (qui inclut une version personnalisée de la boucle d’affichage de WordPress) :

<?php if(is_singular()) wpml_content_languages(); ?>
Liste des langues de traduction
Liste des langues de traduction

Lorsque les visiteurs cliquent sur « Accueil », ils s’attendent à arriver sur la page d’accueil sans changer de langue. Étant donné que chaque langue possède une « page d’accueil » avec une URL différente, une valeur unique pour toutes ne fonctionnera pas.

Normalement, les thèmes WordPress calculent l’adresse de la page « Accueil » en fonction de la valeur de l’« URL du blog » définie dans la page d'administration. WPML a créé une fonction qui calcule l’adresse d’accueil correcte en fonction de la langue d’affichage.

Nous avons remplacé get_option('home') par wpml_get_home_url(). De plus, la fonction get_option('home') renvoie l'emplacement du site sans barre oblique finale (/), les thèmes l’ajoutent donc manuellement. La fonction de WPML inclut cette barre oblique (il y a une longue histoire derrière cela).

Pour effectuer cette modification, nous avons dû éditer deux fichiers. Nous avons modifié functions/bfa_get_options.php et changé :

$bfa_ata['get_option_home'] = get_option('home');

en
$bfa_ata['get_option_home'] = wpml_get_home_url();

Nous avons également édité functions/bfa_header_config.php et supprimé la barre oblique finale du lien de la page d’accueil :
'<a href="' . $bfa_ata['get_option_home'] . '">' . $bfa_ata['bloginfo_name'] . '</a>'

4. Vraiment avancé – Traduire les textes que les utilisateurs saisissent dans l’écran d’administration du thème


Atahualpa permet de contrôler certains textes via l’écran d’administration. C’est une excellente chose qui permet de gérer le site sans éditer de fichiers PHP. WPML peut également traduire ces chaînes de texte en utilisant son mécanisme de Traduction de chaînes.

Pour ce faire, le thème doit indiquer à WPML quelles chaînes doivent être traduites, puis afficher la traduction si elle existe.

Lorsque les utilisateurs accèdent à l’écran d’administration du thème, mettent à jour les textes et cliquent sur Enregistrer, la fonction bfa_ata_add_admin du fichier functions/bfa_ata_add_admin.php est exécutée. Nous y avons ajouté la section suivante (à partir de la ligne 11) :

global $wpml_translatable_strings;

 foreach($wpml_translatable_strings as $wpml_str ){

   if(isset($_REQUEST['bfa_ata_'.$wpml_str]) && trim($_REQUEST['bfa_ata_'.$wpml_str])){

    wpml_register_string('atahualpa theme', $wpml_str, stripslashes($_REQUEST['bfa_ata_'.$wpml_str]));

  }

 }

Cette fonction parcourt une liste de chaînes définies dans la variable globale $wpml_translatable_strings. Elle enregistre chaque chaîne dans la liste de traduction de chaînes de WPML.

Le premier argument est le contexte des chaînes. N'importe quel nom ferait l'affaire, mais vous devriez choisir un nom qui décrit les chaînes. Le deuxième argument est le nom de la chaîne (il n'est pas traduit). Le dernier argument est la valeur de la chaîne – qui est traduite.

Pour afficher les traductions (si elles existent), nous avons ajouté la fonction wpml_t à functions/bfa_get_options.php (à partir de la ligne 204) :

global $wpml_translatable_strings;

foreach($bfa_ata as $k=>$v){

   if(in_array($k, $wpml_translatable_strings) || $__first){

    $bfa_ata[$k] = wpml_t('atahualpa theme', $k, $v);     

  }

}

Ce code est exécuté lorsque le site est affiché aux visiteurs. Il va parcourir la liste des chaînes, vérifier si elle a été enregistrée pour la traduction (in_array) et si c’est le cas, obtenir la traduction. La fonction wpml_t renverra la chaîne traduite dans la langue actuelle, si la traduction existe, ou renverra simplement la chaîne d'origine s'il n'y a pas de traduction.

Rendre d’autres thèmes WordPress multilingues


Nous avons déjà effectué un travail similaire sur iNove et Arras et prévoyons de convertir davantage de thèmes pour les rendre multilingues.

Notre intention est de fournir des thèmes multilingues prêts à l’emploi et de vous aider à créer vos propres thèmes compatibles multilingues. En utilisant les techniques que nous avons décrites ici, vous pouvez créer des thèmes qui fonctionneront de manière multilingue lorsque WPML est disponible, ou dans une seule langue sans WPML.

Si vous créez des thèmes et avez besoin d’aide pour les rendre multilingues, n’hésitez pas à ouvrir de nouveaux fils de discussion dans le forum.

Vous pouvez également gagner de l’argent (un revenu vraiment passif) en ajoutant la prise en charge multilingue à vos thèmes. Nous parlerons de l’inclusion des ID d’affilié dans les thèmes dans le prochain article.

Vous avez trouvé cela utile ? Partagez cet article :