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": "Сохраните seed-фразу",
"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": "Действия жизненного цикла полного узла недоступны в 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": "Вы не сохранили seed-фразу — средства могут быть потеряны. Всё равно пропустить?",
"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%% за 24ч",
"baltab_pct_of_total_zaddr": "%.0f%% от общего · %d Z-addr",
"baltab_shielded": "Скрытый",
"baltab_shielded_amount": "Скрытый %.8f",
"baltab_t_addresses_count": "%d T-адресов",
"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": "Активность майнинга proof-of-work",
"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-addr) RPC-операции",
"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": "Демо-чат seed",
"grpa_showing_first_100_of": "... показаны первые 100 из %d",
"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": " (скрыт)",
@@ -1240,6 +1383,45 @@
"screenshot_sweep_full": "Полный обход интерфейса",
"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": "Закрыть",
@@ -1461,6 +1643,17 @@
"sweep_to": "Переведено на:",
"sweep_toggle": "Перевести в мой кошелёк (не сохранять ключ)",
"sweep_tx": "Транзакция:",
"swin_connection_failed": "Ошибка соединения: ",
"swin_connection_successful": "Соединение установлено!\nВерсия dragonxd: ",
"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": "Продолжить в фоне",