mirror of
https://github.com/nesquena/hermes-webui.git
synced 2026-05-25 11:10:18 +00:00
Merge remote-tracking branch pr/1242 into stage/batch-v0.50.238
This commit is contained in:
+635
@@ -3959,6 +3959,641 @@ const LOCALES = {
|
||||
composer_disabled_empty: '\u8acb\u8f38\u5165\u8a0a\u606f\u5f8c\u50b3\u9001',
|
||||
},
|
||||
|
||||
|
||||
pt: {
|
||||
_lang: 'pt',
|
||||
_label: 'Português',
|
||||
_speech: 'pt-BR',
|
||||
// boot.js
|
||||
cancelling: 'Cancelando…',
|
||||
cancel_failed: 'Falha ao cancelar: ',
|
||||
mic_denied: 'Acesso ao microfone negado. Verifique as permissões do navegador.',
|
||||
mic_no_speech: 'Nenhuma fala detectada. Tente novamente.',
|
||||
mic_network: 'Reconhecimento de fala indisponível.',
|
||||
mic_error: 'Erro no input de voz: ',
|
||||
session_imported: 'Sessão importada',
|
||||
import_failed: 'Falha na importação: ',
|
||||
import_invalid_json: 'JSON inválido',
|
||||
image_pasted: 'Imagem colada: ',
|
||||
// messages.js
|
||||
edit_message: 'Editar mensagem',
|
||||
regenerate: 'Regenerar resposta',
|
||||
copy: 'Copiar',
|
||||
copied: 'Copiado!',
|
||||
copy_failed: 'Falha ao copiar',
|
||||
you: 'Você',
|
||||
thinking: 'Pensando',
|
||||
expand_all: 'Expandir tudo',
|
||||
collapse_all: 'Recolher tudo',
|
||||
edit_failed: 'Falha ao editar: ',
|
||||
regen_failed: 'Falha ao regenerar: ',
|
||||
reconnect_active: 'Uma resposta ainda está sendo gerada. Recarregar quando estiver pronto?',
|
||||
reconnect_finished: 'Uma resposta estava em andamento quando você saiu. As mensagens podem ter atualizado.',
|
||||
// approval card
|
||||
approval_heading: 'Aprovação necessária',
|
||||
approval_desc_prefix: 'Comando perigoso detectado',
|
||||
approval_btn_once: 'Permitir uma vez',
|
||||
approval_btn_once_title: 'Permitir este comando (Enter)',
|
||||
approval_btn_session: 'Permitir sessão',
|
||||
approval_btn_session_title: 'Permitir para esta sessão de conversa',
|
||||
approval_btn_always: 'Sempre permitir',
|
||||
approval_btn_always_title: 'Sempre permitir este padrão de comando',
|
||||
approval_btn_deny: 'Negar',
|
||||
approval_btn_deny_title: 'Negar — não executar este comando',
|
||||
approval_responding: 'Respondendo…',
|
||||
clarify_heading: 'Esclarecimento necessário',
|
||||
clarify_hint: 'Escolha uma opção ou digite sua resposta abaixo.',
|
||||
clarify_other: 'Outro',
|
||||
clarify_send: 'Enviar',
|
||||
clarify_input_placeholder: 'Digite sua resposta…',
|
||||
clarify_responding: 'Respondendo…',
|
||||
untitled: 'Sem título',
|
||||
n_messages: (n) => `${n} mensagens`,
|
||||
load_older_messages: '↑ Role para cima ou clique para carregar mensagens mais antigas',
|
||||
queued_label: 'Envia após a resposta',
|
||||
queued_count: (n) => n === 1 ? '1 na fila' : `${n} na fila`,
|
||||
queued_cancel: 'Cancelar mensagem na fila',
|
||||
model_unavailable: ' (indisponível)',
|
||||
model_unavailable_title: 'Este modelo não está mais na sua lista de provedores',
|
||||
provider_mismatch_warning: (m,p)=>`"${m}" pode não funcionar com seu provedor configurado (${p}). Enviar assim mesmo, ou execute \`hermes model\` no terminal para trocar.`,
|
||||
provider_mismatch_label: 'Provedor incompatível',
|
||||
model_not_found_label: 'Modelo não encontrado',
|
||||
model_custom_label: 'ID de modelo customizado',
|
||||
model_custom_placeholder: 'ex: openai/gpt-5.4',
|
||||
model_search_placeholder: 'Buscar modelos…',
|
||||
model_search_no_results: 'Nenhum modelo encontrado',
|
||||
// commands.js
|
||||
cmd_clear: 'Limpar mensagens da conversa',
|
||||
cmd_compress: 'Comprimir manualmente o contexto (uso: /compress [tópico])',
|
||||
cmd_compact_alias: 'Alias legado para /compress',
|
||||
cmd_model: 'Trocar modelo (ex: /model gpt-4o)',
|
||||
cmd_workspace: 'Trocar workspace por nome',
|
||||
cmd_new: 'Iniciar nova sessão de chat',
|
||||
cmd_usage: 'Alternar exibição de uso de tokens',
|
||||
cmd_theme: 'Trocar aparência (tema: system/dark/light, skin: default/ares/mono/slate/poseidon/sisyphus/charizard)',
|
||||
cmd_personality: 'Trocar personalidade do agente',
|
||||
cmd_skills: 'Listar skills disponíveis do Hermes',
|
||||
available_commands: 'Comandos disponíveis:',
|
||||
type_slash: 'Digite / para ver comandos',
|
||||
conversation_cleared: 'Conversa limpa',
|
||||
command_label: 'Comando',
|
||||
context_compaction_label: 'Compactação de contexto',
|
||||
preserved_task_list_label: 'Lista de tarefas preservada',
|
||||
reference_only_label: 'Apenas referência',
|
||||
model_usage: 'Uso: /model <nome>',
|
||||
no_model_match: 'Nenhum modelo correspondendo "',
|
||||
switched_to: 'Trocado para ',
|
||||
workspace_usage: 'Uso: /workspace <nome>',
|
||||
no_workspace_match: 'Nenhum workspace correspondendo "',
|
||||
switched_workspace: 'Trocado para workspace: ',
|
||||
workspace_switch_failed: 'Falha ao trocar workspace: ',
|
||||
new_session: 'Nova sessão criada',
|
||||
compressing: 'Solicitando compressão de contexto...',
|
||||
compress_running_label: 'Comprimindo',
|
||||
compress_complete_label: 'Compressão completa',
|
||||
auto_compress_label: 'Compressão automática',
|
||||
compress_failed_label: 'Falha na compressão',
|
||||
focus_label: 'Foco',
|
||||
token_usage_on: 'Uso de tokens ligado',
|
||||
token_usage_off: 'Uso de tokens desligado',
|
||||
theme_usage: 'Uso: /theme ',
|
||||
theme_set: 'Tema: ',
|
||||
no_active_session: 'Nenhuma sessão ativa',
|
||||
cmd_queue: 'Enfileirar mensagem para o próximo turno',
|
||||
cmd_interrupt: 'Cancelar turno atual e enviar nova mensagem',
|
||||
cmd_steer: 'Injetar correção no meio do turno sem interromper',
|
||||
cmd_queue_no_msg: 'Uso: /queue <mensagem>',
|
||||
cmd_queue_not_busy: 'Nenhuma tarefa ativa — apenas envie normalmente',
|
||||
cmd_queue_confirm: 'Mensagem enfileirada',
|
||||
cmd_interrupt_no_msg: 'Uso: /interrupt <mensagem>',
|
||||
cmd_interrupt_confirm: 'Interrompido — enviando nova mensagem',
|
||||
cmd_steer_no_msg: 'Uso: /steer <mensagem>',
|
||||
cmd_steer_fallback: 'Steer indisponível — enfileirado para próximo turno',
|
||||
cmd_steer_delivered: 'Steer entregue — agente verá no próximo resultado',
|
||||
steer_leftover_queued: 'Steer enfileirado para próximo turno',
|
||||
busy_steer_fallback: 'Steer indisponível — enfileirado para próximo turno',
|
||||
busy_interrupt_confirm: 'Interrompido — enviando nova mensagem',
|
||||
settings_label_busy_input_mode: 'Modo de input ocupado',
|
||||
settings_desc_busy_input_mode: 'Controla o que acontece ao enviar mensagem com agente rodando. Fila espera; Interromper cancela; Steer injeta correção.',
|
||||
settings_busy_input_mode_queue: 'Enfileirar follow-up',
|
||||
settings_busy_input_mode_interrupt: 'Interromper turno atual',
|
||||
settings_busy_input_mode_steer: 'Steer (correção no meio do turno)',
|
||||
|
||||
slash_skill_badge: 'Skill',
|
||||
slash_skill_desc: 'Invocar esta skill',
|
||||
cmd_stop: 'Parar resposta atual',
|
||||
cmd_title: 'Obter ou definir título da sessão',
|
||||
cmd_retry: 'Reenviar última mensagem',
|
||||
cmd_undo: 'Remover última troca',
|
||||
cmd_btw: 'Fazer pergunta lateral (efêmera)',
|
||||
cmd_btw_usage: '/btw <pergunta> — fazer pergunta lateral',
|
||||
cmd_background: 'Rodar prompt em background',
|
||||
cmd_background_usage: '/background <prompt> — rodar em paralelo',
|
||||
btw_asking: 'Fazendo pergunta lateral...',
|
||||
btw_label: 'Pergunta lateral — não no histórico',
|
||||
btw_done: 'Pergunta lateral respondida',
|
||||
btw_no_answer: 'Nenhuma resposta recebida.',
|
||||
btw_failed: 'Pergunta lateral falhou: ',
|
||||
bg_running: 'Rodando em background...',
|
||||
bg_complete: 'Tarefa de background completa',
|
||||
bg_label: 'Resultado de background:',
|
||||
bg_no_answer: '(sem resposta)',
|
||||
bg_failed: 'Tarefa de background falhou: ',
|
||||
undo_exchange: 'Desfazer última troca',
|
||||
cmd_status: 'Mostrar info da sessão',
|
||||
cmd_voice: 'Alternar input de microfone',
|
||||
stream_stopped: 'Resposta parada.',
|
||||
no_active_task: 'Nenhuma tarefa ativa para parar.',
|
||||
cancel_unavailable: 'Cancelar indisponível.',
|
||||
retry_failed: 'Retry falhou: ',
|
||||
undo_failed: 'Undo falhou: ',
|
||||
undid_n_messages: 'Removido',
|
||||
undid_messages_suffix: 'mensagem(s).',
|
||||
status_heading: 'Status da Sessão',
|
||||
status_session_id: 'ID da Sessão',
|
||||
status_title: 'Título',
|
||||
status_model: 'Modelo',
|
||||
status_workspace: 'Workspace',
|
||||
status_personality: 'Personalidade',
|
||||
status_messages: 'Mensagens',
|
||||
status_agent_running: 'Agente rodando',
|
||||
status_profile: 'Perfil',
|
||||
status_started: 'Iniciado',
|
||||
status_tokens: 'Tokens',
|
||||
status_no_tokens: 'Nenhum token usado',
|
||||
status_unknown: 'Desconhecido',
|
||||
status_yes: 'Sim',
|
||||
status_no: 'Não',
|
||||
status_load_failed: 'Falha ao carregar status: ',
|
||||
title_current: 'Título atual',
|
||||
title_change_hint: 'Use `/title <novo nome>` para renomear.',
|
||||
title_set: 'Título definido como',
|
||||
cmd_webui_only_session: 'Comando indisponível para sessões CLI.',
|
||||
cmd_voice_use_mic: 'Clique no botão de mic no composer.',
|
||||
usage_heading: 'Uso de Tokens',
|
||||
usage_default_model: 'padrão',
|
||||
usage_unknown: 'desconhecido',
|
||||
usage_input_tokens: 'Tokens de input',
|
||||
usage_output_tokens: 'Tokens de output',
|
||||
usage_total: 'Total de tokens',
|
||||
usage_estimated_cost: 'Custo estimado',
|
||||
usage_settings_tip: 'Nota: estimativas são aproximadas.',
|
||||
usage_load_failed: 'Falha ao carregar uso: ',
|
||||
usage_personality_none: 'nenhuma',
|
||||
|
||||
no_personalities: 'Nenhuma personalidade encontrada (adicione em ~/.hermes/personalities/)',
|
||||
available_personalities: 'Personalidades disponíveis:',
|
||||
personality_switch_hint: '\n\nUse `/personality <nome>` para trocar, ou `/personality none` para limpar.',
|
||||
personalities_load_failed: 'Falha ao carregar personalidades',
|
||||
personality_cleared: 'Personalidade limpa',
|
||||
personality_set: 'Personalidade: ',
|
||||
failed_colon: 'Falhou: ',
|
||||
// ui.js
|
||||
no_workspace: 'Nenhum workspace',
|
||||
workspace_empty_no_path: 'Nenhum workspace selecionado. Configure em Configurações → Workspace.',
|
||||
workspace_empty_dir: 'Este workspace está vazio.',
|
||||
dialog_confirm_title: 'Confirmar ação',
|
||||
dialog_prompt_title: 'Digite um valor',
|
||||
dialog_confirm_btn: 'Confirmar',
|
||||
// workspace.js
|
||||
unsaved_confirm: 'Você tem mudanças não salvas. Descartar e navegar?',
|
||||
discard: 'Descartar',
|
||||
save: 'Salvar',
|
||||
edit: 'Editar',
|
||||
clear: 'Limpar',
|
||||
create: 'Criar',
|
||||
remove: 'Remover',
|
||||
save_title: 'Salvar mudanças',
|
||||
edit_title: 'Editar este arquivo',
|
||||
saved: 'Salvo',
|
||||
save_failed: 'Falha ao salvar: ',
|
||||
image_load_failed: 'Não foi possível carregar imagem',
|
||||
file_open_failed: 'Não foi possível abrir arquivo',
|
||||
downloading: (name) => `Baixando ${name}…`,
|
||||
double_click_rename: 'Duplo clique para renomear',
|
||||
renamed_to: 'Renomeado para ',
|
||||
rename_failed: 'Falha ao renomear: ',
|
||||
delete_title: 'Excluir',
|
||||
delete_confirm: (name) => `Excluir ${name}?`,
|
||||
deleted: 'Excluído ',
|
||||
delete_failed: 'Falha ao excluir: ',
|
||||
new_file_prompt: 'Nome do novo arquivo (ex: notes.md):',
|
||||
project_name_prompt: 'Nome do projeto:',
|
||||
created: 'Criado ',
|
||||
create_failed: 'Falha ao criar: ',
|
||||
new_folder_prompt: 'Nome da nova pasta:',
|
||||
folder_created: 'Pasta criada ',
|
||||
folder_create_failed: 'Falha ao criar pasta: ',
|
||||
workspace_auto_create_folder: 'Criar pasta se não existir',
|
||||
folder_add_as_space_btn: 'Adicionar como Space',
|
||||
folder_add_as_space_msg: 'Adicionar esta pasta como novo space?',
|
||||
folder_add_as_space_title: 'Adicionar como Space?',
|
||||
remove_title: 'Remover',
|
||||
empty_dir: '(vazio)',
|
||||
upload_failed: 'Falha ao upload: ',
|
||||
all_uploads_failed: (n) => `Todos ${n} upload(s) falharam`,
|
||||
session_pin: 'Fixar conversa',
|
||||
session_unpin: 'Desfixar conversa',
|
||||
session_pin_desc: 'Manter esta conversa no topo',
|
||||
session_unpin_desc: 'Remover dos fixados',
|
||||
session_pin_failed: 'Falha ao fixar: ',
|
||||
session_move_project: 'Mover para projeto',
|
||||
session_move_project_desc_has: 'Mudar projeto desta conversa',
|
||||
session_move_project_desc_none: 'Atribuir projeto a esta conversa',
|
||||
session_archive: 'Arquivar conversa',
|
||||
session_restore: 'Restaurar conversa',
|
||||
session_archive_desc: 'Esconder conversa até mostrar arquivados',
|
||||
session_restore_desc: 'Trazer conversa de volta à lista principal',
|
||||
session_archived: 'Sessão arquivada',
|
||||
session_restored: 'Sessão restaurada',
|
||||
session_archive_failed: 'Falha ao arquivar: ',
|
||||
session_duplicate: 'Duplicar conversa',
|
||||
session_duplicate_desc: 'Criar cópia com mesmo workspace e modelo',
|
||||
session_duplicated: 'Sessão duplicada',
|
||||
session_duplicate_failed: 'Falha ao duplicar: ',
|
||||
session_delete: 'Excluir conversa',
|
||||
session_delete_desc: 'Remover permanentemente esta conversa',
|
||||
// settings panel
|
||||
settings_heading_title: 'Control Center',
|
||||
settings_heading_subtitle: 'Preferências, ferramentas de conversa e controles do sistema.',
|
||||
settings_section_conversation_title: 'Conversa',
|
||||
settings_section_appearance_title: 'Aparência',
|
||||
settings_section_appearance_meta: 'Tema, cores de destaque e estilo visual.',
|
||||
settings_section_preferences_title: 'Preferências',
|
||||
settings_section_preferences_meta: 'Padrões e comportamento UI do Hermes Web UI.',
|
||||
settings_section_system_title: 'Sistema',
|
||||
settings_section_system_meta: 'Versão da instância e controles de acesso.',
|
||||
settings_check_now: 'Verificar agora',
|
||||
settings_checking: 'Verificando…',
|
||||
settings_up_to_date: 'Atualizado ✓',
|
||||
settings_updates_available: '{count} atualização(ões) disponível(is)',
|
||||
settings_updates_disabled: 'Verificação de updates desativada',
|
||||
settings_update_check_failed: 'Falha ao verificar updates',
|
||||
settings_label_workspace_panel_open: 'Manter painel workspace aberto por padrão',
|
||||
settings_desc_workspace_panel_open: 'Quando ativo, o painel workspace abre automaticamente com cada nova sessão.',
|
||||
open_in_browser: 'Abrir no navegador',
|
||||
settings_dropdown_conversation: 'Conversa',
|
||||
settings_dropdown_appearance: 'Aparência',
|
||||
settings_dropdown_preferences: 'Preferências',
|
||||
settings_dropdown_providers: 'Provedores',
|
||||
settings_dropdown_system: 'Sistema',
|
||||
settings_tab_conversation: 'Conversa',
|
||||
settings_tab_appearance: 'Aparência',
|
||||
settings_tab_preferences: 'Preferências',
|
||||
settings_tab_system: 'Sistema',
|
||||
settings_title: 'Configurações',
|
||||
settings_save_btn: 'Salvar Configurações',
|
||||
settings_label_model: 'Modelo Padrão',
|
||||
settings_label_send_key: 'Tecla de Envio',
|
||||
settings_label_theme: 'Tema',
|
||||
settings_label_skin: 'Skin',
|
||||
settings_label_font_size: 'Tamanho da fonte',
|
||||
font_size_small: 'Pequeno',
|
||||
font_size_default: 'Padrão',
|
||||
font_size_large: 'Grande',
|
||||
settings_label_language: 'Idioma',
|
||||
settings_label_token_usage: 'Mostrar uso de tokens',
|
||||
settings_label_sidebar_density: 'Densidade da sidebar',
|
||||
cmd_reasoning: 'Alternar visibilidade do pensamento (mostrar/ocultar)',
|
||||
settings_label_cli_sessions: 'Mostrar sessões do agente',
|
||||
settings_label_sync_insights: 'Sincronizar para insights',
|
||||
settings_label_check_updates: 'Verificar atualizações',
|
||||
settings_label_bot_name: 'Nome do Assistente',
|
||||
settings_label_password: 'Senha de Acesso',
|
||||
settings_saved: 'Configurações salvas',
|
||||
settings_save_failed: 'Falha ao salvar: ',
|
||||
settings_load_failed: 'Falha ao carregar configurações: ',
|
||||
settings_saved_pw: 'Configurações salvas — senha ativada e navegador permanece logado',
|
||||
settings_saved_pw_updated: 'Configurações salvas — senha atualizada',
|
||||
// login page
|
||||
login_title: 'Entrar',
|
||||
login_subtitle: 'Digite sua senha para continuar',
|
||||
login_placeholder: 'Senha',
|
||||
login_btn: 'Entrar',
|
||||
login_invalid_pw: 'Senha inválida',
|
||||
login_conn_failed: 'Falha na conexão',
|
||||
|
||||
// Sidebar & Tabs
|
||||
tab_chat: 'Chat',
|
||||
tab_tasks: 'Tarefas',
|
||||
tab_skills: 'Skills',
|
||||
tab_memory: 'Memória',
|
||||
tab_workspaces: 'Spaces',
|
||||
tab_profiles: 'Perfis',
|
||||
tab_todos: 'Todos',
|
||||
tab_settings: 'Configurações',
|
||||
new_conversation: 'Nova conversa',
|
||||
filter_conversations: 'Filtrar conversas...',
|
||||
session_time_unknown: 'Desconhecido',
|
||||
session_time_minutes_ago: (n) => `${n}m`,
|
||||
session_time_hours_ago: (n) => `${n}h`,
|
||||
session_time_days_ago: (n) => `${n}d`,
|
||||
session_time_last_week: '1s',
|
||||
session_time_bucket_today: 'Hoje',
|
||||
session_time_bucket_yesterday: 'Ontem',
|
||||
session_time_bucket_this_week: 'Esta semana',
|
||||
session_time_bucket_last_week: 'Semana passada',
|
||||
session_time_bucket_older: 'Antigo',
|
||||
scheduled_jobs: 'Tarefas agendadas',
|
||||
new_job: 'Nova tarefa',
|
||||
loading: 'Carregando...',
|
||||
search_skills: 'Buscar skills...',
|
||||
new_skill: 'Nova skill',
|
||||
personal_memory: 'Memória pessoal',
|
||||
current_task_list: 'Lista de tarefas atual',
|
||||
workspace_desc: 'Adicionar e trocar workspaces para suas sessões.',
|
||||
session_meta_messages: (n) => `${n} msg${n === 1 ? '' : 's'}`,
|
||||
new_profile: 'Novo perfil',
|
||||
transcript: 'Transcrição',
|
||||
download_transcript: 'Baixar como Markdown',
|
||||
import: 'Importar',
|
||||
// Settings detail
|
||||
settings_label_sound: 'Som de notificação',
|
||||
settings_desc_sound: 'Tocar som quando assistente finalizar resposta.',
|
||||
settings_label_notifications: 'Notificações do navegador',
|
||||
settings_desc_notifications: 'Mostrar notificação quando resposta completar com app em background.',
|
||||
settings_desc_token_usage: 'Exibe contagem de tokens abaixo de cada resposta. Também com /usage.',
|
||||
settings_sidebar_density_compact: 'Compacto',
|
||||
settings_sidebar_density_detailed: 'Detalhado',
|
||||
settings_desc_sidebar_density: 'Controla quanto metadado a lista de sessões mostra na sidebar.',
|
||||
settings_label_auto_title_refresh: 'Atualização adaptativa de título',
|
||||
settings_auto_title_refresh_off: 'Desligado',
|
||||
settings_auto_title_refresh_5: 'A cada 5 trocas',
|
||||
settings_auto_title_refresh_10: 'A cada 10 trocas',
|
||||
settings_auto_title_refresh_20: 'A cada 20 trocas',
|
||||
settings_desc_auto_title_refresh: 'Re-gera título da sessão baseado na última troca.',
|
||||
settings_desc_cli_sessions: 'Mescla sessões do Hermes CLI na lista. Clique para importar.',
|
||||
settings_desc_sync_insights: 'Espelha uso de tokens para state.db.',
|
||||
settings_desc_check_updates: 'Mostrar banner quando versões mais novas estiverem disponíveis.',
|
||||
settings_desc_bot_name: 'Nome de exibição do assistente. Padrão: Hermes.',
|
||||
settings_desc_password: 'Digite nova senha para definir ou trocar. Deixe em branco para manter.',
|
||||
password_placeholder: 'Digite nova senha…',
|
||||
disable_auth: 'Desativar Auth',
|
||||
sign_out: 'Sair',
|
||||
// Providers panel
|
||||
providers_tab_title: 'Provedores',
|
||||
providers_section_title: 'Provedores',
|
||||
providers_section_meta: 'Gerenciar API keys. Mudanças fazem efeito imediatamente.',
|
||||
providers_status_configured: 'API key configurada',
|
||||
providers_status_not_configured: 'Sem API key',
|
||||
providers_status_oauth: 'OAuth',
|
||||
providers_status_api_key: 'API key',
|
||||
providers_status_not_configured_label: 'Não configurado',
|
||||
providers_oauth_hint: 'Autenticado via OAuth. Sem API key necessária.',
|
||||
providers_oauth_config_yaml_hint: 'Token configurado via config.yaml. Para atualizar, edite config.yaml ou rode hermes auth.',
|
||||
providers_oauth_not_configured_hint: 'Não autenticado. Rode hermes auth no terminal.',
|
||||
providers_save: 'Salvar',
|
||||
providers_remove: 'Remover',
|
||||
providers_saving: 'Salvando…',
|
||||
providers_removing: 'Removendo…',
|
||||
providers_enter_key: 'Por favor digite uma API key',
|
||||
providers_empty: 'Nenhum provedor configurável encontrado.',
|
||||
providers_key_updated: 'API key salva',
|
||||
providers_key_removed: 'API key removida',
|
||||
providers_key_placeholder_new: 'sk-...',
|
||||
providers_key_placeholder_replace: 'Digite nova key para substituir…',
|
||||
cancel: 'Cancelar',
|
||||
create_job: 'Criar tarefa',
|
||||
save_skill: 'Salvar skill',
|
||||
editing: 'Editando',
|
||||
// Empty state
|
||||
empty_title: 'Como posso ajudar?',
|
||||
empty_subtitle: 'Pergunte qualquer coisa, rode comandos, explore arquivos ou gerencie tarefas.',
|
||||
suggest_files: 'Quais arquivos estão neste workspace?',
|
||||
suggest_schedule: 'O que tenho na agenda hoje?',
|
||||
suggest_plan: 'Me ajude a planejar um pequeno projeto.',
|
||||
// onboarding
|
||||
onboarding_badge: 'PRIMEIRO ACESSO',
|
||||
onboarding_title: 'Bem-vindo ao Hermes Web UI',
|
||||
onboarding_lead: 'Uma configuração rápida vai verificar Hermes, salvar provedor, escolher workspace e modelo, e opcionalmente proteger com senha.',
|
||||
onboarding_back: 'Voltar',
|
||||
onboarding_continue: 'Continuar',
|
||||
onboarding_skip: 'Pular configuração',
|
||||
onboarding_skipped: 'Configuração pulada — usando config existente.',
|
||||
onboarding_open: 'Abrir Hermes',
|
||||
onboarding_step_system_title: 'Verificação do sistema',
|
||||
onboarding_step_system_desc: 'Verificar Hermes Agent e visibilidade da config.',
|
||||
onboarding_step_setup_title: 'Configuração do provedor',
|
||||
onboarding_step_setup_desc: 'Salvar config mínima do provedor Hermes.',
|
||||
onboarding_step_workspace_title: 'Workspace + modelo',
|
||||
onboarding_step_workspace_desc: 'Escolher padrões para novas sessões e chat.',
|
||||
onboarding_step_password_title: 'Senha opcional',
|
||||
onboarding_step_password_desc: 'Proteger Web UI antes de compartilhar.',
|
||||
onboarding_step_finish_title: 'Finalizar',
|
||||
onboarding_step_finish_desc: 'Revisar e entrar no app.',
|
||||
onboarding_notice_system_ready: 'Hermes Agent parece acessível pela Web UI.',
|
||||
onboarding_notice_system_unavailable: 'Hermes Agent não está totalmente disponível. Bootstrap pode instalar, mas setup do provedor pode requerer terminal.',
|
||||
onboarding_check_agent: 'Hermes Agent',
|
||||
onboarding_check_agent_ready: 'Detectado e importável',
|
||||
onboarding_check_agent_missing: 'Ausente ou parcialmente importável',
|
||||
onboarding_check_password: 'Senha',
|
||||
onboarding_check_password_enabled: 'Já ativada',
|
||||
onboarding_check_password_disabled: 'Não ativada ainda',
|
||||
onboarding_check_provider: 'Config do provedor',
|
||||
onboarding_check_provider_ready: 'Pronto para conversar',
|
||||
onboarding_check_provider_partial: 'Salvo mas incompleto',
|
||||
onboarding_check_provider_pending: 'Precisa verificação',
|
||||
onboarding_config_file: 'Arquivo de config:',
|
||||
onboarding_env_file: 'Arquivo .env:',
|
||||
onboarding_unknown: 'Desconhecido',
|
||||
onboarding_current_provider: 'Config atual:',
|
||||
onboarding_missing_imports: 'Imports ausentes:',
|
||||
onboarding_notice_setup_required: 'Escolha caminho simples de provedor aqui. OAuth avançado ainda pertence ao Hermes CLI.',
|
||||
onboarding_notice_setup_already_ready: 'Setup de provedor Hermes já detectado. Pode manter ou substituir.',
|
||||
onboarding_oauth_provider_ready_title: 'Provedor já autenticado',
|
||||
onboarding_oauth_provider_ready_body: 'Esta instância usa provedor OAuth (<strong>{provider}</strong>) configurado via CLI. Sem API key necessária.',
|
||||
onboarding_oauth_provider_not_ready_title: 'Provedor OAuth não autenticado',
|
||||
onboarding_oauth_provider_not_ready_body: 'Esta instância usa <strong>{provider}</strong> com OAuth. Rode `hermes auth` no terminal.',
|
||||
onboarding_oauth_switch_hint: 'Ou escolha provedor diferente abaixo para trocar para API-key:',
|
||||
onboarding_notice_workspace: 'Estes valores reusam as mesmas APIs de settings do app normal.',
|
||||
onboarding_workspace_label: 'Workspace',
|
||||
onboarding_workspace_or_path: 'Ou digite path do workspace',
|
||||
onboarding_workspace_placeholder: '/home/voce/workspace',
|
||||
onboarding_provider_label: 'Modo de setup',
|
||||
onboarding_quick_setup_badge: 'setup rápido',
|
||||
provider_category_easy_start: 'Início fácil',
|
||||
provider_category_self_hosted: 'Open / self-hosted',
|
||||
provider_category_specialized: 'Especializado',
|
||||
onboarding_api_key_label: 'API key',
|
||||
onboarding_api_key_placeholder: 'Deixe em branco para manter key existente',
|
||||
onboarding_api_key_help_prefix: 'Salvo como segredo no .env do Hermes usando',
|
||||
onboarding_base_url_label: 'Base URL',
|
||||
onboarding_base_url_placeholder: 'https://seu-endpoint.exemplo/v1',
|
||||
onboarding_base_url_help: 'Use para endpoints OpenAI-compatible, self-hosted, LiteLLM, Ollama, LM Studio, vLLM.',
|
||||
onboarding_model_label: 'Modelo padrão',
|
||||
onboarding_workspace_help: 'Escolha modelo que Hermes deve usar para novos chats.',
|
||||
onboarding_custom_model_placeholder: 'nome-do-seu-modelo',
|
||||
onboarding_custom_model_help: 'Para endpoints customizados, digite ID exato que seu servidor espera.',
|
||||
onboarding_notice_password_enabled: 'Senha já configurada. Digite nova apenas se quiser substituir.',
|
||||
onboarding_notice_password_recommended: 'Opcional mas recomendado se expor UI além de localhost.',
|
||||
onboarding_password_label: 'Senha (opcional)',
|
||||
onboarding_password_placeholder: 'Deixe em branco para pular',
|
||||
onboarding_password_help: 'Senhas são salvas via settings API e hasheadas no servidor.',
|
||||
onboarding_notice_finish: 'Pode reabrir Configurações depois para mudar qualquer coisa.',
|
||||
onboarding_not_set: 'Não definido',
|
||||
onboarding_password_will_enable: 'Será ativada',
|
||||
onboarding_password_will_replace: 'Será substituída',
|
||||
onboarding_password_keep_existing: 'Manter senha atual',
|
||||
onboarding_password_remains_disabled: 'Permanecerá desativada',
|
||||
onboarding_password_skipped: 'Pulado por enquanto',
|
||||
onboarding_finish_help: 'Finalizar guarda <code>onboarding_completed</code> em settings e leva ao app normal.',
|
||||
onboarding_error_choose_workspace: 'Escolha workspace antes de continuar.',
|
||||
onboarding_error_choose_model: 'Escolha modelo antes de continuar.',
|
||||
onboarding_error_provider_required: 'Escolha modo de setup antes de continuar.',
|
||||
onboarding_error_base_url_required: 'Base URL é necessária para endpoints customizados.',
|
||||
onboarding_error_workspace_required: 'Workspace é necessário.',
|
||||
onboarding_error_model_required: 'Modelo é necessário.',
|
||||
onboarding_complete: 'Configuração completa',
|
||||
|
||||
// panel/runtime i18n
|
||||
error_prefix: 'Erro: ',
|
||||
not_available: 'N/D',
|
||||
never: 'nunca',
|
||||
add: 'Adicionar',
|
||||
add_failed: 'Falha ao adicionar: ',
|
||||
remove_failed: 'Falha ao remover: ',
|
||||
switch_failed: 'Falha ao trocar: ',
|
||||
name_required: 'Nome é necessário',
|
||||
content_required: 'Conteúdo é necessário',
|
||||
view: 'Ver',
|
||||
dismiss: 'Dispensar',
|
||||
disable: 'Desativar',
|
||||
cron_no_jobs: 'Nenhuma tarefa agendada encontrada.',
|
||||
cron_status_off: 'desligado',
|
||||
cron_status_paused: 'pausado',
|
||||
cron_status_error: 'erro',
|
||||
cron_status_active: 'ativo',
|
||||
cron_status_running: 'rodando…',
|
||||
cron_status_needs_attention: 'precisa atenção',
|
||||
cron_attention_desc: 'Esta tarefa não tem próxima execução. Scheduler pode não ter calculado.',
|
||||
cron_attention_croniter_hint: 'Gateway pode não ter pacote croniter. Reinicie com cron support.',
|
||||
cron_attention_resume: 'Retomar e recalcular',
|
||||
cron_attention_run_once: 'Rodar uma vez agora',
|
||||
cron_attention_copy_diagnostics: 'Copiar diagnóstico',
|
||||
cron_diagnostics_copied: 'Diagnóstico copiado',
|
||||
cron_next: 'Próxima',
|
||||
cron_last: 'Última',
|
||||
cron_run_now: 'Rodar agora',
|
||||
cron_pause: 'Pausar',
|
||||
cron_resume: 'Retomar',
|
||||
cron_job_name_placeholder: 'Nome da tarefa',
|
||||
cron_schedule_placeholder: 'Agendamento',
|
||||
cron_prompt_placeholder: 'Prompt',
|
||||
cron_last_output: 'Último output',
|
||||
cron_all_runs: 'Todas execuções',
|
||||
cron_hide_runs: 'Esconder execuções',
|
||||
cron_no_runs_yet: '(sem execuções ainda)',
|
||||
cron_schedule_required_example: 'Agendamento necessário (ex: "0 9 * * *" ou "every 1h")',
|
||||
cron_schedule_required: 'Agendamento é necessário',
|
||||
cron_prompt_required: 'Prompt é necessário',
|
||||
cron_job_created: 'Tarefa criada',
|
||||
cron_job_triggered: 'Tarefa acionada',
|
||||
cron_job_paused: 'Tarefa pausada',
|
||||
cron_job_resumed: 'Tarefa retomada',
|
||||
cron_job_updated: 'Tarefa atualizada',
|
||||
cron_delete_confirm_title: 'Excluir tarefa cron',
|
||||
cron_delete_confirm_message: 'Isso não pode ser desfeito.',
|
||||
cron_job_deleted: 'Tarefa excluída',
|
||||
cron_completion_status: (name, status) => `Cron "${name}" ${status}`,
|
||||
status_failed: 'falhou',
|
||||
status_completed: 'completou',
|
||||
todos_no_active: 'Nenhuma lista de tarefas ativa nesta sessão.',
|
||||
clear_conversation_title: 'Limpar conversa',
|
||||
clear_conversation_message: 'Limpar todas mensagens? Isso não pode ser desfeito.',
|
||||
clear_failed: 'Falha ao limpar: ',
|
||||
skills_no_match: 'Nenhuma skill corresponde.',
|
||||
linked_files: 'Arquivos vinculados',
|
||||
skill_load_failed: 'Não foi possível carregar skill: ',
|
||||
skill_file_load_failed: 'Não foi possível carregar arquivo: ',
|
||||
skills_empty_title: 'Selecione uma skill',
|
||||
skills_empty_sub: 'Escolha skill da sidebar para ver conteúdo, ou crie nova.',
|
||||
skills_edit: 'Editar',
|
||||
skills_delete: 'Excluir',
|
||||
skills_back_to: 'Voltar para {0}',
|
||||
tasks_empty_title: 'Selecione tarefa agendada',
|
||||
tasks_empty_sub: 'Escolha tarefa da sidebar para ver detalhes e execuções.',
|
||||
workspaces_empty_title: 'Selecione um space',
|
||||
workspaces_empty_sub: 'Escolha space da sidebar para ver arquivos e settings.',
|
||||
profiles_empty_title: 'Selecione um perfil',
|
||||
profiles_empty_sub: 'Escolha perfil da sidebar para ver e editar settings.',
|
||||
memory_notes_label: 'memória (notas)',
|
||||
memory_saved: 'Memória salva',
|
||||
my_notes: 'Minhas Notas',
|
||||
user_profile: 'Perfil do Usuário',
|
||||
no_notes_yet: 'Nenhuma nota ainda.',
|
||||
no_profile_yet: 'Nenhum perfil definido.',
|
||||
// skill form
|
||||
skill_name: 'Nome',
|
||||
skill_category: 'Categoria',
|
||||
skill_category_placeholder: 'Opcional, ex: devops',
|
||||
skill_content: 'Conteúdo SKILL.md',
|
||||
skill_content_placeholder: 'YAML frontmatter + markdown body',
|
||||
skill_rename_not_supported: 'Renomear skill não suportado. Crie nova e exclua antiga.',
|
||||
skill_metadata: 'Metadados',
|
||||
// cron form
|
||||
cron_name_label: 'Nome',
|
||||
cron_name_placeholder: 'Opcional',
|
||||
cron_schedule_label: 'Agendamento',
|
||||
cron_schedule_hint: "Expressão Cron ou shorthand como 'every 1h'.",
|
||||
cron_prompt_label: 'Prompt',
|
||||
cron_deliver_label: 'Entregar output para',
|
||||
cron_deliver_local: 'Local (salvar output apenas)',
|
||||
cron_deliver_origin: 'Origem (mesmo chat)',
|
||||
cron_deliver_telegram: 'Telegram',
|
||||
cron_deliver_discord: 'Discord',
|
||||
cron_skills_label: 'Skills',
|
||||
cron_skills_placeholder: 'Adicionar skills (opcional)…',
|
||||
cron_skills_edit_hint: 'Lista de skills não editável após criação.',
|
||||
// workspace form
|
||||
workspace_name_label: 'Nome',
|
||||
workspace_name_placeholder: 'Nome amigável opcional',
|
||||
workspace_path_label: 'Path',
|
||||
workspace_path_required: 'Path é necessário',
|
||||
workspace_path_readonly: 'Path não pode mudar. Apenas renomear.',
|
||||
workspace_new_title: 'Novo space',
|
||||
workspace_rename_title: 'Renomear space',
|
||||
// profile form
|
||||
profile_name_label: 'Nome',
|
||||
profile_name_required: 'Nome é necessário',
|
||||
profile_name_placeholder: 'ex: Trabalho, Pessoal',
|
||||
profile_provider_label: 'Provedor',
|
||||
profile_model_label: 'Modelo',
|
||||
profile_model_required: 'Modelo é necessário',
|
||||
profile_base_url_label: 'Base URL',
|
||||
profile_base_url_placeholder: 'Opcional, ex: http://localhost:11434',
|
||||
profile_api_key_label: 'API key',
|
||||
profile_api_key_placeholder: 'Opcional',
|
||||
manage_profiles: 'Gerenciar perfis',
|
||||
profiles_load_failed: 'Falha ao carregar perfis',
|
||||
profiles_busy_switch: 'Não pode trocar perfis com agente rodando',
|
||||
profile_switched_new_conversation: (name) => `Trocado para perfil: ${name} — nova conversa iniciada`,
|
||||
profile_switched: (name) => `Trocado para perfil: ${name}`,
|
||||
profile_delete_confirm: (name) => `Excluir perfil "${name}"?`,
|
||||
profile_deleted: 'Perfil excluído',
|
||||
profile_delete_failed: 'Falha ao excluir perfil: ',
|
||||
profile_create_failed: 'Falha ao criar perfil: ',
|
||||
profile_update_failed: 'Falha ao atualizar perfil: ',
|
||||
profile_already_exists: 'Perfil já existe',
|
||||
// workspace switch dialog
|
||||
workspace_switch_prompt_title: 'Trocar workspace',
|
||||
workspace_switch_prompt_message: 'Digite path absoluto do workspace para adicionar e trocar.',
|
||||
workspace_switch_prompt_confirm: 'Trocar',
|
||||
workspace_switch_prompt_placeholder: '/Users/voce/projeto',
|
||||
workspace_not_added: 'Workspace não adicionado',
|
||||
workspace_already_saved: 'Workspace já salvo — escolha da lista',
|
||||
workspace_busy_switch: 'Não pode trocar workspace com agente rodando',
|
||||
discard_file_edits_title: 'Descartar edições de arquivo?',
|
||||
discard_file_edits_message: 'Trocar workspace descarta edições não salvas no preview.',
|
||||
workspace_switched_to: (name) => `Trocado para ${name}`,
|
||||
workspace_use: 'Usar',
|
||||
workspace_use_title: 'Usar nesta conversa',
|
||||
workspace_add_title: 'Adicionar workspace',
|
||||
// Approval card
|
||||
approval_skip: 'Pular',
|
||||
approval_skip_title: 'Pular este prompt de aprovação',
|
||||
approval_skip_all: 'Pular todos',
|
||||
approval_skip_all_title: 'Pular todos prompts de aprovação nesta sessão'
|
||||
},
|
||||
ko: {
|
||||
_lang: 'ko',
|
||||
_label: '한국어',
|
||||
|
||||
Reference in New Issue
Block a user