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": "Valor:",
"animate_avatars": "Animar avatares",
"appearance": "APARÊNCIA",
"appx_back": "Voltar",
"appx_back_up_seed_phrase_title": "Faça o backup da sua frase-semente",
"appx_birthday_block_height": "Nascimento (altura do bloco): %llu — faça o backup disto também.",
"appx_blockchain_data_deleted": "Dados da blockchain excluídos (%d itens). O daemon está reiniciando para ressincronizar com a rede.",
"appx_blockchain_maintenance_in_progress": "Uma operação de manutenção da blockchain já está em andamento.",
"appx_blockchain_rescan_complete": "Reescaneamento da blockchain concluído",
"appx_bootstrap_complete_reconciling": "Bootstrap concluído — reconciliando sua carteira com os novos dados da chain.",
"appx_cancel": "Cancelar",
"appx_cleaning_up": "Limpando...",
"appx_confirm_your_backup": "Confirme seu backup",
"appx_copied_clipboard_autoclears": "Copiado — a área de transferência será limpa em 45s",
"appx_copy": "Copiar",
"appx_could_not_start_restore": "Não foi possível iniciar a restauração",
"appx_create_failed_prefix": "Falha na criação: ",
"appx_creating_your_wallet": "Criando sua carteira…",
"appx_daemon_error": "Erro do Daemon",
"appx_daemon_reinstall_in_progress": "A reinstalação do daemon já está em andamento.",
"appx_disconnecting": "Desconectando...",
"appx_done": "Concluído",
"appx_dragonxd_output": "saída do dragonxd",
"appx_encrypting_wallet": "Criptografando a carteira...",
"appx_fullnode_lifecycle_unavailable_lite": "As ações de ciclo de vida do nó completo não estão disponíveis na versão lite",
"appx_installing_bundled_daemon": "Instalando o daemon incluído — o nó vai parar, atualizar e reiniciar...",
"appx_invalid_payment_uri_prefix": "URI de pagamento inválida: ",
"appx_ive_written_it_down": "Já anotei",
"appx_keep_node_running_and_quit": "Manter o nó em execução e sair",
"appx_last_block_n": "Último bloco: %d",
"appx_last_used_wallet_not_found_prefix": "Seu último arquivo de carteira usado (",
"appx_last_used_wallet_not_found_suffix": ") não foi encontrado — a carteira padrão foi aberta em seu lugar. Se você o moveu, restaure-o e volte a ele pela lista de carteiras.",
"appx_low_spec_mode_disabled": "Modo de baixo desempenho desativado",
"appx_low_spec_mode_enabled": "Modo de baixo desempenho ativado",
"appx_miner_stopped_prefix": "Minerador parado: ",
"appx_miner_stopped_unexpectedly": "O minerador parou inesperadamente.",
"appx_n_min_n_sec": "%d min %d s",
"appx_n_seconds": "%d segundos",
"appx_no_bundled_daemon_to_install": "Esta versão não tem daemon incluído para instalar",
"appx_no_embedded_daemon_to_install": "Esta versão não tem daemon embutido para instalar",
"appx_node_busy_restarting": "O nó está ocupado reiniciando — tente novamente em instantes.",
"appx_node_rebuilding_witness_cache": "O nó está reconstruindo seu cache de testemunhas",
"appx_not_next_word": " — essa não é a próxima palavra",
"appx_payment_request_loaded": "Solicitação de pagamento carregada",
"appx_pool_miner_connected_and_hashing": "Minerador de pool conectado e processando hashes.",
"appx_progress_n_of_n": "Progresso: %d / %d",
"appx_rebuilding_sapling_note_witnesses": "Reconstruindo testemunhas de notas Sapling…",
"appx_rebuilding_witness_cache_blocks_left": "Reconstruindo cache de testemunhas %.0f%% — %d blocos restantes",
"appx_rebuilding_witness_cache_pct": "Reconstruindo cache de testemunhas %.0f%%",
"appx_recovery_phrase_word_count": "A frase de recuperação deve ter 24 palavras — você tem %d.",
"appx_restarting_daemon_rescan_flag": "Reiniciando o daemon com a flag -rescan...",
"appx_restarting_daemon_zapwallettxes": "Reiniciando o daemon com -zapwallettxes=2 (reparo da carteira)...",
"appx_restoring_your_wallet": "Restaurando sua carteira…",
"appx_seed_backup_warning": "Estas 24 palavras são a ÚNICA forma de restaurar sua carteira. Anote-as na ordem, guarde-as offline e nunca as compartilhe. Se perdê-las, seus fundos desaparecem para sempre.",
"appx_seed_not_backed_up_warning": "Você não fez o backup da sua semente — os fundos podem ser perdidos. Pular mesmo assim?",
"appx_sending_stop_command_to_daemon": "Enviando comando de parada ao daemon...",
"appx_setting_initial_sapling_witnesses": "Definindo testemunhas Sapling iniciais %.0f%%",
"appx_shutdown_complete": "Encerramento concluído",
"appx_simple_background_disabled": "Fundo simples desativado",
"appx_simple_background_enabled": "Fundo simples ativado",
"appx_skip": "Pular",
"appx_skip_anyway": "Pular mesmo assim",
"appx_still_status_prefix": "Ainda \"",
"appx_still_status_suffix": "\" — forçar o encerramento agora pode corromper os dados da chain.",
"appx_stop_anyway_and_quit": "Parar mesmo assim e sair",
"appx_stopping_daemon_deleting_blockchain": "Parando o daemon e excluindo os dados da blockchain...",
"appx_stopping_node_discards_rebuild": "Parar o nó agora descarta a reconstrução em andamento e a reinicia (vários minutos) na próxima vez que você abrir a carteira. Em vez disso, você pode manter o nó em execução.",
"appx_stopping_pool_miner": "Parando o minerador de pool...",
"appx_syncing_pct_block_n_of_n": "Sincronizando %.1f%% — Bloco %d / %d",
"appx_tap_words_in_order": "Toque nas palavras na ordem correta para confirmar que você as salvou.",
"appx_theme_effects_disabled": "Efeitos de tema desativados",
"appx_theme_effects_enabled": "Efeitos de tema ativados",
"appx_theme_prefix": "Tema: ",
"appx_use_settings_restart_daemon_hint": "Use Configurações > Reiniciar Daemon para tentar novamente",
"appx_waiting_for_daemon_to_encrypt_wallet": "Aguardando o daemon criptografar a carteira...",
"appx_wallet_created_and_backed_up": "Carteira criada e com backup feito.",
"appx_wallet_open_failed_prefix": "Falha ao abrir a carteira: ",
"auto_shield": "Auto-blindar mineração",
"av_intro": "Softwares de mineração costumam ser sinalizados como potencialmente indesejados. Siga estes passos para habilitar a mineração em pool:",
"av_open_security": "Abrir Segurança do Windows",
@@ -100,6 +174,17 @@
"balance_shielded_fmt": "Blindado: %.8f",
"balance_syncing_pct": "Sincronizando %.1f%%",
"balance_transparent_fmt": "Transparente: %.8f",
"baltab_market": "Mercado",
"baltab_market_price_4dp": "Mercado: $%.4f",
"baltab_market_price_8dp": "Mercado: $%.8f",
"baltab_pct_change_24h": "%s%.1f%% 24h",
"baltab_pct_of_total_zaddr": "%.0f%% do total · %d Z-addr",
"baltab_shielded": "Blindado",
"baltab_shielded_amount": "Blindado %.8f",
"baltab_t_addresses_count": "%d T-addresses",
"baltab_total_balance": "Saldo Total",
"baltab_transparent": "Transparente",
"baltab_transparent_amount": "Transparente %.8f",
"ban": "Banir",
"banned_peers": "Pares Banidos",
"block": "Bloco",
@@ -414,6 +499,7 @@
"contacts_shape_square": "Quadrado",
"contacts_shape_tab": "Aba",
"copied": "Copiado!",
"copied_to_clipboard": "Copiado para a área de transferência",
"copy": "Copiar",
"copy_address": "Copiar Endereço Completo",
"copy_error": "Copiar Erro",
@@ -593,6 +679,63 @@
"general": "Geral",
"generating": "Gerando",
"go_to_receive": "Ir para Receber",
"grpa_current_block_paren": "(Atual: %d)",
"grpa_days_ago": "há %lld dias",
"grpa_dbg_addrman": "Rastreamento e gerenciamento de endereços de pares",
"grpa_dbg_alert": "Mensagens do sistema de alertas",
"grpa_dbg_bench": "Medições de tempo de benchmark das operações",
"grpa_dbg_coindb": "Operações de leitura/gravação do banco de dados de moedas",
"grpa_dbg_db": "Operações do Berkeley DB",
"grpa_dbg_estimatefee": "Algoritmo de estimativa de taxa",
"grpa_dbg_http": "Atividade do servidor RPC HTTP",
"grpa_dbg_libevent": "Biblioteca de rede Libevent",
"grpa_dbg_lock": "Depuração de contenção de bloqueios",
"grpa_dbg_mempool": "Atividade do pool de memória de transações",
"grpa_dbg_net": "Conexões e mensagens de rede",
"grpa_dbg_paymentdisclosure": "Protocolo de divulgação de pagamento",
"grpa_dbg_pow": "Atividade de mineração de prova de trabalho",
"grpa_dbg_proxy": "Conexões de proxy SOCKS5",
"grpa_dbg_prune": "Operações de poda de blocos",
"grpa_dbg_rand": "Geração de números aleatórios",
"grpa_dbg_reindex": "Progresso da reindexação da blockchain",
"grpa_dbg_rpc": "Processamento de comandos RPC",
"grpa_dbg_selectcoins": "Seleção de moedas para transações",
"grpa_dbg_tor": "Integração com Tor e informações de circuito",
"grpa_dbg_zmq": "Sistema de notificações ZeroMQ",
"grpa_dbg_zrpc": "Operações RPC blindadas (z-address)",
"grpa_enter_private_key_to_import": "Insira uma chave privada para importar.",
"grpa_error_prefix": "Erro: ",
"grpa_hr_ago": "há %lld h",
"grpa_invalid_response_from_daemon": "Resposta inválida do daemon",
"grpa_invalid_suffix": " (inválido)",
"grpa_min_ago": "há %lld min",
"grpa_sec_ago": "há %lld s",
"grpa_seed_demo_chat": "Chat de demonstração da semente",
"grpa_showing_first_100_of": "... mostrando os primeiros 100 de %d",
"grpa_tab_about": "Sobre",
"grpa_tab_appearance": "Aparência",
"grpa_tab_backup_data": "Backup e Dados",
"grpa_tab_chat": "Chat",
"grpa_tab_explorer": "Explorer",
"grpa_tab_node_security": "Nó e Segurança",
"grpa_tab_wallet": "Carteira",
"grpa_unexpected_getblockhash_result": "resultado inesperado de getblockhash",
"grpb_copy": "Copiar",
"grpb_max": "Máx",
"grpb_new_badge_suffix": " [NOVO]",
"grpb_preview_msg_payment_through": "O pagamento foi concluído? 🙂",
"grpb_preview_msg_sending_rest": "Enviando o restante agora 👍",
"grpb_preview_msg_yep_confirmed": "Sim — acabei de confirmar ✅",
"grpb_selected_suffix": "\n(selecionado)",
"grpb_tooltip_address_balance": "%s\nSaldo: %.8f %s%s",
"grpb_undo_clear": "Desfazer Limpar",
"grpc_benchmark_inconclusive": "Benchmark inconclusivo: nenhuma amostra de taxa de hash foi registrada. Verifique a conexão com a pool e tente novamente.",
"grpc_benchmark_takes_secs": "O benchmark leva cerca de %ds e interrompe a mineração. Clique novamente para iniciar.",
"grpc_bootstrap_failed": "Falha no bootstrap",
"grpc_bootstrap_not_initialized": "Bootstrap não inicializado",
"grpc_hashrate_fee": "%s %s%% de taxa",
"grpc_key_not_available": "Chave não disponível para este endereço",
"grpc_na": "N/D",
"height": "Altura",
"help": "Ajuda",
"hidden_tag": " (oculto)",
@@ -1240,6 +1383,45 @@
"screenshot_sweep_full": "Varredura completa da interface",
"search_icons": "Pesquisar ícones...",
"search_placeholder": "Pesquisar...",
"sec_changing_passphrase": "Alterando a frase-senha...",
"sec_changing_pin": "Alterando o PIN...",
"sec_couldnt_lock_wallet": "Não foi possível bloquear a carteira — ela continua desbloqueada. Verifique a conexão com o daemon.",
"sec_encrypted_backup_suffix": "\nBackup criptografado: wallet.dat.encrypted.bak",
"sec_encrypting_wallet": "Criptografando a carteira...",
"sec_encryption_did_not_complete": "A criptografia da carteira não foi concluída — sua carteira NÃO está criptografada. Abra as Configurações para terminar de criptografá-la.",
"sec_encryption_failed_prefix": "Falha na criptografia: ",
"sec_failed_prefix": "Falhou: ",
"sec_failed_to_create_vault": "Falha ao criar o cofre",
"sec_importing_keys_rescanning": "Importando chaves e reescaneando a blockchain — a carteira pode ser usada durante o processo",
"sec_incorrect_current_pin": "PIN atual incorreto",
"sec_incorrect_passphrase_decrypt": "Frase-senha incorreta",
"sec_incorrect_passphrase_pin_setup": "Frase-senha incorreta",
"sec_incorrect_pin_remove": "PIN incorreto",
"sec_internal_error_change_pin": "Erro interno",
"sec_internal_error_remove_pin": "Erro interno",
"sec_mode_passphrase": " Frase-senha",
"sec_not_connected_to_daemon": "Não conectado ao daemon",
"sec_not_connected_to_daemon_pin": "Não conectado ao daemon",
"sec_passphrase_changed_successfully": "Frase-senha alterada com sucesso",
"sec_pin_changed_successfully": "PIN alterado com sucesso",
"sec_pin_removed": "PIN removido",
"sec_pin_set_successfully": "PIN definido com sucesso",
"sec_restart_daemon_for_encryption": "Reinicie o daemon para que a criptografia entre em vigor.",
"sec_too_many_attempts_wait": "Tentativas em excesso. Aguarde %.0f segundos...",
"sec_total_elapsed_fmt": "Tempo total: %dm %02ds",
"sec_unlock_button": "Desbloquear",
"sec_unlock_failed_prefix": "Falha ao desbloquear: ",
"sec_unlocking_fmt": "Desbloqueando%s",
"sec_use_passphrase_instead": "Usar frase-senha",
"sec_use_pin_instead": "Usar PIN",
"sec_verifying_passphrase": "Verificando a frase-senha...",
"sec_verifying_pin": "Verificando o PIN...",
"sec_wallet_decrypted_all_keys_imported": "Carteira descriptografada com sucesso! Todas as chaves importadas.",
"sec_wallet_encrypted_and_pin_set": "Carteira criptografada e PIN definido",
"sec_wallet_encrypted_but_pin_vault_failed": "Carteira criptografada, mas o cofre do PIN falhou",
"sec_wallet_encrypted_restarting_daemon": "Carteira criptografada. Reiniciando o daemon...",
"sec_wallet_encrypted_successfully": "Carteira criptografada com sucesso",
"sec_wallet_locked_title": "Carteira Bloqueada",
"security": "SEGURANÇA",
"seed_backup_button": "Frase de recuperação",
"seed_backup_close": "Fechar",
@@ -1461,6 +1643,17 @@
"sweep_to": "Varrido para:",
"sweep_toggle": "Varrer para minha carteira (não manter a chave)",
"sweep_tx": "Transação:",
"swin_connection_failed": "Falha na conexão: ",
"swin_connection_successful": "Conexão bem-sucedida!\nversão do dragonxd: ",
"swin_invalid_suffix": " (inválido)",
"swin_no_history_file_found": "Nenhum arquivo de histórico encontrado",
"swin_rescan_failed": "Falha no reescaneamento: ",
"swin_rescan_started_from_block": "Reescaneamento iniciado a partir do bloco ",
"swin_rescan_to": " até ",
"swin_rpc_client_not_initialized": "Cliente RPC não inicializado",
"swin_settings_saved": "Configurações salvas",
"swin_theme_list_refreshed": "Lista de temas atualizada",
"swin_ztx_history_cleared": "Histórico de transações Z limpo",
"switch_corrupt_body": "Esta carteira parece corrompida — o nó não conseguiu abri-la. Restaure de um backup, recrie-a ou tente repará-la.",
"switch_corrupt_repair": "Tentar reparar (salvage)",
"switch_progress_background": "Continuar em segundo plano",