Nous avons vérifié chaque traduction automatique. Ce sont les vérifications qui étaient erronées.

Langues

Avant de publier notre Kit de traduction, nous l'avons testé sur une petite application d'exemple : 70 chaînes dans six formats (JSON, Flutter ARB, Android, Apple .strings, gettext et Markdown) traduites en allemand, russe, japonais, arabe et espagnol, à l'aide d'un modèle Qwen ouvert (Qwen3.8-Flash-Next, quantifié sur 4 bits) servi par vLLM sur notre propre machine. Chaque chaîne traduite est soumise à des vérifications avant d'être écrite. Quatre des 350 ont été rejetées. Les quatre rejets étaient erronés.

Ce que recherchent les vérifications

Une traduction qui casse une application est pire que l'absence de traduction, donc chaque chaîne doit conserver ses espaces réservés (%1$s, {name}, {{count}}), ses balises, ses sauts de ligne et ses URL ; elle doit être dans le système d'écriture de la langue cible ; elle ne doit pas être vide, démesurée ou laissée en anglais ; et les formes plurielles doivent couvrir exactement les catégories que la langue possède. Une chaîne qui échoue est redemandée avec le problème nommé, et celle qui échoue à nouveau est laissée de côté, de sorte que l'application affiche l'anglais pour cette seule chaîne.

Les quatre rejets

Une fois les vérifications corrigées, une deuxième exécution n'a demandé au modèle que ces quatre chaînes, puisque tout le reste était dans la mémoire de traduction, et a écrit les 350 chaînes en 45 secondes.

La partie que nous pensions échouer et qui n'a pas échoué

Les formes plurielles sont l’endroit où une traduction naïve casse : l’anglais a une forme pour le singulier et une pour le pluriel, le russe en a quatre (un, peu, beaucoup, autre), l’arabe six catégories, le japonais une seule. Nous avons demandé exactement les catégories de la langue cible et vérifié les espaces réservés de chaque forme. Le modèle a écrit « 1 день, 2 дня, 5 дней » pour le russe et les six formes arabes. Toutes les règles de pluriel Android ont passé du premier coup dans les cinq langues, tout comme tous les messages pluriels sauf celui en japonais, que notre vérification a mal interprété.

Ce qu’aucune vérification ne peut détecter

Nous avons ensuite traduit les 22 chaînes web de l’exemple dans les 42 langues que Polyglot connaît : 924 chaînes sur 924 ont passé. En les lisant, l’une d’elles a attiré l’attention. En khmer, « You are offline » avait été traduit par une phrase signifiant « vous êtes en ligne ». C’est un khmer bien formé, dans le bon alphabet, sans rien de manquant, donc toutes les vérifications l’ont accepté. Les vérifications détectent ce qui casse une application ; un sens erroné nécessite une personne qui lit la langue.

À retenir

Les vérifications automatiques sur la sortie d'une machine nécessitent une sortie réelle pour être testées. Les tests unitaires avec des traductions inventées passaient ; un modèle réel écrivant du japonais réel a trouvé les lacunes en quelques minutes. Polyglot est livré avec ces vérifications, corrigées, et avec les tests pour chacun des quatre cas. Les vérifications seules sont gratuites et open source : translation-checks sur GitHub.

Mis à jour: