WordPress, poEdit – localiser avec poEdit un thème WordPress à l’aide du fichier de langue



On va livrer le .po aux roses de la localisation de votre thème. Imaginons un cas de figure simple et diablement réel, en clair « un business case », vous souhaitez faire un thème multilingue à partir d’un thème existant. Cela va sans dire le thème est loin d’avoir été prévu pour être utilisé dans une langue autre que celle de Shakespeare. Pour une compréhension rapide et se permettre des mauvais jeux de mots, nous faisons référence directement à l’extension du fichier pour désigner les deux fichiers de traduction indispensables sous Wordpdress : le fichier source fr_FR.po et sa version fr_FR.mo compilé.

Pour information, selon wikipedia et pour votre information, Poedit est un logiciel libre d’aide à la traduction utilisant la bibliothèque Gettext. C’est une aide pour le processus de développement d’internationalisation et de localisation.. Nous utiliserons quant à nous comme logiciel pour éditer le .po, notre logiciel d’édition habituel : TextMate.

Dans notre exemple, notre thème se nomme nom-du-theme. Ce thème comprend les deux fichiers fr_FR.po et sa version compilée fr_FR.mo sous PoEdit.

Le .po de FR

Vous ouvrez le fichier fr_FR.po avec un éditeur genre Notepad ++ sur PC, TextMate sur Mac. Vous y ajoutez les lignes manquantes et le tour est joué avec la traduction en dessous. Il ne vous reste ensuite qu’à enregistrer en fr_FR.po puis à envoyer le tout en FTP dans le répertoire du thème qui est celui de votre site.

Un fr_FR.po fr_FR.mo sur mesure dans un thème WP
Wordpress, poEdit - localiser avec poEdit un thème WordPress à l'aide du fichier de langue

Les fonctions de traduction de WP

On trouve de texte en anglais souvent collé en dur dans l’ensemble de fichiers .php qui constituent votre thème WP. Il faut rechercher et remplacer ces textes écrits "en dur" afin de les remplacer par des fonctions de traduction propres à un bon fonctionnement WP.

A votre disposition, pour traduire, vous avez globalement deux types de fonction:

  • __ ('phrase-en-anglais', 'nom-du-theme');, cette fonction permet de passer une traduction figurant dans le fichier .mo dans une fonction par exemple. Le second paramètre permet d’indiquer le chemin vers notre thème WP nommé nom-du-theme. Ce paramètre est indispensable
  • _e ('phrase-en-anglais', 'nom-du-theme');, cette fonction fait un équivalent php de la commande echo. Cette dernière publie la traduction figurant dans le fichier .po et de sa version compilée .mo. Le second paramètre permet d’indiquer le chemin vers notre thème WP nommé nom-du-theme. Ce paramètre est indispensable

Un cas concret de traduction

Prenons les textes à traduire de la page d’erreur 404 d’un thème écrit initialement en anglais.

La première chose à faire, il faut placer cette fonction load_theme_textdomain('nom-du-theme'); dans le fichier functions.php. Ce fichier est parti prenante de votre thème WP.

<?php 
/* for the french version */
load_theme_textdomain('nom-du-theme');
 ?>

La visualisation du .po via Poedit
Wordpress, poEdit - localiser avec poEdit un thème WordPress à l'aide du fichier de langue

Le code source du fichier fr_FR.po

	#: comments.php:102
	msgid "Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment."
	msgstr "La modération des commentaires est active et cela peut retarder la publication de votre commentaire. Il n'est pas nécessaire de publier à nouveau votre commentaire."
 
	#: comments.php:102
	msgid "Please note:"
	msgstr "A noter :"
 
	#: category.php:18
	msgid "Read More..."
	msgstr "En savoir plus..."
 
	#: 404.php:12
	msgid "Error 404 - Not Found"
	msgstr "Erreur 404 - Aucun fichier trouvé"
 
	#: 404.php:16
	msgid "Try Going back home"
	msgstr "Essayer de repartir vers la page d'accueil"
 
	#: 404.php:20
	msgid "Or use the search form in the sidebar to find what you're looking for..."
	msgstr "Ou utilisez la recherche situé dans la barre de côté pour trouver ce que vous cherchez..."

Le fr_FR.po sous TextMate. Cela permet plus facilement d’ajouter des lignes dans ce fichier fr_FR.po
Wordpress, poEdit - localiser avec poEdit un thème WordPress à l'aide du fichier de langue

Un type de texte non-traduit dans un template WP sur la page 404 404.php
Wordpress, poEdit - localiser avec poEdit un thème WordPress à l'aide du fichier de langue

Les textes dûment traduits à l’aide des foncions de WP

<?php _e('Error 404 - Not Found', 'nom-du-theme'); ?>
 
 <p><small><strong><?php _e('Please note:', 'nom-du-theme'); ?></strong> <?php _e('Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.', 'panama'); ?></small></p>

Le rendu de la même du thème cette fois-ci traduit à l’aide du fr_FR.po et fr_FR.mo mis à jour
Wordpress, poEdit - localiser avec poEdit un thème WordPress à l'aide du fichier de langue

Des cas plus complexes de traduction

On s’est contenté de traduire avec l’aide de la fonction la plus simple : _e('Error 404 - Not Found', 'nom-du-theme'); qui permet d’afficher dans la page 404, la ligne suivante Erreur 404 - Aucun fichier trouvé

Un première d’usage de la fonction __()

<?php comments_number( __('0 comment', 'nom-du-theme'), __('1 comment', 'nom-du-theme'), __('% comments', 'nom-du-theme') ); ?>

Un deuxième usage de la fonction __()

Le code non-traduit

<p>You must be <a href="<?php echo get_option('siteurl'); ?>/wp-login.php?redirect_to=<?php echo urlencode(get_permalink()); ?>">logged in</a> to post a comment.</p>

Le même code mais correctement traduit

<p><?php printf(__('You must be <a href="%s">logged in</a> to post a comment.', 'nom-du-theme'), wp_login_url( get_permalink() )); ?></p>

Pour aller plus loin