Retour aux articles

L'agence

WanadevStudio

Mise en place de nos process de traduction

La traduction et plus généralement l’internationalisation (i18n) est un sujet très important dans l’accessibilité numérique. Son intégration au sein d’un projet est loin d’être une évidence. De plus, aucune solution clé en mains ne s’impose. Nous avons fait nos recherches, avons sélectionné une solution, et vous proposons de faire ce retour d'expérience.

Pourquoi instaurer un process de traduction sur un projet ?

Des process de traduction ? Les objectifs majeurs sont de séparer la partie « contenu/traduction » de la partie technique. Ceci afin d’homogénéiser la gestion des traductions entre nos projets, de fournir un suivi de l’état de traduction du projet au client et à nos équipes, de simplifier l’intégration de nouvelles traductions et pour finir de faciliter la communication sur les traductions entre l’équipe technique, le client et le traducteur.

Process et outils de traduction : état actuel du sujet dans le monde de la tech

C’est une étape cruciale de la réalisation d’un projet et sa mise en place est souvent douloureuse et reste compliquée tout au long de la vie d'une application.

A cela s’ajoute l’arrivée d’un nouveau type d’intervenant : en plus des développeurs, chefs de projets, designers, voici maintenant les traducteurs.

Très peu de sociétés ne communiquent sur ce sujet, et il est très compliqué d’obtenir des informations sur des méthodes de travail ou des outils utilisés.

(JoliCode a écrit quelques articles très orientés Symfony, mais ce sont bien les seuls).

@ On imagine bien que les GAFAM ont des workflows rodés avec des process strictes. Mais c’est un sujet tellement précieux qu’aucun outil n’est mis à disposition. L’ouverture sur les marchés qu’apporte la traduction pour toucher de nouvelles cibles doit être au cœur de leurs stratégies marketing.

Un monde de normes

Il n’existe peu ou pas de normes dans le domaine, la plus connue est XLIFF. C’est une norme de fichier XML et c’est d’ailleurs celle qui est recommandée par Symfony. Le problème est qu’elle est difficile à lire pour un humain, le XML étant une syntaxe lourde peu appréciée par les développeurs web.

Globalement, les seules normes existantes servent aux logiciels de traductions. Elle sont là pour permettre la réutilisabilité des fichiers entre les logiciels et éviter les formats propriétaires. XLIFF en fait partie.

Stocker les traductions

Plusieurs façon de stocker les traductions existent, voici une liste non exhaustive :

  • dans des fichiers et dans plein de formats différents : Gettext (.po), properties, XLIFF et fluent qui sont spécifique à la traduction, mais aussi YAML, JSON, PHP (ou tout langage interprétable par votre application).
  • dans un TMS (Translation Management System) en SaaS ou auto-hébergé
  • dans une base de données local
  • dans un dépôt dédié

On notera que certaines solutions dépendent d’autres. Par exemple un dépôt dédié peut stocker des fichiers dans un format particulier, ce même dépôt peut être synchronisé avec un TMS etc...

Il n’y a donc aucune convention ou bonne pratique défini clairement.

Mozilla a développé un format de fichier qui supporte beaucoup de contraintes comme l’interpolation, la pluralisation et la gendérisation, ils se nomme Fluent et a pour extension de fichier .flt.

Il a pour vocation d’être compatible avec un maximum de logiciels et de langages. Actuellement il est supporté en javascript, Python et Rust. C’est le manque de diversité dans les langages de programmation qui freine encore un peu son utilisation. Il est en tout cas prometteur.

L’intérêt d’avoir un workflow de traduction

Face à tout ça, on comprend qu’il faut définir clairement une façon de faire et mettre à disposition un workflow et des outils.

Un des objectifs majeurs est de séparer la partie « contenu/traduction » de la partie technique. Ceci afin d’homogénéiser la gestion des traductions entre nos projets, de fournir un suivi de l’état de traduction du projet au client et à nos équipes, de simplifier l’intégration de nouvelles traductions et pour finir de faciliter la communication sur les traductions entre l’équipe technique, le client et le traducteur.

L’objectif global est de simplifier la vie de tout le monde !

La solution retenue, celle que nous utilisons

On a vite compris qu’une des meilleures solutions était de trouver un TMS. En effet, ils fournissent une interface graphique, une logique de mise à jour et d’ajout de traductions ainsi qu’un suivi statistique des données. De plus notre volonté était d’en trouver un open source que l’on peut auto-héberger et qui gère la pluralisation.

Avec ces critères, le champ des possibilités était réduit mais après plusieurs mois de recherche on est tombé sur Pontoon. C’est le TMS maison de Mozilla donc open source et ils avaient une documentation pour le déployer.

Bonus : C’est développé avec Django, un framework Python et Fabien il aime bien Python. (cf l'article qu'il a rédigé sur Pontoon et Gitlab)

Pontoon, l'élu.

Après quelques semaines de tests concluants on a fait le choix de le déployer en mode production sur un de nos serveurs.

Ensuite, on a voulu le tester en situation réelle, et c’est le site de notre produit Octopodvr.com qui a servi de cobaye pour la mise en place d’un workflow.

Le fonctionnement de Pontoon est relativement simple :

  • Pontoon va chercher les traductions d’un projet sur un dépôt Git et les synchronise dans sa BDD.
  • À partir de là, les traductions sont disponibles dans l’interface et sont prêtes à être traduites.
  • Une fois que la traduction d’une langue atteint 100%, Pontoon va pusher sur le dépôt Git lors de la prochaine synchronisation.

NB : Par choix, nos fichiers sont au format .po de Gettext, libre et facile d’utilisation.

Ça... c’est la théorie... parce qu’en pratique on a utilisé des fichiers au format .po et Pontoon a également besoin d’un fichier de template ( .pot dans le cas de Gettext) pour les sources.

Une API pour rendre tout ça plus malléable

Une fois que nous avions bien joué avec Pontoon, nous avons eu besoin de développer une petite API qui maintient à jour les clés dans tous les fichiers .po. Cette API est branchée comme Webhook sur les événements de type « push event » paramétré dans GitLab.

Si vous souhaitez utiliser autre chose que du .PO, voici les formats supportés par Pontoon :

  • .dtd (Document Type Definition [XML])
  • .ftl (Fluent, utilisé dans Python, Rust et Javascript)
  • .inc (Fichier de conf Java, C, Pascal, …)
  • .ini (Fichier de conf)
  • .json (format WebExtensions)
  • .lang (fichier dédié à la traduction)
  • .po (Gettext)
  • .properties (fichier de conf Java)
  • .xliff (format XML dédié à la traduction)
  • .xml (format Android)

L’autre particularité, c’est qu’on a fait le choix (et aussi parce que c’est recommandé par Pontoon) d’avoir un dépôt dédié aux traductions.

Ça permet principalement d’avoir une version de la traduction ne dépendant pas du projet, de ne pas « pourrir » son arbre git ou de gérer une branche de traduction dans le dépôt. Ensuite on l’intègre à notre projet via un submodule Git.

Et c’est là un des points fort de Pontoon, il nous laisse libre de faire un peu ce qu’on veut à condition de lui fournir ce qu’il a besoin.

Voici un schéma de fonctionnement :

process de traduction pontoon octopod

  1. Les nouvelles sources sont pushé sur le dépôt de langue
  2. Le « push event » est déclenché et va mettre à jour les fichiers template via Gitoon.
  3. Toutes les heures, une tâche met à jour les traductions de Pontoon en appelant la fonction de synchronisation.

Installation d'un process de traduction : et après ?

Le sujet est encore vaste et nous n'avons fait qu'un premier pas dans l'implémentation d'un workflow de traduction.

Voici une liste non exhaustive de manières de l'approfondir :

  • Pontoon est Open Source et son équipe de développement est friande de nouveau contributeur. N’hésitez pas à remonter des bugs ou des suggestions d’amélioration de l’outil.
  • Je vous ai parlé de Gitoon (notre API s’interfaçant sur les Webhooks GitLab) pour maintenir à jour nos fichiers .po. Il y a surement d’autres cas d’utilisation à adapter selon vos besoins.
  • Dans Pontoon il existe une partie “Machinery” qui permet de suggérer des traductions, libre à vous d’implémenter le moteur que vous voulez. Actuellement nous ne l’avons pas tester mais sur le Pontoon de Mozilla Google translate a été implémenté. Il existe d’autres API comme celle de DeepL par exemple.
  • On peut approfondir les recherches notamment avec la mise en place de test. Par exemple la Pseudolocalization permet de tester l’intégration des traductions dans un design en simulant des mots plus longs tout en les gardant compréhensibles dans la langue du technicien. Ex : Account Settings => [!!! Àççôûñţ Šéţţîñĝš !!!]. La pseudolocalization permet aussi de vérifier la compatibilité UTF8 des différents caractères. Netflix a publié un article sur son compte medium à ce sujet

Voici donc un article dédié aux process de traduction sur des projets. En tout cas notre retour d'expérience sur nos recherches et nos essais. Nous suivons le sujet de prêt pour nos projets en prod ou en développement, n'hésitez pas apporter de l'eau au moulin en commentaire, ou sur le Twitter de l'équipe ou sur le mien.

Commentaires

Il n'y a actuellement aucun commentaire. Soyez le premier !

  • Tests automatiques fonctionnels d’applications 2D/3D

    Il y a 9 mois

    Comme nous le disions dans cet article, l’automatisation des tests dans le développement logiciel est indispensable : dès lors qu’une application commence à avoir un minimum d’importance, les tests automatiques permettront de gagner énormément de temps en évitant de reproduire ad vitam æternam les mêmes tests manuels, et éviteront beaucoup de régressions. Dans cet article, nous allons présenter différents types de tests automatiques dans le cadre plus spécifique d’applications 2D/3D, puisque c’est ce que nous faisons ! Cela va du test basique qui clique sur 3 boutons aux tests de plusieurs minutes reproduisant les actions comme un véritable utilisateur. Accrochez-vous, c’est parti !

  • Configurateur web à l'abonnement : forces et faiblesses

    Il y a 10 mois

    Aujourd’hui, si vous cherchez à mettre en place un configurateur sur votre site, deux grandes possibilités s'offrent à vous : les solutions par abonnement (du type SaaS) ou le développement sur mesure. Au premier abord, les solutions semblent proches, mais les enjeux sur le long terme eux, sont bien différents.

  • Les frameworks front, tous les mêmes !
    Méthodologie

    Il y a 11 mois

    C'est une phrase que j'ai osé sortir un jour dans la salle de pause de Wanadev. Je ne sais plus exactement avec quel collègue je discutais, j’essayais de le rassurer, il possédait déjà une certaine expérience avec React et allait devoir, en arrivant sur le projet sur lequel je travaille, se mettre à Vue.
    Il a malheureusement fallu qu'un autre collègue de passage nous entende pour ne pas trouver la conversation inintéressante et suggérer que j'en fasse un petit talk pour nos réu du lundi. Et, de fil en aiguille, me voilà en train d'en faire un article de blog. Comme quoi, note pour moi-même, il faut toujours se méfier des discussions dans les salles de pause.

  • [NOVEMBRE 2021] C'est la gazette de Wanadev !
    Méthodologie

    Il y a 1 an

    Retrouvez ici les informations et actus du mois de novembre de l'Agence! Au programme de cette édition : découvrez le configurateur de fenêtre développé pour Caseo, recontrez François Deleglise, notre directeur communication et un nouvel espace de jeu pour les professionnels du loisir en VR. Bonne lecture !

  • Un peu d'ingérence dans votre infogérance ?
    Méthodologie

    Il y a 2 ans

    Même si les impacts sont difficiles à mesurer, on peut dire qu’il a eu un avant et un après incident OVH. Sans épiloguer sur l'incendie du 5 mars 2021 dernier, un petit vent de panique a soufflé sur les milliers de clients découvrant les problématiques de sécurisation des données. Les réactions à chaud d'une partie des utilisateurs (touchés ou non) montrent la méconnaissance et l'incompréhension qui existent dans les offres d'hébergement. Qui est responsable ? Qui fait quoi ? Comment vérifier mon offre ? Voici quelques clés de compréhension.

  • Améliorer la qualité avec les tests et la review

    Il y a 2 ans

    L’importance des tests et de la revue de code dans le cadre du développement logiciel est parfois négligée ou passée au second plan. Cet article a pour but de montrer que les tests logiciels constituent une étape cruciale qu’il faut considérer avec beaucoup de rigueur.