mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-08-06 01:18:45 +00:00
Batch stream deltas, window long transcripts, lazy-load syntax highlighting, and refine activity/composer interactions. Add title refresh retries plus tests for streaming, windowing, code blocks, and live activity behavior.
351 lines
13 KiB
JSON
351 lines
13 KiB
JSON
{
|
|
"app": {
|
|
"brand": "nanobot",
|
|
"loading": {
|
|
"connecting": "Conectando con nanobot…",
|
|
"boot": "Cargando nanobot…"
|
|
},
|
|
"error": {
|
|
"title": "No se pudo conectar con nanobot",
|
|
"gatewayHint": "Asegúrate de que la gateway esté en ejecución (`nanobot gateway`) y de que esta página esté abierta en la misma máquina."
|
|
},
|
|
"system": {
|
|
"section": "Sistema",
|
|
"restartHint": "Reinicia nanobot para aplicar los cambios de ejecución.",
|
|
"restart": "Reiniciar nanobot",
|
|
"restarting": "Reiniciando..."
|
|
},
|
|
"restart": {
|
|
"completed": "Reinicio completado en {{seconds}} s."
|
|
},
|
|
"documentTitle": {
|
|
"base": "nanobot",
|
|
"chat": "{{title}} · nanobot"
|
|
},
|
|
"meta": {
|
|
"description": "Interfaz web de nanobot: conversa con tu espacio de trabajo de nanobot."
|
|
}
|
|
},
|
|
"sidebar": {
|
|
"collapse": "Contraer barra lateral",
|
|
"toggleTheme": "Cambiar tema",
|
|
"newChat": "Nuevo chat",
|
|
"recent": "Recientes",
|
|
"refreshSessions": "Actualizar sesiones",
|
|
"settings": "Configuración",
|
|
"language": {
|
|
"label": "Idioma",
|
|
"ariaLabel": "Cambiar idioma"
|
|
}
|
|
},
|
|
"settings": {
|
|
"backToChat": "Volver al chat",
|
|
"sidebar": {
|
|
"title": "Configuración",
|
|
"ariaLabel": "Secciones de configuración"
|
|
},
|
|
"nav": {
|
|
"general": "General",
|
|
"byok": "BYOK"
|
|
},
|
|
"sections": {
|
|
"interface": "Interfaz",
|
|
"ai": "IA",
|
|
"system": "Sistema"
|
|
},
|
|
"rows": {
|
|
"theme": "Tema",
|
|
"language": "Idioma",
|
|
"provider": "Proveedor",
|
|
"model": "Modelo",
|
|
"restart": "Reiniciar nanobot",
|
|
"configPath": "Ruta de configuración"
|
|
},
|
|
"help": {
|
|
"theme": "Cambia entre apariencia clara y oscura.",
|
|
"language": "Elige el idioma usado por la WebUI.",
|
|
"provider": "Selecciona el proveedor para nuevas solicitudes de modelo.",
|
|
"model": "Define el nombre del modelo predeterminado que usa nanobot.",
|
|
"configPath": "El archivo de configuración que usa actualmente el gateway."
|
|
},
|
|
"values": {
|
|
"light": "Claro",
|
|
"dark": "Oscuro",
|
|
"notAvailable": "No disponible"
|
|
},
|
|
"status": {
|
|
"loading": "Cargando configuración...",
|
|
"loadError": "No se pudo cargar la configuración",
|
|
"unsaved": "Hay cambios sin guardar.",
|
|
"savedRestart": "Guardado. Reinicia nanobot para aplicar."
|
|
},
|
|
"actions": {
|
|
"save": "Guardar",
|
|
"saving": "Guardando",
|
|
"edit": "Editar",
|
|
"cancel": "Cancelar"
|
|
},
|
|
"byok": {
|
|
"description": "Usa tus propias claves de proveedor. Nanobot lee estos valores desde la configuración actual, y solo los proveedores configurados se pueden elegir en General.",
|
|
"configured": "Configurado",
|
|
"notConfigured": "Sin configurar",
|
|
"configuredSection": "Configurados",
|
|
"notConfiguredSection": "Sin configurar",
|
|
"showMore": "Mostrar {{count}} más",
|
|
"showLess": "Mostrar menos",
|
|
"apiKey": "API key",
|
|
"apiBase": "API base",
|
|
"apiKeyPlaceholder": "Introduce la API key",
|
|
"apiKeyConfiguredPlaceholder": "Deja vacío para conservar la key actual",
|
|
"configuredKeyHint": "Key configurada",
|
|
"apiBasePlaceholder": "Usar el valor predeterminado del proveedor",
|
|
"apiKeyRequired": "Se requiere una API key para configurar este proveedor.",
|
|
"showApiKey": "Mostrar API key",
|
|
"hideApiKey": "Ocultar API key",
|
|
"noConfiguredProviders": "No hay proveedores configurados",
|
|
"configureFirst": "Configura primero un proveedor en BYOK.",
|
|
"openByok": "Abrir BYOK",
|
|
"tabs": {
|
|
"ariaLabel": "Tipo de credencial BYOK",
|
|
"llm": "LLM",
|
|
"webSearch": "Web Search"
|
|
},
|
|
"webSearch": {
|
|
"provider": "Proveedor de búsqueda",
|
|
"providerHelp": "Elige el backend que usará la herramienta web search.",
|
|
"selectProvider": "Seleccionar proveedor",
|
|
"credentials": "Credenciales",
|
|
"noCredentialRequired": "No requiere key",
|
|
"noCredentialHelp": "DuckDuckGo funciona sin guardar una API key.",
|
|
"apiKeyHelp": "Se guarda en config y se muestra enmascarada después de guardar.",
|
|
"baseUrl": "Base URL",
|
|
"baseUrlHelp": "SearXNG necesita la URL de tu propia instancia.",
|
|
"baseUrlPlaceholder": "https://search.example.com",
|
|
"apiKeyRequired": "Este proveedor de búsqueda requiere una API key.",
|
|
"baseUrlRequired": "SearXNG requiere una Base URL.",
|
|
"missingCredential": "Añade la credencial requerida antes de guardar.",
|
|
"saveHint": "Los cambios se aplican a nuevas solicitudes de web search."
|
|
}
|
|
}
|
|
},
|
|
"chat": {
|
|
"fallbackTitle": "Chat {{id}}",
|
|
"loading": "Cargando…",
|
|
"noSessions": "Todavía no hay sesiones.",
|
|
"actions": "Acciones del chat {{title}}",
|
|
"delete": "Eliminar",
|
|
"newChat": "Nuevo chat"
|
|
},
|
|
"deleteConfirm": {
|
|
"title": "¿Eliminar este chat?",
|
|
"description": "Esta acción no se puede deshacer.",
|
|
"cancel": "Cancelar",
|
|
"confirm": "Eliminar"
|
|
},
|
|
"connection": {
|
|
"idle": "Inactivo",
|
|
"connecting": "Conectando…",
|
|
"open": "Conectado",
|
|
"reconnecting": "Reconectando…",
|
|
"closed": "Desconectado",
|
|
"error": "Error de conexión"
|
|
},
|
|
"thread": {
|
|
"loadingConversation": "Cargando conversación…",
|
|
"empty": {
|
|
"description": "Haz preguntas, continúa tu trabajo local o inicia un nuevo hilo.",
|
|
"greeting": "¿Qué puedo hacer por ti?",
|
|
"quickActions": {
|
|
"plan": {
|
|
"title": "Crear un plan de proyecto",
|
|
"prompt": "Crea un plan de proyecto conciso para lo que debería construir después."
|
|
},
|
|
"analyze": {
|
|
"title": "Analizar estos datos",
|
|
"prompt": "Ayúdame a analizar estos datos y destaca los patrones más importantes."
|
|
},
|
|
"brainstorm": {
|
|
"title": "Lluvia de ideas",
|
|
"prompt": "Propón algunas ideas prácticas y sus compensaciones para este problema."
|
|
},
|
|
"code": {
|
|
"title": "Escribir código",
|
|
"prompt": "Ayúdame a escribir el código para esta tarea, empezando por el cambio útil más pequeño."
|
|
},
|
|
"summarize": {
|
|
"title": "Resumir este documento",
|
|
"prompt": "Resume este documento y enumera las conclusiones clave."
|
|
},
|
|
"more": {
|
|
"title": "Más",
|
|
"prompt": "Muéstrame algunas formas útiles en las que puedes ayudar en este workspace."
|
|
}
|
|
},
|
|
"imageQuickActions": {
|
|
"icon": {
|
|
"title": "Diseñar un icono de app",
|
|
"prompt": "Genera un icono de app 1:1 limpio para nanobot: robot amigable, estilo vectorial simple, paleta suave azul y blanca, sin texto."
|
|
},
|
|
"sticker": {
|
|
"title": "Crear un sticker",
|
|
"prompt": "Genera una imagen estilo sticker de un pequeño asistente robot, con fondo de apariencia transparente, expresivo y divertido."
|
|
},
|
|
"poster": {
|
|
"title": "Crear un póster",
|
|
"prompt": "Genera un concepto de póster pulido para un asistente personal de IA, composición moderna, jerarquía visual fuerte, apto para una landing page."
|
|
},
|
|
"product": {
|
|
"title": "Mockup de producto",
|
|
"prompt": "Genera una imagen limpia de mockup de producto para una app web de IA conversacional, interfaz mínima, iluminación premium, marco de dispositivo realista."
|
|
},
|
|
"portrait": {
|
|
"title": "Retrato estilizado",
|
|
"prompt": "Genera un retrato estilizado de un compañero de IA amigable, luz suave, detallado pero cercano, estilo de ilustración moderna."
|
|
},
|
|
"edit": {
|
|
"title": "Editar una imagen",
|
|
"prompt": "Ayúdame a editar una imagen. Primero pídeme que suba o indique la imagen, y luego genera el resultado editado."
|
|
}
|
|
}
|
|
},
|
|
"header": {
|
|
"toggleSidebar": "Mostrar u ocultar la barra lateral"
|
|
},
|
|
"composer": {
|
|
"placeholderThread": "Escribe tu mensaje…",
|
|
"placeholderHero": "¿Qué tienes en mente?",
|
|
"placeholderOpening": "Abriendo un nuevo chat…",
|
|
"placeholderStreaming": "El modelo está respondiendo…",
|
|
"inputAria": "Entrada de mensaje",
|
|
"sendHint": "Enter para enviar · Shift+Enter para nueva línea",
|
|
"runRuntimeTitle": "En ejecución · {{elapsed}}",
|
|
"goalStateStrip": "Objetivo · {{label}}",
|
|
"goalStateFallback": "Objetivo",
|
|
"goalStateExpandAria": "Ver objetivo completo",
|
|
"goalStateSheetTitle": "Objetivo",
|
|
"send": "Enviar mensaje",
|
|
"stop": "Detener respuesta",
|
|
"attachImage": "Adjuntar imagen",
|
|
"imageMode": {
|
|
"label": "Generar imagen",
|
|
"toggle": "Activar o desactivar modo de generación de imágenes",
|
|
"placeholder": "Describe o edita una imagen…",
|
|
"aspectAria": "Relación de aspecto de imagen",
|
|
"aspectLabel": "Formato de imagen",
|
|
"aspect": {
|
|
"auto": "Auto",
|
|
"1_1": "Cuadrado 1:1",
|
|
"3_4": "Vertical 3:4",
|
|
"9_16": "Historia 9:16",
|
|
"4_3": "Horizontal 4:3",
|
|
"16_9": "Panorámico 16:9"
|
|
}
|
|
},
|
|
"encoding": "Procesando…",
|
|
"remove": "Quitar adjunto",
|
|
"normalizedSizeHint": "{{orig}} → {{current}} (auto)",
|
|
"imageRejected": {
|
|
"unsupported_type": "Tipo de archivo no compatible",
|
|
"too_many_images": "Máximo {{max}} imágenes por mensaje",
|
|
"magic_mismatch": "El archivo no parece una imagen real",
|
|
"decode_failed": "No se pudo decodificar esta imagen",
|
|
"too_large": "Imagen demasiado grande — prueba una más pequeña",
|
|
"io": "No se pudo leer este archivo"
|
|
},
|
|
"slash": {
|
|
"ariaLabel": "Comandos slash",
|
|
"label": "comandos",
|
|
"navigateHint": "↑↓ Navegar",
|
|
"selectHint": "Enter/Tab Insertar",
|
|
"closeHint": "Esc Cerrar",
|
|
"commands": {
|
|
"new": {
|
|
"title": "Nuevo chat",
|
|
"description": "Detiene la tarea actual e inicia una conversación nueva."
|
|
},
|
|
"stop": {
|
|
"title": "Detener tarea actual",
|
|
"description": "Cancela el turno activo del agent en este chat."
|
|
},
|
|
"restart": {
|
|
"title": "Reiniciar nanobot",
|
|
"description": "Reinicia el proceso del bot en el mismo lugar."
|
|
},
|
|
"status": {
|
|
"title": "Mostrar estado",
|
|
"description": "Muestra el estado del runtime, provider y channels."
|
|
},
|
|
"history": {
|
|
"title": "Mostrar historial",
|
|
"description": "Imprime los últimos N mensajes persistidos de la conversación."
|
|
},
|
|
"dream": {
|
|
"title": "Ejecutar Dream",
|
|
"description": "Activa manualmente la consolidación de memoria."
|
|
},
|
|
"dream_log": {
|
|
"title": "Mostrar registro de Dream",
|
|
"description": "Muestra qué cambió la última consolidación Dream."
|
|
},
|
|
"dream_restore": {
|
|
"title": "Restaurar memoria",
|
|
"description": "Revierte la memoria a una instantánea Dream anterior."
|
|
},
|
|
"goal": {
|
|
"title": "Objetivo a largo plazo",
|
|
"description": "Indica al agente que trate esto como un objetivo sostenido en varios pasos."
|
|
},
|
|
"help": {
|
|
"title": "Mostrar ayuda",
|
|
"description": "Lista los comandos slash disponibles."
|
|
}
|
|
}
|
|
},
|
|
"goalStateCloseAria": "Cerrar objetivo"
|
|
},
|
|
"scrollToBottom": "Desplazarse al final",
|
|
"loadEarlier": "Cargar mensajes anteriores"
|
|
},
|
|
"message": {
|
|
"streaming": "transmitiendo",
|
|
"assistantTyping": "El asistente está escribiendo",
|
|
"toolSingle": "Usando una herramienta",
|
|
"toolMany": "Se usaron {{count}} herramientas",
|
|
"toolSummary": "{{count}} herramienta",
|
|
"toolSummaryMany": "{{count}} herramientas",
|
|
"reasoningTools": "Razonamiento · {{count}} herramientas",
|
|
"reasoningToolsSingular": "Razonamiento · 1 herramienta",
|
|
"reasoning": "Razonamiento",
|
|
"reasoningStreaming": "Pensando…",
|
|
"reasoningSummary": "Razonamiento",
|
|
"agentActivitySummary": "{{reasoning}} pasos · {{tools}} llamadas a herramientas",
|
|
"agentActivityToolsOnly": "{{tools}} llamadas a herramientas",
|
|
"agentActivityLiveSummary": "En curso… · {{reasoning}} pasos · {{tools}} llamadas a herramientas",
|
|
"agentActivityLiveToolsOnly": "En curso… · {{tools}} llamadas a herramientas",
|
|
"imageAttachment": "Imagen adjunta",
|
|
"turnLatencyTitle": "Tiempo de respuesta (extremo a extremo)"
|
|
},
|
|
"lightbox": {
|
|
"title": "Vista previa de imagen",
|
|
"open": "Ver imagen",
|
|
"prev": "Imagen anterior",
|
|
"next": "Imagen siguiente",
|
|
"close": "Cerrar vista previa"
|
|
},
|
|
"code": {
|
|
"fallbackLanguage": "código",
|
|
"copyAria": "Copiar código",
|
|
"copy": "Copiar",
|
|
"copied": "Copiado"
|
|
},
|
|
"common": {
|
|
"dismiss": "Cerrar"
|
|
},
|
|
"errors": {
|
|
"messageTooBig": {
|
|
"title": "Mensaje demasiado grande",
|
|
"body": "El servidor rechazó tu último mensaje por superar el tamaño permitido. Quita algunas imágenes o usa archivos más pequeños y vuelve a enviarlo."
|
|
}
|
|
}
|
|
}
|