Add full set of locale translations

Generated using Claude Code / Codex so there may be errors
This commit is contained in:
2026-03-17 05:05:32 +00:00
parent 6d5de33f55
commit 84f4aabdff
20 changed files with 8748 additions and 47 deletions

457
locales/pt.yml Normal file
View File

@@ -0,0 +1,457 @@
# Menu principal
menu:
subtitle: 'Tutor de Digitação no Terminal'
adaptive_drill: 'Exercício Adaptativo'
adaptive_drill_desc: 'Palavras fonéticas com desbloqueio adaptativo de teclas'
code_drill: 'Exercício de Código'
code_drill_desc: 'Pratique digitando sintaxe de código'
passage_drill: 'Exercício de Passagem'
passage_drill_desc: 'Digite passagens de livros'
skill_tree: 'Árvore de Habilidades'
skill_tree_desc: 'Ver ramos de progressão e iniciar exercícios'
keyboard: 'Teclado'
keyboard_desc: 'Explore o layout do teclado e estatísticas'
statistics: 'Estatísticas'
statistics_desc: 'Ver suas estatísticas de digitação'
settings: 'Configurações'
settings_desc: 'Configurar keydr'
day_streak: ' | %{days} dias seguidos'
key_progress: ' Progresso de Teclas %{unlocked}/%{total} (%{mastered} dominadas) | Meta %{target} WPM%{streak}'
hint_start: '[1-3] Iniciar'
hint_skill_tree: '[t] Árvore de Habilidades'
hint_keyboard: '[b] Teclado'
hint_stats: '[s] Estatísticas'
hint_settings: '[c] Configurações'
hint_quit: '[q] Sair'
# Tela de exercício
drill:
title: ' Exercício '
mode_adaptive: 'Adaptativo'
mode_code: 'Código (Sem ranking)'
mode_passage: 'Passagem (Sem ranking)'
focus_char: 'Foco: ''%{ch}'''
focus_bigram: 'Foco: "%{bigram}"'
focus_both: 'Foco: ''%{ch}'' + "%{bigram}"'
header_wpm: 'WPM'
header_acc: 'Pre'
header_err: 'Err'
code_source: ' Fonte do código '
passage_source: ' Fonte da passagem '
footer: '[ESC] Fim [Backspace] Apagar'
keys_reenabled: 'Teclas reativadas em %{ms}ms'
hint_end: '[ESC] Fim do exercício'
hint_backspace: '[Backspace] Apagar'
# Painel / resultado do exercício
dashboard:
title: ' Exercício Completo '
results: 'Resultados'
unranked_note_prefix: ' (Sem ranking'
unranked_note_suffix: ' não conta para a árvore de habilidades)'
speed: ' Velocidade: '
accuracy_label: ' Precisão: '
time_label: ' Tempo: '
errors_label: ' Erros: '
correct_detail: ' (%{correct}/%{total} corretos)'
input_blocked: ' Entrada temporariamente bloqueada '
input_blocked_ms: '(%{ms}ms restantes)'
hint_continue: '[c/Enter/Space] Continuar'
hint_retry: '[r] Tentar novamente'
hint_menu: '[q] Menu'
hint_stats: '[s] Estatísticas'
hint_delete: '[x] Excluir'
# Barra lateral de estatísticas (durante o exercício)
sidebar:
title: ' Estatísticas '
wpm: 'WPM: '
target: 'Meta: '
target_wpm: '%{wpm} WPM'
accuracy: 'Precisão: '
progress: 'Progresso: '
correct: 'Correto: '
errors: 'Erros: '
time: 'Tempo: '
last_drill: ' Último Exercício '
vs_avg: ' vs méd: '
# Painel de estatísticas
stats:
title: ' Estatísticas '
empty: 'Nenhum exercício completado ainda. Comece a digitar!'
tab_dashboard: '[1] Painel'
tab_history: '[2] Histórico'
tab_activity: '[3] Atividade'
tab_accuracy: '[4] Precisão'
tab_timing: '[5] Cronometragem'
tab_ngrams: '[6] N-gramas'
hint_back: '[ESC] Voltar'
hint_next_tab: '[Tab] Próxima aba'
hint_switch_tab: '[1-6] Trocar aba'
hint_navigate: '[j/k] Navegar'
hint_page: '[PgUp/PgDn] Página'
hint_delete: '[x] Excluir'
summary_title: ' Resumo '
drills: ' Exercícios: '
avg_wpm: ' WPM Méd: '
best_wpm: ' Melhor WPM: '
accuracy_label: ' Precisão: '
total_time: ' Tempo total: '
wpm_chart_title: ' WPM por Exercício (Últimos 20, Meta: %{target}) '
accuracy_chart_title: ' Precisão %% (Últimos 50 Exercícios) '
chart_drill: 'Exercício #'
chart_accuracy_pct: 'Precisão %%'
sessions_title: ' Sessões Recentes '
session_header: ' # WPM Raw Pre%% Tempo Data/Hora Modo Class. Parcial'
session_separator: ' ─────────────────────────────────────────────────────────────────────'
delete_confirm: 'Excluir sessão #%{idx}? (y/n)'
confirm_title: ' Confirmar '
yes: 'sim'
no: 'não'
keyboard_accuracy_title: ' Precisão do Teclado %% '
keyboard_timing_title: ' Cronometragem do Teclado (ms) '
slowest_keys_title: ' Teclas mais Lentas (ms) '
fastest_keys_title: ' Teclas mais Rápidas (ms) '
worst_accuracy_title: ' Pior Precisão (%%) '
best_accuracy_title: ' Melhor Precisão (%%) '
not_enough_data: ' Dados insuficientes'
streaks_title: ' Sequências '
current_streak: ' Atual: '
best_streak: ' Melhor: '
active_days: ' Dias ativos: '
top_days_none: ' Melhores dias: nenhum'
top_days: ' Melhores dias: %{days}'
wpm_label: ' WPM: %{avg}/%{target} (%{pct}%%)'
acc_label: ' Pre: %{pct}%%'
keys_label: ' Teclas: %{unlocked}/%{total} (%{mastered} dominadas)'
ngram_empty: 'Complete exercícios adaptativos para ver dados de n-gramas'
ngram_header_speed_narrow: ' Bgrm Vel Esper Anom%'
ngram_header_error_narrow: ' Bgrm Err Ams Taxa Esp Anom%'
ngram_header_speed: ' Bigrama Vel Esper Amostras Anom%'
ngram_header_error: ' Bigrama Erros Amostras Taxa Esper Anom%'
focus_title: ' Foco Ativo '
focus_char_label: ' Foco: '
focus_bigram_value: 'Bigrama %{label}'
focus_plus: ' + '
anomaly_error: 'erro'
anomaly_speed: 'velocidade'
focus_detail_both: ' Caractere ''%{ch}'': tecla mais fraca | Bigrama %{label}: anomalia de %{type} %{pct}%%'
focus_detail_char_only: ' Caractere ''%{ch}'': tecla mais fraca, sem anomalias de bigrama confirmadas'
focus_detail_bigram_only: ' (anomalia de %{type}: %{pct}%%)'
focus_empty: ' Complete exercícios adaptativos para ver dados de foco'
error_anomalies_title: ' Anomalias de Erro (%{count}) '
no_error_anomalies: ' Nenhuma anomalia de erro detectada'
speed_anomalies_title: ' Anomalias de Velocidade (%{count}) '
no_speed_anomalies: ' Nenhuma anomalia de velocidade detectada'
scope_label_prefix: ' '
bi_label: ' | Bi: %{count}'
tri_label: ' | Tri: %{count}'
hes_label: ' | Hes: >%{ms}ms'
gain_label: ' | Gan: %{value}'
gain_interval: ' (a cada 50)'
focus_char_value: 'Caractere ''%{ch}'''
# Mapa de atividade
heatmap:
title: ' Atividade Diária (Sessões por Dia) '
jan: 'Jan'
feb: 'Fev'
mar: 'Mar'
apr: 'Abr'
may: 'Mai'
jun: 'Jun'
jul: 'Jul'
aug: 'Ago'
sep: 'Set'
oct: 'Out'
nov: 'Nov'
dec: 'Dez'
# Gráfico
chart:
wpm_over_time: ' WPM ao Longo do Tempo '
drill_number: 'Exercício #'
# Configurações
settings:
title: ' Configurações '
subtitle: 'Use as setas para navegar, Enter/Direita para alterar, ESC para salvar e sair'
target_wpm: 'WPM Meta'
theme: 'Tema'
word_count: 'Quantidade de Palavras'
ui_language: 'Idioma da Interface'
dictionary_language: 'Idioma do Dicionário'
keyboard_layout: 'Layout do Teclado'
code_language: 'Linguagem de Código'
code_downloads: 'Downloads de Código'
on: 'Sim'
off: 'Não'
code_download_dir: 'Dir. Download de Código'
snippets_per_repo: 'Trechos por Repo'
unlimited: 'Ilimitado'
download_code_now: 'Baixar Código Agora'
run_downloader: 'Executar downloader'
passage_downloads: 'Downloads de Passagens'
passage_download_dir: 'Dir. Download de Passagens'
paragraphs_per_book: 'Parágrafos por Livro'
whole_book: 'Livro inteiro'
download_passages_now: 'Baixar Passagens Agora'
export_path: 'Caminho de Exportação'
export_data: 'Exportar Dados'
export_now: 'Exportar agora'
import_path: 'Caminho de Importação'
import_data: 'Importar Dados'
import_now: 'Importar agora'
hint_save_back: '[ESC] Salvar e voltar'
hint_change_value: '[Enter/setas] Alterar valor'
hint_edit_path: '[Enter no caminho] Editar'
hint_move: '[←→] Mover'
hint_tab_complete: '[Tab] Completar (no final)'
hint_confirm: '[Enter] Confirmar'
hint_cancel: '[Esc] Cancelar'
success_title: ' Sucesso '
error_title: ' Erro '
press_any_key: 'Pressione qualquer tecla'
file_exists_title: ' Arquivo Existente '
file_exists: 'Um arquivo já existe neste caminho.'
overwrite_rename: '[d] Sobrescrever [r] Renomear [Esc] Cancelar'
erase_warning: 'Isso apagará seus dados atuais.'
export_first: 'Exporte primeiro se quiser mantê-los.'
proceed_yn: 'Prosseguir? (y/n)'
confirm_import_title: ' Confirmar Importação '
# Telas de seleção
select:
dictionary_language_title: ' Selecionar Idioma do Dicionário '
keyboard_layout_title: ' Selecionar Layout do Teclado '
code_language_title: ' Selecionar Linguagem de Código '
passage_source_title: ' Selecionar Fonte de Passagens '
ui_language_title: ' Selecionar Idioma da Interface '
more_above: '... %{count} mais acima ...'
more_below: '... %{count} mais abaixo ...'
current: ' (atual)'
disabled: ' (desativado)'
enabled_default: ' (ativado, padrão: %{layout})'
enabled: ' (ativado)'
disabled_blocked: ' (desativado: bloqueado)'
built_in: ' (integrado)'
cached: ' (em cache)'
disabled_download: ' (desativado: download necessário)'
download_required: ' (download necessário)'
hint_navigate: '[Up/Down/PgUp/PgDn] Navegar'
hint_confirm: '[Enter] Confirmar'
hint_back: '[ESC] Voltar'
language_resets_layout: 'Selecionar um idioma redefine o layout para o padrão desse idioma.'
layout_no_language_change: 'Alterar layout não muda o idioma do dicionário.'
disabled_network_notice: 'Alguns idiomas estão desativados: ative os downloads em intro/configurações.'
disabled_sources_notice: 'Algumas fontes estão desativadas: ative os downloads em intro/configurações.'
passage_all: 'Todos (Integrados + todos os livros)'
passage_builtin: 'Apenas passagens integradas'
passage_book_prefix: 'Livro: %{title}'
# Progresso
progress:
overall_key_progress: 'Progresso Geral das Teclas'
unlocked_mastered: '%{unlocked}/%{total} desbloqueadas (%{mastered} dominadas)'
# Árvore de habilidades
skill_tree:
title: ' Árvore de Habilidades '
locked: 'Bloqueado'
unlocked: 'desbloqueado'
mastered: 'dominado'
in_progress: 'em progresso'
complete: 'completo'
locked_status: 'bloqueado'
locked_notice: 'Complete %{count} letras primárias para desbloquear ramos'
branches_separator: 'Ramos (disponíveis após %{count} letras primárias)'
unlocked_letters: 'Desbloqueadas %{unlocked}/%{total} letras'
level: 'Nível %{current}/%{total}'
level_zero: 'Nível 0/%{total}'
in_focus: ' em foco'
hint_navigate: '[↑↓/jk] Navegar'
hint_scroll: '[PgUp/PgDn ou Ctrl+U/Ctrl+D] Rolar'
hint_back: '[q] Voltar'
hint_unlock: '[Enter] Desbloquear'
hint_start_drill: '[Enter] Iniciar Exercício'
unlock_msg_1: 'Uma vez desbloqueado, o exercício adaptativo incluirá teclas deste ramo que estejam desbloqueadas.'
unlock_msg_2: 'Se quiser focar apenas neste ramo, inicie um exercício diretamente deste ramo na Árvore de Habilidades.'
confirm_unlock: 'Desbloquear %{branch}?'
confirm_yn: '[y] Desbloquear [n/ESC] Cancelar'
lvl_prefix: 'Nív'
branch_primary_letters: 'Letras Primárias'
branch_capital_letters: 'Letras Maiúsculas'
branch_numbers: 'Números 0-9'
branch_prose_punctuation: 'Pontuação de Prosa'
branch_whitespace: 'Espaços em Branco'
branch_code_symbols: 'Símbolos de Código'
level_frequency_order: 'Ordem de Frequência'
level_common_sentence_capitals: 'Maiúsculas de Frase Comuns'
level_name_capitals: 'Maiúsculas de Nomes'
level_remaining_capitals: 'Maiúsculas Restantes'
level_common_digits: 'Dígitos Comuns'
level_all_digits: 'Todos os Dígitos'
level_essential: 'Essencial'
level_common: 'Comum'
level_expressive: 'Expressivo'
level_enter_return: 'Enter/Retorno'
level_tab_indent: 'Tab/Recuo'
level_arithmetic_assignment: 'Aritmética e Atribuição'
level_grouping: 'Agrupamento'
level_logic_reference: 'Lógica e Referência'
level_special: 'Especial'
# Marcos
milestones:
unlock_title: ' Tecla Desbloqueada! '
mastery_title: ' Tecla Dominada! '
branches_title: ' Novos Ramos Disponíveis! '
branch_complete_title: ' Ramo Completo! '
all_unlocked_title: ' Todas as Teclas Desbloqueadas! '
all_mastered_title: ' Domínio Total do Teclado! '
unlocked: 'desbloqueada'
mastered: 'dominada'
use_finger: 'Use seu dedo %{finger}'
hold_right_shift: 'Segure Shift Direito (mindinho direito)'
hold_left_shift: 'Segure Shift Esquerdo (mindinho esquerdo)'
congratulations_all_letters: 'Parabéns! Você dominou todas as %{count} letras primárias'
new_branches_available: 'Novos ramos de habilidades estão disponíveis:'
visit_skill_tree: 'Visite a Árvore de Habilidades para desbloquear um novo ramo'
and_start_training: 'e comece a treinar!'
open_skill_tree: 'Pressione [t] para abrir a Árvore de Habilidades'
branch_complete_msg: 'Você completou o ramo %{branch}!'
all_levels_mastered: 'Todos os %{count} níveis dominados.'
all_keys_confident: 'Cada tecla neste ramo está em confiança máxima.'
all_unlocked_msg: 'Você desbloqueou todas as teclas do teclado!'
all_unlocked_desc: 'Cada caractere, símbolo e modificador está disponível nos seus exercícios.'
keep_practicing_mastery: 'Continue praticando para alcançar o domínio — quando cada tecla atingir'
confidence_complete: 'confiança máxima, você terá alcançado o domínio total do teclado!'
all_mastered_msg: 'Parabéns — você alcançou o domínio total do teclado!'
all_mastered_desc: 'Cada tecla do teclado está em confiança máxima.'
mastery_takes_practice: 'O domínio não é um destino — requer prática contínua.'
keep_drilling: 'Continue praticando para manter seu nível.'
hint_skill_tree_continue: '[t] Abrir Árvore de Habilidades [Outra tecla] Continuar'
hint_any_key: 'Pressione qualquer tecla para continuar'
input_blocked: 'Entrada temporariamente bloqueada (%{ms}ms restantes)'
unlock_msg_1: 'Bom trabalho! Continue melhorando suas habilidades.'
unlock_msg_2: 'Mais uma tecla adicionada ao seu arsenal!'
unlock_msg_3: 'Seu teclado está crescendo! Continue assim.'
unlock_msg_4: 'Um passo mais perto do domínio total!'
mastery_msg_1: 'Esta tecla está em confiança máxima!'
mastery_msg_2: 'Você domina esta tecla perfeitamente!'
mastery_msg_3: 'Memória muscular adquirida!'
mastery_msg_4: 'Mais uma tecla conquistada!'
# Explorador de teclado
keyboard:
title: ' Teclado '
subtitle: 'Pressione ou clique em uma tecla'
hint_navigate: '[←→↑↓/hjkl/Tab] Navegar'
hint_back: '[q/ESC] Voltar'
key_label: 'Tecla: '
finger_label: 'Dedo: '
hand_left: 'Esquerda'
hand_right: 'Direita'
finger_index: 'Indicador'
finger_middle: 'Médio'
finger_ring: 'Anelar'
finger_pinky: 'Mindinho'
finger_thumb: 'Polegar'
overall_accuracy: ' Precisão geral: %{correct}/%{total} (%{pct}%%)'
ranked_accuracy: ' Precisão classificada: %{correct}/%{total} (%{pct}%%)'
confidence: 'Confiança: '
no_data: 'Sem dados ainda'
no_data_short: 'Sem dados'
key_details: ' Detalhes da Tecla '
key_details_char: ' Detalhes da Tecla: ''%{ch}'' '
key_details_name: ' Detalhes da Tecla: %{name} '
press_key_hint: 'Pressione uma tecla para ver seus detalhes'
shift_label: 'Shift: '
shift_no: 'Não'
overall_avg_time: 'Tempo Méd. Geral: '
overall_best_time: 'Melhor Tempo Geral: '
overall_samples: 'Amostras Gerais: '
overall_accuracy_label: 'Precisão Geral: '
branch_label: 'Ramo: '
level_label: 'Nível: '
built_in_key: 'Tecla Integrada'
unlocked_label: 'Desbloqueada: '
yes: 'Sim'
no: 'Não'
in_focus_label: 'Em Foco?: '
mastery_label: 'Domínio: '
mastery_locked: 'Bloqueado'
ranked_avg_time: 'Tempo Méd. Classificado: '
ranked_best_time: 'Melhor Tempo Classificado: '
ranked_samples: 'Amostras Classificadas: '
ranked_accuracy_label: 'Precisão Classificada: '
# Diálogos de introdução
intro:
passage_title: ' Configurar Download de Passagens '
code_title: ' Configurar Download de Código '
enable_downloads: 'Ativar downloads de rede'
download_dir: 'Diretório de download'
paragraphs_per_book: 'Parágrafos por livro (0 = inteiro)'
whole_book: 'livro inteiro'
snippets_per_repo: 'Trechos por repo (0 = ilimitado)'
unlimited: 'ilimitado'
start_passage_drill: 'Iniciar exercício de passagem'
start_code_drill: 'Iniciar exercício de código'
confirm: 'Confirmar'
hint_navigate: '[Up/Down] Navegar'
hint_adjust: '[Left/Right] Ajustar'
hint_edit: '[Type/Backspace] Editar'
hint_confirm: '[Enter] Confirmar'
hint_cancel: '[ESC] Cancelar'
preparing_download: 'Preparando download...'
download_passage_title: ' Baixando Fonte de Passagem '
download_code_title: ' Baixando Fonte de Código '
book_label: ' Livro: %{name}'
repo_label: ' Repo: %{name}'
progress_bytes: '[%{name}] %{downloaded}/%{total} bytes'
downloaded_bytes: 'Baixado: %{bytes} bytes'
downloading_book_progress: 'Baixando livro atual: [%{bar}] %{downloaded}/%{total} bytes'
downloading_book_bytes: 'Baixando livro atual: %{bytes} bytes'
downloading_code_progress: 'Baixando: [%{bar}] %{downloaded}/%{total} bytes'
downloading_code_bytes: 'Baixando: %{bytes} bytes'
current_book: 'Atual: %{name} (livro %{done}/%{total})'
current_repo: 'Atual: %{name} (repo %{done}/%{total})'
passage_instructions_1: 'keydr pode baixar passagens do Project Gutenberg para prática de digitação.'
passage_instructions_2: 'Os livros são baixados uma vez e armazenados localmente.'
passage_instructions_3: 'Configure os ajustes de download abaixo, depois inicie um exercício de passagem.'
code_instructions_1: 'keydr pode baixar código open-source do GitHub para prática de digitação.'
code_instructions_2: 'O código é baixado uma vez e armazenado localmente.'
code_instructions_3: 'Configure os ajustes de download abaixo, depois inicie um exercício de código.'
# Mensagens de status (de app.rs)
status:
recovery_files: 'Arquivos de recuperação encontrados de uma importação interrompida. Os dados podem estar inconsistentes — considere reimportar.'
dir_not_exist: 'O diretório não existe: %{path}'
no_data_store: 'Nenhum armazenamento de dados disponível'
serialization_error: 'Erro de serialização: %{error}'
exported_to: 'Exportado para %{path}'
export_failed: 'Exportação falhou: %{error}'
could_not_read: 'Não foi possível ler o arquivo: %{error}'
invalid_export: 'Arquivo de exportação inválido: %{error}'
unsupported_version: 'Versão de exportação não suportada: %{got} (esperada %{expected})'
import_failed: 'Importação falhou: %{error}'
imported_theme_fallback: 'Importado com sucesso (tema ''%{theme}'' não encontrado, usando padrão)'
imported_success: 'Importado com sucesso'
adaptive_unavailable: 'Modo adaptativo classificado não disponível: %{error}'
switched_to: 'Alterado para %{name}'
layout_changed: 'Layout alterado para %{name}'
# Erros (para tradução de limites de UI)
errors:
unknown_language: 'Idioma desconhecido: %{key}'
unknown_layout: 'Layout de teclado desconhecido: %{key}'
unsupported_pair: 'Par idioma/layout não suportado: %{language} + %{layout}'
language_blocked: 'Idioma bloqueado pelo nível de suporte: %{key}'
# Comum
common:
wpm: 'WPM'
cpm: 'CPM'
back: 'Voltar'