From bc41b3576982c1d84124eb77c925ef31eba507ed Mon Sep 17 00:00:00 2001 From: Mathieu Benoit Date: Mon, 3 Aug 2026 08:03:20 +0000 Subject: [PATCH] =?UTF-8?q?[FIX]=20todo:=20cinq=20cl=C3=A9s=20de=20traduct?= =?UTF-8?q?ion=20d=C3=A9clar=C3=A9es=20deux=20fois?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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) --- script/todo/todo_i18n.py | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/script/todo/todo_i18n.py b/script/todo/todo_i18n.py index 8019e35..ea90b82 100644 --- a/script/todo/todo_i18n.py +++ b/script/todo/todo_i18n.py @@ -310,10 +310,6 @@ TRANSLATIONS = { "fr": "Hôte SSH (ex: 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: ": { "fr": "Montage sshfs sur : ", "en": "Mounting sshfs on: ", @@ -1064,10 +1060,6 @@ TRANSLATIONS = { "fr": "Commandes personnalisées Claude Code :", "en": "Claude Code custom commands:", }, - "Total:": { - "fr": "Total :", - "en": "Total:", - }, "File already exists: ": { "fr": "Le fichier existe déjà : ", "en": "File already exists: ", @@ -2114,7 +2106,6 @@ TRANSLATIONS = { "Network": {"fr": "Réseau", "en": "Network"}, "Battery": {"fr": "Batterie", "en": "Battery"}, "Temperature": {"fr": "Température", "en": "Temperature"}, - "max": {"fr": "max", "en": "max"}, "lm-sensors absent — press i to install": { "fr": "lm-sensors absent — appuyez sur i pour installer", "en": "lm-sensors absent — press i to install", @@ -3061,10 +3052,6 @@ TRANSLATIONS = { "fr": "Continuer malgré ces collisions ? (o/N, défaut : non) : ", "en": "Continue despite these collisions? (y/N, default: no): ", }, - "Cancelled.": { - "fr": "Annulé.", - "en": "Cancelled.", - }, "Resolving VM IPs (parallel, emulated boot is slow)...": { "fr": "Résolution des IP des VM (en parallèle, le démarrage émulé " "est lent)...", @@ -3174,10 +3161,6 @@ TRANSLATIONS = { "fr": "Bilan déploiement :", "en": "Deploy summary:", }, - "failed": { - "fr": "en échec", - "en": "failed", - }, "IPs resolved:": { "fr": "IP résolues :", "en": "IPs resolved:",