Suivi des traductions
Une traduction manquante se voit : il n'y a rien. Une traduction obsolète, non : le texte est là, il se lit bien, mais il ne dit plus la même chose que la source. Rien dans les fichiers ne la distingue d'une traduction à jour.
Avec une sourceLocale, Hermes enregistre pour chaque clé traduite une empreinte du texte source d'origine. Quand la source change, chaque langue qui l'avait traduite est signalée.
export default {
sourceLocale: 'fr',
completeLocales: ['en-US', 'de', 'es-ES'],
};
completeLocales liste les langues censées contenir toutes les clés (toutes par défaut). Les autres sont considérées comme partielles volontairement : on ne leur reproche jamais une clé manquante. Le suivi s'applique quand même à elles : une langue partielle qui avait traduit un texte est prévenue quand il change.
Commandes
hermes todo <locale> # ce qu'il reste à faire pour une langue, en JSON
hermes lock [locales...] # verrouiller un projet ou une nouvelle langue (toutes par défaut)
hermes lock <locale> --keys a,b # accepter une modification de la source sur certaines clés
hermes check # mêmes vérifications que le build, avec un code d'erreur pour la CI
hermes build signale les mêmes problèmes sous forme d'avertissements, les traductions obsolètes en premier : une traduction manquante retombe visiblement sur une langue de repli, alors qu'une traduction obsolète est servie comme si elle était à jour.
hermes todo donne, pour chaque entrée obsolète, la nouvelle source et la traduction actuelle : retoucher coûte moins cher que réécrire.
Le fichier de verrouillage
Les empreintes sont stockées dans <localesDir>/.hermes-lock.json, à versionner avec le projet. Chaque entrée contient deux empreintes, source:cible : le texte d'origine de la traduction, et la traduction elle-même.
{"de": {"settings:antiraid.closeDm": "a1b2c3d4e5f6:9876543210ab"}}
La seconde empreinte permet au build de distinguer une régression d'une correction :
- la source a changé, pas la traduction : personne n'a encore répondu, la clé reste signalée ;
- les deux ont changé : quelqu'un a répondu, et
hermes buildmet l'entrée à jour tout seul.
Une passe de traduction ne demande donc aucune commande de plus. Commitez le fichier de verrouillage mis à jour avec les traductions. hermes check le lit tel qu'il est commité et n'écrit jamais : un verrouillage oublié fait échouer la CI au lieu de passer en silence.
Quand utiliser hermes lock
hermes lock sert à deux choses :
- verrouiller un projet ou une nouvelle langue pour la première fois. Le build ne met à jour que les langues déjà verrouillées : verrouiller automatiquement un projet qui ne l'était pas marquerait tout comme à jour dès le premier build, traductions obsolètes comprises, et plus rien ne serait jamais signalé ;
- accepter une modification de la source sans retraduire. Une correction cosmétique de la source (une faute, un accent) signale toutes les langues, ce qui est souvent voulu puisqu'elles ont peut-être la même erreur. Quand ce n'est pas le cas,
hermes lock <locale> --keys <clés>accepte le changement sur ces clés seulement.