Je traduis(ais) WooCommerce depuis 4 ans. A l’époque WooCommerce, dans sa version 1.3.2.1, était une solution en devenir, fork de Jigoshop.
J’ai passé des dizaines d’heures à traduire l’extension WordPress en m’imposant de produire une version 100% française (front et back).
Immodestement je pense avoir contribué à l’adoption de WooCommerce en France, alors que les agences Web n’avaient d’yeux que pour Prestashop. Le développement, peu de temps plus tard, de passerelles de paiement pour les principales banques françaises a également permis de rendre cette solution de eCommerce crédible.
La version 1.3.2.1 de janvier 2012 comportait 1553 chaines, la version 2.5 sortie hier en comporte 3848. La traduction d’une telle extension est un travail récurent, chaque nouvelle version apportant son lot de traductions.
Contre performance
WooCommerce 2.0, sorti le 4 mars 2013, annonçait que le fichier de traduction était scindé en deux, l’un pour le front et l’autre pour le back. Ceci pour des questions de performances.
Localization – Not only have we added a lot more translations bundled with the plugin, we have also split up the translation files to make them more memory efficient.
Toute une discussion sur le bien fondé de séparer le fichier de traduction en deux est consultable sur Github.
Les conséquences du rachat de WooThemes par Automattic
En 2015 Automattic, l’éditeur de WordPress, rachète WooThemes, l’éditeur de WooCommerce.
Dans une volonté d’uniformisation, la traduction de WooCommerce, qui était depuis quelque temps hébergée sur Transifex, a été contrainte de passer sur le service GlotPress de WordPress. Hors ce service n’est pas en mesure de gérer plusieurs fichiers de traduction par langue…
Vous voyez où je veux en venir ? Fusion des deux fichiers front et back pour un unique fichier de 326 ko (version 2.4.13 de WooCommerce). Adieu les discours sur l’optimisation de mémoire, les traductions du back sont chargées même pour les clients de la boutique.
GlotPress, l’interface d’un autre âge
J’ai commencé la traduction de WooCommerce depuis le logiciel POEdit, avant que la traduction ne soit centralisée sur l’outil en ligne Transifex. Très bon outil apprécié des traducteurs.
Puis WooThemes a annoncé la migration de la traduction de WooCommerce sur l’outil du “groupe”, GlotPress. Je ne connaissais pas cet outil à l’interface austère.
Sur Transifex j’avais un rôle de traducteur qui me permettait de valider tout seul comme un grand mes traductions. Sur GlotPress je n’ai aucun rôle, je ne peux que proposer mes traductions qui devront être modérées par un traducteur disposant de droits suffisants. Apparemment il y a toute une hiérarchie sur GlotPress… WooThemes ne s’est pas soucié d’accompagner les traducteurs dans cette migration, de leur expliquer comment fonctionnait GlotPress.
Sur GlotPress, seule une traduction totale (traduction+validation) conduit à ce que le fichier soit poussé dans l’extension correspondante. Ce qui fait que, pour la première fois depuis longtemps, la nouvelle version de WooCommerce qui vient de sortir (2.5) n’est pas totalement traduite. C’est en effet la traduction de la 2.4.13 qui est téléchargée lors de l’installation de la version française.
Pourquoi j’arrête ?
Sur un outil performant tel que Transifex j’aurai sans problème pu continuer à traduire WooCommerce encore plusieurs années, aidé si nécessaire par les boss de la traduction @fxbenard et @wolforg lorsque les délais étaient un peu court.
Mais devoir basculer sur un outil aussi merdique que GlotPress, renoncer au gain de performance de deux fichiers de traduction, pour la simple raison que WordPress l’impose, réduit à néant toute motivation de donner de mon temps pour traduire WooCommerce.
Quand je vois le taux de traduction des autres langues, j’ai l’impression de ne pas être le seul démotivé. Les versions espagnole, italienne, portugaise, russe, chinoise, japonaise, etc. ne sont pas disponibles en version 2.5.
Et maintenant ?
WooCommerce est une extension “gratuite” qui génère des millions de revenus à son éditeur WooThemes.
Aucun risque que la version française végète, WooThemes peut prendre la main sur la traduction, ou attendre que des traducteurs bénévoles s’y collent…
Encore une chose
Quelqu’un sur Twitter me demandait récemment comment outrepasser la version officielle de la traduction de WooCommerce par sa version personnalisée. En aparté ce besoin est légitime et n’indique pas qu’il ne veut pas partager ses traductions avec la communauté mais qu’il a besoin de personnaliser les traductions. J’ai moi même actuellement un client qui veut que “Commande” et “Commander” soient remplacés par “Réservation” et “Réserver”.
Je lui ai répondu qu’il me semblait que la traduction était poussée par GlotPress dans le dossier /wp-content/languages/plugins/ et que ses modifications seraient écrasées à la prochaine mise à jour de la traduction.
En en discutant au dernier WordCamp Paris avec la communauté et après quelques tests, il en ressort que l’utilisation de GlotPress inverse le processus des dossiers de langues.
Sans GlotPress :
- L’extension est livrée avec ses traductions ou éventuellement les traductions sont poussées par l’éditeur dans le dossier langue de l’extension ( )
- L’utilisateur peut outrepasser les traductions en plaçant les siennes dans
Avec GlotPress :
- Les traductions sont poussées par GlotPress dans
- Les traductions présentes dans le dossier outrepassent les traductions GlotPress
Pourquoi avoir inversé l’emplacement et les priorités des répertoires ? @fxbenard nous donne la réponse, cela permet aux auteurs de passer outre le processus de traduction en fournissant leurs propres traductions, car il faut savoir que le nouveau processus de traduction des extensions leur est imposé.
Des solutions ?
- Il est possible de filtrer “gettext” dans le functions.php de votre thème par exemple.
function abw_text_strings( $translated_text, $text, $domain ) {
switch ( $translated_text ) {
case "J'ai lu et j'accepte les <a href=\"%s\" target=\"_blank\">conditions générales de vente</a>" :
$translated_text = "J'ai lu et j'accepte les <a href=\"%s\" target=\"_blank\">conditions générales de location</a>";
break;
case "Commander" :
$translated_text = "Réserver";
break;
}
return $translated_text;
}
add_filter( 'gettext', 'abw_text_strings', 20, 3 );
[/pastacode]
- Un 3e dossier permet d’outrepasser les deux autres,
Quelle solution choisir ? Avec gettext vous serez plus pérenne car même s’il peut arriver que certaines de vos chaines changent, vous n’aurez pas systématiquement à modifier le fichier de langue à chaque mise à jour. Car dans le cas où vous outrepasser le fichier, vous devrez actualiser votre fichier de traduction depuis les sources dès qu’une mise à jour sera disponible.
Bonjour,
Ah ! Je comprends mieux pourquoi je me prends la tête de puis 2 jours sur WooCommerce !
Je ne comprenais pas pourquoi “du jour au lendemain” certaines parties n’étaient pas traduites.
Respect pour tout ce que tu as fait depuis 4 ans.
Bonne continuation.
le formateur
Bonjour,
Une solution est à l’étude pour que je puisse reprendre la traduction de WooCommerce en dehors de GlotPress. La méthodologie reste à valider.
Nicolas.
ahh GlotPress… Ce fameux outil qui aurait bien besoin d’un relifting :)
C’est d’ailleurs en cours, tu peux suivre le développement ici :
http://blog.glotpress.org/
Le passage vers translate.wordpress.org n’a en fait rien à voir avec le rachat de Woothemes. L’ajout des extensions à translate.wordpress.org est le résultat d’un travail de plusieurs années par les volontaires qui participent à l’amélioration de l’infrastructure de WordPress.org, dans l’équipe “Meta” de la communauté :
https://make.wordpress.org/meta/
Ce n’est donc pas un projet mené par Automattic. translate.wordpress.org est en fait disponible pour toutes les extensions et tous les thèmes de WordPress.org.
Certes, l’interface pourrait être améliorée, et la gestion des .po est pour le moment très basique (un par extension, pas de flexibilité, …), mais cela a quand même des avantages :
– Les chaînes sont partagées entre extensions, permettant donc de traduire plus de contenu sur WordPress.org.
– Les validateurs sont choisis par l’équipe de traducteurs de fr.wordpress.org. Cela assure des traductions de qualité, et uniformes. Puisque tu as beaucoup contribué à la traduction de Woocommerce jusqu’ici, je pense d’ailleurs que tu pourrais demander à être ajouté comme validateur, soit sur le blog polyglots, ou en contactant l’un des validateurs directement.
– Les nouvelles chaînes sont disponibles pour les utilisateurs dès qu’elles sont validées, grâce au système de mise à jour intégré à WordPress.
– L’impact sur le poids des extensions est aussi important. Au lieu de livrer une extension avec tous les .mo files, il suffit maintenant de livrer l’extension sans rien : un fichier .mo sera téléchargé si l’utilisateur en a besoin sur son site. Du coup une extension comme Woocommerce est beaucoup plus légère, prend moins de place.
Après, c’est clair que ce n’est qu’un début. GlotPress et ses lenteurs me portent aussi sur les nerfs tous les jours. Mais ca a le potentiel de devenir un bon outil, et ce système ne peut qu’aider WordPress à devenir plus populaire en France et ailleurs. Par contre, pour que l’outil s’améliore, il faut qu’on renvoie nos retours aux bénévoles qui s’en occupent, et qu’on aide quand on peut. Tu peux rejoindre le groupe des #polyglots sur Slack, ou #meta-i18n pour parler de translate.wordpress.org en particulier. Il y a aussi #glotpress si tu es intéressé.
Je pense que ce serait intéressant de faire remonter ça à Woothemes. Le système de language packs est nouveau pour tous les éditeurs d’extensions, Woothemes y compris, et on apprend tous sur le tas à gérer cette nouveauté. Il y aurait peut être quelque chose que l’équipe de Woothemes pourrait faire pour aider ses contributeurs un peu plus. Je vais faire remonter ça tout de suite ! :)
P.S.: Je bosse chez Automattic. N’hésite pas à m’envoyer tous les retours que tu veux, je serais ravi de faire suivre à l’équipe en charge :)