feat: i18n 11 languages + website update + fix #139 #140 #141

i18n:
- Add 9 new locale files (ja/ko/de/es/fr/pt/ru/vi/zh-TW)
- Add multilingual README files for all 11 languages
- Add locale helper, index, and modular translation system
- Add translation generation scripts

Website (docs/index.html):
- Replace 公益AI接口 branding with 晴辰云AI接口
- Remove OpenClaw 独立安装包 promotion block
- Update SEO meta tags (description, keywords, OG, Twitter, JSON-LD)
- Add 11-language README links to footer
- Update 元宝派 link to new URL

Bug fixes:
- fix(cron): delivery format mode:'push' → mode:'announce', remove invalid 'to' field (fixes #141)
- fix(cron): allow single-channel users to select delivery channel
- fix(cron): preserve delivery field in job state for editing
- fix(models): add 'ollama' as recognized API type, prevent overwriting native ollama config (fixes #140)
- fix(models): skip /v1 append for ollama native API baseUrl
- fix(assistant): normalize 'google-generative-ai' consistently, add ollama hints
- fix(version): use CLI path classification for source detection on Windows (fixes #139)
- fix(version): default to 'official' instead of 'chinese' when source unknown
- fix(version): reorder npm global package check based on active CLI
This commit is contained in:
晴天
2026-03-24 22:31:11 +08:00
parent f8af3bea4a
commit 985d263dc6
261 changed files with 26760 additions and 175 deletions

View File

@@ -0,0 +1,24 @@
{
"title": "Acerca de",
"desc": "Información de versión y proyecto de ClawPanel",
"subtitle": "Panel de gestión visual de OpenClaw",
"sectionCommunity": "Comunidad",
"sectionContribute": "Contribuir",
"sectionLinks": "Enlaces",
"checkingUpdate": "Verificando actualizaciones...",
"official": "Oficial",
"notInstalled": "No instalado",
"versionLabel": "Versión",
"recommended": "Recomendado",
"current": "Actual",
"upToDate": "Actualizado",
"checkUpdateFailed": "Error al verificar actualizaciones",
"joinDiscord": "Unirse a Discord",
"discordDesc": "Comunidad internacional",
"communityWelcome": "¡Bienvenido a la comunidad OpenClaw! Reporta problemas en cualquier momento, hagamos juntos que los AI Agents sean mejores.",
"communityWelcomeIntl": "Welcome to the OpenClaw community! Share ideas, get help, and build amazing AI agents together.",
"submitIssue": "Enviar Issue",
"submitPR": "Enviar PR",
"officialWebsite": "Sitio web oficial",
"openSourceRepo": "Repositorio de código abierto"
}

View File

@@ -0,0 +1,23 @@
{
"title": "Gestión de Agentes",
"desc": "Crear y gestionar OpenClaw Agents",
"addAgent": "+ Nuevo Agent",
"noAgents": "Sin Agentes",
"loadFailed": "Error al cargar",
"default": "Predeterminado",
"backup": "Respaldo",
"edit": "Editar",
"delete": "Eliminar",
"notSet": "No configurado",
"addTitle": "Nuevo Agent",
"agentId": "Agent ID",
"agentName": "Nombre",
"agentModel": "Modelo",
"created": "Agent creado",
"createFailed": "Error al crear",
"editTitle": "Editar Agent — {id}",
"updated": "Actualizado",
"updateFailed": "Error al actualizar",
"deleted": "Eliminado",
"deleteFailed": "Error al eliminar"
}

View File

@@ -0,0 +1,27 @@
{
"defaultName": "Asistente IA",
"welcomeText": "¡Hola! Soy el asistente IA. ¿En qué puedo ayudarle?",
"loading": "Cargando...",
"settings": "Configuración",
"settingsTitle": "Configuración del asistente",
"settingsSaved": "Configuración guardada",
"model": "Modelo",
"temperature": "Temperatura",
"testSuccess": "Conexión exitosa",
"testFailed": "Conexión fallida",
"testing": "Probando...",
"testBtn": "Probar conexión",
"send": "Enviar",
"inputPlaceholder": "Describa el problema...",
"stopped": "Detenido",
"retry": "Reintentar",
"copyText": "Copiar texto",
"newSession": "Nueva sesión",
"deleteSession": "Eliminar sesión",
"noSessions": "Sin sesiones",
"sessionList": "Lista de sesiones",
"aiThinking": "Pensando...",
"confirmAllow": "Permitir ejecución",
"toolExecuting": "Ejecutando...",
"toolDone": "Ejecución completada"
}

View File

@@ -0,0 +1,32 @@
{
"title": "Canales",
"desc": "Gestionar canales de mensajería y conexiones de plataforma",
"addChannel": "+ Agregar canal",
"noChannels": "Sin canales",
"channelName": "Nombre del canal",
"platform": "Plataforma",
"status": "Estado",
"connected": "Conectado",
"disconnected": "Desconectado",
"edit": "Editar",
"delete": "Eliminar",
"save": "Guardar",
"saved": "Guardado",
"saveFailed": "Error al guardar",
"deleted": "Eliminado",
"loadFailed": "Error al cargar",
"testConnection": "Probar conexión",
"testing": "Probando...",
"testSuccess": "Conexión exitosa",
"testFailed": "Conexión fallida",
"bindAgent": "Vincular Agent",
"selectAgent": "Seleccionar Agent",
"pairingTitle": "Emparejamiento",
"approve": "Aprobar",
"configTitle": "Configuración del canal",
"restartRequired": "Se requiere reiniciar Gateway",
"installPlugin": "Instalar plugin",
"installing": "Instalando...",
"installSuccess": "Instalado",
"installFailed": "Instalación fallida"
}

View File

@@ -0,0 +1,22 @@
{
"title": "Chat en vivo",
"desc": "Chatear con el Agent en tiempo real",
"selectAgent": "Seleccionar Agent",
"connecting": "Conectando...",
"connected": "Conectado",
"disconnected": "Desconectado",
"send": "Enviar",
"inputPlaceholder": "Escribe un mensaje...",
"noMessages": "Sin mensajes",
"clearChat": "Limpiar historial",
"newSession": "Nueva sesión",
"noSessions": "Sin sesiones",
"copyMessage": "Copiar",
"thinking": "Pensando...",
"generating": "Generando...",
"stop": "Detener",
"regenerate": "Regenerar",
"modelSelect": "Seleccionar modelo",
"gatewayNotRunning": "Gateway no está ejecutando",
"startGateway": "Iniciar Gateway"
}

View File

@@ -0,0 +1,16 @@
{
"title": "Diagnóstico del sistema",
"desc": "Diagnóstico de conexión WebSocket y depuración de red",
"wsStatus": "Estado WebSocket",
"wsConnect": "Conectar",
"wsDisconnect": "Desconectar",
"wsConnected": "Conectado",
"wsDisconnected": "No conectado",
"wsConnecting": "Conectando...",
"wsError": "Error WebSocket",
"networkLogTitle": "Registro de solicitudes de red",
"noRequests": "Sin solicitudes",
"totalRequests": "Total de solicitudes",
"fixStarting": "Iniciando reparación...",
"fixFailed": "Reparación fallida"
}

View File

@@ -0,0 +1,42 @@
{
"save": "Guardar",
"cancel": "Cancelar",
"confirm": "Confirmar",
"delete": "Eliminar",
"edit": "Editar",
"add": "Agregar",
"close": "Cerrar",
"loading": "Cargando...",
"retry": "Reintentar",
"copy": "Copiar",
"copied": "Copiado",
"search": "Buscar",
"refresh": "Actualizar",
"back": "Volver",
"submit": "Enviar",
"reset": "Restablecer",
"enabled": "Habilitado",
"disabled": "Deshabilitado",
"unknown": "Desconocido",
"none": "Ninguno",
"yes": "Sí",
"no": "No",
"online": "En línea",
"offline": "Fuera de línea",
"running": "Ejecutando",
"stopped": "Detenido",
"error": "Error",
"success": "Éxito",
"warning": "Advertencia",
"info": "Información",
"loadFailed": "Error al cargar",
"saveFailed": "Error al guardar",
"saveSuccess": "Guardado correctamente",
"operationFailed": "Operación fallida",
"operationSuccess": "Operación exitosa",
"noData": "Sin datos",
"unit": "",
"survivalRate": "Disponibilidad",
"settings": "Configuración",
"update": "Actualizar"
}

View File

@@ -0,0 +1,28 @@
{
"title": "Comunicación y Automatización",
"desc": "Configurar canales de notificación y reglas de automatización",
"notifyTitle": "Canales de notificación",
"automationTitle": "Reglas de automatización",
"addChannel": "+ Agregar canal",
"addRule": "+ Agregar regla",
"noChannels": "Sin canales",
"noRules": "Sin reglas",
"channelName": "Nombre del canal",
"enabled": "Habilitado",
"disabled": "Deshabilitado",
"test": "Enviar prueba",
"testing": "Probando...",
"testSuccess": "Prueba exitosa",
"testFailed": "Prueba fallida",
"save": "Guardar",
"saved": "Guardado",
"saveFailed": "Error al guardar",
"delete": "Eliminar",
"deleted": "Eliminado",
"deleteFailed": "Error al eliminar",
"loadFailed": "Error al cargar",
"trigger": "Activador",
"action": "Acción",
"selectAgent": "Seleccionar Agent",
"approve": "Aprobar"
}

View File

@@ -0,0 +1,19 @@
{
"title": "Tareas programadas",
"desc": "Gestionar tareas programadas de OpenClaw",
"addTask": "+ Agregar tarea",
"noTasks": "Sin tareas",
"taskName": "Nombre de tarea",
"schedule": "Programación",
"status": "Estado",
"active": "Activa",
"inactive": "Inactiva",
"edit": "Editar",
"delete": "Eliminar",
"enable": "Habilitar",
"disable": "Deshabilitar",
"runNow": "Ejecutar ahora",
"created": "Tarea creada",
"deleted": "Tarea eliminada",
"loadFailed": "Error al cargar"
}

View File

@@ -0,0 +1,32 @@
{
"title": "Panel",
"desc": "Resumen del estado de OpenClaw",
"gateway": "Gateway",
"notStarted": "No iniciado",
"versionLabel": "Versión",
"agentFleet": "Flota de Agentes",
"defaultAgent": "Predeterminado",
"modelPool": "Pool de modelos",
"baseServices": "Servicios base",
"controlUI": "Control UI",
"restartGw": "Reiniciar Gateway",
"checkUpdate": "Buscar actualizaciones",
"createBackup": "Crear respaldo",
"recentLogs": "Registros recientes",
"cliPath": "Ruta CLI",
"retry": "Reintentar",
"notSet": "No configurado",
"port": "Puerto",
"startBtn": "Iniciar",
"stopBtn": "Detener",
"restartBtn": "Reiniciar",
"primaryModel": "Modelo principal",
"noLogs": "Sin registros",
"starting": "Iniciando...",
"stopping": "Deteniendo...",
"restarting": "Reiniciando...",
"checking": "Verificando...",
"upToDate": "Actualizado",
"backingUp": "Respaldando...",
"backupFail": "Respaldo fallido"
}

View File

@@ -0,0 +1,18 @@
{
"title": "Herramientas de extensión",
"desc": "Gestionar cftunnel y ClawApp",
"cftunnelTitle": "cftunnel",
"clawappTitle": "ClawApp",
"installBtn": "Instalación rápida",
"status": "Estado",
"running": "Ejecutando",
"stopped": "Detenido",
"version": "Versión",
"startTunnel": "Iniciar túnel",
"stopTunnel": "Detener túnel",
"start": "Iniciar",
"stop": "Detener",
"installing": "Instalando...",
"installDone": "Instalación completada",
"installFailed": "Instalación fallida"
}

View File

@@ -0,0 +1,17 @@
{
"title": "Gateway",
"desc": "Configurar y gestionar Gateway",
"status": "Estado",
"running": "Ejecutando",
"stopped": "Detenido",
"port": "Puerto",
"saveConfig": "Guardar configuración",
"saved": "Configuración de Gateway guardada",
"saveFailed": "Error al guardar",
"restartRequired": "Se requiere reiniciar Gateway",
"restartNow": "Reiniciar ahora",
"configLoadFail": "Error al cargar configuración",
"pairingTitle": "Emparejamiento de dispositivos",
"pairedDevices": "Dispositivos emparejados",
"noPairedDevices": "Sin dispositivos emparejados"
}

View File

@@ -0,0 +1,11 @@
{
"local": "Local",
"remote": "Remoto",
"docker": "Docker",
"addInstance": "Agregar instancia",
"addRemote": "Agregar instancia remota",
"nameLabel": "Nombre",
"endpointLabel": "Dirección del panel",
"adding": "Agregando...",
"current": "Actual"
}

View File

@@ -0,0 +1,17 @@
{
"title": "Registros",
"desc": "Ver registros del servicio OpenClaw",
"tabGateway": "Gateway",
"tabGatewayErr": "Errores Gateway",
"tabGuardian": "Guardian",
"tabBackup": "Respaldo",
"tabAudit": "Auditoría",
"searchPlaceholder": "Buscar...",
"refresh": "Actualizar",
"autoScroll": "Auto-desplazar",
"loading": "Cargando...",
"empty": "Sin registros",
"loadFailed": "Error al cargar",
"noResults": "Sin resultados",
"searchFailed": "Búsqueda fallida"
}

View File

@@ -0,0 +1,17 @@
{
"title": "Memoria",
"desc": "Gestionar archivos de memoria del Agent",
"noFiles": "Sin archivos",
"view": "Ver",
"download": "Descargar",
"delete": "Eliminar",
"upload": "Subir",
"uploading": "Subiendo...",
"uploaded": "Subido",
"uploadFailed": "Error al subir",
"deleted": "Eliminado",
"deleteFailed": "Error al eliminar",
"loadFailed": "Error al cargar",
"selectAgent": "Seleccionar Agent",
"searchPlaceholder": "Buscar..."
}

View File

@@ -0,0 +1,5 @@
{
"confirmTitle": "Confirmar",
"confirmOk": "Aceptar",
"confirmCancel": "Cancelar"
}

View File

@@ -0,0 +1,21 @@
{
"title": "Configuración de modelos",
"desc": "Gestionar proveedores y modelos de IA",
"addProvider": "+ Agregar proveedor",
"noProviders": "Sin proveedores",
"providerName": "Nombre del proveedor",
"baseUrl": "Base URL",
"apiKey": "API Key",
"models": "Modelos",
"addModel": "Agregar modelo",
"saveProvider": "Guardar",
"testConnection": "Probar conexión",
"testing": "Probando...",
"testSuccess": "Conexión exitosa",
"testFailed": "Conexión fallida",
"fetchModels": "Obtener lista de modelos",
"primaryModel": "Modelo principal",
"enabled": "Habilitado",
"disabled": "Deshabilitado",
"loadFailed": "Error al cargar configuración"
}

View File

@@ -0,0 +1,8 @@
{
"title": "Seguridad",
"desc": "Gestionar configuración de seguridad de OpenClaw",
"toolPermissions": "Permisos de herramientas",
"savePermissions": "Guardar permisos",
"permSaved": "Permisos guardados",
"loadFailed": "Error al cargar configuración"
}

View File

@@ -0,0 +1,23 @@
{
"title": "Gestión de servicios",
"desc": "Iniciar, detener y monitorear servicios OpenClaw",
"gatewayTitle": "Servicio Gateway",
"guardianTitle": "Servicio Guardian",
"status": "Estado",
"pid": "PID",
"uptime": "Tiempo activo",
"port": "Puerto",
"host": "Host",
"start": "Iniciar",
"stop": "Detener",
"restart": "Reiniciar",
"forceKill": "Forzar cierre",
"viewLogs": "Ver registros",
"starting": "Iniciando...",
"stopping": "Deteniendo...",
"restarting": "Reiniciando...",
"loadFail": "Error al cargar estado",
"healthCheck": "Verificación de salud",
"healthOk": "Funcionando correctamente",
"healthFail": "Sin respuesta"
}

View File

@@ -0,0 +1,13 @@
{
"title": "Configuración del panel",
"desc": "Gestionar configuración de red, proxy y fuentes de descarga",
"networkProxy": "Proxy de red",
"modelProxy": "Proxy de solicitudes de modelo",
"npmRegistry": "npm Registry",
"language": "Idioma de visualización",
"languageHint": "Cambiar el idioma de la interfaz.",
"testProxy": "Probar conexión",
"clearProxy": "Desactivar proxy",
"resetDefault": "Restaurar predeterminado",
"restarting": "Reiniciando..."
}

View File

@@ -0,0 +1,23 @@
{
"title": "Configuración inicial",
"desc": "Instalar y configurar OpenClaw",
"headerTitle": "Bienvenido a ClawPanel",
"recheck": "Verificar de nuevo",
"stepNode": "Entorno Node.js",
"installed": "Instalado",
"downloadNode": "Descargar Node.js",
"stepGit": "Git",
"stepConfig": "Archivo de configuración",
"saveBtn": "Guardar",
"resetDefaultBtn": "Restaurar predeterminado",
"aiAssistant": "Asistente IA",
"openAiAssistant": "Abrir asistente IA",
"nextStepsTitle": "Próximos pasos",
"configModels": "Configurar modelos",
"gatewaySetup": "Configurar Gateway",
"messageChannels": "Canales",
"enterPanel": "Entrar al panel",
"installBtn": "Instalación rápida",
"installOpenclaw": "Instalar OpenClaw",
"installComplete": "Instalación completada"
}

View File

@@ -0,0 +1,29 @@
{
"collapse": "Colapsar",
"closeMenu": "Cerrar menú",
"themeLight": "Claro",
"themeDark": "Oscuro",
"sectionMonitor": "Monitoreo",
"sectionConfig": "Configuración",
"sectionData": "Datos",
"sectionExtension": "Extensiones",
"dashboard": "Panel",
"assistant": "Asistente",
"chat": "Chat",
"services": "Servicios",
"logs": "Registros",
"models": "Modelos",
"agents": "Agentes",
"gateway": "Gateway",
"channels": "Canales",
"communication": "Comunicación",
"security": "Seguridad",
"memory": "Memoria",
"cron": "Tareas",
"usage": "Uso",
"skills": "Skills",
"settings": "Configuración",
"chatDebug": "Diagnóstico",
"about": "Acerca de",
"setup": "Configuración inicial"
}

View File

@@ -0,0 +1,19 @@
{
"title": "Skills",
"desc": "Gestionar e instalar OpenClaw Skills",
"installed": "Instalados",
"available": "Disponibles",
"noSkills": "Sin Skills",
"install": "Instalar",
"uninstall": "Desinstalar",
"update": "Actualizar",
"search": "Buscar Skills...",
"installing": "Instalando...",
"installSuccess": "Instalado",
"installFailed": "Error al instalar",
"loadFailed": "Error al cargar",
"noResults": "Sin resultados",
"refreshList": "Actualizar lista",
"checkUpdates": "Buscar actualizaciones",
"noUpdates": "Todo actualizado"
}

View File

@@ -0,0 +1,4 @@
{
"copySuccess": "Copiado al portapapeles",
"copyFailed": "Error al copiar"
}

View File

@@ -0,0 +1,17 @@
{
"title": "Uso",
"desc": "Ver estadísticas de uso de modelos y tokens",
"totalTokens": "Tokens totales",
"totalRequests": "Solicitudes totales",
"totalCost": "Costo total",
"today": "Hoy",
"week": "Esta semana",
"month": "Este mes",
"all": "Todo",
"noData": "Sin datos",
"model": "Modelo",
"tokens": "Tokens",
"loadFailed": "Error al cargar",
"chart": "Gráfico",
"table": "Tabla"
}