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": "金額:",
"animate_avatars": "アバターをアニメーション",
"appearance": "外観",
"appx_back": "戻る",
"appx_back_up_seed_phrase_title": "シードフレーズをバックアップ",
"appx_birthday_block_height": "誕生日(ブロック高): %llu — これもバックアップしてください。",
"appx_blockchain_data_deleted": "ブロックチェーンデータを削除しました(%d件。ネットワークから再同期するため、デーモンを再起動しています。",
"appx_blockchain_maintenance_in_progress": "ブロックチェーンのメンテナンス操作がすでに進行中です。",
"appx_blockchain_rescan_complete": "ブロックチェーンの再スキャンが完了しました",
"appx_bootstrap_complete_reconciling": "ブートストラップが完了しました。新しいチェーンデータとウォレットを照合しています。",
"appx_cancel": "キャンセル",
"appx_cleaning_up": "クリーンアップしています...",
"appx_confirm_your_backup": "バックアップを確認",
"appx_copied_clipboard_autoclears": "コピーしました — クリップボードは45秒後に自動的にクリアされます",
"appx_copy": "コピー",
"appx_could_not_start_restore": "復元を開始できませんでした",
"appx_create_failed_prefix": "作成に失敗しました: ",
"appx_creating_your_wallet": "ウォレットを作成しています…",
"appx_daemon_error": "デーモンエラー",
"appx_daemon_reinstall_in_progress": "デーモンの再インストールがすでに進行中です。",
"appx_disconnecting": "切断しています...",
"appx_done": "完了",
"appx_dragonxd_output": "dragonxd の出力",
"appx_encrypting_wallet": "ウォレットを暗号化しています...",
"appx_fullnode_lifecycle_unavailable_lite": "フルノードのライフサイクル操作はライトビルドでは利用できません",
"appx_installing_bundled_daemon": "同梱デーモンをインストールしています。ノードが停止、更新、再起動されます...",
"appx_invalid_payment_uri_prefix": "無効な支払いURI: ",
"appx_ive_written_it_down": "書き留めました",
"appx_keep_node_running_and_quit": "ノードを起動したまま終了",
"appx_last_block_n": "最新ブロック: %d",
"appx_last_used_wallet_not_found_prefix": "前回使用したウォレットファイル(",
"appx_last_used_wallet_not_found_suffix": ")が見つかりませんでした。代わりにデフォルトのウォレットを開きました。移動した場合は、元に戻してからウォレット一覧で切り替えてください。",
"appx_low_spec_mode_disabled": "低スペックモードを無効にしました",
"appx_low_spec_mode_enabled": "低スペックモードを有効にしました",
"appx_miner_stopped_prefix": "マイナーが停止しました: ",
"appx_miner_stopped_unexpectedly": "マイナーが予期せず停止しました。",
"appx_n_min_n_sec": "%d分 %d秒",
"appx_n_seconds": "%d秒",
"appx_no_bundled_daemon_to_install": "このビルドにはインストールできる同梱デーモンがありません",
"appx_no_embedded_daemon_to_install": "このビルドにはインストールできる組み込みデーモンがありません",
"appx_node_busy_restarting": "ノードが再起動中でビジー状態です。少し待ってから再試行してください。",
"appx_node_rebuilding_witness_cache": "ノードがウィットネスキャッシュを再構築しています",
"appx_not_next_word": " — 次の単語ではありません",
"appx_payment_request_loaded": "支払いリクエストを読み込みました",
"appx_pool_miner_connected_and_hashing": "プールマイナーが接続し、ハッシュ計算中です。",
"appx_progress_n_of_n": "進捗: %d / %d",
"appx_rebuilding_sapling_note_witnesses": "Saplingートウィットネスを再構築しています…",
"appx_rebuilding_witness_cache_blocks_left": "ウィットネスキャッシュを再構築中 %.0f%% — 残り%dブロック",
"appx_rebuilding_witness_cache_pct": "ウィットネスキャッシュを再構築中 %.0f%%",
"appx_recovery_phrase_word_count": "リカバリーフレーズは24単語である必要があります。現在は%d単語です。",
"appx_restarting_daemon_rescan_flag": "-rescanフラグ付きでデーモンを再起動しています...",
"appx_restarting_daemon_zapwallettxes": "-zapwallettxes=2ウォレット修復付きでデーモンを再起動しています...",
"appx_restoring_your_wallet": "ウォレットを復元しています…",
"appx_seed_backup_warning": "この24個の単語は、ウォレットを復元する唯一の手段です。順番どおりに書き留め、オフラインで保管し、決して他人に教えないでください。紛失すると、資金は永久に失われます。",
"appx_seed_not_backed_up_warning": "シードをバックアップしていません。資金を失う可能性があります。それでもスキップしますか?",
"appx_sending_stop_command_to_daemon": "デーモンに停止コマンドを送信しています...",
"appx_setting_initial_sapling_witnesses": "初期Saplingウィットネスを設定中 %.0f%%",
"appx_shutdown_complete": "シャットダウンが完了しました",
"appx_simple_background_disabled": "シンプル背景を無効にしました",
"appx_simple_background_enabled": "シンプル背景を有効にしました",
"appx_skip": "スキップ",
"appx_skip_anyway": "それでもスキップ",
"appx_still_status_prefix": "まだ「",
"appx_still_status_suffix": "」です — 今強制終了するとチェーンデータが破損する可能性があります。",
"appx_stop_anyway_and_quit": "それでも停止して終了",
"appx_stopping_daemon_deleting_blockchain": "デーモンを停止し、ブロックチェーンデータを削除しています...",
"appx_stopping_node_discards_rebuild": "今ノードを停止すると、進行中の再構築が破棄され、次回ウォレットを開いたときに再度実行されます(数分かかります)。代わりにノードを起動したままにすることもできます。",
"appx_stopping_pool_miner": "プールマイナーを停止しています...",
"appx_syncing_pct_block_n_of_n": "同期中 %.1f%% — ブロック %d / %d",
"appx_tap_words_in_order": "保存したことを確認するため、単語を正しい順番でタップしてください。",
"appx_theme_effects_disabled": "テーマ効果を無効にしました",
"appx_theme_effects_enabled": "テーマ効果を有効にしました",
"appx_theme_prefix": "テーマ: ",
"appx_use_settings_restart_daemon_hint": "設定 > デーモンを再起動 から再試行してください",
"appx_waiting_for_daemon_to_encrypt_wallet": "デーモンによるウォレットの暗号化を待っています...",
"appx_wallet_created_and_backed_up": "ウォレットを作成し、バックアップしました。",
"appx_wallet_open_failed_prefix": "ウォレットを開けませんでした: ",
"auto_shield": "マイニング自動シールド",
"av_intro": "マイニングソフトウェアは、望ましくない可能性があるものとしてフラグが立てられることがよくあります。プールマイニングを有効にするには、次の手順に従ってください。",
"av_open_security": "Windows セキュリティを開く",
@@ -100,6 +174,17 @@
"balance_shielded_fmt": "シールド: %.8f",
"balance_syncing_pct": "同期中 %.1f%%",
"balance_transparent_fmt": "透明: %.8f",
"baltab_market": "市場",
"baltab_market_price_4dp": "市場価格: $%.4f",
"baltab_market_price_8dp": "市場価格: $%.8f",
"baltab_pct_change_24h": "%s%.1f%% 24h",
"baltab_pct_of_total_zaddr": "全体の%.0f%% · %d Z-addr",
"baltab_shielded": "シールド",
"baltab_shielded_amount": "シールド %.8f",
"baltab_t_addresses_count": "%d 個のT-address",
"baltab_total_balance": "合計残高",
"baltab_transparent": "透明",
"baltab_transparent_amount": "透明 %.8f",
"ban": "ブロック",
"banned_peers": "ブロック済みピア",
"block": "ブロック",
@@ -414,6 +499,7 @@
"contacts_shape_square": "四角",
"contacts_shape_tab": "左タブ",
"copied": "コピーしました!",
"copied_to_clipboard": "クリップボードにコピーしました",
"copy": "コピー",
"copy_address": "完全なアドレスをコピー",
"copy_error": "エラーをコピー",
@@ -593,6 +679,63 @@
"general": "一般",
"generating": "生成中",
"go_to_receive": "受信へ移動",
"grpa_current_block_paren": "(現在: %d",
"grpa_days_ago": "%lld日前",
"grpa_dbg_addrman": "ピアアドレスの追跡と管理",
"grpa_dbg_alert": "アラートシステムのメッセージ",
"grpa_dbg_bench": "操作のベンチマーク計測",
"grpa_dbg_coindb": "コインデータベースの読み書き操作",
"grpa_dbg_db": "Berkeley DB の操作",
"grpa_dbg_estimatefee": "手数料見積もりアルゴリズム",
"grpa_dbg_http": "HTTP RPCサーバーの動作",
"grpa_dbg_libevent": "Libevent ネットワークライブラリ",
"grpa_dbg_lock": "ロック競合のデバッグ",
"grpa_dbg_mempool": "トランザクションメモリプールの動作",
"grpa_dbg_net": "ネットワーク接続とメッセージ",
"grpa_dbg_paymentdisclosure": "支払い開示プロトコル",
"grpa_dbg_pow": "プルーフオブワークのマイニング動作",
"grpa_dbg_proxy": "SOCKS5 プロキシ接続",
"grpa_dbg_prune": "ブロックのプルーニング操作",
"grpa_dbg_rand": "乱数生成",
"grpa_dbg_reindex": "ブロックチェーンの再インデックス進捗",
"grpa_dbg_rpc": "RPCコマンドの処理",
"grpa_dbg_selectcoins": "トランザクション用のコイン選択",
"grpa_dbg_tor": "Tor統合とサーキット情報",
"grpa_dbg_zmq": "ZeroMQ 通知システム",
"grpa_dbg_zrpc": "シールドz-addrRPC操作",
"grpa_enter_private_key_to_import": "インポートする秘密鍵を入力してください。",
"grpa_error_prefix": "エラー: ",
"grpa_hr_ago": "%lld時間前",
"grpa_invalid_response_from_daemon": "デーモンからの応答が無効です",
"grpa_invalid_suffix": "(無効)",
"grpa_min_ago": "%lld分前",
"grpa_sec_ago": "%lld秒前",
"grpa_seed_demo_chat": "デモチャットのシード",
"grpa_showing_first_100_of": "... %d件中の最初の100件を表示",
"grpa_tab_about": "情報",
"grpa_tab_appearance": "外観",
"grpa_tab_backup_data": "バックアップとデータ",
"grpa_tab_chat": "チャット",
"grpa_tab_explorer": "エクスプローラー",
"grpa_tab_node_security": "ノードとセキュリティ",
"grpa_tab_wallet": "ウォレット",
"grpa_unexpected_getblockhash_result": "予期しない getblockhash の結果",
"grpb_copy": "コピー",
"grpb_max": "最大",
"grpb_new_badge_suffix": " [新規]",
"grpb_preview_msg_payment_through": "支払いは完了しましたか? 🙂",
"grpb_preview_msg_sending_rest": "残りを今送金します 👍",
"grpb_preview_msg_yep_confirmed": "はい — たった今確認できました ✅",
"grpb_selected_suffix": "\n選択済み",
"grpb_tooltip_address_balance": "%s\n残高: %.8f %s%s",
"grpb_undo_clear": "消去を元に戻す",
"grpc_benchmark_inconclusive": "ベンチマークの結果が不明確です: ハッシュレートのサンプルが記録されませんでした。プール接続を確認して再試行してください。",
"grpc_benchmark_takes_secs": "ベンチマークには約%d秒かかり、マイニングが中断されます。開始するにはもう一度クリックしてください。",
"grpc_bootstrap_failed": "ブートストラップに失敗しました",
"grpc_bootstrap_not_initialized": "ブートストラップが初期化されていません",
"grpc_hashrate_fee": "%s 手数料 %s%%",
"grpc_key_not_available": "このアドレスの鍵は利用できません",
"grpc_na": "該当なし",
"height": "高さ",
"help": "ヘルプ",
"hidden_tag": " (非表示)",
@@ -1237,6 +1380,45 @@
"screenshot_sweep_full": "UI全体スイープ",
"search_icons": "アイコンを検索...",
"search_placeholder": "検索...",
"sec_changing_passphrase": "パスフレーズを変更しています...",
"sec_changing_pin": "PINを変更しています...",
"sec_couldnt_lock_wallet": "ウォレットをロックできませんでした。まだロック解除された状態です。デーモンの接続を確認してください。",
"sec_encrypted_backup_suffix": "\n暗号化バックアップ: wallet.dat.encrypted.bak",
"sec_encrypting_wallet": "ウォレットを暗号化しています...",
"sec_encryption_did_not_complete": "ウォレットの暗号化が完了しませんでした。ウォレットは暗号化されていません。設定を開いて暗号化を完了してください。",
"sec_encryption_failed_prefix": "暗号化に失敗しました: ",
"sec_failed_prefix": "失敗しました: ",
"sec_failed_to_create_vault": "ボールトの作成に失敗しました",
"sec_importing_keys_rescanning": "鍵をインポートし、ブロックチェーンを再スキャンしています。処理中もウォレットは使用できます",
"sec_incorrect_current_pin": "現在のPINが正しくありません",
"sec_incorrect_passphrase_decrypt": "パスフレーズが正しくありません",
"sec_incorrect_passphrase_pin_setup": "パスフレーズが正しくありません",
"sec_incorrect_pin_remove": "PINが正しくありません",
"sec_internal_error_change_pin": "内部エラー",
"sec_internal_error_remove_pin": "内部エラー",
"sec_mode_passphrase": " パスフレーズ",
"sec_not_connected_to_daemon": "デーモンに接続されていません",
"sec_not_connected_to_daemon_pin": "デーモンに接続されていません",
"sec_passphrase_changed_successfully": "パスフレーズを変更しました",
"sec_pin_changed_successfully": "PINを変更しました",
"sec_pin_removed": "PINを削除しました",
"sec_pin_set_successfully": "PINを設定しました",
"sec_restart_daemon_for_encryption": "暗号化を有効にするには、デーモンを再起動してください。",
"sec_too_many_attempts_wait": "試行回数が多すぎます。%.0f秒お待ちください...",
"sec_total_elapsed_fmt": "合計経過時間: %d分 %02d秒",
"sec_unlock_button": "ロック解除",
"sec_unlock_failed_prefix": "ロック解除に失敗しました: ",
"sec_unlocking_fmt": "ロック解除中%s",
"sec_use_passphrase_instead": "代わりにパスフレーズを使用",
"sec_use_pin_instead": "代わりにPINを使用",
"sec_verifying_passphrase": "パスフレーズを確認しています...",
"sec_verifying_pin": "PINを確認しています...",
"sec_wallet_decrypted_all_keys_imported": "ウォレットの復号に成功しました。すべての鍵をインポートしました。",
"sec_wallet_encrypted_and_pin_set": "ウォレットを暗号化し、PINを設定しました",
"sec_wallet_encrypted_but_pin_vault_failed": "ウォレットは暗号化されましたが、PINボールトの作成に失敗しました",
"sec_wallet_encrypted_restarting_daemon": "ウォレットを暗号化しました。デーモンを再起動しています...",
"sec_wallet_encrypted_successfully": "ウォレットを暗号化しました",
"sec_wallet_locked_title": "ウォレットがロックされています",
"security": "セキュリティ",
"seed_backup_button": "シードフレーズ",
"seed_backup_close": "閉じる",
@@ -1458,6 +1640,17 @@
"sweep_to": "集約先:",
"sweep_toggle": "ウォレットに集約(鍵は保持しない)",
"sweep_tx": "取引:",
"swin_connection_failed": "接続に失敗しました: ",
"swin_connection_successful": "接続に成功しました!\ndragonxd バージョン: ",
"swin_invalid_suffix": "(無効)",
"swin_no_history_file_found": "履歴ファイルが見つかりません",
"swin_rescan_failed": "再スキャンに失敗しました: ",
"swin_rescan_started_from_block": "再スキャンを開始しました。開始ブロック ",
"swin_rescan_to": " 〜 ",
"swin_rpc_client_not_initialized": "RPCクライアントが初期化されていません",
"swin_settings_saved": "設定を保存しました",
"swin_theme_list_refreshed": "テーマ一覧を更新しました",
"swin_ztx_history_cleared": "Zトランザクション履歴を消去しました",
"switch_corrupt_body": "このウォレットは破損しているようです。ノードが開けませんでした。バックアップから復元するか、作り直すか、修復を試してください。",
"switch_corrupt_repair": "修復を試すsalvage",
"switch_progress_background": "バックグラウンドで続行",