WordPress: Traduire un thème enfant

Tout commence quand je constate que mes “Archives quotidiennes” ne comportent pas de date contrairement aux “Archives  mensuelles” et aux “Archives annuelles”. On s’en fou un peu, hein ? Mais c’est pas joli.

En regardant le code source de la page archive.php, je ne constate pas d’erreur:

source_archives.php_avant

Par contre, je me rends compte qu’en changeant “Daily Archives” par “Daily Archives” par “Trucs”, j’obtiens bien la date manquante:

archives-quotidiennes-truc1

Et c’est là que je me dis qu’il s’agit surement d’un problème de traduction (personne n’est parfait, même les traducteurs de WordPress, donc pourquoi pas?).

Bon, ok. J’aurais pu m’arrêter là et juste modifier le source de archive.php en remplaçant “Daily Archives” par “Archives quotidiennes” (comme “Trucs”). En effet, après tout, j’ai un thème enfant (twentyfourteenchild) et il me suffit donc de copier/coller la page archives.php du thème twentyfourteen dans mon thème twentyfourteenchild puis de faire la petite modif qui va bien et hop, ni vu ni connu, plus de problème de traduction !

Mais non.
Parce que ce n’est pas propre.
Parce que ce n’est pas carré.
Parce que ce n’est pas moi.

Et, surtout parce que je veux relever ce défi: modifier la traduction de mon thème enfant !

Du coup, je me mets à chercher un plugin de traduction. Il doit y en avoir un ! WordPress est un CMS moderne mais il utilise des fichiers .po et  .mo, la plaie ! J’ai horreur de PoEdit…

Je trouve “Loco Translate”. Ce plugin semble prometteur et Zou je l’ajoute à mon WordPress.

Je regarde les traduction du thème parent “twentyfourteen” d’abord, pour vérifier que j’ai vu juste:

archives_quotidiennes1b

archives_quotidiennes2

C’est bien ça, il manque “%s” après les mots “Archives quotidiennes :”

Étape suivante: la traduction de mon thème enfant twentyfourteenchild.

Pourquoi ne pas modifier directement la traduction du thème parent ? Pour éviter qu’elle soit écraser à la prochaine mise à jour du thème, pardi !

Bref. Je ne veux pas me planter, alors je  cherche et trouve le tuto qui correspond au plugin et je le suis à la lettre (ou presque: en remplaçant omega qui est le thème du tuto par twentyfourteenchild). Il est bien fait, je ne traduis pas.

archives_quotidiennes5

archives_quotidiennes6

Important ! Il ne suffit pas de comprendre l’anglais pour aller jusqu’au bout de ce tuto: il faut aussi savoir changer les droits sur ses fichiers et dossiers. Moi je l’ai fait directement en FTP avec Dreamweaver:

archives_quotidiennes8 archives_quotidiennes7

archives_quotidiennes10

archives_quotidiennes11

Arrivé à :

Great, it works.
That’s the end of this beginner’s example guide.

ben chez moi, ça ne marche pas… évidemment.

Relecture des étapes. Tout nikel.

Ok, section Troubleshooting alors…

[ C’est déjà pas cool d’en être amené à lire cette section, mais en plus elle commence par une petite “vanne”:

What could go wrong?
Short answer: “Lots”.

Perso, je n’ai pas trouvé ça relaxant… ]

J’ai tout bien lu et  voilà ce que j’ai trouvé d’intéressant:

Why isn’t it compatible with my theme?

Loco Translate prefers themes to be set up in a standard way. In an ideal world this means they contain a single POT file and declare a single Text Domain.

… Ah ! Et c’est quoi un “Text Domain” et où doit-on le déclarer ?

Direction le site officiel de Worpress, son codex, son forum.

Je passe les détails mais grâce à ces 3 pages, j’ai pu m’en sortir avec ce sujet:

https://wordpress.org/support/topic/text-domain-in-stylecss

A text domain is a unique identifier so that WordPress can distinguish between all loaded translations (for example, your theme and your plugins would all have their own individual translations and WordPress uses the text domain to make sure that the correct translations get loaded).

https://codex.wordpress.org/File_Header

headerexhttps://codex.wordpress.org/fr:Th%C3%A8mes_Enfant (internationalisation)

internationalisation

J’ai donc modifié mon fichier style.css en ajoutant la ligne “Text Domain”:

/*
Theme Name: Twenty Fourteen Child
Description: Thème enfant pour Twenty Fourteen
Template: twentyfourteen
Text Domain: twentyfourteenchild
*/

J’ai ajouté un fichier function.php à mon thème enfant contenant les lignes suivantes

<?php
/**
* Configuration du domaine de test de mon thème enfant.
*
* Déclare un domaine de texte pour ce thème enfant.
* Les traductions doivent être déposées dans /languages/ directory.
*/
function twentyfourteenchild_setup() {
load_child_theme_textdomain( ‘twentyfourteenchild’, get_stylesheet_directory() . ‘/languages’ );
}
add_action( ‘after_setup_theme’, ‘twentyfourteenchild_setup’ );
?>

Et… ça ne marchait toujours pas !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Mais pourquoi??????????????????????????

C’était si simple…

Rappel du fichier source de archive.php:

source_archives.php_avant

if ( is_day() ) :
printf( __( ‘Daily Archives: %s’, ‘twentyfourteen’ ), get_the_date() );

ou en français:

Si on demande un jour:
alors on écrit la traduction de ‘Daily Archives:%s’ fournie avec le thème [parent] twentyfourteen et on remplace %s par la date [de WordPress > Réglages > Général > Format de date]

Du thème parent ! Pas du thème enfant !

Il suffit donc de changer dans cette page archive.php twentyfourteen par twentyfourteenchild pour is_day et la traduction fonctionne !

archives_quotidiennes12

Tout ça pour ça ?
Ben oui. C’est en WordPressisant qu’on devient WordPressiserons.

 

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.

Merci de renseigner le captcha ! * Time limit is exhausted. Please reload CAPTCHA.