Skip to content

Extraire, traduire et empaqueter les messages

Mathieu Schroeter edited this page Nov 29, 2022 · 2 revisions

Nabu tools

goblin-nabu contient un service d'application qui fonctionne en ligne de commande.

Cette application permet d'extraire les messages d'une ou plusieurs applications goblin, d'importer les messages sur un serveur nabu-thrall, et finalement de produire des fichiers JSON pour le traducteur, et pour le développeur.

Les traductions peuvent être ensuite réimportée une fois le fichier JSON complété.

On peut alors produire le fichier de ressource pour chaque application, contenant le cache des traductions.

Configuration de l'application

Voir l'application nabu-tools dans le bundle goblin.

Processus d'utilisation

Il est important de faire le processus dans l'ordre suivant :

extraction → (on donne au traducteur) → extractiontraductionpacking

On peut répéter ce processus au fil du développement.

Pour effectuer les commandes suivantes, positionnez-vous dans le dossier du bundle goblin avec votre shell 🐚 préféré.

Extraction 💥 (le big bang)

Pour créer les fichiers [appName] à la racine du bundle :

node . --app=nabu-tools --extract
  • [AppName].json fichier à compléter pour le traducteur
  • dev-[AppName].json fichier de debug pour contrôler le travail de l'extracteur

Transmettez le fichier de traduction au traducteur et attendez son retour.

Traduction 🎏

Effectuez cette étape une fois que le traducteur a complété le fichier [AppName].json. Les commandes suivantes vont reprendre le fichier à la racine du bundle.

node . --app=nabu-tools --extract

Comme vous pouvez le voir ici, on refait une extraction. En effet, il n'est pas instantané pour un traducteur d'effectuer toutes les traductions. Certainement que le code source de votre projet continue d'évoluer en même temps. L'extraction va mettre à jour le fichier que le traducteur a complété. Il est important de vérifier (git diff) les changements à ce moment-là. Vous pouvez alors effectuer quelques ajustements au cas où le traducteur aurait fait des erreurs mineures comme avoir gardé les contextes Nabu dans la traduction.

node . --app=nabu-tools --translate

Les traductions complétées seront ajoutées sur le serveur de traductions et disponible pour la création des fichiers de cache (pack).

Packing des ressources 📦

Vous pouvez alors (re)construire les fichiers translations.json dans les dossiers de ressources de chaque application.

node . --app=nabu-tools --pack

Attention ⚠️, ne faites pas n'importe quoi

Il est formellement interdit de directement modifier les fichiers translations.json qui sont contenus dans les dossiers de ressource des applications. Le traducteur doit forcément adapter le fichier [AppName].json situé à la racine du bundle goblin, ou alors utiliser l'interface graphique Nabu en travaillant avec le serveur nabu-thrall.

Problèmes connus

Lorsque les nabu-tools sont utilisés avec plusieurs applications, il faut prêter attention au cas où une traduction existe de part et d'autre. Si un texte source existe dans plusieurs [AppName].json un problème peut survenir. Lorsque la première application effectue son extraction, elle va patcher le message sur le serveur avec ses traductions associées. Lorsque la seconde application va procéder également à son extraction, elle va aussi patcher ce même message. À tour de rôle, le message sur le serveur nabu-thrall change au fil des extractions. Le seul moyen aujourd'hui d'éviter ce problème est d'être sûr d'avoir exactement les mêmes traductions dans tous les fichiers [AppName].json de toutes les applications.

Évidement, ce n'est pas acceptable et ce problème sera corrigé prochainement. L'idée est de détecter les collisions avant d'envoyer les messages au serveur nabu-thrall. Ainsi, il serait possible d'avertir l'utilisateur qu'il y a un conflit et de lui proposer de le régler en lui demandant depuis quelle application les traductions en question doivent être prisent. Si le choix n'est pas possible, la solution est alors d'introduir un context Nabu dans le texte source ; ce qui permet d'avoir des traductions différentes pour des sources identiques.

Clone this wiki locally