- OpenAI-compatible gateway with intelligent routing via cortiq-router (allaigate) - Embedded build-free admin SPA at /admin: 7 languages (en/ru/de/fr/es/zh/tr), light/dark themes, hot config reload (no restart) - Admin API, per-request statistics + Prometheus /metrics, secret store, playground - English documentation (primary) with Russian translations (*.ru.md)
257 lines
11 KiB
JavaScript
Vendored
257 lines
11 KiB
JavaScript
Vendored
// Spanish — traducciones para la consola de administración de allaigate Gateway.
|
|
export default {
|
|
// brand / common
|
|
"brand.sub": "Gateway",
|
|
"common.loading": "Cargando…",
|
|
"common.save": "Guardar",
|
|
"common.saving": "Guardando…",
|
|
"common.cancel": "Cancelar",
|
|
"common.add": "Agregar",
|
|
"common.edit": "Editar",
|
|
"common.delete": "Eliminar",
|
|
"common.close": "Cerrar",
|
|
"common.test": "Probar",
|
|
"common.copy": "Copiar",
|
|
"common.copied": "Copiado",
|
|
"common.confirm": "Confirmar",
|
|
"common.none": "ninguno",
|
|
"common.saved": "Guardado",
|
|
"common.error": "Error",
|
|
"common.ok": "OK",
|
|
"common.refresh": "Actualizar",
|
|
"common.actions": "Acciones",
|
|
"common.optional": "opcional",
|
|
"common.search": "Buscar",
|
|
"common.all": "todos",
|
|
|
|
// nav
|
|
"nav.dashboard": "Panel",
|
|
"nav.models": "Modelos",
|
|
"nav.routing": "Enrutamiento",
|
|
"nav.protocols": "Protocolos",
|
|
"nav.keys": "Claves API",
|
|
"nav.playground": "Playground",
|
|
"nav.settings": "Configuración",
|
|
"nav.foot": "Gateway · v{v}",
|
|
|
|
// topbar / status
|
|
"status.router": "Router",
|
|
"status.gateway": "Gateway",
|
|
"status.online": "en línea",
|
|
"status.offline": "sin conexión",
|
|
"status.checking": "verificando…",
|
|
"theme.toggle": "Tema",
|
|
"logout": "Cerrar sesión",
|
|
|
|
// login
|
|
"login.title": "allaigate Gateway",
|
|
"login.subtitle": "Ingresa el token de administrador para gestionar este gateway.",
|
|
"login.token": "Token de administrador",
|
|
"login.tokenPlaceholder": "pega el token de administrador",
|
|
"login.submit": "Abrir consola",
|
|
"login.hint": "El token se imprime en el log del gateway al iniciar, o se configura mediante [admin].token_env.",
|
|
"login.failed": "Token de administrador inválido.",
|
|
|
|
// dashboard
|
|
"dash.title": "Panel",
|
|
"dash.subtitle": "Tráfico en vivo, costos y análisis de enrutamiento de tu pool de modelos.",
|
|
"dash.range": "Rango",
|
|
"dash.range.1h": "1h",
|
|
"dash.range.24h": "24h",
|
|
"dash.range.7d": "7d",
|
|
"dash.kpi.requests": "Solicitudes",
|
|
"dash.kpi.tokens": "Tokens",
|
|
"dash.kpi.cost": "Costo",
|
|
"dash.kpi.latency": "Latencia promedio",
|
|
"dash.kpi.success": "Tasa de éxito",
|
|
"dash.kpi.failovers": "Failovers",
|
|
"dash.series.title": "Solicitudes en el tiempo",
|
|
"dash.series.cost": "Costo en el tiempo",
|
|
"dash.series.empty": "Sin tráfico en este rango.",
|
|
"dash.breakdown.title": "Desglose",
|
|
"dash.groupby.model": "por modelo",
|
|
"dash.groupby.tier": "por nivel",
|
|
"dash.groupby.label": "por tarea",
|
|
"dash.groupby.account": "por cuenta",
|
|
"dash.recent.title": "Solicitudes recientes",
|
|
"dash.recent.empty": "Sin solicitudes registradas. Prueba el Playground.",
|
|
"dash.col.time": "Hora",
|
|
"dash.col.model": "Modelo",
|
|
"dash.col.tier": "Nivel",
|
|
"dash.col.task": "Tarea",
|
|
"dash.col.tokens": "Tokens",
|
|
"dash.col.cost": "Costo",
|
|
"dash.col.latency": "Latencia",
|
|
"dash.col.outcome": "Resultado",
|
|
"dash.col.requests": "Solicitudes",
|
|
"dash.col.errors": "Errores",
|
|
"dash.health.title": "Estado",
|
|
"dash.health.reachable": "accesible",
|
|
"dash.health.unreachable": "inaccesible",
|
|
|
|
// models
|
|
"models.title": "Modelos",
|
|
"models.subtitle": "Tu pool de modelos — combina modelos locales económicos con APIs en la nube.",
|
|
"models.add": "Agregar modelo",
|
|
"models.empty": "Sin modelos aún. Agrega tu primer modelo para comenzar.",
|
|
"models.col.id": "ID",
|
|
"models.col.provider": "Proveedor",
|
|
"models.col.model": "Modelo",
|
|
"models.col.tier": "Nivel de costo",
|
|
"models.col.key": "Clave",
|
|
"models.col.caps": "Capacidades",
|
|
"models.col.price": "Precio (entrada/salida)",
|
|
"models.probe": "Sondear",
|
|
"models.probe.ok": "Accesible ({ms} ms)",
|
|
"models.probe.fail": "Error: {err}",
|
|
"models.form.addTitle": "Agregar modelo",
|
|
"models.form.editTitle": "Editar modelo",
|
|
"models.form.id": "ID",
|
|
"models.form.idHint": "ID único usado en enrutamiento, ej. local-qwen",
|
|
"models.form.provider": "Proveedor",
|
|
"models.form.baseUrl": "URL base",
|
|
"models.form.model": "Nombre del modelo",
|
|
"models.form.kind": "Tipo",
|
|
"models.form.costTier": "Nivel de costo",
|
|
"models.form.priceIn": "Precio entrada ($/1M)",
|
|
"models.form.priceOut": "Precio salida ($/1M)",
|
|
"models.form.apiKeyEnv": "Nombre de variable env para clave API",
|
|
"models.form.apiKeyEnvHint": "Nombre de la variable de entorno o secreto que contiene la clave del proveedor.",
|
|
"models.form.caps": "Capacidades",
|
|
"models.form.secret": "Valor secreto",
|
|
"models.form.secretStored": "almacenado",
|
|
"models.form.secretEnv": "desde env",
|
|
"models.form.secretMissing": "no configurado",
|
|
"models.form.secretPlaceholder": "establecer o reemplazar clave (solo escritura)",
|
|
"models.deleteConfirm": "¿Eliminar modelo \"{id}\"?",
|
|
|
|
// routing
|
|
"routing.title": "Enrutamiento",
|
|
"routing.subtitle": "Asigna niveles de complejidad a una lista ordenada de modelos (prioridad = fallback).",
|
|
"routing.default": "Modelo predeterminado",
|
|
"routing.defaultHint": "Usado cuando el router no está disponible.",
|
|
"routing.tiers": "Niveles",
|
|
"routing.tierHint": "Arrastra los chips para reordenar; el primero es preferido, los demás son fallbacks.",
|
|
"routing.addModel": "+ agregar",
|
|
"routing.addTier": "Agregar nivel",
|
|
"routing.tierName": "Nombre del nivel",
|
|
"routing.policy": "Política",
|
|
"routing.policy.mode": "Modo",
|
|
"routing.policy.fixed": "Tabla fija",
|
|
"routing.policy.costAware": "Consciente del costo",
|
|
"routing.policy.maxCost": "Costo máx. por solicitud ($)",
|
|
"routing.policy.minClass": "Clase mínima por nivel",
|
|
"routing.empty": "Sin modelos disponibles — agrega modelos primero.",
|
|
|
|
// protocols
|
|
"protocols.title": "Protocolos",
|
|
"protocols.subtitle": "Activa solo las APIs de entrada que necesitas. Los cambios se aplican en vivo.",
|
|
"protocols.implemented": "implementado",
|
|
"protocols.planned": "planificado",
|
|
"protocols.openai_chat": "OpenAI Chat Completions",
|
|
"protocols.openai_chat.d": "POST /v1/chat/completions — compatible con OpenAI SDK, LangChain, crewAI.",
|
|
"protocols.openai_completions": "OpenAI Completions (legacy)",
|
|
"protocols.openai_completions.d": "POST /v1/completions — integraciones heredadas.",
|
|
"protocols.openai_embeddings": "OpenAI Embeddings",
|
|
"protocols.openai_embeddings.d": "POST /v1/embeddings — pipelines RAG.",
|
|
"protocols.openai_models": "OpenAI Models",
|
|
"protocols.openai_models.d": "GET /v1/models — autodescubrimiento de clientes.",
|
|
"protocols.anthropic_messages": "Anthropic Messages",
|
|
"protocols.anthropic_messages.d": "POST /v1/messages — agentes nativos Claude.",
|
|
"protocols.mcp": "MCP (Model Context Protocol)",
|
|
"protocols.mcp.d": "JSON-RPC / SSE — orquestadores nativos MCP.",
|
|
"protocols.native_passthrough": "Passthrough nativo",
|
|
"protocols.native_passthrough.d": "POST /route — acceso directo a la decisión de enrutamiento.",
|
|
|
|
// keys
|
|
"keys.title": "Claves API",
|
|
"keys.subtitle": "Claves de gateway virtuales para tus agentes. Las claves del proveedor nunca salen del gateway.",
|
|
"keys.add": "Nueva clave",
|
|
"keys.empty": "Sin claves configuradas — el gateway está en modo abierto (sin autenticación).",
|
|
"keys.openMode": "Modo abierto: cualquier solicitud es aceptada (no se requiere clave).",
|
|
"keys.col.key": "Clave",
|
|
"keys.col.account": "Cuenta",
|
|
"keys.col.rate": "Límite / min",
|
|
"keys.col.models": "Modelos permitidos",
|
|
"keys.form.title": "Nueva clave API",
|
|
"keys.form.account": "Cuenta",
|
|
"keys.form.rate": "Límite de tasa / min",
|
|
"keys.form.allow": "Modelos permitidos",
|
|
"keys.form.allowHint": "Deja vacío para permitir todos los modelos.",
|
|
"keys.form.custom": "Clave personalizada (opcional)",
|
|
"keys.form.customHint": "Deja vacío para generar automáticamente sk-gw-…",
|
|
"keys.created": "Clave creada — cópiala ahora, no se mostrará de nuevo:",
|
|
"keys.revoke": "Revocar",
|
|
"keys.revokeConfirm": "¿Revocar esta clave?",
|
|
"keys.allowAll": "todos",
|
|
|
|
// playground
|
|
"pg.title": "Playground",
|
|
"pg.subtitle": "Envía un prompt por el pipeline en vivo e inspecciona la decisión de enrutamiento.",
|
|
"pg.system": "Prompt del sistema",
|
|
"pg.systemPlaceholder": "mensaje de sistema opcional",
|
|
"pg.prompt": "Prompt",
|
|
"pg.promptPlaceholder": "Escribe algo…",
|
|
"pg.mode": "Modo",
|
|
"pg.mode.auto": "Auto (enrutar)",
|
|
"pg.mode.pinned": "Modelo fijo",
|
|
"pg.profile": "Perfil",
|
|
"pg.model": "Modelo",
|
|
"pg.temp": "Temperatura",
|
|
"pg.maxTokens": "Tokens máx.",
|
|
"pg.send": "Enviar",
|
|
"pg.sending": "Enviando…",
|
|
"pg.answer": "Respuesta",
|
|
"pg.empty": "La respuesta y la decisión de enrutamiento aparecerán aquí.",
|
|
"pg.decision": "Decisión de enrutamiento",
|
|
"pg.task": "Tarea",
|
|
"pg.tier": "Nivel",
|
|
"pg.score": "Complejidad",
|
|
"pg.selected": "Modelo seleccionado",
|
|
"pg.source": "Fuente de ruta",
|
|
"pg.cost": "Costo",
|
|
"pg.latency": "Latencia",
|
|
"pg.tokens": "Tokens (entrada/salida)",
|
|
"pg.failover": "Failover",
|
|
"pg.error": "Solicitud fallida",
|
|
|
|
// settings
|
|
"settings.title": "Configuración",
|
|
"settings.subtitle": "Conexión del gateway, entrada de enrutamiento, fiabilidad y observabilidad.",
|
|
"settings.router": "Conexión del router",
|
|
"settings.router.url": "URL del router",
|
|
"settings.router.keyEnv": "Nombre de variable env para clave del router",
|
|
"settings.router.timeout": "Tiempo de espera (ms)",
|
|
"settings.router.verifyTls": "Verificar certificado TLS",
|
|
"settings.router.taxonomy": "ID de taxonomía",
|
|
"settings.route": "Entrada de enrutamiento",
|
|
"settings.route.strategy": "Estrategia de texto",
|
|
"settings.route.maxChars": "Máx. caracteres",
|
|
"settings.route.cacheTtl": "TTL de caché",
|
|
"settings.route.profile": "Perfil predeterminado",
|
|
"settings.breaker": "Circuit breaker",
|
|
"settings.breaker.threshold": "Umbral de errores",
|
|
"settings.breaker.cooldown": "Cooldown",
|
|
"settings.log": "Registro",
|
|
"settings.log.level": "Nivel de log",
|
|
"settings.log.bodies": "Registrar cuerpos de mensajes (privacidad desactivada)",
|
|
"settings.telemetry": "Telemetría",
|
|
"settings.telemetry.metrics": "Exponer Prometheus /metrics",
|
|
"settings.cortiq": "Metadatos de respuesta",
|
|
"settings.cortiq.echo": "Incluir bloque de enrutamiento cortiq en respuestas",
|
|
"settings.stats": "Estadísticas",
|
|
"settings.stats.enabled": "Registrar estadísticas de solicitudes",
|
|
"settings.stats.file": "Archivo de estadísticas (JSONL)",
|
|
"settings.stats.retention": "Retención",
|
|
"settings.listen": "Dirección de escucha",
|
|
"settings.export": "Exportar configuración",
|
|
"settings.import": "Importar configuración",
|
|
"settings.needsRestart": "Guardado. Algunos cambios (dirección de escucha) requieren reinicio.",
|
|
|
|
// toasts / misc
|
|
"toast.saved": "Cambios guardados",
|
|
"toast.deleted": "Eliminado",
|
|
"toast.probing": "Sondeando…",
|
|
"toast.imported": "Configuración importada",
|
|
};
|