Comment traduire son thème WordPress dans un thème enfant ?

Traduire son thème enfant peut s’avérer complexe… Pourtant, vous avez pu voir dernièrement sur WPFormation qu’il était très facile de traduire son thème à l’aide de l’extension Loco Translate… Toutefois, si vous préférez ne pas être dépendant d’un plugin, il existe une autre solution : traduire son thème WordPress dans un thème enfant avec Poedit. Découvrons ensemble les étapes pour y parvenir…

Traduire son thème enfant

 

Étape 1 : préparez l’environnement nécessaire pour traduire son thème enfant

L’une des solutions, non convenable, serait de créer un fichier de traduction directement dans votre thème parent… Le souci serait que votre traduction disparaitrait à la prochaine mise à jour de thème ! Il va donc falloir, au préalable, créer un thème enfant. Si vous n’en possédez pas déjà un, vous pouvez lire cet article qui vous aidera à le créer facilement.

Ensuite, vous devrez vous procurer le logiciel Poedit qui propose une version gratuite qui sera suffisante pour effectuer les changements dont vous aurez besoin. Ce logiciel est disponible pour Mac et PC sur le site officiel. Téléchargez-le puis installez-le sur votre ordinateur.

Étape 2 : récupérez le fichier .po disponible dans votre thème parent

Dupliquer le fichier po en local

 

Pour pouvoir créer votre traduction, vous aurez besoin du fichier .po de votre thème parent. Vous le trouverez certainement dans le dossier languages ou lang du thème. Celui-ci pourrait apparaitre sous le nom de en_EN.po ou même sous xx_XX.po si les développeurs du thème ont prévu cela. Une fois le fichier repéré, enregistrez-en une copie dans votre environnement local, sur votre desktop par exemple.

Étape 3 : créez un nouveau fichier de traduction avec Poedit

Dès lors que votre environnement est prêt, vous allez pouvoir commencer votre traduction. Quelques étapes suffiront pour obtenir votre nouveau fichier fr_FR.po, toutefois, si vous désirez traduire votre thème dans une autre langue que le français, reportez-vous à la documentation pour obtenir le code officiel du langage souhaité :

Créer une nouvelle traduction avec Poedit

  1. Ouvrez Poedit puis cliquez sur “créer une nouvelle traduction”
  2. Une popup va s’ouvrir et vous permettra de sélectionner le fichier que vous venez d’enregistrer localement (cf : étape 2), le fameux en_EN.po, ensuite cliquez sur “ouvrir”
  3. Poedit va vous demander de définir la langue de cette nouvelle traduction, sélectionnez “français” puis cliquez sur “accepter”.

Étape 4 : commencez la traduction avec Poedit

Traduire le theme

La traduction peut alors commencer : sur la gauche de votre écran se trouvent les chaînes de traduction disponibles (en bleu) et sur la droite se trouvent les traductions que vous effectuez (en vert). C’est en bas de l’écran que vous pourrez saisir votre traduction (dans l’encart vert).

Attention ! Veillez à conserver dans votre traduction tous les caractères spéciaux qui sont utiles à votre thème tels que “%” ou “%s” par exemple.

Traduisez toutes les chaînes dont vous aurez besoin en sachant que certaines d’entre elles correspondent à des traductions seulement disponibles du côté administration tandis que d’autres sont celles que l’internaute voit quand il se rend sur votre site. Vous n’êtes donc pas dans l’obligation de traduire l’intégralité de votre thème, toutefois, si c’est ce que vous souhaitez, vous pourrez vérifier l’avancement de votre traduction tout en bas de l’écran de Poedit (flèche rouge de la capture d’écran) qui vous indiquera le pourcentage de traduction déjà effectué.

Étape 5 : générez les nouveaux fichiers .po et .mo

Générer les fichier po et mo

Une fois que vous avez effectué toutes les traductions nécessaires à votre thème, vous pourrez terminer par la génération des nouveaux fichiers .po et .mo :

  1. Toujours dans Poedit, allez à Fichier > Enregistrer
  2. Une popup s’ouvre et vous permet de saisir votre nom de fichier, pour le français => fr_FR (sans “.po” ni “.mo”)
  3. Choisissez votre emplacement puis terminez par “Enregistrer”
  4. Le logiciel Poedit génère alors deux fichiers : le fr_FR.po ainsi que le fr_FR.mo
  5. Ces deux fichiers sont nécessaires et vous devrez les envoyer dans votre thème enfant via FTP. Vous pouvez également les ranger dans un sous-dossier que vous nommerez “lang” ou bien “languages”

Importer le dossier langue dans le thème enfant

Étape 6 : modifiez le fichier functions.php de votre thème enfant

Ajouter une fonction au fichier functions.php

Si vous vous arrêtez à l’étape 5, vous pourrez constater que la traduction envoyée dans votre child theme n’a pas été prise en compte ! En effet, pour qu’elle le soit, il va falloir ajouter une fonction dans le fichier functions.php de votre thème enfant, seuls les deux paramètres inscrits en rouge sont à customiser selon votre thème :

// prise en compte du dossier de traduction du theme enfant à la place du parent
function my_child_theme_setup() {
 load_child_theme_textdomain( 'text-domain-du-theme-parent', get_stylesheet_directory() . '/languages' ); // languages étant le chemin du dossier dans lequel se trouvent vos fichiers .po et .mo
}
add_action( 'after_setup_theme', 'my_child_theme_setup' );

La fonction “load_child_theme_textdomain” requiert comme premier paramètre le “text domain” de votre thème parent (obligatoire), vous devrez donc personnaliser ce paramètre en fonction du thème que vous utilisez. Si vous désirez en savoir davantage sur cette fonction, vous pouvez consulter la page dédiée sur le Codex de WordPress.

Où trouver le Text Domain du thème parent pour traduire son thème enfant ? 

Localiser le Text Domain du thèeme parent

De manière générale, le text domain du thème parent est facilement localisable dans l’entête du fichier style.css de celui-ci et c’est souvent le même nom que celui de la template…

Cependant certains thèmes peuvent vous donner du fil à retordre si les développeurs n’ont pas inscrit cette information dans l’entête et n’utilisent pas le même nom que celui de la template (c’est le cas de SimpleMag avec lequel j’ai effectué ce test) !

Il faudra donc effectuer une recherche dans le fichier functions.php du thème parent de la fonction nommée “load_theme_textdomain”. Le premier paramètre situé entre parenthèse vous indiquera le nom du text domain qui sera utile pour traduire son thème enfant ! Dans mon exemple, il s’agit de “themetext” (rien à voir avec SimpleMag !)

Étape 7 : vérifiez le bon fonctionnement

Vérifier l'état de la traduction

Pour terminer,  si vous avez suivi toutes ces étapes, vous devriez obtenir le résultat escompté et voir apparaître vos traductions du côté du front-end… Si vous relevez quelques traductions oubliées, recommencez les étapes 4 et 5.

 

En conclusion…

Il n’y a pas de solution préférable entre le fait d’utiliser un plugin comme Loco Translate ou le fait de traduire son thème manuellement avec Poedit. À mon avis, c’est une question d’affinité…

Mais ce qui est le plus important avec la méthode Poedit, c’est de traduire son thème enfant plutôt que son thème parent afin de conserver les changements lors d’une future mise à jour.

wpformation
NE MANQUEZ PLUS RIEN !
Inscrivez-vous pour recevoir le meilleur de WordPress dans votre boîte de réception, chaque mois.

Nous ne spammons pas ! Consultez notre politique de confidentialité pour plus d’informations.

A propos de l'auteur...

Avatar de Lycia Diaz

Lycia Diaz

Consultante et formatrice WordPress, j'adore découvrir, tester et partager mes expériences. Mais ce qui me passionne, c'est entreprendre & accomplir de nouveaux projets comme la rédaction de mon livre "Je crée mon site avec WordPress" aux Éditions Eyrolles et l'animation de mes deux blogs : la-webeuse.com et astucesdivi.com.

5 commentaires pertinents à ce jour ;)

  • Bonjour Lycia,

    Si c’est juste pour conserver sa traduction, il n’est pas nécessaire de créer un thème enfant, il suffit simplement d’enregistrer les fichiers .po et .mo avec leur textdomain dans le dossier /wp-content/languages/themes de votre WordPress.

  • Bonjour,

    tout d’abord merci pour votre site, c’est une mine d’or.

    J’ai créé un thème enfant du thème twentysixteen.
    J’ai suivi votre tuto pour la traduction de mon thème enfant.
    J’ai bien mis les fichiers fr_FR.po ainsi que le fr_FR.mo dans le dossier languages de mon thème enfant ainsi que le code ci-dessous dans le fichier functions.php de mon thème enfant.

    // prise en compte du dossier de traduction du theme enfant à la place du parent
    function my_child_theme_setup() {
    load_child_theme_textdomain( ‘twentysixteen’, get_stylesheet_directory() . ‘/languages’ ); // languages étant le chemin du dossier dans lequel se trouvent vos fichiers .po et .mo
    }
    add_action( ‘after_setup_theme’, ‘my_child_theme_setup’ );

    Mais rien ne fonctionne. Ma traduction n’est pas prise en compte.
    Le fichier de traduction du theme twentysixteen se trouve dans le dossier wp-content/languages/themes et se nomme twentysixteen-fr_FR.po et twentysixteen-fr_FR.mo

    Est ce que le problème ne vient pas de là ?

    Si jamais vous avez une idée pour résoudre mon problème ?

    Merci

  • Bonjour,
    Attention, il me semble que le chemin indiqué pour accéder au dossier languages du thème-enfant est erroné –> il manque un point avant /languages
    Pour ma part, avec le thème Full Frame, cela donne :
    load_child_theme_textdomain( ‘full-frame’, get_stylesheet_directory() . ‘./languages’ );

  • Bonjour Lycia!

    J’essaie en ce moment de traduire en français mon thème acheté sur ThemeForest. Seulement, dans le répertoire “languages”, je n’ai qu’un fichier .pot. Il n’y a aucun fichier .po. J’ai essayé avec Poedit et aussi avec Loco Translate mais il manque des chaînes de texte (strings). Poedit et LT n’en trouvent que 21 dans mon thème!
    Du coup, là, j’ai envoyé un mail au support du thème, j’attends une réponse.
    Peux-tu me dire si j’ai loupé un truc, quelque chose que j’aurais mal fait?

    Merci pour ta réponse ;)

    Marie