feat(i18n): add English source + 8-language translations for 193 UI strings

Adds the i18n source for 193 previously-hardcoded UI strings (the
security / PIN / lock flow, first-run seed-backup wizard, witness-rebuild
shutdown dialog, and balance / mining / explorer labels) so they can be
localized. The TR() call-site wrapping rides in the accompanying UI commit.

- 193 keys added to loadBuiltinEnglish() (the English source of truth),
  including one pre-existing missing key (copied_to_clipboard).
- Additive res/lang/{de,es,fr,ja,ko,pt,ru,zh}.json (+193 each); every
  translation's printf format-signature was validated against English
  (0 mismatches) so the runtime validator accepts them.
- Rebuilt res/fonts/NotoSansCJK-Subset.ttf to cover ~30 new Han/Hangul
  glyphs introduced by the zh/ja/ko translations (tofu-free).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-01 19:36:50 -05:00
parent 4492aa3425
commit ed675f90d8
10 changed files with 1925 additions and 0 deletions

View File

@@ -60,6 +60,80 @@
"amount_label": "Montant :",
"animate_avatars": "Animer les avatars",
"appearance": "APPARENCE",
"appx_back": "Retour",
"appx_back_up_seed_phrase_title": "Sauvegardez votre phrase de récupération",
"appx_birthday_block_height": "Naissance (hauteur de bloc) : %llu — sauvegardez-la également.",
"appx_blockchain_data_deleted": "Données de la blockchain supprimées (%d éléments). Le démon redémarre pour se resynchroniser depuis le réseau.",
"appx_blockchain_maintenance_in_progress": "Une opération de maintenance de la blockchain est déjà en cours.",
"appx_blockchain_rescan_complete": "Nouvelle analyse de la blockchain terminée",
"appx_bootstrap_complete_reconciling": "Amorçage terminé — réconciliation de votre portefeuille avec les nouvelles données de la chaîne.",
"appx_cancel": "Annuler",
"appx_cleaning_up": "Nettoyage...",
"appx_confirm_your_backup": "Confirmez votre sauvegarde",
"appx_copied_clipboard_autoclears": "Copié — le presse-papiers s'efface automatiquement dans 45 s",
"appx_copy": "Copier",
"appx_could_not_start_restore": "Impossible de démarrer la restauration",
"appx_create_failed_prefix": "Échec de la création : ",
"appx_creating_your_wallet": "Création de votre portefeuille…",
"appx_daemon_error": "Erreur du démon",
"appx_daemon_reinstall_in_progress": "La réinstallation du démon est déjà en cours.",
"appx_disconnecting": "Déconnexion...",
"appx_done": "Terminé",
"appx_dragonxd_output": "Sortie de dragonxd",
"appx_encrypting_wallet": "Chiffrement du portefeuille...",
"appx_fullnode_lifecycle_unavailable_lite": "Les actions de cycle de vie du nœud complet ne sont pas disponibles dans la version allégée",
"appx_installing_bundled_daemon": "Installation du démon intégré — le nœud va s'arrêter, se mettre à jour, puis redémarrer...",
"appx_invalid_payment_uri_prefix": "URI de paiement invalide : ",
"appx_ive_written_it_down": "Je les ai notés",
"appx_keep_node_running_and_quit": "Laisser le nœud actif et quitter",
"appx_last_block_n": "Dernier bloc : %d",
"appx_last_used_wallet_not_found_prefix": "Votre dernier fichier de portefeuille utilisé (",
"appx_last_used_wallet_not_found_suffix": ") est introuvable — le portefeuille par défaut a été ouvert à la place. Si vous l'avez déplacé, restaurez-le et revenez à celui-ci depuis la liste des portefeuilles.",
"appx_low_spec_mode_disabled": "Mode faibles ressources désactivé",
"appx_low_spec_mode_enabled": "Mode faibles ressources activé",
"appx_miner_stopped_prefix": "Mineur arrêté : ",
"appx_miner_stopped_unexpectedly": "Le mineur s'est arrêté de manière inattendue.",
"appx_n_min_n_sec": "%d min %d s",
"appx_n_seconds": "%d secondes",
"appx_no_bundled_daemon_to_install": "Cette version ne contient aucun démon intégré à installer",
"appx_no_embedded_daemon_to_install": "Cette version ne contient aucun démon embarqué à installer",
"appx_node_busy_restarting": "Le nœud est occupé à redémarrer — réessayez dans un instant.",
"appx_node_rebuilding_witness_cache": "Le nœud reconstruit son cache de témoins",
"appx_not_next_word": " — ce n'est pas le mot suivant",
"appx_payment_request_loaded": "Demande de paiement chargée",
"appx_pool_miner_connected_and_hashing": "Mineur de pool connecté et en cours de hachage.",
"appx_progress_n_of_n": "Progression : %d / %d",
"appx_rebuilding_sapling_note_witnesses": "Reconstruction des témoins de notes Sapling…",
"appx_rebuilding_witness_cache_blocks_left": "Reconstruction du cache de témoins %.0f%% — %d blocs restants",
"appx_rebuilding_witness_cache_pct": "Reconstruction du cache de témoins %.0f%%",
"appx_recovery_phrase_word_count": "La phrase de récupération doit comporter 24 mots — vous en avez %d.",
"appx_restarting_daemon_rescan_flag": "Redémarrage du démon avec l'option -rescan...",
"appx_restarting_daemon_zapwallettxes": "Redémarrage du démon avec -zapwallettxes=2 (réparation du portefeuille)...",
"appx_restoring_your_wallet": "Restauration de votre portefeuille…",
"appx_seed_backup_warning": "Ces 24 mots sont le SEUL moyen de restaurer votre portefeuille. Notez-les dans l'ordre, conservez-les hors ligne et ne les partagez jamais. Si vous les perdez, vos fonds seront perdus à jamais.",
"appx_seed_not_backed_up_warning": "Vous n'avez pas sauvegardé votre phrase de récupération — des fonds pourraient être perdus. Ignorer quand même ?",
"appx_sending_stop_command_to_daemon": "Envoi de la commande d'arrêt au démon...",
"appx_setting_initial_sapling_witnesses": "Définition des témoins Sapling initiaux %.0f%%",
"appx_shutdown_complete": "Arrêt terminé",
"appx_simple_background_disabled": "Arrière-plan simple désactivé",
"appx_simple_background_enabled": "Arrière-plan simple activé",
"appx_skip": "Ignorer",
"appx_skip_anyway": "Ignorer quand même",
"appx_still_status_prefix": "Toujours « ",
"appx_still_status_suffix": " » — forcer la fermeture maintenant peut corrompre les données de la chaîne.",
"appx_stop_anyway_and_quit": "Arrêter quand même et quitter",
"appx_stopping_daemon_deleting_blockchain": "Arrêt du démon et suppression des données de la blockchain...",
"appx_stopping_node_discards_rebuild": "Arrêter le nœud maintenant abandonne la reconstruction en cours et la relance (plusieurs minutes) à la prochaine ouverture du portefeuille. Vous pouvez plutôt laisser le nœud en marche.",
"appx_stopping_pool_miner": "Arrêt du mineur de pool...",
"appx_syncing_pct_block_n_of_n": "Synchronisation %.1f%% — Bloc %d / %d",
"appx_tap_words_in_order": "Touchez les mots dans le bon ordre pour confirmer que vous les avez enregistrés.",
"appx_theme_effects_disabled": "Effets de thème désactivés",
"appx_theme_effects_enabled": "Effets de thème activés",
"appx_theme_prefix": "Thème : ",
"appx_use_settings_restart_daemon_hint": "Utilisez Paramètres > Redémarrer le démon pour réessayer",
"appx_waiting_for_daemon_to_encrypt_wallet": "En attente du chiffrement du portefeuille par le démon...",
"appx_wallet_created_and_backed_up": "Portefeuille créé et sauvegardé.",
"appx_wallet_open_failed_prefix": "Échec de l'ouverture du portefeuille : ",
"auto_shield": "Auto-blindage du minage",
"av_intro": "Les logiciels de minage sont souvent signalés comme potentiellement indésirables. Suivez ces étapes pour activer le minage en pool :",
"av_open_security": "Ouvrir Sécurité Windows",
@@ -100,6 +174,17 @@
"balance_shielded_fmt": "Blindé : %.8f",
"balance_syncing_pct": "Synchronisation %.1f%%",
"balance_transparent_fmt": "Transparent : %.8f",
"baltab_market": "Marché",
"baltab_market_price_4dp": "Marché : %.4f $",
"baltab_market_price_8dp": "Marché : %.8f $",
"baltab_pct_change_24h": "%s%.1f%% 24h",
"baltab_pct_of_total_zaddr": "%.0f%% du total · %d Z-addr",
"baltab_shielded": "Protégé",
"baltab_shielded_amount": "Protégé %.8f",
"baltab_t_addresses_count": "%d T-addresses",
"baltab_total_balance": "Solde total",
"baltab_transparent": "Transparent",
"baltab_transparent_amount": "Transparent %.8f",
"ban": "Bannir",
"banned_peers": "Pairs bannis",
"block": "Bloc",
@@ -414,6 +499,7 @@
"contacts_shape_square": "Carré",
"contacts_shape_tab": "Onglet",
"copied": "Copié !",
"copied_to_clipboard": "Copié dans le presse-papiers",
"copy": "Copier",
"copy_address": "Copier l'adresse complète",
"copy_error": "Copier l'erreur",
@@ -593,6 +679,63 @@
"general": "Général",
"generating": "Génération",
"go_to_receive": "Aller à Recevoir",
"grpa_current_block_paren": "(Actuel : %d)",
"grpa_days_ago": "il y a %lld jours",
"grpa_dbg_addrman": "Suivi et gestion des adresses des pairs",
"grpa_dbg_alert": "Messages du système d'alerte",
"grpa_dbg_bench": "Chronométrage des performances des opérations",
"grpa_dbg_coindb": "Opérations de lecture/écriture de la base de données des pièces",
"grpa_dbg_db": "Opérations Berkeley DB",
"grpa_dbg_estimatefee": "Algorithme d'estimation des frais",
"grpa_dbg_http": "Activité du serveur RPC HTTP",
"grpa_dbg_libevent": "Bibliothèque réseau Libevent",
"grpa_dbg_lock": "Débogage de la contention des verrous",
"grpa_dbg_mempool": "Activité du pool mémoire des transactions",
"grpa_dbg_net": "Connexions et messages réseau",
"grpa_dbg_paymentdisclosure": "Protocole de divulgation de paiement",
"grpa_dbg_pow": "Activité de minage par preuve de travail",
"grpa_dbg_proxy": "Connexions proxy SOCKS5",
"grpa_dbg_prune": "Opérations d'élagage des blocs",
"grpa_dbg_rand": "Génération de nombres aléatoires",
"grpa_dbg_reindex": "Progression de la réindexation de la blockchain",
"grpa_dbg_rpc": "Traitement des commandes RPC",
"grpa_dbg_selectcoins": "Sélection des pièces pour les transactions",
"grpa_dbg_tor": "Intégration de Tor et informations de circuit",
"grpa_dbg_zmq": "Système de notification ZeroMQ",
"grpa_dbg_zrpc": "Opérations RPC protégées (z-addr)",
"grpa_enter_private_key_to_import": "Saisissez une clé privée à importer.",
"grpa_error_prefix": "Erreur : ",
"grpa_hr_ago": "il y a %lld h",
"grpa_invalid_response_from_daemon": "Réponse invalide du démon",
"grpa_invalid_suffix": " (invalide)",
"grpa_min_ago": "il y a %lld min",
"grpa_sec_ago": "il y a %lld s",
"grpa_seed_demo_chat": "Chat de démonstration seed",
"grpa_showing_first_100_of": "... affichage des 100 premiers sur %d",
"grpa_tab_about": "À propos",
"grpa_tab_appearance": "Apparence",
"grpa_tab_backup_data": "Sauvegarde et données",
"grpa_tab_chat": "Chat",
"grpa_tab_explorer": "Explorateur",
"grpa_tab_node_security": "Nœud et sécurité",
"grpa_tab_wallet": "Portefeuille",
"grpa_unexpected_getblockhash_result": "résultat getblockhash inattendu",
"grpb_copy": "Copier",
"grpb_max": "Max",
"grpb_new_badge_suffix": " [NOUVEAU]",
"grpb_preview_msg_payment_through": "Le paiement est-il passé ? 🙂",
"grpb_preview_msg_sending_rest": "J'envoie le reste maintenant 👍",
"grpb_preview_msg_yep_confirmed": "Oui — je viens de confirmer ✅",
"grpb_selected_suffix": "\n(sélectionné)",
"grpb_tooltip_address_balance": "%s\nSolde : %.8f %s%s",
"grpb_undo_clear": "Annuler l'effacement",
"grpc_benchmark_inconclusive": "Benchmark non concluant : aucun échantillon de taux de hachage n'a été enregistré. Vérifiez la connexion au pool et réessayez.",
"grpc_benchmark_takes_secs": "Le benchmark prend environ %d s et interrompt le minage. Cliquez de nouveau pour démarrer.",
"grpc_bootstrap_failed": "Échec de l'amorçage",
"grpc_bootstrap_not_initialized": "Amorçage non initialisé",
"grpc_hashrate_fee": "%s %s%% de frais",
"grpc_key_not_available": "Clé non disponible pour cette adresse",
"grpc_na": "N/D",
"height": "Hauteur",
"help": "Aide",
"hidden_tag": " (masqué)",
@@ -1240,6 +1383,45 @@
"screenshot_sweep_full": "Balayage complet de l'interface",
"search_icons": "Rechercher des icônes...",
"search_placeholder": "Rechercher...",
"sec_changing_passphrase": "Modification de la phrase secrète...",
"sec_changing_pin": "Modification du PIN...",
"sec_couldnt_lock_wallet": "Impossible de verrouiller le portefeuille — il reste déverrouillé. Vérifiez la connexion au démon.",
"sec_encrypted_backup_suffix": "\nSauvegarde chiffrée : wallet.dat.encrypted.bak",
"sec_encrypting_wallet": "Chiffrement du portefeuille...",
"sec_encryption_did_not_complete": "Le chiffrement du portefeuille ne s'est pas terminé — votre portefeuille N'est PAS chiffré. Ouvrez les Paramètres pour terminer le chiffrement.",
"sec_encryption_failed_prefix": "Échec du chiffrement : ",
"sec_failed_prefix": "Échec : ",
"sec_failed_to_create_vault": "Échec de la création du coffre",
"sec_importing_keys_rescanning": "Importation des clés et nouvelle analyse de la blockchain — le portefeuille reste utilisable pendant l'opération",
"sec_incorrect_current_pin": "PIN actuel incorrect",
"sec_incorrect_passphrase_decrypt": "Phrase secrète incorrecte",
"sec_incorrect_passphrase_pin_setup": "Phrase secrète incorrecte",
"sec_incorrect_pin_remove": "PIN incorrect",
"sec_internal_error_change_pin": "Erreur interne",
"sec_internal_error_remove_pin": "Erreur interne",
"sec_mode_passphrase": " Phrase secrète",
"sec_not_connected_to_daemon": "Non connecté au démon",
"sec_not_connected_to_daemon_pin": "Non connecté au démon",
"sec_passphrase_changed_successfully": "Phrase secrète modifiée avec succès",
"sec_pin_changed_successfully": "PIN modifié avec succès",
"sec_pin_removed": "PIN supprimé",
"sec_pin_set_successfully": "PIN défini avec succès",
"sec_restart_daemon_for_encryption": "Veuillez redémarrer votre démon pour que le chiffrement prenne effet.",
"sec_too_many_attempts_wait": "Trop de tentatives. Patientez %.0f secondes...",
"sec_total_elapsed_fmt": "Temps total écoulé : %dm %02ds",
"sec_unlock_button": "Déverrouiller",
"sec_unlock_failed_prefix": "Échec du déverrouillage : ",
"sec_unlocking_fmt": "Déverrouillage%s",
"sec_use_passphrase_instead": "Utiliser une phrase secrète",
"sec_use_pin_instead": "Utiliser un PIN",
"sec_verifying_passphrase": "Vérification de la phrase secrète...",
"sec_verifying_pin": "Vérification du PIN...",
"sec_wallet_decrypted_all_keys_imported": "Portefeuille déchiffré avec succès ! Toutes les clés ont été importées.",
"sec_wallet_encrypted_and_pin_set": "Portefeuille chiffré et PIN défini",
"sec_wallet_encrypted_but_pin_vault_failed": "Portefeuille chiffré mais échec du coffre PIN",
"sec_wallet_encrypted_restarting_daemon": "Portefeuille chiffré. Redémarrage du démon...",
"sec_wallet_encrypted_successfully": "Portefeuille chiffré avec succès",
"sec_wallet_locked_title": "Portefeuille verrouillé",
"security": "SÉCURITÉ",
"seed_backup_button": "Phrase de récupération",
"seed_backup_close": "Fermer",
@@ -1461,6 +1643,17 @@
"sweep_to": "Balayé vers :",
"sweep_toggle": "Balayer vers mon portefeuille (ne pas conserver la clé)",
"sweep_tx": "Transaction :",
"swin_connection_failed": "Échec de la connexion : ",
"swin_connection_successful": "Connexion réussie !\nVersion de dragonxd : ",
"swin_invalid_suffix": " (invalide)",
"swin_no_history_file_found": "Aucun fichier d'historique trouvé",
"swin_rescan_failed": "Échec de la nouvelle analyse : ",
"swin_rescan_started_from_block": "Nouvelle analyse démarrée à partir du bloc ",
"swin_rescan_to": " à ",
"swin_rpc_client_not_initialized": "Client RPC non initialisé",
"swin_settings_saved": "Paramètres enregistrés",
"swin_theme_list_refreshed": "Liste des thèmes actualisée",
"swin_ztx_history_cleared": "Historique des transactions Z effacé",
"switch_corrupt_body": "Ce portefeuille semble corrompu — le nœud n'a pas pu l'ouvrir. Restaurez-le depuis une sauvegarde, recréez-le ou tentez de le réparer.",
"switch_corrupt_repair": "Tenter une réparation (salvage)",
"switch_progress_background": "Continuer en arrière-plan",