- 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
10 KiB
JavaScript
Vendored
257 lines
10 KiB
JavaScript
Vendored
// Deutsch — German translation for allaigate admin console.
|
|
export default {
|
|
// brand / common
|
|
"brand.sub": "Gateway",
|
|
"common.loading": "Laden…",
|
|
"common.save": "Speichern",
|
|
"common.saving": "Wird gespeichert…",
|
|
"common.cancel": "Abbrechen",
|
|
"common.add": "Hinzufügen",
|
|
"common.edit": "Bearbeiten",
|
|
"common.delete": "Löschen",
|
|
"common.close": "Schließen",
|
|
"common.test": "Testen",
|
|
"common.copy": "Kopieren",
|
|
"common.copied": "Kopiert",
|
|
"common.confirm": "Bestätigen",
|
|
"common.none": "keine",
|
|
"common.saved": "Gespeichert",
|
|
"common.error": "Fehler",
|
|
"common.ok": "OK",
|
|
"common.refresh": "Aktualisieren",
|
|
"common.actions": "Aktionen",
|
|
"common.optional": "optional",
|
|
"common.search": "Suchen",
|
|
"common.all": "alle",
|
|
|
|
// nav
|
|
"nav.dashboard": "Dashboard",
|
|
"nav.models": "Modelle",
|
|
"nav.routing": "Routing",
|
|
"nav.protocols": "Protokolle",
|
|
"nav.keys": "API-Schlüssel",
|
|
"nav.playground": "Playground",
|
|
"nav.settings": "Einstellungen",
|
|
"nav.foot": "Gateway · v{v}",
|
|
|
|
// topbar / status
|
|
"status.router": "Router",
|
|
"status.gateway": "Gateway",
|
|
"status.online": "online",
|
|
"status.offline": "offline",
|
|
"status.checking": "Prüfe…",
|
|
"theme.toggle": "Design",
|
|
"logout": "Abmelden",
|
|
|
|
// login
|
|
"login.title": "allaigate Gateway",
|
|
"login.subtitle": "Admin-Token eingeben, um dieses Gateway zu verwalten.",
|
|
"login.token": "Admin-Token",
|
|
"login.tokenPlaceholder": "Admin-Token einfügen",
|
|
"login.submit": "Konsole öffnen",
|
|
"login.hint": "Das Token wird beim Start im Gateway-Log ausgegeben oder über [admin].token_env gesetzt.",
|
|
"login.failed": "Ungültiger Admin-Token.",
|
|
|
|
// dashboard
|
|
"dash.title": "Dashboard",
|
|
"dash.subtitle": "Live-Traffic, Kosten und Routing-Analyse für Ihren Modell-Pool.",
|
|
"dash.range": "Zeitraum",
|
|
"dash.range.1h": "1h",
|
|
"dash.range.24h": "24h",
|
|
"dash.range.7d": "7d",
|
|
"dash.kpi.requests": "Anfragen",
|
|
"dash.kpi.tokens": "Tokens",
|
|
"dash.kpi.cost": "Kosten",
|
|
"dash.kpi.latency": "Ø Latenz",
|
|
"dash.kpi.success": "Erfolgsrate",
|
|
"dash.kpi.failovers": "Failovers",
|
|
"dash.series.title": "Anfragen im Zeitverlauf",
|
|
"dash.series.cost": "Kosten im Zeitverlauf",
|
|
"dash.series.empty": "Kein Traffic in diesem Zeitraum.",
|
|
"dash.breakdown.title": "Aufschlüsselung",
|
|
"dash.groupby.model": "nach Modell",
|
|
"dash.groupby.tier": "nach Tier",
|
|
"dash.groupby.label": "nach Aufgabe",
|
|
"dash.groupby.account": "nach Account",
|
|
"dash.recent.title": "Letzte Anfragen",
|
|
"dash.recent.empty": "Noch keine Anfragen aufgezeichnet. Playground ausprobieren.",
|
|
"dash.col.time": "Zeit",
|
|
"dash.col.model": "Modell",
|
|
"dash.col.tier": "Tier",
|
|
"dash.col.task": "Aufgabe",
|
|
"dash.col.tokens": "Tokens",
|
|
"dash.col.cost": "Kosten",
|
|
"dash.col.latency": "Latenz",
|
|
"dash.col.outcome": "Ergebnis",
|
|
"dash.col.requests": "Anfragen",
|
|
"dash.col.errors": "Fehler",
|
|
"dash.health.title": "Status",
|
|
"dash.health.reachable": "erreichbar",
|
|
"dash.health.unreachable": "nicht erreichbar",
|
|
|
|
// models
|
|
"models.title": "Modelle",
|
|
"models.subtitle": "Ihr Modell-Pool — lokale Modelle und Cloud-APIs kombinieren.",
|
|
"models.add": "Modell hinzufügen",
|
|
"models.empty": "Noch keine Modelle. Erstes Modell hinzufügen.",
|
|
"models.col.id": "ID",
|
|
"models.col.provider": "Anbieter",
|
|
"models.col.model": "Modell",
|
|
"models.col.tier": "Kostenstufe",
|
|
"models.col.key": "Schlüssel",
|
|
"models.col.caps": "Fähigkeiten",
|
|
"models.col.price": "Preis (ein/aus)",
|
|
"models.probe": "Prüfen",
|
|
"models.probe.ok": "Erreichbar ({ms} ms)",
|
|
"models.probe.fail": "Fehlgeschlagen: {err}",
|
|
"models.form.addTitle": "Modell hinzufügen",
|
|
"models.form.editTitle": "Modell bearbeiten",
|
|
"models.form.id": "ID",
|
|
"models.form.idHint": "Eindeutige ID für das Routing, z. B. local-qwen",
|
|
"models.form.provider": "Anbieter",
|
|
"models.form.baseUrl": "Basis-URL",
|
|
"models.form.model": "Modellname",
|
|
"models.form.kind": "Typ",
|
|
"models.form.costTier": "Kostenstufe",
|
|
"models.form.priceIn": "Preis ein ($/1M)",
|
|
"models.form.priceOut": "Preis aus ($/1M)",
|
|
"models.form.apiKeyEnv": "API-Schlüssel Umgebungsvariable",
|
|
"models.form.apiKeyEnvHint": "Name der Umgebungsvariable / des gespeicherten Geheimnisses für den Anbieterschlüssel.",
|
|
"models.form.caps": "Fähigkeiten",
|
|
"models.form.secret": "Geheimwert",
|
|
"models.form.secretStored": "gespeichert",
|
|
"models.form.secretEnv": "aus Umgebung",
|
|
"models.form.secretMissing": "nicht gesetzt",
|
|
"models.form.secretPlaceholder": "Schlüssel setzen oder ersetzen (nur Schreiben)",
|
|
"models.deleteConfirm": "Modell \"{id}\" löschen?",
|
|
|
|
// routing
|
|
"routing.title": "Routing",
|
|
"routing.subtitle": "Komplexitätsstufen einer priorisierten Modellliste zuordnen (Priorität = Fallback).",
|
|
"routing.default": "Standardmodell",
|
|
"routing.defaultHint": "Wird verwendet, wenn der Router nicht erreichbar ist.",
|
|
"routing.tiers": "Stufen",
|
|
"routing.tierHint": "Chips ziehen zum Sortieren; erstes bevorzugt, die übrigen sind Fallbacks.",
|
|
"routing.addModel": "+ hinzufügen",
|
|
"routing.addTier": "Stufe hinzufügen",
|
|
"routing.tierName": "Stufenname",
|
|
"routing.policy": "Richtlinie",
|
|
"routing.policy.mode": "Modus",
|
|
"routing.policy.fixed": "Feste Tabelle",
|
|
"routing.policy.costAware": "Kostenoptimiert",
|
|
"routing.policy.maxCost": "Max. Kosten pro Anfrage ($)",
|
|
"routing.policy.minClass": "Mindestklasse je Stufe",
|
|
"routing.empty": "Keine Modelle verfügbar — zuerst Modelle hinzufügen.",
|
|
|
|
// protocols
|
|
"protocols.title": "Protokolle",
|
|
"protocols.subtitle": "Nur benötigte eingehende API-Oberflächen aktivieren. Änderungen wirken sofort.",
|
|
"protocols.implemented": "implementiert",
|
|
"protocols.planned": "geplant",
|
|
"protocols.openai_chat": "OpenAI Chat Completions",
|
|
"protocols.openai_chat.d": "POST /v1/chat/completions — kompatibel mit OpenAI SDK, LangChain, crewAI.",
|
|
"protocols.openai_completions": "OpenAI Completions (legacy)",
|
|
"protocols.openai_completions.d": "POST /v1/completions — Legacy-Integrationen.",
|
|
"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 — automatische Client-Erkennung.",
|
|
"protocols.anthropic_messages": "Anthropic Messages",
|
|
"protocols.anthropic_messages.d": "POST /v1/messages — Claude-native Agenten.",
|
|
"protocols.mcp": "MCP (Model Context Protocol)",
|
|
"protocols.mcp.d": "JSON-RPC / SSE — MCP-native Orchestratoren.",
|
|
"protocols.native_passthrough": "Nativer Passthrough",
|
|
"protocols.native_passthrough.d": "POST /route — direkter Zugriff auf die Routing-Entscheidung.",
|
|
|
|
// keys
|
|
"keys.title": "API-Schlüssel",
|
|
"keys.subtitle": "Virtuelle Gateway-Schlüssel für Ihre Agenten. Anbieterschlüssel verlassen das Gateway nicht.",
|
|
"keys.add": "Neuer Schlüssel",
|
|
"keys.empty": "Keine Schlüssel konfiguriert — Gateway im offenen Modus (keine Authentifizierung).",
|
|
"keys.openMode": "Offener Modus: Alle Anfragen werden akzeptiert (kein Schlüssel erforderlich).",
|
|
"keys.col.key": "Schlüssel",
|
|
"keys.col.account": "Account",
|
|
"keys.col.rate": "Rate / Min.",
|
|
"keys.col.models": "Erlaubte Modelle",
|
|
"keys.form.title": "Neuer API-Schlüssel",
|
|
"keys.form.account": "Account",
|
|
"keys.form.rate": "Ratenlimit / Min.",
|
|
"keys.form.allow": "Erlaubte Modelle",
|
|
"keys.form.allowHint": "Leer lassen, um alle Modelle zu erlauben.",
|
|
"keys.form.custom": "Eigener Schlüssel (optional)",
|
|
"keys.form.customHint": "Leer lassen für automatische Generierung sk-gw-…",
|
|
"keys.created": "Schlüssel erstellt — jetzt kopieren, er wird nicht mehr angezeigt:",
|
|
"keys.revoke": "Widerrufen",
|
|
"keys.revokeConfirm": "Diesen Schlüssel widerrufen?",
|
|
"keys.allowAll": "alle",
|
|
|
|
// playground
|
|
"pg.title": "Playground",
|
|
"pg.subtitle": "Prompt durch die Live-Pipeline senden und Routing-Entscheidung prüfen.",
|
|
"pg.system": "System-Prompt",
|
|
"pg.systemPlaceholder": "optionale Systemnachricht",
|
|
"pg.prompt": "Prompt",
|
|
"pg.promptPlaceholder": "Etwas fragen…",
|
|
"pg.mode": "Modus",
|
|
"pg.mode.auto": "Auto (Route)",
|
|
"pg.mode.pinned": "Fixiertes Modell",
|
|
"pg.profile": "Profil",
|
|
"pg.model": "Modell",
|
|
"pg.temp": "Temperatur",
|
|
"pg.maxTokens": "Max. Tokens",
|
|
"pg.send": "Senden",
|
|
"pg.sending": "Wird gesendet…",
|
|
"pg.answer": "Antwort",
|
|
"pg.empty": "Antwort und Routing-Entscheidung erscheinen hier.",
|
|
"pg.decision": "Routing-Entscheidung",
|
|
"pg.task": "Aufgabe",
|
|
"pg.tier": "Tier",
|
|
"pg.score": "Komplexität",
|
|
"pg.selected": "Gewähltes Modell",
|
|
"pg.source": "Route-Quelle",
|
|
"pg.cost": "Kosten",
|
|
"pg.latency": "Latenz",
|
|
"pg.tokens": "Tokens (ein/aus)",
|
|
"pg.failover": "Failover",
|
|
"pg.error": "Anfrage fehlgeschlagen",
|
|
|
|
// settings
|
|
"settings.title": "Einstellungen",
|
|
"settings.subtitle": "Gateway-Verbindung, Routing-Eingabe, Zuverlässigkeit und Beobachtbarkeit.",
|
|
"settings.router": "Router-Verbindung",
|
|
"settings.router.url": "Router-URL",
|
|
"settings.router.keyEnv": "Router-Schlüssel Umgebungsvariable",
|
|
"settings.router.timeout": "Timeout (ms)",
|
|
"settings.router.verifyTls": "TLS-Zertifikat prüfen",
|
|
"settings.router.taxonomy": "Taxonomie-ID",
|
|
"settings.route": "Routing-Eingabe",
|
|
"settings.route.strategy": "Textstrategie",
|
|
"settings.route.maxChars": "Max. Zeichen",
|
|
"settings.route.cacheTtl": "Cache-TTL",
|
|
"settings.route.profile": "Standardprofil",
|
|
"settings.breaker": "Circuit Breaker",
|
|
"settings.breaker.threshold": "Fehlerschwelle",
|
|
"settings.breaker.cooldown": "Cooldown",
|
|
"settings.log": "Protokollierung",
|
|
"settings.log.level": "Log-Ebene",
|
|
"settings.log.bodies": "Nachrichtentexte protokollieren (Datenschutz aus)",
|
|
"settings.telemetry": "Telemetrie",
|
|
"settings.telemetry.metrics": "Prometheus /metrics bereitstellen",
|
|
"settings.cortiq": "Antwort-Metadaten",
|
|
"settings.cortiq.echo": "cortiq-Routing-Block in Antworten einbetten",
|
|
"settings.stats": "Statistiken",
|
|
"settings.stats.enabled": "Anfrage-Statistiken aufzeichnen",
|
|
"settings.stats.file": "Statistikdatei (JSONL)",
|
|
"settings.stats.retention": "Aufbewahrung",
|
|
"settings.listen": "Lausch-Adresse",
|
|
"settings.export": "Konfiguration exportieren",
|
|
"settings.import": "Konfiguration importieren",
|
|
"settings.needsRestart": "Gespeichert. Einige Änderungen (Lausch-Adresse) erfordern einen Neustart.",
|
|
|
|
// toasts / misc
|
|
"toast.saved": "Änderungen gespeichert",
|
|
"toast.deleted": "Gelöscht",
|
|
"toast.probing": "Prüfe…",
|
|
"toast.imported": "Konfiguration importiert",
|
|
};
|