61b41512d4
* increase login ip lock threshold * show login lock recovery commands
1364 lines
60 KiB
TypeScript
1364 lines
60 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',
|
||
},
|
||
|
||
// Sidebar
|
||
sidebar: {
|
||
chat: 'Chat',
|
||
search: 'Pesquisar',
|
||
apiRelay: 'API Relay',
|
||
history: 'Historico',
|
||
jobs: 'Tarefas agendadas',
|
||
models: 'Modelos',
|
||
profiles: 'Perfis',
|
||
plugins: 'Plugins',
|
||
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',
|
||
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: 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',
|
||
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',
|
||
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',
|
||
},
|
||
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',
|
||
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: 200000 (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',
|
||
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',
|
||
},
|
||
},
|
||
|
||
// 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',
|
||
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_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',
|
||
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',
|
||
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',
|
||
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',
|
||
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',
|
||
},
|
||
|
||
// 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',
|
||
},
|
||
},
|
||
}
|