Le mois dernier avait lieu le premier WordCamp Montréal, une fin de semaine de conférences sur un outil qui est cher aux yeux des développeurs chez MA14 : WordPress. Une question fût soulevée lors de la conférence de Matt Mullenweg, co-fondateur du populaire CMS et l’homme derrière Automattic : Est-il possible de rendre WordPress multilingue, et ainsi faciliter la vie à plusieurs Québécois devant gérer du contenu dans les deux langues?
Sa réponse, même s’il ignorait le nom au moment de répondre, est d’utiliser l’extension qTranslate. Une fois l’extension installée, il ne vous suffit que d’internationaliser le thème de votre choix, une étape cruciale et simple… lorsqu’on connaît la procédure!
Repérer le contenu à traduire
Passez les fichiers de votre thème un par un, et quand vous tombez sur du texte à traduire, englobez celui devant être affiché dans la fonction _e(); et celui correspondant à un paramètre dans la fonction __();. Par exemple, le texte suivant :
<p class="center">Sorry, but you are looking for something that isn’t here.</p>
…devient…
<p class="center"><?php _e("Sorry, but you are looking for something that isn’t here.", "kubrick"); ?></p>
J’entends des gens me poser la question «Bon, c’est quoi l’idée de vénérer Stanley Kubrick dans ton exemple?!»
Sachez que «kubrick», utilisé ci-dessus comme nom de domaine, est le surnom de référence du thème activé par défaut sur WordPress depuis 2005. Dans un contexte de traduction, le nom de domaine permet d’identifier une série de chaînes de caractères afin de les regrouper pour les associer à un même fichier de traduction. Il est la clé qui permet l’association entre la phrase originale anglophone et sa version française.
Produire un fichier de traduction
Les habitués de WordPress connaissent bien le fichier fr_FR.mo. Il s’agit d’une version compilée du fichier de traduction de base pour la version française de WordPress. Encore aujourd’hui, il n’existe pas de distinction entre la France et le Canada au niveau de la traduction de WordPress, voilà pourquoi nous utiliserons l’identifiant français. La source du fichier se nomme fr_FR.po et se présente sous la forme d’un fichier texte. Voici un extrait de l’entête et d’une phrase traduite :
"Project-Id-Version: 1.6\n"
"Report-Msgid-Bugs-To: http://wordpress.org/tag/theme\n"
"POT-Creation-Date: 2009-05-18 17:54+0300\n"
"PO-Revision-Date: 2009-06-11 09:38+0100\n"
"Last-Translator: Amaury BALMER
"Language-Team: French (France)
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1\n"
"X-Poedit-Language: French\n"
"X-Poedit-Country: FRANCE\n"
"X-Poedit-SourceCharset: utf-8\n"
#: index.php:36
msgid "Sorry, but you are looking for something that isn’t here."
msgstr "Désolé, mais vous cherchez quelque chose qui n’est pas ici."
Le dernier paragraphe est à répéter autant de fois que vous avez de phrases à traduire. La première ligne identifie l’endroit dans le fichier où se trouve la chaîne originale (à la ligne 36 du fichier index.php). Cette ligne est facultative, mais c’est une bonne pratique qui risque d’épargner beaucoup de temps autrement investi sur de la recherche. Vous aurez compris que la ligne du milieu représente la cible et que la dernière ligne représente le contenu devant remplacer cette cible.
Une fois le fichier de traduction complété, vous devez le compiler à l’aide d’un logiciel tel Poedit (disponible sur Windows, Mac et UNIX). Pour se faire, simplement ouvrir votre fichier fr_FR.po et sauvegarder votre fichier. Le logiciel compile celui-ci automatiquement, vous vous retrouverez donc avec un fichier fr_FR.mo prêt à être utilisé avec votre thème WordPress.
Déclarer le domaine dans functions.php
Une fois les fichiers fr_FR.mo et fr_FR.po (ce dernier est facultatif) transféré dans le répertoire de votre thème, vous devez modifier (ou produire) le fichier functions.php en y ajoutant la ligne suivante :
load_theme_textdomain("kubrick");
N’oubliez pas de remplacer le nom de domaine «kubrick» par celui-ci de votre choix (normalement, le surnom de votre thème). Celui-ci doit être le même que celui utilisé dans les fonctions _e(); et __(); que vous avez intégré à votre thème lors de la première étape.
Une fois ces trois étapes complétées, et si les fichiers produits ne sont pas corrompus (ou ne présentent pas d’incohérence), votre thème est maintenant internationalisé! Pour traduire celui-ci dans une nouvelle langue, vous n’avez qu’à compléter la seconde étape. Pourquoi ne pas produire une copie du fichier fr_FR.po en changeant son extension pour .pot (un standard) et vider ce dernier de son contenu français pour vos futurs besoins linguistiques?

Depuis sa publication, aucun commentaire a été fait sur le sujet. Qu'attendez-vous pour débuter la discussion?