2026-04-17 09:09:50 +08:00
export default {
// Login
login : {
title : 'Hermes Web UI' ,
2026-05-23 18:44:53 +08:00
description : 'Insira seu nome de usuario e senha para continuar.' ,
2026-04-17 09:09:50 +08:00
placeholder : 'Token de acesso' ,
submit : 'Entrar' ,
tokenRequired : 'Por favor, insira seu token de acesso' ,
invalidToken : 'Token invalido' ,
connectionFailed : 'Nao foi possivel conectar ao servidor' ,
2026-04-22 20:27:33 +08:00
passwordLogin : 'Senha' ,
tokenLogin : 'Token' ,
usernamePlaceholder : 'Nome de usuario' ,
passwordPlaceholder : 'Senha' ,
credentialsRequired : 'Por favor, insira nome de usuario e senha' ,
invalidCredentials : 'Nome de usuario ou senha incorretos' ,
2026-05-08 18:29:43 +08:00
tooManyAttempts : 'Muitas tentativas falhadas, por favor tente novamente mais tarde' ,
2026-05-23 18:44:53 +08:00
sessionExpired : 'Login expirado. Entre novamente.' ,
accessDenied : 'Voce nao tem permissao para acessar este recurso.' ,
2026-04-22 20:27:33 +08:00
passwordMismatch : 'As senhas nao conferem' ,
passwordTooShort : 'A senha deve ter pelo menos 6 caracteres' ,
setupSuccess : 'Login por senha configurado com sucesso' ,
passwordChanged : 'Senha alterada com sucesso' ,
passwordRemoved : 'Login por senha removido' ,
setupPassword : 'Configurar login por senha' ,
changePassword : 'Alterar senha' ,
changeUsername : 'Alterar nome de usuario' ,
removePasswordLogin : 'Remover' ,
username : 'Nome de usuario' ,
currentPassword : 'Senha atual' ,
newPassword : 'Nova senha' ,
confirmPassword : 'Confirmar senha' ,
newUsername : 'Novo nome de usuario' ,
usernameChanged : 'Nome de usuario alterado com sucesso' ,
usernameTooShort : 'O nome de usuario deve ter pelo menos 2 caracteres' ,
2026-05-23 18:44:53 +08:00
setupDescription : 'Gerencie o nome de usuario e a senha usados para entrar.' ,
removeConfirm : 'Login por senha e obrigatorio para contas de usuario.' ,
2026-04-22 20:27:33 +08:00
passwordLoginNotConfigured : 'Login por senha nao configurado' ,
2026-05-23 18:44:53 +08:00
passwordLoginConfigured : 'Conta atual: {username}' ,
} ,
users : {
title : 'Gerenciamento de contas' ,
2026-05-23 19:41:51 +08:00
description : 'Crie usuarios, atribua funcoes e controle quais perfis administradores comuns podem acessar.' ,
2026-05-23 18:44:53 +08:00
create : 'Criar usuario' ,
edit : 'Editar usuario' ,
username : 'Nome de usuario' ,
role : 'Funcao' ,
statusLabel : 'Status' ,
2026-05-23 19:41:51 +08:00
profiles : 'Perfis acessiveis' ,
profilesPlaceholder : 'Selecione perfis acessiveis' ,
allProfiles : 'Todos os perfis' ,
noProfiles : 'Nenhum perfil atribuido' ,
2026-05-23 18:44:53 +08:00
lastLogin : 'Ultimo login' ,
newPasswordOptional : 'Nova senha (deixe em branco para manter)' ,
loadFailed : 'Falha ao carregar usuarios' ,
deleteConfirm : 'Excluir este usuario?' ,
enable : 'Ativar' ,
disable : 'Desativar' ,
roles : {
superAdmin : 'Super admin' ,
admin : 'Admin' ,
} ,
status : {
active : 'Ativo' ,
disabled : 'Desativado' ,
} ,
2026-04-17 09:09:50 +08:00
} ,
// Common
common : {
loading : 'Carregando...' ,
cancel : 'Cancelar' ,
2026-04-17 23:11:57 +08:00
retry : 'Tentar novamente' ,
2026-04-17 09:09:50 +08:00
delete : 'Excluir' ,
edit : 'Editar' ,
save : 'Salvar' ,
saved : 'Salvo' ,
update : 'Atualizar' ,
create : 'Criar' ,
saveFailed : 'Falha ao salvar' ,
2026-04-24 20:41:14 +08:00
deleteFailed : 'Falha ao excluir' ,
2026-04-17 09:09:50 +08:00
ok : 'OK' ,
copied : 'Copiado' ,
copy : 'Copiar' ,
noData : 'Sem dados' ,
fetch : 'Buscar' ,
add : 'Adicionar' ,
enable : 'Ativar' ,
disable : 'Desativar' ,
configured : 'Configurado' ,
notConfigured : 'Nao configurado' ,
confirm : 'Confirmar' ,
expand : 'Expandir' ,
collapse : 'Recolher' ,
2026-05-20 17:13:32 +08:00
stop : 'Parar' ,
start : 'Iniciar' ,
expired : 'Expirado' ,
2026-04-17 09:09:50 +08:00
} ,
// Sidebar
sidebar : {
chat : 'Chat' ,
2026-05-01 11:27:43 +08:00
search : 'Pesquisar' ,
2026-05-07 22:16:52 +08:00
apiRelay : 'API Relay' ,
2026-05-01 11:27:43 +08:00
history : 'Historico' ,
2026-04-17 09:09:50 +08:00
jobs : 'Tarefas agendadas' ,
models : 'Modelos' ,
profiles : 'Perfis' ,
2026-05-10 13:50:39 +02:00
plugins : 'Plugins' ,
2026-04-17 09:09:50 +08:00
skills : 'Habilidades' ,
memory : 'Memoria' ,
logs : 'Logs' ,
usage : 'Uso' ,
2026-05-23 09:05:03 +08:00
performance : 'Desempenho' ,
2026-05-14 09:28:51 +08:00
skillsUsage : 'Uso de habilidades' ,
2026-04-17 09:09:50 +08:00
channels : 'Canais' ,
terminal : 'Terminal' ,
2026-04-23 14:10:14 +08:00
files : 'Arquivos' ,
2026-04-24 20:41:14 +08:00
groupChat : 'Chat em grupo' ,
groupConversation : 'Conversa' ,
2026-05-20 17:13:32 +08:00
groupConversationShort : 'Conv.' ,
2026-05-19 02:33:53 +02:00
groupAgent : 'Agente' ,
groupAgentShort : 'Ag.' ,
groupSystem : 'Sistema' ,
groupSystemShort : 'Sist' ,
groupMonitoring : 'Monitoramento' ,
2026-05-20 17:13:32 +08:00
groupMonitoringShort : 'Mon.' ,
2026-04-17 09:09:50 +08:00
settings : 'Configuracoes' ,
connected : 'Conectado' ,
disconnected : 'Desconectado' ,
updateTip : 'Execute "hermes-web-ui update" no terminal para atualizar' ,
updateVersion : 'Atualizar para v{version}' ,
2026-05-12 03:03:07 +02:00
reloadClientVersion : 'Recarregar para v{version}' ,
2026-04-17 09:09:50 +08:00
updating : 'Atualizando...' ,
2026-05-14 12:06:39 +08:00
updateSuccess : 'Atualizacao concluida. Atualize a pagina em breve. Se nao iniciar apos algum tempo, inicie manualmente.' ,
2026-04-17 09:09:50 +08:00
updateFailed : 'Falha na atualizacao' ,
2026-04-22 20:27:33 +08:00
logout : 'Sair' ,
2026-04-24 02:31:42 +02:00
nodeVersionWarning : 'Node.js v{version} detectado. Atualize para a versao 23 ou posterior.' ,
2026-04-22 20:27:33 +08:00
changelog : 'Registro de alteracoes' ,
noChangelog : 'Nenhum registro disponivel' ,
2026-05-20 17:13:32 +08:00
kanban : 'Kanban' ,
groupTools : 'Ferramentas' ,
groupPlatform : 'Plataforma' ,
gateways : 'Gateways' ,
expand : 'Expandir menu' ,
collapse : 'Recolher menu' ,
2026-04-17 09:09:50 +08:00
} ,
2026-05-23 09:05:03 +08:00
performance : {
title : 'Desempenho' ,
subtitle : 'Monitore recursos do sistema, Bridge Broker, Workers e sessões ativas' ,
refresh : 'Atualizar' ,
autoRefreshOn : 'Atualização automática' ,
autoRefreshOff : 'Atualização manual' ,
loadFailed : 'Falha ao carregar métricas de desempenho' ,
systemCpu : 'CPU do sistema' ,
systemMemory : 'Memória do sistema' ,
activeSessions : 'Sessões ativas' ,
runningSessions : 'Em execução {count}' ,
workers : 'Workers' ,
totalWorkerMemory : 'Memória total de Worker' ,
processes : 'Processos' ,
uptime : 'Tempo ativo' ,
running : 'Em execução' ,
stopped : 'Parado' ,
workerMemory : 'Memória de Worker' ,
lastUpdated : 'Atualizado' ,
profile : 'Profile' ,
memory : 'Memória' ,
sessions : 'Sessões' ,
runningActiveSessions : 'Em execução / Ativas' ,
lastUsed : 'Último uso' ,
status : 'Status' ,
noWorkers : 'Nenhum Worker' ,
sessionsByProfile : 'Sessões por Profile' ,
noActiveSessions : 'Nenhuma sessão ativa' ,
} ,
2026-05-03 22:10:40 +08:00
// Gaveta
drawer : {
terminal : 'Terminal' ,
files : 'Espaço de trabalho' ,
} ,
2026-04-17 09:09:50 +08:00
// Chat
chat : {
2026-04-22 16:14:50 +08:00
contextRemaining : 'restante' ,
2026-05-06 15:05:44 +08:00
contextClickToEdit : 'Clique para editar o tamanho do contexto' ,
contextEditTitle : 'Editar tamanho do contexto' ,
contextEditDesc : 'Definir o limite de tamanho do contexto para o modelo atual (em tokens)' ,
contextEditPlaceholder : 'Digite o tamanho do contexto' ,
contextEditHint : 'Valores comuns: 200k (Claude), 128k (GPT-4), 32k (GPT-3.5)' ,
contextEditSave : 'Salvar' ,
contextEditCancel : 'Cancelar' ,
contextEditInvalid : 'Por favor, insira um tamanho de contexto válido' ,
contextEditSuccess : 'Tamanho do contexto atualizado' ,
contextEditFailed : 'Falha na atualização' ,
2026-04-17 09:09:50 +08:00
emptyState : 'Inicie uma conversa com o Hermes Agent' ,
2026-05-19 08:25:01 +08:00
outlineTitle : 'Esboço da conversa' ,
outlineEmpty : 'Nenhum conteúdo da conversa' ,
outlineUserQuestion : 'Pergunta do usuário' ,
2026-04-17 09:09:50 +08:00
inputPlaceholder : 'Digite uma mensagem... (Enter para enviar, Shift+Enter para nova linha)' ,
2026-05-15 12:04:03 +08:00
slashCommandArgs : {
message : '<mensagem>' ,
title : '<titulo>' ,
text : '<texto>' ,
} ,
slashCommands : {
usage : 'Calcular o uso da sessão atual' ,
status : 'Mostrar status da sessão e fila' ,
abort : 'Parar a execução ativa do Bridge' ,
queue : 'Enfileirar uma mensagem após a execução ativa' ,
clear : 'Limpar a visualização atual' ,
clearHistory : 'Excluir o histórico de mensagens salvo desta sessão' ,
title : 'Renomear esta sessão' ,
compress : 'Executar compressão de contexto quando ocioso' ,
steer : 'Enviar texto de orientação para a execução ativa do Bridge' ,
destroy : 'Liberar o Bridge Agent desta sessão' ,
} ,
2026-04-17 09:09:50 +08:00
attachFiles : 'Anexar arquivos' ,
2026-05-17 09:01:59 +08:00
showToolCalls : 'Mostrar chamadas de ferramentas' ,
hideToolCalls : 'Ocultar chamadas de ferramentas' ,
2026-05-07 10:34:58 +08:00
messageQueue : 'Fila de mensagens' ,
removeQueuedMessage : 'Remover mensagem da fila' ,
2026-04-17 09:09:50 +08:00
stop : 'Parar' ,
send : 'Enviar' ,
contextUsed : 'Contexto utilizado:' ,
sessions : 'Sessoes' ,
2026-05-06 16:15:42 +08:00
webUiSessions : 'Sessões' ,
2026-05-19 16:09:59 +08:00
allProfiles : 'Todos os perfis' ,
2026-05-20 18:26:01 +08:00
profileMissingModelsTip : 'O perfil "{profile}" não tem provider ou modelo disponível para esta sessão' ,
2026-05-02 03:00:47 +02:00
sessionScopeHint : 'O chat mostra apenas sessões da Web UI/API Server. Sessões de CLI, Telegram, Discord, Cron e outros canais são somente leitura no Histórico.' ,
openHistory : 'Abrir histórico' ,
hermesHistory : 'Histórico Hermes' ,
2026-05-19 16:09:59 +08:00
historyScopeHint : 'Sessões do histórico Hermes do perfil atual, somente leitura, agrupadas por origem.' ,
2026-04-17 09:09:50 +08:00
noSessions : 'Sem sessoes' ,
newChat : 'Novo chat' ,
2026-05-16 00:11:51 +08:00
approvalKicker : 'Permissão do terminal' ,
approvalTitle : 'Revisar comando antes de executar' ,
approvalAllowOnce : 'Permitir uma vez' ,
approvalAllowSession : 'Permitir sessão' ,
approvalAlways : 'Sempre' ,
approvalDeny : 'Negar' ,
2026-04-17 09:09:50 +08:00
deleteSession : 'Excluir esta sessao?' ,
2026-05-06 16:15:42 +08:00
toggleBatchMode : 'Seleção em lote' ,
selectAll : 'Selecionar tudo' ,
confirmBatchDelete : 'Excluir {count} sessões selecionadas?' ,
batchDeleteSuccess : '{count} sessões excluídas' ,
batchDeletePartial : '{failed} sessões falharam ao excluir' ,
batchDeleteFailed : 'Falha na exclusão em lote' ,
2026-04-17 09:09:50 +08:00
sessionDeleted : 'Sessao excluida' ,
rename : 'Renomear' ,
2026-04-22 02:09:58 +02:00
pin : 'Fixar' ,
unpin : 'Desafixar' ,
pinned : 'Fixadas' ,
2026-05-20 17:13:32 +08:00
chatMode : 'Modo de chat' ,
2026-04-22 02:09:58 +02:00
liveMode : 'Ao vivo' ,
liveSessions : 'Sessões ao vivo' ,
recentBadge : 'Recente' ,
linkedSessions : '{count} vinculadas' ,
noVisibleMessages : 'Nenhuma mensagem visível para humanos.' ,
monitorRoleUser : 'Usuário' ,
monitorRoleAssistant : 'Assistente' ,
copySessionId : 'Copiar ID da sessão' ,
2026-05-07 13:49:57 +08:00
export : 'Exportar' ,
exportFull : 'Exportação completa (JSON)' ,
exportCompressed : 'Exportação comprimida (TXT)' ,
exportCompressing : 'Comprimindo contexto, aguarde...' ,
exportSuccess : 'Sessão exportada' ,
exportFailed : 'Falha ao exportar' ,
2026-04-17 09:09:50 +08:00
renamed : 'Renomeado' ,
renameFailed : 'Falha ao renomear' ,
renameSession : 'Renomear sessao' ,
2026-05-03 22:10:40 +08:00
sessionNotFound : 'Sessao nao encontrada' ,
2026-04-17 09:09:50 +08:00
enterNewTitle : 'Digite um novo titulo' ,
other : 'Outro' ,
runFailed : 'Falha na execucao' ,
error : 'Erro' ,
tool : 'Ferramenta' ,
arguments : 'Argumentos' ,
result : 'Resultado' ,
truncated : '... (truncado)' ,
2026-05-20 17:13:32 +08:00
executionDuration : 'Tempo de execução' , thinkingLabel : 'Raciocínio' ,
2026-04-25 08:46:50 +08:00
thinkingInProgress : 'Pensando…' ,
thinkingShow : 'Mostrar raciocínio' ,
thinkingHide : 'Ocultar raciocínio' ,
thinkingDuration : 'Observado {duration}' ,
thinkingChars : '{count} caracteres' ,
2026-04-26 22:59:43 +08:00
copyBubble : 'Copiar mensagem' ,
copiedBubble : 'Mensagem copiada' ,
copyFailed : 'Falha ao copiar' ,
2026-05-02 13:26:57 +08:00
playSpeech : 'Reproduzir voz' ,
pauseSpeech : 'Pausar' ,
resumeSpeech : 'Retomar' ,
stopSpeech : 'Parar' ,
speechNotSupported : 'Reprodução de voz não suportada neste navegador' ,
2026-05-20 17:13:32 +08:00
searchEnterHint : 'Enter para abrir · Esc para fechar' ,
searchHint : 'Cmd/Ctrl+K' ,
searchScope : 'Escopo da busca: apenas banco local de sessões da Web UI; sessões históricas Hermes somente leitura não são incluídas.' ,
searchFailed : 'Falha ao pesquisar sessões' ,
searchNoSnippet : 'Nenhum resumo disponível' ,
searchNoResults : 'Nenhuma sessão corresponde à busca' ,
searchRecent : 'Sessão recente' ,
searchEmpty : 'Sessões recentes' ,
searchPlaceholder : 'Pesquisar sessões...' ,
searchSubtitle : 'Pesquisar por título ou conteúdo da mensagem' ,
searchTitle : 'Pesquisar sessões' ,
stopGateway : 'Parar gateway' ,
start : 'Iniciar' ,
workspaceSetFailed : 'Falha ao definir workspace' ,
workspaceSet : 'Workspace definido' ,
workspacePlaceholder : 'Digite o caminho do projeto, ex. /home/user/project' ,
workspace : 'Área de trabalho' ,
setWorkspaceTitle : 'Definir workspace da sessão' ,
setWorkspace : 'Definir workspace' ,
modelSetFailed : 'Falha ao definir modelo' ,
modelSet : 'Modelo definido' ,
setModelTitle : 'Definir modelo da sessão' ,
setModel : 'Definir modelo' ,
newCliChat : 'Novo CLI' ,
cliEmptyState : 'Iniciar chat CLI' ,
autoPlaySpeech : 'Reproduzir voz automaticamente' ,
2026-04-17 09:09:50 +08:00
} ,
// Jobs
jobs : {
title : 'Tarefas agendadas' ,
createJob : 'Criar tarefa' ,
editJob : 'Editar tarefa' ,
noJobs : 'Nenhuma tarefa agendada ainda. Crie uma para comecar.' ,
name : 'Nome' ,
namePlaceholder : 'Nome da tarefa' ,
schedule : 'Agendamento (expressao Cron)' ,
schedulePlaceholder : 'ex. 0 9 * * *' ,
quickPresets : 'Presets rapidos' ,
selectPreset : 'Selecionar um preset...' ,
presetEveryMinute : 'Cada minuto' ,
presetEvery5Min : 'A cada 5 minutos' ,
presetEveryHour : 'Cada hora' ,
presetEveryDay : 'Todos os dias as 00:00' ,
presetEveryDay9 : 'Todos os dias as 09:00' ,
presetEveryMonday : 'Toda segunda as 09:00' ,
presetEveryMonth : 'Dia 1 de cada mes as 09:00' ,
prompt : 'Prompt' ,
promptPlaceholder : 'O prompt a executar' ,
deliverTarget : 'Destino de entrega' ,
origin : 'Origem' ,
local : 'Local' ,
repeatCount : 'Contagem de repeticoes (opcional)' ,
2026-04-30 10:17:25 +10:00
modelPlaceholder : 'Modelo padrao' ,
2026-04-17 09:09:50 +08:00
repeatPlaceholder : 'Deixar vazio para infinito' ,
jobCreated : 'Tarefa criada' ,
jobUpdated : 'Tarefa atualizada' ,
nameRequired : 'O nome e obrigatorio' ,
scheduleRequired : 'O agendamento e obrigatorio' ,
loadFailed : 'Falha ao carregar a tarefa' ,
jobPaused : 'Tarefa pausada' ,
jobResumed : 'Tarefa retomada' ,
2026-04-30 10:17:25 +10:00
jobTriggered : 'Job acionado' ,
modelUpdated : 'Modelo atualizado' ,
2026-04-17 09:09:50 +08:00
jobDeleted : 'Tarefa excluida' ,
status : {
running : 'Em execucao' ,
paused : 'Pausada' ,
disabled : 'Desativada' ,
scheduled : 'Agendada' ,
} ,
info : {
2026-04-30 10:17:25 +10:00
model : 'Modelo' ,
2026-04-17 09:09:50 +08:00
schedule : 'Agendamento' ,
lastRun : 'Ultima execucao' ,
nextRun : 'Proxima execucao' ,
deliver : 'Entrega' ,
repeat : 'Repeticao' ,
} ,
action : {
pause : 'Pausar' ,
pauseJob : 'Pausar tarefa' ,
resume : 'Retomar' ,
resumeJob : 'Retomar tarefa' ,
runNow : 'Executar agora' ,
triggerImmediately : 'Acionar imediatamente' ,
} ,
2026-04-30 10:17:25 +10:00
runHistory : {
title : 'Histórico' ,
runs : 'execuções' ,
noRuns : 'Nenhum histórico encontrado.' ,
} ,
2026-04-17 09:09:50 +08:00
} ,
// Skills
skills : {
title : 'Habilidades' ,
searchPlaceholder : 'Buscar habilidades...' ,
noMatch : 'Nenhuma habilidade corresponde a sua busca' ,
noSkills : 'Nenhuma habilidade encontrada' ,
backTo : 'Voltar para' ,
attachedFiles : 'Arquivos anexados' ,
loadFailed : 'Falha ao carregar a habilidade' ,
fileLoadFailed : 'Falha ao carregar o arquivo' ,
2026-05-02 10:56:58 +10:00
modified : 'Modificado pelo usuário' ,
archived : 'Arquivado' ,
pinned : 'Fixado' ,
pin : 'Fixar habilidade' ,
unpin : 'Desfixar habilidade' ,
pinFailed : 'Falha ao alterar estado de fixacao' ,
2026-04-17 09:09:50 +08:00
toggleFailed : 'Falha ao ativar/desativar a habilidade' ,
2026-05-02 10:56:58 +10:00
source : {
builtin : 'Integrado' ,
hub : 'Hub' ,
local : 'Local' ,
} ,
2026-04-17 09:09:50 +08:00
} ,
2026-05-10 13:50:39 +02:00
// Plugins
plugins : {
title : 'Plugins' ,
refresh : 'Atualizar' ,
notice : 'Inventário somente leitura dos manifests de plugins Hermes detectáveis. Os metadados de descoberta são lidos sem carregar código de plugin. No v1, ações de gerenciamento ficam na CLI; mudanças entram em vigor em novas sessões Hermes.' ,
loadFailed : 'Falha ao carregar plugins' ,
commandCopied : 'Comando copiado' ,
searchPlaceholder : 'Buscar key, nome, descrição, caminho...' ,
source : 'Origem' ,
kind : 'Tipo' ,
statusTitle : 'Status' ,
configStatus : 'config: {status}' ,
notAvailable : 'n/a' ,
copyCommand : 'Copiar comando' ,
managedElsewhere : 'gerenciado em outro lugar' ,
noMatch : 'Nenhum plugin corresponde aos filtros atuais' ,
enabled : 'ativado' ,
disabled : 'desativado' ,
summary : {
total : 'Total' ,
active : 'Ativado / auto' ,
inactive : 'Inativo' ,
disabled : 'Desativado' ,
providerManaged : 'Gerenciado por provider' ,
} ,
status : {
enabled : 'Ativado' ,
'auto-active' : 'Autoativo' ,
inactive : 'Inativo' ,
disabled : 'Desativado' ,
'provider-managed' : 'Gerenciado por provider' ,
} ,
statusLabel : {
enabled : 'Ativado por configuração' ,
'auto-active' : 'Autoativo' ,
inactive : 'Inativo' ,
disabled : 'Desativado' ,
'provider-managed' : 'Gerenciado por provider' ,
} ,
configStatuses : {
enabled : 'ativado' ,
disabled : 'desativado' ,
'not-enabled' : 'não ativado' ,
auto : 'auto' ,
'provider-managed' : 'gerenciado por provider' ,
} ,
table : {
plugin : 'Plugin' ,
status : 'Status' ,
source : 'Origem' ,
kind : 'Tipo' ,
capabilities : 'Capacidades' ,
path : 'Caminho / entrypoint' ,
cli : 'CLI' ,
} ,
capabilities : {
tools : '{count} ferramentas' ,
hooks : '{count} hooks' ,
env : '{count} env' ,
} ,
metadata : {
2026-05-20 17:13:32 +08:00
agentRoot : 'Raiz do agente' ,
2026-05-10 13:50:39 +02:00
python : 'Python' ,
2026-05-20 17:13:32 +08:00
scanCwd : 'Verificar cwd' ,
2026-05-10 13:50:39 +02:00
projectPlugins : 'Plugins do projeto' ,
} ,
} ,
2026-04-17 09:09:50 +08:00
// Memory
memory : {
title : 'Memoria' ,
refresh : 'Atualizar' ,
loadFailed : 'Falha ao carregar a memoria' ,
myNotes : 'Minhas notas' ,
noNotes : 'Nenhuma nota ainda.' ,
notesPlaceholder : 'Escreva suas notas...' ,
userProfile : 'Perfil do usuario' ,
noProfile : 'Nenhum perfil ainda.' ,
profilePlaceholder : 'Escreva seu perfil...' ,
soul : 'Alma' ,
noSoul : 'Nenhuma configuracao de alma ainda.' ,
soulPlaceholder : 'Escreva a configuracao da alma...' ,
} ,
// Models
models : {
title : 'Modelos' ,
addProvider : 'Adicionar provedor' ,
providerType : 'Tipo de provedor' ,
2026-05-20 17:13:32 +08:00
preset : 'Predefinição' ,
2026-04-17 09:09:50 +08:00
custom : 'Personalizado' ,
selectProvider : 'Selecionar provedor' ,
chooseProvider : 'Escolha um provedor...' ,
name : 'Nome' ,
autoGeneratedName : 'Gerado automaticamente pela URL base' ,
baseUrl : 'URL base' ,
2026-04-25 14:00:07 +08:00
region : 'Região' ,
regionIntl : 'Internacional' ,
regionCn : 'China Continental' ,
2026-04-17 09:09:50 +08:00
baseUrlPlaceholder : 'ex. https://api.example.com/v1' ,
apiKey : 'Chave API' ,
apiKeyPlaceholder : 'sk-...' ,
defaultModel : 'Modelo padrao' ,
2026-04-17 22:05:06 +08:00
selectOrInput : 'Selecionar ou digitar um modelo...' ,
2026-04-17 09:09:50 +08:00
selectModel : 'Selecionar um modelo...' ,
providerAdded : 'Provedor adicionado' ,
providerDeleted : 'Provedor excluido' ,
deleteProvider : 'Excluir provedor' ,
deleteConfirm : 'Tem certeza de que deseja excluir "{name}"?' ,
2026-04-17 23:11:57 +08:00
codexLoginTitle : 'Login do OpenAI Codex' ,
codexWaiting : 'Digite este código na página de autorização para fazer login:' ,
codexCopyCode : 'Código copiado' ,
codexOpenLink : 'Abrir página de autorização' ,
codexApproved : 'Login bem-sucedido' ,
codexExpired : 'A autorização expirou. Por favor, tente novamente.' ,
2026-04-23 08:39:19 +08:00
nousLoginTitle : 'Login do Nous Portal' ,
nousWaiting : 'Insira este código na página de autorização:' ,
nousCopyCode : 'Código copiado' ,
nousOpenLink : 'Abrir página de autorização' ,
nousApproved : 'Login bem-sucedido' ,
nousDenied : 'Autorização negada' ,
nousExpired : 'Autorização expirada' ,
2026-04-26 22:51:35 +08:00
copilotLoginTitle : 'Login do GitHub Copilot' ,
copilotWaiting : 'Abra o GitHub e insira o código do dispositivo abaixo para autorizar. A janela fechará automaticamente após a aprovação.' ,
copilotCopyCode : 'Código copiado' ,
copilotOpenLink : 'Abrir a página de autorização do GitHub' ,
copilotApproved : 'Login bem-sucedido!' ,
copilotDenied : 'Autorização negada.' ,
copilotExpired : 'O link de autorização expirou. Tente novamente.' ,
copilotAddDetectedTitle : 'GitHub Copilot detectado' ,
copilotAddDetected : 'Foi detectado um token OAuth do GitHub Copilot nesta máquina. Clique em Adicionar para ativar o Copilot no Hermes.' ,
copilotAddSourceEnv : 'Origem: ~/.hermes/.env (COPILOT_GITHUB_TOKEN)' ,
copilotAddSourceGhCli : 'Origem: gh CLI (gh auth token)' ,
copilotAddSourceAppsJson : 'Origem: extensão Copilot do VS Code (apps.json)' ,
copilotDeleteHintEnv : 'Isto irá limpar o COPILOT_GITHUB_TOKEN em ~/.hermes/.env. Outras ferramentas não são afetadas.' ,
copilotDeleteHintGhCli : 'O Copilot ficará oculto no Hermes. Sua sessão no gh CLI não é afetada — `gh auth status` continuará indicando que está conectado.' ,
copilotDeleteHintAppsJson : 'O Copilot ficará oculto no Hermes. A extensão Copilot do VS Code continuará conectada.' ,
2026-04-24 08:49:45 +08:00
customBadge : 'PERSONALIZADO' ,
2026-04-26 22:51:35 +08:00
previewBadge : 'PRÉVIA' ,
disabledBadge : 'INDISPONÍVEL' ,
disabledTooltip : "Este modelo não está disponível para sua conta." ,
2026-05-11 16:18:13 +02:00
customModelPlaceholder : 'ID de modelo não listado' ,
customModelHint : 'Para modelos compatíveis com o provedor que a API não retorna; não é uma renomeação de exibição. Enter para carregar.' ,
2026-04-17 09:09:50 +08:00
noProviders : 'Nenhum provedor encontrado. Adicione um provedor personalizado para comecar.' ,
2026-05-14 23:36:07 +08:00
clearVisibleModels : 'Limpar seleção' ,
2026-05-19 16:09:59 +08:00
currentDefault : 'Padrão atual' ,
defaultShort : 'Padrão' ,
2026-04-17 09:09:50 +08:00
builtIn : 'Integrado' ,
customType : 'Personalizado' ,
provider : 'Provedor' ,
2026-04-24 11:18:11 +08:00
contextLength : 'Tamanho do contexto' ,
contextLengthPlaceholder : 'ex: 200000 (opcional)' ,
2026-04-17 09:09:50 +08:00
local : 'Local ({host})' ,
selectProviderRequired : 'Por favor, selecione um provedor' ,
baseUrlRequired : 'A URL base e obrigatoria' ,
apiKeyRequired : 'A chave API e obrigatoria' ,
modelRequired : 'O modelo padrao e obrigatorio' ,
enterBaseUrl : 'Por favor, insira a URL base primeiro' ,
unexpectedFormat : 'Formato de resposta inesperado' ,
foundModels : '{count} modelos encontrados' ,
fetchFailed : 'Falha ao buscar os modelos' ,
2026-05-20 17:13:32 +08:00
xaiWaiting : 'Conclua a autorização na página xAI aberta. A janela será fechada automaticamente após a aprovação.' ,
xaiOpenLink : 'Abrir página de autorização xAI' ,
xaiLoginTitle : 'Login OAuth xAI Grok' ,
xaiExpired : 'O link de autorização expirou. Tente novamente.' ,
xaiCopyLink : 'Copiar link de autorização' ,
xaiApproved : 'Login concluído!' ,
visibilitySelectOne : 'Mantenha pelo menos um modelo visível' ,
visibilitySaved : 'Modelos visíveis salvos' ,
visibilitySaveFailed : 'Falha ao salvar modelos visíveis' ,
visibilityHint : 'Afeta apenas o seletor de modelos e a página de modelos da Web UI. A configuração provider/model da Hermes CLI não é alterada; as chamadas ainda usam o ID original do modelo.' ,
showAllModels : 'Mostrar todos os modelos' ,
searchPlaceholder : 'Pesquisar modelos...' ,
removeCustomModel : 'Remover este modelo não listado' ,
more : 'mais' ,
models : 'Lista de modelos' ,
manageVisibleModelsFor : 'Gerenciar modelos visíveis de {name}' ,
manageVisibleModels : 'Gerenciar modelos visíveis' ,
getApiKey : 'Obter API Key' ,
count : 'modelos' ,
aliasUseOriginal : 'Restaurar ID original' ,
aliasTitleFor : 'Nome exibido de {model}' ,
aliasTitle : 'Nome exibido do modelo' ,
aliasSaveFailed : 'Falha ao salvar nome exibido' ,
aliasPlaceholder : 'Deixe vazio para usar o ID original do modelo' ,
aliasManageFor : 'Nomes exibidos de {provider}' ,
aliasManage : 'Nomes exibidos' ,
aliasHint : 'Altera apenas o nome exibido na Web UI. O Hermes ainda recebe o ID original do modelo.' ,
aliasEdit : 'Renomear' ,
aliasCanonical : 'ID original: {model}' ,
2026-04-17 09:09:50 +08:00
} ,
// Profiles
profiles : {
title : 'Perfis' ,
create : 'Criar perfil' ,
import : 'Importar' ,
export : 'Exportar' ,
rename : 'Renomear' ,
delete : 'Excluir' ,
2026-05-23 18:44:53 +08:00
switchTo : 'Trocar Hermes Profile' ,
switchConfirm : 'Isto executara `hermes profile use {name}` e alterara o active profile do Hermes CLI. Continuar?' ,
switchSuccess : 'Hermes active profile alterado para "{name}"' ,
switchFailed : 'Falha ao trocar Hermes Profile. O gateway pode precisar de reinicio manual.' ,
2026-04-17 09:09:50 +08:00
createSuccess : 'Perfil "{name}" criado' ,
createFailed : 'Falha ao criar o perfil' ,
renameSuccess : 'Perfil renomeado' ,
renameFailed : 'Falha ao renomear o perfil' ,
deleteConfirm : 'Tem certeza de que deseja excluir o perfil "{name}"?' ,
deleteSuccess : 'Perfil excluido' ,
deleteFailed : 'Falha ao excluir o perfil' ,
exportSuccess : 'Perfil exportado' ,
exportFailed : 'Falha ao exportar o perfil' ,
importSuccess : 'Perfil importado' ,
importFailed : 'Falha ao importar o perfil' ,
importSelectFile : 'Selecionar arquivo de arquivo' ,
importInvalidFile : 'Por favor, selecione um arquivo valido (.tar.gz, .tgz, .gz, .zip)' ,
name : 'Nome do perfil' ,
namePlaceholder : 'Apenas letras, numeros e hifens' ,
2026-05-03 22:10:40 +08:00
nameValidation : 'O nome do perfil só pode conter letras minúsculas, números, sublinhados e hifens' ,
2026-04-17 09:09:50 +08:00
newName : 'Novo nome' ,
newNamePlaceholder : 'Digite um novo nome' ,
cloneFromCurrent : 'Clonar do perfil atual' ,
2026-04-29 20:31:24 +08:00
cloneCleanupNotice : 'Ao clonar, as credenciais exclusivas de plataforma (Weixin / Telegram / Slack, etc.) são automaticamente ignoradas para evitar conflitos com o perfil de origem' ,
cloneStrippedCredentials : '{count} credencial(is) exclusiva(s) removida(s): {list}' ,
cloneDisabledPlatforms : '{count} plataforma(s) desabilitada(s): {list}' ,
cloneStrippedConfigCredentials : '{count} credencial(is) incorporada(s) removida(s) do config.yaml: {list}' ,
2026-04-17 09:09:50 +08:00
archivePath : 'Caminho do arquivo' ,
archivePathPlaceholder : 'Caminho do servidor para o arquivo' ,
importName : 'Nome do perfil (opcional)' ,
importNamePlaceholder : 'Deixe vazio para usar o nome do arquivo' ,
active : 'Ativo' ,
model : 'Modelo' ,
gateway : 'Gateway' ,
alias : 'Alias' ,
provider : 'Provedor' ,
path : 'Caminho' ,
skills : 'Habilidades' ,
hasEnv : 'Tem .env' ,
hasSoulMd : 'Tem soul.md' ,
noProfiles : 'Nenhum perfil encontrado. Crie um para comecar.' ,
2026-05-20 14:15:01 +08:00
avatar : {
2026-05-20 17:13:32 +08:00
title : 'Avatar personalizado' ,
customize : 'Personalizar avatar' ,
upload : 'Enviar imagem' ,
random : 'Gerar aleatório' ,
reset : 'Restaurar padrão' ,
hint : 'PNG, JPEG ou WebP, máximo 1 MB' ,
invalidType : 'Escolha uma imagem PNG, JPEG ou WebP' ,
tooLarge : 'A imagem do avatar não pode exceder 1 MB' ,
saveSuccess : 'Avatar salvo' ,
saveFailed : 'Falha ao salvar avatar' ,
resetSuccess : 'Avatar padrão restaurado' ,
resetFailed : 'Falha ao restaurar avatar padrão' ,
} ,
runtime : {
activeProfile : 'Atual: {name}' ,
bridgeWorker : 'Status do Bridge' ,
gateway : 'Gateway' ,
active : 'Ativo' ,
activeTag : 'Atual' ,
idle : 'Ocioso' ,
running : 'Em execução' ,
stopped : 'Parado' ,
restartGateway : 'Reiniciar gateway' ,
restartProfile : 'Reiniciar perfil' ,
2026-05-23 19:41:51 +08:00
switchProfile : 'Trocar perfil frontend' ,
2026-05-20 17:13:32 +08:00
gatewayRestarted : 'Gateway reiniciado: {name}' ,
gatewayRestartFailed : 'Falha ao reiniciar gateway' ,
profileRestarted : 'Perfil reiniciado: {name}' ,
profileRestartFailed : 'Falha ao reiniciar perfil' ,
2026-05-20 14:15:01 +08:00
} ,
2026-04-17 09:09:50 +08:00
} ,
// Logs
logs : {
title : 'Logs' ,
all : 'Todos' ,
searchPlaceholder : 'Buscar...' ,
refresh : 'Atualizar' ,
noEntries : 'Nenhuma entrada de log' ,
} ,
// Settings
settings : {
title : 'Configuracoes' ,
saved : 'Salvo' ,
saveFailed : 'Falha ao salvar' ,
tabs : {
display : 'Exibicao' ,
2026-05-23 18:44:53 +08:00
account : 'Conta atual' ,
users : 'Gerenciamento de contas' ,
2026-04-17 09:09:50 +08:00
agent : 'Agente' ,
memory : 'Memoria' ,
2026-05-19 17:58:39 +08:00
compression : 'Compressao' ,
2026-04-17 09:09:50 +08:00
session : 'Sessao' ,
privacy : 'Privacidade' ,
apiServer : 'Servidor API' ,
2026-05-10 20:08:38 +08:00
models : 'Modelos' ,
voice : 'Voz' ,
2026-04-17 09:09:50 +08:00
} ,
display : {
streaming : 'Respostas em streaming' ,
streamingHint : 'Mostrar respostas da IA em tempo real' ,
compact : 'Modo compacto' ,
compactHint : 'Reduzir espacamento entre mensagens' ,
showReasoning : 'Mostrar raciocinio' ,
showReasoningHint : 'Mostrar processo de pensamento do modelo' ,
showCost : 'Mostrar custo' ,
showCostHint : 'Mostrar uso de tokens nas respostas' ,
inlineDiffs : 'Diffs em linha' ,
inlineDiffsHint : 'Mostrar alteracoes de codigo em linha' ,
bellOnComplete : 'Som de conclusao' ,
bellOnCompleteHint : 'Tocar som quando a IA terminar' ,
busyInputMode : 'Modo de entrada ocupada' ,
busyInputModeHint : 'Permitir entrada enquanto a IA processa' ,
theme : 'Tema' ,
themeHint : 'Escolha claro, escuro ou seguir a preferencia do sistema' ,
themeLight : 'Claro' ,
themeDark : 'Escuro' ,
themeSystem : 'Sistema' ,
} ,
agent : {
maxTurns : 'Maximo de turnos' ,
maxTurnsHint : 'Maximo de rodadas de interacao por conversa' ,
gatewayTimeout : 'Timeout do gateway' ,
gatewayTimeoutHint : 'Timeout da requisicao em segundos' ,
restartDrainTimeout : 'Timeout de drenagem ao reiniciar' ,
restartDrainTimeoutHint : 'Timeout de drenagem antes de reiniciar em segundos' ,
toolEnforcement : 'Obrigatoriedade de ferramentas' ,
toolEnforcementHint : 'Controlar o modo de execucao de chamadas de ferramentas' ,
auto : 'Automatico' ,
always : 'Sempre' ,
never : 'Nunca' ,
} ,
memory : {
enabled : 'Ativar memoria' ,
enabledHint : 'Permitir que a IA lembre do contexto da conversa' ,
userProfile : 'Perfil do usuario' ,
userProfileHint : 'Permitir que a IA lembre das preferencias do usuario' ,
charLimit : 'Limite de caracteres da memoria' ,
charLimitHint : 'Maximo de caracteres para MEMORY.md' ,
userCharLimit : 'Limite de caracteres do perfil do usuario' ,
userCharLimitHint : 'Maximo de caracteres para USER.md' ,
} ,
2026-05-19 17:58:39 +08:00
compression : {
enabled : 'Ativar compressao' ,
enabledHint : 'Comprimir automaticamente historico longo antes de exceder o contexto do modelo' ,
threshold : 'Limiar de compressao' ,
thresholdHint : 'Iniciar compressao quando tokens estimados excederem esta proporcao do contexto' ,
targetRatio : 'Proporcao alvo' ,
targetRatioHint : 'Tamanho alvo do historico apos compressao como proporcao do contexto' ,
protectLastN : 'Proteger mensagens recentes' ,
protectLastNHint : 'Manter sem compressao esta quantidade de mensagens recentes' ,
protectFirstN : 'Proteger primeiras mensagens' ,
protectFirstNHint : 'Manter sem compressao esta quantidade de mensagens iniciais' ,
} ,
2026-04-17 09:09:50 +08:00
session : {
mode : 'Modo de reinicializacao' ,
modeHint : 'Condicao de acionamento para reinicializacao de sessao' ,
modeBoth : 'Inatividade + Agendado' ,
modeIdle : 'Somente inatividade' ,
2026-05-16 21:18:59 +08:00
modeDaily : 'Somente agendado' ,
modeNone : 'Nunca (apenas manual)' ,
2026-04-17 09:09:50 +08:00
idleMinutes : 'Timeout de inatividade' ,
idleMinutesHint : 'Tempo de espera antes da reinicializacao automatica (minutos)' ,
atHour : 'Horario de reinicializacao agendada' ,
2026-04-22 02:09:58 +02:00
humanOnly : 'Mostrar apenas sessões humanas' ,
humanOnlyHint : 'Oculta por padrão o ruído de subagentes e do monitor de sessões' ,
liveMonitorHumanOnly : 'Monitor ao vivo: mostrar apenas sessões humanas' ,
liveMonitorHumanOnlyHint : 'Oculta por padrão o ruído de subagentes e do monitor de sessões no monitor ao vivo' ,
2026-04-17 09:09:50 +08:00
atHourHint : 'Reiniciar sessao neste horario diariamente' ,
2026-05-04 21:29:39 +08:00
requireAuth : 'Autorização de sessão' ,
requireAuthHint : 'Requer autorização para operações de sessão' ,
2026-04-17 09:09:50 +08:00
} ,
privacy : {
redactPii : 'Ocultar dados pessoais' ,
redactPiiHint : 'Detectar e ocultar automaticamente informacoes sensiveis (senhas, chaves, etc.)' ,
} ,
apiServer : {
enable : 'Ativar' ,
enableHint : 'Ativar servidor API' ,
host : 'Host' ,
hostHint : 'Endereco de escuta' ,
port : 'Porta' ,
portHint : 'Porta de escuta' ,
key : 'Chave' ,
keyHint : 'Chave de acesso API' ,
cors : 'Origens CORS' ,
corsHint : 'Fontes cross-origin permitidas' ,
} ,
2026-05-10 20:08:38 +08:00
voice : {
ttsProvider : 'Provedor TTS' ,
ttsProviderHint : 'Escolha o mecanismo de texto para fala para reproducao de mensagens' ,
providerWebSpeech : 'WebSpeech API (Navegador)' ,
providerOpenai : 'OpenAI TTS' ,
providerCustom : 'Endpoint personalizado (compativel com OpenAI)' ,
providerEdge : 'Edge TTS (Gratuito, sem chave API)' ,
// WebSpeech
webspeechVoice : 'Voz' ,
webspeechVoiceHint : 'Selecione uma voz do seu navegador ou SO' ,
webspeechVoicePlaceholder : 'Auto (voz padrao)' ,
// OpenAI
openaiKey : 'Chave API' ,
openaiKeyHint : 'Sua chave API OpenAI com acesso TTS' ,
openaiUrl : 'URL base da API' ,
openaiUrlHint : 'ex. https://api.openai.com/v1/audio/speech' ,
openaiModel : 'Modelo' ,
openaiModelHint : 'tts-1 (mais rapido) / tts-1-hd (qualidade superior)' ,
openaiVoice : 'Voz' ,
openaiVoiceHint : 'Voz a ser usada para sintese' ,
// Custom endpoint
customHint : 'Use qualquer API TTS compativel com OpenAI — funciona com GPT-SoVITS, CosyVoice, etc.' ,
customUrl : 'URL da API' ,
customUrlHint : 'URL base do seu servico TTS' ,
customUrlPlaceholder : 'Endereco configurado no adaptador local, ex. http://127.0.0.1:9880' ,
customApiKey : 'Chave API (opcional)' ,
customApiKeyHint : 'Alguns endpoints personalizados exigem autenticacao' ,
customApiKeyPlaceholder : 'Deixe em branco se nao for necessario' ,
// Edge TTS
edgeHint : 'Desenvolvido por Microsoft Edge TTS (node-edge-tts).' ,
edgeUrl : 'URL do adaptador' ,
edgeUrlHint : 'Endereco do adaptador Edge TTS, ex. http://127.0.0.1:9882' ,
edgeUrlPlaceholder : 'http://127.0.0.1:9882' ,
edgeVoice : 'Voz' ,
edgeVoiceHint : 'Selecione uma voz para sintese de fala' ,
2026-05-11 21:56:11 +08:00
edgeRate : 'Velocidade' ,
edgeRateHint : 'Ajustar velocidade da fala (0.5x ~ 2.0x)' ,
edgePitch : 'Tom' ,
edgePitchHint : 'Ajustar tom da fala (-20 ~ +20 Hz)' ,
2026-05-10 20:08:38 +08:00
// Test
testTitle : 'Teste de voz' ,
testText : 'Texto de teste' ,
testTextPlaceholder : 'Insira o texto para testar...' ,
testTextDefault : 'Ola, este e um teste de voz.' ,
testButton : 'Testar' ,
testButtonPlaying : 'Reproduzindo...' ,
testFailed : 'Teste falhou: {error}' ,
2026-05-16 08:55:23 +08:00
// MiMo TTS
providerMimo : 'MiMo TTS' ,
mimoHint : 'Xiaomi MiMo TTS — vozes predefinidas, design de voz e clonagem de voz' ,
mimoApiKey : 'Chave API' ,
mimoApiKeyHint : 'Obtenha sua chave em platform.xiaomimimo.com' ,
mimoApiKeyPlaceholder : 'Chave API MiMo' ,
mimoBaseUrl : 'URL base' ,
mimoBaseUrlHint : 'URL do endpoint da API MiMo' ,
mimoModel : 'Modelo' ,
mimoModelHint : 'Selecione o modelo de síntese de voz' ,
mimoModelPreset : 'Vozes predefinidas' ,
mimoModelVoiceDesign : 'Design de voz' ,
mimoModelVoiceClone : 'Clonagem de voz' ,
mimoVoice : 'Voz' ,
mimoVoiceHint : 'Selecione uma voz predefinida' ,
mimoVoiceDesignPrompt : 'Descrição da voz' ,
mimoVoiceDesignPromptHint : 'Descreva as características de voz desejadas' ,
mimoVoiceDesignPromptPlaceholder : 'Ex: Uma voz feminina quente e jovem, ligeiramente lenta, com tom magnético' ,
mimoCloneAudio : 'Enviar áudio' ,
mimoCloneAudioHint : 'Envie uma amostra de áudio para clonagem (mp3/wav, máx. 10 MB)' ,
mimoCloneAudioUpload : 'Escolher arquivo' ,
mimoCloneAudioClear : 'Limpar' ,
mimoStylePrompt : 'Prompt de estilo' ,
mimoStylePromptHint : 'Opcional — descreva o estilo de fala em linguagem natural' ,
mimoStylePromptPlaceholder : 'Ex: Tom brilhante e animado, ritmo rápido' ,
2026-05-10 20:08:38 +08:00
} ,
2026-05-08 18:29:43 +08:00
lockedIps : {
title : 'IPs bloqueadas' ,
count : '{count} bloqueadas' ,
empty : 'Nenhuma IP bloqueada' ,
unlock : 'Desbloquear' ,
unlockAll : 'Desbloquear tudo' ,
unlockAllConfirm : 'Desbloquear todas as IPs?' ,
unlocked : 'IP desbloqueada' ,
allUnlocked : '{count} IPs desbloqueadas' ,
} ,
2026-05-20 17:13:32 +08:00
models : {
apiKey : 'API Key' ,
apiKeyPlaceholder : 'Digite a API Key' ,
noProviders : 'Nenhum provedor configurado' ,
save : 'Salvar' ,
saveFailed : 'Falha ao salvar' ,
saved : 'Salvo' ,
} ,
2026-04-17 09:09:50 +08:00
} ,
// Platform channel settings
platform : {
requireMention : "Exigir mencao {'@'}" ,
requireMentionGroup : "Exigir mencao {'@'} em grupos para responder" ,
requireMentionChannel : "Exigir mencao {'@'} em canais para responder" ,
requireMentionRoom : "Exigir mencao {'@'} em salas para responder" ,
reactions : 'Reacoes' ,
reactionsHint : 'Reagir a mensagens com emoji' ,
freeResponseChats : 'Chats de resposta livre' ,
freeResponseChatsHint : "IDs de chats que respondem sem mencao {'@'} (separados por virgula)" ,
freeResponseChannels : 'Canais de resposta livre' ,
freeResponseChannelsHint : "IDs de canais que respondem sem mencao {'@'} (separados por virgula)" ,
freeResponseRooms : 'Salas de resposta livre' ,
freeResponseRoomsHint : "IDs de salas que respondem sem mencao {'@'} (separados por virgula)" ,
mentionPatterns : 'Padroes de mencao personalizados' ,
mentionPatternsHint : 'Padroes de acionamento adicionais' ,
autoThread : 'Thread automatica' ,
autoThreadHint : "Criar automaticamente threads de resposta apos mencao {'@'}" ,
autoThreadHintRoom : 'Criar automaticamente threads de resposta em salas' ,
dmMentionThreads : 'Threads de mencao em DM' ,
dmMentionThreadsHint : 'Usar respostas em thread para mencoes em DMs' ,
allowBots : 'Permitir mensagens de bots' ,
allowBotsHint : 'Responder a mensagens de outros bots' ,
allowedChannels : 'Canais permitidos' ,
allowedChannelsHint : 'Lista branca de IDs de canais (separados por virgula)' ,
ignoredChannels : 'Canais ignorados' ,
ignoredChannelsHint : 'Canais onde o bot nunca responde (separados por virgula)' ,
noThreadChannels : 'Canais sem thread' ,
noThreadChannelsHint : 'Canais onde o bot responde sem threads (separados por virgula)' ,
2026-04-29 20:31:24 +08:00
exclusiveTokenWarning : 'Esta plataforma usa bloqueio exclusivo de token. Cada perfil deve usar um token de identidade diferente para evitar conflitos com outros perfis.' ,
2026-04-17 09:09:50 +08:00
botToken : 'Token do bot' ,
botTokenHint : 'Token do bot do portal do desenvolvedor' ,
accessToken : 'Token de acesso' ,
accessTokenHint : 'Token de acesso Matrix' ,
homeserver : 'URL do homeserver' ,
homeserverHint : 'URL do homeserver Matrix' ,
appId : 'ID do aplicativo' ,
appIdHint : 'ID do aplicativo Feishu' ,
appSecret : 'Segredo do aplicativo' ,
appSecretHint : 'Segredo do aplicativo Feishu' ,
clientId : 'ID do cliente' ,
clientIdHint : 'ID do cliente DingTalk' ,
clientSecret : 'Segredo do cliente' ,
clientSecretHint : 'Segredo do cliente DingTalk' ,
botId : 'ID do bot' ,
botIdHint : 'ID do bot WeCom' ,
wecomSecretHint : 'Segredo do bot WeCom' ,
waEnabled : 'Ativar WhatsApp' ,
waEnabledHint : 'Ativar WhatsApp via pareamento por codigo QR' ,
weixinToken : 'Token Weixin' ,
weixinTokenHint : 'Do login QR da CLI weixin (hermes weixin)' ,
accountId : 'ID da conta' ,
accountIdHint : 'ID da conta Weixin' ,
qrLogin : 'Login por QR' ,
qrRelogin : 'Reconectar' ,
qrFetching : 'Buscando codigo QR...' ,
qrScanHint : 'Escaneie com WeChat para fazer login' ,
qrScanedHint : 'Escaneado, por favor confirme no celular...' ,
2026-05-20 17:13:32 +08:00
qqSandboxHint : 'Ativar ambiente sandbox (para testes)' ,
qqSandbox : 'Modo sandbox' ,
qqQrScanHint : 'Escaneie o QR code com QQ ou abra o link no celular para concluir a vinculação' ,
qqMarkdownHint : 'Ativar mensagens em formato Markdown (alguns clientes podem não suportar)' ,
qqMarkdown : 'Suporte a Markdown' ,
qqAppSecretHint : 'App Secret do bot QQ Open Platform' ,
qqAppSecret : 'App Secret' ,
qqAppIdHint : 'App ID do bot QQ Open Platform' ,
qqAppId : 'App ID' ,
allowedUsersHint : 'Lista de permissões de IDs de usuário ou OpenID, separados por vírgula' ,
allowedUsers : 'Usuários permitidos' ,
allowAllUsersHint : 'Permite mensagens de qualquer usuário; desative para usar a lista de permissões' ,
allowAllUsers : 'Permitir todos os usuários' ,
2026-04-17 09:09:50 +08:00
} ,
// Language
language : {
label : 'Idioma' ,
zh : '中文' ,
en : 'English' ,
pt : 'Portugues' ,
} ,
// Terminal
terminal : {
sessions : 'Sessoes' ,
newTab : 'Novo terminal' ,
closeSession : 'Fechar esta sessao?' ,
sessionExited : 'Encerrada' ,
processExited : 'Processo encerrado com codigo {code}' ,
2026-05-20 17:13:32 +08:00
noSessions : 'Nenhuma sessão de terminal' ,
connectionFailed : 'Falha ao conectar ao terminal' ,
connectionError : 'Erro de conexão' ,
connectionClosed : 'Conexão fechada' ,
2026-04-17 09:09:50 +08:00
} ,
// Usage
usage : {
title : 'Estatisticas de uso' ,
refresh : 'Atualizar' ,
totalTokens : 'Total de tokens' ,
inputTokens : 'Entrada' ,
outputTokens : 'Saida' ,
totalSessions : 'Total de sessoes' ,
avgPerDay : '~{n}/dia em media' ,
estimatedCost : 'Custo est.' ,
cacheHitRate : 'Taxa de acerto de cache' ,
modelBreakdown : 'Detalhamento por modelo' ,
2026-05-13 01:41:49 +02:00
dailyTrend : 'Uso diario' ,
2026-04-17 09:09:50 +08:00
date : 'Data' ,
tokens : 'Tokens' ,
cache : 'Cache' ,
2026-05-20 17:13:32 +08:00
cacheRead : 'Leitura de cache' ,
cacheWrite : 'Escrita de cache' ,
2026-04-17 09:09:50 +08:00
sessions : 'Sessoes' ,
cost : 'Custo' ,
noData : 'Sem dados de uso' ,
} ,
2026-04-22 20:27:33 +08:00
2026-05-14 09:28:51 +08:00
skillsUsage : {
title : 'Uso de habilidades' ,
subtitle : 'Acompanhe carregamentos e edições de habilidades nas sessões Hermes' ,
refresh : 'Atualizar' ,
periodSelector : 'Período de uso de habilidades' ,
periodLabel : '{days} d' ,
summary : 'Resumo' ,
totalActions : 'Ações' ,
loads : 'Carga' ,
edits : 'Ed.' ,
distinctSkills : 'Habs.' ,
topSkills : 'Top habs.' ,
dailyTrend : 'Tendência diária' ,
periodSummary : 'Últimos {days} dias' ,
skill : 'Hab.' ,
share : '%' ,
lastUsed : 'Últ. uso' ,
noData : 'Nenhum dado de uso de habilidades' ,
loadFailed : 'Falha ao carregar o uso de habilidades' ,
otherSkills : 'Outras habs.' ,
} ,
2026-04-22 20:27:33 +08:00
// Registro de alteracoes
changelog : {
2026-05-20 17:13:32 +08:00
new_0_5_22_1 : 'API de lista de sessões Hermes passa a ler o banco do perfil em vez do store local de sessões da Web UI' ,
new_0_5_23_1 : 'Comandos slash de chat exclusivos do Bridge com sugestões localizadas' ,
new_0_5_23_2 : 'Histórico de comandos persistente para replay de sessão sem poluir contexto, uso ou compressão' ,
new_0_5_23_3 : 'Variáveis de ambiente do perfil gateway isoladas para evitar vazamento de credenciais entre perfis' ,
new_0_5_23_4 : 'Porta da Web UI reservada durante alocação do gateway para evitar conflitos de inicialização' ,
new_0_5_23_5 : 'Correção do reinício de autoatualização para não reportar saídas bem-sucedidas do helper como falha' ,
new_0_5_24_1 : 'Chat Bridge alinhado ao API Server para entrada multimodal, prompt de sistema e contexto de workspace' ,
new_0_5_25_1 : 'Ações de reset e clonagem de salas de chat em grupo' ,
new_0_5_25_2 : 'Diretório de estado da Web UI configurável para layouts de deploy personalizados' ,
new_0_5_25_3 : 'MiMo adicionado como provedor TTS nas configurações de voz' ,
new_0_5_25_4 : 'Listas de modelos de provedores personalizados buscadas pelo backend para evitar falhas CORS do navegador' ,
new_0_5_25_5 : 'Fluxo de aprovação de ferramentas corrigido para sessões Bridge' ,
new_0_5_25_6 : 'Dica de plataforma CLI forçada removida dos prompts Bridge para preservar instruções personalizadas de mídia/arquivo' ,
new_0_5_25_7 : 'Conteúdo de imagem base64 exibido corretamente no histórico de mensagens do usuário' ,
new_0_5_25_8 : 'Testes Playwright de navegador, cobertura de contrato de streaming de chat, cobertura de modelos de provedor e baseline de cobertura adicionados' ,
new_0_5_26_1 : 'Suporte a caminhos de mídia Markdown locais e do Windows no histórico e em mensagens renderizadas' ,
new_0_5_26_2 : 'Histórico vazio do assistant filtrado e estado de compressão obsoleto limpo ao iniciar nova execução' ,
new_0_5_26_3 : 'Escritas com lock para atualizações de config e perfil a fim de reduzir corrupção por concorrência' ,
new_0_5_26_4 : 'Configurações de canais QQBot e DingTalk adicionadas' ,
new_0_5_26_5 : 'Detecção de porta CLI portável e melhorias no tamanho da gaveta de terminal móvel' ,
new_0_5_26_6 : 'Ambientes de perfil Bridge isolados e descoberta de plugins Hermes corrigida entre ambientes Python' ,
new_0_5_26_7 : 'Estados de gateway parado explicados com diagnósticos Web UI e estado de carregamento de logs estável' ,
new_0_5_26_8 : 'Opções de reset de sessão, base URL de provedor personalizado e destinos dinâmicos de entrega corrigidos' ,
new_0_5_26_9 : 'Toggle local de visibilidade de trace de tool-call adicionado à barra de entrada do chat' ,
new_0_5_26_10 : 'Instalação do pacote Hermes Agent suportada quando não há checkout de código-fonte disponível' ,
new_0_5_26_11 : 'Login OAuth xAI Grok para usuários SuperGrok e presets de modelos Grok atualizados' ,
new_0_5_26_12 : 'Cobertura ampliada de navegador, streaming de chat, provedor, gateway, config, plugin e Bridge' ,
new_0_5_27_1 : 'Configurações de modelo por sessão para chats Bridge, com provider e model independentes salvos por sessão' ,
new_0_5_27_2 : 'Clique com o botão direito em uma sessão Bridge e escolha Definir modelo para trocar o modelo daquela sessão' ,
new_0_5_27_3 : 'Execuções validam o modelo da sessão e voltam ao modelo padrão atual quando o modelo salvo está indisponível' ,
new_0_5_27_4 : 'Compressão de contexto segue por padrão o modelo selecionado como padrão no Profile atual' ,
new_0_5_30_1 : 'Bridge chat preserva histórico estruturado, corrigindo ausência intermitente de resposta e execução de ferramentas pulada por histórico de ferramentas achatado' ,
new_0_5_30_2 : 'Roteamento de menções no chat em grupo é mais confiável para múltiplos agentes, remove a própria menção @ antes da entrega e mantém nomes após atualizar' ,
new_0_5_30_3 : 'Páginas de modelos, dropdowns de modelo do chat e seleção de modelo da sessão agora usam o Profile ativo com marcadores padrão precisos' ,
new_0_5_30_4 : 'Gerenciamento de gateway simplificado: página Gateway independente removida, cada Profile verifica configuração de plataforma antes de iniciar e runner leve gerencia start/restart' ,
new_0_5_30_5 : 'Inicialização do gateway melhorada em Docker, Termux e Windows com runtime-lock, limpeza de conflito de porta, execução em segundo plano e suporte a restart' ,
new_0_5_30_6 : 'Compatibilidade Windows reforçada para detecção de caminhos, downloads e subprocessos job/update sem flashes de janelas de terminal' ,
new_0_5_30_7 : 'Escritas de config e presets de provedor corrigidos: validar chaves .env, rotear FUN-Codex pela Responses API e atualizar listas Z.AI/GLM' ,
new_0_5_30_8 : 'Detalhes de frontend polidos, incluindo sidebar recolhida, rótulos curtos de grupo, divisor lateral e estilo do outline da conversa' ,
new_0_5_30_9 : 'Compressão de contexto segue configurações do Profile e fortalece snapshots obsoletos reutilizando resumos anteriores com cauda segura' ,
new_0_5_31_1 : 'Reinícios do Bridge broker reforçados, renderização final do stream de chat em grupo corrigida e roteamento {\'@\'}all adicionado' ,
new_0_5_31_2 : 'Gerenciador de arquivos pode copiar caminhos absolutos e a gaveta móvel de sessões não fica mais atrás do chat' ,
new_0_5_31_3 : 'Seletor de Profile mostra avatares, upload de avatar personalizado, modal de status runtime e ações de restart de gateway/Profile' ,
new_0_5_31_4 : 'Avatares de Profile aparecem em chat individual, chat em grupo e sidebar recolhida, com metadados Web UI e caminhos seguros para Windows' ,
new_0_5_31_5 : 'Detecção e restart de gateway em Docker, Termux e Windows melhorados usando gateway_state/gateway.pid para liveness do gateway gerenciado' ,
new_0_5_31_6 : 'Endpoint de mídia APIKEY.FUN para geração de imagens e skill apikey-image-gen integrado para texto-imagem, imagem-imagem e edição via provider fun-codex do Profile ativo' ,
2026-05-21 14:31:52 +08:00
new_0_5_33_1 : 'Falhas de execução e erros Socket em chat individual e em grupo agora ficam como mensagens Agent vermelhas na lista de mensagens' ,
new_0_5_33_2 : 'A busca de sessões pode ser limitada ao Profile selecionado, ou buscar todos os Profiles quando nenhum estiver selecionado' ,
new_0_5_33_3 : 'A página Skills mostra documentos de recomendação em chinês/inglês quando nenhum skill está selecionado, e um segundo clique desmarca o skill' ,
new_0_5_33_4 : 'Remove entradas de changelog i18n não usadas para reduzir o tamanho do frontend' ,
new_0_5_33_5 : 'Corrige falha de inicialização do agent bridge no Windows chinês causada pela codificação da saída do netstat' ,
new_0_5_33_6 : 'Atualiza a lista de modelos Nous Portal pelo catalog público e recomendações do Portal' ,
new_0_5_33_7 : 'Listas e status runtime de Profile leem nomes dos diretórios e modelos padrão do config, evitando erros por largura de colunas da CLI' ,
2026-05-22 11:12:21 +08:00
new_0_5_34_1 : 'Normaliza resultados de tools multimodais ao armazenar mensagens de sessão/grupo, evitando imagens base64 nos replays' ,
new_0_5_34_2 : 'Persiste modelos Hermes personalizados em configuração gerenciada pelo backend e adiciona endpoints de adicionar/remover modelo' ,
new_0_5_34_3 : 'Mantém uso final de contexto e status de tools do Bridge corretos após a conclusão das execuções' ,
new_0_5_34_4 : 'Melhora filtros de Kanban, exibição de responsáveis, ações de cards e detalhes de tarefas' ,
new_0_5_34_5 : 'Corrige contagem de uso da compressão com cache de contexto fixo de prompt/tools e totais completos de tokens' ,
new_0_5_34_6 : 'Cacheia contexto fixo por agent no chat em grupo e mostra progresso apenas quando a compressão realmente inicia' ,
new_0_5_34_7 : 'Sincroniza skills integradas do Web UI em todos os Profiles e registra o Profile alvo nos logs' ,
2026-05-22 12:03:43 +08:00
new_0_5_34_8 : 'Se o Kanban falhar no Windows, atualize o Hermes para receber as correções mais recentes de migração do banco Kanban' ,
2026-05-23 10:41:24 +08:00
new_0_5_35_1 : 'Sessões Bridge agora podem executar em paralelo entre sessions diferentes, enquanto runs da mesma session continuam serializados para preservar a ordem' ,
new_0_5_35_2 : 'Adiciona a página Performance Monitor para CPU/memória do sistema, Web UI, Bridge Broker, Workers e status de sessões ativas' ,
new_0_5_35_3 : 'Adiciona métricas por worker com CPU, memória, Profile, número de sessões e estado de execução' ,
new_0_5_35_4 : 'Melhora a limpeza do ciclo de vida dos Bridge workers para recuperar workers no encerramento do Broker ou do processo pai e reduzir processos Python órfãos' ,
new_0_5_35_5 : 'Fortalece a compatibilidade do monitoramento com fallbacks de coleta para macOS, Windows, Linux, Docker e Termux' ,
new_0_5_35_6 : 'Performance Monitor não bloqueia mais em requests a workers durante a inicialização de Agents, reduzindo request timeouts no Windows' ,
new_0_5_35_7 : 'Chat Markdown agora suporta preview inline de conteúdo de texto, e ícones de download baixam arquivos diretamente sem abrir o drawer' ,
new_0_5_35_8 : 'Melhora o drawer de conteúdo com ação de fechar no mobile, largura total no mobile, 800px no desktop e fundos consistentes para texto/Markdown' ,
2026-04-22 20:27:33 +08:00
} ,
2026-04-23 14:10:14 +08:00
// Arquivos
files : {
title : 'Arquivos' ,
tree : 'Arvore de diretorios' ,
list : 'Lista de arquivos' ,
breadcrumbRoot : 'Inicio' ,
newFile : 'Novo arquivo' ,
newFolder : 'Nova pasta' ,
upload : 'Enviar' ,
refresh : 'Atualizar' ,
open : 'Abrir' ,
edit : 'Editar' ,
preview : 'Visualizar' ,
download : 'Baixar' ,
copyPath : 'Copiar caminho' ,
rename : 'Renomear' ,
delete : 'Excluir' ,
name : 'Nome' ,
size : 'Tamanho' ,
modified : 'Modificado' ,
actions : 'Acoes' ,
emptyDir : 'Diretorio vazio' ,
loading : 'Carregando...' ,
confirmDelete : 'Tem certeza de que deseja excluir "{name}"?' ,
confirmDeleteDir : 'Tem certeza de que deseja excluir o diretorio "{name}" e todo o seu conteudo?' ,
deleteFailed : 'Falha ao excluir' ,
deleted : 'Excluido' ,
renameTo : 'Renomear para' ,
newFileName : 'Nome do arquivo' ,
newFolderName : 'Nome da pasta' ,
created : 'Criado' ,
createFailed : 'Falha ao criar' ,
renamed : 'Renomeado' ,
renameFailed : 'Falha ao renomear' ,
uploadSuccess : '{count} arquivo(s) enviado(s)' ,
uploadFailed : 'Falha ao enviar' ,
saveFailed : 'Falha ao salvar' ,
saved : 'Salvo' ,
unsavedChanges : 'Voce tem alteracoes nao salvas. Descartar?' ,
pathCopied : 'Caminho copiado' ,
fileTooLarge : 'Arquivo muito grande (max 10MB)' ,
permissionDenied : 'Nao e possivel modificar arquivo protegido' ,
notFound : 'Arquivo ou diretorio nao encontrado' ,
backendError : 'Falha na operacao de arquivo' ,
dragDropHint : 'Arraste arquivos aqui para enviar' ,
closeEditor : 'Fechar editor' ,
closePreview : 'Fechar' ,
saveFile : 'Salvar' ,
2026-05-20 17:13:32 +08:00
fileTree : 'Árvore de arquivos' ,
2026-04-23 14:10:14 +08:00
} ,
2026-04-24 20:41:14 +08:00
// Chat em grupo
groupChat : {
title : 'Chat em grupo' ,
createRoom : 'Criar sala' ,
joinByCode : 'Entrar com codigo' ,
roomName : 'Nome da sala' ,
roomNamePlaceholder : 'Digite o nome da sala' ,
inviteCode : 'Codigo de convite' ,
autoGenerate : 'Gerar automaticamente' ,
noRooms : 'Nenhuma sala ainda' ,
selectOrCreate : 'Selecione ou crie uma sala para comecar a conversar' ,
agents : 'Agentes' ,
addAgent : 'Adicionar agente' ,
selectProfile : 'Selecione um perfil' ,
agentAdded : 'Agente adicionado' ,
agentAlreadyInRoom : 'O agente ja esta nesta sala' ,
2026-05-21 14:54:41 +08:00
agentAddFailedCount : '{count} agente(s) nao foram adicionados: {details}' ,
2026-04-24 20:41:14 +08:00
noAgents : 'Nenhum agente nesta sala' ,
members : 'Membros' ,
roomCreated : 'Sala criada' ,
roomDeleted : 'Sala excluída' ,
2026-05-15 15:52:16 +08:00
roomCloned : 'Sala clonada' ,
cloneRoom : 'Clonar sala' ,
2026-04-24 20:41:14 +08:00
deleteRoomConfirm : 'Excluir esta sala?' ,
2026-05-15 15:52:16 +08:00
clearContext : 'Limpar contexto' ,
clearContextConfirm : 'Limpar o contexto desta sala? Mensagens e snapshots de compactação serão removidos, mas agentes e membros ficam.' ,
contextCleared : 'Contexto limpo' ,
2026-04-24 20:41:14 +08:00
you : 'Você' ,
joined : 'Entrou na sala' ,
joinFailed : 'Falha ao entrar na sala' ,
inputPlaceholder : 'Digite uma mensagem... (Enter para enviar)' ,
enterCode : 'Digite o codigo de convite' ,
yourName : 'Seu nome' ,
yourNamePlaceholder : 'Digite seu nome de exibicao' ,
yourDescription : 'Descricao (opcional)' ,
yourDescriptionPlaceholder : 'Conte aos outros quem voce e...' ,
agentName : 'Nome do agente' ,
agentNamePlaceholder : 'Nome personalizado (vazio = nome do perfil)' ,
agentDesc : 'Descrição do agente' ,
agentDescPlaceholder : 'Descreva o que este agente faz...' ,
agentReplying : 'está respondendo...' ,
agentCompressing : 'está compactando contexto...' ,
compressionSettings : 'Configuração de compactação' ,
triggerTokens : 'Tokens de acionamento' ,
triggerTokensDesc : 'Limite de tokens para acionar a compactação' ,
maxHistoryTokens : 'Máx. tokens de histórico' ,
maxHistoryTokensDesc : 'Máximo de tokens para o contexto compactado' ,
tailMessageCount : 'Mensagens recentes' ,
tailMessageCountDesc : 'Número de mensagens recentes a manter' ,
compressionConfig : 'Config. de compactação' ,
compressNow : 'Compactar agora' ,
compressingInProgress : 'Compactação em andamento' ,
compressionSaved : 'Configuração salva' ,
} ,
2026-04-23 14:10:14 +08:00
// Download
download : {
downloading : 'Baixando...' ,
downloadFailed : 'Falha no download' ,
fileNotFound : 'Arquivo nao encontrado ou excluido' ,
fileTooLarge : 'Arquivo muito grande (limite excedido)' ,
backendError : 'Falha ao ler o arquivo, o ambiente remoto pode estar indisponivel' ,
backendTimeout : 'Tempo esgotado para ler o arquivo' ,
unsupportedBackend : 'O backend de terminal atual nao suporta download de arquivos' ,
invalidPath : 'Caminho de arquivo invalido' ,
2026-05-22 19:04:15 +08:00
contentDisplay : 'Exibicao de conteudo' ,
2026-04-23 14:10:14 +08:00
download : 'Baixar' ,
2026-04-24 02:31:42 +02:00
downloadFile : 'Baixar arquivo' ,
2026-04-23 14:10:14 +08:00
} ,
2026-05-20 17:13:32 +08:00
gateways : {
title : 'Gateways' ,
running : 'Em execução' ,
stopped : 'Parado' ,
started : 'Iniciado' ,
startFailed : 'Falha ao iniciar gateway' ,
stopFailed : 'Falha ao parar gateway' ,
} ,
kanban : {
title : 'Quadro Kanban' ,
createTask : 'Nova tarefa' ,
noTasks : 'Nenhuma tarefa' ,
allStatuses : 'Todos os status' ,
allAssignees : 'Todos os responsáveis' ,
columns : {
triage : 'Triagem' ,
todo : 'A fazer' ,
ready : 'Pronto' ,
running : 'Em andamento' ,
blocked : 'Bloqueado' ,
done : 'Concluído' ,
archived : 'Arquivado' ,
} ,
card : {
assigneeTooltip : 'Responsável' ,
priority : {
low : 'Baixa' ,
medium : 'Média' ,
high : 'Alta' ,
} ,
timeAgo : {
justNow : 'agora mesmo' ,
minutes : 'há {count} min' ,
hours : 'há {count} h' ,
days : 'há {count} d' ,
} ,
} ,
board : {
create : 'Novo quadro' ,
archive : 'Arquivar quadro' ,
archiveConfirm : 'Arquivar o quadro atual?' ,
archived : 'Quadro arquivado' ,
created : 'Quadro criado' ,
slugPlaceholder : 'Identificador do quadro, ex. project-a' ,
namePlaceholder : 'Nome exibido (opcional)' ,
slugRequired : 'O identificador do quadro é obrigatório' ,
} ,
form : {
title : 'Título' ,
titlePlaceholder : 'Título da tarefa' ,
titleRequired : 'Título é obrigatório' ,
body : 'Descrição' ,
bodyPlaceholder : 'Descrição da tarefa (opcional)' ,
assignee : 'Responsável' ,
selectAssignee : 'Selecionar responsável...' ,
priority : 'Prioridade' ,
selectPriority : 'Selecionar prioridade...' ,
} ,
detail : {
status : 'Status' ,
priority : 'Prioridade' ,
assignee : 'Responsável' ,
tenant : 'Locatário' ,
createdAt : 'Criado' ,
startedAt : 'Iniciado' ,
completedAt : 'Concluído' ,
comments : 'Comentários' ,
events : 'Eventos' ,
runs : 'Execuções' ,
artifacts : 'Arquivos gerados' ,
result : 'Resultado' ,
highlights : 'Informações principais' ,
sources : 'Fontes de dados' ,
sessions : 'Sessões relacionadas' ,
sessionMessages : 'Mensagens da sessão' ,
noSessions : 'Nenhuma sessão relacionada encontrada.' ,
} ,
action : {
title : 'Ações' ,
assign : 'Atribuir' ,
assignTo : 'Atribuir a...' ,
block : 'Bloquear' ,
blockReason : 'Motivo do bloqueio' ,
unblock : 'Desbloquear' ,
complete : 'Concluir' ,
completeSummary : 'Resumo de conclusão (opcional)' ,
} ,
message : {
loadFailed : 'Falha ao carregar tarefa' ,
taskCreated : 'Tarefa criada' ,
taskAssigned : 'Tarefa atribuída' ,
taskBlocked : 'Tarefa bloqueada' ,
taskUnblocked : 'Tarefa desbloqueada' ,
taskCompleted : 'Tarefa concluída' ,
} ,
stats : {
total : 'Total' ,
tasks : 'Tarefas' ,
} ,
} ,
2026-04-17 09:09:50 +08:00
}