omniroute 3.3.6 → 3.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/build-manifest.json +2 -2
  3. package/app/.next/prerender-manifest.json +3 -3
  4. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/audit/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/_global-error.html +2 -2
  42. package/app/.next/server/app/_global-error.rsc +1 -1
  43. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  44. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  45. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  46. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  47. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  48. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
  50. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +1 -1
  63. package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
  64. package/app/.next/server/chunks/[root-of-the-server]__7ace0fcd._.js +1 -1
  65. package/app/.next/server/chunks/[root-of-the-server]__950558b8._.js +1 -1
  66. package/app/.next/server/chunks/[root-of-the-server]__9698d25e._.js +1 -1
  67. package/app/.next/server/chunks/[root-of-the-server]__a32d3818._.js +1 -1
  68. package/app/.next/server/chunks/[root-of-the-server]__bc251fbe._.js +1 -1
  69. package/app/.next/server/chunks/[root-of-the-server]__d5a064d5._.js +1 -1
  70. package/app/.next/server/chunks/_05c48915._.js +1 -1
  71. package/app/.next/server/chunks/_06515a8a._.js +1 -1
  72. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  73. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  74. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  75. package/app/.next/server/chunks/_68683848._.js +1 -1
  76. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  77. package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
  78. package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
  79. package/app/.next/server/chunks/ssr/src_i18n_messages_ar_json_e1d5145b._.js +1 -1
  80. package/app/.next/server/chunks/ssr/src_i18n_messages_bg_json_34495a0f._.js +1 -1
  81. package/app/.next/server/chunks/ssr/src_i18n_messages_cs_json_db6f9ebc._.js +1 -1
  82. package/app/.next/server/chunks/ssr/src_i18n_messages_da_json_7500ed02._.js +1 -1
  83. package/app/.next/server/chunks/ssr/src_i18n_messages_de_json_b2a40318._.js +1 -1
  84. package/app/.next/server/chunks/ssr/src_i18n_messages_es_json_82775c4a._.js +1 -1
  85. package/app/.next/server/chunks/ssr/src_i18n_messages_fi_json_dcc6745e._.js +1 -1
  86. package/app/.next/server/chunks/ssr/src_i18n_messages_fr_json_fe904570._.js +1 -1
  87. package/app/.next/server/chunks/ssr/src_i18n_messages_he_json_3e3c1e1b._.js +1 -1
  88. package/app/.next/server/chunks/ssr/src_i18n_messages_hi_json_83a0b9e5._.js +1 -1
  89. package/app/.next/server/chunks/ssr/src_i18n_messages_hu_json_651e00d3._.js +1 -1
  90. package/app/.next/server/chunks/ssr/src_i18n_messages_id_json_725d4a34._.js +1 -1
  91. package/app/.next/server/chunks/ssr/src_i18n_messages_in_json_2d7cd177._.js +1 -1
  92. package/app/.next/server/chunks/ssr/src_i18n_messages_it_json_e23882ae._.js +1 -1
  93. package/app/.next/server/chunks/ssr/src_i18n_messages_ja_json_fc6af4d8._.js +1 -1
  94. package/app/.next/server/chunks/ssr/src_i18n_messages_ko_json_0ffdbdc6._.js +1 -1
  95. package/app/.next/server/chunks/ssr/src_i18n_messages_ms_json_610df819._.js +1 -1
  96. package/app/.next/server/chunks/ssr/src_i18n_messages_nl_json_55ad1507._.js +1 -1
  97. package/app/.next/server/chunks/ssr/src_i18n_messages_no_json_9f484a8c._.js +1 -1
  98. package/app/.next/server/chunks/ssr/src_i18n_messages_phi_json_871ece45._.js +1 -1
  99. package/app/.next/server/chunks/ssr/src_i18n_messages_pl_json_79d0be4b._.js +1 -1
  100. package/app/.next/server/chunks/ssr/src_i18n_messages_pt-BR_json_e7b9e8db._.js +1 -1
  101. package/app/.next/server/chunks/ssr/src_i18n_messages_pt_json_2fc13a82._.js +1 -1
  102. package/app/.next/server/chunks/ssr/src_i18n_messages_ro_json_d1a5f5ee._.js +1 -1
  103. package/app/.next/server/chunks/ssr/src_i18n_messages_ru_json_9d7a9dfe._.js +1 -1
  104. package/app/.next/server/chunks/ssr/src_i18n_messages_sk_json_1c5bff4a._.js +1 -1
  105. package/app/.next/server/chunks/ssr/src_i18n_messages_sv_json_e8ae9f28._.js +1 -1
  106. package/app/.next/server/chunks/ssr/src_i18n_messages_th_json_6ed546bd._.js +1 -1
  107. package/app/.next/server/chunks/ssr/src_i18n_messages_tr_json_c8d78b01._.js +1 -1
  108. package/app/.next/server/chunks/ssr/src_i18n_messages_uk-UA_json_c72cdf08._.js +1 -1
  109. package/app/.next/server/chunks/ssr/src_i18n_messages_vi_json_03ec9dfd._.js +1 -1
  110. package/app/.next/server/pages/500.html +2 -2
  111. package/app/.next/server/server-reference-manifest.js +1 -1
  112. package/app/.next/server/server-reference-manifest.json +1 -1
  113. package/app/.next/static/chunks/{b9999bd9d2b99bf6.js → d3c3a9266158d9b0.js} +1 -1
  114. package/app/CHANGELOG.md +19 -1
  115. package/app/docs/openapi.yaml +1 -1
  116. package/app/open-sse/handlers/responseTranslator.ts +1 -1
  117. package/app/open-sse/package.json +1 -1
  118. package/app/package-lock.json +3 -3
  119. package/app/package.json +1 -1
  120. package/app/src/i18n/messages/ar.json +2 -1
  121. package/app/src/i18n/messages/bg.json +2 -1
  122. package/app/src/i18n/messages/cs.json +2 -1
  123. package/app/src/i18n/messages/da.json +2 -1
  124. package/app/src/i18n/messages/de.json +2 -1
  125. package/app/src/i18n/messages/es.json +2 -1
  126. package/app/src/i18n/messages/fi.json +2 -1
  127. package/app/src/i18n/messages/fr.json +2 -1
  128. package/app/src/i18n/messages/he.json +2 -1
  129. package/app/src/i18n/messages/hi.json +2 -1
  130. package/app/src/i18n/messages/hu.json +2 -1
  131. package/app/src/i18n/messages/id.json +2 -1
  132. package/app/src/i18n/messages/in.json +2 -1
  133. package/app/src/i18n/messages/it.json +2 -1
  134. package/app/src/i18n/messages/ja.json +2 -1
  135. package/app/src/i18n/messages/ko.json +2 -1
  136. package/app/src/i18n/messages/ms.json +2 -1
  137. package/app/src/i18n/messages/nl.json +2 -1
  138. package/app/src/i18n/messages/no.json +2 -1
  139. package/app/src/i18n/messages/phi.json +2 -1
  140. package/app/src/i18n/messages/pl.json +2 -1
  141. package/app/src/i18n/messages/pt-BR.json +2 -1
  142. package/app/src/i18n/messages/pt.json +2 -1
  143. package/app/src/i18n/messages/ro.json +2 -1
  144. package/app/src/i18n/messages/ru.json +2 -1
  145. package/app/src/i18n/messages/sk.json +2 -1
  146. package/app/src/i18n/messages/sv.json +2 -1
  147. package/app/src/i18n/messages/th.json +2 -1
  148. package/app/src/i18n/messages/tr.json +2 -1
  149. package/app/src/i18n/messages/uk-UA.json +2 -1
  150. package/app/src/i18n/messages/vi.json +2 -1
  151. package/app/src/shared/services/opencodeConfig.ts +14 -13
  152. package/app/tests/unit/t40-opencode-cli-tools-integration.test.mjs +5 -5
  153. package/package.json +1 -1
  154. /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_buildManifest.js +0 -0
  155. /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_clientMiddlewareManifest.json +0 -0
  156. /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[379985,a=>{a.v(JSON.parse('{"common":{"save":"Speichern","cancel":"Abbrechen","delete":"Löschen","loading":"Laden...","error":"Es ist ein Fehler aufgetreten","success":"Erfolg","confirm":"Bist du sicher?","refresh":"Aktualisieren","close":"Schließen","add":"Hinzufügen","edit":"Bearbeiten","search":"Suchen","back":"Zurück","next":"Als nächstes","submit":"Senden","reset":"Zurücksetzen","copy":"Kopieren","copied":"Kopiert!","enabled":"Aktiviert","disabled":"Deaktiviert","active":"Aktiv","inactive":"Inaktiv","noData":"Keine Daten verfügbar","configure":"Konfigurieren","manage":"Verwalten","name":"Name","actions":"Aktionen","status":"Status","type":"Typ","model":"Modell","models":"Modelle","provider":"Anbieter","account":"Konto","time":"Zeit","details":"Einzelheiten","created":"Erstellt","lastUsed":"Zuletzt verwendet","loadMore":"Mehr laden","noResults":"Keine Ergebnisse gefunden","reloadPage":"Seite neu laden","connected":"Verbunden","disconnected":"Nicht verbunden","notConfigured":"Nicht konfiguriert","testConnection":"Testverbindung","enable":"Aktivieren","disable":"Deaktivieren","columns":"Spalten","newest":"Neueste","oldest":"Älteste","all":"Alle","none":"Keine","yes":"Ja","no":"Nein","warning":"Warnung","note":"Hinweis","free":"Kostenlos","skipToContent":"Zum Inhalt springen","maintenanceServerIssues":"Server is experiencing issues. Some features may be unavailable.","maintenanceServerUnreachable":"Server is unreachable. Reconnecting...","accept":"Akzeptieren","accountId":"Konto-ID","alias":"Alias","apiKeyId":"API-Schlüssel-ID","apiKeyName":"API-Schlüsselname","apiKeySecret":"API-Schlüsselgeheimnis","authorization":"Autorisierung","content-type":"Inhaltstyp","content-length":"Inhaltslänge","cookie":"Cookie","file":"Datei","host":"Host","id":"ID","import":"Importieren","limit":"Limit","offset":"Offset","open":"Öffnen","origin":"Herkunft","promptTokens":"Prompt-Token","completionTokens":"Completion-Token","totalTokens":"Gesamte Token","rawModel":"Raw-Modell","scope":"Umfang","skill":"Fertigkeit","sortBy":"Sortieren nach","sortOrder":"Sortierreihenfolge","tab":"Tab","text":"Text","textarea":"Textfeld","tool":"Werkzeug","toolId":"Werkzeug-ID","web":"Web","whereUsed":"Wo verwendet","whitelist":"Whitelist","blacklist":"Blacklist","resolve":"Auflösen","force":"Erzwingen","base64url":"Base64 URL","hex":"Hex","range":"Bereich","component":"Komponente","redirect_uri":"Umleitungs-URI","idempotency-key":"Idempotenz-Schlüssel","error_description":"Fehlerbeschreibung","code":"Code","compatible":"Kompatibel","chat-completions":"Chat-Completions","oauth":"OAuth","auth_token":"Auth-Token","crypto":"Krypto","hours":"Stunden","selfsigned":"Selbstsigniert","proxy_id":"Proxy-ID","proxyId":"Proxy-ID","connectionId":"Verbindungs-ID","resolveConnectionId":"Verbindungs-ID auflösen","resolve_connection_id":"Verbindungs-ID auflösen","scope_id":"Umfang-ID","scopeId":"Umfang-ID","jwtSecret":"JWT-Geheimnis","keytar":"Keytar","better-sqlite3":"better-sqlite3","undici":"undici","builder-id":"Builder-ID","musicDesc":"Musikbeschreibung","musicGeneration":"Musikgenerierung","idc":"IDC","cloud-status-changed":"Cloud-Status geändert","where_used":"Wo verwendet","windowMs":"Fenster (ms)","social-github":"GitHub","social-google":"Google","TOOL_ALLOWLIST":"Werkzeug-Whitelist","TOOL_DENYLIST":"Werkzeug-Blacklist","Failed to save pricing":"Preise speichern fehlgeschlagen","Failed to reset pricing":"Preise zurücksetzen fehlgeschlagen","apikey":"API-Schlüssel","http":"HTTP"},"sidebar":{"home":"Zuhause","dashboard":"Dashboard","providers":"Anbieter","combos":"Kombinationen","usage":"Nutzung","analytics":"Analytik","costs":"Kosten","health":"Gesundheit","limits":"Limits und Quoten","cliTools":"CLI-Tools","media":"Medien","settings":"Einstellungen","translator":"Übersetzer","docs":"Dokumente","issues":"Probleme","apiManager":"API-Manager","logs":"Protokolle","auditLog":"Audit-Protokoll","shutdown":"Herunterfahren","restart":"Neustart","shutdownConfirm":"OmniRoute herunterfahren?","restartConfirm":"OmniRoute neu starten?","version":"v{version}","debug":"Debuggen","system":"System","help":"Hilfe","serverDisconnected":"Serververbindung getrennt","serverDisconnectedMsg":"Der Proxyserver wurde gestoppt oder wird neu gestartet.","expandSidebar":"Seitenleiste erweitern","collapseSidebar":"Seitenleiste einklappen","themes":"Themen","presetColors":"Beliebte Farben","createTheme":"Thema erstellen","chooseColor":"Wählen Sie eine Farbe","themeCoral":"Koralle","themeBlue":"Blau","themeRed":"Rot","themeGreen":"Grün","themeViolet":"Violett","themeOrange":"Orange","themeCyan":"Cyan","endpoints":"Endpunkte","playground":"Spielwiese","agents":"Agenten","cliToolsShort":"Werkzeuge","autoCombo":"Auto Combo","searchTools":"Search Tools","cache":"Cache","cacheShort":"Cache"},"themesPage":{"title":"Themen","description":"Wählen Sie ein voreingestelltes Thema oder erstellen Sie Ihr eigenes mit einer einzigen Farbe","presetColors":"Beliebte Farben","customTheme":"Benutzerdefiniertes Thema","customThemeDesc":"Klicken Sie auf „Thema erstellen“ und wählen Sie eine Farbe aus","createTheme":"Thema erstellen","activePreset":"Aktives Thema"},"header":{"logout":"Abmelden","language":"Sprache","providers":"Anbieter","providerDescription":"Verwalten Sie Ihre KI-Anbieterverbindungen","combos":"Kombinationen","comboDescription":"Modellkombinationen mit Fallback","usage":"Nutzung und Analyse","usageDescription":"Überwachen Sie Ihre API-Nutzung, den Token-Verbrauch und Ihre Anforderungsprotokolle","analytics":"Analysen","analyticsDescription":"Diagramme, Trends und Auswertungserkenntnisse","cliTools":"CLI-Tools","cliToolsDescription":"Konfigurieren Sie CLI-Tools","home":"Zuhause","homeDescription":"Willkommen bei OmniRoute","endpoint":"Endpunkte","endpointDescription":"Proxy-Endpunkte, MCP, A2A und API-Endpunkte verwalten","settings":"Einstellungen","settingsDescription":"Verwalten Sie Ihre Präferenzen","openaiCompatible":"OpenAI-kompatibel","anthropicCompatible":"Anthropic-kompatibel","media":"Medien","mediaDescription":"Generieren Sie Bilder, Videos und Musik","themes":"Themen","themesDescription":"Wählen Sie ein Farbthema für das gesamte Dashboard-Panel","mcp":"MCP","mcpDescription":"Model Context Protocol server management and tools","a2a":"A2A","a2aDescription":"Agent-to-Agent protocol tasks and observability"},"home":{"quickStart":"Schnellstart","quickStartDesc":"In 4 Schritten einsatzbereit. Anbieter anbinden, Modelle routen, alles überwachen.","fullDocs":"Vollständige Dokumentation","step1Title":"1. API-Schlüssel erstellen","step1Desc":"Gehen Sie zu <endpoint>Endpoint</endpoint> -> Registrierte Schlüssel. Erstellen Sie einen Schlüssel pro Umgebung.","step2Title":"2. Anbieter verbinden","step2Desc":"Fügen Sie Konten unter <providers>Providers</providers> hinzu. Unterstützt OAuth, API Key und kostenlose Stufen.","step3Title":"3. Client konfigurieren","step3Desc":"Legen Sie die Basis-URL in Ihrem IDE- oder API-Client auf {url} fest.","step4Title":"4. Überwachen und optimieren","step4Desc":"Verfolgen Sie Tokens, Kosten und Fehler in <logs>Anfrageprotokollen</logs> und <analytics>Analysen</analytics>.","providersOverview":"Anbieterübersicht","configuredOf":"{configured} konfiguriert von {total} verfügbaren Anbietern","noModelsAvailable":"Für diesen Anbieter sind keine Modelle verfügbar.","configureFirst":"Konfigurieren Sie zuerst eine Verbindung in {providers}","configureProvider":"Anbieter konfigurieren","modelAvailable":"{count} Modell verfügbar","modelsAvailable":"{count} Modelle verfügbar","connectionsActive":"{count} Verbindung aktiv","connectionsActivePlural":"{count} Verbindungen aktiv","copyModelName":"Modellnamen kopieren","documentation":"Dokumentation","healthMonitor":"Gesundheitsmonitor","reportIssue":"Problem melden","activeError":"{active} aktiv · {errors} Fehler","oauthLabel":"OAuth","apiKeyLabel":"API-Schlüssel","requestsShort":"{count} Anfr.","providerModelsTitle":"{provider} – Modelle","copiedModel":"Kopiert: {model}","aliasLabel":"Alias","updateNow":"Jetzt aktualisieren","updating":"Aktualisiere...","updateAvailableDesc":"Eine neue Version ist verfügbar. Klicken Sie zum Aktualisieren.","updateStarted":"Aktualisierung gestartet..."},"analytics":{"title":"Analytik","overviewDescription":"Überwachen Sie Ihre API-Nutzungsmuster, Token-Verbrauch, Kosten und Aktivitätstrends bei allen Anbietern und Modellen.","evalsDescription":"Führen Sie Evaluierungssuiten aus, um Ihre LLM-Endpunkte zu testen und zu validieren. Vergleichen Sie die Modellqualität, erkennen Sie Regressionen und messen Sie die Latenz.","overview":"Übersicht","evals":"Bewertungen"},"apiManager":{"title":"API-Schlüssel","createKey":"API-Schlüssel erstellen","key":"Schlüssel","revokeKey":"Schlüssel widerrufen","revokeConfirm":"Sind Sie sicher, dass Sie diesen API-Schlüssel widerrufen möchten?","noKeys":"Noch keine API-Schlüssel","noKeysDesc":"Erstellen Sie Ihren ersten API-Schlüssel, um Anfragen an Ihren Endpunkt zu authentifizieren","keyLabel":"Schlüsseletikett","permissions":"Berechtigungen","expiresAt":"Läuft ab","never":"Niemals","revoke":"Widerrufen","showKey":"Schlüssel anzeigen","hideKey":"Schlüssel verstecken","copyKey":"API-Schlüssel kopieren","allModels":"Alle Modelle","selectedModels":"Ausgewählte Modelle","readOnly":"Nur lesen","fullAccess":"Voller Zugriff","keyManagement":"API-Schlüsselverwaltung","keyManagementDesc":"Erstellen und verwalten Sie API-Schlüssel zur Authentifizierung von Anfragen an Ihren Endpunkt","totalKeys":"Gesamtschlüssel","restricted":"Eingeschränkt","totalRequests":"Gesamtzahl der Anfragen","modelsAvailable":"Verfügbare Modelle","registeredKeys":"Registrierte Schlüssel","keysRegistered":"{count} Schlüssel registriert","keyRegistered":"{count} Schlüssel registriert","keysSecurityNote":"Jeder Schlüssel isoliert die Nutzungsverfolgung und kann unabhängig widerrufen werden. Aus Sicherheitsgründen werden Schlüssel nach der Erstellung maskiert.","createFirstKey":"Erstellen Sie Ihren ersten Schlüssel","name":"Name","usage":"Nutzung","created":"Erstellt","actions":"Aktionen","reqs":"Anforderungen","neverUsed":"Nie benutzt","deleteConfirm":"Diesen API-Schlüssel löschen?","usageTips":"Nutzungstipps","tipAuth":"Verwenden Sie API-Schlüssel im Authorization-Header als Bearer YOUR_KEY","tipSecure":"Schlüssel werden bei der Erstellung nur einmal angezeigt – bewahren Sie sie sicher auf","tipSeparate":"Erstellen Sie separate Schlüssel für verschiedene Clients oder Umgebungen","tipRestrict":"Beschränken Sie die Schlüssel auf bestimmte Modelle, um die Sicherheit und Kostenkontrolle zu verbessern","keyName":"Schlüsselname","keyNamePlaceholder":"z. B. Produktionsschlüssel, Entwicklungsschlüssel","keyNameDesc":"Wählen Sie einen aussagekräftigen Namen, um den Zweck dieses Schlüssels zu identifizieren","keyCreated":"API-Schlüssel erstellt","keyCreatedSuccess":"Schlüssel erfolgreich erstellt!","keyCreatedNote":"Kopieren und speichern Sie diesen Schlüssel jetzt – er wird nicht mehr angezeigt.","done":"Fertig","savePermissions":"Berechtigungen speichern","allowAll":"Alle zulassen","restrict":"Einschränken","allowAllInfo":"Mit diesem Schlüssel kann auf alle verfügbaren Modelle zugegriffen werden.","restrictInfo":"Dieser Schlüssel kann auf {selected} von {total} Modellen zugreifen.","selected":"{count} ausgewählt","all":"Alle","clear":"Klar","searchModels":"Modelle nach Name oder Anbieter suchen...","noModelsFound":"Keine Modelle gefunden","keyNameRequired":"Schlüsselname ist erforderlich","keyNameTooLong":"Der Schlüsselname darf höchstens {max} Zeichen lang sein","keyNameInvalid":"Der Schlüsselname darf nur Buchstaben, Zahlen, Leerzeichen, Bindestriche und Unterstriche enthalten","invalidKeyName":"Ungültiger Schlüsselname","failedCreateKey":"Schlüssel konnte nicht erstellt werden","failedCreateKeyRetry":"Schlüssel konnte nicht erstellt werden. Bitte versuchen Sie es erneut.","invalidKeyId":"Ungültige Schlüssel-ID","failedDeleteKey":"Schlüssel konnte nicht gelöscht werden","failedDeleteKeyRetry":"Schlüssel konnte nicht gelöscht werden. Bitte versuchen Sie es erneut.","invalidModelsSelection":"Ungültige Modellauswahl","cannotSelectMoreThanModels":"Es können nicht mehr als {max} Modelle ausgewählt werden","failedUpdatePermissions":"Die Berechtigungen konnten nicht aktualisiert werden","failedUpdatePermissionsRetry":"Die Berechtigungen konnten nicht aktualisiert werden. Bitte versuchen Sie es erneut.","unknownProvider":"unbekannt","copyMaskedKey":"Maskierten Schlüssel kopieren","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Zuletzt: {date}","editPermissions":"Berechtigungen bearbeiten","deleteKey":"Schlüssel löschen","model":"{count} Modell","models":"{count} Modelle","permissionsTitle":"Berechtigungen: {name}","allowAllDesc":"Mit diesem Schlüssel kann auf alle verfügbaren Modelle zugegriffen werden.","restrictDesc":"Dieser Schlüssel kann auf {selectedCount} von {totalModels} Modellen zugreifen.","selectedCount":"{count} ausgewählt","autoResolve":"Auto-Resolve","autoResolveDesc":"Auto-resolve ambiguous model names to native provider for this API key.","keyActive":"Key Active","keyActiveDesc":"Enable or disable this API key. Disabled keys are immediately rejected with 403.","accessSchedule":"Access Schedule","accessScheduleDesc":"Restrict access to specific hours and days of the week.","scheduleFrom":"From","scheduleUntil":"Until","scheduleDays":"Days","scheduleTimezone":"Timezone","scheduleTimezoneHint":"Use IANA timezone names, e.g. America/New_York, Europe/Berlin","scheduleActive":"Schedule","disabled":"Disabled","daySun":"Sun","dayMon":"Mon","dayTue":"Tue","dayWed":"Wed","dayThu":"Thu","dayFri":"Fri","daySat":"Sat","keyOnlyAvailableAtCreation":"Full key available only at creation time — copy it when you first create the key"},"auditLog":{"title":"Audit-Protokoll","searchPlaceholder":"Suchaktionen...","action":"Aktion","actor":"Schauspieler","target":"Ziel","ipAddress":"IP-Adresse","timestamp":"Zeitstempel","noEntries":"Keine Audit-Einträge gefunden","filterByAction":"Nach Aktion filtern...","filterByActor":"Nach Schauspieler filtern...","filterEntriesAria":"Audit-Log-Einträge filtern","filterByActionTypeAria":"Filtern Sie nach Aktionstyp","filterByActorAria":"Nach Schauspieler filtern","refreshAuditLogAria":"Audit-Protokoll aktualisieren","tableAria":"Audit-Log-Einträge","failedFetchAuditLog":"Das Audit-Protokoll konnte nicht abgerufen werden","notAvailable":"—","description":"Verwaltungsmaßnahmen und Sicherheitsereignisse","showing":"Zeigt {count} Einträge (Offset {offset})","previous":"Zurück"},"media":{"title":"Medien-Playground","subtitle":"Erstelle Bilder, Videos und Musik","model":"Model","prompt":"Prompt","generate":"Generieren","generating":"Generating...","loadingModels":"Loading available models...","noModels":"No models available. Configure providers with media capabilities first.","error":"Generation Failed","result":"Result","imageDescription":"Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.","videoDescription":"Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.","musicDescription":"Compose music using Stable Audio Open or MusicGen via ComfyUI."},"cliTools":{"title":"CLI-Tools","noActiveProviders":"Keine aktiven Anbieter","noActiveProvidersDesc":"Bitte fügen Sie zuerst Anbieter hinzu und verbinden Sie sie, um CLI-Tools zu konfigurieren.","mapModels":"Kartenmodelle","testConnection":"Testverbindung","connectionStatus":"Verbindungsstatus","configureEndpoint":"Endpunkt konfigurieren","instructions":"Anweisungen","modelMapping":"Modellzuordnung","baseUrl":"Basis-URL","apiKey":"API-Schlüssel","configured":"Konfiguriert","notConfigured":"Nicht konfiguriert","notInstalled":"Nicht installiert","custom":"Benutzerdefiniert","unknown":"Unbekannt","lastSavedAt":"Zuletzt gespeichert: {date}","never":"Niemals","justNow":"gerade jetzt","minutesAgoShort":"Vor {count}m","hoursAgoShort":"Vor {count}h","daysAgoShort":"Vor {count}d","monthsAgoShort":"Vor {count}mo","yearsAgoShort":"Vor {count}y","runtimeCheckFailed":"Laufzeitprüfung fehlgeschlagen","yourApiKeyPlaceholder":"Ihr-API-Schlüssel","modelPlaceholder":"Anbieter/Modell-ID","configurationSaved":"Konfiguration erfolgreich gespeichert.","failedToSave":"Die Konfiguration konnte nicht gespeichert werden.","noApiKeysCreateOne":"Keine API-Schlüssel – Erstellen Sie einen auf der Seite „Schlüssel“.","defaultOmnirouteKey":"sk_omniroute (Standard)","selectModel":"Wählen Sie Modell aus","selectModelForAlias":"Modell für {alias} auswählen","selectModelForTool":"Modell für {tool} auswählen","select":"Auswählen","clear":"Klar","comingSoon":"Kommt bald","checkingRuntime":"Laufzeitstatus wird geprüft...","guideOnlyIntegration":"Nur-Guide-Integration (keine lokale Laufzeit erforderlich)","cliRuntimeDetected":"CLI-Laufzeit erkannt und bereit","cliFoundNotRunnable":"CLI gefunden, aber nicht ausführbar{reason}","cliRuntimeNotDetected":"CLI-Laufzeit nicht erkannt","binary":"Binär","configPath":"Konfigurationspfad","configPathShort":"Konfig","failedCheckRuntimeStatus":"Der Laufzeitstatus konnte nicht überprüft werden.","copy":"Kopieren","copied":"Kopiert","copyConfig":"Konfiguration kopieren","saveConfig":"Konfiguration speichern","selectionSaved":"Auswahl gespeichert","guide":"Leitfaden","detected":"Erkannt","notReady":"Nicht bereit","active":"Aktiv","inactive":"Inaktiv","startMitm":"Starten Sie MITM","stopMitm":"Stoppen Sie MITM","mitmStarted":"MITM erfolgreich gestartet!","mitmStopped":"MITM wurde erfolgreich gestoppt!","failedStart":"MITM konnte nicht gestartet werden","failedStop":"MITM konnte nicht gestoppt werden","saveMappings":"Zuordnungen speichern","mappingsSaved":"Zuordnungen gespeichert!","failedSaveMappings":"Zuordnungen konnten nicht gespeichert werden","howItWorks":"So funktioniert es:","antigravityHowWorksDesc":"Antigravity sendet Anfragen an den Endpunkt von Google. MITM fängt sie ab und leitet sie an OmniRoute weiter.","antigravityStep1":"1. Starten Sie MITM, um Anforderungen über OmniRoute weiterzuleiten.","antigravityStep2Prefix":"2. Hinzufügen","antigravityStep2Suffix":"zu Ihrer Hosts-Datei als 127.0.0.1 hinzufügen.","antigravityStep3":"3. Öffnen Sie Antigravity und Anfragen werden weitergeleitet.","sudoPasswordRequiredTitle":"Sudo-Passwort erforderlich","sudoPasswordHint":"Zum Ändern der Hosts-Datei und der System-Proxy-Einstellungen ist ein Administratorkennwort erforderlich.","enterSudoPassword":"Geben Sie das Sudo-Passwort ein","sudoPasswordRequiredError":"Sudo-Passwort ist erforderlich.","cancel":"Abbrechen","confirm":"Bestätigen","settingsApplied":"Einstellungen erfolgreich übernommen!","failedApplySettings":"Die Einstellungen konnten nicht angewendet werden","settingsReset":"Einstellungen erfolgreich zurückgesetzt!","failedResetSettings":"Einstellungen konnten nicht zurückgesetzt werden","backupRestored":"Backup wiederhergestellt!","failedRestore":"Wiederherstellung fehlgeschlagen","checkingCli":"{tool} CLI wird überprüft...","cliNotRunnable":"{tool} CLI installiert, aber nicht ausführbar","cliNotInstalled":"{tool} CLI nicht installiert","cliNotDetected":"{tool} CLI nicht erkannt","cliDetectedReady":"{tool} CLI erkannt und bereit","cliFoundFailedHealthcheck":"{tool} CLI wurde gefunden, aber die Laufzeitprüfung ist fehlgeschlagen{reason}.","installCliPrompt":"Bitte installieren Sie {tool} CLI, um diese Funktion zu nutzen.","installCodexPrompt":"Bitte installieren Sie Codex CLI, um die Funktion zur automatischen Anwendung zu nutzen.","hide":"Verstecken","howToInstall":"Anleitung zur Installation","installationGuide":"Installationsanleitung","platforms":"macOS / Linux / Windows:","afterInstallationRun":"Nach der Installation ausführen","toVerify":"zu verifizieren.","current":"Aktuell","baseUrlPlaceholder":"https://.../v1","resetToDefault":"Auf Standard zurücksetzen","providerModelPlaceholder":"Anbieter/Modell-ID","apply":"Bewerben","reset":"Zurücksetzen","manualConfig":"Manuelle Konfiguration","backups":"Backups","configBackups":"Backups konfigurieren","noBackupsYet":"Noch keine Backups. Vor jedem Anwenden oder Zurücksetzen werden automatisch Sicherungen erstellt.","restore":"Wiederherstellen","backupRestoredReloading":"Backup wiederhergestellt! Status wird neu geladen...","failedRestoreBackup":"Sicherung konnte nicht wiederhergestellt werden","applied":"Beworben!","failed":"Fehlgeschlagen","resetDone":"Zurücksetzen!","omnirouteConfiguredOpenAiCompatible":"OmniRoute ist als OpenAI-kompatibler Anbieter konfiguriert","provider":"Anbieter","model":"Modell","providers":"Anbieter","auth":"Auth","noApiKeysAvailable":"Keine API-Schlüssel verfügbar","usingDefaultOmniroute":"Standardmäßig wird verwendet: sk_omniroute","updateConfig":"Konfiguration aktualisieren","applyConfig":"Konfiguration anwenden","noBackupsAvailable":"Keine Backups verfügbar.","profileSaved":"Profil „{name}“ gespeichert!","failedSaveProfile":"Profil konnte nicht gespeichert werden","profileActivated":"Profil aktiviert!","failedActivateProfile":"Profil konnte nicht aktiviert werden","profiles":"Profile","savedProfiles":"Gespeicherte Profile","noProfilesYet":"Noch keine Profile gespeichert. Speichern Sie die aktuelle Konfiguration unten als Profil.","activate":"Aktivieren","deleteProfile":"Profil löschen","profileNamePlaceholder":"Profilname (z. B. Persönliches Konto)","saveCurrent":"Aktuelles speichern","codexAuthNotePrefix":"Codex verwendet","codexAuthNoteMiddle":"mit","codexAuthNoteSuffix":"Klicken Sie auf „Übernehmen“, um die automatische Konfiguration durchzuführen.","claudeManualConfiguration":"Claude CLI – Manuelle Konfiguration","codexManualConfiguration":"Codex CLI – Manuelle Konfiguration","droidManualConfiguration":"Factory Droid – Manuelle Konfiguration","openClawManualConfiguration":"Open Claw – Manuelle Konfiguration","clineManualConfiguration":"Manuelle Cline-Konfiguration","kiloManualConfiguration":"Manuelle Konfiguration des Kilo-Codes","toolDescriptions":{"antigravity":"Google Antigravity IDE mit MITM","claude":"Anthropic Claude Code CLI","codex":"OpenAI Codex-CLI","droid":"Fabrik-Droiden-KI-Assistent","openclaw":"Öffnen Sie den Klauen-KI-Assistenten","cline":"Cline AI Coding Assistant CLI","kilo":"Kilo Code AI Assistant CLI","cursor":"Cursor-KI-Code-Editor","continue":"Weiter AI Assistant","opencode":"OpenCode AI coding agent (Terminal)","kiro":"Amazon Kiro — AI-powered IDE","windsurf":"Windsurf AI Code Editor","copilot":"GitHub Copilot AI Assistant"},"guides":{"cursor":{"notes":{"0":"Zur Nutzung dieser Funktion ist ein Cursor Pro-Konto erforderlich.","1":"Cursor leitet Anfragen über seinen eigenen Server weiter, daher wird ein lokaler Endpunkt nicht unterstützt. Bitte aktivieren Sie Cloud Endpoint in den Einstellungen."},"steps":{"1":{"title":"Öffnen Sie Einstellungen","desc":"Gehen Sie zu Einstellungen -> Modelle"},"2":{"title":"Aktivieren Sie die OpenAI-API","desc":"Aktivieren Sie die Option „OpenAI-API-Schlüssel“."},"3":{"title":"Basis-URL"},"4":{"title":"API-Schlüssel"},"5":{"title":"Benutzerdefiniertes Modell hinzufügen","desc":"Klicken Sie auf „Alle Modelle anzeigen“ -> „Benutzerdefiniertes Modell hinzufügen“"},"6":{"title":"Wählen Sie Modell aus"}}},"continue":{"steps":{"1":{"title":"Öffnen Sie die Konfiguration","desc":"Öffnen Sie die Konfigurationsdatei „Fortfahren“."},"2":{"title":"API-Schlüssel"},"3":{"title":"Wählen Sie Modell aus"},"4":{"title":"Modellkonfiguration hinzufügen","desc":"Fügen Sie Ihrem Modellarray die folgende Konfiguration hinzu:"}},"notes":{"0":"Continue verwendet eine JSON-Konfigurationsdatei."}},"opencode":{"steps":{"1":{"title":"Install OpenCode","desc":"Install via npm: npm install -g opencode-ai"},"2":{"title":"API Key"},"3":{"title":"Set Base URL","desc":"opencode config set baseUrl {{baseUrl}}"},"4":{"title":"Select Model"}},"notes":{"0":"OpenCode erfordert API-Schlüssel-Konfiguration.","1":"Base URL auf Ihren OmniRoute-Endpunkt setzen."}},"kiro":{"steps":{"1":{"title":"Open Kiro Settings","desc":"Go to Settings → AI Provider"},"2":{"title":"Base URL","desc":"Paste your OmniRoute endpoint URL"},"3":{"title":"API Key"},"4":{"title":"Select Model"}},"notes":{"0":"Kiro erfordert ein Amazon-Konto."}}},"mitmHowWorksDesc":"{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.","mitmStep1":"1. Start MITM to route requests through OmniRoute.","mitmStep2Prefix":"2. Add","mitmStep2Suffix":"to your hosts file as 127.0.0.1.","mitmStep3":"3. Open {toolName} and requests will be proxied.","whenToUseLabel":"Wann zu verwenden","openToolDocs":"Tool-Dokumente öffnen","toolUseCases":{"claude":"Verwenden Sie Claude Code, wenn Sie starke Planungsworkflows und lange Umgestaltungen mehrerer Dateien wünschen.","codex":"Verwenden Sie es, wenn Ihr Team auf OpenAI Codex CLI-Flows und profilbasierte Authentifizierung standardisiert ist.","droid":"Verwenden Sie ihn, wenn Sie einen kompakten Terminalagenten benötigen, der sich auf schnelle Codierung und Befehlsausführungsschleifen konzentriert.","openclaw":"Verwenden Sie diese Option, wenn Sie einen Codierungsagenten im Open-Claw-Stil wünschen, der jedoch über OmniRoute-Richtlinien weitergeleitet wird.","cline":"Verwenden Sie diese Option, wenn Sie Codierungsagenten in Editoren konfigurieren und eine geführte Einrichtung mit OmniRoute-Modellen wünschen.","kilo":"Verwenden Sie diese Option, wenn Ihr Arbeitsablauf auf Kilo-Code-Befehle und schnelle iterative Bearbeitungen angewiesen ist.","cursor":"Verwenden Sie diese Option, wenn Sie in Cursor codieren und benutzerdefinierte OpenAI-kompatible Modelle über OmniRoute benötigen.","continue":"Verwenden Sie diese Option, wenn Sie Continue in IDEs ausführen und eine portable JSON-basierte Anbieterkonfiguration benötigen.","opencode":"Verwenden Sie diese Option, wenn Sie terminalnative Agentenausführungen und Skriptautomatisierung über OpenCode bevorzugen.","kiro":"Zur Verwendung bei der Integration von Kiro und der zentralen Steuerung des Modellroutings über OmniRoute.","antigravity":"Wird verwendet, wenn Antigravity/Kiro-Verkehr über MITM abgefangen und an OmniRoute weitergeleitet werden muss.","copilot":"Verwenden Sie diese Option, wenn Sie eine UX im Copilot-Chat-Stil wünschen und gleichzeitig OmniRoute-Schlüssel und Routing-Regeln durchsetzen möchten."}},"combos":{"title":"Kombinationen","description":"Erstellen Sie Modellkombinationen mit gewichtetem Routing und Fallback-Unterstützung","createCombo":"Combo erstellen","editCombo":"Combo bearbeiten","deleteCombo":"Combo löschen","noModels":"Keine Modelle","noModelsYet":"Noch keine Modelle hinzugefügt","addModel":"Modell hinzufügen","addModelToCombo":"Modell zur Combo hinzufügen","routingStrategy":"Routing-Strategie","maxRetries":"Max. Wiederholungsversuche","timeout":"Timeout (ms)","healthcheck":"Gesundheitscheck","priority":"Priorität","fallback":"Rückfall","roundRobin":"Round Robin","random":"Zufällig","leastLatency":"Geringste Latenz","comboName":"Kombinationsname","comboNamePlaceholder":"meine-combo","deleteConfirm":"Diese Combo löschen?","noCombosYet":"Noch keine Combos","comboCreated":"Combo erfolgreich erstellt","comboUpdated":"Combo wurde erfolgreich aktualisiert","comboDeleted":"Combo gelöscht","failedCreate":"Kombination konnte nicht erstellt werden","failedUpdate":"Die Kombination konnte nicht aktualisiert werden","errorCreating":"Fehler beim Erstellen der Combo","errorUpdating":"Fehler beim Aktualisieren der Combo","errorDeleting":"Fehler beim Löschen der Combo","testFailed":"Testanforderung fehlgeschlagen","failedToggle":"Die Kombination konnte nicht umgeschaltet werden","testResults":"Testergebnisse – {name}","resolvedBy":"Gelöst von:","more":"+{count} mehr","reqs":"Anforderungen","success":"Erfolg","proxyConfigured":"Proxy konfiguriert","copyComboName":"Kombinationsnamen kopieren","enableCombo":"Kombination aktivieren","disableCombo":"Combo deaktivieren","testCombo":"Testkombination","duplicate":"Duplizieren","proxyConfig":"Proxy-Konfiguration","nameRequired":"Name ist erforderlich","nameInvalid":"Nur Buchstaben, Zahlen, -, _, / und . erlaubt","nameHint":"Buchstaben, Zahlen, -, _, / und . erlaubt","priorityDesc":"Sequentielles Fallback: Versucht zuerst Modell 1, dann 2 usw.","weightedDesc":"Verteilt den Datenverkehr nach Gewichtsprozentsatz mit Fallback","roundRobinDesc":"Zirkuläre Verteilung: Jede Anfrage wird abwechselnd an das nächste Modell weitergeleitet","randomDesc":"Einheitliche Zufallsauswahl, dann Rückgriff auf verbleibende Modelle","leastUsedDesc":"Wählt das Modell mit den wenigsten Anfragen aus und gleicht die Last über die Zeit aus","costOptimizedDesc":"Leitet basierend auf dem Preis zuerst zum günstigsten Modell weiter","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each model once before reshuffling","models":"Modelle","autoBalance":"Automatischer Ausgleich","advancedSettings":"Erweiterte Einstellungen","retryDelay":"Wiederholungsverzögerung (ms)","concurrencyPerModel":"Parallelität / Modell","queueTimeout":"Warteschlangen-Timeout (ms)","advancedHint":"Lassen Sie das Feld leer, um globale Standardeinstellungen zu verwenden. Diese überschreiben die Einstellungen pro Anbieter.","moveUp":"Bewegen Sie sich nach oben","moveDown":"Bewegen Sie sich nach unten","removeModel":"Entfernen","saving":"Sparen...","weighted":"Gewichtet","leastUsed":"Am wenigsten genutzt","costOpt":"Kosten-Opt","strategyGuideTitle":"So nutzen Sie diese Strategie","strategyGuideWhen":"Wann zu verwenden","strategyGuideAvoid":"Vermeiden Sie wann","strategyGuideExample":"Beispiel","strategyGuide":{"priority":{"when":"Sie haben ein bevorzugtes Modell und wollen nur im Falle eines Ausfalls auf einen Ersatz zurückgreifen.","avoid":"Sie benötigen eine Anforderungsverteilung über Modelle hinweg.","example":"Primäres Codierungsmodell mit günstigerem Backup für Ausfälle."},"weighted":{"when":"Sie benötigen eine kontrollierte Aufteilung des Datenverkehrs auf alle Modelle.","avoid":"Sie können Ihr Gewicht nicht über einen längeren Zeitraum hinweg genau aufrechterhalten.","example":"80 % stabiles Modell + 20 % Rollout des kanarischen Modells."},"round-robin":{"when":"Sie möchten eine vorhersehbare und gleichmäßige Verteilung.","avoid":"Die Modelle unterscheiden sich zu stark in der Latenz oder den Kosten.","example":"Gleiches Modell auf mehreren Konten, um den Durchsatz zu verteilen."},"random":{"when":"Sie möchten eine einfache Verteilung mit minimalem Setup.","avoid":"Sie benötigen strenge Verkehrsgarantien.","example":"Schnelles Prototyping mit gleichwertigen Modellen."},"least-used":{"when":"Sie möchten einen adaptiven Ausgleich basierend auf der Live-Nachfrage.","avoid":"Der Datenverkehr ist zu gering, um vom Nutzungsausgleich zu profitieren.","example":"Gemischte Arbeitslasten, bei denen ein Modell häufig überlastet ist."},"cost-optimized":{"when":"Kostenreduzierung steht für Sie an erster Stelle.","avoid":"Preisdaten fehlen oder sind veraltet.","example":"Hintergrund- oder Batch-Jobs, bei denen geringere Kosten bevorzugt werden."}},"advancedHelp":{"maxRetries":"Wie viele Wiederholungsversuche werden unternommen, bevor eine Anfrage fehlschlägt.","retryDelay":"Initial wait between retries. Higher values reduce burst pressure.","timeout":"Maximum request duration before aborting.","healthcheck":"Skips unhealthy models/providers from routing decisions.","concurrencyPerModel":"Max simultaneous requests allowed per model in round-robin.","queueTimeout":"How long a request can wait in queue before timing out."},"templatesTitle":"Quick templates","templatesDescription":"Apply a starting profile, then adjust models and config.","templateApply":"Apply template","templateHighAvailability":"High availability","templateHighAvailabilityDesc":"Priority routing with health checks and safe retries.","templateCostSaver":"Cost saver","templateCostSaverDesc":"Cost-optimized routing for budget-first workloads.","templateBalanced":"Balanced load","templateBalancedDesc":"Am wenigsten genutztes Routing, um die Nachfrage über einen längeren Zeitraum zu verteilen.","usageGuideHide":"Verstecken","usageGuideDontShowAgain":"Nicht mehr anzeigen","usageGuideShow":"Anleitung anzeigen","quickTestTitle":"Combo bereit zur Validierung","quickTestDescription":"Führen Sie jetzt einen Test durch, um das Fallback- und Latenzverhalten zu bestätigen.","testNow":"Jetzt testen","pricingCoverage":"Preisabdeckung","pricingCoverageHint":"Kostenoptimiert funktioniert am besten, wenn alle Combo-Modelle über Preise verfügen.","pricingAvailable":"Preise verfügbar","pricingMissing":"Keine Preisgestaltung","pricingAvailableShort":"preislich","pricingMissingShort":"kein Preis","warningRoundRobinSingleModel":"Round-Robin ist bei mindestens zwei Modellen am nützlichsten.","warningCostOptimizedPartialPricing":"Nur {priced} der {total} Modelle haben Preise. Die Routenplanung kann teilweise kostenbewusst erfolgen.","warningCostOptimizedNoPricing":"Für diese Kombination wurden keine Preisdaten gefunden. Eine kostenoptimierte Route kann unerwartet erfolgen.","readinessTitle":"Bereit zum Speichern?","readinessDescription":"Prüfe die Checkliste, bevor du dieses Combo erstellst oder aktualisierst.","readinessCheckName":"Der Combo-Name ist gültig","readinessCheckModels":"Mindestens ein Modell ist ausgewählt","readinessCheckWeights":"Die Gewichtssumme beträgt 100 %","readinessCheckWeightsOptional":"Gewichtungsregel nicht erforderlich","readinessCheckPricing":"Preisdaten sind verfügbar","readinessCheckPricingOptional":"Preisregel nicht erforderlich","saveBlockedTitle":"Speichern ist blockiert, bis diese Punkte behoben sind:","saveBlockName":"Definiere einen Namen für das Combo.","saveBlockModels":"Füge mindestens ein Modell hinzu.","saveBlockWeighted":"Setze die Gewichte auf 100 % (aktuell: {total} %).","saveBlockPricing":"Füge Preise für mindestens ein Modell hinzu oder wähle eine andere Strategie.","recommendationsLabel":"Empfohlene Konfiguration","applyRecommendations":"Empfehlungen anwenden","recommendationsUpdated":"Empfehlungen für {strategy} aktualisiert.","recommendationsApplied":"Empfehlungen für dieses Combo wurden angewendet.","strategyRecommendations":{"priority":{"title":"Ausfallsichere Basis","description":"Nutze ein primäres Modell und halte die Fallback-Kette kurz und zuverlässig.","tip1":"Setze dein zuverlässigstes Modell an erste Stelle.","tip2":"Nutze 1-2 Backup-Modelle mit ähnlicher Qualität.","tip3":"Aktiviere sichere Retries, um temporäre Provider-Fehler abzufangen."},"weighted":{"title":"Kontrollierte Traffic-Aufteilung","description":"Ideal für Canary-Rollouts und schrittweise Modellmigrationen.","tip1":"Starte mit einer konservativen Verteilung wie 90/10.","tip2":"Halte die Summe bei 100 % und gleiche nach Änderungen automatisch aus.","tip3":"Überwache Erfolg und Latenz, bevor du Canary-Gewichte erhöhst."},"round-robin":{"title":"Vorhersehbare Lastverteilung","description":"Am besten, wenn Modelle gleichwertig sind und du eine stabile Verteilung brauchst.","tip1":"Nutze mindestens 2 Modelle.","tip2":"Setze Concurrency-Limits, um Lastspitzen zu vermeiden.","tip3":"Nutze Queue-Timeouts, um bei Sättigung schnell zu scheitern."},"random":{"title":"Schnelle Verteilung mit wenig Setup","description":"Für einfache Verteilung ohne harte Garantien.","tip1":"Nutze Modelle mit ähnlichen Latenzprofilen.","tip2":"Lass Retries aktiv, um zufällige Fehlschläge abzufangen.","tip3":"Gut für Experimente, nicht für strenge SLAs."},"least-used":{"title":"Adaptives Balancing","description":"Routet zu weniger genutzten Modellen und reduziert Hotspots über Zeit.","tip1":"Funktioniert besser bei kontinuierlichem Traffic.","tip2":"Kombiniere mit Health Checks für sichereres Balancing.","tip3":"Verfolge Nutzung pro Modell, um Verteilungsgewinne zu validieren."},"cost-optimized":{"title":"Kostenorientiertes Routing","description":"Routet zu günstigeren Modellen, wenn Preisdaten verfügbar sind.","tip1":"Sichere Preisabdeckung für alle ausgewählten Modelle.","tip2":"Behalte einen Qualitäts-Fallback für schwierige Prompts.","tip3":"Ideal für Batch/Hintergrundjobs, bei denen Kosten das Haupt-KPI sind."}},"templateFreeStack":"Free Stack ($0)","templateFreeStackDesc":"Round-robin across all free providers: Kiro (Claude), iFlow (5 models), Qwen (4 models), Gemini CLI. Zero cost, never stops coding."},"costs":{"title":"Kosten","budget":"Budget","totalCost":"Gesamtkosten","breakdown":"Kostenaufschlüsselung","noData":"Keine Kostendaten","byModel":"Nach Modell","byProvider":"Nach Anbieter"},"endpoint":{"title":"API-Endpunkt","available":"Verfügbare Endpunkte","cloudProxy":"Cloud-Proxy","disableConfirm":"Sind Sie sicher, dass Sie den Cloud-Proxy deaktivieren möchten?","baseUrl":"Basis-URL","apiKeyLabel":"API-Schlüssel","registeredKeys":"Registrierte Schlüssel","chatCompletions":"Chat-Abschlüsse","responses":"Antworten","listModels":"Modelle auflisten","usingCloudProxy":"Verwenden von Cloud Proxy","usingLocalServer":"Verwenden eines lokalen Servers","machineId":"Maschinen-ID: {id}...","disableCloud":"Cloud deaktivieren","enableCloud":"Cloud aktivieren","modelsAcrossEndpoints":"{models} Modelle über {endpoints} Endpunkte hinweg","chatDesc":"Streaming- und Nicht-Streaming-Chat mit allen Anbietern","embeddings":"Einbettungen","embeddingsDesc":"Texteinbettungen für Such- und RAG-Pipelines","imageGeneration":"Bilderzeugung","imageDesc":"Generieren Sie Bilder aus Textaufforderungen","rerank":"Neu einordnen","rerankDesc":"Ordnen Sie Dokumente nach Relevanz für eine Abfrage neu","audioTranscription":"Audio-Transkription","audioTranscriptionDesc":"Audiodateien in Text umwandeln (Flüstern)","textToSpeech":"Text-to-Speech","textToSpeechDesc":"Wandeln Sie Text in natürlich klingende Sprache um","moderations":"Moderationen","moderationsDesc":"Inhaltsmoderation und Sicherheitsklassifizierung","responsesDesc":"OpenAI Responses API für Codex und fortgeschrittene agentische Workflows","listModelsDesc":"Alle verfügbaren Modelle aller verbundenen Anbieter auflisten","settingsApiDesc":"OmniRoute-Konfiguration per API lesen und ändern","settingsApi":"Settings API","categoryCore":"Kern-APIs","categoryMedia":"Medien & Multi-Modal","categoryUtility":"Hilfsmittel & Verwaltung","enableCloudTitle":"Aktivieren Sie Cloud Proxy","whatYouGet":"Was Sie bekommen werden","cloudBenefitAccess":"Greifen Sie von überall auf der Welt auf Ihre API zu","cloudBenefitShare":"Teilen Sie den Endpunkt ganz einfach mit Ihrem Team","cloudBenefitPorts":"Es ist nicht erforderlich, Ports zu öffnen oder eine Firewall zu konfigurieren","cloudBenefitEdge":"Schnelles globales Edge-Netzwerk","cloudSessionNote":"Cloud speichert Ihre Authentifizierungssitzung einen Tag lang. Bei Nichtverwendung wird es automatisch gelöscht.","cloudUnstableNote":"Cloud ist derzeit mit Claude Code OAuth in einigen Fällen instabil.","cloudConnected":"Cloud-Proxy verbunden!","connectingToCloud":"Mit der Cloud verbinden...","verifyingConnection":"Verbindung wird überprüft...","connecting":"Verbinden...","verifying":"Überprüfung...","connected":"Verbunden!","disableCloudTitle":"Deaktivieren Sie den Cloud-Proxy","disableWarning":"Alle Authentifizierungssitzungen werden aus der Cloud gelöscht.","syncingData":"Aktuelle Daten werden synchronisiert...","disablingCloud":"Cloud wird deaktiviert...","syncing":"Synchronisierung...","disabling":"Deaktivieren...","cloudConnectedVerified":"Cloud-Proxy verbunden und verifiziert!","connectedVerificationPending":"Verbunden – Verifizierung steht aus","connectedVerificationPendingWithError":"Verbunden – Überprüfung ausstehend: {error}","cloudDisabledSuccess":"Cloud erfolgreich deaktiviert","syncedSuccess":"Erfolgreich synchronisiert","failedDisable":"Die Cloud konnte nicht deaktiviert werden","failedEnable":"Cloud konnte nicht aktiviert werden","cloudRequestTimeout":"Zeitüberschreitung bei der Cloud-Anfrage","cloudRequestFailed":"Die Cloud-Anfrage ist fehlgeschlagen","cloudWorkerUnreachable":"Der Cloud-Worker konnte nicht erreicht werden. Stellen Sie sicher, dass der Cloud-Dienst ausgeführt wird (npm run dev in /cloud).","connectionFailed":"Verbindung fehlgeschlagen","syncFailed":"Cloud-Daten konnten nicht synchronisiert werden","providerModelsTitle":"{provider} – Modelle","noModelsForProvider":"Für diesen Anbieter sind keine Modelle verfügbar.","chat":"Chatten","embedding":"Einbetten","image":"Bild","custom":"Brauch","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Integrationsoberfläche","sectionDescription":"OpenAI-kompatible APIs und Betriebsprotokoll-Endpunkte","tabApis":"OpenAI-kompatible APIs","tabProtocols":"Protokolle","tabsAria":"Endpunktabschnitte","protocolsTitle":"Protokolle","protocolsDescription":"MCP und A2A sind erstklassige Endpunkte mit dedizierter Beobachtbarkeit und Kontrollen.","mcpCardTitle":"MCP-Server","mcpCardDescription":"Model Context Protocol über stdio","a2aCardTitle":"A2A-Server","a2aCardDescription":"Agent2Agent JSON-RPC-Endpunkt","protocolToolsLabel":"Werkzeuge","protocolTasksLabel":"Aufgaben","protocolActiveStreamsLabel":"Active streams","protocolLastActivity":"Letzte Aktivität","quickStart":"Schnellstart","openMcpDashboard":"Öffnen Sie die MCP-Verwaltung","openA2aDashboard":"Öffnen Sie die A2A-Verwaltung","mcpQuickStartTitle":"MCP-Schnellstart","mcpQuickStartStep1":"Führen Sie den MCP-Server über `omniroute --mcp` aus.","mcpQuickStartStep2":"Konfigurieren Sie Ihren MCP-Client für die Verbindung über stdio-Transport.","mcpQuickStartStep3":"Rufen Sie Tools wie `omniroute_get_health` und `omniroute_list_combos` auf.","a2aQuickStartTitle":"A2A-Schnellstart","a2aQuickStartStep1":"Entdecken Sie die Agentenkarte unter `/.well-known/agent.json`.","a2aQuickStartStep2":"Senden Sie JSON-RPC-Anfragen an `POST /a2a` mit `message/send` oder `message/stream`.","a2aQuickStartStep3":"Verfolgen und steuern Sie Aufgaben mit `tasks/get` und `tasks/cancel`.","completionsLegacy":"Completions (Legacy)","completionsLegacyDesc":"Legacy OpenAI text completions — accepts both prompt string and messages array format","categorySearch":"Search & Discovery","webSearch":"Web Search","webSearchDesc":"Unified web search across multiple providers with automatic failover and caching","searchProvider":"Search Provider","searchProviderDesc":"This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected."},"mcpDashboard":{"loading":"MCP-Dashboard wird geladen...","activate":"aktivieren","deactivate":"deaktivieren","confirmSwitchCombo":"Bestätigen Sie die {action}-Kombination „{combo}“?","switchComboFailed":"Der Kombinationsstatus konnte nicht gewechselt werden.","switchComboSuccess":"Combo „{combo}“ aktualisiert.","confirmApplyProfile":"Resilienzprofil „{profile}“ anwenden?","applyProfileFailed":"Das Resilienzprofil konnte nicht angewendet werden.","applyProfileSuccess":"Profil „{profile}“ angewendet.","confirmResetBreakers":"Alle Schutzschalter zurücksetzen?","resetBreakersFailed":"Leistungsschalter konnten nicht zurückgesetzt werden.","resetBreakersSuccess":"Leistungsschalter zurückgesetzt.","processStatus":"Prozessstatus","online":"Online","offline":"Offline","pid":"PID","sessionUptime":"Sitzungsverfügbarkeit","lastHeartbeat":"Letzter Herzschlag","activity24h":"Aktivität (24h)","totalCalls":"Gesamtanzahl der Anrufe","successRate":"Erfolgsquote","avgLatency":"Durchschnittliche Latenz","topTools":"Top-Werkzeuge","noToolCalls24h":"Keine Werkzeugaufrufe in den letzten 24 Stunden.","runtimeDetails":"Laufzeitdetails","transport":"Transport","scopesEnforced":"Bereiche erzwungen","yes":"ja","no":"Nein","lastCall":"Letzter Anruf","heartbeatPath":"Herzschlagpfad","operationalControls":"Betriebskontrollen","switchCombo":"Kombination wechseln","inactive":"inaktiv","active":"aktiv","activateCombo":"Combo aktivieren","deactivateCombo":"Combo deaktivieren","applyResilienceProfile":"Resilienzprofil anwenden","profileAggressive":"aggressiv","profileBalanced":"ausgeglichen","profileConservative":"konservativ","applyProfile":"Profil anwenden","resetCircuitBreakers":"Leistungsschalter zurücksetzen","resetCircuitBreakersHelp":"Löscht den aktuellen Leistungsschalterstatus und die Fehlerzähler für Anbieter.","resetAllBreakers":"Setzen Sie alle Leistungsschalter zurück","toolsAndScopes":"Werkzeuge und Zielfernrohre","tableTool":"Werkzeug","tableScopes":"Bereiche","tablePhase":"Phase","tableAudit":"Prüfung","auditLog":"Audit-Protokoll","auditSummary":"Anrufe: {total} | Seite {page} von {totalPages}","allTools":"Alle Werkzeuge","allResults":"Alle Ergebnisse","success":"Erfolg","failure":"Misserfolg","apiKeyIdPlaceholder":"apiKeyId","loadingAuditEntries":"Loading audit entries...","noAuditEntriesForFilters":"No audit entries found for current filters.","tableTimestamp":"Timestamp","tableDuration":"Duration","tableResult":"Result","tableApiKey":"API key","failed":"failed","previous":"Previous","next":"Next"},"a2aDashboard":{"loading":"Loading A2A dashboard...","confirmCancelTask":"Cancel task {taskId}?","cancelTaskFailed":"Failed to cancel task.","cancelTaskSuccess":"Aufgabe {taskId} abgebrochen.","smokeSendFailed":"message/send smoke test failed.","smokeSendSuccessWithTask":"message/send ok (task {taskId}).","smokeSendSuccess":"message/send ok.","smokeStreamFailed":"message/stream smoke test failed.","smokeStreamSuccessWithTask":"message/stream ok (task {taskId}{stateSuffix}).","smokeStreamNoTaskId":"message/stream finished without task id.","health":"Health","ok":"ok","totalTasks":"Total tasks","activeStreams":"Active streams","lastTask":"Last task","taskStateOverview":"Task state overview","state":{"submitted":"submitted","working":"working","completed":"completed","failed":"failed","cancelled":"cancelled"},"agentCard":"Agentenkarte","version":"Version","url":"URL","capabilities":"Fähigkeiten","agentCardNotAvailable":"Agentenkarte nicht verfügbar.","quickValidation":"Schnelle Validierung","quickValidationDescription":"Executes smoke calls through the live `/a2a` endpoint.","runMessageSend":"Run message/send","runMessageStream":"Run message/stream","taskManagement":"Task management","taskSummary":"{total} tasks | page {page} of {totalPages}","allStates":"all","allSkills":"all skills","loadingTasks":"Loading tasks...","noTasksForFilters":"No tasks found for current filters.","tableTask":"Task","tableSkill":"Skill","tableState":"State","tableUpdated":"Aktualisiert","tableActions":"Aktionen","view":"Sicht","cancel":"Stornieren","previous":"Previous","next":"Next","taskDetail":"Aufgabendetails","close":"Schließen","metadata":"Metadaten","events":"Veranstaltungen","artifacts":"Artefakte"},"health":{"title":"Systemgesundheit","description":"Echtzeitüberwachung Ihrer OmniRoute-Instanz","healthy":"Gesund","degraded":"Degradiert","down":"Runter","uptime":"Betriebszeit","memory":"Erinnerung","memoryRss":"Speicher (RSS)","heap":"Haufen","cpu":"CPU","database":"Datenbank","version":"Version","lastCheck":"Letzter Check","providerHealth":"Gesundheit des Anbieters","systemMetrics":"Systemmetriken","tokenHealth":"Token-Gesundheit","refreshAll":"Alle aktualisieren","checkNow":"Jetzt prüfen","loadingHealth":"Gesundheitsdaten werden geladen...","failedToLoad":"Gesundheitsdaten konnten nicht geladen werden: {error}","retry":"Versuchen Sie es noch einmal","allOperational":"Alle Systeme betriebsbereit","issuesDetected":"Systemprobleme erkannt","updatedAt":"Aktualisiert {time}","latency":"Latenz","latencyP50":"S. 50","latencyP95":"S. 95","latencyP99":"S. 99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Gesamtzahl der Anfragen","noDataYet":"Noch keine Daten","promptCache":"Prompt-Cache","entries":"Einträge","hitRate":"Trefferquote","hitsMisses":"Treffer/Fehlschläge","signatureCache":"Signatur-Cache","signatureDefaults":"Standardeinstellungen","signatureTool":"Werkzeug","signatureFamily":"Familie","signatureSession":"Sitzung","recovering":"Genesung","noCBData":"Keine Leistungsschalterdaten verfügbar. Stellen Sie zunächst einige Anfragen.","providerHealthStatusAria":"Gesundheitsstatus des Anbieters","issuesLabel":"Erkannte Probleme","operational":"Betriebsbereit","providers":"Anbieter","healthyCount":"{count} gesund","nodeVersion":"Knoten {version}","failures":"{count} Fehler","failuresPlural":"{count} Fehler","lastFailure":"Zuletzt","rateLimitStatus":"Rate-Limit-Status","activeLimiters":"{count} aktiver Limiter","activeLimitersPlural":"{count} aktive Limiter","queued":"In der Warteschlange","queuedCount":"{count} in der Warteschlange","running":"laufen","runningCount":"{count} läuft","ok":"Okay","activeLockouts":"Aktive Sperren","resetConfirm":"Alle Leistungsschalter in den fehlerfreien Zustand zurücksetzen? Dadurch werden alle Fehlerzählungen gelöscht und alle Anbieter werden wieder in den Betriebszustand versetzt.","resetAllTitle":"Setzen Sie alle Leistungsschalter in den fehlerfreien Zustand zurück","resetting":"Zurücksetzen...","resetAll":"Alles zurücksetzen","until":"Bis {time}","activeProviders":"{count} active","monitoredProviders":"{count} monitored","configuredProvidersLabel":"Im Dashboard konfiguriert","configuredProvidersHint":"Anbieter mit in /dashboard/providers gespeicherten Anmeldeinformationen, unabhängig vom Laufzeitstatus.","activeProvidersHint":"Konfigurierte Anbieter, die derzeit für Routing-Anfragen aktiviert sind.","monitoredProvidersHint":"Anbieter, die derzeit von Leistungsschalter-Zustandsmonitoren überwacht werden."},"limits":{"title":"Limits und Quoten","rateLimit":"Ratenbegrenzung","remaining":"Übrig","requestsPerMinute":"Anfragen/Min","tokensPerMinute":"Token/Min","dailyLimit":"Tageslimit"},"logs":{"title":"Protokolle","requestLogs":"Fordern Sie Protokolle an","proxyLogs":"Proxy-Protokolle","auditLog":"Audit-Protokoll","console":"Konsole","auditLogDesc":"Verwaltungsmaßnahmen und Sicherheitsereignisse","loading":"Laden...","refresh":"Aktualisieren","filterByAction":"Nach Aktion filtern...","filterByActor":"Nach Schauspieler filtern...","filterEntriesAria":"Audit-Log-Einträge filtern","filterByActionTypeAria":"Filtern Sie nach Aktionstyp","filterByActorAria":"Nach Schauspieler filtern","refreshAuditLogAria":"Audit-Protokoll aktualisieren","tableAria":"Audit-Log-Einträge","failedFetchAuditLog":"Das Audit-Protokoll konnte nicht abgerufen werden","showing":"Zeigt {count} Einträge (Offset {offset})","search":"Suchen","timestamp":"Zeitstempel","action":"Aktion","actor":"Schauspieler","target":"Ziel","details":"Einzelheiten","ipAddress":"IP-Adresse","notAvailable":"—","noEntries":"Es wurden keine Audit-Log-Einträge gefunden","previous":"Zurück","next":"Als nächstes"},"onboarding":{"welcome":"Willkommen","security":"Sicherheit","test":"Testen","ready":"Bereit!","setPassword":"Passwort festlegen","addProvider":"Fügen Sie Ihren ersten Anbieter hinzu","getStarted":"Legen Sie los","skip":"Überspringen","skipWizard":"Den Assistenten vollständig überspringen","skipPassword":"Passwort-Einrichtung überspringen","skipAndContinue":"Überspringen und fortfahren","passwordLabel":"Passwort","confirmPassword":"Passwort bestätigen","enterPassword":"Passwort eingeben","confirmPasswordPlaceholder":"Passwort bestätigen","passwordsMismatch":"Passwörter stimmen nicht überein","setupComplete":"Einrichtung abgeschlossen!","goToDashboard":"Gehen Sie zu Dashboard →","welcomeDesc":"OmniRoute ist Ihr lokaler AI-API-Proxy. Es leitet Anfragen mit Lastausgleich, Failover und Nutzungsverfolgung an mehrere KI-Anbieter weiter.","multiProvider":"Multi-Provider","usageTracking":"Nutzungsverfolgung","apiKeyMgmt":"API-Schlüsselverwaltung","securityDesc":"Legen Sie ein Passwort fest, um Ihr Dashboard zu schützen, oder überspringen Sie es zunächst.","providerDesc":"Verbinden Sie Ihren ersten KI-Anbieter. Sie können später weitere hinzufügen.","apiKeyRequired":"API-Schlüssel (erforderlich)","customUrlOptional":"Benutzerdefinierte URL (optional)","testDesc":"Lassen Sie uns überprüfen, ob Ihre Provider-Verbindung funktioniert.","runTest":"Führen Sie einen Verbindungstest durch","testingConnection":"Verbindung wird getestet...","connectionSuccessful":"Verbindung erfolgreich! Ihr Anbieter ist bereit.","noProviderFound":"Kein Anbieter gefunden. Sie können später eines über das Dashboard hinzufügen.","testFailed":"Der Test ist fehlgeschlagen, aber Sie können dies später konfigurieren.","couldNotTest":"Konnte momentan nicht testen. Sie können den Test über das Dashboard durchführen.","doneDesc":"Sie sind bereit! Ihre OmniRoute-Instanz ist konfiguriert und bereit, KI-Anfragen weiterzuleiten.","yourEndpoint":"Ihr Endpunkt:","continue":"Weiter","retry":"Versuchen Sie es noch einmal","failedSetPassword":"Das Passwort konnte nicht festgelegt werden. Versuchen Sie es erneut.","failedAddProvider":"Anbieter konnte nicht hinzugefügt werden. Versuchen Sie es erneut.","connectionError":"Verbindungsfehler. Bitte versuchen Sie es erneut.","provider":"Anbieter"},"providers":{"title":"Anbieter","addProvider":"Anbieter hinzufügen","editProvider":"Anbieter bearbeiten","deleteProvider":"Anbieter löschen","noProviders":"Keine Anbieter konfiguriert","modelAvailability":"Modellverfügbarkeit","accounts":"Konten","newAccount":"Neues Konto","deleteConfirm":"Sind Sie sicher, dass Sie diesen Anbieter löschen möchten?","testing":"Testen...","testConnection":"Testverbindung","testSuccess":"Verbindung erfolgreich","testFailed":"Verbindung fehlgeschlagen","available":"Verfügbar","cooldown":"Abklingzeit","unavailable":"Nicht verfügbar","unknown":"Unbekannt","oauthLabel":"OAuth","compatibleLabel":"Kompatibel","chat":"Chatten","responses":"Antworten","messages":"Nachrichten","oauthProviders":"OAuth-Anbieter","freeProviders":"Kostenlose Anbieter","apiKeyProviders":"API-Schlüsselanbieter","compatibleProviders":"Mit API-Schlüsseln kompatible Anbieter","testAll":"Alle testen","testAllOAuth":"Testen Sie alle OAuth-Verbindungen","testAllFree":"Testen Sie alle kostenlosen Verbindungen","testAllApiKey":"Testen Sie alle API-Schlüsselverbindungen","testAllCompatible":"Testen Sie alle kompatiblen Verbindungen","connected":"{count} Verbunden","errorCount":"{count} Fehler ({code})","errorCountNoCode":"{count} Fehler","noConnections":"Keine Verbindungen","disabled":"Deaktiviert","enableProvider":"Anbieter aktivieren","disableProvider":"Anbieter deaktivieren","testResults":"Testergebnisse","noCompatibleYet":"Es wurden noch keine kompatiblen Anbieter hinzugefügt","compatibleHint":"Verwenden Sie die Schaltflächen oben, um OpenAI- oder Anthropic-kompatible Endpunkte hinzuzufügen","addOpenAICompatible":"OpenAI-kompatibel hinzufügen","addAnthropicCompatible":"Anthropic-kompatibel hinzufügen","addNewProvider":"Neuen Anbieter hinzufügen","backToProviders":"Zurück zu Anbietern","configureNewProvider":"Konfigurieren Sie einen neuen KI-Anbieter zur Verwendung mit Ihren Anwendungen.","providerLabel":"Anbieter","selectProvider":"Wählen Sie einen Anbieter aus","selectedProvider":"Ausgewählter Anbieter","authMethod":"Authentifizierungsmethode","apiKeyLabel":"API-Schlüssel","apiKeyRequired":"API-Schlüssel ist erforderlich","selectProviderRequired":"Bitte wählen Sie einen Anbieter aus","enterApiKey":"Geben Sie Ihren API-Schlüssel ein","apiKeySecure":"Ihr API-Schlüssel wird verschlüsselt und sicher gespeichert.","oauth2Connect":"Verbinden Sie sich mit OAuth2","oauth2Label":"OAuth2","oauth2Desc":"Verbinden Sie Ihr Konto mithilfe der OAuth2-Authentifizierung.","displayName":"Anzeigename","displayNamePlaceholder":"z. B. Produktions-API, Entwicklungsumgebung","displayNameHint":"Optional. Ein benutzerfreundlicher Name zur Identifizierung dieser Konfiguration.","active":"Aktiv","activeDescription":"Aktivieren Sie diesen Anbieter für die Verwendung in Ihren Anwendungen","cancel":"Abbrechen","createProvider":"Anbieter erstellen","failedCreate":"Anbieter konnte nicht erstellt werden","errorOccurred":"Es ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.","modelStatus":"Modellstatus","allModelsOperational":"Alle Modelle betriebsbereit","modelsWithIssues":"{count} Modell(e) mit Problemen","allModelsNormal":"Alle Modelle reagieren normal.","cooldownCleared":"Abklingzeit für {model} gelöscht","failedClearCooldown":"Die Abklingzeit konnte nicht gelöscht werden","loadingAvailability":"Modellverfügbarkeit wird geladen...","clearCooldown":"Klar","clearing":"Löschen...","until":"Bis {time}","providerTestFailed":"Anbietertest fehlgeschlagen","modeTest":"{mode} Test","passedCount":"{count} bestanden","failedCount":"{count} fehlgeschlagen","testedCount":"{count} getestet","millisecondsAbbr":"{value}ms","okShort":"Okay","errorShort":"FEHLER","noActiveConnectionsInGroup":"Für diese Gruppe wurden keine aktiven Verbindungen gefunden.","allTestsPassed":"Alle {total}-Tests bestanden","testSummary":"{passed}/{total} bestanden, {failed} fehlgeschlagen","nameLabel":"Name","prefixLabel":"Präfix","baseUrlLabel":"Basis-URL","apiTypeLabel":"API-Typ","prefixHint":"Erforderlich. Eindeutiges Präfix für Modellnamen.","nameHint":"Erforderlich. Eine benutzerfreundliche Bezeichnung für diesen Knoten.","baseUrlHint":"Erforderlich.  Basis-URL der Anbieter-API.","anthropicPrefixPlaceholder":"AC-Prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Verbindung validieren","validating":"Validierung...","connectionValid":"Verbindung ist gültig!","connectionFailed":"Verbindung fehlgeschlagen. Überprüfen Sie URL und Schlüssel.","testKeyLabel":"API-Schlüssel testen","testKeyPlaceholder":"sk-... (nur zur Validierung)","providerNotFound":"Anbieter nicht gefunden","deleteConnectionConfirm":"Diese Verbindung löschen?","failedSetAlias":"Alias konnte nicht festgelegt werden","failedSaveConnection":"Die Verbindung konnte nicht gespeichert werden","failedSaveConnectionRetry":"Die Verbindung konnte nicht gespeichert werden. Bitte versuchen Sie es erneut.","failedRetestConnection":"Die Verbindung konnte nicht erneut getestet werden","deleteCompatibleNodeConfirm":"Diesen {type} kompatiblen Knoten löschen?","anthropicCompatibleDetails":"Anthropic-kompatible Details","openaiCompatibleDetails":"Details zur OpenAI-Kompatibilität","messagesApi":"Nachrichten-API","responsesApi":"Antwort-API","chatCompletions":"Chat-Abschlüsse","importingModels":"Importieren...","importFromModels":"Import aus /models","clearAllModels":"Alle Modelle löschen","clearAllModelsConfirm":"Möchten Sie wirklich alle Modelle für diesen Anbieter löschen?","clearAllModelsSuccess":"Alle Modelle gelöscht","clearAllModelsFailed":"Modelle löschen fehlgeschlagen","addConnectionToImport":"Fügen Sie eine Verbindung hinzu, um den Import zu ermöglichen.","noModelsConfigured":"Keine Modelle konfiguriert","connectionCount":"{count} Verbindung(en)","fetchingModels":"Verfügbare Modelle werden abgerufen...","failedFetchModels":"Modelle konnten nicht abgerufen werden","noModelsFound":"Keine Modelle gefunden","importFailed":"Der Import ist fehlgeschlagen","noNewModelsAdded":"Es wurden keine neuen Modelle hinzugefügt.","adding":"Hinzufügen...","importingModelsTitle":"Modelle importieren","copyModel":"Modell kopieren","removeModel":"Modell entfernen","rateLimitProtected":"Geschützt","rateLimitUnprotected":"Ungeschützt","enableRateLimitProtection":"Klicken Sie hier, um den Ratenbegrenzungsschutz zu aktivieren","disableRateLimitProtection":"Klicken Sie hier, um den Ratenbegrenzungsschutz zu deaktivieren","productionKey":"Produktionsschlüssel","enterNewApiKey":"Geben Sie einen neuen API-Schlüssel ein","optional":"Optional","anthropicCompatibleName":"Anthropisch kompatibel","openaiCompatibleName":"OpenAI-kompatibel","failedImportModels":"Modelle konnten nicht importiert werden","noModelsReturnedFromEndpoint":"Vom /models-Endpunkt wurden keine Modelle zurückgegeben.","importingModelsProgress":"{current} von {total} Modellen werden importiert...","foundModelsStartingImport":"{count} Modelle gefunden. Import wird gestartet...","importingModelById":"{modelId} wird importiert...","importSuccessCount":"{count, plural, one {# model} other {# models}} erfolgreich importiert!","noNewModelsAddedExisting":"Es wurden keine neuen Modelle hinzugefügt (alle bereits vorhanden).","importDoneCount":"✓ Fertig! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Es ist ein unerwarteter Fehler aufgetreten","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"Nachrichten","responsesPath":"Antworten","chatCompletionsPath":"Chat/Abschlüsse","add":"Hinzufügen","edit":"Bearbeiten","delete":"Löschen","anthropic":"Anthropisch","openai":"OpenAI","singleConnectionPerCompatible":"Pro kompatiblem Knoten ist nur eine Verbindung zulässig. Fügen Sie einen weiteren Knoten hinzu, wenn Sie mehr Verbindungen benötigen.","connections":"Verbindungen","providerProxyTitleConfigured":"Anbieter-Proxy: {host}","configured":"konfiguriert","providerProxyConfigureHint":"Proxy für alle Verbindungen dieses Anbieters konfigurieren","providerProxy":"Anbieter-Proxy","noConnectionsYet":"Noch keine Verbindungen","addFirstConnectionHint":"Fügen Sie Ihre erste Verbindung hinzu, um loszulegen","addConnection":"Verbindung hinzufügen","availableModels":"Verfügbare Modelle","pageAutoRefresh":"Die Seite wird automatisch aktualisiert...","statusDisabled":"deaktiviert","statusConnected":"verbunden","statusRuntimeIssue":"Laufzeitproblem","statusAuthFailed":"Authentifizierung fehlgeschlagen","statusRateLimited":"Tarif begrenzt","statusNetworkIssue":"Netzwerkproblem","statusTestUnsupported":"Test nicht unterstützt","statusUnavailable":"nicht verfügbar","statusFailed":"gescheitert","statusError":"Fehler","oauthAccount":"OAuth-Konto","errorTypeRuntime":"Lokale Laufzeit","errorTypeUpstreamAuth":"Upstream-Authentifizierung","errorTypeMissingCredential":"Fehlender Ausweis","errorTypeRefreshFailed":"Aktualisierung fehlgeschlagen","errorTypeTokenExpired":"Token abgelaufen","errorTypeRateLimited":"Preis begrenzt","errorTypeUpstreamUnavailable":"Upstream nicht verfügbar","errorTypeNetworkError":"Netzwerkfehler","errorTypeTestUnsupported":"Test nicht unterstützt","errorTypeUpstreamError":"Upstream-Fehler","proxySourceGlobal":"Global","proxySourceProvider":"Anbieter","proxySourceKey":"Schlüssel","proxyConfiguredBySource":"Proxy ({source}): {host}","autoPriority":"Automatisch: {priority}","proxy":"Stellvertreter","retestAuthentication":"Authentifizierung erneut testen","retest":"Erneut testen","disableConnection":"Verbindung deaktivieren","enableConnection":"Verbindung aktivieren","reauthenticateConnection":"Authentifizieren Sie diese Verbindung erneut","proxyConfig":"Proxy-Konfiguration","aliasExistsAlert":"Alias „{alias}“ existiert bereits. Bitte verwenden Sie ein anderes Modell oder bearbeiten Sie den vorhandenen Alias.","openRouterAnyModelHint":"OpenRouter unterstützt jedes Modell. Fügen Sie Modelle hinzu und erstellen Sie Aliase für den schnellen Zugriff.","modelIdFromOpenRouter":"Modell-ID (von OpenRouter)","openRouterModelPlaceholder":"anthropisch/claude-3-opus","customModels":"Benutzerdefinierte Modelle","customModelsHint":"Fügen Sie Modell-IDs hinzu, die nicht in der Standardliste enthalten sind. Diese stehen für das Routing zur Verfügung.","modelId":"Modell-ID","customModelPlaceholder":"z.B. gpt-4,5-turbo","loading":"Laden...","removeCustomModel":"Benutzerdefiniertes Modell entfernen","noCustomModels":"Es wurden noch keine benutzerdefinierten Modelle hinzugefügt.","allSuggestedAliasesExist":"Alle vorgeschlagenen Aliase sind bereits vorhanden. Bitte wählen Sie ein anderes Modell oder entfernen Sie widersprüchliche Aliase.","failedSaveCustomModel":"Das benutzerdefinierte Modell konnte nicht gespeichert werden","modelAddedSuccess":"Modell {modelId} erfolgreich hinzugefügt","failedAddModelTryAgain":"Modell konnte nicht hinzugefügt werden. Bitte versuchen Sie es erneut.","failedSaveImportedModel":"Das importierte Modell konnte nicht in der benutzerdefinierten Datenbank gespeichert werden","failedImportModelsTryAgain":"Modelle konnten nicht importiert werden. Bitte versuchen Sie es erneut.","failedRemoveModelFromDatabase":"Das Modell konnte nicht aus der Datenbank entfernt werden","modelRemovedSuccess":"Modell erfolgreich entfernt","failedDeleteModelTryAgain":"Modell konnte nicht gelöscht werden. Bitte versuchen Sie es erneut.","compatibleModelsDescription":"Fügen Sie {type}-kompatible Modelle manuell hinzu oder importieren Sie sie vom Endpunkt /models.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"Die Validierung des API-Schlüssels ist fehlgeschlagen. Bitte überprüfen Sie Ihren Schlüssel und versuchen Sie es erneut.","addProviderApiKeyTitle":"Fügen Sie den API-Schlüssel {provider} hinzu","checking":"Überprüfen...","check":"Überprüfen","valid":"Gültig","invalid":"Ungültig","creating":"Erstellen...","validationChecksAnthropicCompatible":"Die Validierung prüft {provider} durch Überprüfung des API-Schlüssels.","validationChecksOpenAiCompatible":"Die Validierung prüft {provider} über /models auf Ihrer Basis-URL.","priorityLabel":"Priorität","saving":"Sparen...","save":"Speichern","editConnection":"Verbindung bearbeiten","accountName":"Kontoname","email":"E-Mail","healthCheckMinutes":"Gesundheitscheck (Min.)","healthCheckHint":"Proaktives Token-Aktualisierungsintervall. 0 = deaktiviert.","groupLabel":"Environment","groupPlaceholder":"e.g. eKaizen, Personal","failedTestConnection":"Die Verbindung konnte nicht getestet werden","failed":"Fehlgeschlagen","leaveBlankKeepCurrentApiKey":"Lassen Sie das Feld leer, um den aktuellen API-Schlüssel beizubehalten.","editCompatibleTitle":"Bearbeiten Sie {type} kompatibel","compatibleBaseUrlHint":"Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.","apiKeyForCheck":"API-Schlüssel (zur Überprüfung)","compatibleProdPlaceholder":"{type} Kompatibel (Prod)","providerTestTimeout":"Provider test timed out — too many connections to test at once","advancedSettings":"Advanced Settings","chatPathLabel":"Chat Endpoint Path","chatPathPlaceholder":"/chat/completions","chatPathHint":"Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)","modelsPathLabel":"Models Endpoint Path","modelsPathPlaceholder":"/models","modelsPathHint":"Custom models path for validation (e.g. /v4/models)","builtInModels":"Built-in models","builtInModelsHint":"Registry models for this provider. Use the pencil to set compatibility options.","normalizeToolCallIdLabel":"Normalize tool call IDs to 9 characters (e.g. Mistral)","preserveDeveloperRoleLabel":"Keep OpenAI Responses developer role (do not map to system)","compatAdjustmentsTitle":"Compatibility","compatButtonLabel":"Compatibility","compatToolIdShort":"Tool ID 9","compatDeveloperShort":"Developer role","compatDoNotPreserveDeveloper":"Do not preserve developer role","compatBadgeNoPreserve":"No preserve","compatProtocolLabel":"Client request protocol","compatProtocolHint":"These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).","compatProtocolOpenAI":"OpenAI Chat Completions","compatProtocolOpenAIResponses":"OpenAI Responses API","compatProtocolClaude":"Anthropic Messages","tokenRefreshed":"Token refreshed successfully","tokenRefreshFailed":"Token refresh failed","compatBadgeUpstreamHeaders":"Headers","compatUpstreamAddRow":"Add header","compatUpstreamHeaderName":"Header name","compatUpstreamHeaderValue":"Value","compatUpstreamHeadersHint":"High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.","compatUpstreamHeadersLabel":"Extra upstream headers","compatUpstreamRemoveRow":"Remove row","autoSync":"Auto-Sync","autoSyncTooltip":"Modellliste automatisch alle 24 Stunden aktualisieren (konfigurierbar über MODEL_SYNC_INTERVAL_HOURS)","autoSyncEnabled":"Auto-Sync aktiviert — Modelle werden regelmäßig aktualisiert","autoSyncDisabled":"Auto-Sync deaktiviert","autoSyncToggleFailed":"Auto-Sync umschalten fehlgeschlagen","allModelsAlreadyImported":"Alle Modelle sind bereits importiert","noNewModelsToImport":"Keine neuen Modelle zum Importieren — alle Modelle sind bereits in der Registry oder der Liste benutzerdefinierter Modelle","skippingExistingModels":"Überspringe {count} vorhandene Modelle"},"settings":{"title":"Einstellungen","general":"Allgemein","security":"Sicherheit","appearance":"Aussehen","routing":"Routenführung","cache":"Cache","resilience":"Belastbarkeit","systemPrompt":"Systemaufforderung","thinkingBudget":"Denkendes Budget","proxy":"Stellvertreter","pricing":"Preise","storage":"Lagerung","policies":"Richtlinien","ipFilter":"IP-Filter","comboDefaults":"Combo-Standardeinstellungen","fallbackChains":"Fallback-Ketten","changePassword":"Passwort ändern","enablePassword":"Passwort aktivieren","darkMode":"Dunkler Modus","lightMode":"Lichtmodus","systemTheme":"Systemthema","enableCache":"Cache aktivieren","cacheTTL":"Cache-TTL","maxCacheSize":"Maximale Cache-Größe","clearCache":"Cache leeren","cacheHits":"Cache-Treffer","cacheMisses":"Cache-Fehler","hitRate":"Trefferquote","cacheEntries":"Cache-Einträge","circuitBreaker":"Leistungsschalter","retryPolicy":"Wiederholungsrichtlinie","maxRetries":"Max. Wiederholungsversuche","retryDelay":"Wiederholungsverzögerung","timeoutMs":"Timeout (ms)","enableSystemPrompt":"Aktivieren Sie die Systemaufforderung","systemPromptText":"Systemaufforderungstext","enableThinking":"Denken aktivieren","maxThinkingTokens":"Max Thinking Tokens","enableProxy":"Proxy aktivieren","proxyUrl":"Proxy-URL","pricingRates":"Preisformat","currentPricing":"Aktuelle Preisübersicht","loadingPricing":"Preisdaten werden geladen...","noPricing":"Keine Preisdaten verfügbar","input":"Eingabe","output":"Ausgabe","cached":"Zwischengespeichert","reasoning":"Begründung","cacheCreation":"Cache-Erstellung","customPricing":"Individuelle Preise","databaseSize":"Datenbankgröße","backupDb":"Backup-Datenbank","restoreDb":"Datenbank wiederherstellen","exportData":"Daten exportieren","importData":"Daten importieren","clearData":"Alle Daten löschen","clearDataConfirm":"Dadurch werden alle Daten dauerhaft gelöscht. Bist du sicher?","enableRequestLogs":"Aktivieren Sie Anforderungsprotokolle","logRetention":"Protokollaufbewahrung","ipWhitelist":"IP-Whitelist","ipBlacklist":"IP-Blacklist","addIP":"IP hinzufügen","savedSuccessfully":"Einstellungen erfolgreich gespeichert","ai":"KI","advanced":"Fortgeschritten","localMode":"Lokaler Modus – Alle auf Ihrem Computer gespeicherten Daten","settingsSectionsAria":"Abschnitte „Einstellungen“.","switchThemes":"Wechseln Sie zwischen hellen und dunklen Themen","themeSelectionAria":"Themenauswahl","themeLight":"Licht","themeDark":"Dunkel","themeSystem":"System","hideHealthLogs":"Gesundheitsprüfungsprotokolle ausblenden","hideHealthLogsDesc":"Wenn diese Option aktiviert ist, werden [HealthCheck]-Meldungen in der Serverkonsole unterdrückt","themeAccent":"Themenfarbe","themeAccentDesc":"Wähle eine voreingestellte Farbe oder erstelle dein eigenes Thema mit einer Farbe","themeCreate":"Thema erstellen","themeCustom":"Benutzerdefiniertes Thema","themeBlue":"Blau","themeRed":"Rot","themeGreen":"Grün","themeViolet":"Violett","themeOrange":"Orange","themeCyan":"Cyan","promptCache":"Prompt-Cache","flushCache":"Cache leeren","flushing":"Spülen…","size":"Größe","hits":"Treffer","evictions":"Räumungen","loadingCacheStats":"Cache-Statistiken werden geladen…","globalProxy":"Globaler Proxy","globalProxyDesc":"Konfigurieren Sie einen globalen ausgehenden Proxy für alle API-Aufrufe. Einzelne Anbieter, Kombinationen und Schlüssel können dies außer Kraft setzen.","noGlobalProxy":"Kein globaler Proxy konfiguriert","globalLabel":"Global","configure":"Konfigurieren","globalSystemPrompt":"Globale Systemaufforderung","systemPromptDesc":"Wird in alle Anfragen auf Proxy-Ebene eingefügt","saved":"Gespeichert","systemPromptPlaceholder":"Geben Sie die Systemaufforderung ein, um alle Anfragen zu injizieren ...","systemPromptHint":"Diese Eingabeaufforderung wird der Systemnachricht jeder Anfrage vorangestellt. Wird für globale Anweisungen, Sicherheitsrichtlinien oder Antwortformatierungsregeln verwendet.","chars":"{count} Zeichen","thinkingBudgetTitle":"Denkendes Budget","thinkingBudgetDesc":"Kontrollieren Sie die Verwendung von KI-Begründungstoken für alle Anfragen","passthrough":"Passthrough","passthroughDesc":"Keine Änderungen – der Kunde kontrolliert das Denkbudget","auto":"Automatisch","autoDesc":"Entfernen Sie alle Denkkonfigurationen – lassen Sie den Anbieter entscheiden","custom":"Benutzerdefiniert","customDesc":"Legen Sie ein festes Token-Budget für alle Anfragen fest","adaptive":"Adaptiv","adaptiveDesc":"Skalieren Sie das Budget basierend auf der Komplexität der Anfrage","effortNone":"Keine (0 Token)","effortLow":"Niedrig (1.000 Token)","effortMedium":"Mittel (10.000 Token)","effortHigh":"Hoch (128.000 Token)","tokenBudget":"Token-Budget","tokens":"Token","baseEffortLevel":"Grundaufwandsstufe","adaptiveHint":"Der adaptive Modus skaliert ausgehend von dieser Basisebene basierend auf der Nachrichtenanzahl, der Tool-Nutzung und der Eingabeaufforderungslänge.","requireLogin":"Anmeldung erforderlich","requireLoginDesc":"Wenn aktiviert, erfordert das Dashboard ein Passwort. Wenn AUS, Zugriff ohne Anmeldung.","currentPassword":"Aktuelles Passwort","enterCurrentPassword":"Geben Sie das aktuelle Passwort ein","newPassword":"Neues Passwort","enterNewPassword":"Geben Sie ein neues Passwort ein","confirmPassword":"Bestätigen Sie das neue Passwort","confirmPasswordPlaceholder":"Bestätigen Sie das neue Passwort","passwordsNoMatch":"Passwörter stimmen nicht überein","passwordUpdated":"Passwort erfolgreich aktualisiert","failedUpdatePassword":"Das Passwort konnte nicht aktualisiert werden","errorOccurred":"Es ist ein Fehler aufgetreten","updatePassword":"Passwort aktualisieren","setPassword":"Passwort festlegen","apiEndpointProtection":"API-Endpunktschutz","requireAuthModels":"API-Schlüssel für /models erforderlich","requireAuthModelsDesc":"Wenn diese Option aktiviert ist, gibt der Endpunkt /v1/models für nicht authentifizierte Anforderungen 404 zurück. Verhindert die Modellerkennung durch nicht autorisierte Benutzer.","blockedProviders":"Gesperrte Anbieter","blockedProvidersDesc":"Verstecken Sie bestimmte Anbieter in der /v1/models-Antwort. Gesperrte Anbieter erscheinen nicht in den Modelllisten.","providersBlocked":"{count} Anbieter von /models blockiert","blockProviderTitle":"Blockieren Sie {provider}","unblockProviderTitle":"Entsperren Sie {provider}","routingStrategy":"Routing-Strategie","fillFirst":"Zuerst füllen","fillFirstDesc":"Verwenden Sie Konten in der Reihenfolge ihrer Priorität","roundRobin":"Round Robin","roundRobinDesc":"Gehen Sie alle Konten durch","p2c":"P2C","p2cDesc":"Wählen Sie zufällig zwei aus und verwenden Sie die gesündere","random":"Zufällig","randomDesc":"Zufälliges Konto bei jeder Anfrage","leastUsed":"Am wenigsten genutzt","leastUsedDesc":"Wählen Sie das zuletzt verwendete Konto aus","costOpt":"Kosten Opt","costOptDesc":"Bevorzugen Sie das günstigste verfügbare Konto","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each account once before reshuffling","stickyLimit":"Sticky-Limit","stickyLimitDesc":"Anrufe pro Konto vor dem Wechsel","modelAliases":"Modell-Aliase","modelAliasesTitle":"Modell-Aliase","modelAliasesDesc":"Platzhaltermuster zum Neuzuordnen von Modellnamen • Verwenden Sie * und ?","addCustomAlias":"Benutzerdefinierten Alias hinzufügen","deprecatedModelId":"Veraltete Modell-ID","newModelId":"Neue Modell-ID","customAliases":"Benutzerdefinierte Aliase","builtInAliases":"Integrierte Aliase","backgroundDegradationTitle":"Hintergrundaufgaben-Degradierung","backgroundDegradationDesc":"Erkennt automatisch Hintergrundaufgaben (Titel, Zusammenfassungen) und leitet an günstigere Modelle weiter","enableDegradation":"Hintergrund-Degradierung aktivieren","enableDegradationHint":"Wenn aktiviert, werden Hintergrundaufgaben wie Titelgenerierung und Zusammenfassungen automatisch an günstigere Modelle weitergeleitet","tasksDetected":"Aufgaben erkannt","degradationMap":"Modell-Degradierungskarte","premiumModel":"Premium-Modell","cheapModel":"Günstiges Modell","detectionPatterns":"Erkennungsmuster","newPattern":"z.B. \\"einen Titel generieren\\"","aliasPatternPlaceholder":"Claude-Sonett-*","aliasTargetPlaceholder":"claude-sonett-4-20250514","pattern":"Muster","targetModel":"Zielmodell","add":"+ Hinzufügen","session":"Sitzung","sessionDetailsAria":"Sitzungsdetails","status":"Status","authenticated":"Authentifiziert","guest":"Gast","loginTime":"Anmeldezeit","sessionAge":"Sitzungsalter","browser":"Browser","clearLocalData":"Lokale Daten löschen","logout":"Abmelden","clearLocalDataConfirm":"Alle lokalen Daten löschen? Dadurch werden Ihre Einstellungen zurückgesetzt.","unknown":"Unbekannt","systemActor":"System","ipAccessControl":"IP-Zugriffskontrolle","ipAccessControlDesc":"Blockieren oder erlauben Sie bestimmte IP-Adressen","ipModeDisabled":"Deaktiviert","ipModeBlacklist":"Schwarze Liste","ipModeWhitelist":"Whitelist","ipModeWhitelistPriority":"WL-Priorität","addIpAddress":"IP-Adresse hinzufügen","ipAddressPlaceholder":"192.168.1.0/24 oder 10.0.*.*","block":"+ Blockieren","allow":"+ Erlauben","blocked":"Blockiert ({count})","allowed":"Erlaubt ({count})","temporaryBans":"Vorübergehende Sperren ({count})","minLeft":"{min}m übrig","auditLog":"Audit-Protokoll","searchAuditLogs":"Audit-Logs durchsuchen...","failedLoadAuditLog":"Das Audit-Protokoll konnte nicht geladen werden","noAuditEvents":"Keine Prüfereignisse gefunden","action":"Aktion","actor":"Schauspieler","details":"Einzelheiten","time":"Zeit","fallbackChainsTitle":"Fallback-Ketten","fallbackChainsDesc":"Definieren Sie die Anbieter-Fallback-Reihenfolge pro Modell","addChain":"+ Kette hinzufügen","modelName":"Modellname","modelNamePlaceholder":"claude-sonett-4-20250514","providersCommaSeparated":"Anbieter (durch Kommas getrennt, nach Priorität geordnet)","providersCommaSeparatedPlaceholder":"anthropisch, openai, Zwillinge","createChain":"Kette erstellen","noFallbackChains":"Keine Fallback-Ketten","noFallbackChainsDesc":"Erstellen Sie eine Kette, um die Anbieter-Fallback-Reihenfolge für ein Modell zu definieren.","loadingFallbackChains":"Fallback-Ketten werden geladen...","deleteChainConfirm":"Fallback-Kette für „{model}“ löschen?","chainCreated":"Kette für {model} erstellt","chainDeleted":"Kette für {model} gelöscht","failedCreateChain":"Kette konnte nicht erstellt werden","failedDeleteChain":"Kette konnte nicht gelöscht werden","deleteChain":"Kette löschen","fillModelAndProviders":"Bitte geben Sie Modellnamen und Anbieter ein","addAtLeastOneProvider":"Fügen Sie mindestens einen Anbieter hinzu","comboDefaultsTitle":"Combo-Standardeinstellungen","globalComboConfig":"Globale Combo-Konfiguration","defaultStrategy":"Standardstrategie","defaultStrategyDesc":"Wird auf neue Combos ohne explizite Strategie angewendet","comboStrategyAria":"Combo-Strategie","priority":"Priorität","weighted":"Gewichtet","maxRetriesLabel":"Max. Wiederholungsversuche","retryDelayLabel":"Wiederholungsverzögerung (ms)","timeoutLabel":"Timeout (ms)","healthCheck":"Gesundheitscheck","healthCheckDesc":"Überprüfen Sie vorab die Verfügbarkeit des Anbieters","trackMetrics":"Verfolgen Sie Metriken","trackMetricsDesc":"Zeichnen Sie Metriken pro Kombinationsanforderung auf","providerOverrides":"Anbieterüberschreibungen","providerOverridesDesc":"Zeitüberschreitung und Wiederholungsversuche pro Anbieter außer Kraft setzen. Anbietereinstellungen überschreiben globale Standardeinstellungen.","providerMaxRetriesAria":"{provider} maximale Wiederholungsversuche","providerTimeoutAria":"{provider} Timeout ms","removeProviderOverrideAria":"Entfernen Sie die {provider}-Überschreibung","newProviderNamePlaceholder":"z.B. Google, openai...","newProviderNameAria":"Neuer Anbietername","retries":"wiederholt","ms":"Frau","saveComboDefaults":"Combo-Standardeinstellungen speichern","maxNestingDepth":"Maximale Verschachtelungstiefe","concurrencyPerModel":"Parallelität / Modell","queueTimeout":"Warteschlangen-Timeout (ms)","providerProfiles":"Anbieterprofile","providerProfilesDesc":"Separate Resilienzeinstellungen für OAuth-Anbieter (sitzungsbasiert) und API-Schlüsselanbieter (gemessen). OAuth-Anbieter haben aufgrund niedrigerer Ratenlimits strengere Schwellenwerte.","oauthProviders":"OAuth-Anbieter","apiKeyProviders":"API-Schlüsselanbieter","transientCooldown":"Vorübergehende Abklingzeit","rateLimitCooldown":"Abklingzeit der Ratenbegrenzung","maxBackoffLevel":"Max. Backoff-Level","cbThreshold":"CB-Schwelle","cbResetTime":"CB-Resetzeit","rateLimiting":"Ratenbegrenzung","rateLimitingDesc":"API-Schlüsselanbieter unterliegen automatisch einer Ratenbegrenzung mit sicheren Standardwerten. Grenzwerte werden aus Antwortheadern gelernt und passen sich im Laufe der Zeit an.","defaultSafetyNet":"Standard-Sicherheitsnetz","rpm":"U/min","minGap":"Min. Lücke","maxConcurrent":"Maximal gleichzeitig","activeLimiters":"Aktive Limiter","noActiveLimiters":"Noch keine aktiven Ratenbegrenzer.","reservoir":"Stausee","running":"Laufen","queued":"In der Warteschlange","circuitBreakers":"Leistungsschalter","breakerStateClosed":"Geschlossen","breakerStateOpen":"Offen","breakerStateHalfOpen":"Halboffen","tripped":"{count} ausgelöst","healthy":"{count} gesund","resetAll":"Alles zurücksetzen","noCircuitBreakers":"Noch keine Schutzschalter aktiv. Sie werden automatisch erstellt, wenn Anforderungen die Combo-Pipeline durchlaufen.","failures":"{count} Fehler(e)","policiesLocked":"Richtlinien und gesperrte Kennungen","allOperational":"Alle Systeme betriebsbereit – keine Aussperrungen oder ausgelösten Leistungsschalter","loadingPolicies":"Richtlinien werden geladen...","lockedIdentifiers":"Gesperrte Kennungen","unlockedIdentifier":"Entsperrt: {identifier}","sinceDate":"seit {date}","forceUnlock":"Entsperren erzwingen","unlocking":"Entsperren...","failedUnlock":"Entsperren fehlgeschlagen","failedLoadWithStatus":"Fehler beim Laden: {status}","failedLoadResilience":"Ausfallsicherheitsstatus konnte nicht geladen werden","saveFailed":"Speichern fehlgeschlagen","resetFailed":"Zurücksetzen fehlgeschlagen","loadingResilience":"Resilienzstatus wird geladen...","retry":"Versuchen Sie es noch einmal","systemStorage":"System & Speicher","allDataLocal":"Alle Daten werden lokal auf Ihrem Computer gespeichert","databasePath":"Datenbankpfad","exportDatabase":"Datenbank exportieren","exportAll":"Alle exportieren (.tar.gz)","importDatabase":"Datenbank importieren","confirmDbImport":"Bestätigen Sie den Datenbankimport","confirmDbImportDesc":"Dadurch werden alle aktuellen Daten durch den Inhalt von {file} ersetzt. Vor dem Import wird automatisch ein Backup erstellt.","yesImport":"Ja, Import","lastBackup":"Letzte Sicherung","noBackupYet":"Noch kein Backup","backupNow":"Jetzt sichern","backupRestore":"Sichern und Wiederherstellen","viewBackups":"Backups anzeigen","hide":"Verstecken","backupRetentionDesc":"Datenbank-Snapshots werden automatisch vor der Wiederherstellung und alle 15 Minuten erstellt, wenn sich Daten ändern. Aufbewahrung: 24 Stunden + 30 tägliche Backups mit intelligenter Rotation.","loadingBackups":"Backups werden geladen...","noBackupsYet":"Noch keine Backups verfügbar. Bei Datenänderungen werden automatisch Backups erstellt.","backupsAvailable":"{count} Backup(s) verfügbar","refresh":"Aktualisieren","confirm":"Bestätigen?","yes":"Ja","no":"Nein","restore":"Wiederherstellen","invalidFileType":"Ungültiger Dateityp. Es werden nur .sqlite-Dateien akzeptiert.","exportFailed":"Der Export ist fehlgeschlagen","exportFailedWithError":"Export fehlgeschlagen: {error}","fullExportFailedWithError":"Vollständiger Export fehlgeschlagen: {error}","backupCreated":"Backup erstellt: {file}","restoreSuccess":"Restauriert! {connections} Verbindungen, {nodes} Knoten, {combos} Combos, {apiKeys} API-Schlüssel.","importSuccess":"Datenbank importiert! {connections} Verbindungen, {nodes} Knoten, {combos} Combos, {apiKeys} API-Schlüssel.","justNow":"gerade jetzt","minutesAgo":"Vor {count}m","hoursAgo":"Vor {count}h","daysAgo":"Vor {count}d","backupReasonManual":"Handbuch","backupReasonPreRestore":"vor der Wiederherstellung","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Keine Änderungen seit der letzten Sicherung","backupFailed":"Die Sicherung ist fehlgeschlagen","restoreFailed":"Wiederherstellung fehlgeschlagen","importFailed":"Der Import ist fehlgeschlagen","errorDuringRestore":"Bei der Wiederherstellung ist ein Fehler aufgetreten","errorDuringImport":"Beim Import ist ein Fehler aufgetreten","modelPricing":"Modellpreise","modelPricingDesc":"Konfigurieren Sie die Kostensätze pro Modell. • Alle Preise in 1-Millionen-Dollar-Tokens","providers":"Anbieter","registry":"Registrierung","priced":"Preislich","searchProvidersModels":"Anbieter oder Modelle suchen...","showAll":"Alle anzeigen","noProvidersMatch":"Zu Ihrer Suche passen keine Anbieter.","howPricingWorks":"So funktioniert die Preisgestaltung","cacheWrite":"Cache-Schreiben","unsaved":"nicht gespeichert","resetDefaults":"Standardeinstellungen zurücksetzen","saveProvider":"Anbieter speichern","saving":"Sparen...","model":"Modell","models":"Modelle","moreProviders":"{count} weitere Anbieter","withPricing":"mit konfigurierter Preisgestaltung","policiesCircuitBreakers":"Richtlinien und Leistungsschalter","activeIssuesDetected":"Aktive Probleme erkannt","off":"Aus","resetPricingConfirm":"Alle Preise für {provider} auf die Standardwerte zurücksetzen?","pricingDescInput":"Eingabe: An das Modell gesendete Token","pricingDescOutput":"Ausgabe: Token generiert","pricingDescCached":"Zwischengespeichert: Wiederverwendete Eingabe (~50 % der Eingaberate)","pricingDescReasoning":"Begründung: Denktokens (greift auf Ausgabe zurück)","pricingDescCacheWrite":"Cache Write: Erstellen von Cache-Einträgen (fällt auf Input zurück)","pricingDescFormula":"Kosten = (Eingabe × Eingaberate) + (Ausgabe × Ausgaberate) + (zwischengespeichert × zwischengespeicherte_Rate) pro Million Token.","pricingSettingsTitle":"Preiseinstellungen","totalModels":"Gesamtmodelle","active":"Aktiv","costCalculation":"Kostenberechnung","costCalculationDesc":"Die Kosten werden basierend auf der Token-Nutzung und den für jedes Modell konfigurierten Preissätzen berechnet.","pricingFormat":"Preisformat","pricingFormatDesc":"Alle Preise sind in $/1 Mio. Token angegeben (Dollar pro Million Token).","tokenTypes":"Token-Typen","inputTokenDesc":"Standard-Prompt-Token","outputTokenDesc":"Abschluss-/Antworttoken","cachedTokenDesc":"Zwischengespeicherte Eingabetokens (typischerweise 50 % der Eingaberate)","reasoningTokenDesc":"Spezielle Argumentations-/Denk-Tokens (Fallback auf die Ausgaberate)","cacheCreationTokenDesc":"Token, die zum Erstellen von Cache-Einträgen verwendet werden (Fallback auf Eingaberate)","customPricingNote":"Sie können die Standardpreise für bestimmte Modelle überschreiben. Benutzerdefinierte Überschreibungen haben Vorrang vor automatisch erkannten Preisen.","editPricing":"Preise bearbeiten","viewFullDetails":"Vollständige Details anzeigen","themeCoral":"Koralle","cliFingerprint":"CLI Fingerprint Matching","cliFingerprintDesc":"Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.","cliFingerprintEnabled":"{count} provider(s) with CLI fingerprint active","enableFingerprintTitle":"Enable fingerprint for {provider}","disableFingerprintTitle":"Disable fingerprint for {provider}","routingAdvancedGuideTitle":"Erweiterte Routenführung","routingAdvancedGuideHint1":"Verwenden Sie Fill First für vorhersehbare Priorität, Round Robin für Fairness und P2C für Latenzstabilität.","routingAdvancedGuideHint2":"Wenn sich die Qualität/Kosten der Anbieter unterscheiden, beginnen Sie mit „Cost Opt“ für Hintergrundarbeit und „Least Used“ für ausgewogene Abnutzung.","comboDefaultsGuideTitle":"So optimieren Sie die Combo-Standardeinstellungen","comboDefaultsGuideHint1":"Halten Sie die Wiederholungsversuche bei Datenflüssen mit geringer Latenz gering. Erhöhen Sie das Timeout nur für Aufgaben mit langer Generierung.","comboDefaultsGuideHint2":"Verwenden Sie Anbieterüberschreibungen, wenn ein Anbieter ein anderes Timeout-/Wiederholungsverhalten als die globalen Standardwerte benötigt."},"translator":{"title":"Übersetzer","metaTitle":"Übersetzer-Spielplatz | OmniRoute","metaDescription":"Debuggen, testen und visualisieren Sie API-Formatübersetzungen zwischen Anbietern","playgroundTitle":"Übersetzerspielplatz","playground":"Spielplatz","realtime":"Echtzeit-Übersetzungsaktivität","chatTester":"Chat-Tester","testBench":"Prüfstand","liveMonitor":"Live-Monitor","modeDescriptionPlayground":"Fügen Sie einen beliebigen API-Anfragetext ein und sehen Sie, wie OmniRoute ihn zwischen Anbieterformaten übersetzt (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).","modeDescriptionChatTester":"Senden Sie echte Chat-Anfragen über OmniRoute und überprüfen Sie den gesamten Roundtrip: Eingabe, übersetzte Anfrage, Anbieterantwort und übersetzte Ausgabe.","modeDescriptionTestBench":"Führen Sie vordefinierte Szenarien aus und vergleichen Sie die Kompatibilität zwischen Anbietern und Modellen.","modeDescriptionLiveMonitor":"Beobachten Sie Übersetzungsereignisse in Echtzeit, während Anfragen über OmniRoute eingehen.","modeDescriptionFallback":"Debuggen, testen und visualisieren Sie, wie OmniRoute API-Anfragen zwischen Anbietern übersetzt.","recentTranslations":"Aktuelle Übersetzungen","noTranslations":"Noch keine Übersetzungen","source":"Quelle","target":"Ziel","time":"Zeit","model":"Modell","status":"Status","latency":"Latenz","totalTranslations":"Gesamtübersetzungen","successful":"Erfolgreich","errors":"Fehler","avgLatency":"Durchschnittliche Latenz","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"Live – Automatische Aktualisierung","paused":"Angehalten","eventsAppearHint":"Übersetzungsereignisse werden hier angezeigt, wenn Anforderungen über OmniRoute fließen. Verwenden Sie eine dieser Methoden, um Ereignisse zu generieren:","chatTesterTab":"Registerkarte „Chat-Tester“.","testBenchTab":"Registerkarte „Prüfstand“.","externalApiCalls":"Externe API-Aufrufe","ideCliIntegrations":"IDE/CLI-Integrationen","inMemoryNote":"Hinweis: Ereignisse werden im Speicher gespeichert und beim Neustart des Servers zurückgesetzt.","ok":"Okay","errorShort":"ERR","formatConverter":"Formatkonverter","formatConverterDescription":"Fügen Sie einen JSON-Anfragetext ein oder geben Sie ihn ein. Der Übersetzer erkennt das Quellformat automatisch und konvertiert es in das Zielformat. Verwenden Sie dies, um zu debuggen, wie OmniRoute Anfragen zwischen Formaten übersetzt (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).","input":"Eingabe","output":"Ausgabe","auto":"Automatisch","swapFormats":"Formate austauschen","translateAction":"Übersetzen","clear":"Klar","inputPlaceholder":"Fügen Sie hier einen Anfragetext ein oder wählen Sie unten eine Vorlage aus ...","exampleTemplates":"Beispielvorlagen","exampleTemplatesHint":"— Zum Laden klicken","templateLoadHint":"Die Vorlage lädt die Anfrage im Format {format}. Ändern Sie das Quellformat, um es in einem anderen Format zu laden.","compatibilityTester":"Kompatibilitätstester","compatibilityReport":"Kompatibilitätsbericht","testBenchDescription":"Führen Sie vordefinierte Szenarien aus (einfacher Chat, Tool-Aufruf usw.), um die Übersetzung und die Anbieterkompatibilität zu überprüfen. Wählen Sie ein Quellformat und einen Zielanbieter aus und führen Sie dann alle Tests durch, um einen Kompatibilitätsprozentsatz zu ermitteln. Verwenden Sie diese Funktion, um herauszufinden, welche Funktionen anbieterübergreifend funktionieren.","targetProvider":"Zielanbieter","runAllTests":"Führen Sie alle Tests aus","runTest":"Test ausführen","reRun":"Wiederholen","running":"Laufen...","passed":"bestanden","failed":"gescheitert","passedIconLabel":"✅Bestanden","chunks":"Brocken","scenarioSimpleChat":"Einfacher Chat","scenarioToolCalling":"Werkzeugaufruf","scenarioMultiTurn":"Multiturn","scenarioThinking":"Denken","scenarioSystemPrompt":"Systemaufforderung","scenarioStreaming":"Streaming","templateNames":{"simple-chat":"Einfacher Chat","tool-calling":"Werkzeugaufruf","multi-turn":"Multiturn","thinking":"Denken","system-prompt":"Systemaufforderung","streaming":"Streaming"},"templateDescriptions":{"simple-chat":"Einfache Textnachricht","tool-calling":"Funktions-/Tool-Aufruf","multi-turn":"Gespräch mit der Geschichte","thinking":"Erweitertes Denken / Argumentieren","system-prompt":"Komplexe Systemanweisungen","streaming":"SSE-Streaming-Anfrage"},"templatePayloads":{"simpleChat":{"system":"Sie sind ein hilfreicher Assistent.","userGreeting":"Hallo! Wie geht es dir heute?"},"toolCalling":{"userWeather":"Wie ist das Wetter in São Paulo?","toolDescription":"Erhalten Sie das aktuelle Wetter für einen Standort","cityNameDescription":"Stadtname"},"multiTurn":{"system":"Sie sind Codierungsassistent.","userInitial":"Schreiben Sie eine Funktion zum Sortieren eines Arrays in Python.","assistantExample":"Hier ist eine einfache Sortierfunktion:\\n\\n„Python\\ndef sort_array(arr):\\n Rückgabe sortiert(arr)\\n„","userFollowUp":"Sortieren Sie nun in absteigender Reihenfolge."},"thinking":{"question":"Wie groß ist die Summe der ersten 100 Primzahlen?"},"systemPrompt":{"systemInstruction":"Sie sind ein leitender Softwareentwickler mit Spezialisierung auf verteilte Systeme. Beantworten Sie Fragen präzise und nutzen Sie die Best Practices der Branche. Geben Sie bei Bedarf immer Codebeispiele an. Formatieren Sie Ihre Antworten mit Markdown.","question":"Wie setze ich ein Schutzschaltermuster um?"},"streaming":{"prompt":"Erzählen Sie mir eine kurze Geschichte über einen Roboter, der malen lernt."}},"openaiCompatibleLabel":"OpenAI-kompatibel","anthropicCompatibleLabel":"Anthropisch kompatibel","noTemplateForFormat":"Keine Vorlage für dieses Format","translationFailed":"Übersetzung fehlgeschlagen: {error}","pipelineDebugger":"Pipeline-Debugger","translationPipeline":"Übersetzungspipeline","pipelineVisualization":"Pipeline-Visualisierung","pipelineVisualizationHint":"Senden Sie eine Nachricht, um zu sehen, wie Ihre Anfrage durch Erkennung → Übersetzung → Anbieteranruf verläuft.","chatTesterDescription":"Senden Sie Nachrichten in einem bestimmten Clientformat und überprüfen Sie jeden Schritt der Übersetzungspipeline.","chatTesterFlow":"Client-Anfrage → Formaterkennung → OpenAI Intermediate → Anbieterformat → Antwort","clickStepToInspect":"Klicken Sie auf einen beliebigen Schritt, um die Daten in dieser Phase zu überprüfen.","clientFormat":"Client-Format","provider":"Anbieter","modelPlaceholder":"Wählen Sie einen Modellnamen aus oder geben Sie ihn ein...","sendMessageToSeePipeline":"Senden Sie eine Nachricht, um die Übersetzungspipeline anzuzeigen","chatMessageHintPrefix":"Ihre Nachricht wird als formatiert","chatMessageHintSuffix":"Anfrage, übersetzt durch die Pipeline und gesendet an den ausgewählten Anbieter.","youWithFormat":"Sie ({format})","assistant":"Assistent","typeMessage":"Geben Sie eine Nachricht ein...","send":"Senden","clientRequest":"Kundenanfrage","clientRequestDescription":"Der Anfragetext, wie ihn Ihr Kunde senden würde","formatDetected":"Format erkannt","formatDetectedDescription":"OmniRoute erkennt das API-Format automatisch anhand der Anforderungsstruktur","openaiIntermediate":"OpenAI-Mittelstufe","openaiIntermediateDescription":"Alle Formate werden zunächst auf das OpenAI-Format (die universelle Brücke) normalisiert.","providerFormat":"Anbieterformat","providerFormatDescription":"Das OpenAI-Format wird in das native Format des Anbieters übersetzt","providerResponse":"Antwort des Anbieters","providerResponseRawDescription":"Die Rohantwort der Anbieter-API","providerResponseSseDescription":"Der rohe SSE-Stream von der Anbieter-API","unexpectedError":"Es ist ein unerwarteter Fehler aufgetreten","error":"Fehler","errorMessage":"Fehler: {message}","requestFailed":"Die Anfrage ist fehlgeschlagen","noTextExtracted":"(Kein Text extrahiert)","liveMonitorDescriptionPrefix":"Zeigt Übersetzungsereignisse an, während API-Aufrufe über OmniRoute fließen. Ereignisse kommen aus dem In-Memory-Puffer (wird beim Neustart zurückgesetzt). Benutzen","liveMonitorDescriptionSuffix":"oder externe API-Aufrufe zum Generieren von Ereignissen."},"usage":{"title":"Nutzung","loggerTab":"Logger","proxyTab":"Stellvertreter","budgetManagement":"Budgetverwaltung","budgetSaved":"Budgetgrenzen eingespart","budgetSaveFailed":"Das Budget konnte nicht gespeichert werden","loadingBudgetData":"Budgetdaten werden geladen...","noApiKeysTitle":"Keine API-Schlüssel","noApiKeysDescription":"Fügen Sie zunächst API-Schlüssel hinzu, um Budgetgrenzen festzulegen.","apiKey":"API-Schlüssel","todaysSpend":"Heutige Ausgaben","thisMonth":"Diesen Monat","setLimits":"Grenzen setzen","dailyLimitUsd":"Tageslimit (USD)","monthlyLimitUsd":"Monatslimit (USD)","warningThresholdPercent":"Warnschwelle (%)","dailyLimitPlaceholder":"z.B. 5.00","monthlyLimitPlaceholder":"z.B. 50,00","warningThresholdPlaceholder":"80","saveLimits":"Grenzen speichern","budgetOk":"Budget OK – {remaining} verbleibend","budgetExceeded":"Budget überschritten – Anfragen werden möglicherweise blockiert","totalRequests":"Gesamtzahl der Anfragen","noDataYet":"Noch keine Daten","latency":"Latenz","latencyP50":"S. 50","latencyP95":"S. 95","latencyP99":"S. 99","promptCache":"Prompt-Cache","systemHealth":"Systemgesundheit","entries":"Einträge","activeCount":"{count} aktiv","openCircuitBreakersDetected":"Offene Leistungsschalter erkannt","hitRate":"Trefferquote","hitsMisses":"Treffer/Fehlschläge","circuitBreakers":"Leistungsschalter","lockedIPs":"Gesperrte IPs","lockoutsAutoRefreshHint":"Ratenbegrenzungssperren pro Modell • Automatische Aktualisierung 10 Sekunden","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} übrig","howItWorks":"Wie es funktioniert","howItWorksSubtitle":"Erfahren Sie, wie Bewertungen Ihre LLM-Antworten validieren","define":"Definieren","defineStepDescription":"Erstellen Sie Testfälle mit Eingabeaufforderungen und erwarteten Ausgabekriterien mithilfe von Strategien wie „Enthält“, „Regex“ oder „Genaue Übereinstimmung“.","run":"Lauf","runStepDescription":"Führen Sie Testfälle für Ihre LLM-Endpunkte über OmniRoute aus. Jeder Fall wird als echte API-Anfrage gesendet.","evaluate":"Bewerten","evaluateStepDescription":"Die Antworten werden mit den erwarteten Kriterien verglichen. Sehen Sie sich für jeden Fall das Bestehen/Nichtbestehen mit Latenzmetriken und detailliertem Feedback an.","evalSuites":"Evaluierungssuiten","evalSuitesHint":"Klicken Sie auf eine Suite, um Testfälle anzuzeigen, und führen Sie sie dann aus, um Ihre LLM-Endpunkte zu bewerten","evalsLoading":"Evaluierungssuiten werden geladen...","noEvalSuitesFound":"Keine Evaluierungssuiten gefunden","noEvalSuitesDescription":"Evaluierungssuiten können über die API oder im Code definiert werden. Sie testen Modellausgaben anhand erwarteter Ergebnisse mithilfe von Strategien wie „Contains“, „Regex“, „Exact Match“ und benutzerdefinierten Funktionen.","columnCase":"Fall","columnStatus":"Status","columnLatency":"Latenz","columnDetails":"Einzelheiten","columnModel":"Modell","columnStrategy":"Strategie","columnExpected":"Erwartet","statsSuites":"Suiten","statsTestCases":"Testfälle","statsModels":"Modelle","statsCoverage":"Abdeckung","statsStrategiesCount":"{count} Strategien","evaluationStrategies":"Bewertungsstrategien","modelsUnderTest":"Im Test befindliche Modelle","searchSuitesPlaceholder":"Suiten suchen...","passSuffix":"passieren","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Führen Sie die Evaluierung aus","runningProgress":"Ausführen von {current}/{total}...","passRate":"Erfolgsquote","summaryBreakdown":"{passed} bestanden · {failed} fehlgeschlagen · {total} insgesamt","passedIconLabel":"✅Bestanden","failedIconLabel":"❌ Fehlgeschlagen","detailsContains":"Enthält: „{term}“","detailsRegex":"Regex: {pattern}","detailsExpected":"Erwartet: „{expected}“","noResultsYet":"Noch keine Ergebnisse","testCasesCount":"Testfälle ({count})","noTestCasesDefined":"Keine Testfälle definiert","runEvalHint":"Klicken Sie auf „Auswertung ausführen“, um alle Fälle für Ihren LLM-Endpunkt auszuführen. Jeder Test sendet eine echte Anfrage über OmniRoute.","notifyNoTestCases":"Für diese Suite sind keine Testfälle definiert","notifyAllCasesPassed":"Alle {total} Fälle bestanden ✅","notifySomeCasesFailed":"{passed}/{total} bestanden, {failed} fehlgeschlagen","notifyEvalRunFailed":"Evaluierungslauf fehlgeschlagen","notifyEvalTitle":"Auswertung: {name}","modelEvals":"Modellbewertungen","evalsHeroDescription":"Testen und validieren Sie Ihre LLM-Endpunkte, indem Sie vordefinierte Evaluierungssuiten ausführen. Jede Suite enthält Testfälle, die echte Eingabeaufforderungen über OmniRoute senden und Antworten mit erwarteten Kriterien vergleichen. So können Sie Regressionen erkennen, Modelle vergleichen und die Antwortqualität anbieterübergreifend sicherstellen.","qualityValidation":"Qualitätsvalidierung","modelComparison":"Modellvergleich","regressionDetection":"Regressionserkennung","latencyBenchmarks":"Latenz-Benchmarks","modelLockouts":"Modellsperren","noLockouts":"Derzeit sind keine Modelle gesperrt","activeSessions":"Aktive Sitzungen","noSessions":"Keine aktiven Sitzungen","sessionsHint":"Sitzungen erscheinen als Anfragen, die über den Proxy fließen","sessionsTrackedHint":"Verfolgt über Anforderungs-Fingerprinting • Automatische Aktualisierung 5 Sekunden","session":"Sitzung","age":"Alter","requests":"Anfragen","connection":"Verbindung","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Anbieterbeschränkungen","noProviders":"Keine Anbieter verbunden","connectProvidersForQuota":"Stellen Sie über OAuth eine Verbindung zu Anbietern her, um Ihre API-Kontingentgrenzen und -Nutzung zu verfolgen.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(gefiltert aus {count})","autoRefresh":"Automatische Aktualisierung","refreshAll":"Alle aktualisieren","loadingQuotas":"Laden...","account":"Konto","modelQuotas":"Modellkontingente","lastUsed":"Zuletzt verwendet","actions":"Aktionen","refreshQuota":"Kontingent aktualisieren","today":"Heute","tomorrow":"Morgen","dayTimeFormat":"{day}, {time}","inDuration":"in {duration}","notApplicable":"N/A","rawPlanWithValue":"Rohplan: {plan}","noPlanFromProvider":"Kein Plan vom Anbieter","noQuotaData":"Keine Quotendaten","ungrouped":"Ungrouped","viewFlat":"Flat","viewByEnvironment":"By Environment","noQuotaDataAvailable":"Keine Quotendaten verfügbar","noAccountsForTierFilter":"Für den Stufenfilter wurden keine Konten gefunden","tierAll":"Alle","tierEnterprise":"Unternehmen","tierTeam":"Team","tierBusiness":"Geschäft","tierUltra":"Ultra","tierPro":"Profi","tierPlus":"Plus","tierFree":"Kostenlos","tierUnknown":"Unbekannt"},"modals":{"waitingAuth":"Warten auf Autorisierung","verificationUrl":"Verifizierungs-URL","yourCode":"Ihr Code","remoteAccess":"Fernzugriff:","connectedSuccess":"Erfolgreich verbunden!","connectionFailed":"Verbindung fehlgeschlagen","chooseAuthMethod":"Wählen Sie Ihre Authentifizierungsmethode:","awsBuilderId":"AWS Builder-ID","awsIamIdentity":"AWS IAM Identity Center","googleAccount":"Google-Konto","githubAccount":"GitHub-Konto","importToken":"Token importieren","pasteToken":"Aktualisierungstoken aus der Kiro-IDE einfügen.","awsRegion":"AWS-Region","autoDetecting":"Automatische Erkennung von Token...","readingFromCache":"Lesen aus dem AWS SSO-Cache","readingFromCursor":"Lesen aus der Cursor-IDE-Datenbank","initializing":"Initialisierung...","pricingConfig":"Preiskonfiguration","loadingPricing":"Preisdaten werden geladen...","pricingRatesFormat":"Preisformat","noPricingData":"Keine Preisdaten verfügbar","noModelsFound":"Keine Modelle gefunden"},"loggers":{"allProviders":"Alle Anbieter","allModels":"Alle Modelle","allAccounts":"Alle Konten","allApiKeys":"Alle API-Schlüssel","allTypes":"Alle Typen","allLevels":"Alle Ebenen","modelAZ":"Modell A-Z","modelZA":"Modell Z-A","loadingLogs":"Protokolle werden geladen...","loadingProxyLogs":"Proxy-Protokolle werden geladen...","noLogEntries":"Keine Protokolleinträge gefunden","noPayloadData":"Für diesen Protokolleintrag sind keine Nutzdaten verfügbar.","proxyEvent":"Proxy-Ereignis","proxy":"Stellvertreter","level":"Ebene","directNative":"Direkt (nativ)","combo":"Kombi","inputTokens":"Ich:","outputTokens":"O:"},"stats":{"usageOverview":"Nutzungsübersicht","outputTokens":"Ausgabetoken","totalCost":"Gesamtkosten","usageByModel":"Nutzung nach Modell","usageByAccount":"Nutzung nach Konto","failedToLoad":"Nutzungsstatistiken konnten nicht geladen werden.","tokenHealth":"Token-Gesundheit","totalOAuth":"Gesamt-OAuth","healthy":"Gesund","warning":"Warnung","errored":"Fehlerhaft","lastCheck":"Letzte Kontrolle","noData":"Keine Daten","share":"Teilen","unableToLoad":"Systemmetriken können nicht geladen werden","product":"Produkt","resources":"Ressourcen","company":"Unternehmen"},"auth":{"welcome":"Willkommen","signIn":"Melden Sie sich an","enterPassword":"Geben Sie Ihr Passwort ein, um fortzufahren","password":"Passwort","unifiedProxy":"Einheitlicher KI-API-Proxy","unifiedAiApiProxy":"Einheitlicher KI-API-Proxy","unifiedAiApiProxyDesc":"Leiten Sie Anfragen über einen einzigen Endpunkt an mehrere KI-Anbieter weiter. Integrierter Lastausgleich, Failover und Nutzungsverfolgung.","passwordNotEnabled":"Der Passwortschutz ist nicht aktiviert","loading":"Laden...","invalidPassword":"Ungültiges Passwort","errorOccurredRetry":"Es ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.","configureInstance":"Lassen Sie uns Ihre OmniRoute-Instanz konfigurieren","runOnboardingWizard":"Führen Sie den Onboarding-Assistenten aus, um Ihr Passwort einzurichten und Ihren ersten KI-Anbieter zu verbinden.","startOnboarding":"Beginnen Sie mit dem Onboarding","secureYourInstance":"Sichern Sie Ihre Instanz","setPasswordDescription":"Legen Sie ein Passwort fest, um Ihr Dashboard zu schützen und Ihre API-Endpunkte vor unbefugtem Zugriff zu schützen.","configurePassword":"Passwort konfigurieren","continue":"Weiter","windowWillClose":"Dieses Fenster wird automatisch geschlossen...","closeTabNow":"Sie können diesen Tab jetzt schließen.","copyUrlManual":"Kopieren Sie die URL aus der Adressleiste und fügen Sie sie in die Anwendung ein.","accessDeniedDescription":"Sie haben keine Berechtigung, auf diese Ressource zuzugreifen. Überprüfen Sie Ihren API-Schlüssel oder wenden Sie sich an den Administrator.","goToDashboard":"Gehen Sie zum Dashboard","featureMultiProviderTitle":"Multi-Provider","featureMultiProviderDesc":"OpenAI, Anthropic, Google und mehr","featureLoadBalancingTitle":"Lastausgleich","featureLoadBalancingDesc":"Verteilen Sie Anfragen intelligent","featureUsageTrackingTitle":"Nutzungsverfolgung","featureUsageTrackingDesc":"Überwachen Sie Kosten und Token","resetPassword":"Passwort zurücksetzen","resetDescription":"Wählen Sie eine Methode, um den Zugriff auf Ihr Dashboard wiederherzustellen","stopServer":"Stoppen Sie den OmniRoute-Server","processing":"Verarbeitung...","pleaseWait":"Bitte warten Sie, während wir die Autorisierung abschließen.","authSuccess":"Autorisierung erfolgreich!","copyUrl":"Kopieren Sie diese URL","accessDenied":"Zugriff verweigert","methodCliTitle":"Methode 1: CLI-Reset","methodCliDescription":"Führen Sie den folgenden Befehl auf dem Server aus, auf dem OmniRoute ausgeführt wird:","methodCliHint":"Dadurch werden Sie aufgefordert, ein neues Passwort festzulegen. Der Server muss zuerst gestoppt werden.","methodManualTitle":"Methode 2: Manuelles Zurücksetzen","methodManualDescription":"Löschen Sie das Passwort aus der Datenbank und legen Sie beim Start ein neues fest:","setPasswordInYour":"Legen Sie ein neues Passwort in Ihrer","fileLabelSuffix":"Datei:","newPasswordPlaceholder":"ihr_neues_passwort","deleteSettingsFile":"Löschen","orRemovePasswordHashField":"oder entfernen Sie das Feld „passwordHash“.","restartServerWithNewPassword":"Starten Sie den Server neu – er verwendet das neue Passwort","backToLogin":"Zurück zum Anmelden","forgotPassword":"Passwort vergessen?","defaultPasswordHint":"Default password: 123456 (unless INITIAL_PASSWORD was set)","waitingForAuthorization":"Warte auf Autorisierung...","waitingForGoogleAuthorization":"Warte auf Google-Autorisierung...","waitingForOpenAIAuthorization":"Warte auf OpenAI-Autorisierung...","waitingForAntigravityAuthorization":"Warte auf Antigravity-Autorisierung...","waitingForIFlowAuthorization":"Warte auf iFlow-Autorisierung...","exchangingCodeForTokens":"Tausche Code gegen Token aus...","Authorization":"Autorisierung","Content-Disposition":"Inhaltliche Disposition"},"landing":{"brandName":"OmniRoute","navigateHome":"Navigieren Sie zur Startseite","toggleMenu":"Menü umschalten","featuresLink":"Funktionen","docsLink":"Dokumente","github":"GitHub","versionLive":"v1.0 ist jetzt live","oneEndpoint":"Ein Endpunkt für","allProviders":"Alle KI-Anbieter","heroDescription":"KI-Endpunkt-Proxy mit Web-Dashboard – Eine JavaScript-Portierung von CLIProxyAPI. Funktioniert nahtlos mit Claude Code, OpenAI Codex, Cline, RooCode und anderen CLI-Tools.","getStarted":"Legen Sie los","viewOnGithub":"Auf GitHub ansehen","powerfulFeatures":"Leistungsstarke Funktionen","featuresSubtitle":"Alles, was Sie zum Verwalten Ihrer KI-Infrastruktur benötigen, an einem Ort, skalierbar.","featureUnifiedEndpointTitle":"Einheitlicher Endpunkt","featureUnifiedEndpointDesc":"Greifen Sie über eine einzige Standard-API-URL auf alle Anbieter zu.","featureEasySetupTitle":"Einfache Einrichtung","featureEasySetupDesc":"Mit dem Befehl npx können Sie in wenigen Minuten loslegen.","featureModelFallbackTitle":"Modell-Fallback","featureModelFallbackDesc":"Wechseln Sie automatisch den Anbieter bei Ausfall oder hoher Latenz.","featureUsageTrackingTitle":"Nutzungsverfolgung","featureUsageTrackingDesc":"Detaillierte Analysen und Kostenüberwachung für alle Modelle.","featureOAuthApiKeysTitle":"OAuth- und API-Schlüssel","featureOAuthApiKeysDesc":"Verwalten Sie Anmeldeinformationen sicher in einem Tresor.","featureCloudSyncTitle":"Cloud-Synchronisierung","featureCloudSyncDesc":"Synchronisieren Sie Ihre Konfigurationen sofort geräteübergreifend.","featureCliSupportTitle":"CLI-Unterstützung","featureCliSupportDesc":"Funktioniert mit Claude Code, Codex, Cline, Cursor und mehr.","featureDashboardTitle":"Armaturenbrett","featureDashboardDesc":"Visuelles Dashboard für Echtzeit-Verkehrsanalyse.","howItWorks":"So funktioniert OmniRoute","howItWorksDescription":"Die Daten fließen nahtlos von Ihrer Anwendung über unsere intelligente Routing-Ebene zum besten Anbieter für die jeweilige Aufgabe.","howItWorksStep1Title":"1. CLI und SDKs","howItWorksStep1Description":"Ihre Anfragen beginnen mit Ihren bevorzugten Tools oder unserem einheitlichen SDK. Ändern Sie einfach die Basis-URL.","howItWorksStep2Title":"2. OmniRoute-Hub","howItWorksStep2Description":"Unsere Engine analysiert die Eingabeaufforderung, überprüft den Zustand des Anbieters und leitet Routen auf niedrigste Latenz oder Kosten weiter.","howItWorksStep3Title":"3. KI-Anbieter","howItWorksStep3Description":"Die Anfrage wird von OpenAI, Anthropic, Gemini oder anderen sofort erfüllt.","getStartedIn30Seconds":"Beginnen Sie in 30 Sekunden","getStartedDescription":"Installieren Sie OmniRoute, konfigurieren Sie Ihre Anbieter über das Web-Dashboard und beginnen Sie mit der Weiterleitung von KI-Anfragen.","installOmniRoute":"Installieren Sie OmniRoute","installStepDescription":"Führen Sie den Befehl npx aus, um den Server sofort zu starten","openDashboard":"Öffnen Sie das Dashboard","openDashboardStepDescription":"Konfigurieren Sie Anbieter und API-Schlüssel über die Weboberfläche","routeRequests":"Routenanfragen","routeRequestsStepDescription":"Richten Sie Ihre CLI-Tools auf {endpoint}","terminal":"Terminal","copy":"Kopieren","copied":"✓ Kopiert","startingOmniRoute":"OmniRoute wird gestartet...","serverRunningOnLabel":"Server läuft weiter","dashboardLabel":"Armaturenbrett","readyToRoute":"Bereit zum Routen! ✓","configureProvidersNote":"📝 Konfigurieren Sie Anbieter im Dashboard oder verwenden Sie Umgebungsvariablen","dataLocation":"Datenspeicherort:","dataLocationMacLinux":" macOS/Linux:","dataLocationWindows":" Windows:","product":"Produkt","dashboardLink":"Armaturenbrett","changelog":"Änderungsprotokoll","resources":"Ressourcen","documentation":"Dokumentation","npm":"NPM","legal":"Legal","mitLicense":"MIT-Lizenz","footerTagline":"Der einheitliche Endpunkt für die KI-Generierung. Verbinden, leiten und verwalten Sie Ihre KI-Anbieter ganz einfach.","copyright":"© {year} OmniRoute. Alle Rechte vorbehalten.","flowToolClaudeCode":"Claude Code","flowToolOpenAICodex":"OpenAI-Codex","flowToolCline":"Cline","flowToolCursor":"Cursor","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Anthropisch","flowProviderGemini":"Zwillinge","flowProviderGithubCopilot":"GitHub-Copilot","interactiveDiagram":"Interaktives Diagramm auf dem Desktop sichtbar","ctaTitle":"Sind Sie bereit, Ihre KI-Infrastruktur zu vereinfachen?","ctaDescription":"Schließen Sie sich Entwicklern an, die ihre KI-Integrationen mit OmniRoute optimieren. Open Source und kostenlos zu starten.","startFree":"Kostenlos starten","readDocumentation":"Dokumentation lesen"},"docs":{"title":"Dokumentation","quickStart":"Schnellstart","features":"Funktionen","supportedProviders":"Unterstützte Anbieter","supportedProvidersToc":"Anbieter","commonUseCases":"Häufige Anwendungsfälle","clientCompatibility":"Client-Kompatibilität","protocolsToc":"Protokolle","apiReference":"API-Referenz","method":"Methode","path":"Pfad","notes":"Notizen","modelPrefixes":"Modellpräfixe","prefix":"Präfix","troubleshooting":"Fehlerbehebung","supportsChat":"Unterstützt sowohl Chat- als auch Antwortendpunkte.","oauthAutoRefresh":"OAuth-Verbindung mit automatischer Token-Aktualisierung.","fullStreaming":"Volle Streaming-Unterstützung für alle Modelle.","docsLabel":"Dokumente","docsHeroDescription":"KI-Gateway für LLMs mit mehreren Anbietern. Ein Endpunkt für OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor und über 20 weitere Anbieter.","openDashboard":"Öffnen Sie das Dashboard","endpointPage":"Endpunktseite","github":"GitHub","reportIssue":"Problem melden","onThisPage":"Auf dieser Seite","documentationVersion":"Dokumentation – v{version}","quickStartStep1Title":"1. Installieren und ausführen","quickStartStep1Prefix":"Lauf","quickStartStep1Middle":"oder von GitHub klonen und ausführen","quickStartStep2Title":"2. API-Schlüssel erstellen","quickStartStep2Text":"Gehen Sie zu Endpunkt -> Registrierte Schlüssel. Generieren Sie einen Schlüssel pro Umgebung.","quickStartStep3Title":"3. Anbieter verbinden","quickStartStep3Text":"Fügen Sie Anbieterkonten über OAuth-Login, API-Schlüssel oder kostenlose automatische Verbindung hinzu.","quickStartStep4Title":"4. Legen Sie die Client-Basis-URL fest","quickStartStep4Prefix":"Verweisen Sie Ihren IDE- oder API-Client auf","quickStartStep4Suffix":"Verwenden Sie beispielsweise das Provider-Präfix","featureRoutingTitle":"Multi-Provider-Routing","featureRoutingText":"Leiten Sie Anfragen über einen einzigen OpenAI-kompatiblen Endpunkt an über 30 KI-Anbieter weiter. Unterstützt Chat-, Antwort-, Audio- und Bild-APIs.","featureCombosTitle":"Combos und Balancing","featureCombosText":"Erstellen Sie Modellkombinationen mit Fallback-Ketten und Ausgleichsstrategien: Round-Robin, Priorität, Zufall, am wenigsten genutzt und kostenoptimiert.","featureUsageTitle":"Nutzungs- und Kostenverfolgung","featureUsageText":"Echtzeit-Token-Zählung, Kostenberechnung pro Anbieter/Modell und detaillierte Nutzungsaufschlüsselung nach API-Schlüssel und Konto.","featureAnalyticsTitle":"Analytics-Dashboard","featureAnalyticsText":"Visuelle Analysen mit Diagrammen für Anfragen, Token, Fehler, Latenz, Kosten und Modellpopularität im Zeitverlauf.","featureHealthTitle":"Gesundheitsüberwachung","featureHealthText":"Live-Zustandsprüfungen, Anbieterstatus, Leistungsschalterzustände und automatische Erkennung von Ratengrenzen mit exponentiellem Backoff.","featureCliTitle":"CLI-Tools","featureCliText":"Verwalten Sie IDE-Konfigurationen, exportieren/importieren Sie Backups, entdecken Sie Codex-Profile und konfigurieren Sie Einstellungen über das Dashboard.","featureSecurityTitle":"Sicherheit und Richtlinien","featureSecurityText":"API-Schlüsselauthentifizierung, IP-Filterung, Prompt-Injection-Guard, Domänenrichtlinien, Sitzungsverwaltung und Audit-Protokollierung.","featureCloudSyncTitle":"Cloud-Synchronisierung","featureCloudSyncText":"Synchronisieren Sie Ihre Konfiguration mit Cloudflare Workers für den Fernzugriff mit verschlüsselten Anmeldeinformationen und automatischem Failover.","providersAcrossConnectionTypes":"{count}-Anbieter über drei Verbindungstypen hinweg.","manageProviders":"Anbieter verwalten","providersCount":"{count} Anbieter","providerTypeFree":"Kostenloses Kontingent","providerTypeOAuth":"OAuth","providerTypeApiKey":"API-Schlüssel","useCaseSingleEndpointTitle":"Ein einziger Endpunkt für viele Anbieter","useCaseSingleEndpointText":"Verweisen Sie Clients auf eine Basis-URL und leiten Sie sie nach Modellpräfix weiter (z. B. gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Fallback und Modellwechsel mit Combos","useCaseFallbackText":"Erstellen Sie Kombinationsmodelle im Dashboard und halten Sie die Clientkonfiguration stabil, während die Anbieter intern rotieren.","useCaseUsageVisibilityTitle":"Nutzung, Kosten und Debug-Sichtbarkeit","useCaseUsageVisibilityText":"Verfolgen Sie Token und Kosten nach Anbieter, Konto und API-Schlüssel auf den Registerkarten „Nutzung“ und „Analyse“.","clientCherryStudioTitle":"Kirschstudio","baseUrlLabel":"Basis-URL","chatEndpointLabel":"Chat-Endpunkt","modelRecommendationLabel":"Modellempfehlung: explizites Präfix","clientCodexTitle":"Codex/GitHub-Copilot-Modelle","clientCodexBullet1":"Verwenden Sie Modell-IDs mit","clientCodexBullet2":"Modelle der Codex-Familie leiten automatisch zu","clientCodexBullet3":"Nicht-Codex-Modelle bleiben bestehen","clientCursorTitle":"Cursor-IDE","clientCursorBullet1":"Benutzen","clientCursorBullet1Suffix":"Präfix für Cursor-Modelle.","clientCursorBullet2":"OAuth-Verbindung – Anmeldung über die Anbieterseite.","clientClaudeTitle":"Claude Code / Antigravitation","clientClaudeBullet1Prefix":"Benutzen","clientClaudeBullet1Middle":"(Claude) oder","clientClaudeBullet1Suffix":"Präfix (Antigravitation).","protocolsTitle":"Protokolle: MCP und A2A","protocolsDescription":"OmniRoute stellt zusätzlich zu OpenAI-kompatiblen APIs zwei Betriebsprotokolle zur Verfügung: MCP für die Tool-Ausführung und A2A für Agent-zu-Agent-Workflows.","protocolMcpTitle":"MCP (Model Context Protocol)","protocolMcpDesc":"Verwenden Sie MCP über Standard, damit Kunden OmniRoute-Tools mit Audit-Transparenz entdecken und aufrufen können.","protocolMcpStep1":"Starten Sie den MCP-Transport mit `omniroute --mcp`.","protocolMcpStep2":"Weisen Sie Ihren MCP-Client auf stdio transport hin.","protocolMcpStep3":"Rufen Sie `omniroute_get_health` und `omniroute_list_combos` auf, um die Konnektivität zu überprüfen.","protocolA2aTitle":"A2A (Agent2Agent)","protocolA2aDesc":"Verwenden Sie A2A JSON-RPC, um Aufgaben synchron oder per SSE-Streaming zu übermitteln.","protocolA2aStep1":"Lesen Sie `/.well-known/agent.json` für die Agentenerkennung.","protocolA2aStep2":"Senden Sie `message/send`- oder `message/stream`-Anfragen an `POST /a2a`.","protocolA2aStep3":"Verwalten Sie den Aufgabenlebenszyklus mit `tasks/get` und `tasks/cancel`.","protocolTroubleshootingTitle":"Protocol Troubleshooting","protocolTroubleshooting1":"Wenn der MCP-Status offline ist, überprüfen Sie, ob der stdio-Prozess ausgeführt wird und die Heartbeat-Datei aktualisiert wird.","protocolTroubleshooting2":"Wenn A2A-Aufgaben in `working` bleiben, überprüfen Sie `/api/a2a/tasks/:id` und streamen Sie Ereignisse auf den Endstatus.","protocolTroubleshooting3":"Verwenden Sie `/dashboard/mcp` und `/dashboard/a2a` für betriebliche Kontrollen und Audit-Transparenz.","endpointChatNote":"OpenAI-kompatibler Chat-Endpunkt (Standard).","endpointResponsesNote":"Antwort-API-Endpunkt (Codex, O-Serie).","endpointModelsNote":"Musterkatalog für alle angeschlossenen Anbieter.","endpointAudioNote":"Audiotranskription (Deepgram, AssemblyAI).","endpointImagesNote":"Bilderzeugung (NanoBanana).","endpointRewriteChatNote":"Rewrite-Helper für Clients ohne /v1.","endpointRewriteResponsesNote":"Hilfsprogramm für Antworten ohne /v1 umschreiben.","endpointRewriteModelsNote":"Hilfsprogramm für die Modellerkennung ohne /v1 umschreiben.","modelPrefixesDescriptionStart":"Verwenden Sie das Anbieterpräfix vor dem Modellnamen, um an einen bestimmten Anbieter weiterzuleiten. Beispiel:","modelPrefixesDescriptionEnd":"Routen zu GitHub Copilot.","provider":"Anbieter","type":"Typ","troubleshootingModelRouting":"Wenn der Client beim Modellrouting fehlschlägt, verwenden Sie einen expliziten Anbieter/ein explizites Modell (z. B. gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Wenn Sie mehrdeutige Modellfehler erhalten, wählen Sie ein Anbieterpräfix anstelle einer bloßen Modell-ID.","troubleshootingCodexFamily":"Behalten Sie für Modelle der GitHub Codex-Familie das Modell bei gh/codex-model; Der Router wählt /responses automatisch aus.","troubleshootingTestConnection":"Verwenden Sie Dashboard > Anbieter > Verbindung testen, bevor Sie Tests mit IDEs oder externen Clients durchführen.","troubleshootingCircuitBreaker":"Wenn ein Anbieter anzeigt, dass der Leistungsschalter geöffnet ist, warten Sie auf die Abklingzeit oder schauen Sie auf der Seite „Zustand“ nach, um Einzelheiten zu erfahren.","troubleshootingOAuth":"Führen Sie bei OAuth-Anbietern eine erneute Authentifizierung durch, wenn die Token ablaufen. Überprüfen Sie die Statusanzeige der Anbieterkarte.","managementApiReference":"Management API Reference","managementApiDescription":"Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.","mgmtProxiesListNote":"List saved proxy registry items (supports pagination).","mgmtProxiesCreateNote":"Create a reusable proxy item in the registry.","mgmtProxiesHealthNote":"Get 24h/rolling health metrics per saved proxy from proxy logs.","mgmtProxiesBulkAssignNote":"Assign or clear one proxy across many scope IDs in one request.","mgmtAssignmentsListNote":"List proxy assignments by scope, scope_id, or proxy_id.","mgmtAssignmentsUpdateNote":"Assign or clear proxy for global/provider/account/combo scope.","mgmtLegacyMigrationNote":"Import legacy proxyConfig maps into registry assignments.","endpointSpeechNote":"Sprachsynthese (ElevenLabs, OpenAI TTS).","endpointEmbeddingsNote":"Text-Embedding-Generierung (OpenAI, Cohere, Voyage)."},"legal":{"privacyPolicy":"Datenschutzrichtlinie","termsOfService":"Nutzungsbedingungen","providerConfigurations":"Anbieterkonfigurationen","apiKeys":"API-Schlüssel","usageLogs":"Nutzungsprotokolle","applicationSettings":"Anwendungseinstellungen","viewExportAnalytics":"Nutzungsanalysen anzeigen und exportieren","clearHistory":"Nutzungsverlauf jederzeit löschen","configureRetention":"Konfigurieren Sie Protokollaufbewahrungsrichtlinien","backupRestore":"Sichern Sie Ihre Datenbank und stellen Sie sie wieder her","privacyMetadataTitle":"Datenschutzrichtlinie | OmniRoute","privacyMetadataDescription":"Datenschutzrichtlinie für den OmniRoute AI API-Proxy-Router.","termsMetadataTitle":"Nutzungsbedingungen | OmniRoute","termsMetadataDescription":"Nutzungsbedingungen für den OmniRoute AI API-Proxy-Router.","backToHome":"Zurück nach Hause","lastUpdated":"Letzte Aktualisierung: {date}","policyLastUpdatedDate":"13. Februar 2026","listSeparator":"-","questionsVisit":"Fragen? Besuchen Sie unsere","githubRepository":"GitHub-Repository","privacySection1Title":"1. Local-First-Architektur","privacySection1Text":"OmniRoute ist als Local-First-Anwendung konzipiert. Die gesamte Datenverarbeitung und -speicherung erfolgt vollständig auf Ihrem Rechner. Es gibt keinen zentralen Server, der Ihre Daten sammelt.","privacySection2Title":"2. Von uns gespeicherte Daten","privacyDataStoredIn":"Die folgenden Daten werden lokal in gespeichert","privacyDataProviderConfigurationsDesc":"Verbindungs-URLs, Anbietertypen und Prioritätseinstellungen","privacyDataApiKeysDesc":"verschlüsselt und lokal gespeichert zur Authentifizierung bei KI-Anbietern","privacyDataUsageLogsDesc":"Anzahl der Anfragen, Token-Nutzung, Modellnamen, Zeitstempel und Antwortzeiten","privacyDataApplicationSettingsDesc":"Theme-Einstellungen, Routing-Strategie und Kombinationskonfigurationen","privacySection3Title":"3. Keine Telemetrie","privacySection3Text":"OmniRoute sammelt keine Telemetrie-, Analyse- oder Absturzberichte. Es werden keine Daten an uns oder Dritte übermittelt. Ihre Nutzungsmuster, API-Aufrufe und Konfigurationen bleiben vollständig privat.","privacySection4Title":"4. KI-Drittanbieter","privacySection4Text":"Wenn Sie API-Aufrufe über OmniRoute durchführen, werden Ihre Anfragen an die von Ihnen konfigurierten KI-Anbieter weitergeleitet (z. B. OpenAI, Anthropic, Google). Diese Anbieter haben eigene Datenschutzrichtlinien, die den Umgang mit Ihren Daten regeln. Bitte überprüfen Sie:","privacyOpenAiPolicy":"OpenAI-Datenschutzrichtlinie","privacyAnthropicPolicy":"Anthropic-Datenschutzrichtlinie","privacyGooglePolicy":"Google-Datenschutzerklärung","privacySection5Title":"5. Cloud-Synchronisierung (optional)","privacySection5Text":"Wenn Sie die optionale Cloud-Synchronisierungsfunktion aktivieren, können Anbieterkonfigurationen und API-Schlüssel an einen konfigurierten Cloud-Endpunkt übertragen werden. Diese Funktion ist standardmäßig deaktiviert und erfordert eine ausdrückliche Zustimmung.","privacySection6Title":"6. Protokollierung","privacyLoggingIntro":"Anforderungsprotokolle können über die Dashboard-Einstellungen konfiguriert werden. Sie können:","privacySection7Title":"7. Ihre Rechte","privacySection7TextStart":"Da alle Daten lokal gespeichert werden, haben Sie die volle Kontrolle. Sie können Ihre Daten jederzeit löschen, indem Sie das entfernen","privacySection7TextEnd":"Verzeichnis oder mithilfe der Datenbanksicherungs- und -wiederherstellungsfunktionen im Dashboard.","termsSection1Title":"1. Übersicht","termsSection1Text":"OmniRoute ist ein Local-First-AI-API-Proxy-Router, der vollständig auf Ihrem Computer ausgeführt wird. Es leitet Anfragen mit Lastausgleich, Failover und Nutzungsverfolgung an mehrere KI-Anbieter weiter.","termsSection2Title":"2. Verantwortlichkeiten des Benutzers","termsResponsibilityApiKeys":"Sie sind allein für die Verwaltung Ihrer eigenen API-Schlüssel und Anmeldeinformationen für KI-Drittanbieter (OpenAI, Anthropic, Google usw.) verantwortlich.","termsResponsibilityCompliance":"Sie müssen die Nutzungsbedingungen jedes KI-Anbieters einhalten, auf dessen API Sie über OmniRoute zugreifen.","termsResponsibilitySecurity":"Sie sind für die Sicherheit Ihrer lokalen OmniRoute-Installation verantwortlich, einschließlich der Festlegung eines Kennworts und der Einschränkung des Netzwerkzugriffs.","termsSection3Title":"3. Wie es funktioniert","termsSection3Text":"OmniRoute fungiert als zwischengeschalteter Proxy. An OmniRoute gesendete API-Aufrufe werden übersetzt und an Ihre konfigurierten KI-Anbieter weitergeleitet. OmniRoute ändert den Inhalt Ihrer Anfragen oder Antworten nicht über die erforderliche Protokollübersetzung hinaus.","termsSection4Title":"4. Datenverarbeitung","termsDataStoredLocally":"Alle Daten werden lokal auf Ihrem Computer in einer SQLite-Datenbank gespeichert.","termsNoTransmission":"OmniRoute überträgt keine Daten an externe Server, es sei denn, Sie aktivieren explizit Cloud-Synchronisierungsfunktionen.","termsDataLocationText":"Nutzungsprotokolle, API-Schlüssel und Konfiguration werden in gespeichert","termsSection5Title":"5. Haftungsausschluss","termsSection5Text":"OmniRoute wird „wie besehen“ ohne Gewährleistung jeglicher Art bereitgestellt. Wir sind nicht verantwortlich für Kosten, die durch API-Nutzung, Dienstunterbrechungen oder Datenverlust entstehen. Bewahren Sie immer Backups Ihrer Konfiguration auf.","termsSection6Title":"6. Open Source","termsSection6Text":"OmniRoute ist Open-Source-Software. Es steht Ihnen frei, es im Rahmen der Lizenzbedingungen zu prüfen, zu ändern und zu verbreiten."},"endpoints":{"tabProxy":"Endpoint Proxy","tabApiEndpoints":"API-Endpunkte","apiEndpointsTitle":"API-Endpunkte","apiEndpointsDescription":"Backend-API-Endpunkte, die von anderen Anwendungen und Diensten genutzt werden können.","comingSoon":"Demnächst","plannedFeatures":"Geplante Funktionen","featureRestApi":"REST-API-Katalog mit interaktiver Dokumentation","featureWebhooks":"Webhook-Konfiguration und Event-Abonnements","featureSwagger":"Automatische OpenAPI / Swagger-Spezifikation","featureAuth":"API-Schlüssel- und OAuth-Scope-Verwaltung pro Endpunkt"},"agents":{"title":"CLI Agents","description":"Discover installed CLI agents on your system. Add custom agents for auto-detection.","refresh":"Refresh","installed":"Installed","notFound":"Not Found","builtIn":"Built-in","custom":"Custom","remove":"Remove","addCustomAgent":"Add Custom Agent","addCustomAgentDesc":"Register any CLI tool for detection. It will be scanned automatically on refresh.","agentName":"Agent Name","binaryName":"Binary Name","versionCommand":"Version Command","spawnArgs":"Spawn Args","addAgent":"Add Agent","scanning":"Scanning system for CLI agents...","opencodeIntegration":"OpenCode Integration","opencodeDetected":"opencode {version} detected","opencodeDesc":"Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.","downloadConfig":"Download {file}","downloaded":"Downloaded!","setupGuideTitle":"Setup guide","openCliTools":"Open CLI Tools","setupGuideDetectCliTitle":"Detect installed CLIs","setupGuideDetectCliDesc":"Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.","setupGuideCustomAgentTitle":"Register custom binary","setupGuideCustomAgentDesc":"Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.","setupGuideCommandMissingTitle":"Fix \'command not found\'","setupGuideCommandMissingDesc":"Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh."},"autoCombo":{"title":"Auto-Combo Engine","statusNormal":"Normal","statusIncident":"Incident Mode","modePack":"Mode Pack","providerScores":"Provider Scores","noAutoCombo":"No auto-combo configured.","excludedProviders":"Excluded Providers","noExclusions":"No providers currently excluded.","factorQuota":"Quota","factorHealth":"Health","factorCost":"Cost","factorLatency":"Latency","factorTaskFit":"Task Fit","factorStability":"Stability","factorTierPriority":"Tier Priority","factorTierPriorityDesc":"Prefers accounts with higher quota tiers (Ultra/Pro over Free)","scoreFactorBreakdown":"Scoring Factors","modePackShipFast":"Ship Fast","modePackCostSaver":"Cost Saver","modePackQualityFirst":"Quality First","modePackOfflineFriendly":"Offline Friendly"},"search":{"searchQuery":"Search Query","searchResults":"Search Results","cachedResult":"Cached","searchCost":"Cost","searchTools":"Search Tools","searchToolsDesc":"Advanced search testing with provider comparison","compareProviders":"Compare Providers","rerankResults":"Rerank Results","searchHistory":"Search History","urlOverlap":"URL Overlap","noSearchProviders":"No search providers configured. Add providers in Settings.","noRerankModels":"No rerank model available","webSearch":"Web Search","provider":"Provider","searchType":"Search Type","maxResults":"Max Results","filters":"Filters","country":"Country","language":"Language","timeRange":"Time Range","includeDomains":"Include Domains","excludeDomains":"Exclude Domains","safeSearch":"Safe Search","formatted":"Formatted","rawJson":"JSON","cacheMiss":"cache miss","cacheHit":"cache hit","latency":"Latency","cost":"Cost","results":"Results","rerank":"Rerank","rerankModel":"Rerank Model","positionDelta":"Position Change","emptyState":"Send a search query to see results","safeSearchOff":"Off","safeSearchModerate":"Moderate","safeSearchStrict":"Strict","queryPlaceholder":"Enter search query...","providerAuto":"auto (cheapest)","searchTypeWeb":"web","searchTypeNews":"news","optionAny":"any","timeRangeDay":"Past day","timeRangeWeek":"Past week","timeRangeMonth":"Past month","timeRangeYear":"Past year","domainPlaceholder":"example.com","requestTimedOut":"Request timed out ({seconds}s)","networkError":"Network error"},"templateNames":{"simple-chat":"Einfacher Chat","streaming":"Streaming","system-prompt":"System-Prompt","thinking":"Denken","tool-calling":"Werkzeugaufruf","multi-turn":"Mehrere Runden"},"templateDescriptions":{"simple-chat":"Einfache Chat-Vorlage mit Systemnachricht","streaming":"Vorlage für Streaming-Antworten","system-prompt":"Vorlage mit benutzerdefiniertem System-Prompt","thinking":"Vorlage mit Denk-/Argumentationsbudget","tool-calling":"Vorlage für Werkzeug-/Funktionsaufrufe","multi-turn":"Vorlage für mehrstufige Konversationen"},"templatePayloads":{"simpleChat":{"system":"Sie sind ein hilfreicher KI-Assistent.","userGreeting":"Hallo! Wie kann ich Ihnen heute helfen?"},"streaming":{"prompt":"Schreiben Sie eine Geschichte darüber"},"systemPrompt":{"question":"Was ist der Sinn des Lebens?","systemInstruction":"Geben Sie eine nachdenkliche, philosophische Antwort."},"thinking":{"question":"Erklären Sie Quantencomputing"},"toolCalling":{"cityNameDescription":"Der Name der Stadt, für die das Wetter ermittelt werden soll","toolDescription":"Erhalten Sie das aktuelle Wetter für einen Standort","userWeather":"Wie ist das Wetter in Tokio?"},"multiTurn":{"system":"Sie sind ein hilfreicher Assistent.","assistantExample":"Gerne helfe ich Ihnen dabei.","userInitial":"Ich brauche Hilfe dabei","userFollowUp":"Können Sie das näher erläutern?"}},"cache":{"title":"Cache Management","description":"Monitor and manage semantic response cache, hit rates, and token savings.","refresh":"Refresh","clearAll":"Clear All","memoryEntries":"Memory Entries","dbEntries":"DB Entries","cacheHits":"Cache Hits","tokensSaved":"Tokens Saved","hitRate":"Hit Rate","performance":"Cache Performance","behavior":"Cache Behavior","idempotency":"Idempotency Layer","clearSuccess":"Cache cleared. {count} expired entries removed.","clearError":"Failed to clear cache.","unavailable":"Cache unavailable","unavailableDesc":"Could not fetch cache statistics. Make sure the server is running.","memoryEntriesSub":"In-memory LRU","dbEntriesSub":"Persisted (SQLite)","cacheHitsSub":"of {total} total","tokensSavedSub":"Estimated from hits","autoRefresh":"Auto-refreshes every {seconds}s","hits":"Hits","misses":"Misses","total":"Total","behaviorDeterministic":"Only non-streaming requests with temperature=0 are cached.","behaviorBypass":"Bypass with header {header}.","behaviorTwoTier":"Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).","behaviorTtl":"Default TTL: 30 minutes. Configure via {envVar}.","activeDedupKeys":"Active Dedup Keys","dedupWindow":"Dedup Window"}}'))}];
1
+ module.exports=[379985,a=>{a.v(JSON.parse('{"common":{"save":"Speichern","cancel":"Abbrechen","delete":"Löschen","loading":"Laden...","error":"Es ist ein Fehler aufgetreten","success":"Erfolg","confirm":"Bist du sicher?","refresh":"Aktualisieren","close":"Schließen","add":"Hinzufügen","edit":"Bearbeiten","search":"Suchen","back":"Zurück","next":"Als nächstes","submit":"Senden","reset":"Zurücksetzen","copy":"Kopieren","copied":"Kopiert!","enabled":"Aktiviert","disabled":"Deaktiviert","active":"Aktiv","inactive":"Inaktiv","noData":"Keine Daten verfügbar","configure":"Konfigurieren","manage":"Verwalten","name":"Name","actions":"Aktionen","status":"Status","type":"Typ","model":"Modell","models":"Modelle","provider":"Anbieter","account":"Konto","time":"Zeit","details":"Einzelheiten","created":"Erstellt","lastUsed":"Zuletzt verwendet","loadMore":"Mehr laden","noResults":"Keine Ergebnisse gefunden","reloadPage":"Seite neu laden","connected":"Verbunden","disconnected":"Nicht verbunden","notConfigured":"Nicht konfiguriert","testConnection":"Testverbindung","enable":"Aktivieren","disable":"Deaktivieren","columns":"Spalten","newest":"Neueste","oldest":"Älteste","all":"Alle","none":"Keine","yes":"Ja","no":"Nein","warning":"Warnung","note":"Hinweis","free":"Kostenlos","skipToContent":"Zum Inhalt springen","maintenanceServerIssues":"Server is experiencing issues. Some features may be unavailable.","maintenanceServerUnreachable":"Server is unreachable. Reconnecting...","accept":"Akzeptieren","accountId":"Konto-ID","alias":"Alias","apiKeyId":"API-Schlüssel-ID","apiKeyName":"API-Schlüsselname","apiKeySecret":"API-Schlüsselgeheimnis","authorization":"Autorisierung","content-type":"Inhaltstyp","content-length":"Inhaltslänge","cookie":"Cookie","file":"Datei","host":"Host","id":"ID","import":"Importieren","limit":"Limit","offset":"Offset","open":"Öffnen","origin":"Herkunft","promptTokens":"Prompt-Token","completionTokens":"Completion-Token","totalTokens":"Gesamte Token","rawModel":"Raw-Modell","scope":"Umfang","skill":"Fertigkeit","sortBy":"Sortieren nach","sortOrder":"Sortierreihenfolge","tab":"Tab","text":"Text","textarea":"Textfeld","tool":"Werkzeug","toolId":"Werkzeug-ID","web":"Web","whereUsed":"Wo verwendet","whitelist":"Whitelist","blacklist":"Blacklist","resolve":"Auflösen","force":"Erzwingen","base64url":"Base64 URL","hex":"Hex","range":"Bereich","component":"Komponente","redirect_uri":"Umleitungs-URI","idempotency-key":"Idempotenz-Schlüssel","error_description":"Fehlerbeschreibung","code":"Code","compatible":"Kompatibel","chat-completions":"Chat-Completions","oauth":"OAuth","auth_token":"Auth-Token","crypto":"Krypto","hours":"Stunden","selfsigned":"Selbstsigniert","proxy_id":"Proxy-ID","proxyId":"Proxy-ID","connectionId":"Verbindungs-ID","resolveConnectionId":"Verbindungs-ID auflösen","resolve_connection_id":"Verbindungs-ID auflösen","scope_id":"Umfang-ID","scopeId":"Umfang-ID","jwtSecret":"JWT-Geheimnis","keytar":"Keytar","better-sqlite3":"better-sqlite3","undici":"undici","builder-id":"Builder-ID","musicDesc":"Musikbeschreibung","musicGeneration":"Musikgenerierung","idc":"IDC","cloud-status-changed":"Cloud-Status geändert","where_used":"Wo verwendet","windowMs":"Fenster (ms)","social-github":"GitHub","social-google":"Google","TOOL_ALLOWLIST":"Werkzeug-Whitelist","TOOL_DENYLIST":"Werkzeug-Blacklist","Failed to save pricing":"Preise speichern fehlgeschlagen","Failed to reset pricing":"Preise zurücksetzen fehlgeschlagen","apikey":"API-Schlüssel","http":"HTTP"},"sidebar":{"home":"Zuhause","dashboard":"Dashboard","providers":"Anbieter","combos":"Kombinationen","usage":"Nutzung","analytics":"Analytik","costs":"Kosten","health":"Gesundheit","limits":"Limits und Quoten","cliTools":"CLI-Tools","media":"Medien","settings":"Einstellungen","translator":"Übersetzer","docs":"Dokumente","issues":"Probleme","apiManager":"API-Manager","logs":"Protokolle","auditLog":"Audit-Protokoll","shutdown":"Herunterfahren","restart":"Neustart","shutdownConfirm":"OmniRoute herunterfahren?","restartConfirm":"OmniRoute neu starten?","version":"v{version}","debug":"Debuggen","system":"System","help":"Hilfe","serverDisconnected":"Serververbindung getrennt","serverDisconnectedMsg":"Der Proxyserver wurde gestoppt oder wird neu gestartet.","expandSidebar":"Seitenleiste erweitern","collapseSidebar":"Seitenleiste einklappen","themes":"Themen","presetColors":"Beliebte Farben","createTheme":"Thema erstellen","chooseColor":"Wählen Sie eine Farbe","themeCoral":"Koralle","themeBlue":"Blau","themeRed":"Rot","themeGreen":"Grün","themeViolet":"Violett","themeOrange":"Orange","themeCyan":"Cyan","endpoints":"Endpunkte","playground":"Spielwiese","agents":"Agenten","cliToolsShort":"Werkzeuge","autoCombo":"Auto Combo","searchTools":"Search Tools","cache":"Cache","cacheShort":"Cache"},"themesPage":{"title":"Themen","description":"Wählen Sie ein voreingestelltes Thema oder erstellen Sie Ihr eigenes mit einer einzigen Farbe","presetColors":"Beliebte Farben","customTheme":"Benutzerdefiniertes Thema","customThemeDesc":"Klicken Sie auf „Thema erstellen“ und wählen Sie eine Farbe aus","createTheme":"Thema erstellen","activePreset":"Aktives Thema"},"header":{"logout":"Abmelden","language":"Sprache","providers":"Anbieter","providerDescription":"Verwalten Sie Ihre KI-Anbieterverbindungen","combos":"Kombinationen","comboDescription":"Modellkombinationen mit Fallback","usage":"Nutzung und Analyse","usageDescription":"Überwachen Sie Ihre API-Nutzung, den Token-Verbrauch und Ihre Anforderungsprotokolle","analytics":"Analysen","analyticsDescription":"Diagramme, Trends und Auswertungserkenntnisse","cliTools":"CLI-Tools","cliToolsDescription":"Konfigurieren Sie CLI-Tools","home":"Zuhause","homeDescription":"Willkommen bei OmniRoute","endpoint":"Endpunkte","endpointDescription":"Proxy-Endpunkte, MCP, A2A und API-Endpunkte verwalten","settings":"Einstellungen","settingsDescription":"Verwalten Sie Ihre Präferenzen","openaiCompatible":"OpenAI-kompatibel","anthropicCompatible":"Anthropic-kompatibel","media":"Medien","mediaDescription":"Generieren Sie Bilder, Videos und Musik","themes":"Themen","themesDescription":"Wählen Sie ein Farbthema für das gesamte Dashboard-Panel","mcp":"MCP","mcpDescription":"Model Context Protocol server management and tools","a2a":"A2A","a2aDescription":"Agent-to-Agent protocol tasks and observability"},"home":{"quickStart":"Schnellstart","quickStartDesc":"In 4 Schritten einsatzbereit. Anbieter anbinden, Modelle routen, alles überwachen.","fullDocs":"Vollständige Dokumentation","step1Title":"1. API-Schlüssel erstellen","step1Desc":"Gehen Sie zu <endpoint>Endpoint</endpoint> -> Registrierte Schlüssel. Erstellen Sie einen Schlüssel pro Umgebung.","step2Title":"2. Anbieter verbinden","step2Desc":"Fügen Sie Konten unter <providers>Providers</providers> hinzu. Unterstützt OAuth, API Key und kostenlose Stufen.","step3Title":"3. Client konfigurieren","step3Desc":"Legen Sie die Basis-URL in Ihrem IDE- oder API-Client auf {url} fest.","step4Title":"4. Überwachen und optimieren","step4Desc":"Verfolgen Sie Tokens, Kosten und Fehler in <logs>Anfrageprotokollen</logs> und <analytics>Analysen</analytics>.","providersOverview":"Anbieterübersicht","configuredOf":"{configured} konfiguriert von {total} verfügbaren Anbietern","noModelsAvailable":"Für diesen Anbieter sind keine Modelle verfügbar.","configureFirst":"Konfigurieren Sie zuerst eine Verbindung in {providers}","configureProvider":"Anbieter konfigurieren","modelAvailable":"{count} Modell verfügbar","modelsAvailable":"{count} Modelle verfügbar","connectionsActive":"{count} Verbindung aktiv","connectionsActivePlural":"{count} Verbindungen aktiv","copyModelName":"Modellnamen kopieren","documentation":"Dokumentation","healthMonitor":"Gesundheitsmonitor","reportIssue":"Problem melden","activeError":"{active} aktiv · {errors} Fehler","oauthLabel":"OAuth","apiKeyLabel":"API-Schlüssel","requestsShort":"{count} Anfr.","providerModelsTitle":"{provider} – Modelle","copiedModel":"Kopiert: {model}","aliasLabel":"Alias","updateNow":"Jetzt aktualisieren","updating":"Aktualisiere...","updateAvailableDesc":"Eine neue Version ist verfügbar. Klicken Sie zum Aktualisieren.","updateStarted":"Aktualisierung gestartet..."},"analytics":{"title":"Analytik","overviewDescription":"Überwachen Sie Ihre API-Nutzungsmuster, Token-Verbrauch, Kosten und Aktivitätstrends bei allen Anbietern und Modellen.","evalsDescription":"Führen Sie Evaluierungssuiten aus, um Ihre LLM-Endpunkte zu testen und zu validieren. Vergleichen Sie die Modellqualität, erkennen Sie Regressionen und messen Sie die Latenz.","overview":"Übersicht","evals":"Bewertungen"},"apiManager":{"title":"API-Schlüssel","createKey":"API-Schlüssel erstellen","key":"Schlüssel","revokeKey":"Schlüssel widerrufen","revokeConfirm":"Sind Sie sicher, dass Sie diesen API-Schlüssel widerrufen möchten?","noKeys":"Noch keine API-Schlüssel","noKeysDesc":"Erstellen Sie Ihren ersten API-Schlüssel, um Anfragen an Ihren Endpunkt zu authentifizieren","keyLabel":"Schlüsseletikett","permissions":"Berechtigungen","expiresAt":"Läuft ab","never":"Niemals","revoke":"Widerrufen","showKey":"Schlüssel anzeigen","hideKey":"Schlüssel verstecken","copyKey":"API-Schlüssel kopieren","allModels":"Alle Modelle","selectedModels":"Ausgewählte Modelle","readOnly":"Nur lesen","fullAccess":"Voller Zugriff","keyManagement":"API-Schlüsselverwaltung","keyManagementDesc":"Erstellen und verwalten Sie API-Schlüssel zur Authentifizierung von Anfragen an Ihren Endpunkt","totalKeys":"Gesamtschlüssel","restricted":"Eingeschränkt","totalRequests":"Gesamtzahl der Anfragen","modelsAvailable":"Verfügbare Modelle","registeredKeys":"Registrierte Schlüssel","keysRegistered":"{count} Schlüssel registriert","keyRegistered":"{count} Schlüssel registriert","keysSecurityNote":"Jeder Schlüssel isoliert die Nutzungsverfolgung und kann unabhängig widerrufen werden. Aus Sicherheitsgründen werden Schlüssel nach der Erstellung maskiert.","createFirstKey":"Erstellen Sie Ihren ersten Schlüssel","name":"Name","usage":"Nutzung","created":"Erstellt","actions":"Aktionen","reqs":"Anforderungen","neverUsed":"Nie benutzt","deleteConfirm":"Diesen API-Schlüssel löschen?","usageTips":"Nutzungstipps","tipAuth":"Verwenden Sie API-Schlüssel im Authorization-Header als Bearer YOUR_KEY","tipSecure":"Schlüssel werden bei der Erstellung nur einmal angezeigt – bewahren Sie sie sicher auf","tipSeparate":"Erstellen Sie separate Schlüssel für verschiedene Clients oder Umgebungen","tipRestrict":"Beschränken Sie die Schlüssel auf bestimmte Modelle, um die Sicherheit und Kostenkontrolle zu verbessern","keyName":"Schlüsselname","keyNamePlaceholder":"z. B. Produktionsschlüssel, Entwicklungsschlüssel","keyNameDesc":"Wählen Sie einen aussagekräftigen Namen, um den Zweck dieses Schlüssels zu identifizieren","keyCreated":"API-Schlüssel erstellt","keyCreatedSuccess":"Schlüssel erfolgreich erstellt!","keyCreatedNote":"Kopieren und speichern Sie diesen Schlüssel jetzt – er wird nicht mehr angezeigt.","done":"Fertig","savePermissions":"Berechtigungen speichern","allowAll":"Alle zulassen","restrict":"Einschränken","allowAllInfo":"Mit diesem Schlüssel kann auf alle verfügbaren Modelle zugegriffen werden.","restrictInfo":"Dieser Schlüssel kann auf {selected} von {total} Modellen zugreifen.","selected":"{count} ausgewählt","all":"Alle","clear":"Klar","searchModels":"Modelle nach Name oder Anbieter suchen...","noModelsFound":"Keine Modelle gefunden","keyNameRequired":"Schlüsselname ist erforderlich","keyNameTooLong":"Der Schlüsselname darf höchstens {max} Zeichen lang sein","keyNameInvalid":"Der Schlüsselname darf nur Buchstaben, Zahlen, Leerzeichen, Bindestriche und Unterstriche enthalten","invalidKeyName":"Ungültiger Schlüsselname","failedCreateKey":"Schlüssel konnte nicht erstellt werden","failedCreateKeyRetry":"Schlüssel konnte nicht erstellt werden. Bitte versuchen Sie es erneut.","invalidKeyId":"Ungültige Schlüssel-ID","failedDeleteKey":"Schlüssel konnte nicht gelöscht werden","failedDeleteKeyRetry":"Schlüssel konnte nicht gelöscht werden. Bitte versuchen Sie es erneut.","invalidModelsSelection":"Ungültige Modellauswahl","cannotSelectMoreThanModels":"Es können nicht mehr als {max} Modelle ausgewählt werden","failedUpdatePermissions":"Die Berechtigungen konnten nicht aktualisiert werden","failedUpdatePermissionsRetry":"Die Berechtigungen konnten nicht aktualisiert werden. Bitte versuchen Sie es erneut.","unknownProvider":"unbekannt","copyMaskedKey":"Maskierten Schlüssel kopieren","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Zuletzt: {date}","editPermissions":"Berechtigungen bearbeiten","deleteKey":"Schlüssel löschen","model":"{count} Modell","models":"{count} Modelle","permissionsTitle":"Berechtigungen: {name}","allowAllDesc":"Mit diesem Schlüssel kann auf alle verfügbaren Modelle zugegriffen werden.","restrictDesc":"Dieser Schlüssel kann auf {selectedCount} von {totalModels} Modellen zugreifen.","selectedCount":"{count} ausgewählt","autoResolve":"Auto-Resolve","autoResolveDesc":"Auto-resolve ambiguous model names to native provider for this API key.","keyActive":"Key Active","keyActiveDesc":"Enable or disable this API key. Disabled keys are immediately rejected with 403.","accessSchedule":"Access Schedule","accessScheduleDesc":"Restrict access to specific hours and days of the week.","scheduleFrom":"From","scheduleUntil":"Until","scheduleDays":"Days","scheduleTimezone":"Timezone","scheduleTimezoneHint":"Use IANA timezone names, e.g. America/New_York, Europe/Berlin","scheduleActive":"Schedule","disabled":"Disabled","daySun":"Sun","dayMon":"Mon","dayTue":"Tue","dayWed":"Wed","dayThu":"Thu","dayFri":"Fri","daySat":"Sat","keyOnlyAvailableAtCreation":"Full key available only at creation time — copy it when you first create the key"},"auditLog":{"title":"Audit-Protokoll","searchPlaceholder":"Suchaktionen...","action":"Aktion","actor":"Schauspieler","target":"Ziel","ipAddress":"IP-Adresse","timestamp":"Zeitstempel","noEntries":"Keine Audit-Einträge gefunden","filterByAction":"Nach Aktion filtern...","filterByActor":"Nach Schauspieler filtern...","filterEntriesAria":"Audit-Log-Einträge filtern","filterByActionTypeAria":"Filtern Sie nach Aktionstyp","filterByActorAria":"Nach Schauspieler filtern","refreshAuditLogAria":"Audit-Protokoll aktualisieren","tableAria":"Audit-Log-Einträge","failedFetchAuditLog":"Das Audit-Protokoll konnte nicht abgerufen werden","notAvailable":"—","description":"Verwaltungsmaßnahmen und Sicherheitsereignisse","showing":"Zeigt {count} Einträge (Offset {offset})","previous":"Zurück"},"media":{"title":"Medien-Playground","subtitle":"Erstelle Bilder, Videos und Musik","model":"Model","prompt":"Prompt","generate":"Generieren","generating":"Generating...","loadingModels":"Loading available models...","noModels":"No models available. Configure providers with media capabilities first.","error":"Generation Failed","result":"Result","imageDescription":"Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.","videoDescription":"Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.","musicDescription":"Compose music using Stable Audio Open or MusicGen via ComfyUI."},"cliTools":{"title":"CLI-Tools","noActiveProviders":"Keine aktiven Anbieter","noActiveProvidersDesc":"Bitte fügen Sie zuerst Anbieter hinzu und verbinden Sie sie, um CLI-Tools zu konfigurieren.","mapModels":"Kartenmodelle","testConnection":"Testverbindung","connectionStatus":"Verbindungsstatus","configureEndpoint":"Endpunkt konfigurieren","instructions":"Anweisungen","modelMapping":"Modellzuordnung","baseUrl":"Basis-URL","apiKey":"API-Schlüssel","configured":"Konfiguriert","notConfigured":"Nicht konfiguriert","notInstalled":"Nicht installiert","custom":"Benutzerdefiniert","unknown":"Unbekannt","lastSavedAt":"Zuletzt gespeichert: {date}","never":"Niemals","justNow":"gerade jetzt","minutesAgoShort":"Vor {count}m","hoursAgoShort":"Vor {count}h","daysAgoShort":"Vor {count}d","monthsAgoShort":"Vor {count}mo","yearsAgoShort":"Vor {count}y","runtimeCheckFailed":"Laufzeitprüfung fehlgeschlagen","yourApiKeyPlaceholder":"Ihr-API-Schlüssel","modelPlaceholder":"Anbieter/Modell-ID","configurationSaved":"Konfiguration erfolgreich gespeichert.","failedToSave":"Die Konfiguration konnte nicht gespeichert werden.","noApiKeysCreateOne":"Keine API-Schlüssel – Erstellen Sie einen auf der Seite „Schlüssel“.","defaultOmnirouteKey":"sk_omniroute (Standard)","selectModel":"Wählen Sie Modell aus","selectModelForAlias":"Modell für {alias} auswählen","selectModelForTool":"Modell für {tool} auswählen","select":"Auswählen","clear":"Klar","comingSoon":"Kommt bald","checkingRuntime":"Laufzeitstatus wird geprüft...","guideOnlyIntegration":"Nur-Guide-Integration (keine lokale Laufzeit erforderlich)","cliRuntimeDetected":"CLI-Laufzeit erkannt und bereit","cliFoundNotRunnable":"CLI gefunden, aber nicht ausführbar{reason}","cliRuntimeNotDetected":"CLI-Laufzeit nicht erkannt","binary":"Binär","configPath":"Konfigurationspfad","configPathShort":"Konfig","failedCheckRuntimeStatus":"Der Laufzeitstatus konnte nicht überprüft werden.","copy":"Kopieren","copied":"Kopiert","copyConfig":"Konfiguration kopieren","saveConfig":"Konfiguration speichern","selectionSaved":"Auswahl gespeichert","guide":"Leitfaden","detected":"Erkannt","notReady":"Nicht bereit","active":"Aktiv","inactive":"Inaktiv","startMitm":"Starten Sie MITM","stopMitm":"Stoppen Sie MITM","mitmStarted":"MITM erfolgreich gestartet!","mitmStopped":"MITM wurde erfolgreich gestoppt!","failedStart":"MITM konnte nicht gestartet werden","failedStop":"MITM konnte nicht gestoppt werden","saveMappings":"Zuordnungen speichern","mappingsSaved":"Zuordnungen gespeichert!","failedSaveMappings":"Zuordnungen konnten nicht gespeichert werden","howItWorks":"So funktioniert es:","antigravityHowWorksDesc":"Antigravity sendet Anfragen an den Endpunkt von Google. MITM fängt sie ab und leitet sie an OmniRoute weiter.","antigravityStep1":"1. Starten Sie MITM, um Anforderungen über OmniRoute weiterzuleiten.","antigravityStep2Prefix":"2. Hinzufügen","antigravityStep2Suffix":"zu Ihrer Hosts-Datei als 127.0.0.1 hinzufügen.","antigravityStep3":"3. Öffnen Sie Antigravity und Anfragen werden weitergeleitet.","sudoPasswordRequiredTitle":"Sudo-Passwort erforderlich","sudoPasswordHint":"Zum Ändern der Hosts-Datei und der System-Proxy-Einstellungen ist ein Administratorkennwort erforderlich.","enterSudoPassword":"Geben Sie das Sudo-Passwort ein","sudoPasswordRequiredError":"Sudo-Passwort ist erforderlich.","cancel":"Abbrechen","confirm":"Bestätigen","settingsApplied":"Einstellungen erfolgreich übernommen!","failedApplySettings":"Die Einstellungen konnten nicht angewendet werden","settingsReset":"Einstellungen erfolgreich zurückgesetzt!","failedResetSettings":"Einstellungen konnten nicht zurückgesetzt werden","backupRestored":"Backup wiederhergestellt!","failedRestore":"Wiederherstellung fehlgeschlagen","checkingCli":"{tool} CLI wird überprüft...","cliNotRunnable":"{tool} CLI installiert, aber nicht ausführbar","cliNotInstalled":"{tool} CLI nicht installiert","cliNotDetected":"{tool} CLI nicht erkannt","cliDetectedReady":"{tool} CLI erkannt und bereit","cliFoundFailedHealthcheck":"{tool} CLI wurde gefunden, aber die Laufzeitprüfung ist fehlgeschlagen{reason}.","installCliPrompt":"Bitte installieren Sie {tool} CLI, um diese Funktion zu nutzen.","installCodexPrompt":"Bitte installieren Sie Codex CLI, um die Funktion zur automatischen Anwendung zu nutzen.","hide":"Verstecken","howToInstall":"Anleitung zur Installation","installationGuide":"Installationsanleitung","platforms":"macOS / Linux / Windows:","afterInstallationRun":"Nach der Installation ausführen","toVerify":"zu verifizieren.","current":"Aktuell","baseUrlPlaceholder":"https://.../v1","resetToDefault":"Auf Standard zurücksetzen","providerModelPlaceholder":"Anbieter/Modell-ID","apply":"Bewerben","reset":"Zurücksetzen","manualConfig":"Manuelle Konfiguration","backups":"Backups","configBackups":"Backups konfigurieren","noBackupsYet":"Noch keine Backups. Vor jedem Anwenden oder Zurücksetzen werden automatisch Sicherungen erstellt.","restore":"Wiederherstellen","backupRestoredReloading":"Backup wiederhergestellt! Status wird neu geladen...","failedRestoreBackup":"Sicherung konnte nicht wiederhergestellt werden","applied":"Beworben!","failed":"Fehlgeschlagen","resetDone":"Zurücksetzen!","omnirouteConfiguredOpenAiCompatible":"OmniRoute ist als OpenAI-kompatibler Anbieter konfiguriert","provider":"Anbieter","model":"Modell","providers":"Anbieter","auth":"Auth","noApiKeysAvailable":"Keine API-Schlüssel verfügbar","usingDefaultOmniroute":"Standardmäßig wird verwendet: sk_omniroute","updateConfig":"Konfiguration aktualisieren","applyConfig":"Konfiguration anwenden","noBackupsAvailable":"Keine Backups verfügbar.","profileSaved":"Profil „{name}“ gespeichert!","failedSaveProfile":"Profil konnte nicht gespeichert werden","profileActivated":"Profil aktiviert!","failedActivateProfile":"Profil konnte nicht aktiviert werden","profiles":"Profile","savedProfiles":"Gespeicherte Profile","noProfilesYet":"Noch keine Profile gespeichert. Speichern Sie die aktuelle Konfiguration unten als Profil.","activate":"Aktivieren","deleteProfile":"Profil löschen","profileNamePlaceholder":"Profilname (z. B. Persönliches Konto)","saveCurrent":"Aktuelles speichern","codexAuthNotePrefix":"Codex verwendet","codexAuthNoteMiddle":"mit","codexAuthNoteSuffix":"Klicken Sie auf „Übernehmen“, um die automatische Konfiguration durchzuführen.","claudeManualConfiguration":"Claude CLI – Manuelle Konfiguration","codexManualConfiguration":"Codex CLI – Manuelle Konfiguration","droidManualConfiguration":"Factory Droid – Manuelle Konfiguration","openClawManualConfiguration":"Open Claw – Manuelle Konfiguration","clineManualConfiguration":"Manuelle Cline-Konfiguration","kiloManualConfiguration":"Manuelle Konfiguration des Kilo-Codes","toolDescriptions":{"antigravity":"Google Antigravity IDE mit MITM","claude":"Anthropic Claude Code CLI","codex":"OpenAI Codex-CLI","droid":"Fabrik-Droiden-KI-Assistent","openclaw":"Öffnen Sie den Klauen-KI-Assistenten","cline":"Cline AI Coding Assistant CLI","kilo":"Kilo Code AI Assistant CLI","cursor":"Cursor-KI-Code-Editor","continue":"Weiter AI Assistant","opencode":"OpenCode AI coding agent (Terminal)","kiro":"Amazon Kiro — AI-powered IDE","windsurf":"Windsurf AI Code Editor","copilot":"GitHub Copilot AI Assistant"},"guides":{"cursor":{"notes":{"0":"Zur Nutzung dieser Funktion ist ein Cursor Pro-Konto erforderlich.","1":"Cursor leitet Anfragen über seinen eigenen Server weiter, daher wird ein lokaler Endpunkt nicht unterstützt. Bitte aktivieren Sie Cloud Endpoint in den Einstellungen."},"steps":{"1":{"title":"Öffnen Sie Einstellungen","desc":"Gehen Sie zu Einstellungen -> Modelle"},"2":{"title":"Aktivieren Sie die OpenAI-API","desc":"Aktivieren Sie die Option „OpenAI-API-Schlüssel“."},"3":{"title":"Basis-URL"},"4":{"title":"API-Schlüssel"},"5":{"title":"Benutzerdefiniertes Modell hinzufügen","desc":"Klicken Sie auf „Alle Modelle anzeigen“ -> „Benutzerdefiniertes Modell hinzufügen“"},"6":{"title":"Wählen Sie Modell aus"}}},"continue":{"steps":{"1":{"title":"Öffnen Sie die Konfiguration","desc":"Öffnen Sie die Konfigurationsdatei „Fortfahren“."},"2":{"title":"API-Schlüssel"},"3":{"title":"Wählen Sie Modell aus"},"4":{"title":"Modellkonfiguration hinzufügen","desc":"Fügen Sie Ihrem Modellarray die folgende Konfiguration hinzu:"}},"notes":{"0":"Continue verwendet eine JSON-Konfigurationsdatei."}},"opencode":{"steps":{"1":{"title":"Install OpenCode","desc":"Install via npm: npm install -g opencode-ai"},"2":{"title":"API Key"},"3":{"title":"Set Base URL","desc":"opencode config set baseUrl {{baseUrl}}"},"4":{"title":"Select Model"}},"notes":{"0":"OpenCode erfordert API-Schlüssel-Konfiguration.","1":"Base URL auf Ihren OmniRoute-Endpunkt setzen."}},"kiro":{"steps":{"1":{"title":"Open Kiro Settings","desc":"Go to Settings → AI Provider"},"2":{"title":"Base URL","desc":"Paste your OmniRoute endpoint URL"},"3":{"title":"API Key"},"4":{"title":"Select Model"}},"notes":{"0":"Kiro erfordert ein Amazon-Konto."}}},"mitmHowWorksDesc":"{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.","mitmStep1":"1. Start MITM to route requests through OmniRoute.","mitmStep2Prefix":"2. Add","mitmStep2Suffix":"to your hosts file as 127.0.0.1.","mitmStep3":"3. Open {toolName} and requests will be proxied.","whenToUseLabel":"Wann zu verwenden","openToolDocs":"Tool-Dokumente öffnen","toolUseCases":{"claude":"Verwenden Sie Claude Code, wenn Sie starke Planungsworkflows und lange Umgestaltungen mehrerer Dateien wünschen.","codex":"Verwenden Sie es, wenn Ihr Team auf OpenAI Codex CLI-Flows und profilbasierte Authentifizierung standardisiert ist.","droid":"Verwenden Sie ihn, wenn Sie einen kompakten Terminalagenten benötigen, der sich auf schnelle Codierung und Befehlsausführungsschleifen konzentriert.","openclaw":"Verwenden Sie diese Option, wenn Sie einen Codierungsagenten im Open-Claw-Stil wünschen, der jedoch über OmniRoute-Richtlinien weitergeleitet wird.","cline":"Verwenden Sie diese Option, wenn Sie Codierungsagenten in Editoren konfigurieren und eine geführte Einrichtung mit OmniRoute-Modellen wünschen.","kilo":"Verwenden Sie diese Option, wenn Ihr Arbeitsablauf auf Kilo-Code-Befehle und schnelle iterative Bearbeitungen angewiesen ist.","cursor":"Verwenden Sie diese Option, wenn Sie in Cursor codieren und benutzerdefinierte OpenAI-kompatible Modelle über OmniRoute benötigen.","continue":"Verwenden Sie diese Option, wenn Sie Continue in IDEs ausführen und eine portable JSON-basierte Anbieterkonfiguration benötigen.","opencode":"Verwenden Sie diese Option, wenn Sie terminalnative Agentenausführungen und Skriptautomatisierung über OpenCode bevorzugen.","kiro":"Zur Verwendung bei der Integration von Kiro und der zentralen Steuerung des Modellroutings über OmniRoute.","antigravity":"Wird verwendet, wenn Antigravity/Kiro-Verkehr über MITM abgefangen und an OmniRoute weitergeleitet werden muss.","copilot":"Verwenden Sie diese Option, wenn Sie eine UX im Copilot-Chat-Stil wünschen und gleichzeitig OmniRoute-Schlüssel und Routing-Regeln durchsetzen möchten."}},"combos":{"title":"Kombinationen","description":"Erstellen Sie Modellkombinationen mit gewichtetem Routing und Fallback-Unterstützung","createCombo":"Combo erstellen","editCombo":"Combo bearbeiten","deleteCombo":"Combo löschen","noModels":"Keine Modelle","noModelsYet":"Noch keine Modelle hinzugefügt","addModel":"Modell hinzufügen","addModelToCombo":"Modell zur Combo hinzufügen","routingStrategy":"Routing-Strategie","maxRetries":"Max. Wiederholungsversuche","timeout":"Timeout (ms)","healthcheck":"Gesundheitscheck","priority":"Priorität","fallback":"Rückfall","roundRobin":"Round Robin","random":"Zufällig","leastLatency":"Geringste Latenz","comboName":"Kombinationsname","comboNamePlaceholder":"meine-combo","deleteConfirm":"Diese Combo löschen?","noCombosYet":"Noch keine Combos","comboCreated":"Combo erfolgreich erstellt","comboUpdated":"Combo wurde erfolgreich aktualisiert","comboDeleted":"Combo gelöscht","failedCreate":"Kombination konnte nicht erstellt werden","failedUpdate":"Die Kombination konnte nicht aktualisiert werden","errorCreating":"Fehler beim Erstellen der Combo","errorUpdating":"Fehler beim Aktualisieren der Combo","errorDeleting":"Fehler beim Löschen der Combo","testFailed":"Testanforderung fehlgeschlagen","failedToggle":"Die Kombination konnte nicht umgeschaltet werden","testResults":"Testergebnisse – {name}","resolvedBy":"Gelöst von:","more":"+{count} mehr","reqs":"Anforderungen","success":"Erfolg","proxyConfigured":"Proxy konfiguriert","copyComboName":"Kombinationsnamen kopieren","enableCombo":"Kombination aktivieren","disableCombo":"Combo deaktivieren","testCombo":"Testkombination","duplicate":"Duplizieren","proxyConfig":"Proxy-Konfiguration","nameRequired":"Name ist erforderlich","nameInvalid":"Nur Buchstaben, Zahlen, -, _, / und . erlaubt","nameHint":"Buchstaben, Zahlen, -, _, / und . erlaubt","priorityDesc":"Sequentielles Fallback: Versucht zuerst Modell 1, dann 2 usw.","weightedDesc":"Verteilt den Datenverkehr nach Gewichtsprozentsatz mit Fallback","roundRobinDesc":"Zirkuläre Verteilung: Jede Anfrage wird abwechselnd an das nächste Modell weitergeleitet","randomDesc":"Einheitliche Zufallsauswahl, dann Rückgriff auf verbleibende Modelle","leastUsedDesc":"Wählt das Modell mit den wenigsten Anfragen aus und gleicht die Last über die Zeit aus","costOptimizedDesc":"Leitet basierend auf dem Preis zuerst zum günstigsten Modell weiter","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each model once before reshuffling","models":"Modelle","autoBalance":"Automatischer Ausgleich","advancedSettings":"Erweiterte Einstellungen","retryDelay":"Wiederholungsverzögerung (ms)","concurrencyPerModel":"Parallelität / Modell","queueTimeout":"Warteschlangen-Timeout (ms)","advancedHint":"Lassen Sie das Feld leer, um globale Standardeinstellungen zu verwenden. Diese überschreiben die Einstellungen pro Anbieter.","moveUp":"Bewegen Sie sich nach oben","moveDown":"Bewegen Sie sich nach unten","removeModel":"Entfernen","saving":"Sparen...","weighted":"Gewichtet","leastUsed":"Am wenigsten genutzt","costOpt":"Kosten-Opt","strategyGuideTitle":"So nutzen Sie diese Strategie","strategyGuideWhen":"Wann zu verwenden","strategyGuideAvoid":"Vermeiden Sie wann","strategyGuideExample":"Beispiel","strategyGuide":{"priority":{"when":"Sie haben ein bevorzugtes Modell und wollen nur im Falle eines Ausfalls auf einen Ersatz zurückgreifen.","avoid":"Sie benötigen eine Anforderungsverteilung über Modelle hinweg.","example":"Primäres Codierungsmodell mit günstigerem Backup für Ausfälle."},"weighted":{"when":"Sie benötigen eine kontrollierte Aufteilung des Datenverkehrs auf alle Modelle.","avoid":"Sie können Ihr Gewicht nicht über einen längeren Zeitraum hinweg genau aufrechterhalten.","example":"80 % stabiles Modell + 20 % Rollout des kanarischen Modells."},"round-robin":{"when":"Sie möchten eine vorhersehbare und gleichmäßige Verteilung.","avoid":"Die Modelle unterscheiden sich zu stark in der Latenz oder den Kosten.","example":"Gleiches Modell auf mehreren Konten, um den Durchsatz zu verteilen."},"random":{"when":"Sie möchten eine einfache Verteilung mit minimalem Setup.","avoid":"Sie benötigen strenge Verkehrsgarantien.","example":"Schnelles Prototyping mit gleichwertigen Modellen."},"least-used":{"when":"Sie möchten einen adaptiven Ausgleich basierend auf der Live-Nachfrage.","avoid":"Der Datenverkehr ist zu gering, um vom Nutzungsausgleich zu profitieren.","example":"Gemischte Arbeitslasten, bei denen ein Modell häufig überlastet ist."},"cost-optimized":{"when":"Kostenreduzierung steht für Sie an erster Stelle.","avoid":"Preisdaten fehlen oder sind veraltet.","example":"Hintergrund- oder Batch-Jobs, bei denen geringere Kosten bevorzugt werden."}},"advancedHelp":{"maxRetries":"Wie viele Wiederholungsversuche werden unternommen, bevor eine Anfrage fehlschlägt.","retryDelay":"Initial wait between retries. Higher values reduce burst pressure.","timeout":"Maximum request duration before aborting.","healthcheck":"Skips unhealthy models/providers from routing decisions.","concurrencyPerModel":"Max simultaneous requests allowed per model in round-robin.","queueTimeout":"How long a request can wait in queue before timing out."},"templatesTitle":"Quick templates","templatesDescription":"Apply a starting profile, then adjust models and config.","templateApply":"Apply template","templateHighAvailability":"High availability","templateHighAvailabilityDesc":"Priority routing with health checks and safe retries.","templateCostSaver":"Cost saver","templateCostSaverDesc":"Cost-optimized routing for budget-first workloads.","templateBalanced":"Balanced load","templateBalancedDesc":"Am wenigsten genutztes Routing, um die Nachfrage über einen längeren Zeitraum zu verteilen.","usageGuideHide":"Verstecken","usageGuideDontShowAgain":"Nicht mehr anzeigen","usageGuideShow":"Anleitung anzeigen","quickTestTitle":"Combo bereit zur Validierung","quickTestDescription":"Führen Sie jetzt einen Test durch, um das Fallback- und Latenzverhalten zu bestätigen.","testNow":"Jetzt testen","pricingCoverage":"Preisabdeckung","pricingCoverageHint":"Kostenoptimiert funktioniert am besten, wenn alle Combo-Modelle über Preise verfügen.","pricingAvailable":"Preise verfügbar","pricingMissing":"Keine Preisgestaltung","pricingAvailableShort":"preislich","pricingMissingShort":"kein Preis","warningRoundRobinSingleModel":"Round-Robin ist bei mindestens zwei Modellen am nützlichsten.","warningCostOptimizedPartialPricing":"Nur {priced} der {total} Modelle haben Preise. Die Routenplanung kann teilweise kostenbewusst erfolgen.","warningCostOptimizedNoPricing":"Für diese Kombination wurden keine Preisdaten gefunden. Eine kostenoptimierte Route kann unerwartet erfolgen.","readinessTitle":"Bereit zum Speichern?","readinessDescription":"Prüfe die Checkliste, bevor du dieses Combo erstellst oder aktualisierst.","readinessCheckName":"Der Combo-Name ist gültig","readinessCheckModels":"Mindestens ein Modell ist ausgewählt","readinessCheckWeights":"Die Gewichtssumme beträgt 100 %","readinessCheckWeightsOptional":"Gewichtungsregel nicht erforderlich","readinessCheckPricing":"Preisdaten sind verfügbar","readinessCheckPricingOptional":"Preisregel nicht erforderlich","saveBlockedTitle":"Speichern ist blockiert, bis diese Punkte behoben sind:","saveBlockName":"Definiere einen Namen für das Combo.","saveBlockModels":"Füge mindestens ein Modell hinzu.","saveBlockWeighted":"Setze die Gewichte auf 100 % (aktuell: {total} %).","saveBlockPricing":"Füge Preise für mindestens ein Modell hinzu oder wähle eine andere Strategie.","recommendationsLabel":"Empfohlene Konfiguration","applyRecommendations":"Empfehlungen anwenden","recommendationsUpdated":"Empfehlungen für {strategy} aktualisiert.","recommendationsApplied":"Empfehlungen für dieses Combo wurden angewendet.","strategyRecommendations":{"priority":{"title":"Ausfallsichere Basis","description":"Nutze ein primäres Modell und halte die Fallback-Kette kurz und zuverlässig.","tip1":"Setze dein zuverlässigstes Modell an erste Stelle.","tip2":"Nutze 1-2 Backup-Modelle mit ähnlicher Qualität.","tip3":"Aktiviere sichere Retries, um temporäre Provider-Fehler abzufangen."},"weighted":{"title":"Kontrollierte Traffic-Aufteilung","description":"Ideal für Canary-Rollouts und schrittweise Modellmigrationen.","tip1":"Starte mit einer konservativen Verteilung wie 90/10.","tip2":"Halte die Summe bei 100 % und gleiche nach Änderungen automatisch aus.","tip3":"Überwache Erfolg und Latenz, bevor du Canary-Gewichte erhöhst."},"round-robin":{"title":"Vorhersehbare Lastverteilung","description":"Am besten, wenn Modelle gleichwertig sind und du eine stabile Verteilung brauchst.","tip1":"Nutze mindestens 2 Modelle.","tip2":"Setze Concurrency-Limits, um Lastspitzen zu vermeiden.","tip3":"Nutze Queue-Timeouts, um bei Sättigung schnell zu scheitern."},"random":{"title":"Schnelle Verteilung mit wenig Setup","description":"Für einfache Verteilung ohne harte Garantien.","tip1":"Nutze Modelle mit ähnlichen Latenzprofilen.","tip2":"Lass Retries aktiv, um zufällige Fehlschläge abzufangen.","tip3":"Gut für Experimente, nicht für strenge SLAs."},"least-used":{"title":"Adaptives Balancing","description":"Routet zu weniger genutzten Modellen und reduziert Hotspots über Zeit.","tip1":"Funktioniert besser bei kontinuierlichem Traffic.","tip2":"Kombiniere mit Health Checks für sichereres Balancing.","tip3":"Verfolge Nutzung pro Modell, um Verteilungsgewinne zu validieren."},"cost-optimized":{"title":"Kostenorientiertes Routing","description":"Routet zu günstigeren Modellen, wenn Preisdaten verfügbar sind.","tip1":"Sichere Preisabdeckung für alle ausgewählten Modelle.","tip2":"Behalte einen Qualitäts-Fallback für schwierige Prompts.","tip3":"Ideal für Batch/Hintergrundjobs, bei denen Kosten das Haupt-KPI sind."}},"templateFreeStack":"Free Stack ($0)","templateFreeStackDesc":"Round-robin across all free providers: Kiro (Claude), iFlow (5 models), Qwen (4 models), Gemini CLI. Zero cost, never stops coding."},"costs":{"title":"Kosten","budget":"Budget","totalCost":"Gesamtkosten","breakdown":"Kostenaufschlüsselung","noData":"Keine Kostendaten","byModel":"Nach Modell","byProvider":"Nach Anbieter"},"endpoint":{"title":"API-Endpunkt","available":"Verfügbare Endpunkte","cloudProxy":"Cloud-Proxy","disableConfirm":"Sind Sie sicher, dass Sie den Cloud-Proxy deaktivieren möchten?","baseUrl":"Basis-URL","apiKeyLabel":"API-Schlüssel","registeredKeys":"Registrierte Schlüssel","chatCompletions":"Chat-Abschlüsse","responses":"Antworten","listModels":"Modelle auflisten","usingCloudProxy":"Verwenden von Cloud Proxy","usingLocalServer":"Verwenden eines lokalen Servers","machineId":"Maschinen-ID: {id}...","disableCloud":"Cloud deaktivieren","enableCloud":"Cloud aktivieren","modelsAcrossEndpoints":"{models} Modelle über {endpoints} Endpunkte hinweg","chatDesc":"Streaming- und Nicht-Streaming-Chat mit allen Anbietern","embeddings":"Einbettungen","embeddingsDesc":"Texteinbettungen für Such- und RAG-Pipelines","imageGeneration":"Bilderzeugung","imageDesc":"Generieren Sie Bilder aus Textaufforderungen","rerank":"Neu einordnen","rerankDesc":"Ordnen Sie Dokumente nach Relevanz für eine Abfrage neu","audioTranscription":"Audio-Transkription","audioTranscriptionDesc":"Audiodateien in Text umwandeln (Flüstern)","textToSpeech":"Text-to-Speech","textToSpeechDesc":"Wandeln Sie Text in natürlich klingende Sprache um","moderations":"Moderationen","moderationsDesc":"Inhaltsmoderation und Sicherheitsklassifizierung","responsesDesc":"OpenAI Responses API für Codex und fortgeschrittene agentische Workflows","listModelsDesc":"Alle verfügbaren Modelle aller verbundenen Anbieter auflisten","settingsApiDesc":"OmniRoute-Konfiguration per API lesen und ändern","settingsApi":"Settings API","categoryCore":"Kern-APIs","categoryMedia":"Medien & Multi-Modal","categoryUtility":"Hilfsmittel & Verwaltung","enableCloudTitle":"Aktivieren Sie Cloud Proxy","whatYouGet":"Was Sie bekommen werden","cloudBenefitAccess":"Greifen Sie von überall auf der Welt auf Ihre API zu","cloudBenefitShare":"Teilen Sie den Endpunkt ganz einfach mit Ihrem Team","cloudBenefitPorts":"Es ist nicht erforderlich, Ports zu öffnen oder eine Firewall zu konfigurieren","cloudBenefitEdge":"Schnelles globales Edge-Netzwerk","cloudSessionNote":"Cloud speichert Ihre Authentifizierungssitzung einen Tag lang. Bei Nichtverwendung wird es automatisch gelöscht.","cloudUnstableNote":"Cloud ist derzeit mit Claude Code OAuth in einigen Fällen instabil.","cloudConnected":"Cloud-Proxy verbunden!","connectingToCloud":"Mit der Cloud verbinden...","verifyingConnection":"Verbindung wird überprüft...","connecting":"Verbinden...","verifying":"Überprüfung...","connected":"Verbunden!","disableCloudTitle":"Deaktivieren Sie den Cloud-Proxy","disableWarning":"Alle Authentifizierungssitzungen werden aus der Cloud gelöscht.","syncingData":"Aktuelle Daten werden synchronisiert...","disablingCloud":"Cloud wird deaktiviert...","syncing":"Synchronisierung...","disabling":"Deaktivieren...","cloudConnectedVerified":"Cloud-Proxy verbunden und verifiziert!","connectedVerificationPending":"Verbunden – Verifizierung steht aus","connectedVerificationPendingWithError":"Verbunden – Überprüfung ausstehend: {error}","cloudDisabledSuccess":"Cloud erfolgreich deaktiviert","syncedSuccess":"Erfolgreich synchronisiert","failedDisable":"Die Cloud konnte nicht deaktiviert werden","failedEnable":"Cloud konnte nicht aktiviert werden","cloudRequestTimeout":"Zeitüberschreitung bei der Cloud-Anfrage","cloudRequestFailed":"Die Cloud-Anfrage ist fehlgeschlagen","cloudWorkerUnreachable":"Der Cloud-Worker konnte nicht erreicht werden. Stellen Sie sicher, dass der Cloud-Dienst ausgeführt wird (npm run dev in /cloud).","connectionFailed":"Verbindung fehlgeschlagen","syncFailed":"Cloud-Daten konnten nicht synchronisiert werden","providerModelsTitle":"{provider} – Modelle","noModelsForProvider":"Für diesen Anbieter sind keine Modelle verfügbar.","chat":"Chatten","embedding":"Einbetten","image":"Bild","custom":"Brauch","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Integrationsoberfläche","sectionDescription":"OpenAI-kompatible APIs und Betriebsprotokoll-Endpunkte","tabApis":"OpenAI-kompatible APIs","tabProtocols":"Protokolle","tabsAria":"Endpunktabschnitte","protocolsTitle":"Protokolle","protocolsDescription":"MCP und A2A sind erstklassige Endpunkte mit dedizierter Beobachtbarkeit und Kontrollen.","mcpCardTitle":"MCP-Server","mcpCardDescription":"Model Context Protocol über stdio","a2aCardTitle":"A2A-Server","a2aCardDescription":"Agent2Agent JSON-RPC-Endpunkt","protocolToolsLabel":"Werkzeuge","protocolTasksLabel":"Aufgaben","protocolActiveStreamsLabel":"Active streams","protocolLastActivity":"Letzte Aktivität","quickStart":"Schnellstart","openMcpDashboard":"Öffnen Sie die MCP-Verwaltung","openA2aDashboard":"Öffnen Sie die A2A-Verwaltung","mcpQuickStartTitle":"MCP-Schnellstart","mcpQuickStartStep1":"Führen Sie den MCP-Server über `omniroute --mcp` aus.","mcpQuickStartStep2":"Konfigurieren Sie Ihren MCP-Client für die Verbindung über stdio-Transport.","mcpQuickStartStep3":"Rufen Sie Tools wie `omniroute_get_health` und `omniroute_list_combos` auf.","a2aQuickStartTitle":"A2A-Schnellstart","a2aQuickStartStep1":"Entdecken Sie die Agentenkarte unter `/.well-known/agent.json`.","a2aQuickStartStep2":"Senden Sie JSON-RPC-Anfragen an `POST /a2a` mit `message/send` oder `message/stream`.","a2aQuickStartStep3":"Verfolgen und steuern Sie Aufgaben mit `tasks/get` und `tasks/cancel`.","completionsLegacy":"Completions (Legacy)","completionsLegacyDesc":"Legacy OpenAI text completions — accepts both prompt string and messages array format","categorySearch":"Search & Discovery","webSearch":"Web Search","webSearchDesc":"Unified web search across multiple providers with automatic failover and caching","searchProvider":"Search Provider","searchProviderDesc":"This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.","cloudflaredUrlNotice":"Creates a temporary Cloudflare Quick Tunnel. The URL changes after every restart."},"mcpDashboard":{"loading":"MCP-Dashboard wird geladen...","activate":"aktivieren","deactivate":"deaktivieren","confirmSwitchCombo":"Bestätigen Sie die {action}-Kombination „{combo}“?","switchComboFailed":"Der Kombinationsstatus konnte nicht gewechselt werden.","switchComboSuccess":"Combo „{combo}“ aktualisiert.","confirmApplyProfile":"Resilienzprofil „{profile}“ anwenden?","applyProfileFailed":"Das Resilienzprofil konnte nicht angewendet werden.","applyProfileSuccess":"Profil „{profile}“ angewendet.","confirmResetBreakers":"Alle Schutzschalter zurücksetzen?","resetBreakersFailed":"Leistungsschalter konnten nicht zurückgesetzt werden.","resetBreakersSuccess":"Leistungsschalter zurückgesetzt.","processStatus":"Prozessstatus","online":"Online","offline":"Offline","pid":"PID","sessionUptime":"Sitzungsverfügbarkeit","lastHeartbeat":"Letzter Herzschlag","activity24h":"Aktivität (24h)","totalCalls":"Gesamtanzahl der Anrufe","successRate":"Erfolgsquote","avgLatency":"Durchschnittliche Latenz","topTools":"Top-Werkzeuge","noToolCalls24h":"Keine Werkzeugaufrufe in den letzten 24 Stunden.","runtimeDetails":"Laufzeitdetails","transport":"Transport","scopesEnforced":"Bereiche erzwungen","yes":"ja","no":"Nein","lastCall":"Letzter Anruf","heartbeatPath":"Herzschlagpfad","operationalControls":"Betriebskontrollen","switchCombo":"Kombination wechseln","inactive":"inaktiv","active":"aktiv","activateCombo":"Combo aktivieren","deactivateCombo":"Combo deaktivieren","applyResilienceProfile":"Resilienzprofil anwenden","profileAggressive":"aggressiv","profileBalanced":"ausgeglichen","profileConservative":"konservativ","applyProfile":"Profil anwenden","resetCircuitBreakers":"Leistungsschalter zurücksetzen","resetCircuitBreakersHelp":"Löscht den aktuellen Leistungsschalterstatus und die Fehlerzähler für Anbieter.","resetAllBreakers":"Setzen Sie alle Leistungsschalter zurück","toolsAndScopes":"Werkzeuge und Zielfernrohre","tableTool":"Werkzeug","tableScopes":"Bereiche","tablePhase":"Phase","tableAudit":"Prüfung","auditLog":"Audit-Protokoll","auditSummary":"Anrufe: {total} | Seite {page} von {totalPages}","allTools":"Alle Werkzeuge","allResults":"Alle Ergebnisse","success":"Erfolg","failure":"Misserfolg","apiKeyIdPlaceholder":"apiKeyId","loadingAuditEntries":"Loading audit entries...","noAuditEntriesForFilters":"No audit entries found for current filters.","tableTimestamp":"Timestamp","tableDuration":"Duration","tableResult":"Result","tableApiKey":"API key","failed":"failed","previous":"Previous","next":"Next"},"a2aDashboard":{"loading":"Loading A2A dashboard...","confirmCancelTask":"Cancel task {taskId}?","cancelTaskFailed":"Failed to cancel task.","cancelTaskSuccess":"Aufgabe {taskId} abgebrochen.","smokeSendFailed":"message/send smoke test failed.","smokeSendSuccessWithTask":"message/send ok (task {taskId}).","smokeSendSuccess":"message/send ok.","smokeStreamFailed":"message/stream smoke test failed.","smokeStreamSuccessWithTask":"message/stream ok (task {taskId}{stateSuffix}).","smokeStreamNoTaskId":"message/stream finished without task id.","health":"Health","ok":"ok","totalTasks":"Total tasks","activeStreams":"Active streams","lastTask":"Last task","taskStateOverview":"Task state overview","state":{"submitted":"submitted","working":"working","completed":"completed","failed":"failed","cancelled":"cancelled"},"agentCard":"Agentenkarte","version":"Version","url":"URL","capabilities":"Fähigkeiten","agentCardNotAvailable":"Agentenkarte nicht verfügbar.","quickValidation":"Schnelle Validierung","quickValidationDescription":"Executes smoke calls through the live `/a2a` endpoint.","runMessageSend":"Run message/send","runMessageStream":"Run message/stream","taskManagement":"Task management","taskSummary":"{total} tasks | page {page} of {totalPages}","allStates":"all","allSkills":"all skills","loadingTasks":"Loading tasks...","noTasksForFilters":"No tasks found for current filters.","tableTask":"Task","tableSkill":"Skill","tableState":"State","tableUpdated":"Aktualisiert","tableActions":"Aktionen","view":"Sicht","cancel":"Stornieren","previous":"Previous","next":"Next","taskDetail":"Aufgabendetails","close":"Schließen","metadata":"Metadaten","events":"Veranstaltungen","artifacts":"Artefakte"},"health":{"title":"Systemgesundheit","description":"Echtzeitüberwachung Ihrer OmniRoute-Instanz","healthy":"Gesund","degraded":"Degradiert","down":"Runter","uptime":"Betriebszeit","memory":"Erinnerung","memoryRss":"Speicher (RSS)","heap":"Haufen","cpu":"CPU","database":"Datenbank","version":"Version","lastCheck":"Letzter Check","providerHealth":"Gesundheit des Anbieters","systemMetrics":"Systemmetriken","tokenHealth":"Token-Gesundheit","refreshAll":"Alle aktualisieren","checkNow":"Jetzt prüfen","loadingHealth":"Gesundheitsdaten werden geladen...","failedToLoad":"Gesundheitsdaten konnten nicht geladen werden: {error}","retry":"Versuchen Sie es noch einmal","allOperational":"Alle Systeme betriebsbereit","issuesDetected":"Systemprobleme erkannt","updatedAt":"Aktualisiert {time}","latency":"Latenz","latencyP50":"S. 50","latencyP95":"S. 95","latencyP99":"S. 99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Gesamtzahl der Anfragen","noDataYet":"Noch keine Daten","promptCache":"Prompt-Cache","entries":"Einträge","hitRate":"Trefferquote","hitsMisses":"Treffer/Fehlschläge","signatureCache":"Signatur-Cache","signatureDefaults":"Standardeinstellungen","signatureTool":"Werkzeug","signatureFamily":"Familie","signatureSession":"Sitzung","recovering":"Genesung","noCBData":"Keine Leistungsschalterdaten verfügbar. Stellen Sie zunächst einige Anfragen.","providerHealthStatusAria":"Gesundheitsstatus des Anbieters","issuesLabel":"Erkannte Probleme","operational":"Betriebsbereit","providers":"Anbieter","healthyCount":"{count} gesund","nodeVersion":"Knoten {version}","failures":"{count} Fehler","failuresPlural":"{count} Fehler","lastFailure":"Zuletzt","rateLimitStatus":"Rate-Limit-Status","activeLimiters":"{count} aktiver Limiter","activeLimitersPlural":"{count} aktive Limiter","queued":"In der Warteschlange","queuedCount":"{count} in der Warteschlange","running":"laufen","runningCount":"{count} läuft","ok":"Okay","activeLockouts":"Aktive Sperren","resetConfirm":"Alle Leistungsschalter in den fehlerfreien Zustand zurücksetzen? Dadurch werden alle Fehlerzählungen gelöscht und alle Anbieter werden wieder in den Betriebszustand versetzt.","resetAllTitle":"Setzen Sie alle Leistungsschalter in den fehlerfreien Zustand zurück","resetting":"Zurücksetzen...","resetAll":"Alles zurücksetzen","until":"Bis {time}","activeProviders":"{count} active","monitoredProviders":"{count} monitored","configuredProvidersLabel":"Im Dashboard konfiguriert","configuredProvidersHint":"Anbieter mit in /dashboard/providers gespeicherten Anmeldeinformationen, unabhängig vom Laufzeitstatus.","activeProvidersHint":"Konfigurierte Anbieter, die derzeit für Routing-Anfragen aktiviert sind.","monitoredProvidersHint":"Anbieter, die derzeit von Leistungsschalter-Zustandsmonitoren überwacht werden."},"limits":{"title":"Limits und Quoten","rateLimit":"Ratenbegrenzung","remaining":"Übrig","requestsPerMinute":"Anfragen/Min","tokensPerMinute":"Token/Min","dailyLimit":"Tageslimit"},"logs":{"title":"Protokolle","requestLogs":"Fordern Sie Protokolle an","proxyLogs":"Proxy-Protokolle","auditLog":"Audit-Protokoll","console":"Konsole","auditLogDesc":"Verwaltungsmaßnahmen und Sicherheitsereignisse","loading":"Laden...","refresh":"Aktualisieren","filterByAction":"Nach Aktion filtern...","filterByActor":"Nach Schauspieler filtern...","filterEntriesAria":"Audit-Log-Einträge filtern","filterByActionTypeAria":"Filtern Sie nach Aktionstyp","filterByActorAria":"Nach Schauspieler filtern","refreshAuditLogAria":"Audit-Protokoll aktualisieren","tableAria":"Audit-Log-Einträge","failedFetchAuditLog":"Das Audit-Protokoll konnte nicht abgerufen werden","showing":"Zeigt {count} Einträge (Offset {offset})","search":"Suchen","timestamp":"Zeitstempel","action":"Aktion","actor":"Schauspieler","target":"Ziel","details":"Einzelheiten","ipAddress":"IP-Adresse","notAvailable":"—","noEntries":"Es wurden keine Audit-Log-Einträge gefunden","previous":"Zurück","next":"Als nächstes"},"onboarding":{"welcome":"Willkommen","security":"Sicherheit","test":"Testen","ready":"Bereit!","setPassword":"Passwort festlegen","addProvider":"Fügen Sie Ihren ersten Anbieter hinzu","getStarted":"Legen Sie los","skip":"Überspringen","skipWizard":"Den Assistenten vollständig überspringen","skipPassword":"Passwort-Einrichtung überspringen","skipAndContinue":"Überspringen und fortfahren","passwordLabel":"Passwort","confirmPassword":"Passwort bestätigen","enterPassword":"Passwort eingeben","confirmPasswordPlaceholder":"Passwort bestätigen","passwordsMismatch":"Passwörter stimmen nicht überein","setupComplete":"Einrichtung abgeschlossen!","goToDashboard":"Gehen Sie zu Dashboard →","welcomeDesc":"OmniRoute ist Ihr lokaler AI-API-Proxy. Es leitet Anfragen mit Lastausgleich, Failover und Nutzungsverfolgung an mehrere KI-Anbieter weiter.","multiProvider":"Multi-Provider","usageTracking":"Nutzungsverfolgung","apiKeyMgmt":"API-Schlüsselverwaltung","securityDesc":"Legen Sie ein Passwort fest, um Ihr Dashboard zu schützen, oder überspringen Sie es zunächst.","providerDesc":"Verbinden Sie Ihren ersten KI-Anbieter. Sie können später weitere hinzufügen.","apiKeyRequired":"API-Schlüssel (erforderlich)","customUrlOptional":"Benutzerdefinierte URL (optional)","testDesc":"Lassen Sie uns überprüfen, ob Ihre Provider-Verbindung funktioniert.","runTest":"Führen Sie einen Verbindungstest durch","testingConnection":"Verbindung wird getestet...","connectionSuccessful":"Verbindung erfolgreich! Ihr Anbieter ist bereit.","noProviderFound":"Kein Anbieter gefunden. Sie können später eines über das Dashboard hinzufügen.","testFailed":"Der Test ist fehlgeschlagen, aber Sie können dies später konfigurieren.","couldNotTest":"Konnte momentan nicht testen. Sie können den Test über das Dashboard durchführen.","doneDesc":"Sie sind bereit! Ihre OmniRoute-Instanz ist konfiguriert und bereit, KI-Anfragen weiterzuleiten.","yourEndpoint":"Ihr Endpunkt:","continue":"Weiter","retry":"Versuchen Sie es noch einmal","failedSetPassword":"Das Passwort konnte nicht festgelegt werden. Versuchen Sie es erneut.","failedAddProvider":"Anbieter konnte nicht hinzugefügt werden. Versuchen Sie es erneut.","connectionError":"Verbindungsfehler. Bitte versuchen Sie es erneut.","provider":"Anbieter"},"providers":{"title":"Anbieter","addProvider":"Anbieter hinzufügen","editProvider":"Anbieter bearbeiten","deleteProvider":"Anbieter löschen","noProviders":"Keine Anbieter konfiguriert","modelAvailability":"Modellverfügbarkeit","accounts":"Konten","newAccount":"Neues Konto","deleteConfirm":"Sind Sie sicher, dass Sie diesen Anbieter löschen möchten?","testing":"Testen...","testConnection":"Testverbindung","testSuccess":"Verbindung erfolgreich","testFailed":"Verbindung fehlgeschlagen","available":"Verfügbar","cooldown":"Abklingzeit","unavailable":"Nicht verfügbar","unknown":"Unbekannt","oauthLabel":"OAuth","compatibleLabel":"Kompatibel","chat":"Chatten","responses":"Antworten","messages":"Nachrichten","oauthProviders":"OAuth-Anbieter","freeProviders":"Kostenlose Anbieter","apiKeyProviders":"API-Schlüsselanbieter","compatibleProviders":"Mit API-Schlüsseln kompatible Anbieter","testAll":"Alle testen","testAllOAuth":"Testen Sie alle OAuth-Verbindungen","testAllFree":"Testen Sie alle kostenlosen Verbindungen","testAllApiKey":"Testen Sie alle API-Schlüsselverbindungen","testAllCompatible":"Testen Sie alle kompatiblen Verbindungen","connected":"{count} Verbunden","errorCount":"{count} Fehler ({code})","errorCountNoCode":"{count} Fehler","noConnections":"Keine Verbindungen","disabled":"Deaktiviert","enableProvider":"Anbieter aktivieren","disableProvider":"Anbieter deaktivieren","testResults":"Testergebnisse","noCompatibleYet":"Es wurden noch keine kompatiblen Anbieter hinzugefügt","compatibleHint":"Verwenden Sie die Schaltflächen oben, um OpenAI- oder Anthropic-kompatible Endpunkte hinzuzufügen","addOpenAICompatible":"OpenAI-kompatibel hinzufügen","addAnthropicCompatible":"Anthropic-kompatibel hinzufügen","addNewProvider":"Neuen Anbieter hinzufügen","backToProviders":"Zurück zu Anbietern","configureNewProvider":"Konfigurieren Sie einen neuen KI-Anbieter zur Verwendung mit Ihren Anwendungen.","providerLabel":"Anbieter","selectProvider":"Wählen Sie einen Anbieter aus","selectedProvider":"Ausgewählter Anbieter","authMethod":"Authentifizierungsmethode","apiKeyLabel":"API-Schlüssel","apiKeyRequired":"API-Schlüssel ist erforderlich","selectProviderRequired":"Bitte wählen Sie einen Anbieter aus","enterApiKey":"Geben Sie Ihren API-Schlüssel ein","apiKeySecure":"Ihr API-Schlüssel wird verschlüsselt und sicher gespeichert.","oauth2Connect":"Verbinden Sie sich mit OAuth2","oauth2Label":"OAuth2","oauth2Desc":"Verbinden Sie Ihr Konto mithilfe der OAuth2-Authentifizierung.","displayName":"Anzeigename","displayNamePlaceholder":"z. B. Produktions-API, Entwicklungsumgebung","displayNameHint":"Optional. Ein benutzerfreundlicher Name zur Identifizierung dieser Konfiguration.","active":"Aktiv","activeDescription":"Aktivieren Sie diesen Anbieter für die Verwendung in Ihren Anwendungen","cancel":"Abbrechen","createProvider":"Anbieter erstellen","failedCreate":"Anbieter konnte nicht erstellt werden","errorOccurred":"Es ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.","modelStatus":"Modellstatus","allModelsOperational":"Alle Modelle betriebsbereit","modelsWithIssues":"{count} Modell(e) mit Problemen","allModelsNormal":"Alle Modelle reagieren normal.","cooldownCleared":"Abklingzeit für {model} gelöscht","failedClearCooldown":"Die Abklingzeit konnte nicht gelöscht werden","loadingAvailability":"Modellverfügbarkeit wird geladen...","clearCooldown":"Klar","clearing":"Löschen...","until":"Bis {time}","providerTestFailed":"Anbietertest fehlgeschlagen","modeTest":"{mode} Test","passedCount":"{count} bestanden","failedCount":"{count} fehlgeschlagen","testedCount":"{count} getestet","millisecondsAbbr":"{value}ms","okShort":"Okay","errorShort":"FEHLER","noActiveConnectionsInGroup":"Für diese Gruppe wurden keine aktiven Verbindungen gefunden.","allTestsPassed":"Alle {total}-Tests bestanden","testSummary":"{passed}/{total} bestanden, {failed} fehlgeschlagen","nameLabel":"Name","prefixLabel":"Präfix","baseUrlLabel":"Basis-URL","apiTypeLabel":"API-Typ","prefixHint":"Erforderlich. Eindeutiges Präfix für Modellnamen.","nameHint":"Erforderlich. Eine benutzerfreundliche Bezeichnung für diesen Knoten.","baseUrlHint":"Erforderlich.  Basis-URL der Anbieter-API.","anthropicPrefixPlaceholder":"AC-Prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Verbindung validieren","validating":"Validierung...","connectionValid":"Verbindung ist gültig!","connectionFailed":"Verbindung fehlgeschlagen. Überprüfen Sie URL und Schlüssel.","testKeyLabel":"API-Schlüssel testen","testKeyPlaceholder":"sk-... (nur zur Validierung)","providerNotFound":"Anbieter nicht gefunden","deleteConnectionConfirm":"Diese Verbindung löschen?","failedSetAlias":"Alias konnte nicht festgelegt werden","failedSaveConnection":"Die Verbindung konnte nicht gespeichert werden","failedSaveConnectionRetry":"Die Verbindung konnte nicht gespeichert werden. Bitte versuchen Sie es erneut.","failedRetestConnection":"Die Verbindung konnte nicht erneut getestet werden","deleteCompatibleNodeConfirm":"Diesen {type} kompatiblen Knoten löschen?","anthropicCompatibleDetails":"Anthropic-kompatible Details","openaiCompatibleDetails":"Details zur OpenAI-Kompatibilität","messagesApi":"Nachrichten-API","responsesApi":"Antwort-API","chatCompletions":"Chat-Abschlüsse","importingModels":"Importieren...","importFromModels":"Import aus /models","clearAllModels":"Alle Modelle löschen","clearAllModelsConfirm":"Möchten Sie wirklich alle Modelle für diesen Anbieter löschen?","clearAllModelsSuccess":"Alle Modelle gelöscht","clearAllModelsFailed":"Modelle löschen fehlgeschlagen","addConnectionToImport":"Fügen Sie eine Verbindung hinzu, um den Import zu ermöglichen.","noModelsConfigured":"Keine Modelle konfiguriert","connectionCount":"{count} Verbindung(en)","fetchingModels":"Verfügbare Modelle werden abgerufen...","failedFetchModels":"Modelle konnten nicht abgerufen werden","noModelsFound":"Keine Modelle gefunden","importFailed":"Der Import ist fehlgeschlagen","noNewModelsAdded":"Es wurden keine neuen Modelle hinzugefügt.","adding":"Hinzufügen...","importingModelsTitle":"Modelle importieren","copyModel":"Modell kopieren","removeModel":"Modell entfernen","rateLimitProtected":"Geschützt","rateLimitUnprotected":"Ungeschützt","enableRateLimitProtection":"Klicken Sie hier, um den Ratenbegrenzungsschutz zu aktivieren","disableRateLimitProtection":"Klicken Sie hier, um den Ratenbegrenzungsschutz zu deaktivieren","productionKey":"Produktionsschlüssel","enterNewApiKey":"Geben Sie einen neuen API-Schlüssel ein","optional":"Optional","anthropicCompatibleName":"Anthropisch kompatibel","openaiCompatibleName":"OpenAI-kompatibel","failedImportModels":"Modelle konnten nicht importiert werden","noModelsReturnedFromEndpoint":"Vom /models-Endpunkt wurden keine Modelle zurückgegeben.","importingModelsProgress":"{current} von {total} Modellen werden importiert...","foundModelsStartingImport":"{count} Modelle gefunden. Import wird gestartet...","importingModelById":"{modelId} wird importiert...","importSuccessCount":"{count, plural, one {# model} other {# models}} erfolgreich importiert!","noNewModelsAddedExisting":"Es wurden keine neuen Modelle hinzugefügt (alle bereits vorhanden).","importDoneCount":"✓ Fertig! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Es ist ein unerwarteter Fehler aufgetreten","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"Nachrichten","responsesPath":"Antworten","chatCompletionsPath":"Chat/Abschlüsse","add":"Hinzufügen","edit":"Bearbeiten","delete":"Löschen","anthropic":"Anthropisch","openai":"OpenAI","singleConnectionPerCompatible":"Pro kompatiblem Knoten ist nur eine Verbindung zulässig. Fügen Sie einen weiteren Knoten hinzu, wenn Sie mehr Verbindungen benötigen.","connections":"Verbindungen","providerProxyTitleConfigured":"Anbieter-Proxy: {host}","configured":"konfiguriert","providerProxyConfigureHint":"Proxy für alle Verbindungen dieses Anbieters konfigurieren","providerProxy":"Anbieter-Proxy","noConnectionsYet":"Noch keine Verbindungen","addFirstConnectionHint":"Fügen Sie Ihre erste Verbindung hinzu, um loszulegen","addConnection":"Verbindung hinzufügen","availableModels":"Verfügbare Modelle","pageAutoRefresh":"Die Seite wird automatisch aktualisiert...","statusDisabled":"deaktiviert","statusConnected":"verbunden","statusRuntimeIssue":"Laufzeitproblem","statusAuthFailed":"Authentifizierung fehlgeschlagen","statusRateLimited":"Tarif begrenzt","statusNetworkIssue":"Netzwerkproblem","statusTestUnsupported":"Test nicht unterstützt","statusUnavailable":"nicht verfügbar","statusFailed":"gescheitert","statusError":"Fehler","oauthAccount":"OAuth-Konto","errorTypeRuntime":"Lokale Laufzeit","errorTypeUpstreamAuth":"Upstream-Authentifizierung","errorTypeMissingCredential":"Fehlender Ausweis","errorTypeRefreshFailed":"Aktualisierung fehlgeschlagen","errorTypeTokenExpired":"Token abgelaufen","errorTypeRateLimited":"Preis begrenzt","errorTypeUpstreamUnavailable":"Upstream nicht verfügbar","errorTypeNetworkError":"Netzwerkfehler","errorTypeTestUnsupported":"Test nicht unterstützt","errorTypeUpstreamError":"Upstream-Fehler","proxySourceGlobal":"Global","proxySourceProvider":"Anbieter","proxySourceKey":"Schlüssel","proxyConfiguredBySource":"Proxy ({source}): {host}","autoPriority":"Automatisch: {priority}","proxy":"Stellvertreter","retestAuthentication":"Authentifizierung erneut testen","retest":"Erneut testen","disableConnection":"Verbindung deaktivieren","enableConnection":"Verbindung aktivieren","reauthenticateConnection":"Authentifizieren Sie diese Verbindung erneut","proxyConfig":"Proxy-Konfiguration","aliasExistsAlert":"Alias „{alias}“ existiert bereits. Bitte verwenden Sie ein anderes Modell oder bearbeiten Sie den vorhandenen Alias.","openRouterAnyModelHint":"OpenRouter unterstützt jedes Modell. Fügen Sie Modelle hinzu und erstellen Sie Aliase für den schnellen Zugriff.","modelIdFromOpenRouter":"Modell-ID (von OpenRouter)","openRouterModelPlaceholder":"anthropisch/claude-3-opus","customModels":"Benutzerdefinierte Modelle","customModelsHint":"Fügen Sie Modell-IDs hinzu, die nicht in der Standardliste enthalten sind. Diese stehen für das Routing zur Verfügung.","modelId":"Modell-ID","customModelPlaceholder":"z.B. gpt-4,5-turbo","loading":"Laden...","removeCustomModel":"Benutzerdefiniertes Modell entfernen","noCustomModels":"Es wurden noch keine benutzerdefinierten Modelle hinzugefügt.","allSuggestedAliasesExist":"Alle vorgeschlagenen Aliase sind bereits vorhanden. Bitte wählen Sie ein anderes Modell oder entfernen Sie widersprüchliche Aliase.","failedSaveCustomModel":"Das benutzerdefinierte Modell konnte nicht gespeichert werden","modelAddedSuccess":"Modell {modelId} erfolgreich hinzugefügt","failedAddModelTryAgain":"Modell konnte nicht hinzugefügt werden. Bitte versuchen Sie es erneut.","failedSaveImportedModel":"Das importierte Modell konnte nicht in der benutzerdefinierten Datenbank gespeichert werden","failedImportModelsTryAgain":"Modelle konnten nicht importiert werden. Bitte versuchen Sie es erneut.","failedRemoveModelFromDatabase":"Das Modell konnte nicht aus der Datenbank entfernt werden","modelRemovedSuccess":"Modell erfolgreich entfernt","failedDeleteModelTryAgain":"Modell konnte nicht gelöscht werden. Bitte versuchen Sie es erneut.","compatibleModelsDescription":"Fügen Sie {type}-kompatible Modelle manuell hinzu oder importieren Sie sie vom Endpunkt /models.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"Die Validierung des API-Schlüssels ist fehlgeschlagen. Bitte überprüfen Sie Ihren Schlüssel und versuchen Sie es erneut.","addProviderApiKeyTitle":"Fügen Sie den API-Schlüssel {provider} hinzu","checking":"Überprüfen...","check":"Überprüfen","valid":"Gültig","invalid":"Ungültig","creating":"Erstellen...","validationChecksAnthropicCompatible":"Die Validierung prüft {provider} durch Überprüfung des API-Schlüssels.","validationChecksOpenAiCompatible":"Die Validierung prüft {provider} über /models auf Ihrer Basis-URL.","priorityLabel":"Priorität","saving":"Sparen...","save":"Speichern","editConnection":"Verbindung bearbeiten","accountName":"Kontoname","email":"E-Mail","healthCheckMinutes":"Gesundheitscheck (Min.)","healthCheckHint":"Proaktives Token-Aktualisierungsintervall. 0 = deaktiviert.","groupLabel":"Environment","groupPlaceholder":"e.g. eKaizen, Personal","failedTestConnection":"Die Verbindung konnte nicht getestet werden","failed":"Fehlgeschlagen","leaveBlankKeepCurrentApiKey":"Lassen Sie das Feld leer, um den aktuellen API-Schlüssel beizubehalten.","editCompatibleTitle":"Bearbeiten Sie {type} kompatibel","compatibleBaseUrlHint":"Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.","apiKeyForCheck":"API-Schlüssel (zur Überprüfung)","compatibleProdPlaceholder":"{type} Kompatibel (Prod)","providerTestTimeout":"Provider test timed out — too many connections to test at once","advancedSettings":"Advanced Settings","chatPathLabel":"Chat Endpoint Path","chatPathPlaceholder":"/chat/completions","chatPathHint":"Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)","modelsPathLabel":"Models Endpoint Path","modelsPathPlaceholder":"/models","modelsPathHint":"Custom models path for validation (e.g. /v4/models)","builtInModels":"Built-in models","builtInModelsHint":"Registry models for this provider. Use the pencil to set compatibility options.","normalizeToolCallIdLabel":"Normalize tool call IDs to 9 characters (e.g. Mistral)","preserveDeveloperRoleLabel":"Keep OpenAI Responses developer role (do not map to system)","compatAdjustmentsTitle":"Compatibility","compatButtonLabel":"Compatibility","compatToolIdShort":"Tool ID 9","compatDeveloperShort":"Developer role","compatDoNotPreserveDeveloper":"Do not preserve developer role","compatBadgeNoPreserve":"No preserve","compatProtocolLabel":"Client request protocol","compatProtocolHint":"These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).","compatProtocolOpenAI":"OpenAI Chat Completions","compatProtocolOpenAIResponses":"OpenAI Responses API","compatProtocolClaude":"Anthropic Messages","tokenRefreshed":"Token refreshed successfully","tokenRefreshFailed":"Token refresh failed","compatBadgeUpstreamHeaders":"Headers","compatUpstreamAddRow":"Add header","compatUpstreamHeaderName":"Header name","compatUpstreamHeaderValue":"Value","compatUpstreamHeadersHint":"High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.","compatUpstreamHeadersLabel":"Extra upstream headers","compatUpstreamRemoveRow":"Remove row","autoSync":"Auto-Sync","autoSyncTooltip":"Modellliste automatisch alle 24 Stunden aktualisieren (konfigurierbar über MODEL_SYNC_INTERVAL_HOURS)","autoSyncEnabled":"Auto-Sync aktiviert — Modelle werden regelmäßig aktualisiert","autoSyncDisabled":"Auto-Sync deaktiviert","autoSyncToggleFailed":"Auto-Sync umschalten fehlgeschlagen","allModelsAlreadyImported":"Alle Modelle sind bereits importiert","noNewModelsToImport":"Keine neuen Modelle zum Importieren — alle Modelle sind bereits in der Registry oder der Liste benutzerdefinierter Modelle","skippingExistingModels":"Überspringe {count} vorhandene Modelle"},"settings":{"title":"Einstellungen","general":"Allgemein","security":"Sicherheit","appearance":"Aussehen","routing":"Routenführung","cache":"Cache","resilience":"Belastbarkeit","systemPrompt":"Systemaufforderung","thinkingBudget":"Denkendes Budget","proxy":"Stellvertreter","pricing":"Preise","storage":"Lagerung","policies":"Richtlinien","ipFilter":"IP-Filter","comboDefaults":"Combo-Standardeinstellungen","fallbackChains":"Fallback-Ketten","changePassword":"Passwort ändern","enablePassword":"Passwort aktivieren","darkMode":"Dunkler Modus","lightMode":"Lichtmodus","systemTheme":"Systemthema","enableCache":"Cache aktivieren","cacheTTL":"Cache-TTL","maxCacheSize":"Maximale Cache-Größe","clearCache":"Cache leeren","cacheHits":"Cache-Treffer","cacheMisses":"Cache-Fehler","hitRate":"Trefferquote","cacheEntries":"Cache-Einträge","circuitBreaker":"Leistungsschalter","retryPolicy":"Wiederholungsrichtlinie","maxRetries":"Max. Wiederholungsversuche","retryDelay":"Wiederholungsverzögerung","timeoutMs":"Timeout (ms)","enableSystemPrompt":"Aktivieren Sie die Systemaufforderung","systemPromptText":"Systemaufforderungstext","enableThinking":"Denken aktivieren","maxThinkingTokens":"Max Thinking Tokens","enableProxy":"Proxy aktivieren","proxyUrl":"Proxy-URL","pricingRates":"Preisformat","currentPricing":"Aktuelle Preisübersicht","loadingPricing":"Preisdaten werden geladen...","noPricing":"Keine Preisdaten verfügbar","input":"Eingabe","output":"Ausgabe","cached":"Zwischengespeichert","reasoning":"Begründung","cacheCreation":"Cache-Erstellung","customPricing":"Individuelle Preise","databaseSize":"Datenbankgröße","backupDb":"Backup-Datenbank","restoreDb":"Datenbank wiederherstellen","exportData":"Daten exportieren","importData":"Daten importieren","clearData":"Alle Daten löschen","clearDataConfirm":"Dadurch werden alle Daten dauerhaft gelöscht. Bist du sicher?","enableRequestLogs":"Aktivieren Sie Anforderungsprotokolle","logRetention":"Protokollaufbewahrung","ipWhitelist":"IP-Whitelist","ipBlacklist":"IP-Blacklist","addIP":"IP hinzufügen","savedSuccessfully":"Einstellungen erfolgreich gespeichert","ai":"KI","advanced":"Fortgeschritten","localMode":"Lokaler Modus – Alle auf Ihrem Computer gespeicherten Daten","settingsSectionsAria":"Abschnitte „Einstellungen“.","switchThemes":"Wechseln Sie zwischen hellen und dunklen Themen","themeSelectionAria":"Themenauswahl","themeLight":"Licht","themeDark":"Dunkel","themeSystem":"System","hideHealthLogs":"Gesundheitsprüfungsprotokolle ausblenden","hideHealthLogsDesc":"Wenn diese Option aktiviert ist, werden [HealthCheck]-Meldungen in der Serverkonsole unterdrückt","themeAccent":"Themenfarbe","themeAccentDesc":"Wähle eine voreingestellte Farbe oder erstelle dein eigenes Thema mit einer Farbe","themeCreate":"Thema erstellen","themeCustom":"Benutzerdefiniertes Thema","themeBlue":"Blau","themeRed":"Rot","themeGreen":"Grün","themeViolet":"Violett","themeOrange":"Orange","themeCyan":"Cyan","promptCache":"Prompt-Cache","flushCache":"Cache leeren","flushing":"Spülen…","size":"Größe","hits":"Treffer","evictions":"Räumungen","loadingCacheStats":"Cache-Statistiken werden geladen…","globalProxy":"Globaler Proxy","globalProxyDesc":"Konfigurieren Sie einen globalen ausgehenden Proxy für alle API-Aufrufe. Einzelne Anbieter, Kombinationen und Schlüssel können dies außer Kraft setzen.","noGlobalProxy":"Kein globaler Proxy konfiguriert","globalLabel":"Global","configure":"Konfigurieren","globalSystemPrompt":"Globale Systemaufforderung","systemPromptDesc":"Wird in alle Anfragen auf Proxy-Ebene eingefügt","saved":"Gespeichert","systemPromptPlaceholder":"Geben Sie die Systemaufforderung ein, um alle Anfragen zu injizieren ...","systemPromptHint":"Diese Eingabeaufforderung wird der Systemnachricht jeder Anfrage vorangestellt. Wird für globale Anweisungen, Sicherheitsrichtlinien oder Antwortformatierungsregeln verwendet.","chars":"{count} Zeichen","thinkingBudgetTitle":"Denkendes Budget","thinkingBudgetDesc":"Kontrollieren Sie die Verwendung von KI-Begründungstoken für alle Anfragen","passthrough":"Passthrough","passthroughDesc":"Keine Änderungen – der Kunde kontrolliert das Denkbudget","auto":"Automatisch","autoDesc":"Entfernen Sie alle Denkkonfigurationen – lassen Sie den Anbieter entscheiden","custom":"Benutzerdefiniert","customDesc":"Legen Sie ein festes Token-Budget für alle Anfragen fest","adaptive":"Adaptiv","adaptiveDesc":"Skalieren Sie das Budget basierend auf der Komplexität der Anfrage","effortNone":"Keine (0 Token)","effortLow":"Niedrig (1.000 Token)","effortMedium":"Mittel (10.000 Token)","effortHigh":"Hoch (128.000 Token)","tokenBudget":"Token-Budget","tokens":"Token","baseEffortLevel":"Grundaufwandsstufe","adaptiveHint":"Der adaptive Modus skaliert ausgehend von dieser Basisebene basierend auf der Nachrichtenanzahl, der Tool-Nutzung und der Eingabeaufforderungslänge.","requireLogin":"Anmeldung erforderlich","requireLoginDesc":"Wenn aktiviert, erfordert das Dashboard ein Passwort. Wenn AUS, Zugriff ohne Anmeldung.","currentPassword":"Aktuelles Passwort","enterCurrentPassword":"Geben Sie das aktuelle Passwort ein","newPassword":"Neues Passwort","enterNewPassword":"Geben Sie ein neues Passwort ein","confirmPassword":"Bestätigen Sie das neue Passwort","confirmPasswordPlaceholder":"Bestätigen Sie das neue Passwort","passwordsNoMatch":"Passwörter stimmen nicht überein","passwordUpdated":"Passwort erfolgreich aktualisiert","failedUpdatePassword":"Das Passwort konnte nicht aktualisiert werden","errorOccurred":"Es ist ein Fehler aufgetreten","updatePassword":"Passwort aktualisieren","setPassword":"Passwort festlegen","apiEndpointProtection":"API-Endpunktschutz","requireAuthModels":"API-Schlüssel für /models erforderlich","requireAuthModelsDesc":"Wenn diese Option aktiviert ist, gibt der Endpunkt /v1/models für nicht authentifizierte Anforderungen 404 zurück. Verhindert die Modellerkennung durch nicht autorisierte Benutzer.","blockedProviders":"Gesperrte Anbieter","blockedProvidersDesc":"Verstecken Sie bestimmte Anbieter in der /v1/models-Antwort. Gesperrte Anbieter erscheinen nicht in den Modelllisten.","providersBlocked":"{count} Anbieter von /models blockiert","blockProviderTitle":"Blockieren Sie {provider}","unblockProviderTitle":"Entsperren Sie {provider}","routingStrategy":"Routing-Strategie","fillFirst":"Zuerst füllen","fillFirstDesc":"Verwenden Sie Konten in der Reihenfolge ihrer Priorität","roundRobin":"Round Robin","roundRobinDesc":"Gehen Sie alle Konten durch","p2c":"P2C","p2cDesc":"Wählen Sie zufällig zwei aus und verwenden Sie die gesündere","random":"Zufällig","randomDesc":"Zufälliges Konto bei jeder Anfrage","leastUsed":"Am wenigsten genutzt","leastUsedDesc":"Wählen Sie das zuletzt verwendete Konto aus","costOpt":"Kosten Opt","costOptDesc":"Bevorzugen Sie das günstigste verfügbare Konto","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each account once before reshuffling","stickyLimit":"Sticky-Limit","stickyLimitDesc":"Anrufe pro Konto vor dem Wechsel","modelAliases":"Modell-Aliase","modelAliasesTitle":"Modell-Aliase","modelAliasesDesc":"Platzhaltermuster zum Neuzuordnen von Modellnamen • Verwenden Sie * und ?","addCustomAlias":"Benutzerdefinierten Alias hinzufügen","deprecatedModelId":"Veraltete Modell-ID","newModelId":"Neue Modell-ID","customAliases":"Benutzerdefinierte Aliase","builtInAliases":"Integrierte Aliase","backgroundDegradationTitle":"Hintergrundaufgaben-Degradierung","backgroundDegradationDesc":"Erkennt automatisch Hintergrundaufgaben (Titel, Zusammenfassungen) und leitet an günstigere Modelle weiter","enableDegradation":"Hintergrund-Degradierung aktivieren","enableDegradationHint":"Wenn aktiviert, werden Hintergrundaufgaben wie Titelgenerierung und Zusammenfassungen automatisch an günstigere Modelle weitergeleitet","tasksDetected":"Aufgaben erkannt","degradationMap":"Modell-Degradierungskarte","premiumModel":"Premium-Modell","cheapModel":"Günstiges Modell","detectionPatterns":"Erkennungsmuster","newPattern":"z.B. \\"einen Titel generieren\\"","aliasPatternPlaceholder":"Claude-Sonett-*","aliasTargetPlaceholder":"claude-sonett-4-20250514","pattern":"Muster","targetModel":"Zielmodell","add":"+ Hinzufügen","session":"Sitzung","sessionDetailsAria":"Sitzungsdetails","status":"Status","authenticated":"Authentifiziert","guest":"Gast","loginTime":"Anmeldezeit","sessionAge":"Sitzungsalter","browser":"Browser","clearLocalData":"Lokale Daten löschen","logout":"Abmelden","clearLocalDataConfirm":"Alle lokalen Daten löschen? Dadurch werden Ihre Einstellungen zurückgesetzt.","unknown":"Unbekannt","systemActor":"System","ipAccessControl":"IP-Zugriffskontrolle","ipAccessControlDesc":"Blockieren oder erlauben Sie bestimmte IP-Adressen","ipModeDisabled":"Deaktiviert","ipModeBlacklist":"Schwarze Liste","ipModeWhitelist":"Whitelist","ipModeWhitelistPriority":"WL-Priorität","addIpAddress":"IP-Adresse hinzufügen","ipAddressPlaceholder":"192.168.1.0/24 oder 10.0.*.*","block":"+ Blockieren","allow":"+ Erlauben","blocked":"Blockiert ({count})","allowed":"Erlaubt ({count})","temporaryBans":"Vorübergehende Sperren ({count})","minLeft":"{min}m übrig","auditLog":"Audit-Protokoll","searchAuditLogs":"Audit-Logs durchsuchen...","failedLoadAuditLog":"Das Audit-Protokoll konnte nicht geladen werden","noAuditEvents":"Keine Prüfereignisse gefunden","action":"Aktion","actor":"Schauspieler","details":"Einzelheiten","time":"Zeit","fallbackChainsTitle":"Fallback-Ketten","fallbackChainsDesc":"Definieren Sie die Anbieter-Fallback-Reihenfolge pro Modell","addChain":"+ Kette hinzufügen","modelName":"Modellname","modelNamePlaceholder":"claude-sonett-4-20250514","providersCommaSeparated":"Anbieter (durch Kommas getrennt, nach Priorität geordnet)","providersCommaSeparatedPlaceholder":"anthropisch, openai, Zwillinge","createChain":"Kette erstellen","noFallbackChains":"Keine Fallback-Ketten","noFallbackChainsDesc":"Erstellen Sie eine Kette, um die Anbieter-Fallback-Reihenfolge für ein Modell zu definieren.","loadingFallbackChains":"Fallback-Ketten werden geladen...","deleteChainConfirm":"Fallback-Kette für „{model}“ löschen?","chainCreated":"Kette für {model} erstellt","chainDeleted":"Kette für {model} gelöscht","failedCreateChain":"Kette konnte nicht erstellt werden","failedDeleteChain":"Kette konnte nicht gelöscht werden","deleteChain":"Kette löschen","fillModelAndProviders":"Bitte geben Sie Modellnamen und Anbieter ein","addAtLeastOneProvider":"Fügen Sie mindestens einen Anbieter hinzu","comboDefaultsTitle":"Combo-Standardeinstellungen","globalComboConfig":"Globale Combo-Konfiguration","defaultStrategy":"Standardstrategie","defaultStrategyDesc":"Wird auf neue Combos ohne explizite Strategie angewendet","comboStrategyAria":"Combo-Strategie","priority":"Priorität","weighted":"Gewichtet","maxRetriesLabel":"Max. Wiederholungsversuche","retryDelayLabel":"Wiederholungsverzögerung (ms)","timeoutLabel":"Timeout (ms)","healthCheck":"Gesundheitscheck","healthCheckDesc":"Überprüfen Sie vorab die Verfügbarkeit des Anbieters","trackMetrics":"Verfolgen Sie Metriken","trackMetricsDesc":"Zeichnen Sie Metriken pro Kombinationsanforderung auf","providerOverrides":"Anbieterüberschreibungen","providerOverridesDesc":"Zeitüberschreitung und Wiederholungsversuche pro Anbieter außer Kraft setzen. Anbietereinstellungen überschreiben globale Standardeinstellungen.","providerMaxRetriesAria":"{provider} maximale Wiederholungsversuche","providerTimeoutAria":"{provider} Timeout ms","removeProviderOverrideAria":"Entfernen Sie die {provider}-Überschreibung","newProviderNamePlaceholder":"z.B. Google, openai...","newProviderNameAria":"Neuer Anbietername","retries":"wiederholt","ms":"Frau","saveComboDefaults":"Combo-Standardeinstellungen speichern","maxNestingDepth":"Maximale Verschachtelungstiefe","concurrencyPerModel":"Parallelität / Modell","queueTimeout":"Warteschlangen-Timeout (ms)","providerProfiles":"Anbieterprofile","providerProfilesDesc":"Separate Resilienzeinstellungen für OAuth-Anbieter (sitzungsbasiert) und API-Schlüsselanbieter (gemessen). OAuth-Anbieter haben aufgrund niedrigerer Ratenlimits strengere Schwellenwerte.","oauthProviders":"OAuth-Anbieter","apiKeyProviders":"API-Schlüsselanbieter","transientCooldown":"Vorübergehende Abklingzeit","rateLimitCooldown":"Abklingzeit der Ratenbegrenzung","maxBackoffLevel":"Max. Backoff-Level","cbThreshold":"CB-Schwelle","cbResetTime":"CB-Resetzeit","rateLimiting":"Ratenbegrenzung","rateLimitingDesc":"API-Schlüsselanbieter unterliegen automatisch einer Ratenbegrenzung mit sicheren Standardwerten. Grenzwerte werden aus Antwortheadern gelernt und passen sich im Laufe der Zeit an.","defaultSafetyNet":"Standard-Sicherheitsnetz","rpm":"U/min","minGap":"Min. Lücke","maxConcurrent":"Maximal gleichzeitig","activeLimiters":"Aktive Limiter","noActiveLimiters":"Noch keine aktiven Ratenbegrenzer.","reservoir":"Stausee","running":"Laufen","queued":"In der Warteschlange","circuitBreakers":"Leistungsschalter","breakerStateClosed":"Geschlossen","breakerStateOpen":"Offen","breakerStateHalfOpen":"Halboffen","tripped":"{count} ausgelöst","healthy":"{count} gesund","resetAll":"Alles zurücksetzen","noCircuitBreakers":"Noch keine Schutzschalter aktiv. Sie werden automatisch erstellt, wenn Anforderungen die Combo-Pipeline durchlaufen.","failures":"{count} Fehler(e)","policiesLocked":"Richtlinien und gesperrte Kennungen","allOperational":"Alle Systeme betriebsbereit – keine Aussperrungen oder ausgelösten Leistungsschalter","loadingPolicies":"Richtlinien werden geladen...","lockedIdentifiers":"Gesperrte Kennungen","unlockedIdentifier":"Entsperrt: {identifier}","sinceDate":"seit {date}","forceUnlock":"Entsperren erzwingen","unlocking":"Entsperren...","failedUnlock":"Entsperren fehlgeschlagen","failedLoadWithStatus":"Fehler beim Laden: {status}","failedLoadResilience":"Ausfallsicherheitsstatus konnte nicht geladen werden","saveFailed":"Speichern fehlgeschlagen","resetFailed":"Zurücksetzen fehlgeschlagen","loadingResilience":"Resilienzstatus wird geladen...","retry":"Versuchen Sie es noch einmal","systemStorage":"System & Speicher","allDataLocal":"Alle Daten werden lokal auf Ihrem Computer gespeichert","databasePath":"Datenbankpfad","exportDatabase":"Datenbank exportieren","exportAll":"Alle exportieren (.tar.gz)","importDatabase":"Datenbank importieren","confirmDbImport":"Bestätigen Sie den Datenbankimport","confirmDbImportDesc":"Dadurch werden alle aktuellen Daten durch den Inhalt von {file} ersetzt. Vor dem Import wird automatisch ein Backup erstellt.","yesImport":"Ja, Import","lastBackup":"Letzte Sicherung","noBackupYet":"Noch kein Backup","backupNow":"Jetzt sichern","backupRestore":"Sichern und Wiederherstellen","viewBackups":"Backups anzeigen","hide":"Verstecken","backupRetentionDesc":"Datenbank-Snapshots werden automatisch vor der Wiederherstellung und alle 15 Minuten erstellt, wenn sich Daten ändern. Aufbewahrung: 24 Stunden + 30 tägliche Backups mit intelligenter Rotation.","loadingBackups":"Backups werden geladen...","noBackupsYet":"Noch keine Backups verfügbar. Bei Datenänderungen werden automatisch Backups erstellt.","backupsAvailable":"{count} Backup(s) verfügbar","refresh":"Aktualisieren","confirm":"Bestätigen?","yes":"Ja","no":"Nein","restore":"Wiederherstellen","invalidFileType":"Ungültiger Dateityp. Es werden nur .sqlite-Dateien akzeptiert.","exportFailed":"Der Export ist fehlgeschlagen","exportFailedWithError":"Export fehlgeschlagen: {error}","fullExportFailedWithError":"Vollständiger Export fehlgeschlagen: {error}","backupCreated":"Backup erstellt: {file}","restoreSuccess":"Restauriert! {connections} Verbindungen, {nodes} Knoten, {combos} Combos, {apiKeys} API-Schlüssel.","importSuccess":"Datenbank importiert! {connections} Verbindungen, {nodes} Knoten, {combos} Combos, {apiKeys} API-Schlüssel.","justNow":"gerade jetzt","minutesAgo":"Vor {count}m","hoursAgo":"Vor {count}h","daysAgo":"Vor {count}d","backupReasonManual":"Handbuch","backupReasonPreRestore":"vor der Wiederherstellung","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Keine Änderungen seit der letzten Sicherung","backupFailed":"Die Sicherung ist fehlgeschlagen","restoreFailed":"Wiederherstellung fehlgeschlagen","importFailed":"Der Import ist fehlgeschlagen","errorDuringRestore":"Bei der Wiederherstellung ist ein Fehler aufgetreten","errorDuringImport":"Beim Import ist ein Fehler aufgetreten","modelPricing":"Modellpreise","modelPricingDesc":"Konfigurieren Sie die Kostensätze pro Modell. • Alle Preise in 1-Millionen-Dollar-Tokens","providers":"Anbieter","registry":"Registrierung","priced":"Preislich","searchProvidersModels":"Anbieter oder Modelle suchen...","showAll":"Alle anzeigen","noProvidersMatch":"Zu Ihrer Suche passen keine Anbieter.","howPricingWorks":"So funktioniert die Preisgestaltung","cacheWrite":"Cache-Schreiben","unsaved":"nicht gespeichert","resetDefaults":"Standardeinstellungen zurücksetzen","saveProvider":"Anbieter speichern","saving":"Sparen...","model":"Modell","models":"Modelle","moreProviders":"{count} weitere Anbieter","withPricing":"mit konfigurierter Preisgestaltung","policiesCircuitBreakers":"Richtlinien und Leistungsschalter","activeIssuesDetected":"Aktive Probleme erkannt","off":"Aus","resetPricingConfirm":"Alle Preise für {provider} auf die Standardwerte zurücksetzen?","pricingDescInput":"Eingabe: An das Modell gesendete Token","pricingDescOutput":"Ausgabe: Token generiert","pricingDescCached":"Zwischengespeichert: Wiederverwendete Eingabe (~50 % der Eingaberate)","pricingDescReasoning":"Begründung: Denktokens (greift auf Ausgabe zurück)","pricingDescCacheWrite":"Cache Write: Erstellen von Cache-Einträgen (fällt auf Input zurück)","pricingDescFormula":"Kosten = (Eingabe × Eingaberate) + (Ausgabe × Ausgaberate) + (zwischengespeichert × zwischengespeicherte_Rate) pro Million Token.","pricingSettingsTitle":"Preiseinstellungen","totalModels":"Gesamtmodelle","active":"Aktiv","costCalculation":"Kostenberechnung","costCalculationDesc":"Die Kosten werden basierend auf der Token-Nutzung und den für jedes Modell konfigurierten Preissätzen berechnet.","pricingFormat":"Preisformat","pricingFormatDesc":"Alle Preise sind in $/1 Mio. Token angegeben (Dollar pro Million Token).","tokenTypes":"Token-Typen","inputTokenDesc":"Standard-Prompt-Token","outputTokenDesc":"Abschluss-/Antworttoken","cachedTokenDesc":"Zwischengespeicherte Eingabetokens (typischerweise 50 % der Eingaberate)","reasoningTokenDesc":"Spezielle Argumentations-/Denk-Tokens (Fallback auf die Ausgaberate)","cacheCreationTokenDesc":"Token, die zum Erstellen von Cache-Einträgen verwendet werden (Fallback auf Eingaberate)","customPricingNote":"Sie können die Standardpreise für bestimmte Modelle überschreiben. Benutzerdefinierte Überschreibungen haben Vorrang vor automatisch erkannten Preisen.","editPricing":"Preise bearbeiten","viewFullDetails":"Vollständige Details anzeigen","themeCoral":"Koralle","cliFingerprint":"CLI Fingerprint Matching","cliFingerprintDesc":"Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.","cliFingerprintEnabled":"{count} provider(s) with CLI fingerprint active","enableFingerprintTitle":"Enable fingerprint for {provider}","disableFingerprintTitle":"Disable fingerprint for {provider}","routingAdvancedGuideTitle":"Erweiterte Routenführung","routingAdvancedGuideHint1":"Verwenden Sie Fill First für vorhersehbare Priorität, Round Robin für Fairness und P2C für Latenzstabilität.","routingAdvancedGuideHint2":"Wenn sich die Qualität/Kosten der Anbieter unterscheiden, beginnen Sie mit „Cost Opt“ für Hintergrundarbeit und „Least Used“ für ausgewogene Abnutzung.","comboDefaultsGuideTitle":"So optimieren Sie die Combo-Standardeinstellungen","comboDefaultsGuideHint1":"Halten Sie die Wiederholungsversuche bei Datenflüssen mit geringer Latenz gering. Erhöhen Sie das Timeout nur für Aufgaben mit langer Generierung.","comboDefaultsGuideHint2":"Verwenden Sie Anbieterüberschreibungen, wenn ein Anbieter ein anderes Timeout-/Wiederholungsverhalten als die globalen Standardwerte benötigt."},"translator":{"title":"Übersetzer","metaTitle":"Übersetzer-Spielplatz | OmniRoute","metaDescription":"Debuggen, testen und visualisieren Sie API-Formatübersetzungen zwischen Anbietern","playgroundTitle":"Übersetzerspielplatz","playground":"Spielplatz","realtime":"Echtzeit-Übersetzungsaktivität","chatTester":"Chat-Tester","testBench":"Prüfstand","liveMonitor":"Live-Monitor","modeDescriptionPlayground":"Fügen Sie einen beliebigen API-Anfragetext ein und sehen Sie, wie OmniRoute ihn zwischen Anbieterformaten übersetzt (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).","modeDescriptionChatTester":"Senden Sie echte Chat-Anfragen über OmniRoute und überprüfen Sie den gesamten Roundtrip: Eingabe, übersetzte Anfrage, Anbieterantwort und übersetzte Ausgabe.","modeDescriptionTestBench":"Führen Sie vordefinierte Szenarien aus und vergleichen Sie die Kompatibilität zwischen Anbietern und Modellen.","modeDescriptionLiveMonitor":"Beobachten Sie Übersetzungsereignisse in Echtzeit, während Anfragen über OmniRoute eingehen.","modeDescriptionFallback":"Debuggen, testen und visualisieren Sie, wie OmniRoute API-Anfragen zwischen Anbietern übersetzt.","recentTranslations":"Aktuelle Übersetzungen","noTranslations":"Noch keine Übersetzungen","source":"Quelle","target":"Ziel","time":"Zeit","model":"Modell","status":"Status","latency":"Latenz","totalTranslations":"Gesamtübersetzungen","successful":"Erfolgreich","errors":"Fehler","avgLatency":"Durchschnittliche Latenz","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"Live – Automatische Aktualisierung","paused":"Angehalten","eventsAppearHint":"Übersetzungsereignisse werden hier angezeigt, wenn Anforderungen über OmniRoute fließen. Verwenden Sie eine dieser Methoden, um Ereignisse zu generieren:","chatTesterTab":"Registerkarte „Chat-Tester“.","testBenchTab":"Registerkarte „Prüfstand“.","externalApiCalls":"Externe API-Aufrufe","ideCliIntegrations":"IDE/CLI-Integrationen","inMemoryNote":"Hinweis: Ereignisse werden im Speicher gespeichert und beim Neustart des Servers zurückgesetzt.","ok":"Okay","errorShort":"ERR","formatConverter":"Formatkonverter","formatConverterDescription":"Fügen Sie einen JSON-Anfragetext ein oder geben Sie ihn ein. Der Übersetzer erkennt das Quellformat automatisch und konvertiert es in das Zielformat. Verwenden Sie dies, um zu debuggen, wie OmniRoute Anfragen zwischen Formaten übersetzt (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).","input":"Eingabe","output":"Ausgabe","auto":"Automatisch","swapFormats":"Formate austauschen","translateAction":"Übersetzen","clear":"Klar","inputPlaceholder":"Fügen Sie hier einen Anfragetext ein oder wählen Sie unten eine Vorlage aus ...","exampleTemplates":"Beispielvorlagen","exampleTemplatesHint":"— Zum Laden klicken","templateLoadHint":"Die Vorlage lädt die Anfrage im Format {format}. Ändern Sie das Quellformat, um es in einem anderen Format zu laden.","compatibilityTester":"Kompatibilitätstester","compatibilityReport":"Kompatibilitätsbericht","testBenchDescription":"Führen Sie vordefinierte Szenarien aus (einfacher Chat, Tool-Aufruf usw.), um die Übersetzung und die Anbieterkompatibilität zu überprüfen. Wählen Sie ein Quellformat und einen Zielanbieter aus und führen Sie dann alle Tests durch, um einen Kompatibilitätsprozentsatz zu ermitteln. Verwenden Sie diese Funktion, um herauszufinden, welche Funktionen anbieterübergreifend funktionieren.","targetProvider":"Zielanbieter","runAllTests":"Führen Sie alle Tests aus","runTest":"Test ausführen","reRun":"Wiederholen","running":"Laufen...","passed":"bestanden","failed":"gescheitert","passedIconLabel":"✅Bestanden","chunks":"Brocken","scenarioSimpleChat":"Einfacher Chat","scenarioToolCalling":"Werkzeugaufruf","scenarioMultiTurn":"Multiturn","scenarioThinking":"Denken","scenarioSystemPrompt":"Systemaufforderung","scenarioStreaming":"Streaming","templateNames":{"simple-chat":"Einfacher Chat","tool-calling":"Werkzeugaufruf","multi-turn":"Multiturn","thinking":"Denken","system-prompt":"Systemaufforderung","streaming":"Streaming"},"templateDescriptions":{"simple-chat":"Einfache Textnachricht","tool-calling":"Funktions-/Tool-Aufruf","multi-turn":"Gespräch mit der Geschichte","thinking":"Erweitertes Denken / Argumentieren","system-prompt":"Komplexe Systemanweisungen","streaming":"SSE-Streaming-Anfrage"},"templatePayloads":{"simpleChat":{"system":"Sie sind ein hilfreicher Assistent.","userGreeting":"Hallo! Wie geht es dir heute?"},"toolCalling":{"userWeather":"Wie ist das Wetter in São Paulo?","toolDescription":"Erhalten Sie das aktuelle Wetter für einen Standort","cityNameDescription":"Stadtname"},"multiTurn":{"system":"Sie sind Codierungsassistent.","userInitial":"Schreiben Sie eine Funktion zum Sortieren eines Arrays in Python.","assistantExample":"Hier ist eine einfache Sortierfunktion:\\n\\n„Python\\ndef sort_array(arr):\\n Rückgabe sortiert(arr)\\n„","userFollowUp":"Sortieren Sie nun in absteigender Reihenfolge."},"thinking":{"question":"Wie groß ist die Summe der ersten 100 Primzahlen?"},"systemPrompt":{"systemInstruction":"Sie sind ein leitender Softwareentwickler mit Spezialisierung auf verteilte Systeme. Beantworten Sie Fragen präzise und nutzen Sie die Best Practices der Branche. Geben Sie bei Bedarf immer Codebeispiele an. Formatieren Sie Ihre Antworten mit Markdown.","question":"Wie setze ich ein Schutzschaltermuster um?"},"streaming":{"prompt":"Erzählen Sie mir eine kurze Geschichte über einen Roboter, der malen lernt."}},"openaiCompatibleLabel":"OpenAI-kompatibel","anthropicCompatibleLabel":"Anthropisch kompatibel","noTemplateForFormat":"Keine Vorlage für dieses Format","translationFailed":"Übersetzung fehlgeschlagen: {error}","pipelineDebugger":"Pipeline-Debugger","translationPipeline":"Übersetzungspipeline","pipelineVisualization":"Pipeline-Visualisierung","pipelineVisualizationHint":"Senden Sie eine Nachricht, um zu sehen, wie Ihre Anfrage durch Erkennung → Übersetzung → Anbieteranruf verläuft.","chatTesterDescription":"Senden Sie Nachrichten in einem bestimmten Clientformat und überprüfen Sie jeden Schritt der Übersetzungspipeline.","chatTesterFlow":"Client-Anfrage → Formaterkennung → OpenAI Intermediate → Anbieterformat → Antwort","clickStepToInspect":"Klicken Sie auf einen beliebigen Schritt, um die Daten in dieser Phase zu überprüfen.","clientFormat":"Client-Format","provider":"Anbieter","modelPlaceholder":"Wählen Sie einen Modellnamen aus oder geben Sie ihn ein...","sendMessageToSeePipeline":"Senden Sie eine Nachricht, um die Übersetzungspipeline anzuzeigen","chatMessageHintPrefix":"Ihre Nachricht wird als formatiert","chatMessageHintSuffix":"Anfrage, übersetzt durch die Pipeline und gesendet an den ausgewählten Anbieter.","youWithFormat":"Sie ({format})","assistant":"Assistent","typeMessage":"Geben Sie eine Nachricht ein...","send":"Senden","clientRequest":"Kundenanfrage","clientRequestDescription":"Der Anfragetext, wie ihn Ihr Kunde senden würde","formatDetected":"Format erkannt","formatDetectedDescription":"OmniRoute erkennt das API-Format automatisch anhand der Anforderungsstruktur","openaiIntermediate":"OpenAI-Mittelstufe","openaiIntermediateDescription":"Alle Formate werden zunächst auf das OpenAI-Format (die universelle Brücke) normalisiert.","providerFormat":"Anbieterformat","providerFormatDescription":"Das OpenAI-Format wird in das native Format des Anbieters übersetzt","providerResponse":"Antwort des Anbieters","providerResponseRawDescription":"Die Rohantwort der Anbieter-API","providerResponseSseDescription":"Der rohe SSE-Stream von der Anbieter-API","unexpectedError":"Es ist ein unerwarteter Fehler aufgetreten","error":"Fehler","errorMessage":"Fehler: {message}","requestFailed":"Die Anfrage ist fehlgeschlagen","noTextExtracted":"(Kein Text extrahiert)","liveMonitorDescriptionPrefix":"Zeigt Übersetzungsereignisse an, während API-Aufrufe über OmniRoute fließen. Ereignisse kommen aus dem In-Memory-Puffer (wird beim Neustart zurückgesetzt). Benutzen","liveMonitorDescriptionSuffix":"oder externe API-Aufrufe zum Generieren von Ereignissen."},"usage":{"title":"Nutzung","loggerTab":"Logger","proxyTab":"Stellvertreter","budgetManagement":"Budgetverwaltung","budgetSaved":"Budgetgrenzen eingespart","budgetSaveFailed":"Das Budget konnte nicht gespeichert werden","loadingBudgetData":"Budgetdaten werden geladen...","noApiKeysTitle":"Keine API-Schlüssel","noApiKeysDescription":"Fügen Sie zunächst API-Schlüssel hinzu, um Budgetgrenzen festzulegen.","apiKey":"API-Schlüssel","todaysSpend":"Heutige Ausgaben","thisMonth":"Diesen Monat","setLimits":"Grenzen setzen","dailyLimitUsd":"Tageslimit (USD)","monthlyLimitUsd":"Monatslimit (USD)","warningThresholdPercent":"Warnschwelle (%)","dailyLimitPlaceholder":"z.B. 5.00","monthlyLimitPlaceholder":"z.B. 50,00","warningThresholdPlaceholder":"80","saveLimits":"Grenzen speichern","budgetOk":"Budget OK – {remaining} verbleibend","budgetExceeded":"Budget überschritten – Anfragen werden möglicherweise blockiert","totalRequests":"Gesamtzahl der Anfragen","noDataYet":"Noch keine Daten","latency":"Latenz","latencyP50":"S. 50","latencyP95":"S. 95","latencyP99":"S. 99","promptCache":"Prompt-Cache","systemHealth":"Systemgesundheit","entries":"Einträge","activeCount":"{count} aktiv","openCircuitBreakersDetected":"Offene Leistungsschalter erkannt","hitRate":"Trefferquote","hitsMisses":"Treffer/Fehlschläge","circuitBreakers":"Leistungsschalter","lockedIPs":"Gesperrte IPs","lockoutsAutoRefreshHint":"Ratenbegrenzungssperren pro Modell • Automatische Aktualisierung 10 Sekunden","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} übrig","howItWorks":"Wie es funktioniert","howItWorksSubtitle":"Erfahren Sie, wie Bewertungen Ihre LLM-Antworten validieren","define":"Definieren","defineStepDescription":"Erstellen Sie Testfälle mit Eingabeaufforderungen und erwarteten Ausgabekriterien mithilfe von Strategien wie „Enthält“, „Regex“ oder „Genaue Übereinstimmung“.","run":"Lauf","runStepDescription":"Führen Sie Testfälle für Ihre LLM-Endpunkte über OmniRoute aus. Jeder Fall wird als echte API-Anfrage gesendet.","evaluate":"Bewerten","evaluateStepDescription":"Die Antworten werden mit den erwarteten Kriterien verglichen. Sehen Sie sich für jeden Fall das Bestehen/Nichtbestehen mit Latenzmetriken und detailliertem Feedback an.","evalSuites":"Evaluierungssuiten","evalSuitesHint":"Klicken Sie auf eine Suite, um Testfälle anzuzeigen, und führen Sie sie dann aus, um Ihre LLM-Endpunkte zu bewerten","evalsLoading":"Evaluierungssuiten werden geladen...","noEvalSuitesFound":"Keine Evaluierungssuiten gefunden","noEvalSuitesDescription":"Evaluierungssuiten können über die API oder im Code definiert werden. Sie testen Modellausgaben anhand erwarteter Ergebnisse mithilfe von Strategien wie „Contains“, „Regex“, „Exact Match“ und benutzerdefinierten Funktionen.","columnCase":"Fall","columnStatus":"Status","columnLatency":"Latenz","columnDetails":"Einzelheiten","columnModel":"Modell","columnStrategy":"Strategie","columnExpected":"Erwartet","statsSuites":"Suiten","statsTestCases":"Testfälle","statsModels":"Modelle","statsCoverage":"Abdeckung","statsStrategiesCount":"{count} Strategien","evaluationStrategies":"Bewertungsstrategien","modelsUnderTest":"Im Test befindliche Modelle","searchSuitesPlaceholder":"Suiten suchen...","passSuffix":"passieren","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Führen Sie die Evaluierung aus","runningProgress":"Ausführen von {current}/{total}...","passRate":"Erfolgsquote","summaryBreakdown":"{passed} bestanden · {failed} fehlgeschlagen · {total} insgesamt","passedIconLabel":"✅Bestanden","failedIconLabel":"❌ Fehlgeschlagen","detailsContains":"Enthält: „{term}“","detailsRegex":"Regex: {pattern}","detailsExpected":"Erwartet: „{expected}“","noResultsYet":"Noch keine Ergebnisse","testCasesCount":"Testfälle ({count})","noTestCasesDefined":"Keine Testfälle definiert","runEvalHint":"Klicken Sie auf „Auswertung ausführen“, um alle Fälle für Ihren LLM-Endpunkt auszuführen. Jeder Test sendet eine echte Anfrage über OmniRoute.","notifyNoTestCases":"Für diese Suite sind keine Testfälle definiert","notifyAllCasesPassed":"Alle {total} Fälle bestanden ✅","notifySomeCasesFailed":"{passed}/{total} bestanden, {failed} fehlgeschlagen","notifyEvalRunFailed":"Evaluierungslauf fehlgeschlagen","notifyEvalTitle":"Auswertung: {name}","modelEvals":"Modellbewertungen","evalsHeroDescription":"Testen und validieren Sie Ihre LLM-Endpunkte, indem Sie vordefinierte Evaluierungssuiten ausführen. Jede Suite enthält Testfälle, die echte Eingabeaufforderungen über OmniRoute senden und Antworten mit erwarteten Kriterien vergleichen. So können Sie Regressionen erkennen, Modelle vergleichen und die Antwortqualität anbieterübergreifend sicherstellen.","qualityValidation":"Qualitätsvalidierung","modelComparison":"Modellvergleich","regressionDetection":"Regressionserkennung","latencyBenchmarks":"Latenz-Benchmarks","modelLockouts":"Modellsperren","noLockouts":"Derzeit sind keine Modelle gesperrt","activeSessions":"Aktive Sitzungen","noSessions":"Keine aktiven Sitzungen","sessionsHint":"Sitzungen erscheinen als Anfragen, die über den Proxy fließen","sessionsTrackedHint":"Verfolgt über Anforderungs-Fingerprinting • Automatische Aktualisierung 5 Sekunden","session":"Sitzung","age":"Alter","requests":"Anfragen","connection":"Verbindung","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Anbieterbeschränkungen","noProviders":"Keine Anbieter verbunden","connectProvidersForQuota":"Stellen Sie über OAuth eine Verbindung zu Anbietern her, um Ihre API-Kontingentgrenzen und -Nutzung zu verfolgen.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(gefiltert aus {count})","autoRefresh":"Automatische Aktualisierung","refreshAll":"Alle aktualisieren","loadingQuotas":"Laden...","account":"Konto","modelQuotas":"Modellkontingente","lastUsed":"Zuletzt verwendet","actions":"Aktionen","refreshQuota":"Kontingent aktualisieren","today":"Heute","tomorrow":"Morgen","dayTimeFormat":"{day}, {time}","inDuration":"in {duration}","notApplicable":"N/A","rawPlanWithValue":"Rohplan: {plan}","noPlanFromProvider":"Kein Plan vom Anbieter","noQuotaData":"Keine Quotendaten","ungrouped":"Ungrouped","viewFlat":"Flat","viewByEnvironment":"By Environment","noQuotaDataAvailable":"Keine Quotendaten verfügbar","noAccountsForTierFilter":"Für den Stufenfilter wurden keine Konten gefunden","tierAll":"Alle","tierEnterprise":"Unternehmen","tierTeam":"Team","tierBusiness":"Geschäft","tierUltra":"Ultra","tierPro":"Profi","tierPlus":"Plus","tierFree":"Kostenlos","tierUnknown":"Unbekannt"},"modals":{"waitingAuth":"Warten auf Autorisierung","verificationUrl":"Verifizierungs-URL","yourCode":"Ihr Code","remoteAccess":"Fernzugriff:","connectedSuccess":"Erfolgreich verbunden!","connectionFailed":"Verbindung fehlgeschlagen","chooseAuthMethod":"Wählen Sie Ihre Authentifizierungsmethode:","awsBuilderId":"AWS Builder-ID","awsIamIdentity":"AWS IAM Identity Center","googleAccount":"Google-Konto","githubAccount":"GitHub-Konto","importToken":"Token importieren","pasteToken":"Aktualisierungstoken aus der Kiro-IDE einfügen.","awsRegion":"AWS-Region","autoDetecting":"Automatische Erkennung von Token...","readingFromCache":"Lesen aus dem AWS SSO-Cache","readingFromCursor":"Lesen aus der Cursor-IDE-Datenbank","initializing":"Initialisierung...","pricingConfig":"Preiskonfiguration","loadingPricing":"Preisdaten werden geladen...","pricingRatesFormat":"Preisformat","noPricingData":"Keine Preisdaten verfügbar","noModelsFound":"Keine Modelle gefunden"},"loggers":{"allProviders":"Alle Anbieter","allModels":"Alle Modelle","allAccounts":"Alle Konten","allApiKeys":"Alle API-Schlüssel","allTypes":"Alle Typen","allLevels":"Alle Ebenen","modelAZ":"Modell A-Z","modelZA":"Modell Z-A","loadingLogs":"Protokolle werden geladen...","loadingProxyLogs":"Proxy-Protokolle werden geladen...","noLogEntries":"Keine Protokolleinträge gefunden","noPayloadData":"Für diesen Protokolleintrag sind keine Nutzdaten verfügbar.","proxyEvent":"Proxy-Ereignis","proxy":"Stellvertreter","level":"Ebene","directNative":"Direkt (nativ)","combo":"Kombi","inputTokens":"Ich:","outputTokens":"O:"},"stats":{"usageOverview":"Nutzungsübersicht","outputTokens":"Ausgabetoken","totalCost":"Gesamtkosten","usageByModel":"Nutzung nach Modell","usageByAccount":"Nutzung nach Konto","failedToLoad":"Nutzungsstatistiken konnten nicht geladen werden.","tokenHealth":"Token-Gesundheit","totalOAuth":"Gesamt-OAuth","healthy":"Gesund","warning":"Warnung","errored":"Fehlerhaft","lastCheck":"Letzte Kontrolle","noData":"Keine Daten","share":"Teilen","unableToLoad":"Systemmetriken können nicht geladen werden","product":"Produkt","resources":"Ressourcen","company":"Unternehmen"},"auth":{"welcome":"Willkommen","signIn":"Melden Sie sich an","enterPassword":"Geben Sie Ihr Passwort ein, um fortzufahren","password":"Passwort","unifiedProxy":"Einheitlicher KI-API-Proxy","unifiedAiApiProxy":"Einheitlicher KI-API-Proxy","unifiedAiApiProxyDesc":"Leiten Sie Anfragen über einen einzigen Endpunkt an mehrere KI-Anbieter weiter. Integrierter Lastausgleich, Failover und Nutzungsverfolgung.","passwordNotEnabled":"Der Passwortschutz ist nicht aktiviert","loading":"Laden...","invalidPassword":"Ungültiges Passwort","errorOccurredRetry":"Es ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.","configureInstance":"Lassen Sie uns Ihre OmniRoute-Instanz konfigurieren","runOnboardingWizard":"Führen Sie den Onboarding-Assistenten aus, um Ihr Passwort einzurichten und Ihren ersten KI-Anbieter zu verbinden.","startOnboarding":"Beginnen Sie mit dem Onboarding","secureYourInstance":"Sichern Sie Ihre Instanz","setPasswordDescription":"Legen Sie ein Passwort fest, um Ihr Dashboard zu schützen und Ihre API-Endpunkte vor unbefugtem Zugriff zu schützen.","configurePassword":"Passwort konfigurieren","continue":"Weiter","windowWillClose":"Dieses Fenster wird automatisch geschlossen...","closeTabNow":"Sie können diesen Tab jetzt schließen.","copyUrlManual":"Kopieren Sie die URL aus der Adressleiste und fügen Sie sie in die Anwendung ein.","accessDeniedDescription":"Sie haben keine Berechtigung, auf diese Ressource zuzugreifen. Überprüfen Sie Ihren API-Schlüssel oder wenden Sie sich an den Administrator.","goToDashboard":"Gehen Sie zum Dashboard","featureMultiProviderTitle":"Multi-Provider","featureMultiProviderDesc":"OpenAI, Anthropic, Google und mehr","featureLoadBalancingTitle":"Lastausgleich","featureLoadBalancingDesc":"Verteilen Sie Anfragen intelligent","featureUsageTrackingTitle":"Nutzungsverfolgung","featureUsageTrackingDesc":"Überwachen Sie Kosten und Token","resetPassword":"Passwort zurücksetzen","resetDescription":"Wählen Sie eine Methode, um den Zugriff auf Ihr Dashboard wiederherzustellen","stopServer":"Stoppen Sie den OmniRoute-Server","processing":"Verarbeitung...","pleaseWait":"Bitte warten Sie, während wir die Autorisierung abschließen.","authSuccess":"Autorisierung erfolgreich!","copyUrl":"Kopieren Sie diese URL","accessDenied":"Zugriff verweigert","methodCliTitle":"Methode 1: CLI-Reset","methodCliDescription":"Führen Sie den folgenden Befehl auf dem Server aus, auf dem OmniRoute ausgeführt wird:","methodCliHint":"Dadurch werden Sie aufgefordert, ein neues Passwort festzulegen. Der Server muss zuerst gestoppt werden.","methodManualTitle":"Methode 2: Manuelles Zurücksetzen","methodManualDescription":"Löschen Sie das Passwort aus der Datenbank und legen Sie beim Start ein neues fest:","setPasswordInYour":"Legen Sie ein neues Passwort in Ihrer","fileLabelSuffix":"Datei:","newPasswordPlaceholder":"ihr_neues_passwort","deleteSettingsFile":"Löschen","orRemovePasswordHashField":"oder entfernen Sie das Feld „passwordHash“.","restartServerWithNewPassword":"Starten Sie den Server neu – er verwendet das neue Passwort","backToLogin":"Zurück zum Anmelden","forgotPassword":"Passwort vergessen?","defaultPasswordHint":"Default password: 123456 (unless INITIAL_PASSWORD was set)","waitingForAuthorization":"Warte auf Autorisierung...","waitingForGoogleAuthorization":"Warte auf Google-Autorisierung...","waitingForOpenAIAuthorization":"Warte auf OpenAI-Autorisierung...","waitingForAntigravityAuthorization":"Warte auf Antigravity-Autorisierung...","waitingForIFlowAuthorization":"Warte auf iFlow-Autorisierung...","exchangingCodeForTokens":"Tausche Code gegen Token aus...","Authorization":"Autorisierung","Content-Disposition":"Inhaltliche Disposition"},"landing":{"brandName":"OmniRoute","navigateHome":"Navigieren Sie zur Startseite","toggleMenu":"Menü umschalten","featuresLink":"Funktionen","docsLink":"Dokumente","github":"GitHub","versionLive":"v1.0 ist jetzt live","oneEndpoint":"Ein Endpunkt für","allProviders":"Alle KI-Anbieter","heroDescription":"KI-Endpunkt-Proxy mit Web-Dashboard – Eine JavaScript-Portierung von CLIProxyAPI. Funktioniert nahtlos mit Claude Code, OpenAI Codex, Cline, RooCode und anderen CLI-Tools.","getStarted":"Legen Sie los","viewOnGithub":"Auf GitHub ansehen","powerfulFeatures":"Leistungsstarke Funktionen","featuresSubtitle":"Alles, was Sie zum Verwalten Ihrer KI-Infrastruktur benötigen, an einem Ort, skalierbar.","featureUnifiedEndpointTitle":"Einheitlicher Endpunkt","featureUnifiedEndpointDesc":"Greifen Sie über eine einzige Standard-API-URL auf alle Anbieter zu.","featureEasySetupTitle":"Einfache Einrichtung","featureEasySetupDesc":"Mit dem Befehl npx können Sie in wenigen Minuten loslegen.","featureModelFallbackTitle":"Modell-Fallback","featureModelFallbackDesc":"Wechseln Sie automatisch den Anbieter bei Ausfall oder hoher Latenz.","featureUsageTrackingTitle":"Nutzungsverfolgung","featureUsageTrackingDesc":"Detaillierte Analysen und Kostenüberwachung für alle Modelle.","featureOAuthApiKeysTitle":"OAuth- und API-Schlüssel","featureOAuthApiKeysDesc":"Verwalten Sie Anmeldeinformationen sicher in einem Tresor.","featureCloudSyncTitle":"Cloud-Synchronisierung","featureCloudSyncDesc":"Synchronisieren Sie Ihre Konfigurationen sofort geräteübergreifend.","featureCliSupportTitle":"CLI-Unterstützung","featureCliSupportDesc":"Funktioniert mit Claude Code, Codex, Cline, Cursor und mehr.","featureDashboardTitle":"Armaturenbrett","featureDashboardDesc":"Visuelles Dashboard für Echtzeit-Verkehrsanalyse.","howItWorks":"So funktioniert OmniRoute","howItWorksDescription":"Die Daten fließen nahtlos von Ihrer Anwendung über unsere intelligente Routing-Ebene zum besten Anbieter für die jeweilige Aufgabe.","howItWorksStep1Title":"1. CLI und SDKs","howItWorksStep1Description":"Ihre Anfragen beginnen mit Ihren bevorzugten Tools oder unserem einheitlichen SDK. Ändern Sie einfach die Basis-URL.","howItWorksStep2Title":"2. OmniRoute-Hub","howItWorksStep2Description":"Unsere Engine analysiert die Eingabeaufforderung, überprüft den Zustand des Anbieters und leitet Routen auf niedrigste Latenz oder Kosten weiter.","howItWorksStep3Title":"3. KI-Anbieter","howItWorksStep3Description":"Die Anfrage wird von OpenAI, Anthropic, Gemini oder anderen sofort erfüllt.","getStartedIn30Seconds":"Beginnen Sie in 30 Sekunden","getStartedDescription":"Installieren Sie OmniRoute, konfigurieren Sie Ihre Anbieter über das Web-Dashboard und beginnen Sie mit der Weiterleitung von KI-Anfragen.","installOmniRoute":"Installieren Sie OmniRoute","installStepDescription":"Führen Sie den Befehl npx aus, um den Server sofort zu starten","openDashboard":"Öffnen Sie das Dashboard","openDashboardStepDescription":"Konfigurieren Sie Anbieter und API-Schlüssel über die Weboberfläche","routeRequests":"Routenanfragen","routeRequestsStepDescription":"Richten Sie Ihre CLI-Tools auf {endpoint}","terminal":"Terminal","copy":"Kopieren","copied":"✓ Kopiert","startingOmniRoute":"OmniRoute wird gestartet...","serverRunningOnLabel":"Server läuft weiter","dashboardLabel":"Armaturenbrett","readyToRoute":"Bereit zum Routen! ✓","configureProvidersNote":"📝 Konfigurieren Sie Anbieter im Dashboard oder verwenden Sie Umgebungsvariablen","dataLocation":"Datenspeicherort:","dataLocationMacLinux":" macOS/Linux:","dataLocationWindows":" Windows:","product":"Produkt","dashboardLink":"Armaturenbrett","changelog":"Änderungsprotokoll","resources":"Ressourcen","documentation":"Dokumentation","npm":"NPM","legal":"Legal","mitLicense":"MIT-Lizenz","footerTagline":"Der einheitliche Endpunkt für die KI-Generierung. Verbinden, leiten und verwalten Sie Ihre KI-Anbieter ganz einfach.","copyright":"© {year} OmniRoute. Alle Rechte vorbehalten.","flowToolClaudeCode":"Claude Code","flowToolOpenAICodex":"OpenAI-Codex","flowToolCline":"Cline","flowToolCursor":"Cursor","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Anthropisch","flowProviderGemini":"Zwillinge","flowProviderGithubCopilot":"GitHub-Copilot","interactiveDiagram":"Interaktives Diagramm auf dem Desktop sichtbar","ctaTitle":"Sind Sie bereit, Ihre KI-Infrastruktur zu vereinfachen?","ctaDescription":"Schließen Sie sich Entwicklern an, die ihre KI-Integrationen mit OmniRoute optimieren. Open Source und kostenlos zu starten.","startFree":"Kostenlos starten","readDocumentation":"Dokumentation lesen"},"docs":{"title":"Dokumentation","quickStart":"Schnellstart","features":"Funktionen","supportedProviders":"Unterstützte Anbieter","supportedProvidersToc":"Anbieter","commonUseCases":"Häufige Anwendungsfälle","clientCompatibility":"Client-Kompatibilität","protocolsToc":"Protokolle","apiReference":"API-Referenz","method":"Methode","path":"Pfad","notes":"Notizen","modelPrefixes":"Modellpräfixe","prefix":"Präfix","troubleshooting":"Fehlerbehebung","supportsChat":"Unterstützt sowohl Chat- als auch Antwortendpunkte.","oauthAutoRefresh":"OAuth-Verbindung mit automatischer Token-Aktualisierung.","fullStreaming":"Volle Streaming-Unterstützung für alle Modelle.","docsLabel":"Dokumente","docsHeroDescription":"KI-Gateway für LLMs mit mehreren Anbietern. Ein Endpunkt für OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor und über 20 weitere Anbieter.","openDashboard":"Öffnen Sie das Dashboard","endpointPage":"Endpunktseite","github":"GitHub","reportIssue":"Problem melden","onThisPage":"Auf dieser Seite","documentationVersion":"Dokumentation – v{version}","quickStartStep1Title":"1. Installieren und ausführen","quickStartStep1Prefix":"Lauf","quickStartStep1Middle":"oder von GitHub klonen und ausführen","quickStartStep2Title":"2. API-Schlüssel erstellen","quickStartStep2Text":"Gehen Sie zu Endpunkt -> Registrierte Schlüssel. Generieren Sie einen Schlüssel pro Umgebung.","quickStartStep3Title":"3. Anbieter verbinden","quickStartStep3Text":"Fügen Sie Anbieterkonten über OAuth-Login, API-Schlüssel oder kostenlose automatische Verbindung hinzu.","quickStartStep4Title":"4. Legen Sie die Client-Basis-URL fest","quickStartStep4Prefix":"Verweisen Sie Ihren IDE- oder API-Client auf","quickStartStep4Suffix":"Verwenden Sie beispielsweise das Provider-Präfix","featureRoutingTitle":"Multi-Provider-Routing","featureRoutingText":"Leiten Sie Anfragen über einen einzigen OpenAI-kompatiblen Endpunkt an über 30 KI-Anbieter weiter. Unterstützt Chat-, Antwort-, Audio- und Bild-APIs.","featureCombosTitle":"Combos und Balancing","featureCombosText":"Erstellen Sie Modellkombinationen mit Fallback-Ketten und Ausgleichsstrategien: Round-Robin, Priorität, Zufall, am wenigsten genutzt und kostenoptimiert.","featureUsageTitle":"Nutzungs- und Kostenverfolgung","featureUsageText":"Echtzeit-Token-Zählung, Kostenberechnung pro Anbieter/Modell und detaillierte Nutzungsaufschlüsselung nach API-Schlüssel und Konto.","featureAnalyticsTitle":"Analytics-Dashboard","featureAnalyticsText":"Visuelle Analysen mit Diagrammen für Anfragen, Token, Fehler, Latenz, Kosten und Modellpopularität im Zeitverlauf.","featureHealthTitle":"Gesundheitsüberwachung","featureHealthText":"Live-Zustandsprüfungen, Anbieterstatus, Leistungsschalterzustände und automatische Erkennung von Ratengrenzen mit exponentiellem Backoff.","featureCliTitle":"CLI-Tools","featureCliText":"Verwalten Sie IDE-Konfigurationen, exportieren/importieren Sie Backups, entdecken Sie Codex-Profile und konfigurieren Sie Einstellungen über das Dashboard.","featureSecurityTitle":"Sicherheit und Richtlinien","featureSecurityText":"API-Schlüsselauthentifizierung, IP-Filterung, Prompt-Injection-Guard, Domänenrichtlinien, Sitzungsverwaltung und Audit-Protokollierung.","featureCloudSyncTitle":"Cloud-Synchronisierung","featureCloudSyncText":"Synchronisieren Sie Ihre Konfiguration mit Cloudflare Workers für den Fernzugriff mit verschlüsselten Anmeldeinformationen und automatischem Failover.","providersAcrossConnectionTypes":"{count}-Anbieter über drei Verbindungstypen hinweg.","manageProviders":"Anbieter verwalten","providersCount":"{count} Anbieter","providerTypeFree":"Kostenloses Kontingent","providerTypeOAuth":"OAuth","providerTypeApiKey":"API-Schlüssel","useCaseSingleEndpointTitle":"Ein einziger Endpunkt für viele Anbieter","useCaseSingleEndpointText":"Verweisen Sie Clients auf eine Basis-URL und leiten Sie sie nach Modellpräfix weiter (z. B. gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Fallback und Modellwechsel mit Combos","useCaseFallbackText":"Erstellen Sie Kombinationsmodelle im Dashboard und halten Sie die Clientkonfiguration stabil, während die Anbieter intern rotieren.","useCaseUsageVisibilityTitle":"Nutzung, Kosten und Debug-Sichtbarkeit","useCaseUsageVisibilityText":"Verfolgen Sie Token und Kosten nach Anbieter, Konto und API-Schlüssel auf den Registerkarten „Nutzung“ und „Analyse“.","clientCherryStudioTitle":"Kirschstudio","baseUrlLabel":"Basis-URL","chatEndpointLabel":"Chat-Endpunkt","modelRecommendationLabel":"Modellempfehlung: explizites Präfix","clientCodexTitle":"Codex/GitHub-Copilot-Modelle","clientCodexBullet1":"Verwenden Sie Modell-IDs mit","clientCodexBullet2":"Modelle der Codex-Familie leiten automatisch zu","clientCodexBullet3":"Nicht-Codex-Modelle bleiben bestehen","clientCursorTitle":"Cursor-IDE","clientCursorBullet1":"Benutzen","clientCursorBullet1Suffix":"Präfix für Cursor-Modelle.","clientCursorBullet2":"OAuth-Verbindung – Anmeldung über die Anbieterseite.","clientClaudeTitle":"Claude Code / Antigravitation","clientClaudeBullet1Prefix":"Benutzen","clientClaudeBullet1Middle":"(Claude) oder","clientClaudeBullet1Suffix":"Präfix (Antigravitation).","protocolsTitle":"Protokolle: MCP und A2A","protocolsDescription":"OmniRoute stellt zusätzlich zu OpenAI-kompatiblen APIs zwei Betriebsprotokolle zur Verfügung: MCP für die Tool-Ausführung und A2A für Agent-zu-Agent-Workflows.","protocolMcpTitle":"MCP (Model Context Protocol)","protocolMcpDesc":"Verwenden Sie MCP über Standard, damit Kunden OmniRoute-Tools mit Audit-Transparenz entdecken und aufrufen können.","protocolMcpStep1":"Starten Sie den MCP-Transport mit `omniroute --mcp`.","protocolMcpStep2":"Weisen Sie Ihren MCP-Client auf stdio transport hin.","protocolMcpStep3":"Rufen Sie `omniroute_get_health` und `omniroute_list_combos` auf, um die Konnektivität zu überprüfen.","protocolA2aTitle":"A2A (Agent2Agent)","protocolA2aDesc":"Verwenden Sie A2A JSON-RPC, um Aufgaben synchron oder per SSE-Streaming zu übermitteln.","protocolA2aStep1":"Lesen Sie `/.well-known/agent.json` für die Agentenerkennung.","protocolA2aStep2":"Senden Sie `message/send`- oder `message/stream`-Anfragen an `POST /a2a`.","protocolA2aStep3":"Verwalten Sie den Aufgabenlebenszyklus mit `tasks/get` und `tasks/cancel`.","protocolTroubleshootingTitle":"Protocol Troubleshooting","protocolTroubleshooting1":"Wenn der MCP-Status offline ist, überprüfen Sie, ob der stdio-Prozess ausgeführt wird und die Heartbeat-Datei aktualisiert wird.","protocolTroubleshooting2":"Wenn A2A-Aufgaben in `working` bleiben, überprüfen Sie `/api/a2a/tasks/:id` und streamen Sie Ereignisse auf den Endstatus.","protocolTroubleshooting3":"Verwenden Sie `/dashboard/mcp` und `/dashboard/a2a` für betriebliche Kontrollen und Audit-Transparenz.","endpointChatNote":"OpenAI-kompatibler Chat-Endpunkt (Standard).","endpointResponsesNote":"Antwort-API-Endpunkt (Codex, O-Serie).","endpointModelsNote":"Musterkatalog für alle angeschlossenen Anbieter.","endpointAudioNote":"Audiotranskription (Deepgram, AssemblyAI).","endpointImagesNote":"Bilderzeugung (NanoBanana).","endpointRewriteChatNote":"Rewrite-Helper für Clients ohne /v1.","endpointRewriteResponsesNote":"Hilfsprogramm für Antworten ohne /v1 umschreiben.","endpointRewriteModelsNote":"Hilfsprogramm für die Modellerkennung ohne /v1 umschreiben.","modelPrefixesDescriptionStart":"Verwenden Sie das Anbieterpräfix vor dem Modellnamen, um an einen bestimmten Anbieter weiterzuleiten. Beispiel:","modelPrefixesDescriptionEnd":"Routen zu GitHub Copilot.","provider":"Anbieter","type":"Typ","troubleshootingModelRouting":"Wenn der Client beim Modellrouting fehlschlägt, verwenden Sie einen expliziten Anbieter/ein explizites Modell (z. B. gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Wenn Sie mehrdeutige Modellfehler erhalten, wählen Sie ein Anbieterpräfix anstelle einer bloßen Modell-ID.","troubleshootingCodexFamily":"Behalten Sie für Modelle der GitHub Codex-Familie das Modell bei gh/codex-model; Der Router wählt /responses automatisch aus.","troubleshootingTestConnection":"Verwenden Sie Dashboard > Anbieter > Verbindung testen, bevor Sie Tests mit IDEs oder externen Clients durchführen.","troubleshootingCircuitBreaker":"Wenn ein Anbieter anzeigt, dass der Leistungsschalter geöffnet ist, warten Sie auf die Abklingzeit oder schauen Sie auf der Seite „Zustand“ nach, um Einzelheiten zu erfahren.","troubleshootingOAuth":"Führen Sie bei OAuth-Anbietern eine erneute Authentifizierung durch, wenn die Token ablaufen. Überprüfen Sie die Statusanzeige der Anbieterkarte.","managementApiReference":"Management API Reference","managementApiDescription":"Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.","mgmtProxiesListNote":"List saved proxy registry items (supports pagination).","mgmtProxiesCreateNote":"Create a reusable proxy item in the registry.","mgmtProxiesHealthNote":"Get 24h/rolling health metrics per saved proxy from proxy logs.","mgmtProxiesBulkAssignNote":"Assign or clear one proxy across many scope IDs in one request.","mgmtAssignmentsListNote":"List proxy assignments by scope, scope_id, or proxy_id.","mgmtAssignmentsUpdateNote":"Assign or clear proxy for global/provider/account/combo scope.","mgmtLegacyMigrationNote":"Import legacy proxyConfig maps into registry assignments.","endpointSpeechNote":"Sprachsynthese (ElevenLabs, OpenAI TTS).","endpointEmbeddingsNote":"Text-Embedding-Generierung (OpenAI, Cohere, Voyage)."},"legal":{"privacyPolicy":"Datenschutzrichtlinie","termsOfService":"Nutzungsbedingungen","providerConfigurations":"Anbieterkonfigurationen","apiKeys":"API-Schlüssel","usageLogs":"Nutzungsprotokolle","applicationSettings":"Anwendungseinstellungen","viewExportAnalytics":"Nutzungsanalysen anzeigen und exportieren","clearHistory":"Nutzungsverlauf jederzeit löschen","configureRetention":"Konfigurieren Sie Protokollaufbewahrungsrichtlinien","backupRestore":"Sichern Sie Ihre Datenbank und stellen Sie sie wieder her","privacyMetadataTitle":"Datenschutzrichtlinie | OmniRoute","privacyMetadataDescription":"Datenschutzrichtlinie für den OmniRoute AI API-Proxy-Router.","termsMetadataTitle":"Nutzungsbedingungen | OmniRoute","termsMetadataDescription":"Nutzungsbedingungen für den OmniRoute AI API-Proxy-Router.","backToHome":"Zurück nach Hause","lastUpdated":"Letzte Aktualisierung: {date}","policyLastUpdatedDate":"13. Februar 2026","listSeparator":"-","questionsVisit":"Fragen? Besuchen Sie unsere","githubRepository":"GitHub-Repository","privacySection1Title":"1. Local-First-Architektur","privacySection1Text":"OmniRoute ist als Local-First-Anwendung konzipiert. Die gesamte Datenverarbeitung und -speicherung erfolgt vollständig auf Ihrem Rechner. Es gibt keinen zentralen Server, der Ihre Daten sammelt.","privacySection2Title":"2. Von uns gespeicherte Daten","privacyDataStoredIn":"Die folgenden Daten werden lokal in gespeichert","privacyDataProviderConfigurationsDesc":"Verbindungs-URLs, Anbietertypen und Prioritätseinstellungen","privacyDataApiKeysDesc":"verschlüsselt und lokal gespeichert zur Authentifizierung bei KI-Anbietern","privacyDataUsageLogsDesc":"Anzahl der Anfragen, Token-Nutzung, Modellnamen, Zeitstempel und Antwortzeiten","privacyDataApplicationSettingsDesc":"Theme-Einstellungen, Routing-Strategie und Kombinationskonfigurationen","privacySection3Title":"3. Keine Telemetrie","privacySection3Text":"OmniRoute sammelt keine Telemetrie-, Analyse- oder Absturzberichte. Es werden keine Daten an uns oder Dritte übermittelt. Ihre Nutzungsmuster, API-Aufrufe und Konfigurationen bleiben vollständig privat.","privacySection4Title":"4. KI-Drittanbieter","privacySection4Text":"Wenn Sie API-Aufrufe über OmniRoute durchführen, werden Ihre Anfragen an die von Ihnen konfigurierten KI-Anbieter weitergeleitet (z. B. OpenAI, Anthropic, Google). Diese Anbieter haben eigene Datenschutzrichtlinien, die den Umgang mit Ihren Daten regeln. Bitte überprüfen Sie:","privacyOpenAiPolicy":"OpenAI-Datenschutzrichtlinie","privacyAnthropicPolicy":"Anthropic-Datenschutzrichtlinie","privacyGooglePolicy":"Google-Datenschutzerklärung","privacySection5Title":"5. Cloud-Synchronisierung (optional)","privacySection5Text":"Wenn Sie die optionale Cloud-Synchronisierungsfunktion aktivieren, können Anbieterkonfigurationen und API-Schlüssel an einen konfigurierten Cloud-Endpunkt übertragen werden. Diese Funktion ist standardmäßig deaktiviert und erfordert eine ausdrückliche Zustimmung.","privacySection6Title":"6. Protokollierung","privacyLoggingIntro":"Anforderungsprotokolle können über die Dashboard-Einstellungen konfiguriert werden. Sie können:","privacySection7Title":"7. Ihre Rechte","privacySection7TextStart":"Da alle Daten lokal gespeichert werden, haben Sie die volle Kontrolle. Sie können Ihre Daten jederzeit löschen, indem Sie das entfernen","privacySection7TextEnd":"Verzeichnis oder mithilfe der Datenbanksicherungs- und -wiederherstellungsfunktionen im Dashboard.","termsSection1Title":"1. Übersicht","termsSection1Text":"OmniRoute ist ein Local-First-AI-API-Proxy-Router, der vollständig auf Ihrem Computer ausgeführt wird. Es leitet Anfragen mit Lastausgleich, Failover und Nutzungsverfolgung an mehrere KI-Anbieter weiter.","termsSection2Title":"2. Verantwortlichkeiten des Benutzers","termsResponsibilityApiKeys":"Sie sind allein für die Verwaltung Ihrer eigenen API-Schlüssel und Anmeldeinformationen für KI-Drittanbieter (OpenAI, Anthropic, Google usw.) verantwortlich.","termsResponsibilityCompliance":"Sie müssen die Nutzungsbedingungen jedes KI-Anbieters einhalten, auf dessen API Sie über OmniRoute zugreifen.","termsResponsibilitySecurity":"Sie sind für die Sicherheit Ihrer lokalen OmniRoute-Installation verantwortlich, einschließlich der Festlegung eines Kennworts und der Einschränkung des Netzwerkzugriffs.","termsSection3Title":"3. Wie es funktioniert","termsSection3Text":"OmniRoute fungiert als zwischengeschalteter Proxy. An OmniRoute gesendete API-Aufrufe werden übersetzt und an Ihre konfigurierten KI-Anbieter weitergeleitet. OmniRoute ändert den Inhalt Ihrer Anfragen oder Antworten nicht über die erforderliche Protokollübersetzung hinaus.","termsSection4Title":"4. Datenverarbeitung","termsDataStoredLocally":"Alle Daten werden lokal auf Ihrem Computer in einer SQLite-Datenbank gespeichert.","termsNoTransmission":"OmniRoute überträgt keine Daten an externe Server, es sei denn, Sie aktivieren explizit Cloud-Synchronisierungsfunktionen.","termsDataLocationText":"Nutzungsprotokolle, API-Schlüssel und Konfiguration werden in gespeichert","termsSection5Title":"5. Haftungsausschluss","termsSection5Text":"OmniRoute wird „wie besehen“ ohne Gewährleistung jeglicher Art bereitgestellt. Wir sind nicht verantwortlich für Kosten, die durch API-Nutzung, Dienstunterbrechungen oder Datenverlust entstehen. Bewahren Sie immer Backups Ihrer Konfiguration auf.","termsSection6Title":"6. Open Source","termsSection6Text":"OmniRoute ist Open-Source-Software. Es steht Ihnen frei, es im Rahmen der Lizenzbedingungen zu prüfen, zu ändern und zu verbreiten."},"endpoints":{"tabProxy":"Endpoint Proxy","tabApiEndpoints":"API-Endpunkte","apiEndpointsTitle":"API-Endpunkte","apiEndpointsDescription":"Backend-API-Endpunkte, die von anderen Anwendungen und Diensten genutzt werden können.","comingSoon":"Demnächst","plannedFeatures":"Geplante Funktionen","featureRestApi":"REST-API-Katalog mit interaktiver Dokumentation","featureWebhooks":"Webhook-Konfiguration und Event-Abonnements","featureSwagger":"Automatische OpenAPI / Swagger-Spezifikation","featureAuth":"API-Schlüssel- und OAuth-Scope-Verwaltung pro Endpunkt"},"agents":{"title":"CLI Agents","description":"Discover installed CLI agents on your system. Add custom agents for auto-detection.","refresh":"Refresh","installed":"Installed","notFound":"Not Found","builtIn":"Built-in","custom":"Custom","remove":"Remove","addCustomAgent":"Add Custom Agent","addCustomAgentDesc":"Register any CLI tool for detection. It will be scanned automatically on refresh.","agentName":"Agent Name","binaryName":"Binary Name","versionCommand":"Version Command","spawnArgs":"Spawn Args","addAgent":"Add Agent","scanning":"Scanning system for CLI agents...","opencodeIntegration":"OpenCode Integration","opencodeDetected":"opencode {version} detected","opencodeDesc":"Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.","downloadConfig":"Download {file}","downloaded":"Downloaded!","setupGuideTitle":"Setup guide","openCliTools":"Open CLI Tools","setupGuideDetectCliTitle":"Detect installed CLIs","setupGuideDetectCliDesc":"Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.","setupGuideCustomAgentTitle":"Register custom binary","setupGuideCustomAgentDesc":"Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.","setupGuideCommandMissingTitle":"Fix \'command not found\'","setupGuideCommandMissingDesc":"Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh."},"autoCombo":{"title":"Auto-Combo Engine","statusNormal":"Normal","statusIncident":"Incident Mode","modePack":"Mode Pack","providerScores":"Provider Scores","noAutoCombo":"No auto-combo configured.","excludedProviders":"Excluded Providers","noExclusions":"No providers currently excluded.","factorQuota":"Quota","factorHealth":"Health","factorCost":"Cost","factorLatency":"Latency","factorTaskFit":"Task Fit","factorStability":"Stability","factorTierPriority":"Tier Priority","factorTierPriorityDesc":"Prefers accounts with higher quota tiers (Ultra/Pro over Free)","scoreFactorBreakdown":"Scoring Factors","modePackShipFast":"Ship Fast","modePackCostSaver":"Cost Saver","modePackQualityFirst":"Quality First","modePackOfflineFriendly":"Offline Friendly"},"search":{"searchQuery":"Search Query","searchResults":"Search Results","cachedResult":"Cached","searchCost":"Cost","searchTools":"Search Tools","searchToolsDesc":"Advanced search testing with provider comparison","compareProviders":"Compare Providers","rerankResults":"Rerank Results","searchHistory":"Search History","urlOverlap":"URL Overlap","noSearchProviders":"No search providers configured. Add providers in Settings.","noRerankModels":"No rerank model available","webSearch":"Web Search","provider":"Provider","searchType":"Search Type","maxResults":"Max Results","filters":"Filters","country":"Country","language":"Language","timeRange":"Time Range","includeDomains":"Include Domains","excludeDomains":"Exclude Domains","safeSearch":"Safe Search","formatted":"Formatted","rawJson":"JSON","cacheMiss":"cache miss","cacheHit":"cache hit","latency":"Latency","cost":"Cost","results":"Results","rerank":"Rerank","rerankModel":"Rerank Model","positionDelta":"Position Change","emptyState":"Send a search query to see results","safeSearchOff":"Off","safeSearchModerate":"Moderate","safeSearchStrict":"Strict","queryPlaceholder":"Enter search query...","providerAuto":"auto (cheapest)","searchTypeWeb":"web","searchTypeNews":"news","optionAny":"any","timeRangeDay":"Past day","timeRangeWeek":"Past week","timeRangeMonth":"Past month","timeRangeYear":"Past year","domainPlaceholder":"example.com","requestTimedOut":"Request timed out ({seconds}s)","networkError":"Network error"},"templateNames":{"simple-chat":"Einfacher Chat","streaming":"Streaming","system-prompt":"System-Prompt","thinking":"Denken","tool-calling":"Werkzeugaufruf","multi-turn":"Mehrere Runden"},"templateDescriptions":{"simple-chat":"Einfache Chat-Vorlage mit Systemnachricht","streaming":"Vorlage für Streaming-Antworten","system-prompt":"Vorlage mit benutzerdefiniertem System-Prompt","thinking":"Vorlage mit Denk-/Argumentationsbudget","tool-calling":"Vorlage für Werkzeug-/Funktionsaufrufe","multi-turn":"Vorlage für mehrstufige Konversationen"},"templatePayloads":{"simpleChat":{"system":"Sie sind ein hilfreicher KI-Assistent.","userGreeting":"Hallo! Wie kann ich Ihnen heute helfen?"},"streaming":{"prompt":"Schreiben Sie eine Geschichte darüber"},"systemPrompt":{"question":"Was ist der Sinn des Lebens?","systemInstruction":"Geben Sie eine nachdenkliche, philosophische Antwort."},"thinking":{"question":"Erklären Sie Quantencomputing"},"toolCalling":{"cityNameDescription":"Der Name der Stadt, für die das Wetter ermittelt werden soll","toolDescription":"Erhalten Sie das aktuelle Wetter für einen Standort","userWeather":"Wie ist das Wetter in Tokio?"},"multiTurn":{"system":"Sie sind ein hilfreicher Assistent.","assistantExample":"Gerne helfe ich Ihnen dabei.","userInitial":"Ich brauche Hilfe dabei","userFollowUp":"Können Sie das näher erläutern?"}},"cache":{"title":"Cache Management","description":"Monitor and manage semantic response cache, hit rates, and token savings.","refresh":"Refresh","clearAll":"Clear All","memoryEntries":"Memory Entries","dbEntries":"DB Entries","cacheHits":"Cache Hits","tokensSaved":"Tokens Saved","hitRate":"Hit Rate","performance":"Cache Performance","behavior":"Cache Behavior","idempotency":"Idempotency Layer","clearSuccess":"Cache cleared. {count} expired entries removed.","clearError":"Failed to clear cache.","unavailable":"Cache unavailable","unavailableDesc":"Could not fetch cache statistics. Make sure the server is running.","memoryEntriesSub":"In-memory LRU","dbEntriesSub":"Persisted (SQLite)","cacheHitsSub":"of {total} total","tokensSavedSub":"Estimated from hits","autoRefresh":"Auto-refreshes every {seconds}s","hits":"Hits","misses":"Misses","total":"Total","behaviorDeterministic":"Only non-streaming requests with temperature=0 are cached.","behaviorBypass":"Bypass with header {header}.","behaviorTwoTier":"Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).","behaviorTtl":"Default TTL: 30 minutes. Configure via {envVar}.","activeDedupKeys":"Active Dedup Keys","dedupWindow":"Dedup Window"}}'))}];
2
2
 
3
3
  //# sourceMappingURL=src_i18n_messages_de_json_b2a40318._.js.map