[FIX] todo: cinq clés de traduction déclarées deux fois

Un littéral de dict garde la DERNIÈRE valeur : une clé déclarée deux fois écrase
silencieusement la première. Cinq clés étaient dans ce cas — « SSH host is
required! », « Total: », « max », « Cancelled. », « failed » — et rien ne le
signalait, ni au lancement, ni en revue, ni dans la suite de tests.

Quatre étaient d'inoffensifs copier-coller : les deux déclarations portaient la
même paire fr/en. La cinquième ne l'était pas. « failed » valait « en échec » au
premier endroit et « échouées » au second ; c'est « échouées » qui gagnait, pour
les TROIS appels, y compris le bilan de déploiement écrit pour « en échec ». Une
traduction avait donc été rédigée, relue, et n'a jamais été affichée une fois.

C'est l'occurrence masquée qui part, jamais celle qui gagne : les cinq clés
rendent exactement ce qu'elles rendaient avant, la sortie ne bouge pas d'un
caractère. Choisir un meilleur français pour « failed » est un autre changement,
à faire en le voyant à l'écran.

Vérifié : 865 clés, 865 uniques, aucun doublon ; les cinq clés rendent la même
valeur qu'avant. La suite de tests garde ses 262 tests et ses échecs
préexistants, à l'identique — dont trois qui relèvent du même angle mort :
test_todo_i18n teste la clé « menu_quit », absente de TRANSLATIONS.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Mathieu Benoit 2026-08-03 08:03:20 +00:00
parent 9ee54f00cd
commit bc41b35769

View file

@ -310,10 +310,6 @@ TRANSLATIONS = {
"fr": "Hôte SSH (ex: user@192.168.1.100) : ", "fr": "Hôte SSH (ex: user@192.168.1.100) : ",
"en": "SSH host (e.g.: user@192.168.1.100): ", "en": "SSH host (e.g.: user@192.168.1.100): ",
}, },
"SSH host is required!": {
"fr": "L'hôte SSH est requis!",
"en": "SSH host is required!",
},
"Mounting sshfs on: ": { "Mounting sshfs on: ": {
"fr": "Montage sshfs sur : ", "fr": "Montage sshfs sur : ",
"en": "Mounting sshfs on: ", "en": "Mounting sshfs on: ",
@ -1064,10 +1060,6 @@ TRANSLATIONS = {
"fr": "Commandes personnalisées Claude Code :", "fr": "Commandes personnalisées Claude Code :",
"en": "Claude Code custom commands:", "en": "Claude Code custom commands:",
}, },
"Total:": {
"fr": "Total :",
"en": "Total:",
},
"File already exists: ": { "File already exists: ": {
"fr": "Le fichier existe déjà : ", "fr": "Le fichier existe déjà : ",
"en": "File already exists: ", "en": "File already exists: ",
@ -2114,7 +2106,6 @@ TRANSLATIONS = {
"Network": {"fr": "Réseau", "en": "Network"}, "Network": {"fr": "Réseau", "en": "Network"},
"Battery": {"fr": "Batterie", "en": "Battery"}, "Battery": {"fr": "Batterie", "en": "Battery"},
"Temperature": {"fr": "Température", "en": "Temperature"}, "Temperature": {"fr": "Température", "en": "Temperature"},
"max": {"fr": "max", "en": "max"},
"lm-sensors absent — press i to install": { "lm-sensors absent — press i to install": {
"fr": "lm-sensors absent — appuyez sur i pour installer", "fr": "lm-sensors absent — appuyez sur i pour installer",
"en": "lm-sensors absent — press i to install", "en": "lm-sensors absent — press i to install",
@ -3061,10 +3052,6 @@ TRANSLATIONS = {
"fr": "Continuer malgré ces collisions ? (o/N, défaut : non) : ", "fr": "Continuer malgré ces collisions ? (o/N, défaut : non) : ",
"en": "Continue despite these collisions? (y/N, default: no): ", "en": "Continue despite these collisions? (y/N, default: no): ",
}, },
"Cancelled.": {
"fr": "Annulé.",
"en": "Cancelled.",
},
"Resolving VM IPs (parallel, emulated boot is slow)...": { "Resolving VM IPs (parallel, emulated boot is slow)...": {
"fr": "Résolution des IP des VM (en parallèle, le démarrage émulé " "fr": "Résolution des IP des VM (en parallèle, le démarrage émulé "
"est lent)...", "est lent)...",
@ -3174,10 +3161,6 @@ TRANSLATIONS = {
"fr": "Bilan déploiement :", "fr": "Bilan déploiement :",
"en": "Deploy summary:", "en": "Deploy summary:",
}, },
"failed": {
"fr": "en échec",
"en": "failed",
},
"IPs resolved:": { "IPs resolved:": {
"fr": "IP résolues :", "fr": "IP résolues :",
"en": "IPs resolved:", "en": "IPs resolved:",