1523 lines
65 KiB
TypeScript
1523 lines
65 KiB
TypeScript
export default {
|
|
// Login
|
|
login: {
|
|
title: 'Hermes Web UI',
|
|
description: 'Insira seu nome de usuario e senha para continuar.',
|
|
placeholder: 'Token de acesso',
|
|
submit: 'Entrar',
|
|
tokenRequired: 'Por favor, insira seu token de acesso',
|
|
invalidToken: 'Token invalido',
|
|
connectionFailed: 'Nao foi possivel conectar ao servidor',
|
|
passwordLogin: 'Senha',
|
|
tokenLogin: 'Token',
|
|
usernamePlaceholder: 'Nome de usuario',
|
|
passwordPlaceholder: 'Senha',
|
|
defaultCredentialsHint: 'Nome de usuario padrao: admin. Senha padrao: 123456.',
|
|
credentialsRequired: 'Por favor, insira nome de usuario e senha',
|
|
invalidCredentials: 'Nome de usuario ou senha incorretos',
|
|
tooManyAttempts: 'Muitas tentativas falhadas, por favor tente novamente mais tarde',
|
|
lockResetHint: 'Se este for seu servidor, limpe o bloqueio de login com:',
|
|
defaultLoginResetHint: 'Para redefinir a senha admin padrao, execute:',
|
|
sessionExpired: 'Login expirado. Entre novamente.',
|
|
accessDenied: 'Voce nao tem permissao para acessar este recurso.',
|
|
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',
|
|
setupDescription: 'Gerencie o nome de usuario e a senha usados para entrar.',
|
|
removeConfirm: 'Login por senha e obrigatorio para contas de usuario.',
|
|
passwordLoginNotConfigured: 'Login por senha nao configurado',
|
|
passwordLoginConfigured: 'Conta atual: {username}',
|
|
defaultCredentialTitle: 'Altere a conta e senha padrao',
|
|
defaultCredentialMessage: 'A conta atual ainda usa o nome de usuario ou a senha padrao. Para evitar acesso nao autorizado, altere o nome de usuario e a senha da conta atual o quanto antes.',
|
|
defaultCredentialAction: 'Alterar agora',
|
|
defaultCredentialLater: 'Lembrar depois',
|
|
},
|
|
|
|
users: {
|
|
title: 'Gerenciamento de contas',
|
|
description: 'Crie usuarios, atribua funcoes e controle quais perfis administradores comuns podem acessar.',
|
|
create: 'Criar usuario',
|
|
edit: 'Editar usuario',
|
|
username: 'Nome de usuario',
|
|
role: 'Funcao',
|
|
statusLabel: 'Status',
|
|
profiles: 'Perfis acessiveis',
|
|
profilesPlaceholder: 'Selecione perfis acessiveis',
|
|
allProfiles: 'Todos os perfis',
|
|
noProfiles: 'Nenhum perfil atribuido',
|
|
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',
|
|
},
|
|
},
|
|
|
|
// Common
|
|
common: {
|
|
loading: 'Carregando...',
|
|
cancel: 'Cancelar',
|
|
retry: 'Tentar novamente',
|
|
delete: 'Excluir',
|
|
edit: 'Editar',
|
|
save: 'Salvar',
|
|
saved: 'Salvo',
|
|
update: 'Atualizar',
|
|
create: 'Criar',
|
|
saveFailed: 'Falha ao salvar',
|
|
deleteFailed: 'Falha ao excluir',
|
|
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',
|
|
stop: 'Parar',
|
|
start: 'Iniciar',
|
|
expired: 'Expirado',
|
|
},
|
|
|
|
// Gestao de MCP
|
|
mcp: {
|
|
title: 'Servidores MCP',
|
|
loadFailed: 'Falha ao carregar servidores MCP',
|
|
reloadAll: 'Recarregar todos',
|
|
refresh: 'Atualizar',
|
|
total: 'Total',
|
|
connected: 'Conectado',
|
|
disconnected: 'Desconectado',
|
|
tools: 'ferramentas',
|
|
tool: 'Ferramentas',
|
|
searchPlaceholder: 'Pesquisar servidores...',
|
|
addServer: '+ Adicionar servidor',
|
|
zeroTools: '0 ferramentas',
|
|
loading: 'Carregando...',
|
|
empty: 'Nenhum servidor MCP configurado',
|
|
reloaded: '{server} recarregado',
|
|
reloadedAll: 'Todos os servidores MCP recarregados',
|
|
reloadFailed: 'Falha ao recarregar',
|
|
serverAdded: 'Servidor "{name}" adicionado',
|
|
addFailed: 'Falha ao adicionar servidor',
|
|
serverUpdated: 'Servidor "{name}" atualizado',
|
|
updateFailed: 'Falha ao atualizar servidor',
|
|
saveFailed: 'Falha ao salvar',
|
|
serverRemoved: '"{name}" removido',
|
|
enabled: "Habilitado: {name}",
|
|
disabled: "Desabilitado: {name}",
|
|
connectedStatus: 'Conectado',
|
|
disconnectedStatus: 'Desconectado',
|
|
disabledStatus: 'Desativado',
|
|
toolList: 'Lista de ferramentas',
|
|
count: ' ',
|
|
more: 'mais',
|
|
removeFailed: 'Falha ao remover servidor',
|
|
testOk: 'Teste OK — {count} ferramentas disponiveis',
|
|
testEmpty: 'O teste nao retornou ferramentas',
|
|
testFailed: 'Falha no teste',
|
|
edit: 'Editar',
|
|
test: 'Testar',
|
|
reload: 'Recarregar',
|
|
remove: 'Remover',
|
|
confirmRemove: 'Remover servidor "{name}"?',
|
|
cancel: 'Cancelar',
|
|
add: 'Adicionar',
|
|
save: 'Salvar',
|
|
addTitle: 'Adicionar servidor MCP',
|
|
editTitle: 'Editar servidor MCP',
|
|
invalidJson: 'JSON inválido',
|
|
invalidYaml: 'Formato YAML inválido',
|
|
invalidConfig: 'Configuração inválida',
|
|
invalidServerConfig: 'Configuração do servidor inválida',
|
|
missingCommandOrUrl: 'Deve conter command ou url',
|
|
},
|
|
|
|
// Sidebar
|
|
sidebar: {
|
|
chat: 'Chat',
|
|
search: 'Pesquisar',
|
|
apiRelay: 'API Relay',
|
|
history: 'Historico',
|
|
jobs: 'Tarefas agendadas',
|
|
models: 'Modelos',
|
|
profiles: 'Perfis',
|
|
plugins: 'Plugins',
|
|
mcp: 'MCP',
|
|
skills: 'Habilidades',
|
|
memory: 'Memoria',
|
|
logs: 'Logs',
|
|
usage: 'Uso',
|
|
performance: 'Desempenho',
|
|
skillsUsage: 'Uso de habilidades',
|
|
channels: 'Canais',
|
|
terminal: 'Terminal',
|
|
files: 'Arquivos',
|
|
groupChat: 'Chat em grupo',
|
|
groupConversation: 'Conversa',
|
|
groupConversationShort: 'Conv.',
|
|
groupAgent: 'Agente',
|
|
groupAgentShort: 'Ag.',
|
|
groupSystem: 'Sistema',
|
|
groupSystemShort: 'Sist',
|
|
groupMonitoring: 'Monitoramento',
|
|
groupMonitoringShort: 'Mon.',
|
|
settings: 'Configuracoes',
|
|
connected: 'Conectado',
|
|
disconnected: 'Desconectado',
|
|
updateTip: 'Execute "hermes-web-ui update" no terminal para atualizar',
|
|
updateVersion: 'Atualizar para v{version}',
|
|
reloadClientVersion: 'Recarregar para v{version}',
|
|
updating: 'Atualizando...',
|
|
updateSuccess: 'Atualizacao concluida. Atualize a pagina em breve. Se nao iniciar apos algum tempo, inicie manualmente.',
|
|
updateFailed: 'Falha na atualizacao',
|
|
logout: 'Sair',
|
|
nodeVersionWarning: 'Node.js v{version} detectado. Atualize para a versao 23 ou posterior.',
|
|
changelog: 'Registro de alteracoes',
|
|
noChangelog: 'Nenhum registro disponivel',
|
|
kanban: 'Kanban',
|
|
groupTools: 'Ferramentas',
|
|
groupToolsShort: "Ferr.",
|
|
codingAgents: "Agentes de código",
|
|
versionPreview: "Prévia de versão",
|
|
groupPlatform: 'Plataforma',
|
|
gateways: 'Gateways',
|
|
expand: 'Expandir menu',
|
|
collapse: 'Recolher menu',
|
|
},
|
|
|
|
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',
|
|
},
|
|
|
|
// Gaveta
|
|
drawer: {
|
|
terminal: 'Terminal',
|
|
files: 'Espaço de trabalho',
|
|
},
|
|
|
|
// Chat
|
|
chat: {
|
|
contextRemaining: 'restante',
|
|
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: 256k (Hermes padrão), 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',
|
|
emptyState: 'Inicie uma conversa com o Hermes Agent',
|
|
outlineTitle: 'Esboço da conversa',
|
|
outlineEmpty: 'Nenhum conteúdo da conversa',
|
|
outlineUserQuestion: 'Pergunta do usuário',
|
|
inputPlaceholder: 'Digite uma mensagem... (Enter para enviar, Shift+Enter para nova linha)',
|
|
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',
|
|
plan: 'Escrever um plano de implementação em Markdown',
|
|
goal: 'Set a standing goal that continues across turns',
|
|
goalStatus: 'Show the active goal status',
|
|
goalPause: 'Pause the active goal loop',
|
|
goalResume: 'Resume the paused goal loop',
|
|
goalDone: 'Complete and clear the active goal',
|
|
goalClear: 'Clear the active goal',
|
|
subgoal: 'Add a criterion to the active goal',
|
|
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',
|
|
reloadMcp: 'Recarregar servidores MCP',
|
|
},
|
|
attachFiles: 'Anexar arquivos',
|
|
showToolCalls: 'Mostrar chamadas de ferramentas',
|
|
hideToolCalls: 'Ocultar chamadas de ferramentas',
|
|
messageQueue: 'Fila de mensagens',
|
|
removeQueuedMessage: 'Remover mensagem da fila',
|
|
stop: 'Parar',
|
|
send: 'Enviar',
|
|
contextUsed: 'Contexto utilizado:',
|
|
sessions: 'Sessoes',
|
|
webUiSessions: 'Sessões',
|
|
allProfiles: 'Todos os perfis',
|
|
profileMissingModelsTip: 'O perfil "{profile}" não tem provider ou modelo disponível para esta sessão',
|
|
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',
|
|
historyScopeHint: 'Sessões do histórico Hermes do perfil atual, somente leitura, agrupadas por origem.',
|
|
noSessions: 'Sem sessoes',
|
|
newChat: 'Novo chat',
|
|
approvalKicker: 'Permissão do terminal',
|
|
approvalTitle: 'Revisar comando antes de executar',
|
|
approvalAllowOnce: 'Permitir uma vez',
|
|
approvalAllowSession: 'Permitir sessão',
|
|
approvalAlways: 'Sempre',
|
|
approvalDeny: 'Negar',
|
|
clarifyKicker: 'Agente precisa de esclarecimento',
|
|
clarifyTitle: 'O agente tem uma pergunta para você',
|
|
clarifyPlaceholder: 'Digite sua resposta...',
|
|
clarifySubmit: 'Responder',
|
|
clarifyDismiss: 'Descartar',
|
|
deleteSession: 'Excluir esta sessao?',
|
|
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',
|
|
importToWebUi: 'Importar para Web UI',
|
|
importSessionSuccess: 'Sessão importada para Web UI',
|
|
importSessionAlreadyExists: 'A sessão já existe no Web UI',
|
|
importSessionFailed: 'Falha ao importar sessão',
|
|
sessionDeleted: 'Sessao excluida',
|
|
rename: 'Renomear',
|
|
pin: 'Fixar',
|
|
unpin: 'Desafixar',
|
|
pinned: 'Fixadas',
|
|
chatMode: 'Modo de chat',
|
|
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',
|
|
copySessionLink: 'Copiar link da sessão',
|
|
openSessionInNewTab: 'Abrir em nova aba',
|
|
sessionLinkCopied: 'Session link copied',
|
|
copySessionId: 'Copiar ID da sessão',
|
|
export: 'Exportar',
|
|
exportFull: 'Exportação completa (JSON)',
|
|
exportCompressed: 'Exportação comprimida (TXT)',
|
|
exportCompressing: 'Comprimindo contexto, aguarde...',
|
|
exportSuccess: 'Sessão exportada',
|
|
exportFailed: 'Falha ao exportar',
|
|
renamed: 'Renomeado',
|
|
renameFailed: 'Falha ao renomear',
|
|
renameSession: 'Renomear sessao',
|
|
sessionNotFound: 'Sessao nao encontrada',
|
|
enterNewTitle: 'Digite um novo titulo',
|
|
other: 'Outro',
|
|
runFailed: 'Falha na execucao',
|
|
error: 'Erro',
|
|
tool: 'Ferramenta',
|
|
arguments: 'Argumentos',
|
|
result: 'Resultado',
|
|
truncated: '... (truncado)',
|
|
executionDuration: 'Tempo de execução', thinkingLabel: 'Raciocínio',
|
|
thinkingInProgress: 'Pensando…',
|
|
thinkingShow: 'Mostrar raciocínio',
|
|
thinkingHide: 'Ocultar raciocínio',
|
|
thinkingDuration: 'Observado {duration}',
|
|
thinkingChars: '{count} caracteres',
|
|
copyBubble: 'Copiar mensagem',
|
|
copiedBubble: 'Mensagem copiada',
|
|
copyFailed: 'Falha ao copiar',
|
|
playSpeech: 'Reproduzir voz',
|
|
pauseSpeech: 'Pausar',
|
|
resumeSpeech: 'Retomar',
|
|
stopSpeech: 'Parar',
|
|
speechNotSupported: 'Reprodução de voz não suportada neste navegador',
|
|
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',
|
|
},
|
|
|
|
// 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)',
|
|
modelPlaceholder: 'Modelo padrao',
|
|
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',
|
|
jobTriggered: 'Job acionado',
|
|
modelUpdated: 'Modelo atualizado',
|
|
jobDeleted: 'Tarefa excluida',
|
|
status: {
|
|
running: 'Em execucao',
|
|
paused: 'Pausada',
|
|
disabled: 'Desativada',
|
|
scheduled: 'Agendada',
|
|
},
|
|
info: {
|
|
model: 'Modelo',
|
|
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',
|
|
},
|
|
runHistory: {
|
|
title: 'Histórico',
|
|
runs: 'execuções',
|
|
noRuns: 'Nenhum histórico encontrado.',
|
|
},
|
|
},
|
|
|
|
// 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',
|
|
modified: 'Modificado pelo usuário',
|
|
archived: 'Arquivado',
|
|
pinned: 'Fixado',
|
|
pin: 'Fixar habilidade',
|
|
unpin: 'Desfixar habilidade',
|
|
pinFailed: 'Falha ao alterar estado de fixacao',
|
|
toggleFailed: 'Falha ao ativar/desativar a habilidade',
|
|
source: {
|
|
builtin: 'Integrado',
|
|
hub: 'Hub',
|
|
local: 'Local',
|
|
external: 'Externo',
|
|
},
|
|
},
|
|
|
|
// 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: {
|
|
agentRoot: 'Raiz do agente',
|
|
python: 'Python',
|
|
scanCwd: 'Verificar cwd',
|
|
projectPlugins: 'Plugins do projeto',
|
|
},
|
|
},
|
|
|
|
// 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',
|
|
preset: 'Predefinição',
|
|
custom: 'Personalizado',
|
|
selectProvider: 'Selecionar provedor',
|
|
chooseProvider: 'Escolha um provedor...',
|
|
name: 'Nome',
|
|
autoGeneratedName: 'Gerado automaticamente pela URL base',
|
|
baseUrl: 'URL base',
|
|
region: 'Região',
|
|
regionIntl: 'Internacional',
|
|
regionCn: 'China Continental',
|
|
baseUrlPlaceholder: 'ex. https://api.example.com/v1',
|
|
apiKey: 'Chave API',
|
|
apiKeyPlaceholder: 'sk-...',
|
|
defaultModel: 'Modelo padrao',
|
|
selectOrInput: 'Selecionar ou digitar um modelo...',
|
|
selectModel: 'Selecionar um modelo...',
|
|
providerAdded: 'Provedor adicionado',
|
|
providerDeleted: 'Provedor excluido',
|
|
deleteProvider: 'Excluir provedor',
|
|
deleteConfirm: 'Tem certeza de que deseja excluir "{name}"?',
|
|
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.',
|
|
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',
|
|
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.',
|
|
customBadge: 'PERSONALIZADO',
|
|
previewBadge: 'PRÉVIA',
|
|
disabledBadge: 'INDISPONÍVEL',
|
|
disabledTooltip: "Este modelo não está disponível para sua conta.",
|
|
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.',
|
|
noProviders: 'Nenhum provedor encontrado. Adicione um provedor personalizado para comecar.',
|
|
clearVisibleModels: 'Limpar seleção',
|
|
currentDefault: 'Padrão atual',
|
|
defaultShort: 'Padrão',
|
|
builtIn: 'Integrado',
|
|
customType: 'Personalizado',
|
|
provider: 'Provedor',
|
|
contextLength: 'Tamanho do contexto',
|
|
contextLengthPlaceholder: 'ex: 256000 (opcional)',
|
|
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',
|
|
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}',
|
|
},
|
|
|
|
// Profiles
|
|
profiles: {
|
|
title: 'Perfis',
|
|
create: 'Criar perfil',
|
|
import: 'Importar',
|
|
export: 'Exportar',
|
|
rename: 'Renomear',
|
|
delete: 'Excluir',
|
|
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.',
|
|
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',
|
|
nameValidation: 'O nome do perfil só pode conter letras minúsculas, números, sublinhados e hifens',
|
|
newName: 'Novo nome',
|
|
newNamePlaceholder: 'Digite um novo nome',
|
|
cloneFromCurrent: 'Clonar do perfil atual',
|
|
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}',
|
|
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.',
|
|
avatar: {
|
|
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',
|
|
checking: 'Verificando',
|
|
running: 'Em execução',
|
|
stopped: 'Parado',
|
|
restartGateway: 'Reiniciar gateway',
|
|
restartProfile: 'Reiniciar perfil',
|
|
switchProfile: 'Trocar perfil frontend',
|
|
gatewayRestarted: 'Gateway reiniciado: {name}',
|
|
gatewayRestartFailed: 'Falha ao reiniciar gateway',
|
|
profileRestarted: 'Perfil reiniciado: {name}',
|
|
profileRestartFailed: 'Falha ao reiniciar perfil',
|
|
},
|
|
},
|
|
|
|
// 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',
|
|
account: 'Conta atual',
|
|
users: 'Gerenciamento de contas',
|
|
agent: 'Agente',
|
|
memory: 'Memoria',
|
|
compression: 'Compressao',
|
|
session: 'Sessao',
|
|
privacy: 'Privacidade',
|
|
apiServer: 'Servidor API',
|
|
models: 'Modelos',
|
|
voice: 'Voz',
|
|
},
|
|
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',
|
|
},
|
|
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',
|
|
},
|
|
session: {
|
|
mode: 'Modo de reinicializacao',
|
|
modeHint: 'Condicao de acionamento para reinicializacao de sessao',
|
|
modeBoth: 'Inatividade + Agendado',
|
|
modeIdle: 'Somente inatividade',
|
|
modeDaily: 'Somente agendado',
|
|
modeNone: 'Nunca (apenas manual)',
|
|
idleMinutes: 'Timeout de inatividade',
|
|
idleMinutesHint: 'Tempo de espera antes da reinicializacao automatica (minutos)',
|
|
atHour: 'Horario de reinicializacao agendada',
|
|
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',
|
|
atHourHint: 'Reiniciar sessao neste horario diariamente',
|
|
requireAuth: 'Autorização de sessão',
|
|
requireAuthHint: 'Requer autorização para operações de sessão',
|
|
},
|
|
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',
|
|
},
|
|
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',
|
|
edgeRate: 'Velocidade',
|
|
edgeRateHint: 'Ajustar velocidade da fala (0.5x ~ 2.0x)',
|
|
edgePitch: 'Tom',
|
|
edgePitchHint: 'Ajustar tom da fala (-20 ~ +20 Hz)',
|
|
|
|
// 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}',
|
|
|
|
// 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',
|
|
},
|
|
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',
|
|
},
|
|
models: {
|
|
apiKey: 'API Key',
|
|
apiKeyPlaceholder: 'Digite a API Key',
|
|
noProviders: 'Nenhum provedor configurado',
|
|
save: 'Salvar',
|
|
saveFailed: 'Falha ao salvar',
|
|
saved: 'Salvo',
|
|
},
|
|
},
|
|
githubPreview: {
|
|
title: "Prévia de versão",
|
|
description: "Clona a tag do GitHub selecionada para o workspace de prévia do Web UI, instala dependências e executa com as portas de desenvolvimento.",
|
|
refresh: "Atualizar",
|
|
selectTag: "Selecione uma tag",
|
|
prepare: "Preparar código",
|
|
install: "Instalar dependências",
|
|
start: "Iniciar prévia",
|
|
stop: "Parar",
|
|
note: "O código de prévia é armazenado no diretório de dados do Web UI. Produção permanece na porta 8648; a prévia usa frontend 8651 e backend 8650.",
|
|
path: "Caminho da prévia",
|
|
webuiHome: "Dados da prévia",
|
|
currentTag: "Tag atual",
|
|
repoReady: "Repositório pronto",
|
|
dependencies: "Dependências instaladas",
|
|
running: "Estado",
|
|
notRunning: "Não em execução",
|
|
open: "Abrir prévia",
|
|
log: "Caminho do log de ações",
|
|
logOutput: "Saída de logs",
|
|
actionLog: "Log de ações",
|
|
devLog: "Log do servidor dev",
|
|
yes: "Sim",
|
|
no: "Não",
|
|
actionFailed: "Ação falhou",
|
|
nodeEnvironmentMissing: "Node/npm não foi detectado. Instale o Node.js e tente novamente.",
|
|
prepareSuccess: "Código de prévia pronto",
|
|
installSuccess: "Dependências instaladas",
|
|
startSuccess: "Prévia iniciada",
|
|
stopSuccess: "Prévia parada",
|
|
},
|
|
|
|
codingAgents: {
|
|
title: "Agentes de código",
|
|
notice: "Nem todos os provedores e modelos são compatíveis.",
|
|
claudeDescription: "CLI da Anthropic para tarefas únicas em print mode e sessões interativas de código.",
|
|
codexDescription: "CLI da OpenAI e fluxo de provedor openai-codex do Hermes para tarefas de repositório.",
|
|
copyCommand: "Copiar",
|
|
commandCopied: "Comando copiado",
|
|
commandCopyFailed: "Falha ao copiar",
|
|
refresh: "Atualizar",
|
|
checking: "Verificando",
|
|
installStatus: "Status da instalação",
|
|
installed: "Instalado",
|
|
notInstalled: "Não instalado",
|
|
installNow: "Instalar",
|
|
installing: "Instalando",
|
|
installSuccess: "Instalado",
|
|
installFailed: "Falha na instalação",
|
|
nodeEnvironmentMissing: "Node/npm não foi detectado. Instale o Node.js e tente novamente.",
|
|
deleteNow: "Excluir",
|
|
deleting: "Excluindo",
|
|
deleteSuccess: "Excluído",
|
|
deleteFailed: "Falha ao excluir",
|
|
configFiles: "Arquivos de configuração",
|
|
profileScope: "Perfil",
|
|
providerScope: "Provedor",
|
|
providerPlaceholder: "ex.: custom:glm",
|
|
modelScope: "Modelo",
|
|
modelPlaceholder: "Selecionar modelo",
|
|
launchModeScope: "Modo de inicialização",
|
|
launchModeGlobal: "Configuração global",
|
|
launchModeScoped: "Provedor e modelo",
|
|
protocolScope: "Protocolo",
|
|
protocolOpenAiChat: "OpenAI Chat Completions (/v1/chat/completions)",
|
|
protocolOpenAiResponses: "OpenAI Responses (/v1/responses)",
|
|
protocolAnthropicMessages: "Anthropic Messages (/v1/messages)",
|
|
reloadConfig: "Recarregar configuração",
|
|
configFileNotCreated: "Não criado",
|
|
configLoadFailed: "Falha ao ler arquivo de configuração",
|
|
loadFailed: "Falha ao inspecionar agentes de código",
|
|
launch: "Iniciar",
|
|
launchTitle: "Iniciar agente de código",
|
|
nativeTerminal: "Terminal nativo",
|
|
builtInTerminal: "Terminal integrado",
|
|
launchPrepared: "Configuração de inicialização preparada",
|
|
launchPrepareFailed: "Falha ao preparar configuração de inicialização",
|
|
nativeLaunchStarted: "Terminal nativo aberto",
|
|
nativeLaunchFailed: "Falha ao abrir terminal nativo",
|
|
terminalTitle: "Terminal do agente de código",
|
|
loadProvidersFailed: "Falha ao carregar provedores do perfil atual",
|
|
selectProviderModel: "Selecione um provedor e modelo",
|
|
launchConfigDir: "Diretório de configuração de inicialização",
|
|
launchCommand: "Comando de inicialização",
|
|
table: {
|
|
tool: "Ferramenta",
|
|
kind: "Etapa",
|
|
command: "Comando",
|
|
note: "Nota",
|
|
action: "Ação",
|
|
},
|
|
kinds: {
|
|
install: "Instalar",
|
|
auth: "Autenticação",
|
|
health: "Saúde",
|
|
run: "Executar",
|
|
},
|
|
notes: {
|
|
claudeInstall: "Instala a CLI Claude Code globalmente.",
|
|
codexInstall: "Instala a CLI Codex globalmente.",
|
|
claudeAuth: "Verifica o estado de login do Claude Code; execute claude uma vez se o login estiver ausente.",
|
|
codexAuth: "Adiciona credenciais OAuth do OpenAI Codex gerenciadas pelo Hermes.",
|
|
claudeHealth: "Verifica o atualizador e a saúde da CLI local.",
|
|
codexHealth: "Confirma que a CLI Codex está disponível no PATH.",
|
|
claudeRun: "Print mode é o caminho mais limpo para tarefas únicas orientadas por API.",
|
|
codexRun: "Tarefas únicas do Codex devem ser executadas dentro de um repositório git.",
|
|
},
|
|
},
|
|
|
|
// 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)',
|
|
exclusiveTokenWarning: 'Esta plataforma usa bloqueio exclusivo de token. Cada perfil deve usar um token de identidade diferente para evitar conflitos com outros perfis.',
|
|
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',
|
|
cardTemplateId: 'ID do modelo de cartão IA',
|
|
cardTemplateIdHint: 'ID do modelo de cartão IA do DingTalk; deixe vazio para desativar os cartões IA',
|
|
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...',
|
|
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',
|
|
},
|
|
|
|
// 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}',
|
|
noSessions: 'Nenhuma sessão de terminal',
|
|
connectionFailed: 'Falha ao conectar ao terminal',
|
|
connectionError: 'Erro de conexão',
|
|
connectionClosed: 'Conexão fechada',
|
|
},
|
|
|
|
// 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',
|
|
dailyTrend: 'Uso diario',
|
|
date: 'Data',
|
|
tokens: 'Tokens',
|
|
cache: 'Cache',
|
|
cacheRead: 'Leitura de cache',
|
|
cacheWrite: 'Escrita de cache',
|
|
sessions: 'Sessoes',
|
|
cost: 'Custo',
|
|
noData: 'Sem dados de uso',
|
|
},
|
|
|
|
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.',
|
|
},
|
|
|
|
// Registro de alteracoes
|
|
changelog: {
|
|
new_0_6_4_1: 'CI foi reforçado com comportamento npm install fixo e cobertura Docker smoke para PRs',
|
|
new_0_6_4_2: 'O chat agora usa paginação virtualizada para rolar e carregar conversas longas com mais estabilidade',
|
|
new_0_6_4_3: 'A publicação de imagens Docker agora roda apenas em releases, não em checks comuns de PR',
|
|
new_0_6_4_4: 'Version Preview está disponível para super admins, com seleção main/tag, checkout de preview, instalação de dependências, start/stop e logs',
|
|
new_0_6_4_5: 'Instâncias preview isolam portas frontend/backend, Web UI home e agent bridge endpoint, com patches runtime para tags antigos cobrindo portas, WebSocket, base URL e navegação preview aninhada',
|
|
new_0_6_4_6: 'Tabelas legacy session_usage sem created_at agora migram com segurança usando um valor padrão',
|
|
new_0_6_4_7: 'Endpoints bridge profile worker agora são separados por broker endpoint, evitando que produção e preview com o mesmo Profile disputem worker sockets e causem erros unknown run',
|
|
new_0_6_5_1: 'Coding Agents adiciona fluxo completo de inicialização para Claude Code e Codex, com configuração global, workspaces isolados por profile/provider e terminal integrado ou nativo',
|
|
new_0_6_5_2: 'Inicialização Codex suporta OpenAI Chat Completions, OpenAI Responses e Anthropic Messages, com proxy local para adaptar diferentes provedores',
|
|
new_0_6_5_3: 'Coding Agents fica mais estável no Windows com detecção de shims .cmd/.bat, correções de terminal e Claude Code custom model sem validação local',
|
|
new_0_6_5_4: 'Listas de mensagens, paginação History, autenticação TTS, menções de agentes no chat em grupo, supressão de update check e bridge worker transport melhoram a estabilidade',
|
|
new_0_6_3_1: 'O status do spinner do Bridge nao e mais salvo como reasoning do modelo, evitando que texto thinking decorativo contamine o contexto futuro',
|
|
new_0_6_3_2: 'History agora inclui controles para importar sessoes Hermes CLI para o historico local da Web UI com normalizacao de mensagens mais segura',
|
|
new_0_6_3_3: 'A configuracao de Provider suporta base URLs integradas editaveis, LM Studio como provider integrado e descoberta ao vivo via LM Studio /models',
|
|
new_0_6_3_4: 'Requests OpenRouter enviados pelo bridge da Web UI agora incluem headers de atribuicao do app Hermes Web UI',
|
|
new_0_6_3_5: 'O endpoint publico de auth status nao expoe mais o primeiro nome de usuario para requests nao autenticados',
|
|
new_0_6_3_6: 'As configuracoes do DingTalk agora incluem um campo AI Card Template ID persistido como DINGTALK_CARD_TEMPLATE_ID',
|
|
new_0_6_3_7: 'A saida JSON do socket Bridge sanitiza caracteres Unicode surrogate isolados para evitar falhas SSE durante o chat',
|
|
new_0_6_2_1: 'Web Bridge agora suporta comandos /plan com início correto do run e estado visível do comando',
|
|
new_0_6_2_2: 'O menu de comandos no input do chat agora inclui /goal e /subgoal, com ações de status, pausar, retomar, concluir e limpar',
|
|
new_0_6_2_3: 'Workflows de Goal e subgoal agora integram sessões de chat, incluindo continuações de objetivo e atualizações de status',
|
|
new_0_6_2_4: 'Opções de canal destino para jobs foram restauradas para que jobs agendados escolham o destino correto',
|
|
new_0_6_2_5: 'O uso de tokens de contexto agora retoma com precisão após reconexões usando cálculos conscientes de snapshot',
|
|
new_0_6_2_6: 'A compressão de checkpoints de contexto está mais confiável quando o resumo do Codex é lento: Web UI espera 5 minutos e o Python bridge broker não corta requests de worker após 2 minutos',
|
|
new_0_6_2_7: 'A promoção da fila do chat foi corrigida para que mensagens queued não entrem cedo demais na lista, inclusive em janelas sincronizadas',
|
|
new_0_6_2_8: 'Prompts Clarify não enviam mais respostas de texto livre com Enter, e prompts respondidos não reabrem após trocar de sessão',
|
|
new_0_6_2_9: 'Refresh do ambiente do terminal Bridge e limpeza de stale pid foram melhor delimitados, reduzindo status runtime obsoleto na UI',
|
|
new_0_6_2_10: 'O comprimento de contexto padrão agora segue o padrão Hermes de 256.000 tokens',
|
|
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',
|
|
new_0_6_0_1: 'A gestão por conta e por Profile agora protege de forma consistente sessões, modelos, uso, Kanban, jobs, uploads, mídia e APIs Hermes relacionadas',
|
|
new_0_6_0_2: 'Skills de mídia integrados usam o token de servidor gerado apenas para endpoints de mídia e resolvem credenciais fun-codex/xAI a partir do Profile solicitado',
|
|
new_0_6_0_3: 'Chat individual e em grupo injetam o Hermes Profile atual nas instruções do run para que Skills enviem X-Hermes-Profile',
|
|
new_0_6_0_4: 'O progresso de subagents de delegate_task aparece na UI do chat com estados de início, ferramenta, progresso e conclusão',
|
|
new_0_6_0_5: 'Parar ou abortar um run limpa eventos temporários para que estados abort antigos não passem para o próximo chat',
|
|
new_0_6_0_6: 'Atualiza documentação e site para gestão de contas, credenciais padrão, gestão conta/Profile, uploads/downloads e Skills de mídia',
|
|
new_0_6_0_7: 'Adiciona comandos CLI de manutenção para limpar bloqueios de IP de login e redefinir o login padrão admin / 123456',
|
|
new_0_6_0_8: 'A versão 0.6.0 é o limite entre a Web UI de usuário único e multiusuário. Se o modo multiusuário causar problemas, abra uma issue e volte para a versão 0.5.35 de usuário único se necessário',
|
|
new_0_6_1_1: 'As listas de sessões agora mostram por padrão todos os Profiles disponíveis para a conta; só filtram por Profile quando selecionado explicitamente, e CLI start/stop/status não imprimem mais o aviso experimental do node:sqlite',
|
|
new_0_6_1_2: 'Respostas Clarify e de confirmação agora passam pelo socket de chat autenticado até a Hermes bridge, com testes da rota de resposta',
|
|
new_0_6_1_3: 'Entradas de navegação e linhas de sessões usam links nativos para abrir em nova aba, copiar link e preservar grupos laterais recolhidos',
|
|
new_0_6_1_4: 'Links de sessão não vazam mais o Profile da rota para o filtro normal da lista, e os rótulos de abrir em nova aba foram localizados',
|
|
new_0_6_1_5: 'Skills agora lê skills.external_dirs da configuração do Profile ativo, marca skills externas, preserva prioridade local e resolve arquivos externos',
|
|
new_0_6_1_6: 'O bloqueio de IP no login agora permite 10 falhas e a tela bloqueada mostra comandos para limpar bloqueios e redefinir o login padrão',
|
|
new_0_6_1_7: 'Desconexões de chat em mobile ou segundo plano são tratadas como transitórias, e a reconexão retoma o estado do run pelo servidor',
|
|
new_0_6_1_8: 'O flush de marcadores de ferramentas da Bridge agora persiste prefixos parciais nos limites de ferramenta e de run',
|
|
new_0_6_1_9: 'Ações de History sensíveis a Profile excluem sessões com alvos qualificados por Profile e atualizam History quando o Profile global muda',
|
|
new_0_6_1_10: 'O bypass legado AUTH_DISABLED foi removido para o modelo multiusuário, enquanto AUTH_TOKEN continua suportado',
|
|
},
|
|
|
|
// 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',
|
|
fileTree: 'Árvore de arquivos',
|
|
},
|
|
|
|
// 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',
|
|
agentAddFailedCount: '{count} agente(s) nao foram adicionados: {details}',
|
|
noAgents: 'Nenhum agente nesta sala',
|
|
members: 'Membros',
|
|
roomCreated: 'Sala criada',
|
|
roomDeleted: 'Sala excluída',
|
|
roomCloned: 'Sala clonada',
|
|
cloneRoom: 'Clonar sala',
|
|
copyRoomLink: 'Copiar link da sala',
|
|
deleteRoomConfirm: 'Excluir esta sala?',
|
|
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',
|
|
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',
|
|
},
|
|
|
|
// 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',
|
|
contentDisplay: 'Exibicao de conteudo',
|
|
download: 'Baixar',
|
|
downloadFile: 'Baixar arquivo',
|
|
},
|
|
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',
|
|
},
|
|
},
|
|
}
|