i18n(wizard): translate the first-run wizard (was all hardcoded English)

The first-run wizard predated the i18n system — every label, button, and help
line was hardcoded English. Route them all through TR():

- 62 literals in app_wizard.cpp replaced with TR(). Where a wizard string is a
  parallel of existing content, it reuses the existing key (the whole bootstrap_*
  family, plus theme / language / balance_layout / low_spec_mode / ui_opacity /
  console_scanline / download / retry / cancel) so it inherits their translations
  and stays consistent with Settings. Button labels drop their ##id suffix and use
  TR(key) directly (the app's established TactileButton(TR(...)) pattern; the
  wizard's phase buttons never share a frame, so no id collision).
- 55 new wiz_* English keys in i18n.cpp for the wizard-specific strings, and their
  translations back-filled across all 8 languages (es/de/fr/pt/ru/zh/ja/ko);
  format specifiers (%s, %zu) and newlines preserved. CJK subset rebuilt.

Verified on the sweep: English renders with correct labels in place (all keys
resolve), and a German run shows the reused + new keys translated end-to-end
(Darstellung / Acryl-Glaseffekte / Verschlüsseln & Weiter …).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-07-12 01:41:18 -05:00
parent 758ea06ab7
commit 09e0b962c3
11 changed files with 581 additions and 84 deletions

View File

@@ -1369,6 +1369,61 @@
"warning_upper": "ATTENTION !",
"website": "Site web",
"window_opacity": "Opacité de la fenêtre",
"wiz_acrylic": "Effets de verre acrylique",
"wiz_acrylic_desc": "Flou translucide sur les panneaux (Désactivé les coupe)",
"wiz_already_encrypted": "Le portefeuille est déjà chiffré",
"wiz_already_encrypted_desc": "Votre portefeuille est protégé par une phrase secrète. Aucune autre action n'est nécessaire.",
"wiz_appearance": "Apparence",
"wiz_bootstrap": "Amorçage",
"wiz_bootstrap_desc": "Téléchargez un amorçage de la blockchain pour accélérer considérablement la synchronisation initiale.\n\nVotre fichier wallet.dat existant NE sera PAS modifié ni remplacé.",
"wiz_bootstrap_failed": "Échec de l'amorçage",
"wiz_confirm": "Confirmer :",
"wiz_continue": "Continuer",
"wiz_daemon_sending_stop": "Envoi de la commande d'arrêt...",
"wiz_daemon_stop_failed": "Le démon ne s'est pas arrêté — essayez manuellement.",
"wiz_daemon_stopped_ok": "Démon arrêté.",
"wiz_daemon_waiting_stop": "En attente de l'arrêt du démon...",
"wiz_download_failed": "Échec du téléchargement",
"wiz_encrypt_bg": "Le chiffrement se terminera en arrière-plan",
"wiz_encrypt_continue": "Chiffrer et continuer",
"wiz_encrypt_desc": "Chiffrez votre portefeuille pour protéger les clés privées avec une phrase secrète.",
"wiz_encrypt_warning": "Si vous perdez votre phrase secrète, vous perdez l'accès à vos fonds.",
"wiz_encryption": "Chiffrement",
"wiz_ext_daemon_running": "Démon externe en cours d'exécution",
"wiz_ext_daemon_warning": "Il doit être arrêté avant de télécharger un amorçage, sinon les données de la chaîne pourraient être corrompues.",
"wiz_level": "Niveau :",
"wiz_lowspec_desc": "Désactiver tous les effets visuels lourds",
"wiz_off": "Désactivé",
"wiz_pass_mismatch": "Les phrases secrètes ne correspondent pas",
"wiz_pass_spaces": "La phrase secrète comporte des espaces en début/fin — supprimez-les",
"wiz_pass_too_short": "La phrase secrète doit comporter au moins 8 caractères (%zu/8)",
"wiz_passphrase": "Phrase secrète :",
"wiz_pin_confirm": "Confirmer le PIN :",
"wiz_pin_invalid": "Le PIN doit comporter 4 à 8 chiffres",
"wiz_pin_label": "PIN (4 à 8 chiffres) :",
"wiz_pin_mismatch": "Les PIN ne correspondent pas",
"wiz_pin_optional": "PIN de déverrouillage rapide (facultatif)",
"wiz_pin_title": "PIN de déverrouillage rapide",
"wiz_scanline_desc": "Effet de lignes de balayage CRT dans la console",
"wiz_skip": "Ignorer",
"wiz_skip_confirm": "Continuer SANS chiffrement ? Les clés seront stockées non chiffrées — cliquez à nouveau sur Ignorer pour confirmer.",
"wiz_step1": "Étape 1",
"wiz_step2": "Étape 2",
"wiz_step3": "Étape 3",
"wiz_stop_daemon": "Arrêter le démon",
"wiz_strength": "Robustesse : %s",
"wiz_strength_fair": "Moyenne",
"wiz_strength_good": "Bonne",
"wiz_strength_strong": "Forte",
"wiz_strength_weak": "Faible",
"wiz_theme_builtin": "Intégré",
"wiz_theme_custom": "Personnalisé",
"wiz_theme_effects": "Effets visuels du thème",
"wiz_theme_effects_desc": "Bordures animées, voile de couleur",
"wiz_theme_invalid": " (non valide)",
"wiz_ui_opacity_desc": "Transparence des cartes et de la barre latérale (1.0 = opaque)",
"wiz_welcome_sub": "Quelques choix rapides et votre nœud complet est prêt.",
"wiz_welcome_title": "Bienvenue dans ObsidianDragon !",
"wizard_daemon_start_failed": "Échec du démarrage du daemon — sera réessayé automatiquement",
"xmrig_browse_releases": "Parcourir toutes les versions…",
"xmrig_checking": "Recherche du dernier mineur…",