Files
cortiq-gateway/web/js/i18n/en.js
T
infosave2007 cbc385f6c7 feat: universal LLM gateway with embedded multilingual admin console
- 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)
2026-06-30 10:51:37 +03:00

258 lines
9.7 KiB
JavaScript
Vendored

// English — source of truth. Other languages override per key; missing keys fall
// back to English. Keep keys identical across all language files.
export default {
// brand / common
"brand.sub": "Gateway",
"common.loading": "Loading…",
"common.save": "Save",
"common.saving": "Saving…",
"common.cancel": "Cancel",
"common.add": "Add",
"common.edit": "Edit",
"common.delete": "Delete",
"common.close": "Close",
"common.test": "Test",
"common.copy": "Copy",
"common.copied": "Copied",
"common.confirm": "Confirm",
"common.none": "none",
"common.saved": "Saved",
"common.error": "Error",
"common.ok": "OK",
"common.refresh": "Refresh",
"common.actions": "Actions",
"common.optional": "optional",
"common.search": "Search",
"common.all": "all",
// nav
"nav.dashboard": "Dashboard",
"nav.models": "Models",
"nav.routing": "Routing",
"nav.protocols": "Protocols",
"nav.keys": "API keys",
"nav.playground": "Playground",
"nav.settings": "Settings",
"nav.foot": "Gateway · v{v}",
// topbar / status
"status.router": "Router",
"status.gateway": "Gateway",
"status.online": "online",
"status.offline": "offline",
"status.checking": "checking…",
"theme.toggle": "Theme",
"logout": "Log out",
// login
"login.title": "allaigate Gateway",
"login.subtitle": "Enter the admin token to manage this gateway.",
"login.token": "Admin token",
"login.tokenPlaceholder": "paste admin token",
"login.submit": "Open console",
"login.hint": "The token is printed in the gateway log on startup, or set via [admin].token_env.",
"login.failed": "Invalid admin token.",
// dashboard
"dash.title": "Dashboard",
"dash.subtitle": "Live traffic, cost and routing analytics for your model pool.",
"dash.range": "Range",
"dash.range.1h": "1h",
"dash.range.24h": "24h",
"dash.range.7d": "7d",
"dash.kpi.requests": "Requests",
"dash.kpi.tokens": "Tokens",
"dash.kpi.cost": "Cost",
"dash.kpi.latency": "Avg latency",
"dash.kpi.success": "Success rate",
"dash.kpi.failovers": "Failovers",
"dash.series.title": "Requests over time",
"dash.series.cost": "Cost over time",
"dash.series.empty": "No traffic yet in this range.",
"dash.breakdown.title": "Breakdown",
"dash.groupby.model": "by model",
"dash.groupby.tier": "by tier",
"dash.groupby.label": "by task",
"dash.groupby.account": "by account",
"dash.recent.title": "Recent requests",
"dash.recent.empty": "No requests recorded yet. Try the Playground.",
"dash.col.time": "Time",
"dash.col.model": "Model",
"dash.col.tier": "Tier",
"dash.col.task": "Task",
"dash.col.tokens": "Tokens",
"dash.col.cost": "Cost",
"dash.col.latency": "Latency",
"dash.col.outcome": "Outcome",
"dash.col.requests": "Requests",
"dash.col.errors": "Errors",
"dash.health.title": "Health",
"dash.health.reachable": "reachable",
"dash.health.unreachable": "unreachable",
// models
"models.title": "Models",
"models.subtitle": "Your model pool — mix cheap local models with cloud APIs.",
"models.add": "Add model",
"models.empty": "No models yet. Add your first model to get started.",
"models.col.id": "ID",
"models.col.provider": "Provider",
"models.col.model": "Model",
"models.col.tier": "Cost tier",
"models.col.key": "Key",
"models.col.caps": "Capabilities",
"models.col.price": "Price (in/out)",
"models.probe": "Probe",
"models.probe.ok": "Reachable ({ms} ms)",
"models.probe.fail": "Failed: {err}",
"models.form.addTitle": "Add model",
"models.form.editTitle": "Edit model",
"models.form.id": "ID",
"models.form.idHint": "Unique id used in routing, e.g. local-qwen",
"models.form.provider": "Provider",
"models.form.baseUrl": "Base URL",
"models.form.model": "Model name",
"models.form.kind": "Kind",
"models.form.costTier": "Cost tier",
"models.form.priceIn": "Price in ($/1M)",
"models.form.priceOut": "Price out ($/1M)",
"models.form.apiKeyEnv": "API key env name",
"models.form.apiKeyEnvHint": "Name of the env var / stored secret holding this provider's key.",
"models.form.caps": "Capabilities",
"models.form.secret": "Secret value",
"models.form.secretStored": "stored",
"models.form.secretEnv": "from env",
"models.form.secretMissing": "not set",
"models.form.secretPlaceholder": "set or replace key (write-only)",
"models.deleteConfirm": "Delete model \"{id}\"?",
// routing
"routing.title": "Routing",
"routing.subtitle": "Map complexity tiers to an ordered list of models (priority = fallback).",
"routing.default": "Default model",
"routing.defaultHint": "Used when the router is unreachable.",
"routing.tiers": "Tiers",
"routing.tierHint": "Drag chips to reorder; first is preferred, the rest are fallbacks.",
"routing.addModel": "+ add",
"routing.addTier": "Add tier",
"routing.tierName": "Tier name",
"routing.policy": "Policy",
"routing.policy.mode": "Mode",
"routing.policy.fixed": "Fixed table",
"routing.policy.costAware": "Cost-aware",
"routing.policy.maxCost": "Max cost per request ($)",
"routing.policy.minClass": "Minimum class per tier",
"routing.empty": "No models available — add models first.",
// protocols
"protocols.title": "Protocols",
"protocols.subtitle": "Enable only the inbound API surfaces you need. Toggles apply live.",
"protocols.implemented": "implemented",
"protocols.planned": "planned",
"protocols.openai_chat": "OpenAI Chat Completions",
"protocols.openai_chat.d": "POST /v1/chat/completions — works with OpenAI SDK, LangChain, crewAI.",
"protocols.openai_completions": "OpenAI Completions (legacy)",
"protocols.openai_completions.d": "POST /v1/completions — legacy integrations.",
"protocols.openai_embeddings": "OpenAI Embeddings",
"protocols.openai_embeddings.d": "POST /v1/embeddings — RAG pipelines.",
"protocols.openai_models": "OpenAI Models",
"protocols.openai_models.d": "GET /v1/models — client auto-discovery.",
"protocols.anthropic_messages": "Anthropic Messages",
"protocols.anthropic_messages.d": "POST /v1/messages — Claude-native agents.",
"protocols.mcp": "MCP (Model Context Protocol)",
"protocols.mcp.d": "JSON-RPC / SSE — MCP-native orchestrators.",
"protocols.native_passthrough": "Native passthrough",
"protocols.native_passthrough.d": "POST /route — direct access to the routing decision.",
// keys
"keys.title": "API keys",
"keys.subtitle": "Virtual gateway keys for your agents. Provider keys never leave the gateway.",
"keys.add": "New key",
"keys.empty": "No keys configured — the gateway is in open mode (no auth).",
"keys.openMode": "Open mode: any request is accepted (no key required).",
"keys.col.key": "Key",
"keys.col.account": "Account",
"keys.col.rate": "Rate / min",
"keys.col.models": "Allowed models",
"keys.form.title": "New API key",
"keys.form.account": "Account",
"keys.form.rate": "Rate limit / min",
"keys.form.allow": "Allowed models",
"keys.form.allowHint": "Leave empty to allow all models.",
"keys.form.custom": "Custom key (optional)",
"keys.form.customHint": "Leave empty to auto-generate sk-gw-…",
"keys.created": "Key created — copy it now, it won't be shown again:",
"keys.revoke": "Revoke",
"keys.revokeConfirm": "Revoke this key?",
"keys.allowAll": "all",
// playground
"pg.title": "Playground",
"pg.subtitle": "Send a prompt through the live pipeline and inspect the routing decision.",
"pg.system": "System prompt",
"pg.systemPlaceholder": "optional system message",
"pg.prompt": "Prompt",
"pg.promptPlaceholder": "Ask something…",
"pg.mode": "Mode",
"pg.mode.auto": "Auto (route)",
"pg.mode.pinned": "Pinned model",
"pg.profile": "Profile",
"pg.model": "Model",
"pg.temp": "Temperature",
"pg.maxTokens": "Max tokens",
"pg.send": "Send",
"pg.sending": "Sending…",
"pg.answer": "Answer",
"pg.empty": "The answer and routing decision will appear here.",
"pg.decision": "Routing decision",
"pg.task": "Task",
"pg.tier": "Tier",
"pg.score": "Complexity",
"pg.selected": "Selected model",
"pg.source": "Route source",
"pg.cost": "Cost",
"pg.latency": "Latency",
"pg.tokens": "Tokens (in/out)",
"pg.failover": "Failover",
"pg.error": "Request failed",
// settings
"settings.title": "Settings",
"settings.subtitle": "Gateway connection, routing input, reliability and observability.",
"settings.router": "Router connection",
"settings.router.url": "Router URL",
"settings.router.keyEnv": "Router key env name",
"settings.router.timeout": "Timeout (ms)",
"settings.router.verifyTls": "Verify TLS certificate",
"settings.router.taxonomy": "Taxonomy id",
"settings.route": "Routing input",
"settings.route.strategy": "Text strategy",
"settings.route.maxChars": "Max chars",
"settings.route.cacheTtl": "Cache TTL",
"settings.route.profile": "Default profile",
"settings.breaker": "Circuit breaker",
"settings.breaker.threshold": "Error threshold",
"settings.breaker.cooldown": "Cooldown",
"settings.log": "Logging",
"settings.log.level": "Log level",
"settings.log.bodies": "Log message bodies (privacy off)",
"settings.telemetry": "Telemetry",
"settings.telemetry.metrics": "Expose Prometheus /metrics",
"settings.cortiq": "Response metadata",
"settings.cortiq.echo": "Echo cortiq routing block in responses",
"settings.stats": "Statistics",
"settings.stats.enabled": "Record request statistics",
"settings.stats.file": "Stats file (JSONL)",
"settings.stats.retention": "Retention",
"settings.listen": "Listen address",
"settings.export": "Export config",
"settings.import": "Import config",
"settings.needsRestart": "Saved. Some changes (listen address) require a restart.",
// toasts / misc
"toast.saved": "Changes saved",
"toast.deleted": "Deleted",
"toast.probing": "Probing…",
"toast.imported": "Config imported",
};