Comment internationaliser les thèmes et les plugins WordPress

Dans 5 Cardinal Sins of WordPress Theme Development, nous avons brièvement parlé de l’importance de l’internationalisation des thèmes et des plugins, sans pour autant en discuter. Comment pour le faire. 

Si vous êtes dans le thème commercial ou dans l’espace des plug-ins, il est pratiquement prévu que votre travail prenne en charge plusieurs langues. Dans cet article, nous allons comprendre ce qu'est réellement l'internationalisation, pourquoi elle est importante et quelles étapes sont nécessaires pour internationaliser votre projet..


Comprendre l'internationalisation

Quand il s’agit d’internationaliser des projets WordPress, l’aspect le plus difficile est peut-être de comprendre comment le faire. Internationaliser un projet WordPress est en réalité très facile à faire..

Avant de regarder comment le faire, il est important d’examiner l’importance de l’internationalisation et de comprendre pourquoi nous, développeurs, devrions même nous donner la peine de le faire..

L'internationalisation définie

En termes simples, l’internationalisation est le processus par lequel nous préparons notre thème pour la traduction. Cela signifie que peu importe la langue [parlée] utilisée pour développer notre travail, les futurs utilisateurs (ou même les développeurs) peuvent facilement traduire le projet, quelle que soit la langue requise. L'internationalisation ne nécessite pas réellement que nous fournissons les traductions (bien que le multilingue parmi nous puisse facilement le faire), mais nous prenons simplement les mesures nécessaires pour que les futurs traducteurs puissent le faire..

Pourquoi s'embêter?

Il y a des années, j'aurais dit que l'internationalisation ne devrait être réalisée que si le marché cible de votre travail était différent de votre langue maternelle, mais ce n'est plus le cas. Merci à Internet, nous pouvons converser, collaborer, et communiquer avec des gens du monde entier. L'audience potentielle pour un projet donné est plus large que jamais auparavant.

Plus encore, WordPress alimente un nombre important de sites Web modernes. À cette fin, nous devrions penser globalement à notre travail. Je dirais que l'internationalisation des thèmes commerciaux ou des plugins n'est plus négociable. Si la plate-forme sur laquelle votre travail est construit est utilisée dans une variété de langues - et WordPress l'est - et que cette plate-forme fournit un moyen simple et net d'internationaliser un thème - et que WordPress le soit -, la question est plutôt de savoir pourquoi ne pas internationaliser mon travail.

Comment internationaliser

Comme mentionné précédemment, internationaliser un thème représente davantage un effort pour comprendre les fonctions clés de l'API WordPress que le processus de préparation du texte. Donc, avant de regarder un exemple concret, définissons quelques termes et fonctions importants: - Clé d’internationalisation. Vous pouvez considérer cela comme un contexte, un domaine ou un identifiant unique pour vos chaînes..

Quoi qu'il en soit, il s'agit d'une valeur unique et unique que WordPress utilisera pour internationaliser le texte dans votre thème. __ ($ text, $ key) est une fonction qui renvoie une chaîne traduite. Cette fonction ne fait pas écho, n’imprime ou n’affiche pas la chaîne. Il est souvent utilisé pour effectuer une autre opération sur la chaîne traduite (telle que la passer à une autre fonction). Il accepte deux arguments - la chaîne à traduire et la clé d'internationalisation.- _e ($ text, $ key) est une fonction qui fait écho à la chaîne traduite..

Ceci est mieux utilisé lorsque vous devez récupérer une valeur traduite et l'afficher quelque part dans votre thème ou plugin. Load_theme_textdomain ($ domain, $ translation_directory), load_plugin_textdomain ($ domain, $ translation_directory) sont deux fonctions qui indiquent à WordPress où localiser votre traductions. Nous allons examiner ces fonctions un peu plus en détail dans un instant..

Pour l’instant, sachez que chaque fonction a le même objectif, qu’il s’agisse de thèmes ou de plugins. Pour l’essentiel, c’est tout ce qu’il faut savoir pour internationaliser votre thème. À partir de là, nous examinerons exactement ce qui est nécessaire pour mettre ces fonctions en pratique..


Internationaliser votre travail

Affichage du texte traduit

Avant d’internationaliser un thème, voyons à quoi ressemble un balisage standard:

Mon blog WordPress

Juste l'un des meilleurs sites sur Internet

Ce paragraphe est seulement le meilleur paragraphe qui existe dans tous les blogs WordPress sur Internet. Lisez-le et amusez-vous.

Rien de spectaculaire, non? Ressemble à un morceau standard de HTML (qui est tout ce que c'est). Certes, il s’agit d’un exemple simple, mais c’est tout ce qui est nécessaire pour montrer comment internationaliser un thème..

Pour internationaliser ce texte ci-dessus, nous devons déterminer quel identificateur unique nous allons utiliser pour internationaliser notre texte - je vais utiliser «tutsplus». Deuxièmement, puisque tout le texte ci-dessus est affiché à l'écran, nous utiliserons la fonction __e (). Le code internationalisé devrait être:

Mais qu'en est-il du texte qui doit être traduit avant de s'afficher à l'écran? Ce n'est pas très différent mais voyons comment internationaliser les barres latérales.

Traitement du texte traduit

Commençons par configurer la barre latérale:

register_sidebar (array ('name' => 'Custom Sidebar', 'id' => 'sidebar'));

Pour référence, j'utilise la fonction register_sidebar disponible via l'API WordPress. Notez que le nom de la barre latérale est affiché sur l'écran Widgets. En tant que tel, nous devons l'internationaliser. cependant, un tableau n'accepte pas une chaîne en écho - il accepte une valeur de chaîne.

Dans ce cas, nous allons tirer parti de la fonction __ ():

register_sidebar (array ('nom' => __ ('barre latérale personnalisée', 'tutsplus'), 'id' => 'barre latérale'));

Assez facile, hein?

N'oubliez pas que l'internationalisation ne devrait s'appliquer qu'au texte statique. Il n'appartient pas au développeur de fournir une internationalisation du contenu de la page, du contenu de la publication, etc..


Préparer le thème et / ou le plugin pour l'internationalisation

Une fois que vous avez parcouru votre thème et traité correctement le texte devant être internationalisé, vous devez indiquer au thème ou au plug-in où se trouvent les fichiers d'internationalisation. Nous y reviendrons plus en détail dans un instant, mais je recommande tout d'abord de créer un répertoire "lang" à la racine du répertoire du thème ou du plugin pour stocker les fichiers d'internationalisation..

Vous souvenez-vous des fonctions load_theme_text_domain et des fonctions load_plugin_text_domain antérieures? C'est là que nous les utilisons. Si vous travaillez avec un thème, nous devrons définir une fonction personnalisée appelée dans le hook after_setup_theme:

function custom_theme_setup ()  // finit custom_theme_setup add_action ('after_setup_theme', 'custom_theme_setup');

Ensuite, nous dirons à la fonction où localiser les traductions. Pour ce faire, ajoutez ce qui suit aux lignes de votre thème (notez les commentaires expliquant le rôle de chaque ligne):

function custom_theme_setup () // Récupère le répertoire des fichiers d'internationalisation $ lang_dir = get_template_directory (). '/ lang'); // Définit le domaine de texte du thème en utilisant l'identifiant unique indiqué ci-dessus load_theme_textdomain ('tutsplus', $ lang_dir);  // end custom_theme_setup add_action ('after_setup_theme', 'custom_theme_setup');

Relativement simple, non? Ce n'est pas très différent pour les plugins non plus. Semblable aux thèmes, je place toujours mes fichiers d'internationalisation de plugin dans un sous-répertoire 'lang'. Tout d’abord, nous devons dire à WordPress où se trouvent les fichiers d’internationalisation. En supposant que le vôtre se trouve dans un répertoire 'lang':

load_plugin_textdomain ('tutsplus', false, dirname (plugin_basename (__ FILE__)). '/ lang /');

Le second paramètre - où nous avons spécifié 'false' - est nécessaire mais correspond à une fonction déconseillée dans WordPress.

Enfin, nous devons déterminer où appeler la fonction load_plugin_textdomain. Si nous écrivons un widget, je place généralement cet appel de fonction dans le constructeur:

class My_Custom_Widget function My_Custom_Widget () load_plugin_textdomain ('tutsplus', false, dirname (plugin_basename (__ FILE__)). '/ lang /');  // constructeur de fin // fin My_Custom_Widget

Si nous écrivons un plugin vanilla, vous pouvez indiquer à WordPress où se trouvent les fichiers de traduction de différentes façons, mais vous avez la possibilité de vous connecter à la after_setup_theme une fonction. Semblable au code de thème ci-dessus, vous pouvez le placer dans votre plugin:

function custom_plugin_setup () load_plugin_textdomain ('tutsplus', false, dirname (plugin_basename (__ FILE__)). '/ lang /');  // end custom_theme_setup add_action ('after_setup_theme', 'custom_plugin_setup');

À ce stade, votre thème ou plugin sont prêts pour l'internationalisation..


Deux autres considérations

À ce stade, vous avez terminé, mais il est toujours utile de savoir ce qui est nécessaire pour faire avancer votre travail. Voici les deux tâches en suspens que les traducteurs effectueront normalement pour traduire votre thème.

  • Traduit le texte. Les traducteurs traiteront votre thème via une application de traduction (telle que POEdit) qui générera des fichiers stockés dans votre répertoire "lang", où WordPress récupérera les fichiers..
  • Mises à jour de WP-Config.php. À ce stade, les traducteurs devront demander à WordPress d'activer l'internationalisation et de spécifier la langue utilisée. Cela dépasse le cadre de cet article, mais vous pouvez en lire plus à ce sujet dans le Codex..

Contrairement à certains des autres environnements de développement disponibles, WordPress facilite considérablement l'internationalisation de votre travail. La partie la plus difficile est sans doute de comprendre les fonctions clés nécessaires pour préparer vos chaînes à l’internationalisation..

De plus, la refactorisation du travail existant peut toujours prendre beaucoup de temps. Dans le contexte de WordPress, c'est peut-être fastidieux mais c'est relativement facile à faire. Si vous avez d'autres suggestions ou questions concernant l'internationalisation, n'hésitez pas à les laisser dans les commentaires.!