2026-04-17 09:09:50 +08:00
export default {
// Login
login : {
title : 'Hermes Web UI' ,
2026-05-23 18:44:53 +08:00
description : 'Introduce tu nombre de usuario y contrasena para continuar.' ,
2026-04-17 09:09:50 +08:00
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' ,
2026-05-24 09:49:21 +08:00
defaultCredentialsHint : 'Nombre de usuario predeterminado: admin. Contrasena predeterminada: 123456.' ,
2026-04-22 20:27:33 +08:00
credentialsRequired : 'Por favor, introduzca nombre de usuario y contrasena' ,
invalidCredentials : 'Nombre de usuario o contrasena incorrectos' ,
2026-05-08 18:29:43 +08:00
tooManyAttempts : 'Demasiados intentos fallidos, por favor intente mas tarde' ,
2026-05-23 18:44:53 +08:00
sessionExpired : 'La sesion expiro. Inicia sesion de nuevo.' ,
accessDenied : 'No tienes permiso para acceder a este recurso.' ,
2026-04-22 20:27:33 +08:00
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' ,
2026-05-23 18:44:53 +08:00
setupDescription : 'Administra el nombre de usuario y la contrasena usados para iniciar sesion.' ,
removeConfirm : 'El login con contrasena es obligatorio para las cuentas de usuario.' ,
2026-04-22 20:27:33 +08:00
passwordLoginNotConfigured : 'Login con contrasena no configurado' ,
2026-05-23 18:44:53 +08:00
passwordLoginConfigured : 'Cuenta actual: {username}' ,
2026-05-24 09:49:21 +08:00
defaultCredentialTitle : 'Cambia la cuenta y contrasena predeterminadas' ,
defaultCredentialMessage : 'La cuenta actual aun usa el nombre de usuario o la contrasena predeterminados. Para evitar accesos no autorizados, cambia cuanto antes el nombre de usuario y la contrasena de la cuenta actual.' ,
defaultCredentialAction : 'Cambiar ahora' ,
defaultCredentialLater : 'Recordar mas tarde' ,
2026-05-23 18:44:53 +08:00
} ,
users : {
title : 'Gestion de cuentas' ,
2026-05-23 19:41:51 +08:00
description : 'Crea usuarios, asigna roles y controla que perfiles pueden usar los administradores normales.' ,
2026-05-23 18:44:53 +08:00
create : 'Crear usuario' ,
edit : 'Editar usuario' ,
username : 'Nombre de usuario' ,
role : 'Rol' ,
statusLabel : 'Estado' ,
2026-05-23 19:41:51 +08:00
profiles : 'Perfiles accesibles' ,
profilesPlaceholder : 'Selecciona perfiles accesibles' ,
allProfiles : 'Todos los perfiles' ,
noProfiles : 'Sin perfiles asignados' ,
2026-05-23 18:44:53 +08:00
lastLogin : 'Ultimo inicio' ,
newPasswordOptional : 'Nueva contrasena (dejar vacio para conservar)' ,
loadFailed : 'No se pudieron cargar los usuarios' ,
deleteConfirm : 'Eliminar este usuario?' ,
enable : 'Activar' ,
disable : 'Desactivar' ,
roles : {
superAdmin : 'Super admin' ,
admin : 'Admin' ,
} ,
status : {
active : 'Activo' ,
disabled : 'Desactivado' ,
} ,
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' ,
2026-04-24 20:41:14 +08:00
deleteFailed : 'Error al eliminar' ,
2026-04-17 09:09:50 +08:00
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' ,
2026-05-20 17:13:32 +08:00
stop : 'Detener' ,
start : 'Iniciar' ,
expired : 'Expirado' ,
2026-04-17 09:09:50 +08:00
} ,
// Sidebar
sidebar : {
chat : 'Chat' ,
2026-05-01 11:27:43 +08:00
search : 'Buscar' ,
2026-05-07 22:16:52 +08:00
apiRelay : 'API Relay' ,
2026-05-01 11:27:43 +08:00
history : 'Historial' ,
2026-04-17 09:09:50 +08:00
jobs : 'Tareas programadas' ,
models : 'Modelos' ,
profiles : 'Perfiles' ,
2026-05-10 13:50:39 +02:00
plugins : 'Plugins' ,
2026-04-17 09:09:50 +08:00
skills : 'Habilidades' ,
memory : 'Memoria' ,
logs : 'Registros' ,
usage : 'Uso' ,
2026-05-23 09:05:03 +08:00
performance : 'Rendimiento' ,
2026-05-14 09:28:51 +08:00
skillsUsage : 'Uso de habilidades' ,
2026-04-17 09:09:50 +08:00
channels : 'Canales' ,
terminal : 'Terminal' ,
2026-04-23 14:10:14 +08:00
files : 'Archivos' ,
2026-04-24 20:41:14 +08:00
groupChat : 'Chat grupal' ,
groupConversation : 'Conversación' ,
2026-05-20 17:13:32 +08:00
groupConversationShort : 'Conv.' ,
2026-05-19 02:33:53 +02:00
groupAgent : 'Agente' ,
groupAgentShort : 'Ag.' ,
groupSystem : 'Sistema' ,
groupSystemShort : 'Sist' ,
groupMonitoring : 'Monitoreo' ,
2026-05-20 17:13:32 +08:00
groupMonitoringShort : 'Mon.' ,
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}' ,
2026-05-12 03:03:07 +02:00
reloadClientVersion : 'Recargar para v{version}' ,
2026-04-17 09:09:50 +08:00
updating : 'Actualizando...' ,
2026-05-14 12:06:39 +08:00
updateSuccess : 'Actualizacion completada. Actualiza la pagina en breve. Si no se inicia despues de un tiempo, inicialo manualmente.' ,
2026-04-17 09:09:50 +08:00
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-05-20 17:13:32 +08:00
kanban : 'Kanban' ,
groupTools : 'Herramientas' ,
groupPlatform : 'Plataforma' ,
gateways : 'Puertas de enlace' ,
expand : 'Expandir menú' ,
collapse : 'Contraer menú' ,
2026-04-17 09:09:50 +08:00
} ,
2026-05-23 09:05:03 +08:00
performance : {
title : 'Rendimiento' ,
subtitle : 'Supervisa recursos del sistema, Bridge Broker, Workers y sesiones activas' ,
refresh : 'Actualizar' ,
autoRefreshOn : 'Actualización automática' ,
autoRefreshOff : 'Actualización manual' ,
loadFailed : 'No se pudieron cargar las métricas de rendimiento' ,
systemCpu : 'CPU del sistema' ,
systemMemory : 'Memoria del sistema' ,
activeSessions : 'Sesiones activas' ,
runningSessions : 'En ejecución {count}' ,
workers : 'Workers' ,
totalWorkerMemory : 'Memoria total de Worker' ,
processes : 'Procesos' ,
uptime : 'Tiempo activo' ,
running : 'En ejecución' ,
stopped : 'Detenido' ,
workerMemory : 'Memoria de Worker' ,
lastUpdated : 'Actualizado' ,
profile : 'Profile' ,
memory : 'Memoria' ,
sessions : 'Sesiones' ,
runningActiveSessions : 'En ejecución / Activas' ,
lastUsed : 'Último uso' ,
status : 'Estado' ,
noWorkers : 'Sin Workers' ,
sessionsByProfile : 'Sesiones por Profile' ,
noActiveSessions : 'No hay sesiones activas' ,
} ,
2026-05-03 22:10:40 +08:00
// Drawer
drawer : {
terminal : 'Terminal' ,
files : 'Espacio de trabajo' ,
} ,
2026-04-17 09:09:50 +08:00
// Chat
chat : {
2026-04-22 16:14:50 +08:00
contextRemaining : 'restante' ,
2026-05-06 15:05:44 +08:00
contextClickToEdit : 'Haz clic para editar la longitud del contexto' ,
contextEditTitle : 'Editar longitud del contexto' ,
contextEditDesc : 'Establecer el límite de longitud del contexto para el modelo actual (en tokens)' ,
contextEditPlaceholder : 'Ingresa la longitud del contexto' ,
contextEditHint : 'Valores comunes: 200k (Claude), 128k (GPT-4), 32k (GPT-3.5)' ,
contextEditSave : 'Guardar' ,
contextEditCancel : 'Cancelar' ,
contextEditInvalid : 'Por favor ingresa una longitud de contexto válida' ,
contextEditSuccess : 'Longitud del contexto actualizada' ,
contextEditFailed : 'Error en la actualización' ,
2026-04-17 09:09:50 +08:00
emptyState : 'Inicia una conversacion con Hermes Agent' ,
2026-05-19 08:25:01 +08:00
outlineTitle : 'Esquema de la conversación' ,
outlineEmpty : 'Sin contenido de conversación' ,
outlineUserQuestion : 'Pregunta del usuario' ,
2026-04-17 09:09:50 +08:00
inputPlaceholder : 'Escribe un mensaje... (Enter para enviar, Shift+Enter para nueva linea)' ,
2026-05-15 12:04:03 +08:00
slashCommandArgs : {
message : '<mensaje>' ,
title : '<titulo>' ,
text : '<texto>' ,
} ,
slashCommands : {
usage : 'Calcular el uso de la sesión actual' ,
status : 'Mostrar estado de sesión y cola' ,
abort : 'Detener la ejecución activa de Bridge' ,
queue : 'Poner un mensaje en cola tras la ejecución activa' ,
clear : 'Limpiar la vista actual' ,
clearHistory : 'Eliminar el historial de mensajes guardado de esta sesión' ,
title : 'Renombrar esta sesión' ,
compress : 'Ejecutar compresión de contexto cuando esté inactiva' ,
steer : 'Enviar texto de guía a la ejecución activa de Bridge' ,
destroy : 'Liberar el agente Bridge de esta sesión' ,
} ,
2026-04-17 09:09:50 +08:00
attachFiles : 'Adjuntar archivos' ,
2026-05-17 09:01:59 +08:00
showToolCalls : 'Mostrar llamadas de herramientas' ,
hideToolCalls : 'Ocultar llamadas de herramientas' ,
2026-05-07 10:34:58 +08:00
messageQueue : 'Cola de mensajes' ,
removeQueuedMessage : 'Quitar mensaje de la cola' ,
2026-04-17 09:09:50 +08:00
stop : 'Detener' ,
send : 'Enviar' ,
contextUsed : 'Contexto utilizado:' ,
sessions : 'Sesiones' ,
2026-05-06 16:15:42 +08:00
webUiSessions : 'Sesiones' ,
2026-05-19 16:09:59 +08:00
allProfiles : 'Todos los perfiles' ,
2026-05-20 18:26:01 +08:00
profileMissingModelsTip : 'El perfil "{profile}" no tiene proveedor ni modelo disponible para esta sesión' ,
2026-05-02 03:00:47 +02:00
sessionScopeHint : 'Chat solo muestra sesiones de Web UI/API Server. Las sesiones de CLI, Telegram, Discord, Cron y otros canales son de solo lectura en Historial.' ,
openHistory : 'Abrir historial' ,
hermesHistory : 'Historial de Hermes' ,
2026-05-19 16:09:59 +08:00
historyScopeHint : 'Sesiones del historial de Hermes del perfil actual, de solo lectura y agrupadas por origen.' ,
2026-04-17 09:09:50 +08:00
noSessions : 'Sin sesiones' ,
newChat : 'Nuevo chat' ,
2026-05-16 00:11:51 +08:00
approvalKicker : 'Permiso de terminal' ,
approvalTitle : 'Revisar comando antes de ejecutar' ,
approvalAllowOnce : 'Permitir una vez' ,
approvalAllowSession : 'Permitir sesión' ,
approvalAlways : 'Siempre' ,
approvalDeny : 'Denegar' ,
2026-04-17 09:09:50 +08:00
deleteSession : 'Eliminar esta sesion?' ,
2026-05-06 16:15:42 +08:00
toggleBatchMode : 'Selección por lotes' ,
selectAll : 'Seleccionar todo' ,
confirmBatchDelete : '¿Eliminar {count} sesiones seleccionadas?' ,
batchDeleteSuccess : '{count} sesiones eliminadas' ,
batchDeletePartial : '{failed} sesiones fallaron al eliminar' ,
batchDeleteFailed : 'Error al eliminar por lotes' ,
2026-04-17 09:09:50 +08:00
sessionDeleted : 'Sesion eliminada' ,
rename : 'Renombrar' ,
2026-04-22 02:09:58 +02:00
pin : 'Fijar' ,
unpin : 'Desfijar' ,
pinned : 'Fijados' ,
2026-05-20 17:13:32 +08:00
chatMode : 'Modo de chat' ,
2026-04-22 02:09:58 +02:00
liveMode : 'En vivo' ,
liveSessions : 'Sesiones en vivo' ,
recentBadge : 'Reciente' ,
linkedSessions : '{count} vinculadas' ,
noVisibleMessages : 'No hay mensajes visibles para humanos.' ,
monitorRoleUser : 'Usuario' ,
monitorRoleAssistant : 'Asistente' ,
2026-05-24 10:55:55 +08:00
copySessionLink : 'Copiar enlace de sesión' ,
2026-04-22 02:09:58 +02:00
copySessionId : 'Copiar ID de sesión' ,
2026-05-07 13:49:57 +08:00
export : 'Exportar' ,
exportFull : 'Exportación completa (JSON)' ,
exportCompressed : 'Exportación comprimida (TXT)' ,
exportCompressing : 'Comprimiendo contexto, espere...' ,
exportSuccess : 'Sesión exportada' ,
exportFailed : 'Error al exportar' ,
2026-04-17 09:09:50 +08:00
renamed : 'Renombrada' ,
renameFailed : 'Error al renombrar' ,
renameSession : 'Renombrar sesion' ,
2026-05-03 22:10:40 +08:00
sessionNotFound : 'Sesion no encontrada' ,
2026-04-17 09:09:50 +08:00
enterNewTitle : 'Introduce un nuevo titulo' ,
other : 'Otro' ,
runFailed : 'Error en la ejecucion' ,
error : 'Error' ,
tool : 'Herramienta' ,
arguments : 'Argumentos' ,
result : 'Resultado' ,
truncated : '... (truncado)' ,
2026-05-20 17:13:32 +08:00
executionDuration : 'Tiempo de ejecución' , thinkingLabel : 'Pensamiento' ,
2026-04-25 08:46:50 +08:00
thinkingInProgress : 'Pensando…' ,
thinkingShow : 'Mostrar pensamiento' ,
thinkingHide : 'Ocultar pensamiento' ,
thinkingDuration : 'Observado {duration}' ,
thinkingChars : '{count} caracteres' ,
2026-04-26 22:59:43 +08:00
copyBubble : 'Copiar mensaje' ,
copiedBubble : 'Mensaje copiado' ,
copyFailed : 'Error al copiar' ,
2026-05-02 13:26:57 +08:00
playSpeech : 'Reproducir voz' ,
pauseSpeech : 'Pausa' ,
resumeSpeech : 'Reanudar' ,
stopSpeech : 'Detener' ,
speechNotSupported : 'Reproducción de voz no soportada en este navegador' ,
2026-05-20 17:13:32 +08:00
searchEnterHint : 'Enter para abrir · Esc para cerrar' ,
searchHint : 'Cmd/Ctrl+K' ,
searchScope : 'Alcance de búsqueda: solo base de datos local de sesiones de Web UI; no incluye sesiones históricas Hermes de solo lectura.' ,
searchFailed : 'No se pudieron buscar sesiones' ,
searchNoSnippet : 'No hay resumen disponible' ,
searchNoResults : 'No hay sesiones que coincidan' ,
searchRecent : 'Sesión reciente' ,
searchEmpty : 'Sesiones recientes' ,
searchPlaceholder : 'Buscar sesiones...' ,
searchSubtitle : 'Buscar por título o contenido de mensajes' ,
searchTitle : 'Buscar sesiones' ,
stopGateway : 'Detener gateway' ,
start : 'Iniciar' ,
workspaceSetFailed : 'No se pudo definir el workspace' ,
workspaceSet : 'Workspace definido' ,
workspacePlaceholder : 'Introduce la ruta del proyecto, p. ej. /home/user/project' ,
workspace : 'Espacio de trabajo' ,
setWorkspaceTitle : 'Definir workspace de sesión' ,
setWorkspace : 'Definir workspace' ,
modelSetFailed : 'No se pudo definir el modelo' ,
modelSet : 'Modelo definido' ,
setModelTitle : 'Definir modelo de sesión' ,
setModel : 'Definir modelo' ,
newCliChat : 'Nuevo CLI' ,
cliEmptyState : 'Iniciar chat CLI' ,
autoPlaySpeech : 'Reproducir voz automáticamente' ,
2026-04-17 09:09:50 +08:00
} ,
// 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)' ,
2026-04-30 10:17:25 +10:00
modelPlaceholder : 'Modelo por defecto' ,
2026-04-17 09:09:50 +08:00
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' ,
2026-04-30 10:17:25 +10:00
jobTriggered : 'Job ejecutado' ,
modelUpdated : 'Modelo actualizado' ,
2026-04-17 09:09:50 +08:00
jobDeleted : 'Tarea eliminada' ,
status : {
running : 'En ejecucion' ,
paused : 'En pausa' ,
disabled : 'Desactivada' ,
scheduled : 'Programada' ,
} ,
info : {
2026-04-30 10:17:25 +10:00
model : 'Modelo' ,
2026-04-17 09:09:50 +08:00
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' ,
} ,
2026-04-30 10:17:25 +10:00
runHistory : {
title : 'Historial' ,
runs : 'ejecuciones' ,
noRuns : 'No se encontró historial.' ,
} ,
2026-04-17 09:09:50 +08:00
} ,
// 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' ,
2026-05-02 10:56:58 +10:00
modified : 'Modificado por el usuario' ,
archived : 'Archivado' ,
pinned : 'Fijado' ,
pin : 'Fijar habilidad' ,
unpin : 'Desfijar habilidad' ,
pinFailed : 'Error al cambiar estado de fijacion' ,
2026-04-17 09:09:50 +08:00
toggleFailed : 'Error al activar/desactivar la habilidad' ,
2026-05-02 10:56:58 +10:00
source : {
builtin : 'Integrado' ,
hub : 'Hub' ,
local : 'Local' ,
} ,
2026-04-17 09:09:50 +08:00
} ,
2026-05-10 13:50:39 +02:00
// Plugins
plugins : {
title : 'Plugins' ,
refresh : 'Actualizar' ,
notice : 'Inventario de solo lectura de manifests de plugins Hermes detectables. Los metadatos de descubrimiento se leen sin cargar código de plugins. En v1, la gestión permanece en CLI; los cambios se aplican en nuevas sesiones Hermes.' ,
loadFailed : 'No se pudieron cargar los plugins' ,
commandCopied : 'Comando copiado' ,
searchPlaceholder : 'Buscar key, nombre, descripción, ruta...' ,
source : 'Origen' ,
kind : 'Tipo' ,
statusTitle : 'Estado' ,
configStatus : 'config: {status}' ,
notAvailable : 'n/a' ,
copyCommand : 'Copiar comando' ,
managedElsewhere : 'gestionado en otro lugar' ,
noMatch : 'Ningún plugin coincide con los filtros actuales' ,
enabled : 'activado' ,
disabled : 'desactivado' ,
summary : {
total : 'Total' ,
active : 'Activado / auto' ,
inactive : 'Inactivo' ,
disabled : 'Desactivado' ,
providerManaged : 'Gestionado por provider' ,
} ,
status : {
enabled : 'Activado' ,
'auto-active' : 'Autoactivo' ,
inactive : 'Inactivo' ,
disabled : 'Desactivado' ,
'provider-managed' : 'Gestionado por provider' ,
} ,
statusLabel : {
enabled : 'Activado por configuración' ,
'auto-active' : 'Autoactivo' ,
inactive : 'Inactivo' ,
disabled : 'Desactivado' ,
'provider-managed' : 'Gestionado por provider' ,
} ,
configStatuses : {
enabled : 'activado' ,
disabled : 'desactivado' ,
'not-enabled' : 'no activado' ,
auto : 'auto' ,
'provider-managed' : 'gestionado por provider' ,
} ,
table : {
plugin : 'Plugin' ,
status : 'Estado' ,
source : 'Origen' ,
kind : 'Tipo' ,
capabilities : 'Capacidades' ,
path : 'Ruta / entrypoint' ,
cli : 'CLI' ,
} ,
capabilities : {
tools : '{count} herramientas' ,
hooks : '{count} hooks' ,
env : '{count} env' ,
} ,
metadata : {
2026-05-20 17:13:32 +08:00
agentRoot : 'Raíz del agente' ,
2026-05-10 13:50:39 +02:00
python : 'Python' ,
2026-05-20 17:13:32 +08:00
scanCwd : 'Escanear cwd' ,
2026-05-10 13:50:39 +02:00
projectPlugins : 'Plugins del proyecto' ,
} ,
} ,
2026-04-17 09:09:50 +08:00
// 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' ,
2026-05-20 17:13:32 +08:00
preset : 'Preajuste' ,
2026-04-17 09:09:50 +08:00
custom : 'Personalizado' ,
selectProvider : 'Seleccionar proveedor' ,
chooseProvider : 'Elige un proveedor...' ,
name : 'Nombre' ,
autoGeneratedName : 'Generado automaticamente desde la URL base' ,
baseUrl : 'URL base' ,
2026-04-25 14:00:07 +08:00
region : 'Región' ,
regionIntl : 'Internacional' ,
regionCn : 'China continental' ,
2026-04-17 09:09:50 +08:00
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-26 22:51:35 +08:00
copilotLoginTitle : 'Inicio de sesión de GitHub Copilot' ,
copilotWaiting : 'Abra GitHub e introduzca el código de dispositivo a continuación para autorizar. La ventana se cerrará automáticamente tras la aprobación.' ,
copilotCopyCode : 'Código copiado' ,
copilotOpenLink : 'Abrir la página de autorización de GitHub' ,
copilotApproved : '¡Inicio de sesión exitoso!' ,
copilotDenied : 'Autorización denegada.' ,
copilotExpired : 'El enlace de autorización ha caducado. Vuelva a intentarlo.' ,
copilotAddDetectedTitle : 'GitHub Copilot detectado' ,
copilotAddDetected : 'Se detectó un token OAuth de GitHub Copilot en este equipo. Haz clic en Agregar para habilitar Copilot en Hermes.' ,
copilotAddSourceEnv : 'Origen: ~/.hermes/.env (COPILOT_GITHUB_TOKEN)' ,
copilotAddSourceGhCli : 'Origen: gh CLI (gh auth token)' ,
copilotAddSourceAppsJson : 'Origen: extensión Copilot de VS Code (apps.json)' ,
copilotDeleteHintEnv : 'Esto borrará COPILOT_GITHUB_TOKEN en ~/.hermes/.env. Otras herramientas no se verán afectadas.' ,
copilotDeleteHintGhCli : 'Copilot se ocultará de Hermes. Tu sesión de gh CLI no se verá afectada — `gh auth status` seguirá mostrando que estás conectado.' ,
copilotDeleteHintAppsJson : 'Copilot se ocultará de Hermes. La extensión Copilot de VS Code seguirá conectada.' ,
2026-04-24 08:49:45 +08:00
customBadge : 'PERSONALIZADO' ,
2026-04-26 22:51:35 +08:00
previewBadge : 'VISTA PREVIA' ,
disabledBadge : 'NO DISPONIBLE' ,
disabledTooltip : "Este modelo no está disponible para tu cuenta." ,
2026-05-11 16:18:13 +02:00
customModelPlaceholder : 'ID de modelo no listado' ,
customModelHint : 'Para modelos compatibles con el proveedor que la API no devuelve; no es un cambio de nombre visible. Enter para cargar.' ,
2026-04-17 09:09:50 +08:00
noProviders : 'No se encontraron proveedores. Anade un proveedor personalizado para comenzar.' ,
2026-05-14 23:36:07 +08:00
clearVisibleModels : 'Borrar selección' ,
2026-05-19 16:09:59 +08:00
currentDefault : 'Predeterminado actual' ,
defaultShort : 'Predeterminado' ,
2026-04-17 09:09:50 +08:00
builtIn : 'Integrado' ,
customType : 'Personalizado' ,
provider : 'Proveedor' ,
2026-04-24 11:18:11 +08:00
contextLength : 'Longitud del contexto' ,
contextLengthPlaceholder : 'ej. 200000 (opcional)' ,
2026-04-17 09:09:50 +08:00
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' ,
2026-05-20 17:13:32 +08:00
xaiWaiting : 'Completa la autorización en la página de xAI abierta. La ventana se cerrará automáticamente al aprobarse.' ,
xaiOpenLink : 'Abrir página de autorización de xAI' ,
xaiLoginTitle : 'Inicio de sesión OAuth de xAI Grok' ,
xaiExpired : 'El enlace de autorización expiró. Inténtalo de nuevo.' ,
xaiCopyLink : 'Copiar enlace de autorización' ,
xaiApproved : '¡Inicio de sesión correcto!' ,
visibilitySelectOne : 'Mantén al menos un modelo visible' ,
visibilitySaved : 'Modelos visibles guardados' ,
visibilitySaveFailed : 'No se pudieron guardar los modelos visibles' ,
visibilityHint : 'Solo afecta al selector de modelos y a la página de modelos de Web UI. No modifica la configuración provider/model de Hermes CLI; las llamadas siguen usando el ID original del modelo.' ,
showAllModels : 'Mostrar todos los modelos' ,
searchPlaceholder : 'Buscar modelos...' ,
removeCustomModel : 'Eliminar este modelo no listado' ,
more : 'más' ,
models : 'Lista de modelos' ,
manageVisibleModelsFor : 'Gestionar modelos visibles de {name}' ,
manageVisibleModels : 'Gestionar modelos visibles' ,
getApiKey : 'Obtener API Key' ,
count : 'modelos' ,
aliasUseOriginal : 'Restaurar ID original' ,
aliasTitleFor : 'Nombre visible de {model}' ,
aliasTitle : 'Nombre visible del modelo' ,
aliasSaveFailed : 'No se pudo guardar el nombre visible' ,
aliasPlaceholder : 'Dejar vacío para usar el ID original del modelo' ,
aliasManageFor : 'Nombres visibles de {provider}' ,
aliasManage : 'Nombres visibles' ,
aliasHint : 'Solo cambia el nombre visible en Web UI. Hermes sigue recibiendo el ID original del modelo.' ,
aliasEdit : 'Renombrar' ,
aliasCanonical : 'ID original: {model}' ,
2026-04-17 09:09:50 +08:00
} ,
// Profiles
profiles : {
title : 'Perfiles' ,
create : 'Crear perfil' ,
import : 'Importar' ,
export : 'Exportar' ,
rename : 'Renombrar' ,
delete : 'Eliminar' ,
2026-05-23 18:44:53 +08:00
switchTo : 'Cambiar Hermes Profile' ,
switchConfirm : 'Esto ejecutara `hermes profile use {name}` y cambiara el active profile de Hermes CLI. Continuar?' ,
switchSuccess : 'Hermes active profile cambiado a "{name}"' ,
switchFailed : 'Error al cambiar Hermes Profile. Es posible que la pasarela necesite un reinicio manual.' ,
2026-04-17 09:09:50 +08:00
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' ,
2026-05-03 22:10:40 +08:00
nameValidation : 'El nombre del perfil solo puede contener letras minúsculas, números, guiones bajos y guiones' ,
2026-04-17 09:09:50 +08:00
newName : 'Nuevo nombre' ,
newNamePlaceholder : 'Introduce un nuevo nombre' ,
cloneFromCurrent : 'Clonar desde el perfil actual' ,
2026-04-29 20:31:24 +08:00
cloneCleanupNotice : 'Al clonar se omiten automáticamente las credenciales exclusivas de plataforma (Weixin / Telegram / Slack, etc.) para evitar conflictos con el perfil de origen' ,
cloneStrippedCredentials : 'Se eliminaron {count} credenciales exclusivas: {list}' ,
cloneDisabledPlatforms : 'Se deshabilitaron {count} plataforma(s): {list}' ,
cloneStrippedConfigCredentials : 'Se eliminaron {count} credencial(es) integradas de config.yaml: {list}' ,
2026-04-17 09:09:50 +08:00
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.' ,
2026-05-20 14:15:01 +08:00
avatar : {
2026-05-20 17:13:32 +08:00
title : 'Avatar personalizado' ,
customize : 'Personalizar avatar' ,
upload : 'Subir imagen' ,
random : 'Generar aleatorio' ,
reset : 'Restaurar predeterminado' ,
hint : 'PNG, JPEG o WebP, máximo 1 MB' ,
invalidType : 'Elige una imagen PNG, JPEG o WebP' ,
tooLarge : 'La imagen del avatar no puede superar 1 MB' ,
saveSuccess : 'Avatar guardado' ,
saveFailed : 'No se pudo guardar el avatar' ,
resetSuccess : 'Avatar predeterminado restaurado' ,
resetFailed : 'No se pudo restaurar el avatar predeterminado' ,
} ,
runtime : {
activeProfile : 'Actual: {name}' ,
bridgeWorker : 'Estado del Bridge' ,
gateway : 'Puerta de enlace' ,
active : 'Activo' ,
activeTag : 'Actual' ,
idle : 'Inactivo' ,
running : 'En ejecución' ,
stopped : 'Detenido' ,
restartGateway : 'Reiniciar gateway' ,
restartProfile : 'Reiniciar perfil' ,
2026-05-23 19:41:51 +08:00
switchProfile : 'Cambiar perfil frontend' ,
2026-05-20 17:13:32 +08:00
gatewayRestarted : 'Gateway reiniciado: {name}' ,
gatewayRestartFailed : 'No se pudo reiniciar el gateway' ,
profileRestarted : 'Perfil reiniciado: {name}' ,
profileRestartFailed : 'No se pudo reiniciar el perfil' ,
2026-05-20 14:15:01 +08:00
} ,
2026-04-17 09:09:50 +08:00
} ,
// 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-05-23 18:44:53 +08:00
account : 'Cuenta actual' ,
users : 'Gestion de cuentas' ,
2026-04-17 09:09:50 +08:00
agent : 'Agente' ,
memory : 'Memoria' ,
2026-05-19 17:58:39 +08:00
compression : 'Compresion' ,
2026-04-17 09:09:50 +08:00
session : 'Sesion' ,
privacy : 'Privacidad' ,
apiServer : 'Servidor API' ,
2026-05-10 20:08:38 +08:00
models : 'Modelos' ,
voice : 'Voz' ,
2026-04-17 09:09:50 +08:00
} ,
display : {
streaming : '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' ,
} ,
2026-05-19 17:58:39 +08:00
compression : {
enabled : 'Activar compresion' ,
enabledHint : 'Comprimir automaticamente el historial largo antes de superar el contexto del modelo' ,
threshold : 'Umbral de compresion' ,
thresholdHint : 'Iniciar compresion cuando los tokens estimados superen esta proporcion del contexto' ,
targetRatio : 'Proporcion objetivo' ,
targetRatioHint : 'Tamano objetivo del historial tras comprimir como proporcion del contexto' ,
protectLastN : 'Proteger mensajes recientes' ,
protectLastNHint : 'Mantener sin comprimir esta cantidad de mensajes recientes' ,
protectFirstN : 'Proteger primeros mensajes' ,
protectFirstNHint : 'Mantener sin comprimir esta cantidad de mensajes iniciales' ,
} ,
2026-04-17 09:09:50 +08:00
session : {
mode : 'Modo de reinicio' ,
modeHint : 'Condicion de activacion del reinicio de sesion' ,
modeBoth : 'Inactividad + Programado' ,
modeIdle : 'Solo inactividad' ,
2026-05-16 21:18:59 +08:00
modeDaily : 'Solo programado' ,
modeNone : 'Nunca (solo manual)' ,
2026-04-17 09:09:50 +08:00
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' ,
2026-05-04 21:29:39 +08:00
requireAuth : 'Autorización de sesión' ,
requireAuthHint : 'Requiere autorización para operaciones de sesión' ,
2026-04-17 09:09:50 +08:00
} ,
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' ,
} ,
2026-05-10 20:08:38 +08:00
voice : {
ttsProvider : 'Proveedor TTS' ,
ttsProviderHint : 'Elija el motor de texto a voz para la reproduccion de mensajes' ,
providerWebSpeech : 'WebSpeech API (Navegador)' ,
providerOpenai : 'OpenAI TTS' ,
providerCustom : 'Endpoint personalizado (compatible con OpenAI)' ,
providerEdge : 'Edge TTS (Gratuito, sin clave API)' ,
// WebSpeech
webspeechVoice : 'Voz' ,
webspeechVoiceHint : 'Seleccione una voz de su navegador o sistema operativo' ,
webspeechVoicePlaceholder : 'Auto (voz predeterminada)' ,
// OpenAI
openaiKey : 'Clave API' ,
openaiKeyHint : 'Su clave API de OpenAI con acceso TTS' ,
openaiUrl : 'URL base de API' ,
openaiUrlHint : 'ej. https://api.openai.com/v1/audio/speech' ,
openaiModel : 'Modelo' ,
openaiModelHint : 'tts-1 (mas rapido) / tts-1-hd (mayor calidad)' ,
openaiVoice : 'Voz' ,
openaiVoiceHint : 'Voz a utilizar para la sintesis' ,
// Custom endpoint
customHint : 'Utilice cualquier API TTS compatible con OpenAI — funciona con GPT-SoVITS, CosyVoice, etc.' ,
customUrl : 'URL de API' ,
customUrlHint : 'URL base de su servicio TTS' ,
customUrlPlaceholder : 'Direccion configurada en el adaptador local, ej. http://127.0.0.1:9880' ,
customApiKey : 'Clave API (opcional)' ,
customApiKeyHint : 'Algunos endpoints personalizados requieren autenticacion' ,
customApiKeyPlaceholder : 'Dejar en blanco si no es necesario' ,
// Edge TTS
edgeHint : 'Impulsado por Microsoft Edge TTS (node-edge-tts).' ,
edgeUrl : 'URL del adaptador' ,
edgeUrlHint : 'Direccion del adaptador Edge TTS, ej. http://127.0.0.1:9882' ,
edgeUrlPlaceholder : 'http://127.0.0.1:9882' ,
edgeVoice : 'Voz' ,
edgeVoiceHint : 'Seleccione una voz para la sintesis de voz' ,
2026-05-11 21:56:11 +08:00
edgeRate : 'Velocidad' ,
edgeRateHint : 'Ajustar velocidad del habla (0.5x ~ 2.0x)' ,
edgePitch : 'Tono' ,
edgePitchHint : 'Ajustar tono del habla (-20 ~ +20 Hz)' ,
2026-05-10 20:08:38 +08:00
// Test
testTitle : 'Prueba de voz' ,
testText : 'Texto de prueba' ,
testTextPlaceholder : 'Ingrese texto para probar...' ,
testTextDefault : 'Hola, esta es una prueba de voz.' ,
testButton : 'Probar' ,
testButtonPlaying : 'Reproduciendo...' ,
testFailed : 'Prueba fallida: {error}' ,
2026-05-16 08:55:23 +08:00
// MiMo TTS
providerMimo : 'MiMo TTS' ,
mimoHint : 'Xiaomi MiMo TTS — voces predefinidas, diseño de voz y clonación de voz' ,
mimoApiKey : 'Clave API' ,
mimoApiKeyHint : 'Obtenga su clave en platform.xiaomimimo.com' ,
mimoApiKeyPlaceholder : 'Clave API MiMo' ,
mimoBaseUrl : 'URL base' ,
mimoBaseUrlHint : 'URL del endpoint de la API MiMo' ,
mimoModel : 'Modelo' ,
mimoModelHint : 'Seleccione el modelo de síntesis de voz' ,
mimoModelPreset : 'Voces predefinidas' ,
mimoModelVoiceDesign : 'Diseño de voz' ,
mimoModelVoiceClone : 'Clonación de voz' ,
mimoVoice : 'Voz' ,
mimoVoiceHint : 'Seleccione una voz predefinida' ,
mimoVoiceDesignPrompt : 'Descripción de voz' ,
mimoVoiceDesignPromptHint : 'Describa las características de voz deseadas' ,
mimoVoiceDesignPromptPlaceholder : 'Ej: Una voz femenina cálida y joven, algo lenta, con tono magnético' ,
mimoCloneAudio : 'Subir audio' ,
mimoCloneAudioHint : 'Suba una muestra de audio para clonación (mp3/wav, máx. 10 MB)' ,
mimoCloneAudioUpload : 'Elegir archivo' ,
mimoCloneAudioClear : 'Borrar' ,
mimoStylePrompt : 'Indicador de estilo' ,
mimoStylePromptHint : 'Opcional — describa el estilo de habla en lenguaje natural' ,
mimoStylePromptPlaceholder : 'Ej: Tono brillante y animado, ritmo rápido' ,
2026-05-10 20:08:38 +08:00
} ,
2026-05-08 18:29:43 +08:00
lockedIps : {
title : 'IPs bloqueadas' ,
count : '{count} bloqueadas' ,
empty : 'Sin IPs bloqueadas' ,
unlock : 'Desbloquear' ,
unlockAll : 'Desbloquear todo' ,
unlockAllConfirm : 'Desbloquear todas las IPs?' ,
unlocked : 'IP desbloqueada' ,
allUnlocked : '{count} IPs desbloqueadas' ,
} ,
2026-05-20 17:13:32 +08:00
models : {
apiKey : 'API Key' ,
apiKeyPlaceholder : 'Introduce API Key' ,
noProviders : 'No hay proveedores configurados' ,
save : 'Guardar' ,
saveFailed : 'Error al guardar' ,
saved : 'Guardado' ,
} ,
2026-04-17 09:09:50 +08:00
} ,
// 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)' ,
2026-04-29 20:31:24 +08:00
exclusiveTokenWarning : 'Esta plataforma usa bloqueo exclusivo de token. Cada perfil debe usar un token de identidad distinto para evitar conflictos con otros perfiles.' ,
2026-04-17 09:09:50 +08:00
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...' ,
2026-05-20 17:13:32 +08:00
qqSandboxHint : 'Habilitar entorno sandbox (para pruebas)' ,
qqSandbox : 'Modo sandbox' ,
qqQrScanHint : 'Escanea el código QR con QQ o abre el enlace en el teléfono para completar la vinculación' ,
qqMarkdownHint : 'Habilitar mensajes con formato Markdown (algunos clientes pueden no soportarlo)' ,
qqMarkdown : 'Soporte Markdown' ,
qqAppSecretHint : 'App Secret del bot de QQ Open Platform' ,
qqAppSecret : 'App Secret' ,
qqAppIdHint : 'App ID del bot de QQ Open Platform' ,
qqAppId : 'App ID' ,
allowedUsersHint : 'Lista blanca de IDs de usuario u OpenID, separados por comas' ,
allowedUsers : 'Usuarios permitidos' ,
allowAllUsersHint : 'Permite mensajes de cualquier usuario; desactívalo para usar la lista blanca' ,
allowAllUsers : 'Permitir todos los usuarios' ,
2026-04-17 09:09:50 +08:00
} ,
// 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}' ,
2026-05-20 17:13:32 +08:00
noSessions : 'No hay sesiones de terminal' ,
connectionFailed : 'No se pudo conectar al terminal' ,
connectionError : 'Error de conexión' ,
connectionClosed : 'Conexión cerrada' ,
2026-04-17 09:09:50 +08:00
} ,
// 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' ,
2026-05-13 01:41:49 +02:00
dailyTrend : 'Uso diario' ,
2026-04-17 09:09:50 +08:00
date : 'Fecha' ,
tokens : 'Tokens' ,
2026-05-02 10:36:33 +10:00
cache : 'Caché' ,
2026-05-20 17:13:32 +08:00
cacheRead : 'Lectura de caché' ,
cacheWrite : 'Escritura de caché' ,
2026-04-17 09:09:50 +08:00
sessions : 'Sesiones' ,
cost : 'Costo' ,
noData : 'Sin datos de uso' ,
} ,
2026-04-22 20:27:33 +08:00
2026-05-14 09:28:51 +08:00
skillsUsage : {
title : 'Uso de habilidades' ,
subtitle : 'Sigue las cargas y ediciones de habilidades en sesiones de Hermes' ,
refresh : 'Actualizar' ,
periodSelector : 'Periodo de uso de habilidades' ,
periodLabel : '{days} d' ,
summary : 'Resumen' ,
totalActions : 'Acciones' ,
loads : 'Cargas' ,
edits : 'Ed.' ,
distinctSkills : 'Habs.' ,
topSkills : 'Top habs.' ,
dailyTrend : 'Tendencia diaria' ,
periodSummary : 'Últimos {days} días' ,
skill : 'Hab.' ,
share : '%' ,
lastUsed : 'Últ. uso' ,
noData : 'No hay datos de uso de habilidades' ,
loadFailed : 'No se pudo cargar el uso de habilidades' ,
otherSkills : 'Otras habs.' ,
} ,
2026-04-22 20:27:33 +08:00
// Registro de cambios
changelog : {
2026-05-20 17:13:32 +08:00
new_0_5_22_1 : 'La API de lista de sesiones de Hermes lee la base de datos del perfil en vez del almacén local de sesiones de la Web UI' ,
new_0_5_23_1 : 'Comandos slash de chat solo para Bridge con sugerencias localizadas' ,
new_0_5_23_2 : 'Historial de comandos persistente para reproducir sesiones sin contaminar contexto, uso ni compresión' ,
new_0_5_23_3 : 'Variables de entorno del perfil gateway aisladas para evitar filtración de credenciales entre perfiles' ,
new_0_5_23_4 : 'Reserva del puerto de la Web UI durante la asignación del gateway para evitar conflictos de arranque' ,
new_0_5_23_5 : 'Corrección del reinicio de autoactualización para no reportar como fallo una salida correcta del helper' ,
new_0_5_24_1 : 'Chat Bridge alineado con API Server para entrada multimodal, prompt del sistema y contexto de workspace' ,
new_0_5_25_1 : 'Acciones de restablecer y clonar salas de chat grupal' ,
new_0_5_25_2 : 'Directorio de estado de la Web UI configurable para diseños de despliegue personalizados' ,
new_0_5_25_3 : 'MiMo agregado como proveedor TTS en ajustes de voz' ,
new_0_5_25_4 : 'Listas de modelos de proveedores personalizados cargadas desde backend para evitar errores CORS del navegador' ,
new_0_5_25_5 : 'Corrección del flujo de aprobación de herramientas en sesiones Bridge' ,
new_0_5_25_6 : 'Eliminada la pista de plataforma CLI forzada en prompts Bridge para preservar instrucciones personalizadas de medios y archivos' ,
new_0_5_25_7 : 'Contenido de imagen base64 mostrado correctamente en el historial de mensajes de usuario' ,
new_0_5_25_8 : 'Pruebas Playwright, cobertura de contrato de streaming de chat, cobertura de modelos de proveedor y línea base de cobertura' ,
new_0_5_26_1 : 'Soporte para rutas de medios Markdown locales y de Windows en historial y mensajes renderizados' ,
new_0_5_26_2 : 'Filtrado de historial vacío del assistant y limpieza del estado de compresión obsoleto al iniciar una nueva ejecución' ,
new_0_5_26_3 : 'Escrituras bloqueadas para actualizaciones de configuración y perfil para reducir corrupción por concurrencia' ,
new_0_5_26_4 : 'Ajustes de canal QQBot y DingTalk' ,
new_0_5_26_5 : 'Detección de puerto CLI portable y mejoras de tamaño del cajón de terminal móvil' ,
new_0_5_26_6 : 'Entornos de perfil Bridge aislados y descubrimiento de plugins Hermes corregido entre entornos Python' ,
new_0_5_26_7 : 'Estados de gateway detenido explicados con diagnósticos de Web UI y estado de carga de logs estable' ,
new_0_5_26_8 : 'Corrección de opciones de restablecimiento de sesión, base URL de proveedor personalizado y destinos dinámicos de entrega' ,
new_0_5_26_9 : 'Interruptor local para mostrar trazas de tool calls en la barra de entrada del chat' ,
new_0_5_26_10 : 'Instalación del paquete Hermes Agent cuando no hay checkout de código fuente disponible' ,
new_0_5_26_11 : 'Login OAuth de xAI Grok para usuarios SuperGrok y actualización de presets de modelos Grok' ,
new_0_5_26_12 : 'Cobertura ampliada de navegador, streaming de chat, proveedor, gateway, configuración, plugins y Bridge' ,
new_0_5_27_1 : 'Ajustes de modelo por sesión para chats Bridge, con proveedor y modelo independientes guardados por sesión' ,
new_0_5_27_2 : 'Clic derecho en una sesión Bridge y elegir Definir modelo para cambiar el modelo de esa sesión' ,
new_0_5_27_3 : 'Las ejecuciones validan el modelo de sesión y vuelven al modelo predeterminado actual si el guardado no está disponible' ,
new_0_5_27_4 : 'La compresión de contexto sigue por defecto el modelo predeterminado seleccionado en el perfil actual' ,
new_0_5_30_1 : 'Bridge chat conserva historial estructurado, corrigiendo respuestas intermitentes ausentes y herramientas omitidas por historial de herramientas aplanado' ,
new_0_5_30_2 : 'El enrutamiento de menciones en chat grupal es más fiable con varios agentes, elimina la propia mención @ antes de entregar y mantiene nombres de usuario tras refrescar' ,
new_0_5_30_3 : 'Páginas de modelos, desplegables de modelo de chat y selección de modelo de sesión se acotan al perfil activo con marcadores predeterminados precisos' ,
new_0_5_30_4 : 'Gestión del gateway simplificada: se elimina la página independiente, cada perfil verifica configuración de plataforma antes de iniciar y un runner ligero gestiona arranques y reinicios' ,
new_0_5_30_5 : 'Arranque del gateway mejorado en Docker, Termux y Windows con manejo de runtime-lock, limpieza de conflictos de puerto, ejecución en segundo plano y soporte de reinicio' ,
new_0_5_30_6 : 'Compatibilidad Windows reforzada para detección de rutas, descargas de archivos y subprocesos de tareas/actualización sin ventanas de terminal parpadeantes' ,
new_0_5_30_7 : 'Escritura de configuración y presets de proveedores corregidos: validar claves .env, enrutar FUN-Codex por Responses API y actualizar modelos Z.AI/GLM' ,
new_0_5_30_8 : 'Detalles del frontend pulidos, incluyendo barra lateral colapsada, etiquetas cortas de grupo, divisor lateral y estilo del esquema de conversación' ,
new_0_5_30_9 : 'La compresión de contexto sigue ajustes del perfil y endurece snapshots obsoletos reutilizando resúmenes previos con una cola segura' ,
new_0_5_31_1 : 'Reinicios del Bridge broker reforzados, renderizado final del stream de chat grupal corregido y enrutamiento {\'@\'}all agregado' ,
new_0_5_31_2 : 'El gestor de archivos puede copiar rutas absolutas y el cajón móvil de sesiones ya no queda detrás del chat' ,
new_0_5_31_3 : 'Selector de perfiles con avatares, subida de avatar personalizado, modal de estado runtime y acciones de reinicio de gateway/perfil' ,
new_0_5_31_4 : 'Avatares de perfil en chat individual, grupal y barra lateral colapsada, con metadatos en Web UI y rutas seguras para Windows' ,
new_0_5_31_5 : 'Mejoras en detección y reinicio de gateway en Docker, Termux y Windows usando gateway_state/gateway.pid para liveness del gateway gestionado' ,
new_0_5_31_6 : 'Endpoint multimedia de generación de imágenes APIKEY.FUN y skill apikey-image-gen integrado para texto-a-imagen, imagen-a-imagen y edición desde el proveedor fun-codex del perfil activo' ,
2026-05-21 14:31:52 +08:00
new_0_5_33_1 : 'Los fallos de ejecución y errores Socket en chat individual y grupal quedan como mensajes Agent rojos en la lista de mensajes' ,
new_0_5_33_2 : 'La búsqueda de sesiones puede limitarse al Profile seleccionado, o buscar en todos los Profiles si no hay uno seleccionado' ,
new_0_5_33_3 : 'La página Skills muestra documentos de recomendaciones en chino/inglés cuando no hay skill seleccionado, y un segundo clic deselecciona el skill' ,
new_0_5_33_4 : 'Se eliminan entradas de changelog i18n sin uso para reducir el tamaño del frontend' ,
new_0_5_33_5 : 'Se corrige el inicio de agent bridge en Windows chino cuando la salida de netstat falla por codificación' ,
new_0_5_33_6 : 'Lista de modelos Nous Portal actualizada desde el catalog público y recomendaciones Portal' ,
new_0_5_33_7 : 'Las listas y estados runtime de Profile leen nombres desde directorios y modelos por defecto desde config, evitando errores por ancho de columnas CLI' ,
2026-05-22 11:12:21 +08:00
new_0_5_34_1 : 'Normaliza resultados de tools multimodales al guardar mensajes de sesión/grupo para evitar imágenes base64 en los replays' ,
new_0_5_34_2 : 'Persiste modelos Hermes personalizados en configuración gestionada por backend y añade endpoints para agregar/eliminar modelos' ,
new_0_5_34_3 : 'Mantiene correctos el uso final de contexto Bridge y los estados de tools al completar ejecuciones' ,
new_0_5_34_4 : 'Mejora filtros de Kanban, visualización de responsables, acciones de tarjetas y detalles de tareas' ,
new_0_5_34_5 : 'Corrige la contabilidad de compresión con caché de contexto fijo de prompt/tools y totales completos de tokens' ,
new_0_5_34_6 : 'Cachea contexto fijo por agent de chat grupal y muestra progreso solo cuando la compresión empieza realmente' ,
new_0_5_34_7 : 'Sincroniza skills integradas de Web UI en todos los Profiles y registra el Profile destino en logs' ,
2026-05-22 12:03:43 +08:00
new_0_5_34_8 : 'Si Kanban falla en Windows, actualiza Hermes para recibir las últimas correcciones de migración de la base Kanban' ,
2026-05-23 10:41:24 +08:00
new_0_5_35_1 : 'Las sesiones Bridge ahora pueden ejecutarse en paralelo entre distintos sessions, mientras los runs del mismo session siguen serializados para conservar el orden' ,
new_0_5_35_2 : 'Añade la página Performance Monitor para CPU/memoria del sistema, Web UI, Bridge Broker, Workers y estado de sesiones activas' ,
new_0_5_35_3 : 'Añade métricas por worker con CPU, memoria, Profile, número de sesiones y estado de ejecución' ,
new_0_5_35_4 : 'Mejora la limpieza del ciclo de vida de Bridge workers para recuperar workers al cerrar el Broker o terminar el proceso padre y reducir procesos Python huérfanos' ,
new_0_5_35_5 : 'Refuerza la compatibilidad del monitoreo con fallbacks de recursos para macOS, Windows, Linux, Docker y Termux' ,
new_0_5_35_6 : 'Performance Monitor ya no se bloquea con requests a workers durante la inicialización de Agent, reduciendo request timeouts en Windows' ,
new_0_5_35_7 : 'Chat Markdown ahora soporta vista previa inline de contenido de texto, y los iconos de descarga bajan archivos directamente sin abrir el drawer' ,
new_0_5_35_8 : 'Mejora el drawer de contenido con cierre en móvil, ancho completo en móvil, 800px en escritorio y fondos consistentes para texto/Markdown' ,
2026-05-24 14:00:31 +08:00
new_0_6_0_1 : 'La gestión por cuenta y por Profile protege de forma coherente sesiones, modelos, uso, Kanban, jobs, subidas, medios y APIs Hermes relacionadas' ,
new_0_6_0_2 : 'Los Skills de medios integrados usan el token de servidor generado solo para endpoints de medios y resuelven credenciales fun-codex/xAI desde el Profile solicitado' ,
new_0_6_0_3 : 'El chat individual y el grupal inyectan el Hermes Profile actual en las instrucciones del run para que los Skills envíen X-Hermes-Profile' ,
new_0_6_0_4 : 'El progreso de subagents de delegate_task se muestra en la UI del chat con estados de inicio, herramienta, progreso y finalización' ,
new_0_6_0_5 : 'Al detener o abortar un run se limpian eventos temporales para que el estado abort anterior no pase al siguiente chat' ,
new_0_6_0_6 : 'Actualiza documentación y sitio web para gestión de cuentas, credenciales predeterminadas, gestión cuenta/Profile, subidas/descargas y Skills de medios' ,
new_0_6_0_7 : 'Añade comandos CLI de mantenimiento para limpiar bloqueos de IP de login y restablecer el login predeterminado admin / 123456' ,
new_0_6_0_8 : 'La versión 0.6.0 marca el límite entre la Web UI de usuario único y multiusuario. Si el modo multiusuario causa problemas, abre un issue y vuelve a la versión 0.5.35 de usuario único si es necesario' ,
2026-04-22 20:27:33 +08:00
} ,
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' ,
2026-05-20 17:13:32 +08:00
fileTree : 'Árbol de archivos' ,
2026-04-23 14:10:14 +08:00
} ,
2026-04-24 20:41:14 +08:00
// Chat grupal
groupChat : {
title : 'Chat grupal' ,
createRoom : 'Crear sala' ,
joinByCode : 'Unirse con codigo' ,
roomName : 'Nombre de la sala' ,
roomNamePlaceholder : 'Ingrese el nombre de la sala' ,
inviteCode : 'Codigo de invitacion' ,
autoGenerate : 'Generar automaticamente' ,
noRooms : 'Aun no hay salas' ,
selectOrCreate : 'Seleccione o cree una sala para comenzar a chatear' ,
agents : 'Agentes' ,
addAgent : 'Agregar agente' ,
selectProfile : 'Seleccione un perfil' ,
agentAdded : 'Agente agregado' ,
agentAlreadyInRoom : 'El agente ya esta en esta sala' ,
2026-05-21 14:54:41 +08:00
agentAddFailedCount : 'No se agregaron {count} agente(s): {details}' ,
2026-04-24 20:41:14 +08:00
noAgents : 'No hay agentes en esta sala' ,
members : 'Miembros' ,
roomCreated : 'Sala creada' ,
roomDeleted : 'Sala eliminada' ,
2026-05-15 15:52:16 +08:00
roomCloned : 'Sala clonada' ,
cloneRoom : 'Clonar sala' ,
2026-05-24 10:55:55 +08:00
copyRoomLink : 'Copiar enlace de sala' ,
2026-04-24 20:41:14 +08:00
deleteRoomConfirm : '¿Eliminar esta sala?' ,
2026-05-15 15:52:16 +08:00
clearContext : 'Limpiar contexto' ,
clearContextConfirm : '¿Limpiar el contexto de esta sala? Se eliminarán mensajes e instantáneas de compresión, pero se conservan agentes y miembros.' ,
contextCleared : 'Contexto limpiado' ,
2026-04-24 20:41:14 +08:00
you : 'Tú' ,
joined : 'Se unio a la sala' ,
joinFailed : 'Error al unirse a la sala' ,
inputPlaceholder : 'Escriba un mensaje... (Enter para enviar)' ,
enterCode : 'Ingrese el codigo de invitacion' ,
yourName : 'Tu nombre' ,
yourNamePlaceholder : 'Ingresa tu nombre para mostrar' ,
yourDescription : 'Descripcion (opcional)' ,
yourDescriptionPlaceholder : 'Cuentales a los demas quien eres...' ,
agentName : 'Nombre del agente' ,
agentNamePlaceholder : 'Nombre personalizado (vacío = nombre del perfil)' ,
agentDesc : 'Descripción del agente' ,
agentDescPlaceholder : 'Describe lo que hace este agente...' ,
agentReplying : 'está respondiendo...' ,
agentCompressing : 'está comprimiendo contexto...' ,
compressionSettings : 'Configuración de compresión' ,
triggerTokens : 'Tokens de activación' ,
triggerTokensDesc : 'Umbral de tokens para activar la compresión' ,
maxHistoryTokens : 'Tokens máximos de historial' ,
maxHistoryTokensDesc : 'Máximo de tokens para el contexto comprimido' ,
tailMessageCount : 'Mensajes recientes' ,
tailMessageCountDesc : 'Número de mensajes recientes a conservar sin comprimir' ,
compressionConfig : 'Config. de compresión' ,
compressNow : 'Comprimir ahora' ,
compressingInProgress : 'Compresión en progreso' ,
compressionSaved : 'Configuración guardada' ,
} ,
2026-04-23 14:10:14 +08:00
// 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' ,
2026-05-22 19:04:15 +08:00
contentDisplay : 'Contenido' ,
2026-04-23 14:10:14 +08:00
download : 'Descargar' ,
2026-04-24 02:31:42 +02:00
downloadFile : 'Descargar archivo' ,
2026-04-23 14:10:14 +08:00
} ,
2026-05-20 17:13:32 +08:00
gateways : {
title : 'Puertas de enlace' ,
running : 'En ejecución' ,
stopped : 'Detenido' ,
started : 'Iniciado' ,
startFailed : 'No se pudo iniciar el gateway' ,
stopFailed : 'No se pudo detener el gateway' ,
} ,
kanban : {
title : 'Tablero Kanban' ,
createTask : 'Nueva tarea' ,
noTasks : 'Sin tareas' ,
allStatuses : 'Todos los estados' ,
allAssignees : 'Todos los responsables' ,
columns : {
triage : 'Clasificación' ,
todo : 'Pendiente' ,
ready : 'Listo' ,
running : 'En curso' ,
blocked : 'Bloqueado' ,
done : 'Completado' ,
archived : 'Archivado' ,
} ,
card : {
assigneeTooltip : 'Responsable' ,
priority : {
low : 'Baja' ,
medium : 'Media' ,
high : 'Alta' ,
} ,
timeAgo : {
justNow : 'ahora mismo' ,
minutes : 'hace {count} min' ,
hours : 'hace {count} h' ,
days : 'hace {count} d' ,
} ,
} ,
board : {
create : 'Nuevo tablero' ,
archive : 'Archivar tablero' ,
archiveConfirm : '¿Archivar el tablero actual?' ,
archived : 'Tablero archivado' ,
created : 'Tablero creado' ,
slugPlaceholder : 'Identificador del tablero, p. ej. project-a' ,
namePlaceholder : 'Nombre visible (opcional)' ,
slugRequired : 'El identificador del tablero es obligatorio' ,
} ,
form : {
title : 'Título' ,
titlePlaceholder : 'Título de la tarea' ,
titleRequired : 'El título es obligatorio' ,
body : 'Descripción' ,
bodyPlaceholder : 'Descripción de la tarea (opcional)' ,
assignee : 'Responsable' ,
selectAssignee : 'Seleccionar responsable...' ,
priority : 'Prioridad' ,
selectPriority : 'Seleccionar prioridad...' ,
} ,
detail : {
status : 'Estado' ,
priority : 'Prioridad' ,
assignee : 'Responsable' ,
tenant : 'Inquilino' ,
createdAt : 'Creada' ,
startedAt : 'Iniciada' ,
completedAt : 'Completada' ,
comments : 'Comentarios' ,
events : 'Eventos' ,
runs : 'Ejecuciones' ,
artifacts : 'Archivos generados' ,
result : 'Resultado' ,
highlights : 'Información clave' ,
sources : 'Fuentes de datos' ,
sessions : 'Sesiones relacionadas' ,
sessionMessages : 'Mensajes de sesión' ,
noSessions : 'No se encontraron sesiones relacionadas.' ,
} ,
action : {
title : 'Acciones' ,
assign : 'Asignar' ,
assignTo : 'Asignar a...' ,
block : 'Bloquear' ,
blockReason : 'Motivo del bloqueo' ,
unblock : 'Desbloquear' ,
complete : 'Completar' ,
completeSummary : 'Resumen de finalización (opcional)' ,
} ,
message : {
loadFailed : 'No se pudo cargar la tarea' ,
taskCreated : 'Tarea creada' ,
taskAssigned : 'Tarea asignada' ,
taskBlocked : 'Tarea bloqueada' ,
taskUnblocked : 'Tarea desbloqueada' ,
taskCompleted : 'Tarea completada' ,
} ,
stats : {
total : 'Total' ,
tasks : 'Tareas' ,
} ,
} ,
2026-04-17 09:09:50 +08:00
}