Comment localiser les thèmes et les plugins de WordPress avec GetText
Si votre blog est exécuté en plusieurs langues, le thème et les textes des plugins devraient être localisés, ainsi que tous les contenus de l’affiche. Nous allons vous montrez comment faire cela avec l’ensemble GetText.
GetText et WordPress
GetText est un programme de traduction de textes. C’est gratuit et compatible avec n’importe quel serveur Web. WordPress l’utilise de façon approfondie et toutes les emplacements de WordPress sont basés sur GetText.
Il y a quelques étapes de localisations avec GetText:
- Envelopper chaque texte dans un appel GetText
- Créer une liste de textes
- Traduire cette liste dans des langues différentes
- Dire à WordPress d’utiliser la traduction
Une fois que ceux-ci sont exécutés, la même page peut être affichée dans différentes langues. Le code PHP affichera les chaînes de caractères dans la langue sélectionnée, alors que le formatage de la page reste la même.
Un seul fichier PHP peut maintenant rendre des contenus en plusieurs langues, sans qu’il soit nécessaire de modifier le code. Et, quand vous voulez soutenir de nouvelles langues, il vous suffit d’ajouter un nouveau fichier de chaîne de traduction.
Envelopper les chaînes de caractères dans les appels GetText.
N’importe quel texte qui apparaît sur la page doit être traduit. Il y a deux sortes de chaînes de caractères auxquelles vous devrez faire attention:
- Les chaînes de caractères du texte HTML. Par exemple <h3>Laisser une réponse</h3>
- Les chaînes de caractères en code de PHP: Par exemple: <?php comments_number(’Pas de Réponses’, ‘Une Réponse, ‘% Réponses’ );?>
Tout enchaînement qui n’est pas a l’intérieur d’un appel PHP va devoir changer. Simplement envelopper comme:
<h3><?php _e('Laisser une réponse',my_theme_name); ?></h3>
Ce que cela fait est simplement de dire au PHP d’afficher cet enchaînement. Nous l’avons enveloppé dans l’appel écho GetText _e (), afin que GetText soit en mesure de reprendre la traduction de cette chaîne.
Si l’enchaînement apparaît déjà a l’intérieur du code PHP, nous l’envelopperons dans l’appel GetText:
<?php comments_number(__('Pas de Réponses',my_theme_name),
__('Une Réponse',my_theme_name),
__( '% Réponses',my_theme_name) );?>
Remarquez que nous avons utilisé un différent appel GetText (__). Celui-ci renvoie la même traduction, mais ne fait pas l’écho du rendement.
Domaines de textes
Avez-vous remarqué le deuxième argument dans les appels GetText? C’est un argument optionnel qui rapporte le champ (domaine) du texte au GetText. Si fourni, ce GetText retournera les traductions dans le dictionnaire que vous offrez avec ce nom de domaine. Bien qu’il soit optionnel, spécifier le domaine de la traduction est fortement recommandé. Sans lui, GetText pourra donner une autre traduction, si la même chaîne apparaît aussi dans un plugin différent, ou dans WordPress.
Créer une liste de textes à traduire.
Lorsque tous les textes ont été envelopper dans les appels GetText, il sera temps de les compiler dans une liste qui va ensuite être traduite. Vous devriez créer un fichier .po (Portable Object) portable. C’est un fichier de texte qui contient toutes les chaînes de caractères à traduire avec des commentaires. Lorsque ce fichier sera traduit, il inclura aussi la traduction.
L’ensemble GNU GetText vient avec une commodité qui extrait les chaînes de caractères à partir des fichiers de source. Malheureusement, cet outil n’a pas été construit spécialement pour PHP. Il est limité dans le type de données qu’il peut traiter et ne supporte pas beaucoup de choses qui sont généralement utilisées dans PHP.
Par conséquent, plusieurs programmeurs et concepteurs de thèmes doivent se résoudre a la compilation manuelle des fichiers .po. Vous pouvez utiliser un extracteur de PHP a .po gratuit sur le Web. Cet outil va analyser un seul fichier PHP, ou plusieurs fichiers à l’intérieur d’une archive au format ZIP et créer un fichier. po à partir de leurs fichiers.
Lorsque vous mettez à jour la traduction (nouvelle version du thème ou plugin), vous pouvez obtenir l’ancien fichier .po avec les traductions existantes. Cette commodité va ensuite soutenir toutes traductions de textes inchangés.
Traduire les chaînes de caractères avec Poedit
Pour traduire les fichiers .po, vous pouvez utiliser le programme gratuit Poedit. C’est gratuit et disponible pour Windows, Mac et Linux. Poedit est un programme simple, mais puissant. L’une des meilleures caractéristiques est qu’il permet aux traducteurs (et vous) de voir le contexte des chaînes de caractères à traduire.
Étapes pour traduire un fichier .po
- Créer une copie du fichier .po par langue. Utiliser le nom de la personne de la région. Par exemple, pour traduire en allemand suisse (allemand, parlé en Suisse), nommez le de_CH.po.
- Envoyer ce fichier .po à votre traducteur. Au départ, vous pouvez également envoyer le fichier ZIP qui contient votre thème ou plugin, de sorte que le traducteur peut voir où les chaînes de caractères sont utilisées.
- Quand vous récupérez les fichiers .po, utilisez Poedit pour créer les fichiers .mo équivalents.
Le fichier .po est tout ce que le traducteur à besoin pour pouvoir traduire. Si vous incluez aussi les fichiers de source, dont les chaînes de caractères ont été extraites, le traducteur sera capable de mieux comprendre d’où ces chaînes sont utilisées dans le site Web.
Par exemple, si votre nom de thème est ’solar_attack’, et vous créez un fichier ZIP appelé solar_attack.zip, envoyez le au traducteur avec le fichier .po. Le traducteur va extraire ce ZIP dans le même dossier où ce trouve le fichier .po.
Ensuite, lorsque les traducteurs éditent le fichier. po (dans Poedit), ils seront capable de cliquer sur ‘référence’, pour chaque chaîne de caractères et voir l’emplacement dans les fichiers PHP où elle apparaît.
Quand Poedit enregistre le fichier .po, il génère automatiquement un fichier .mo (Machine Object). Ce fichier à le même contenu que le fichier .po, mais est conçu pour être lu par un ordinateur. Ceci est le fichier qui doit être inclus dans le thème ou le répertoire plugin pour que GetText puisse fournir les chaînes de caractères traduites.
Dire à WordPress d’utiliser la traduction
Après avoir placer les fichiers .mo dans le thème ou le répertoire plugin, vous devez dire à WordPress d’utiliser cette traduction. Pour les thèmes, ajoutez cette déclaration:
<?php load_theme_textdomain(my_theme_name);?>
Cette déclaration devrait apparaître dans n’importe quelle page du site Web pour que vous puissiez simplement la placer en tête du fichier.php.
Pour les plugins, vous pouvez inclure la fonction suivante:
$my_translator_domain = MY_TEXT_DOMAIN;
$my_translator_is_setup = 0;
function fabfunc_setup(){
global $my_translator_domain, $my_translator_is_setup;
if($my_translator_is_setup) {
return;
}
load_plugin_textdomain($my_translator_domain,
PLUGINDIR.'/'.dirname(plugin_basename(__FILE__)),
dirname(plugin_basename(__FILE__)));
}
Cette fonction va charger et fixer le domaine de traduction une seule fois pour le plugin.
Ressources
- WordPress: Écrire un plugin
- WordPress: Traduire WordPress
- ICanLocalize: Extracteur Web de PHP à .PO
- Éditeur de traduction: Poedit