2026-04-17 09:09:50 +08:00
|
|
|
export default {
|
|
|
|
|
// Login
|
|
|
|
|
login: {
|
|
|
|
|
title: 'Hermes Web UI',
|
|
|
|
|
description: 'Introduce tu token de acceso para continuar. Encuentralo en los registros de inicio del servidor.',
|
|
|
|
|
placeholder: 'Token de acceso',
|
|
|
|
|
submit: 'Iniciar sesion',
|
|
|
|
|
tokenRequired: 'Por favor, introduce tu token de acceso',
|
|
|
|
|
invalidToken: 'Token invalido',
|
|
|
|
|
connectionFailed: 'No se puede conectar al servidor',
|
2026-04-22 20:27:33 +08:00
|
|
|
passwordLogin: 'Contrasena',
|
|
|
|
|
tokenLogin: 'Token',
|
|
|
|
|
usernamePlaceholder: 'Nombre de usuario',
|
|
|
|
|
passwordPlaceholder: 'Contrasena',
|
|
|
|
|
credentialsRequired: 'Por favor, introduzca nombre de usuario y contrasena',
|
|
|
|
|
invalidCredentials: 'Nombre de usuario o contrasena incorrectos',
|
|
|
|
|
passwordMismatch: 'Las contrasenas no coinciden',
|
|
|
|
|
passwordTooShort: 'La contrasena debe tener al menos 6 caracteres',
|
|
|
|
|
setupSuccess: 'Login con contrasena configurado correctamente',
|
|
|
|
|
passwordChanged: 'Contrasena cambiada correctamente',
|
|
|
|
|
passwordRemoved: 'Login con contrasena eliminado',
|
|
|
|
|
setupPassword: 'Configurar login con contrasena',
|
|
|
|
|
changePassword: 'Cambiar contrasena',
|
|
|
|
|
changeUsername: 'Cambiar nombre de usuario',
|
|
|
|
|
removePasswordLogin: 'Eliminar',
|
|
|
|
|
username: 'Nombre de usuario',
|
|
|
|
|
currentPassword: 'Contrasena actual',
|
|
|
|
|
newPassword: 'Nueva contrasena',
|
|
|
|
|
confirmPassword: 'Confirmar contrasena',
|
|
|
|
|
newUsername: 'Nuevo nombre de usuario',
|
|
|
|
|
usernameChanged: 'Nombre de usuario cambiado correctamente',
|
|
|
|
|
usernameTooShort: 'El nombre de usuario debe tener al menos 2 caracteres',
|
|
|
|
|
setupDescription: 'Configure un nombre de usuario y contrasena para un inicio de sesion rapido. El token de acceso seguira funcionando.',
|
|
|
|
|
removeConfirm: 'Esta seguro de eliminar el login con contrasena? Necesitara usar el token de acceso.',
|
|
|
|
|
passwordLoginNotConfigured: 'Login con contrasena no configurado',
|
|
|
|
|
passwordLoginConfigured: 'Login con contrasena habilitado ({username})',
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Common
|
|
|
|
|
common: {
|
|
|
|
|
loading: 'Cargando...',
|
|
|
|
|
cancel: 'Cancelar',
|
2026-04-17 23:11:57 +08:00
|
|
|
retry: 'Reintentar',
|
2026-04-17 09:09:50 +08:00
|
|
|
delete: 'Eliminar',
|
|
|
|
|
edit: 'Editar',
|
|
|
|
|
save: 'Guardar',
|
|
|
|
|
saved: 'Guardado',
|
|
|
|
|
update: 'Actualizar',
|
|
|
|
|
create: 'Crear',
|
|
|
|
|
saveFailed: 'Error al guardar',
|
|
|
|
|
ok: 'OK',
|
|
|
|
|
copied: 'Copiado',
|
|
|
|
|
copy: 'Copiar',
|
|
|
|
|
noData: 'Sin datos',
|
|
|
|
|
fetch: 'Obtener',
|
|
|
|
|
add: 'Anadir',
|
|
|
|
|
enable: 'Activar',
|
|
|
|
|
disable: 'Desactivar',
|
|
|
|
|
configured: 'Configurado',
|
|
|
|
|
notConfigured: 'No configurado',
|
|
|
|
|
confirm: 'Confirmar',
|
|
|
|
|
expand: 'Expandir',
|
|
|
|
|
collapse: 'Contraer',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Sidebar
|
|
|
|
|
sidebar: {
|
|
|
|
|
chat: 'Chat',
|
|
|
|
|
jobs: 'Tareas programadas',
|
|
|
|
|
models: 'Modelos',
|
|
|
|
|
profiles: 'Perfiles',
|
|
|
|
|
skills: 'Habilidades',
|
|
|
|
|
memory: 'Memoria',
|
|
|
|
|
logs: 'Registros',
|
|
|
|
|
usage: 'Uso',
|
|
|
|
|
channels: 'Canales',
|
|
|
|
|
terminal: 'Terminal',
|
2026-04-23 14:10:14 +08:00
|
|
|
files: 'Archivos',
|
2026-04-17 09:09:50 +08:00
|
|
|
settings: 'Configuracion',
|
|
|
|
|
connected: 'Conectado',
|
|
|
|
|
disconnected: 'Desconectado',
|
|
|
|
|
updateTip: 'Ejecuta "hermes-web-ui update" en la terminal para actualizar',
|
|
|
|
|
updateVersion: 'Actualizar a v{version}',
|
|
|
|
|
updating: 'Actualizando...',
|
|
|
|
|
updateSuccess: 'Actualizacion completa, por favor reinicia el servidor',
|
|
|
|
|
updateFailed: 'Error al actualizar',
|
2026-04-22 20:27:33 +08:00
|
|
|
logout: 'Cerrar sesion',
|
2026-04-24 02:31:42 +02:00
|
|
|
nodeVersionWarning: 'Se detecto Node.js v{version}. Actualiza a la version 23 o posterior.',
|
2026-04-22 20:27:33 +08:00
|
|
|
changelog: 'Registro de cambios',
|
|
|
|
|
noChangelog: 'No hay registro de cambios',
|
2026-04-17 09:09:50 +08:00
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Chat
|
|
|
|
|
chat: {
|
2026-04-22 16:14:50 +08:00
|
|
|
contextRemaining: 'restante',
|
2026-04-17 09:09:50 +08:00
|
|
|
emptyState: 'Inicia una conversacion con Hermes Agent',
|
|
|
|
|
inputPlaceholder: 'Escribe un mensaje... (Enter para enviar, Shift+Enter para nueva linea)',
|
|
|
|
|
attachFiles: 'Adjuntar archivos',
|
|
|
|
|
stop: 'Detener',
|
|
|
|
|
send: 'Enviar',
|
|
|
|
|
contextUsed: 'Contexto utilizado:',
|
|
|
|
|
sessions: 'Sesiones',
|
|
|
|
|
noSessions: 'Sin sesiones',
|
|
|
|
|
newChat: 'Nuevo chat',
|
|
|
|
|
deleteSession: 'Eliminar esta sesion?',
|
|
|
|
|
sessionDeleted: 'Sesion eliminada',
|
|
|
|
|
rename: 'Renombrar',
|
2026-04-22 02:09:58 +02:00
|
|
|
pin: 'Fijar',
|
|
|
|
|
unpin: 'Desfijar',
|
|
|
|
|
pinned: 'Fijados',
|
|
|
|
|
chatMode: 'Chat',
|
|
|
|
|
liveMode: 'En vivo',
|
|
|
|
|
liveSessions: 'Sesiones en vivo',
|
|
|
|
|
recentBadge: 'Reciente',
|
|
|
|
|
linkedSessions: '{count} vinculadas',
|
|
|
|
|
noVisibleMessages: 'No hay mensajes visibles para humanos.',
|
|
|
|
|
monitorRoleUser: 'Usuario',
|
|
|
|
|
monitorRoleAssistant: 'Asistente',
|
|
|
|
|
copySessionId: 'Copiar ID de sesión',
|
2026-04-17 09:09:50 +08:00
|
|
|
renamed: 'Renombrada',
|
|
|
|
|
renameFailed: 'Error al renombrar',
|
|
|
|
|
renameSession: 'Renombrar sesion',
|
|
|
|
|
enterNewTitle: 'Introduce un nuevo titulo',
|
|
|
|
|
other: 'Otro',
|
|
|
|
|
runFailed: 'Error en la ejecucion',
|
|
|
|
|
error: 'Error',
|
|
|
|
|
tool: 'Herramienta',
|
|
|
|
|
arguments: 'Argumentos',
|
|
|
|
|
result: 'Resultado',
|
|
|
|
|
truncated: '... (truncado)',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Jobs
|
|
|
|
|
jobs: {
|
|
|
|
|
title: 'Tareas programadas',
|
|
|
|
|
createJob: 'Crear tarea',
|
|
|
|
|
editJob: 'Editar tarea',
|
|
|
|
|
noJobs: 'No hay tareas programadas aun. Crea una para comenzar.',
|
|
|
|
|
name: 'Nombre',
|
|
|
|
|
namePlaceholder: 'Nombre de la tarea',
|
|
|
|
|
schedule: 'Programacion (expresion Cron)',
|
|
|
|
|
schedulePlaceholder: 'ej. 0 9 * * *',
|
|
|
|
|
quickPresets: 'Presets rapidos',
|
|
|
|
|
selectPreset: 'Seleccionar un preset...',
|
|
|
|
|
presetEveryMinute: 'Cada minuto',
|
|
|
|
|
presetEvery5Min: 'Cada 5 minutos',
|
|
|
|
|
presetEveryHour: 'Cada hora',
|
|
|
|
|
presetEveryDay: 'Todos los dias a las 00:00',
|
|
|
|
|
presetEveryDay9: 'Todos los dias a las 09:00',
|
|
|
|
|
presetEveryMonday: 'Cada lunes a las 09:00',
|
|
|
|
|
presetEveryMonth: 'El dia 1 de cada mes a las 09:00',
|
|
|
|
|
prompt: 'Prompt',
|
|
|
|
|
promptPlaceholder: 'El prompt a ejecutar',
|
|
|
|
|
deliverTarget: 'Destino de entrega',
|
|
|
|
|
origin: 'Origen',
|
|
|
|
|
local: 'Local',
|
|
|
|
|
repeatCount: 'Repeticiones (opcional)',
|
|
|
|
|
repeatPlaceholder: 'Dejar vacio para infinito',
|
|
|
|
|
jobCreated: 'Tarea creada',
|
|
|
|
|
jobUpdated: 'Tarea actualizada',
|
|
|
|
|
nameRequired: 'El nombre es obligatorio',
|
|
|
|
|
scheduleRequired: 'La programacion es obligatoria',
|
|
|
|
|
loadFailed: 'Error al cargar la tarea',
|
|
|
|
|
jobPaused: 'Tarea en pausa',
|
|
|
|
|
jobResumed: 'Tarea reanudada',
|
|
|
|
|
jobTriggered: 'Tarea ejecutada',
|
|
|
|
|
jobDeleted: 'Tarea eliminada',
|
|
|
|
|
status: {
|
|
|
|
|
running: 'En ejecucion',
|
|
|
|
|
paused: 'En pausa',
|
|
|
|
|
disabled: 'Desactivada',
|
|
|
|
|
scheduled: 'Programada',
|
|
|
|
|
},
|
|
|
|
|
info: {
|
|
|
|
|
schedule: 'Programacion',
|
|
|
|
|
lastRun: 'Ultima ejecucion',
|
|
|
|
|
nextRun: 'Proxima ejecucion',
|
|
|
|
|
deliver: 'Entrega',
|
|
|
|
|
repeat: 'Repeticion',
|
|
|
|
|
},
|
|
|
|
|
action: {
|
|
|
|
|
pause: 'Pausar',
|
|
|
|
|
pauseJob: 'Pausar tarea',
|
|
|
|
|
resume: 'Reanudar',
|
|
|
|
|
resumeJob: 'Reanudar tarea',
|
|
|
|
|
runNow: 'Ejecutar ahora',
|
|
|
|
|
triggerImmediately: 'Ejecutar inmediatamente',
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Skills
|
|
|
|
|
skills: {
|
|
|
|
|
title: 'Habilidades',
|
|
|
|
|
searchPlaceholder: 'Buscar habilidades...',
|
|
|
|
|
noMatch: 'Ninguna habilidad coincide con tu busqueda',
|
|
|
|
|
noSkills: 'No se encontraron habilidades',
|
|
|
|
|
backTo: 'Volver a',
|
|
|
|
|
attachedFiles: 'Archivos adjuntos',
|
|
|
|
|
loadFailed: 'Error al cargar la habilidad',
|
|
|
|
|
fileLoadFailed: 'Error al cargar el archivo',
|
|
|
|
|
toggleFailed: 'Error al activar/desactivar la habilidad',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Memory
|
|
|
|
|
memory: {
|
|
|
|
|
title: 'Memoria',
|
|
|
|
|
refresh: 'Actualizar',
|
|
|
|
|
loadFailed: 'Error al cargar la memoria',
|
|
|
|
|
myNotes: 'Mis notas',
|
|
|
|
|
noNotes: 'Sin notas aun.',
|
|
|
|
|
notesPlaceholder: 'Escribe tus notas...',
|
|
|
|
|
userProfile: 'Perfil de usuario',
|
|
|
|
|
noProfile: 'Sin perfil aun.',
|
|
|
|
|
profilePlaceholder: 'Escribe tu perfil...',
|
|
|
|
|
soul: 'Alma',
|
|
|
|
|
noSoul: 'Sin configuracion de alma aun.',
|
|
|
|
|
soulPlaceholder: 'Escribe la configuracion del alma...',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Models
|
|
|
|
|
models: {
|
|
|
|
|
title: 'Modelos',
|
|
|
|
|
addProvider: 'Anadir proveedor',
|
|
|
|
|
providerType: 'Tipo de proveedor',
|
|
|
|
|
preset: 'Preset',
|
|
|
|
|
custom: 'Personalizado',
|
|
|
|
|
selectProvider: 'Seleccionar proveedor',
|
|
|
|
|
chooseProvider: 'Elige un proveedor...',
|
|
|
|
|
name: 'Nombre',
|
|
|
|
|
autoGeneratedName: 'Generado automaticamente desde la URL base',
|
|
|
|
|
baseUrl: 'URL base',
|
|
|
|
|
baseUrlPlaceholder: 'ej. https://api.example.com/v1',
|
|
|
|
|
apiKey: 'Clave API',
|
|
|
|
|
apiKeyPlaceholder: 'sk-...',
|
|
|
|
|
defaultModel: 'Modelo predeterminado',
|
2026-04-17 22:05:06 +08:00
|
|
|
selectOrInput: 'Seleccionar o ingresar un modelo...',
|
2026-04-17 09:09:50 +08:00
|
|
|
selectModel: 'Seleccionar un modelo...',
|
|
|
|
|
providerAdded: 'Proveedor anadido',
|
|
|
|
|
providerDeleted: 'Proveedor eliminado',
|
|
|
|
|
deleteProvider: 'Eliminar proveedor',
|
|
|
|
|
deleteConfirm: 'Estas seguro de que quieres eliminar "{name}"?',
|
2026-04-17 23:11:57 +08:00
|
|
|
codexLoginTitle: 'Inicio de sesión de OpenAI Codex',
|
|
|
|
|
codexWaiting: 'Ingrese este código en la página de autorización para iniciar sesión:',
|
|
|
|
|
codexCopyCode: 'Código copiado',
|
|
|
|
|
codexOpenLink: 'Abrir página de autorización',
|
|
|
|
|
codexApproved: 'Inicio de sesión exitoso',
|
|
|
|
|
codexExpired: 'La autorización ha expirado. Por favor, inténtelo de nuevo.',
|
2026-04-23 08:39:19 +08:00
|
|
|
nousLoginTitle: 'Inicio de sesión de Nous Portal',
|
|
|
|
|
nousWaiting: 'Ingrese este código en la página de autorización:',
|
|
|
|
|
nousCopyCode: 'Código copiado',
|
|
|
|
|
nousOpenLink: 'Abrir página de autorización',
|
|
|
|
|
nousApproved: 'Inicio de sesión exitoso',
|
|
|
|
|
nousDenied: 'Autorización denegada',
|
|
|
|
|
nousExpired: 'Autorización expirada',
|
2026-04-24 08:49:45 +08:00
|
|
|
customBadge: 'PERSONALIZADO',
|
|
|
|
|
customModelPlaceholder: 'Nombre del modelo personalizado',
|
|
|
|
|
customModelHint: 'Enter para cargar',
|
2026-04-17 09:09:50 +08:00
|
|
|
noProviders: 'No se encontraron proveedores. Anade un proveedor personalizado para comenzar.',
|
|
|
|
|
builtIn: 'Integrado',
|
|
|
|
|
customType: 'Personalizado',
|
|
|
|
|
provider: 'Proveedor',
|
|
|
|
|
local: 'Local ({host})',
|
|
|
|
|
selectProviderRequired: 'Por favor, selecciona un proveedor',
|
|
|
|
|
baseUrlRequired: 'La URL base es obligatoria',
|
|
|
|
|
apiKeyRequired: 'La clave API es obligatoria',
|
|
|
|
|
modelRequired: 'El modelo predeterminado es obligatorio',
|
|
|
|
|
enterBaseUrl: 'Por favor, introduce primero la URL base',
|
|
|
|
|
unexpectedFormat: 'Formato de respuesta inesperado',
|
|
|
|
|
foundModels: '{count} modelos encontrados',
|
|
|
|
|
fetchFailed: 'Error al obtener los modelos',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Profiles
|
|
|
|
|
profiles: {
|
|
|
|
|
title: 'Perfiles',
|
|
|
|
|
create: 'Crear perfil',
|
|
|
|
|
import: 'Importar',
|
|
|
|
|
export: 'Exportar',
|
|
|
|
|
rename: 'Renombrar',
|
|
|
|
|
delete: 'Eliminar',
|
|
|
|
|
switchTo: 'Cambiar a',
|
|
|
|
|
switchConfirm: 'Cambiar al perfil "{name}" reiniciara la pasarela. Continuar?',
|
|
|
|
|
switchSuccess: 'Se ha cambiado al perfil "{name}"',
|
|
|
|
|
switchFailed: 'Error al cambiar de perfil. Es posible que la pasarela necesite un reinicio manual.',
|
|
|
|
|
createSuccess: 'Perfil "{name}" creado',
|
|
|
|
|
createFailed: 'Error al crear el perfil',
|
|
|
|
|
renameSuccess: 'Perfil renombrado',
|
|
|
|
|
renameFailed: 'Error al renombrar el perfil',
|
|
|
|
|
deleteConfirm: 'Estas seguro de que quieres eliminar el perfil "{name}"?',
|
|
|
|
|
deleteSuccess: 'Perfil eliminado',
|
|
|
|
|
deleteFailed: 'Error al eliminar el perfil',
|
|
|
|
|
exportSuccess: 'Perfil exportado',
|
|
|
|
|
exportFailed: 'Error al exportar el perfil',
|
|
|
|
|
importSuccess: 'Perfil importado',
|
|
|
|
|
importFailed: 'Error al importar el perfil',
|
|
|
|
|
importSelectFile: 'Seleccionar archivo de archivo',
|
|
|
|
|
importInvalidFile: 'Por favor, selecciona un archivo valido (.tar.gz, .tgz, .gz, .zip)',
|
|
|
|
|
name: 'Nombre del perfil',
|
|
|
|
|
namePlaceholder: 'Solo letras, numeros y guiones',
|
|
|
|
|
newName: 'Nuevo nombre',
|
|
|
|
|
newNamePlaceholder: 'Introduce un nuevo nombre',
|
|
|
|
|
cloneFromCurrent: 'Clonar desde el perfil actual',
|
|
|
|
|
archivePath: 'Ruta del archivo',
|
|
|
|
|
archivePathPlaceholder: 'Ruta del servidor al archivo de archivo',
|
|
|
|
|
importName: 'Nombre del perfil (opcional)',
|
|
|
|
|
importNamePlaceholder: 'Dejar vacio para usar el nombre del archivo',
|
|
|
|
|
active: 'Activo',
|
|
|
|
|
model: 'Modelo',
|
|
|
|
|
gateway: 'Pasarela',
|
|
|
|
|
alias: 'Alias',
|
|
|
|
|
provider: 'Proveedor',
|
|
|
|
|
path: 'Ruta',
|
|
|
|
|
skills: 'Habilidades',
|
|
|
|
|
hasEnv: 'Tiene .env',
|
|
|
|
|
hasSoulMd: 'Tiene soul.md',
|
|
|
|
|
noProfiles: 'No se encontraron perfiles. Crea uno para comenzar.',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Logs
|
|
|
|
|
logs: {
|
|
|
|
|
title: 'Registros',
|
|
|
|
|
all: 'Todos',
|
|
|
|
|
searchPlaceholder: 'Buscar...',
|
|
|
|
|
refresh: 'Actualizar',
|
|
|
|
|
noEntries: 'Sin entradas de registro',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Settings
|
|
|
|
|
settings: {
|
|
|
|
|
title: 'Configuracion',
|
|
|
|
|
saved: 'Guardado',
|
|
|
|
|
saveFailed: 'Error al guardar',
|
|
|
|
|
tabs: {
|
|
|
|
|
display: 'Pantalla',
|
2026-04-22 20:27:33 +08:00
|
|
|
account: 'Cuenta',
|
2026-04-17 09:09:50 +08:00
|
|
|
agent: 'Agente',
|
|
|
|
|
memory: 'Memoria',
|
|
|
|
|
session: 'Sesion',
|
|
|
|
|
privacy: 'Privacidad',
|
|
|
|
|
apiServer: 'Servidor API',
|
|
|
|
|
},
|
|
|
|
|
display: {
|
|
|
|
|
streaming: 'Respuestas en streaming',
|
|
|
|
|
streamingHint: 'Mostrar respuestas de la IA en tiempo real',
|
|
|
|
|
compact: 'Modo compacto',
|
|
|
|
|
compactHint: 'Reducir el espaciado entre mensajes',
|
|
|
|
|
showReasoning: 'Mostrar razonamiento',
|
|
|
|
|
showReasoningHint: 'Mostrar el proceso de pensamiento del modelo',
|
|
|
|
|
showCost: 'Mostrar costo',
|
|
|
|
|
showCostHint: 'Mostrar uso de tokens en las respuestas',
|
|
|
|
|
inlineDiffs: 'Diffs en linea',
|
|
|
|
|
inlineDiffsHint: 'Mostrar cambios de codigo en linea',
|
|
|
|
|
bellOnComplete: 'Sonido de finalizacion',
|
|
|
|
|
bellOnCompleteHint: 'Reproducir un sonido cuando la IA termina',
|
|
|
|
|
busyInputMode: 'Modo de entrada ocupada',
|
|
|
|
|
busyInputModeHint: 'Permitir entrada mientras la IA procesa',
|
|
|
|
|
theme: 'Tema',
|
|
|
|
|
themeHint: 'Elige claro, oscuro o seguir la preferencia del sistema',
|
|
|
|
|
themeLight: 'Claro',
|
|
|
|
|
themeDark: 'Oscuro',
|
|
|
|
|
themeSystem: 'Sistema',
|
|
|
|
|
},
|
|
|
|
|
agent: {
|
|
|
|
|
maxTurns: 'Turnos maximos',
|
|
|
|
|
maxTurnsHint: 'Rondas maximas de interaccion por conversacion',
|
|
|
|
|
gatewayTimeout: 'Tiempo de espera de la pasarela',
|
|
|
|
|
gatewayTimeoutHint: 'Tiempo de espera de la peticion en segundos',
|
|
|
|
|
restartDrainTimeout: 'Tiempo de drenado al reiniciar',
|
|
|
|
|
restartDrainTimeoutHint: 'Tiempo de drenado antes de reiniciar en segundos',
|
|
|
|
|
toolEnforcement: 'Aplicacion de herramientas',
|
|
|
|
|
toolEnforcementHint: 'Controlar el modo de ejecucion de llamadas a herramientas',
|
|
|
|
|
auto: 'Automatico',
|
|
|
|
|
always: 'Siempre',
|
|
|
|
|
never: 'Nunca',
|
|
|
|
|
},
|
|
|
|
|
memory: {
|
|
|
|
|
enabled: 'Activar memoria',
|
|
|
|
|
enabledHint: 'Permitir que la IA recuerde el contexto de la conversacion',
|
|
|
|
|
userProfile: 'Perfil de usuario',
|
|
|
|
|
userProfileHint: 'Permitir que la IA recuerde las preferencias del usuario',
|
|
|
|
|
charLimit: 'Limite de caracteres de memoria',
|
|
|
|
|
charLimitHint: 'Maximo de caracteres para MEMORY.md',
|
|
|
|
|
userCharLimit: 'Limite de caracteres del perfil de usuario',
|
|
|
|
|
userCharLimitHint: 'Maximo de caracteres para USER.md',
|
|
|
|
|
},
|
|
|
|
|
session: {
|
|
|
|
|
mode: 'Modo de reinicio',
|
|
|
|
|
modeHint: 'Condicion de activacion del reinicio de sesion',
|
|
|
|
|
modeBoth: 'Inactividad + Programado',
|
|
|
|
|
modeIdle: 'Solo inactividad',
|
|
|
|
|
modeHourly: 'Solo programado',
|
|
|
|
|
idleMinutes: 'Tiempo de inactividad',
|
|
|
|
|
idleMinutesHint: 'Tiempo de espera antes del reinicio automatico (minutos)',
|
|
|
|
|
atHour: 'Hora de reinicio programado',
|
2026-04-22 02:09:58 +02:00
|
|
|
humanOnly: 'Mostrar solo sesiones humanas',
|
|
|
|
|
humanOnlyHint: 'Oculta por defecto el ruido de subagentes y del monitor de sesiones',
|
|
|
|
|
liveMonitorHumanOnly: 'Monitor en vivo: mostrar solo sesiones humanas',
|
|
|
|
|
liveMonitorHumanOnlyHint: 'Oculta por defecto el ruido de subagentes y del monitor de sesiones en el monitor en vivo',
|
2026-04-17 09:09:50 +08:00
|
|
|
atHourHint: 'Reiniciar sesion a esta hora todos los dias',
|
|
|
|
|
},
|
|
|
|
|
privacy: {
|
|
|
|
|
redactPii: 'Ocultar informacion personal',
|
|
|
|
|
redactPiiHint: 'Detectar y ocultar automaticamente informacion sensible (contrasenas, claves, etc.)',
|
|
|
|
|
},
|
|
|
|
|
apiServer: {
|
|
|
|
|
enable: 'Activar',
|
|
|
|
|
enableHint: 'Activar servidor API',
|
|
|
|
|
host: 'Host',
|
|
|
|
|
hostHint: 'Direccion de escucha',
|
|
|
|
|
port: 'Puerto',
|
|
|
|
|
portHint: 'Puerto de escucha',
|
|
|
|
|
key: 'Clave',
|
|
|
|
|
keyHint: 'Clave de acceso API',
|
|
|
|
|
cors: 'Origenes CORS',
|
|
|
|
|
corsHint: 'Fuentes cross-origin permitidas',
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Platform channel settings
|
|
|
|
|
platform: {
|
|
|
|
|
requireMention: "Requerir mencion {'@'}",
|
|
|
|
|
requireMentionGroup: "Requerir mencion {'@'} en grupos para responder",
|
|
|
|
|
requireMentionChannel: "Requerir mencion {'@'} en canales para responder",
|
|
|
|
|
requireMentionRoom: "Requerir mencion {'@'} en salas para responder",
|
|
|
|
|
reactions: 'Reacciones',
|
|
|
|
|
reactionsHint: 'Reaccionar a mensajes con emoji',
|
|
|
|
|
freeResponseChats: 'Chats de respuesta libre',
|
|
|
|
|
freeResponseChatsHint: "IDs de chats que responden sin mencion {'@'} (separados por comas)",
|
|
|
|
|
freeResponseChannels: 'Canales de respuesta libre',
|
|
|
|
|
freeResponseChannelsHint: "IDs de canales que responden sin mencion {'@'} (separados por comas)",
|
|
|
|
|
freeResponseRooms: 'Salas de respuesta libre',
|
|
|
|
|
freeResponseRoomsHint: "IDs de salas que responden sin mencion {'@'} (separados por comas)",
|
|
|
|
|
mentionPatterns: 'Patrones de mencion personalizados',
|
|
|
|
|
mentionPatternsHint: 'Patrones de activacion adicionales',
|
|
|
|
|
autoThread: 'Hilo automatico',
|
|
|
|
|
autoThreadHint: "Crear automaticamente hilos de respuesta despues de mencion {'@'}",
|
|
|
|
|
autoThreadHintRoom: 'Crear automaticamente hilos de respuesta en salas',
|
|
|
|
|
dmMentionThreads: 'Hilos de mencion en MD',
|
|
|
|
|
dmMentionThreadsHint: 'Usar hilos de respuesta para menciones en mensajes directos',
|
|
|
|
|
allowBots: 'Permitir mensajes de bots',
|
|
|
|
|
allowBotsHint: 'Responder a mensajes de otros bots',
|
|
|
|
|
allowedChannels: 'Canales permitidos',
|
|
|
|
|
allowedChannelsHint: 'Lista blanca de IDs de canales (separados por comas)',
|
|
|
|
|
ignoredChannels: 'Canales ignorados',
|
|
|
|
|
ignoredChannelsHint: 'Canales donde el bot nunca responde (separados por comas)',
|
|
|
|
|
noThreadChannels: 'Canales sin hilo',
|
|
|
|
|
noThreadChannelsHint: 'Canales donde el bot responde sin hilos (separados por comas)',
|
|
|
|
|
botToken: 'Token del bot',
|
|
|
|
|
botTokenHint: 'Token del bot del portal de desarrolladores',
|
|
|
|
|
accessToken: 'Token de acceso',
|
|
|
|
|
accessTokenHint: 'Token de acceso de Matrix',
|
|
|
|
|
homeserver: 'URL del homeserver',
|
|
|
|
|
homeserverHint: 'URL del homeserver de Matrix',
|
|
|
|
|
appId: 'ID de aplicacion',
|
|
|
|
|
appIdHint: 'ID de aplicacion de Feishu',
|
|
|
|
|
appSecret: 'Secreto de aplicacion',
|
|
|
|
|
appSecretHint: 'Secreto de aplicacion de Feishu',
|
|
|
|
|
clientId: 'ID de cliente',
|
|
|
|
|
clientIdHint: 'ID de cliente de DingTalk',
|
|
|
|
|
clientSecret: 'Secreto de cliente',
|
|
|
|
|
clientSecretHint: 'Secreto de cliente de DingTalk',
|
|
|
|
|
botId: 'ID del bot',
|
|
|
|
|
botIdHint: 'ID del bot de WeCom',
|
|
|
|
|
wecomSecretHint: 'Secreto del bot de WeCom',
|
|
|
|
|
waEnabled: 'Activar WhatsApp',
|
|
|
|
|
waEnabledHint: 'Activar WhatsApp mediante emparejamiento por codigo QR',
|
|
|
|
|
weixinToken: 'Token de Weixin',
|
|
|
|
|
weixinTokenHint: 'Desde el inicio de sesion QR de la CLI de weixin (hermes weixin)',
|
|
|
|
|
accountId: 'ID de cuenta',
|
|
|
|
|
accountIdHint: 'ID de cuenta de Weixin',
|
|
|
|
|
qrLogin: 'Inicio de sesion QR',
|
|
|
|
|
qrRelogin: 'Volver a iniciar sesion',
|
|
|
|
|
qrFetching: 'Obteniendo codigo QR...',
|
|
|
|
|
qrScanHint: 'Escanea con WeChat para iniciar sesion',
|
|
|
|
|
qrScanedHint: 'Escaneado, por favor confirma en el telefono...',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Language
|
|
|
|
|
language: {
|
|
|
|
|
label: 'Idioma',
|
|
|
|
|
zh: '中文',
|
|
|
|
|
en: 'English',
|
|
|
|
|
es: 'Espanol',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Terminal
|
|
|
|
|
terminal: {
|
|
|
|
|
sessions: 'Sesiones',
|
|
|
|
|
newTab: 'Nueva terminal',
|
|
|
|
|
closeSession: 'Cerrar esta sesion?',
|
|
|
|
|
sessionExited: 'Finalizada',
|
|
|
|
|
processExited: 'Proceso finalizado con codigo {code}',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Usage
|
|
|
|
|
usage: {
|
|
|
|
|
title: 'Estadisticas de uso',
|
|
|
|
|
refresh: 'Actualizar',
|
|
|
|
|
totalTokens: 'Total de tokens',
|
|
|
|
|
inputTokens: 'Entrada',
|
|
|
|
|
outputTokens: 'Salida',
|
|
|
|
|
totalSessions: 'Total de sesiones',
|
|
|
|
|
avgPerDay: '~{n}/dia de promedio',
|
|
|
|
|
estimatedCost: 'Costo est.',
|
|
|
|
|
cacheHitRate: 'Tasa de acierto de cache',
|
|
|
|
|
modelBreakdown: 'Desglose por modelo',
|
|
|
|
|
dailyTrend: 'Uso diario (ultimos 30 dias)',
|
|
|
|
|
date: 'Fecha',
|
|
|
|
|
tokens: 'Tokens',
|
|
|
|
|
cache: 'Cache',
|
|
|
|
|
sessions: 'Sesiones',
|
|
|
|
|
cost: 'Costo',
|
|
|
|
|
noData: 'Sin datos de uso',
|
|
|
|
|
},
|
2026-04-22 20:27:33 +08:00
|
|
|
|
|
|
|
|
// Registro de cambios
|
|
|
|
|
changelog: {
|
|
|
|
|
new_0_4_3_1: 'Agregar inicio de sesion con usuario/contrasena junto a autenticacion por token',
|
|
|
|
|
new_0_4_3_2: 'Agregar configuracion de cuenta para gestionar credenciales',
|
|
|
|
|
new_0_4_3_3: 'Agregar boton de cerrar sesion en la barra lateral',
|
|
|
|
|
new_0_4_3_4: 'Agregar popup de registro de cambios al hacer clic en el numero de version',
|
|
|
|
|
new_0_4_2_1: 'Agregar seguimiento de uso de tokens y longitud de contexto dinamico',
|
|
|
|
|
new_0_4_2_2: 'Agregar modal de busqueda de sesiones',
|
|
|
|
|
new_0_4_2_3: 'Restaurar sistema de chat grupal con Socket.IO y SQLite',
|
|
|
|
|
new_0_4_2_4: 'Agregar sesiones fijas y monitor en vivo en la pagina de chat',
|
|
|
|
|
new_0_4_2_5: 'Corregir deteccion de proveedores integrados y coincidencia de modelos',
|
|
|
|
|
new_0_4_1_1: 'Corregir bypass de autenticacion y servicio de archivos SPA',
|
|
|
|
|
},
|
2026-04-23 14:10:14 +08:00
|
|
|
|
|
|
|
|
// Archivos
|
|
|
|
|
files: {
|
|
|
|
|
title: 'Archivos',
|
|
|
|
|
tree: 'Arbol de directorios',
|
|
|
|
|
list: 'Lista de archivos',
|
|
|
|
|
breadcrumbRoot: 'Inicio',
|
|
|
|
|
newFile: 'Nuevo archivo',
|
|
|
|
|
newFolder: 'Nueva carpeta',
|
|
|
|
|
upload: 'Subir',
|
|
|
|
|
refresh: 'Actualizar',
|
|
|
|
|
open: 'Abrir',
|
|
|
|
|
edit: 'Editar',
|
|
|
|
|
preview: 'Vista previa',
|
|
|
|
|
download: 'Descargar',
|
|
|
|
|
copyPath: 'Copiar ruta',
|
|
|
|
|
rename: 'Renombrar',
|
|
|
|
|
delete: 'Eliminar',
|
|
|
|
|
name: 'Nombre',
|
|
|
|
|
size: 'Tamano',
|
|
|
|
|
modified: 'Modificado',
|
|
|
|
|
actions: 'Acciones',
|
|
|
|
|
emptyDir: 'Directorio vacio',
|
|
|
|
|
loading: 'Cargando...',
|
|
|
|
|
confirmDelete: '?Seguro que quiere eliminar "{name}"?',
|
|
|
|
|
confirmDeleteDir: '?Seguro que quiere eliminar el directorio "{name}" y todo su contenido?',
|
|
|
|
|
deleteFailed: 'Error al eliminar',
|
|
|
|
|
deleted: 'Eliminado',
|
|
|
|
|
renameTo: 'Renombrar a',
|
|
|
|
|
newFileName: 'Nombre del archivo',
|
|
|
|
|
newFolderName: 'Nombre de la carpeta',
|
|
|
|
|
created: 'Creado',
|
|
|
|
|
createFailed: 'Error al crear',
|
|
|
|
|
renamed: 'Renombrado',
|
|
|
|
|
renameFailed: 'Error al renombrar',
|
|
|
|
|
uploadSuccess: '{count} archivo(s) subido(s)',
|
|
|
|
|
uploadFailed: 'Error al subir',
|
|
|
|
|
saveFailed: 'Error al guardar',
|
|
|
|
|
saved: 'Guardado',
|
|
|
|
|
unsavedChanges: 'Tiene cambios sin guardar. ?Descartar?',
|
|
|
|
|
pathCopied: 'Ruta copiada',
|
|
|
|
|
fileTooLarge: 'Archivo demasiado grande (max 10MB)',
|
|
|
|
|
permissionDenied: 'No se puede modificar un archivo protegido',
|
|
|
|
|
notFound: 'Archivo o directorio no encontrado',
|
|
|
|
|
backendError: 'Error en la operacion de archivo',
|
|
|
|
|
dragDropHint: 'Arrastra archivos aqui para subir',
|
|
|
|
|
closeEditor: 'Cerrar editor',
|
|
|
|
|
closePreview: 'Cerrar',
|
|
|
|
|
saveFile: 'Guardar',
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
// Descarga
|
|
|
|
|
download: {
|
|
|
|
|
downloading: 'Descargando...',
|
|
|
|
|
downloadFailed: 'Error en la descarga',
|
|
|
|
|
fileNotFound: 'Archivo no encontrado o eliminado',
|
|
|
|
|
fileTooLarge: 'Archivo demasiado grande (excede el limite)',
|
|
|
|
|
backendError: 'Error al leer el archivo, el entorno remoto puede no estar disponible',
|
|
|
|
|
backendTimeout: 'Tiempo de lectura del archivo agotado',
|
|
|
|
|
unsupportedBackend: 'El backend del terminal actual no admite la descarga de archivos',
|
|
|
|
|
invalidPath: 'Ruta de archivo invalida',
|
|
|
|
|
download: 'Descargar',
|
2026-04-24 02:31:42 +02:00
|
|
|
downloadFile: 'Descargar archivo',
|
2026-04-23 14:10:14 +08:00
|
|
|
},
|
2026-04-17 09:09:50 +08:00
|
|
|
}
|