Traduction d’un thème-enfant dans WordPress

Michaël 7

Bonjour,

Me revoilà pour un article sur la traduction d’un thème WordPress. Comme je vous l’ai indiqué, j’ai adapté le thème “aster”. Pour les modifications effectuées dans un thème-enfant, vous pouvez vous référer à un de mes articles précédent (Créer un thème dans WordPress). Le seul hic, c’est que le thème dont je suis parti était en anglais 🙁 Du coup je me suis renseigné sur le moyen de le traduire. Là encore, ça peut en intéresser certains, alors je vous donne mon modop.

Le système de traduction de WP se base sur des fichiers .pot, .po et .mo. La première étape est de trouver le fichier .pot de votre thème principal. Dans mon cas, il se trouvait dans le sous-répertoire “languages” du répertoire du thème “aster” : www/Wordpress/wp-content/themes/aster/languages/aster.pot.

Ces fichiers peuvent s’ouvrir et s’utiliser avec le logiciel PoEdit qui est disponible gratuitement sur le net. Ouvrez donc le fichier .pot avec PoEdit, et cliquez sur “Créer une nouvelle traduction”, en bas de la fenêtre.

Choisissez bien la langue dans la fenêtre qui s’ouvre : “français (France)”. Le logiciel va créer un fichier “fr_FR.po” qui sera la base de votre traduction (en français ici). Et vous allez rapidement comprendre comment cela marche en voyant s’ouvrir la fenêtre suivante. Toutes les phrases ou éléments de texte de votre thème principal sont repris ici, et il va falloir les traduire. Le développeur d’un thème n’affiche jamais son texte directement, mais passe par une fonction bien précise (gettext), qui peut aller chercher les traductions dans les fichiers que nous allons lui donner.

La traduction “à la main” peut s’avérer rapidement fastidieuse. Dans sa version gratuite, PoEdit va vous aider sur quelques premières phrases, mais il va vite s’arrêter, et vous laisser galérer seul. Je n’ai pas fouillé plus loin pour voir si une aide automatique était quand même possible dans la version gratuite : j’y suis allé à la bourrin, et j’ai passé en revue l’ensemble de mes phrases ! N’oubliez pas d’enregistrer régulièrement votre travail !

Quand vous aurez terminé, il faut demander à PoEdit de compiler le fichier (Dans le menu de l’application : “Fichier > Compiler le MO”). Le logiciel va alors enregistrer votre traduction dans un fichier “fr_FR.mo” qui sera utilisable par WordPress. Si vous êtes un peu curiez, ouvrez le fichier .po avec un bloc-note (Notepad++ sous Windows). Vous pourrez constater que le fichier contient pour chaque phrase à traduire :
– le fichier php où se trouve la phrase, ainsi que la ligne dans ce fichier
– la phrase à traduire
– la traduction

Le fichier .mo contient quant à lui des données non lisibles directement, mais WordPress saura très bien l’utiliser.

Bon, dernière étape ! Il faut indiquer à WordPress comment aller lire les informations de traduction. Pour cela, copiez les fichiers “fr_FR.po” et “fr_FR.mo” dans le répertoire de votre thème enfant (histoire d’éviter de le dézinguer à la prochaine mise à jour de votre thème principal), dans un sous-répertoire “languages”, comme ci-dessous :

Et dans le fichier “functions.php” de votre thème enfant, ajoutez la ligne suivante juste sous le chargement du fichier css du thème parent :

load_child_theme_textdomain( 'aster', get_stylesheet_directory() . '/languages' );

Il faut bien sûr remplacer le nom du thème par celui de votre thème parent, juste après l’ouverture de parenthèse. Cela donne donc dans votre fichier “functions.php” :

Et voilà ! Rechargez votre page, éventuellement votre thème, et c’est tout bon !

@+ !

Michaël

Tags:

Michaël

Chrétien, de formation scientifique (chimie) mais recyclé (c'est bien vu à notre époque) dans l'informatique, je m'intéresse à un tas de choses. Vous retrouverez donc ce joyeux mélange sur ce site. Certains sujets m'ayant donné du fil à retordre, je me dis qu'en écrivant ces articles, ça peut aider certaines personnes à trouver plus rapidement.

Comments 7

  1. Salut, merci pour votre articles, il est tres bien
    le probleme c’est qu’il y a des terme qui ne se traduisent pas. avant meme de traduire le child theme, j’ai traduit quelques termes et ca marche tres bien mais il y en a d’autres qui restent les memes sans aucun changement

    1. Merci pour votre commentaire. Normalement, si vous recompilez bien le fichier MO, et que vous le placez au bon endroit pour que WordPress le lise, il ne devrait pas y avoir de souci. Je vois 2 pistes pour essayer de voir d’où cela vient :
      1 – Est-ce que ce que vous voulez traduire est bien bien dans le fichier POT (ou PO)
      2 – Est-ce que le morceau de texte que vous traduisez est au bon format dans le code

      Par exemple, sur la page 404.php du thème principal, le code PHP suivant est présent :
      _e('Sorry, we could not found the page you are looking for!', 'aster')
      C’est ce genre de code qui permet d’indiquer à WordPress d’aller chercher la traduction pour cette phrase,
      et d’aller la chercher dans les fichiers de traduction du thème (“aster” pour moi).

      1. Merci beaucoup pour votre réponse mais ce n’est pas ça malheureusement. en fait, je texplique en details:
        je traduit a l’aide de poedit donc j’ai editer le fichier pot et il m’a generer le fichier mo je l’ai mis dans le dossier convenable et tout les traduction que jai effectué ont marché je recommence pour traduire d’autres phrases (mots) et je remets le nouveaux fichier .mo en place mais rien ne change.. je retraduit les phrases qui sont marché au debut et avec la meme procedures, ca marche
        sachons que les autres phrases qui marches pas apparaissent avec jQuerry genre quand je clique sur recherche, une petite fenetre me montre searche content, c’est l’une des termes qui ne se traduise pas
        desole si c’est pas trop claire jespere que tu comprendras mon probleme

        1. Pas facile de comprendre comme cela en aveugle… Je vais peut-être dire une bêtise, mais est-ce que ça ne pourrait pas être un problème de cache ? A voir en rafraichissant la page et/ou en vidant le cache.
          Ce n’est pas toujours évident, mais il faudrait voir si ces phrases sont bien écrites dans le code, avec le format que j’avais indiqué dans mon commentaire précédent. Il faudrait ensuite comparer l’endroit où se trouve cette phrase à traduire, avec le contenu du fichier PO (avant compilation). Cela permettrait de voir si ces phrases en question font bien partie du fichier de traduction. Peut-être que ce que vous traduisez est une phrase identique, mais à un endroit différent du code…
          J’espère que ça vous mettra sur une piste utile.

Répondre à MichaelT Annuler la réponse

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *