PO Merger

Dans cet article, deuxième d’une sĂ©rie de deux articles portant sur la traduction dans un environnement WordPress, j’aimerais dĂ©crire les Ă©tapes de conceptualisation, de dĂ©veloppement de l’outil PO-Merger et de son utilisation. La problĂ©matique qui a amenĂ© Ă  la crĂ©ation de l’outil est expliquĂ©e dans le premier article de cette sĂ©rie intitulĂ© “La traduction de WordPress : partage et automatisation“. Bien que la crĂ©ation d’une application logicielle soit composĂ©e de plusieurs Ă©tapes, je trouve que ce sont les Ă©tapes de conceptualisation et du dĂ©veloppement qui sont les plus dynamiques et ainsi, seront les plus intĂ©ressantes Ă  vous dĂ©crire.

 

Mise en situation

PO-Merger est un outil qui fusionne les traductions contenues dans deux fichiers PO de WordPress provenant de deux langues similaires choisies par l’utilisateur. Le premier fichier est considéré comme la «base » et le deuxième comme la « copie ». Si une ligne particulière n’est pas traduite dans le fichier de base, l’outil tentera de trouver cette ligne dans le fichier « copie ». Si cette ligne se retrouve dans la copie et est traduite, alors PO-Merger la copiera dans le fichier de base. À la fin du processus, un nouveau fichier sera créé qui contiendra la combinaison des traductions qui étaient présentes dans le fichier de base et du fichier de copie.

Techniquement, n’importe quelle combinaison de langues est permise. Toutefois, le but ultime de l’outil est de fusionner les contenus de langues interchangeables, par exemple le Français et Français du Canada, ou les diffĂ©rentes variations d l’espagnol, de l’allemand, etc.

 

L’Ă©tape de la conceptualisation

La conceptualisation est une étape cruciale, mais elle ne force pas une « rigidité » (au contraire, le manque d’adaptabilité est la preuve d’un mauvais concept!). Parfois, un aspect spécifique du concept pourra être changé pendant le développement. Toutefois, il se faut de suivre les lignes directrices et de garder en tête l’objectif initial. Sinon, le développeur risque de créer quelque chose de peu utile à l’utilisateur ciblé, car l’application pourrait être trop « vague » dans ses fonctionnalités.

Dans le cas de PO-Merger, le concept de l’application est intrinsèquement connecté à WordPress. Le but ultime de l’outil et de l’utilisateur cible ont été bien définis et n’ont jamais changé.

PO-Merger doit prendre deux fichiers PO de WordPress (qui peuvent provenir d’une extension, d’un thème ou du « noyau » de WordPress), vérifier s’il manque des traductions au premier fichier et les trouver dans le second fichier.

À la fin, l’application doit produire un nouveau fichier avec le contenu fusionné. L’outil sera utilisé par les contributeurs aux traductions de WordPress. Bien sûr, des paramètres optionnels ont été considérés dès le début. Mais certains aspects conceptuels ont été modifiés ou abandonnés pendant le développement tandis que d’autres options et des fonctionnalités ont été ajoutées, mais le concept de base est toujours demeuré le même.

Le choix de la langue de programmation a Ă©tĂ© simple : nous avons choisi PHP. Le noyau de WordPress utilise PHP et c’est la langue la plus connue et accessible par les utilisateurs dans l’Ă©cosystème de WordPress.

Une interface utilisateur, qui permettrait  à l’utilisateur de choisir deux fichiers existants et de réviser le contenu fusionné a été considérée pendant la conceptualisation. Toutefois, l’idée n’a pas survécu le développement, comme nous verrons un peu plus loin. Encore une fois, cela souligne l’importance d’un concept de base solide et l’importance de ne pas débuter le projet par l’interface utilisateur, mais bien de s’en tenir aux processus et aux résultats recherchés.

 

Le développement

Le dĂ©veloppement est la « preuve de concept », car la viabilitĂ© de l’idĂ©e ou son impraticabilitĂ© apparaitra très rapidement pendant le dĂ©veloppement. En considĂ©rant ceci, toutes les « portions » du projet se doivent autant que possible d’être « indĂ©pendantes » l’une de l’autre. Sinon, un changement conceptuel important pourrait forcer le dĂ©veloppeur Ă  retravailler l’entièretĂ© du code, s’il n’a pas utilisĂ© une approche modulaire. Deux autres aspects essentiels sont de a) bien structurer le projet et b) d’assurer la qualitĂ© du code. Ces aspects doivent ĂŞtre la norme pour n’importe quel projet, mais encore plus quand des ajouts de fonctionnalitĂ© futurs sont prĂ©vus dès le dĂ©but.

Comme j’ai mentionné plus haut, une interface utilisateur faisait partie du concept initial et un « squelette » de l’interface avait commencé à être développé. Toutefois, le fait que l’interface aurait les mêmes fonctions que les outils spécialisés (et donc beaucoup plus développés) comme, par exemple, Poedit, a rendu l’interface inutile à nos yeux.

Il a donc été décidé de changer le concept : l’utilisateur utilisera une ligne de commande pour entrer les paramètres  et les outils existants et bien développés pour réviser le résultat. WordPress offre une interface de ligne de commande en WP-CLI. Ainsi, l’outil s’est donc transformé en « paquet » (« package ») qui peut s’ajouter à une installation de WP-CLI.  L’utilisateur doit l’installer et entrer les paramètres via la ligne de commande, en utilisant la commande définie par le paquet PO-Merger.

 

L’utilisation

Voici la commande et un exemple montrant les paramètres de base :

wp po merge fr-ca fr https://wordpress.org/plugins/wordpress-seo/

En décomposant la commande en éléments, on obtient ceci :

  • wp – WP-CLI
  • po merge – la commande du paquet PO-Merger
  • fr-ca – le locale de base avec des traductions manquantes
  • fr – le locale de copie oĂą les traductions existantes seront cherchĂ©es
  • URL – la page d’accueil d’une extension ou d’un thème WordPress

 

Le lien de traduction pourra être utilisé à la place d’URL de la page d’accueil :

https://translate.wordpress.org/projects/wp-plugins/wordpress-seo/

 

Dans le cas du noyau de WordPress, la commande serait donc :

wp po merge fr-ca fr 5.1

Ici, le « 5.1 » représente la version de WordPress.

 

Si tous les paramètres passés à la commande sont valides, un nouveau fichier avec le suffixe « -merged » et le contenu fusionné seront générés dans le dossier où la commande a été exécutée.

 

Voici le fichier PO de base original (cliquer pour pleine taille) :

Voici le fichier PO de copie (cliquer pour pleine taille) :

Et voici le fichier résultat (cliquer pour pleine taille) :

 

PO-Merger vient aussi avec un ensemble de paramètres optionnels. Par exemple, le paramètre « diff-only » téléchargerait le fichier de base avec seulement les lignes qui ne sont pas traduites :

wp po merge fr-ca fr https://wordpress.org/plugins/wordpress-seo/ --diff-only

 

Pour avoir une vue complète de tous les paramètres disponibles, je vous invite Ă  consulter le README du package qui contient la documentation complète ainsi que la procĂ©dure d’installation.

 

En conclusion

PO-Merger n’est pas un outil magique qui rĂ©glera tous les problèmes liĂ©s Ă  la traduction de WordPress. Cependant, il pourra Ă©viter dans certains cas des heures et des heures de travail manuel sans compter le fait d’Ă©viter les erreurs humaines. Certains aspects conceptuels ont Ă©tĂ© modifiĂ©s  de façon importante durant la phase de dĂ©veloppement, mais notre approche modulaire nous a permis ces changements sans avoir Ă  reprogrammer l’application au complet. Et maintenant, en considĂ©rant que le paquet pour WP-CLI est disponible au public, c’est peut-ĂŞtre vous qui l’amĂ©liorerez la prochaine fois!

 

DĂ©finition des termes

  • Paquet (« Package ») : un module qui ajoute une ou des fonctionnalitĂ©s Ă  une application, Ă  un site web, etc.
L'article "PO Merger pour WP-CLI : Le simplificateur de traductions WordPress" a été modifié la dernière fois le 6 mai 2019 par Pavel Zaharciuc.

Ă€ propos de Pavel Zaharciuc

Pavel Zaharciuc est étudiant en informatique de gestion au collège Montmorency, à Laval. Il est présentement stagiaire chez SatelliteWP et contribue à différents outils d'analyse et d'expérience-client.

Laissez un commentaire