Skip to content

Instantly share code, notes, and snippets.

@MANFahrer-GF
Created July 22, 2026 16:15
Show Gist options
  • Select an option

  • Save MANFahrer-GF/4702de70269065af2db30bb928714667 to your computer and use it in GitHub Desktop.

Select an option

Save MANFahrer-GF/4702de70269065af2db30bb928714667 to your computer and use it in GitHub Desktop.
OmniRoute: fixed complete German (de) locale file — fills 1482 missing + 625 __MISSING__-placeholder keys, ref issue #7283
{
"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",
"nothingHere": "Nothing here yet",
"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": "Last Refreshed",
"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",
"on": "AN",
"off": "AUS",
"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",
"goToDashboard": "Go to Dashboard",
"checkSystemStatus": "Check System Status",
"selectModel": "Select Model",
"combos": "Combos",
"noModelsFound": "No models found",
"clear": "Clear",
"done": "Done",
"errorOccurred": "Error Occurred",
"comboDeleted": "Combo Deleted",
"hide": "Hide",
"creating": "Creating",
"comboCreated": "Combo Created",
"swapFormats": "Swap Formats",
"daysAgo": "Days Ago",
"retries": "Retries",
"errorDuringRestore": "Error During Restore",
"eventsAppearHint": "Events Appear Hint",
"noLockouts": "No Lockouts",
"webSearchDesc": "Web Search Desc",
"audioProvidersHeading": "Audio Providers Heading",
"cloudAgentProviders": "Cloud-Agent-Anbieter",
"minutesAgo": "Minutes Ago",
"a": "A",
"liveAutoRefreshing": "Live Auto Refreshing",
"webSearch": "Web Search",
"anthropicPrefixPlaceholder": "Anthropic Prefix Placeholder",
"addModelToCombo": "Add Model To Combo",
"failedToLoad": "Failed To Load",
"categoryMedia": "Category Media",
"enableCloud": "Enable Cloud",
"expirationBannerExpiringSoon": "Expiration Banner Expiring Soon",
"retry": "Retry",
"embeddings": "Embeddings",
"errorCount": "Error Count",
"backupReasonManual": "Backup Reason Manual",
"safeSearchModerate": "Safe Search Moderate",
"activeLimiters": "Active Limiters",
"a2aCardTitle": "A2A Card Title",
"cloudWorkerUnreachable": "Cloud Worker Unreachable",
"testFailed": "Test Failed",
"compatibleBaseUrlHint": "Compatible Base Url Hint",
"usageTracking": "Usage Tracking",
"disableCloudTitle": "Disable Cloud Title",
"noConnections": "No Connections",
"providerHealth": "Provider Health",
"confirmDbImport": "Confirm Db Import",
"notAvailableSymbol": "Not Available Symbol",
"backupsAvailable": "Backups Available",
"providerAuto": "Provider Auto",
"newProviderNamePlaceholder": "New Provider Name Placeholder",
"a2aQuickStartStep2": "A2A Quick Start Step2",
"ok": "Ok",
"available": "Available",
"noBackupYet": "No Backup Yet",
"more": "More",
"noCompatibleYet": "No Compatible Yet",
"multiProvider": "Multi Provider",
"repairEnvHint": "Repair Env Hint",
"disablingCloud": "Disabling Cloud",
"testBench": "Test Bench",
"valid": "Valid",
"cloudBenefitShare": "Cloud Benefit Share",
"mcpCardTitle": "Mcp Card Title",
"disableConfirm": "Disable Confirm",
"filters": "Filters",
"expirationBannerExpiredDesc": "Expiration Banner Expired Desc",
"saveComboDefaults": "Save Combo Defaults",
"cloudConnectedVerified": "Cloud Connected Verified",
"uptime": "Uptime",
"compatibleProdPlaceholder": "Compatible Prod Placeholder",
"fallbackChainsTitle": "Fallback Chains Title",
"oauthLabel": "Oauth Label",
"a2aCardDescription": "A2A Card Description",
"okShort": "Ok Short",
"maintenance": "Maintenance",
"formatConverter": "Format Converter",
"zedImportNetworkError": "Zed Import Network Error",
"apiKeyLabel": "Api Key Label",
"noModelsForProvider": "No Models For Provider",
"mcpCardDescription": "Mcp Card Description",
"apiTypeLabel": "Api Type Label",
"configuredProvidersLabel": "Configured Providers Label",
"maxRetriesLabel": "Max Retries Label",
"title": "Title",
"output": "Output",
"prefixHint": "Prefix Hint",
"skipWizard": "Skip Wizard",
"failedCount": "Failed Count",
"confirmDbImportDesc": "Confirm Db Import Desc",
"entries": "Entries",
"until": "Until",
"disableCombo": "Disable Combo",
"liveMonitorDescriptionPrefix": "Live Monitor Description Prefix",
"runningCount": "Running Count",
"noActiveConnectionsInGroup": "No Active Connections In Group",
"savedSuccessfully": "Saved Successfully",
"systemStorage": "System Storage",
"videoDesc": "Video Desc",
"maxResults": "Max Results",
"timeRangeMonth": "Time Range Month",
"testSummary": "Test Summary",
"failedSetPassword": "Failed Set Password",
"audio": "Audio",
"restore": "Restore",
"disableWarning": "Disable Warning",
"moderationsDesc": "Moderations Desc",
"providerHealthStatusAria": "Provider Health Status Aria",
"modelNamePlaceholder": "Model Name Placeholder",
"mcpQuickStartStep2": "Mcp Quick Start Step2",
"quickStart": "Quick Start",
"fullExportFailedWithError": "Full Export Failed With Error",
"loadingBackups": "Loading Backups",
"anthropicBaseUrlPlaceholder": "Anthropic Base Url Placeholder",
"description": "Description",
"noProviderFound": "No Provider Found",
"auto": "Auto",
"protocolsDescription": "Protocols Description",
"cloudSessionNote": "Cloud Session Note",
"advancedSettings": "Advanced Settings",
"defaultStrategy": "Default Strategy",
"purgeExpiredLogs": "Purge Expired Logs",
"justNow": "Just Now",
"providerTestFailed": "Provider Test Failed",
"openaiBaseUrlPlaceholder": "Openai Base Url Placeholder",
"image": "Image",
"failedCreateChain": "Failed Create Chain",
"importDatabase": "Import Database",
"allDataLocal": "All Data Local",
"sectionTitle": "Section Title",
"failedToggle": "Failed Toggle",
"editCombo": "Edit Combo",
"testResults": "Test Results",
"searchQuery": "Search Query",
"addCcCompatible": "Add Cc Compatible",
"duplicate": "Duplicate",
"createCombo": "Create Combo",
"searchTypeWeb": "Search Type Web",
"addChain": "Add Chain",
"prefixLabel": "Prefix Label",
"listModelsDesc": "List Models Desc",
"databaseSize": "Database Size",
"chainCreated": "Chain Created",
"providerTestTimeout": "Provider Test Timeout",
"routingStrategy": "Routing Strategy",
"translateAction": "Translate Action",
"exportFailed": "Export Failed",
"connectedVerificationPending": "Connected Verification Pending",
"a2aQuickStartTitle": "A2A Quick Start Title",
"couldNotTest": "Could Not Test",
"testAllCompatible": "Test All Compatible",
"anthropicCompatibleName": "Anthropic Compatible Name",
"disabling": "Disabling",
"failedEnable": "Failed Enable",
"categoryUtility": "Category Utility",
"customUrlOptional": "Custom Url Optional",
"localProviders": "Local Providers",
"comboNamePlaceholder": "Combo Name Placeholder",
"memoryRss": "Memory Rss",
"disableProvider": "Disable Provider",
"welcomeDesc": "Welcome Desc",
"nameLabel": "Name Label",
"allOperational": "All Operational",
"backupNow": "Backup Now",
"providerMaxRetriesAria": "Provider Max Retries Aria",
"textToSpeechDesc": "Text To Speech Desc",
"machineId": "Machine Id",
"globalProxy": "Global Proxy",
"hitsMisses": "Hits Misses",
"testDesc": "Test Desc",
"chatDesc": "Chat Desc",
"importSuccess": "Import Success",
"chat": "Chat",
"a2aQuickStartStep1": "A2A Quick Start Step1",
"importFailed": "Import Failed",
"inputPlaceholder": "Input Placeholder",
"providerModelsTitle": "Provider Models Title",
"lastBackup": "Last Backup",
"yourEndpoint": "Your Endpoint",
"autoDisableThresholdDesc": "Auto Disable Threshold Desc",
"rerankDesc": "Rerank Desc",
"modelsPathPlaceholder": "Models Path Placeholder",
"noCombosYet": "No Combos Yet",
"connectedVerificationPendingWithError": "Connected Verification Pending With Error",
"comboDefaultsGuideHint1": "Combo Defaults Guide Hint1",
"enableCloudTitle": "Enable Cloud Title",
"configuredProvidersHint": "Configured Providers Hint",
"paused": "Paused",
"llmProviders": "Llm Providers",
"enableCombo": "Enable Combo",
"removeProviderOverrideAria": "Remove Provider Override Aria",
"nodeVersion": "Node Version",
"openai": "Openai",
"exportFailedWithError": "Export Failed With Error",
"proxyConfigured": "Proxy Configured",
"concurrencyPerModel": "Concurrency Per Model",
"protocolTasksLabel": "Protocol Tasks Label",
"oauthProviders": "Oauth Providers",
"lockedCount": "Locked Count",
"deleteChainConfirm": "Delete Chain Confirm",
"recentTranslations": "Recent Translations",
"zedImportButton": "Zed Import Button",
"responsesDesc": "Responses Desc",
"testedCount": "Tested Count",
"providersCommaSeparatedPlaceholder": "Providers Comma Separated Placeholder",
"signatureDefaults": "Signature Defaults",
"errorCreating": "Error Creating",
"timeRangeYear": "Time Range Year",
"compatibleLabel": "Compatible Label",
"cloudDisabledSuccess": "Cloud Disabled Success",
"deleteConfirm": "Delete Confirm",
"check": "Check",
"safeSearch": "Safe Search",
"protocolLastActivity": "Protocol Last Activity",
"openMcpDashboard": "Open Mcp Dashboard",
"testBenchTab": "Test Bench Tab",
"chatPathLabel": "Chat Path Label",
"retryDelay": "Retry Delay",
"errorUpdating": "Error Updating",
"ideCliIntegrations": "Ide Cli Integrations",
"imageGeneration": "Image Generation",
"apiKeyRequired": "Api Key Required",
"resetAllTitle": "Reset All Title",
"connectionError": "Connection Error",
"modelName": "Model Name",
"apiKeyForCheck": "Api Key For Check",
"cloudRequestTimeout": "Cloud Request Timeout",
"showConfiguredOnly": "Show Configured Only",
"showFreeOnly": "Nur kostenlos",
"addFirstProvider": "Fügen Sie Ihren ersten Anbieter hinzu",
"addFirstProviderDesc": "Verbinden Sie einen KI-Anbieter, um mit der Weiterleitung von Anforderungen über OmniRoute zu beginnen. Sie können kostenlose Anbieter, API-Schlüssel oder OAuth-Konten verwenden.",
"learnMore": "Erfahren Sie mehr",
"includeDomains": "Include Domains",
"promptCache": "Prompt Cache",
"cloudConnected": "Cloud Connected",
"deleteChain": "Delete Chain",
"chatPathPlaceholder": "Chat Path Placeholder",
"databasePath": "Database Path",
"usingLocalServer": "Using Local Server",
"globalComboConfig": "Global Combo Config",
"backupFailed": "Backup Failed",
"tabProtocols": "Tab Protocols",
"continue": "Continue",
"categorySearch": "Category Search",
"rateLimitStatus": "Rate Limit Status",
"repairEnvSuccess": "Repair Env Success",
"nameRequired": "Name Required",
"country": "Country",
"trackMetricsDesc": "Track Metrics Desc",
"durationSecondsShort": "Duration Seconds Short",
"formatConverterDescription": "Format Converter Description",
"cloudBenefitAccess": "Cloud Benefit Access",
"maxRetries": "Max Retries",
"queueTimeout": "Queue Timeout",
"addProvider": "Add Provider",
"realtime": "Realtime",
"totalTranslations": "Total Translations",
"protocolActiveStreamsLabel": "Protocol Active Streams Label",
"repairEnv": "Repair Env",
"modelsCount": "Models Count",
"viewBackups": "View Backups",
"responsesApi": "Responses Api",
"copyComboName": "Copy Combo Name",
"failures": "Failures",
"failedUpdate": "Failed Update",
"imageDesc": "Image Desc",
"failedCreate": "Failed Create",
"remainingOfLimit": "Remaining Of Limit",
"protocolsTitle": "Protocols Title",
"expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc",
"source": "Source",
"failed": "Failed",
"apiKeyMgmt": "Api Key Mgmt",
"mcpQuickStartStep1": "Mcp Quick Start Step1",
"runTest": "Run Test",
"loadingFallbackChains": "Loading Fallback Chains",
"healthy": "Healthy",
"version": "Version",
"saveBlockWeighted": "Save Block Weighted",
"zedImportNone": "Zed Import None",
"noBackupsYet": "No Backups Yet",
"noGlobalProxy": "No Global Proxy",
"noModels": "No Models",
"stickyLimit": "Sticky Limit",
"passedCount": "Passed Count",
"zedImportFailed": "Zed Import Failed",
"saving": "Saving",
"testAll": "Test All",
"globalProxyDesc": "Global Proxy Desc",
"latencyP99": "Latency P99",
"connectingToCloud": "Connecting To Cloud",
"responses": "Responses",
"errorDeleting": "Error Deleting",
"openaiPrefixPlaceholder": "Openai Prefix Placeholder",
"enterPassword": "Enter Password",
"openA2aDashboard": "Open A2A Dashboard",
"enableProvider": "Enable Provider",
"modeTest": "Mode Test",
"failedDeleteChain": "Failed Delete Chain",
"providerDesc": "Provider Desc",
"templateLoadHint": "Template Load Hint",
"lastFailure": "Last Failure",
"moveDown": "Move Down",
"providerLabel": "Provider Label",
"clearCacheFailed": "Clear Cache Failed",
"imagesGenerations": "Images Generations",
"repairEnvWorking": "Repair Env Working",
"millisecondsShort": "Milliseconds Short",
"globalLabel": "Global Label",
"failuresPlural": "Failures Plural",
"completionsLegacyDesc": "Completions Legacy Desc",
"searchProviders": "Search Providers",
"chatPathHint": "Chat Path Hint",
"defaultStrategyDesc": "Default Strategy Desc",
"latencyP95": "Latency P95",
"textToSpeech": "Text To Speech",
"searchType": "Search Type",
"messages": "Messages",
"aggregatorsGateways": "Aggregators Gateways",
"comboStrategyAria": "Combo Strategy Aria",
"input": "Input",
"testingConnection": "Testing Connection",
"excludeDomains": "Exclude Domains",
"webCookieProviders": "Web Cookie Providers",
"allTestsPassed": "All Tests Passed",
"openaiCompatibleName": "Openai Compatible Name",
"warningCostOptimizedPartialPricing": "Warning Cost Optimized Partial Pricing",
"comboDefaultsGuideTitle": "Combo Defaults Guide Title",
"hoursAgo": "Hours Ago",
"notAvailable": "Not Available",
"skipAndContinue": "Skip And Continue",
"moderations": "Moderations",
"proxyConfig": "Proxy Config",
"upstreamProxyProviders": "Upstream Proxy Providers",
"exportAll": "Export All",
"queuedCount": "Queued Count",
"resetAll": "Reset All",
"noTranslations": "No Translations",
"avgLatency": "Avg Latency",
"throttleStatus": "Throttle Status",
"backupRetentionDesc": "Backup Retention Desc",
"noCBData": "No Cb Data",
"chainDeleted": "Chain Deleted",
"timeLeft": "Time Left",
"expirationBannerExpired": "Expiration Banner Expired",
"language": "Language",
"invalidFileType": "Invalid File Type",
"monitoredProviders": "Monitored Providers",
"errors": "Errors",
"heap": "Heap",
"chatCompletions": "Chat Completions",
"exampleTemplatesHint": "Example Templates Hint",
"retryDelayLabel": "Retry Delay Label",
"audioTranscription": "Audio Transcription",
"fallbackChainsDesc": "Fallback Chains Desc",
"exampleTemplates": "Example Templates",
"connectionsCount": "Connections Count",
"modelsPathLabel": "Models Path Label",
"activeProvidersHint": "Active Providers Hint",
"activeLockouts": "Active Lockouts",
"invalid": "Invalid",
"skipPassword": "Skip Password",
"moveUp": "Move Up",
"timeRange": "Time Range",
"stickyLimitDesc": "Sticky Limit Desc",
"cloudBenefitEdge": "Cloud Benefit Edge",
"custom": "Custom",
"verifying": "Verifying",
"baseUrlLabel": "Base Url Label",
"setPassword": "Set Password",
"safeSearchStrict": "Safe Search Strict",
"noChangesSinceBackup": "No Changes Since Backup",
"modelsPathHint": "Models Path Hint",
"audioTranscriptions": "Audio Transcriptions",
"testCombo": "Test Combo",
"mcpQuickStartTitle": "Mcp Quick Start Title",
"comboUpdated": "Combo Updated",
"weighted": "Weighted",
"providers": "Providers",
"ccCompatibleLabel": "Cc Compatible Label",
"noFallbackChainsDesc": "No Fallback Chains Desc",
"yesImport": "Yes Import",
"lockoutsAutoRefreshHint": "Lockouts Auto Refresh Hint",
"tabApis": "Tab Apis",
"sectionDescription": "Section Description",
"filter": "Filter",
"purgeLogsFailed": "Purge Logs Failed",
"latency": "Latency",
"testAllOAuth": "Test All O Auth",
"mcpQuickStartStep3": "Mcp Quick Start Step3",
"repairEnvFailed": "Repair Env Failed",
"zedImportHint": "Zed Import Hint",
"modelsAcrossEndpoints": "Models Across Endpoints",
"autoDisableBannedAccounts": "Auto Disable Banned Accounts",
"securityDesc": "Security Desc",
"listModels": "List Models",
"backupRestore": "Backup Restore",
"target": "Target",
"zedImportSuccess": "Zed Import Success",
"lastHeaderUpdate": "Last Header Update",
"categoryCore": "Category Core",
"noFallbackChains": "No Fallback Chains",
"noSearchProviders": "No Search Providers",
"autoBalance": "Auto Balance",
"noModelsYet": "No Models Yet",
"signatureFamily": "Signature Family",
"externalApiCalls": "External Api Calls",
"providerOverridesDesc": "Provider Overrides Desc",
"signatureTool": "Signature Tool",
"connectionFailed": "Connection Failed",
"activeLimitersPlural": "Active Limiters Plural",
"doneDesc": "Done Desc",
"down": "Down",
"noDataYet": "No Data Yet",
"activeProviders": "Active Providers",
"nameInvalid": "Name Invalid",
"skip": "Skip",
"createChain": "Create Chain",
"audioSpeech": "Audio Speech",
"cacheCleared": "Cache Cleared",
"searchTypeNews": "Search Type News",
"durationMillisecondsShort": "Duration Milliseconds Short",
"addOpenAICompatible": "Add Open Ai Compatible",
"chatTesterTab": "Chat Tester Tab",
"queued": "Queued",
"domainPlaceholder": "Domain Placeholder",
"durationMinutesShort": "Duration Minutes Short",
"verifyingConnection": "Verifying Connection",
"imageProviders": "Image Providers",
"protocolToolsLabel": "Protocol Tools Label",
"queryPlaceholder": "Query Placeholder",
"videoGeneration": "Video Generation",
"timeRangeWeek": "Time Range Week",
"limitExhausted": "Limit Exhausted",
"failedDisable": "Failed Disable",
"inMemoryNote": "In Memory Note",
"compatibleHint": "Compatible Hint",
"errorShort": "Error Short",
"advancedHint": "Advanced Hint",
"restoreFailed": "Restore Failed",
"searchProvidersHeading": "Search Providers Heading",
"comboName": "Combo Name",
"autoDisableDescription": "Auto Disable Description",
"embeddingsDesc": "Embeddings Desc",
"operational": "Operational",
"testAllApiKey": "Test All Api Key",
"backupCreated": "Backup Created",
"errorDuringImport": "Error During Import",
"comboDefaultsGuideHint2": "Combo Defaults Guide Hint2",
"connecting": "Connecting",
"fillModelAndProviders": "Fill Model And Providers",
"syncing": "Syncing",
"resetConfirm": "Reset Confirm",
"trackMetrics": "Track Metrics",
"successful": "Successful",
"recovering": "Recovering",
"autoDisableThreshold": "Auto Disable Threshold",
"anthropic": "Anthropic",
"syncingData": "Syncing Data",
"cloudBenefitPorts": "Cloud Benefit Ports",
"compatibleProviders": "Compatible Providers",
"freeTierProviders": "Kostenlose Anbieter",
"freeTierLabel": "Kostenloses Kontingent verfügbar",
"freeTierProvidersDesc": "Anbieter mit kostenlosen Stufen – einige erfordern eine API-Schlüsselanmeldung, andere benötigen überhaupt keine Anmeldeinformationen.",
"clearCache": "Clear Cache",
"reqs": "Reqs",
"addAnthropicCompatible": "Add Anthropic Compatible",
"apiKeyProviders": "Api Key Providers",
"tabsAria": "Tabs Aria",
"resetting": "Resetting",
"millisecondsAbbr": "Milliseconds Abbr",
"backupReasonPreRestore": "Backup Reason Pre Restore",
"disableCloud": "Disable Cloud",
"newProviderNameAria": "New Provider Name Aria",
"passwordsMismatch": "Passwords Mismatch",
"a2aQuickStartStep3": "A2A Quick Start Step3",
"liveMonitorDescriptionSuffix": "Live Monitor Description Suffix",
"failedAddProvider": "Failed Add Provider",
"addAtLeastOneProvider": "Add At Least One Provider",
"reasonSeparator": "Reason Separator",
"zedImporting": "Zed Importing",
"confirmPasswordPlaceholder": "Confirm Password Placeholder",
"whatYouGet": "What You Get",
"signatureSession": "Signature Session",
"errorCountNoCode": "Error Count No Code",
"testing": "Testing",
"providersCommaSeparated": "Providers Comma Separated",
"exportDatabase": "Export Database",
"hitRate": "Hit Rate",
"completionsLegacy": "Completions Legacy",
"removeModel": "Remove Model",
"timeRangeDay": "Time Range Day",
"cloudRequestFailed": "Cloud Request Failed",
"updatedAt": "Updated At",
"monitoredProvidersHint": "Monitored Providers Hint",
"connectionSuccessful": "Connection Successful",
"latencyP50": "Latency P50",
"logsDeleted": "Logs Deleted",
"chatTester": "Chat Tester",
"safeSearchOff": "Safe Search Off",
"nameHint": "Name Hint",
"debugToggle": "Debug Toggle",
"embedding": "Embedding",
"issuesLabel": "Issues Label",
"optionAny": "Option Any",
"maxNestingDepth": "Max Nesting Depth",
"rerank": "Rerank",
"checking": "Checking",
"getStarted": "Get Started",
"restoreSuccess": "Restore Success",
"issuesDetected": "Issues Detected",
"signatureCache": "Signature Cache",
"modelLockouts": "Model Lockouts",
"usingCloudProxy": "Using Cloud Proxy",
"loadingHealth": "Loading Health",
"providerOverrides": "Provider Overrides",
"audioTranscriptionDesc": "Audio Transcription Desc",
"learnedFromHeaders": "Learned From Headers",
"totalRequests": "Total Requests",
"cloudUnstableNote": "Cloud Unstable Note",
"gamificationAdmin": "Gamification-Administrator",
"monitorAnomaliesAndHealth": "Überwachen Sie Anomalien und den Systemzustand",
"flaggedAnomalies": "Gekennzeichnete Anomalien",
"noAnomaliesDetected": "Keine Anomalien festgestellt",
"apiKey": "API-Schlüssel",
"xpLastHour": "XP (1h)",
"zScore": "Z-Score",
"tokensCommunityServers": "Community-Server",
"tokensServerNamePlaceholder": "Servername",
"tokensApiKeyPlaceholder": "API-Schlüssel",
"tokensTokenBalance": "Token-Guthaben",
"tokensSendTokens": "Senden Sie Token",
"tokensRecipientApiKeyId": "Empfänger-API-Schlüssel-ID",
"tokensRecipientApiKeyIdPlaceholder": "Geben Sie die API-Schlüssel-ID des Empfängers ein",
"tokensReasonOptional": "Grund (optional)",
"tokensReasonPlaceholder": "z.B. Bonus, Belohnung",
"tokensTransactionHistory": "Transaktionsverlauf",
"tokensNoTransactionsYet": "Noch keine Transaktionen",
"tokensInviteCodes": "Einladungscodes",
"tokensMaxUses": "Maximale Nutzung",
"tokensRedeemCode": "Code einlösen",
"tokensRedeemCodePlaceholder": "Geben Sie den Einladungscode ein",
"tokensYourActiveInvites": "Ihre aktiven Einladungen",
"tierCoverageTitle": "Stufenabdeckung",
"tierCoverageSubtitle": "Pro Fallback-Stufe konfigurierte Anbieter",
"batchDetailCopyId": "Ausweis kopieren",
"batchDetailClose": "Schließen",
"batchDetailEndpoint": "Endpunkt",
"batchDetailModel": "Modell",
"batchDetailWindow": "Fenster",
"batchDetailCreated": "Erstellt",
"providerTopologyEmpty": "Es sind noch keine Anbieter verbunden",
"badgeToastUnlocked": "Abzeichen freigeschaltet!",
"batchListSearchPlaceholder": "Suche nach ID, Endpunkt, Modell…",
"batchListDeleteAllCompletedTitle": "Löschen Sie alle abgeschlossenen Chargen",
"batchListBatchesTable": "Chargen",
"changelogViewerLoading": "Änderungsprotokoll von GitHub wird geladen...",
"profileLoading": "Profil wird geladen...",
"profileHowToEarn": "So verdienen Sie",
"bootstrapBannerDismiss": "Entlassen",
"batchListDeleteBatchTitle": "Stapel und seine Dateien löschen",
"leaderboardYourRank": "Dein Rang",
"leaderboardLoading": "Bestenliste wird geladen...",
"batchFileDetailCopyId": "Ausweis kopieren",
"batchFileDetailClose": "Schließen",
"batchFileDetailFailedToLoad": "Dateiinhalt konnte nicht geladen werden",
"batchFilesListSearchPlaceholder": "Suche nach ID oder Dateiname…",
"batchFilesListFilesTable": "Dateien",
"batchPageLoadingMore": "Mehr laden…",
"recommended": "Empfohlen",
"batchConceptTitle": "Batch processing",
"batchConceptSubtitle": "Process thousands of requests asynchronously at ~50% of the cost (24h window). Ideal for evaluations, classification, and embeddings.",
"batchConceptHowItWorks": "How it works",
"batchConceptBenefit50pct": "50% discount on input + output tokens",
"batchConceptAsync24h": "Async with a 24h completion window",
"batchConceptUseCases": "Best for bulk classification, evaluations, and embeddings",
"filesConceptTitle": "Batch files",
"filesConceptSubtitle": "JSONL files used by batches: input requests, results, and errors.",
"filesConceptInput": "Input — your JSONL with one request per line",
"filesConceptOutput": "Output — results from completed requests",
"filesConceptError": "Errors — requests that failed",
"filesConceptRetention": "Retention: 30 days by default (29 days on Anthropic)",
"wizardTitle": "New batch",
"wizardClose": "Close",
"wizardNext": "Next",
"wizardBack": "Back",
"wizardCancel": "Cancel",
"wizardCreate": "Create batch",
"wizardCreating": "Creating…",
"wizardStep1Destination": "Destination",
"wizardStep2Input": "Input",
"wizardStep3Validate": "Validate",
"wizardStep4Cost": "Cost & create",
"wizardProviderLabel": "Provider",
"wizardEndpointLabel": "Endpoint",
"wizardModelLabel": "Model",
"wizardInputKindJsonl": "JSONL",
"wizardInputKindCsv": "CSV (we'll convert)",
"wizardDropOrPick": "Drop a file or click to pick",
"wizardCsvMappingTitle": "Map CSV columns → request fields",
"wizardCsvMappingAddField": "Add field",
"wizardValidationOk": "All lines valid",
"wizardValidationErrors": "Validation errors",
"wizardValidationPreview": "Preview (first 5 requests)",
"wizardValidationSamplingNote": "File is large — validated by sampling (first 1000 + last 100 lines). Full validation runs server-side.",
"wizardCostSync": "Sync cost",
"wizardCostBatch": "Batch cost (-50%)",
"wizardCostSavings": "Savings",
"wizardCostEstimatedNotice": "Estimated cost — real billing may vary.",
"wizardErrorUpload": "Failed to upload file. Try again.",
"wizardErrorCreate": "Failed to create batch. Try again.",
"wizardEmptyProviders": "Connect a provider with batch support (OpenAI, Anthropic, or Gemini) to create a batch.",
"uploadModalTitle": "Upload batch file",
"uploadModalDropOrPick": "Drop a .jsonl file or click to pick",
"uploadModalUpload": "Upload",
"uploadModalCancel": "Cancel",
"uploadModalError": "Upload failed. Try again.",
"uploadModalSuccess": "Uploaded",
"uploadModalSizeLimit": "Max 512 MB",
"batchListNewButton": "New batch",
"batchListAutoRefresh": "Auto-refresh 30s",
"batchListCostColumn": "Cost",
"batchActionCancel": "Cancel",
"batchActionDownloadOutput": "Download output",
"batchActionDownloadErrors": "Download errors",
"batchActionRetry": "Retry failed",
"batchActionRetryConfirm": "Retry {n} failed request(s)? Final cost depends on actual tokens consumed.",
"expirationBadgeCritical": "Critical",
"expirationBadgeWarning": "Soon",
"expirationBadgeNormal": "Pending",
"expirationBadgeExpired": "Expired",
"filesListUploadButton": "Upload",
"filesListUsedByColumn": "Used by",
"filesListUsedByNone": "None",
"filesListDelete": "Delete",
"filesListDownload": "Download",
"batchDetailActionCancel": "Cancel batch",
"batchDetailActionRetry": "Retry failed requests",
"batchDetailCancelling": "Cancelling…",
"batchDetailRetrying": "Preparing retry…",
"batchDetailCancelConfirm": "Cancel this batch? In-progress requests will stop.",
"batchActionCancelError": "Failed to cancel batch. Try again.",
"batchActionRetryError": "Failed to retry failed requests. Try again.",
"batchConceptRetentionNote": "Results and error files are retained for 30 days (Anthropic: 29 days)",
"filesListUsedByRoleInput": "input",
"filesListUsedByRoleOutput": "output",
"filesListUsedByRoleError": "error",
"batchListProgressPartial": "(partial)",
"filesListSizeColumn": "Size",
"batchListProviderColumn": "Provider",
"batchListProviderUnknown": "—",
"batchListBatchCreated": "Batch {id} created — refreshing list…",
"batchListBatchCreatedDismiss": "Dismiss",
"batchListRefreshing": "Refreshing…",
"batchListRefresh": "Refresh",
"uploadFileModalRemove": "Remove",
"uploadFileModalUploading": "Uploading…",
"wizardInputReading": "Reading file…",
"wizardInputReady": "Ready",
"wizardInputLargeFileLabel": "Large file — sampling validation",
"wizardInputCsvJsonlReady": "JSONL generated — ready to validate.",
"wizardInputLargeFileWarning": "Large file detected — validation runs by sampling (first 5 MB + last 100 KB). Full validation happens server-side.",
"wizardCostWindow24h": "24h completion window",
"wizardValidationFieldsOk": "required fields valid",
"batchListProviderOther": "Other",
"batchListTitle": "Batches",
"batchListCount": "{count} batches",
"batchListRemovingCompleted": "Removing…",
"batchListRemoveCompleted": "Remove completed",
"batchListTableStatus": "Status",
"batchListTableId": "ID",
"batchListTableEndpoint": "Endpoint",
"batchListTableModel": "Model",
"batchListTableProgress": "Progress",
"batchListTableCreated": "Created",
"batchListTableExpires": "Expires",
"batchListLoading": "Loading…",
"batchListEmpty": "No batches found",
"batchListValidating": "Validating…",
"batchStatusAll": "All statuses",
"batchStatusInProgress": "In progress",
"batchStatusValidating": "Validating",
"batchStatusFinalizing": "Finalizing",
"batchStatusCompleted": "Completed",
"batchStatusFailed": "Failed",
"batchStatusCancelled": "Cancelled",
"batchStatusCancelling": "Cancelling",
"batchStatusExpired": "Expired",
"batchStatusCompletedWithFailures": "completed with failures",
"batchStatusInProgressWithFailures": "in progress (with failures)",
"batchStatusFinalizingWithFailures": "finalizing (with failures)",
"batchStatusCancelledWithFailures": "cancelled with failures",
"batchStatusExpiredWithFailures": "expired (partial)",
"wizardCostEstimating": "Estimating cost…",
"wizardCostRequests": "Requests",
"wizardCostInputTok": "input tok",
"wizardCostOutputTok": "output tok",
"wizardCostWindow": "Window",
"wizardDestinationSelectProvider": "Select a provider…",
"wizardDestinationSelectModel": "Select a model…",
"wizardDestinationConnectProvider": "Connect a provider",
"manualConfig": "Manuelle Konfiguration",
"unknownProvider": "Unbekannter Anbieter",
"queueDepth": "Warteschlangentiefe",
"understand": "Verstanden"
},
"sidebar": {
"home": "Zuhause",
"dashboard": "Dashboard",
"providers": "Anbieter",
"combos": "Kombinationen",
"usage": "Nutzung",
"analytics": "Analytik",
"costs": "Kosten",
"health": "Gesundheit",
"proxy": "Proxy",
"limits": "Limits und Quoten",
"cliTools": "CLI-Tools",
"media": "Medien",
"settings": "Einstellungen",
"translator": "Übersetzer",
"playground": "Spielwiese",
"searchTools": "Search Tools",
"agents": "Agenten",
"cloudAgents": "Cloud-Agenten",
"memory": "Memory",
"skills": "Skills",
"omniSkills": "OmniSkills",
"agentSkills": "AgentSkills",
"docs": "Dokumente",
"issues": "Probleme",
"endpoints": "Endpunkte",
"endpointsSubtitle": "Ihre AI-Verbindungs-URLs",
"apiManager": "API-Manager",
"apiManagerSubtitle": "Verwalten Sie API-Schlüssel und Zugriff",
"embeddedServices": "Eingebettete Dienste",
"embeddedServicesSubtitle": "Lokale Proxy-Dienste verwalten",
"logs": "Protokolle",
"webhooks": "Webhooks",
"webhooksSubtitle": "Lassen Sie sich über Ereignisse benachrichtigen",
"combosSubtitle": "Gruppenanbieter für Failover",
"batchSubtitle": "Mehrere Anfragen bearbeiten",
"contextCavemanSubtitle": "Schnelle Komprimierung",
"contextRtkSubtitle": "Ausgabefilterung",
"auditLog": "Audit-Protokoll",
"shutdown": "Herunterfahren",
"restart": "Neustart",
"shutdownConfirm": "OmniRoute herunterfahren?",
"restartConfirm": "OmniRoute neu starten?",
"version": "v{version}",
"debug": "Debuggen",
"system": "System",
"help": "Hilfe",
"primarySection": "Main",
"cliSection": "CLI",
"debugSection": "Debug",
"systemSection": "System",
"helpSection": "Help",
"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",
"cliToolsShort": "Werkzeuge",
"cache": "Cache",
"cacheShort": "Cache",
"batch": "Batch Jobs",
"themeSystem": "Theme System",
"whitelabelingDesc": "Whitelabeling Desc",
"switchThemes": "Switch Themes",
"themeAccentDesc": "Theme Accent Desc",
"uploadFavicon": "Upload Favicon",
"themeDark": "Theme Dark",
"customLogoDesc": "Custom Logo Desc",
"sidebarVisibilityToggle": "Sidebar Visibility Toggle",
"themeAccent": "Theme Accent",
"resetFavicon": "Reset Favicon",
"whitelabeling": "Whitelabeling",
"darkMode": "Dark Mode",
"uploadLogo": "Upload Logo",
"themeLight": "Theme Light",
"appName": "App Name",
"appNameDesc": "App Name Desc",
"resetLogo": "Reset Logo",
"customFavicon": "Custom Favicon",
"hideHealthLogs": "Hide Health Logs",
"customLogo": "Custom Logo",
"appearance": "Appearance",
"themeSelectionAria": "Theme Selection Aria",
"themeCreate": "Theme Create",
"customFaviconDesc": "Custom Favicon Desc",
"logoPreview": "Logo Preview",
"themeCustom": "Theme Custom",
"hideHealthLogsDesc": "Hide Health Logs Desc",
"faviconPreview": "Favicon Preview",
"changelog": "Changelog",
"contextSection": "Context & Cache",
"contextCaveman": "Caveman",
"contextRtk": "RTK",
"contextCombos": "Engine Combos",
"contextLite": "Lite",
"contextAggressive": "Aggressive",
"contextUltra": "Ultra",
"contextOmniglyph": "OmniGlyph",
"contextSettings": "Compression Settings",
"contextHeadroom": "Headroom",
"contextSessionDedup": "Session Dedup",
"contextCcr": "CCR",
"contextLlmlingua": "LLMLingua",
"combosLive": "Combo Studio",
"compressionStudio": "Compression Studio",
"routingSection": "Routing",
"protocolsSection": "Protocols",
"agentsAiSection": "Agents & AI",
"cacheContextSection": "Cache & Context",
"analyticsSection": "Analytics",
"costsSection": "Costs",
"monitoringSection": "Monitoring",
"auditSecuritySection": "Audit & Security",
"devtoolsSection": "Dev Tools",
"configurationSection": "Configuration",
"aiFeaturesSection": "AI Features",
"mcp": "MCP",
"a2a": "A2A",
"apiEndpoints": "API Endpoints",
"batchFiles": "Files",
"analyticsEvals": "Evals",
"analyticsSearch": "Search",
"analyticsUtilization": "Utilization",
"analyticsComboHealth": "Combo Health",
"analyticsCompression": "Compression",
"costsBudget": "Budget",
"costsQuotaShare": "Quota Sharing",
"costsPricing": "Pricing",
"logsProxy": "Proxy Logs",
"logsConsole": "Console",
"logsActivity": "Activity",
"auditMcp": "MCP Audit",
"auditA2a": "A2A-Audit",
"settingsGeneral": "General",
"settingsAppearance": "Appearance",
"settingsAi": "AI Settings",
"settingsSecurity": "Security",
"settingsFeatureFlags": "Feature-Flags",
"settingsAuthz": "Authz",
"settingsRouting": "Routing",
"settingsResilience": "Resilience",
"settingsAdvanced": "Advanced",
"omniProxySection": "OmniProxy",
"quotaTracker": "Provider Quota",
"providerQuota": "Provider Quota",
"runtime": "Runtime",
"consoleLogs": "Console Logs",
"globalRouting": "Global Routing",
"mitmProxy": "MITM Proxy",
"oneProxy": "1Proxy",
"agenticFeaturesSection": "Agentic Features",
"otherFeaturesSection": "Other Features",
"compressionContextGroup": "Compression Context",
"gamificationGroup": "Gamification",
"toolsGroup": "Tools",
"integrationsGroup": "Integrations",
"proxyGroup": "Proxy",
"costsParametersGroup": "Costs Parameters",
"auditGroup": "Audit",
"batchGroup": "Batch",
"homeSubtitle": "Dashboard overview",
"providersSubtitle": "Manage AI providers",
"quotaTrackerSubtitle": "Track usage limits",
"providerQuotaSubtitle": "Track provider usage limits",
"runtimeSubtitle": "Realtime resilience & sessions",
"contextCombosSubtitle": "Combine compression engines",
"cliToolsSubtitle": "Configure CLI runtimes",
"agentsSubtitle": "Manage local agents",
"cloudAgentsSubtitle": "Manage cloud-based agents",
"apiEndpointsSubtitle": "Expose custom endpoints",
"proxySubtitle": "HTTP proxy settings",
"mitmProxySubtitle": "MITM interception",
"oneProxySubtitle": "Public proxy gateway",
"leaderboard": "Leaderboard",
"profile": "Profile",
"tokens": "Tokens",
"leaderboardSubtitle": "Rankings and achievements",
"profileSubtitle": "Account and preferences",
"tokensSubtitle": "Token usage and budgets",
"usageSubtitle": "Traffic and usage stats",
"analyticsComboHealthSubtitle": "Combo target reliability",
"analyticsUtilizationSubtitle": "Provider utilization",
"costsSubtitle": "Spend breakdown",
"cacheSubtitle": "Cache hit rates",
"analyticsCompressionSubtitle": "Token savings stats",
"analyticsSearchSubtitle": "Search tool analytics",
"analyticsEvalsSubtitle": "Eval suite results",
"logsSubtitle": "Application logs",
"logsProxySubtitle": "Proxy traffic logs",
"consoleLogsSubtitle": "Console output",
"logsActivitySubtitle": "User activity log",
"healthSubtitle": "System health check",
"costsPricingSubtitle": "Per-model pricing rules",
"costsBudgetSubtitle": "Budget limits",
"costsQuotaShareSubtitle": "Share provider quotas across keys",
"auditLogSubtitle": "Authorization audit",
"auditMcpSubtitle": "MCP server audit",
"auditA2aSubtitle": "A2A protocol audit",
"translatorSubtitle": "Format conversion",
"playgroundSubtitle": "Test prompts live",
"searchToolsSubtitle": "Search tool registry",
"memorySubtitle": "Persistent agent memory",
"omniSkillsSubtitle": "Sandbox skill registry",
"agentSkillsSubtitle": "A2A skill registry",
"mcpSubtitle": "MCP server controls",
"a2aSubtitle": "A2A protocol server",
"mediaSubtitle": "Cached media files",
"batchFilesSubtitle": "Batch input/output files",
"settingsSubtitle": "All settings",
"settingsGeneralSubtitle": "App basics",
"settingsAppearanceSubtitle": "Theme and layout",
"settingsAiSubtitle": "AI behavior defaults",
"globalRoutingSubtitle": "Global routing rules",
"settingsResilienceSubtitle": "Retries and breakers",
"settingsAdvancedSubtitle": "Power user options",
"settingsSecuritySubtitle": "Auth and encryption",
"settingsFeatureFlagsSubtitle": "Systemfunktionen umschalten",
"settingsSidebar": "Sidebar",
"settingsSidebarSubtitle": "Customize sidebar layout",
"settingsAuthzSubtitle": "Routen-Inventar und Bypass-Richtlinie",
"docsSubtitle": "Documentation",
"issuesSubtitle": "Report a bug",
"changelogSubtitle": "Release notes",
"chaosConfig": "Chaos-Modus",
"plugins": "Plugins",
"costsFreeTiers": "Free-Tier-Budget",
"costsFreeTiersSubtitle": "Monatliche kostenlose Token-Kontingente",
"freeProviderRankings": "Rangliste kostenloser Anbieter",
"freeProviderRankingsSubtitle": "Beste kostenlose Anbieter nach Modell-ELO-Werten",
"settingsAccessTokens": "Zugriffstoken",
"modelLockout": "Modellsperre",
"providerStats": "Anbieter-Statistiken",
"providerStatsSubtitle": "Latenz- und Leistungsmetriken",
"pluginsSubtitle": "Plugin-Marktplatz & Installationen",
"settingsAccessTokensSubtitle": "Bereichsbezogene CLI-Token für den Remote-Modus",
"costsQuotaPlans": "Pläne & Kontingente",
"costsQuotaPlansSubtitle": "Pläne nach Anbieter konfigurieren",
"activity": "Aktivität",
"activitySubtitle": "Übersichtlicher Feed aktueller Ereignisse",
"logsGroup": "Protokolle",
"systemGroup": "System",
"costsOverview": "Übersicht",
"costsOverviewSubtitle": "Konsolidierte Kostenanalyse",
"agentBridge": "Agent-Bridge",
"agentBridgeSubtitle": "Datenverkehr von IDE-Agenten abfangen",
"trafficInspector": "Traffic-Inspector",
"trafficInspectorSubtitle": "LLM-Aufrufe überwachen + beliebigen HTTPS-Datenverkehr debuggen",
"cliCode": "CLI-Code",
"cliCodeSubtitle": "Code-Tools, die auf OmniRoute zeigen",
"cliAgents": "CLI-Agenten",
"cliAgentsSubtitle": "Autonome CLI-Agenten",
"acpAgents": "ACP-Agenten",
"acpAgentsSubtitle": "Von OmniRoute gestartete CLIs",
"skipToContent": "Zum Inhalt springen",
"unpinSection": "Abschnitt lösen",
"pinSectionOpen": "Abschnitt offen anheften",
"reloadPage": "Seite neu laden",
"dragReorderSection": "Ziehen, um den Abschnitt neu anzuordnen",
"dragReorderItem": "Ziehen, um neu anzuordnen",
"cannotHide": "Dieses Element kann nicht ausgeblendet werden",
"alwaysVisible": "Immer sichtbar",
"groupSeparatorLabel": "Trennlinie",
"discovery": "Entdeckung",
"discoverySubtitle": "Anbieter nach kostenlosem Zugang durchsuchen"
},
"webhooks": {
"title": "Webhooks",
"description": "Konfigurieren Sie HTTP-Rückrufe für Systemereignisse.",
"configuredWebhooks": "Konfigurierte Webhooks",
"configuredWebhooksDesc": "Verwalten Sie Zustellungsendpunkte, abonnierte Ereignisse, Status und Testsendungen.",
"addWebhook": "Webhook hinzufügen",
"editWebhook": "Webhook bearbeiten",
"name": "Name",
"namePlaceholder": "Produktionsüberwachung",
"unnamedWebhook": "Unbenannter Webhook",
"url": "Endpunkt-URL",
"events": "Veranstaltungen",
"allEvents": "Alle Veranstaltungen",
"secret": "Geheimnis",
"secretPlaceholder": "Lassen Sie das Feld leer, um automatisch ein Geheimnis zu generieren",
"secretEditPlaceholder": "Lassen Sie das Feld leer, um das aktuelle Geheimnis zu wahren",
"status": "Status",
"active": "Aktiv",
"inactive": "Inaktiv",
"errored": "Fehlerhaft",
"total": "Insgesamt",
"lastTriggered": "Zuletzt ausgelöst",
"actions": "Aktionen",
"enabled": "Aktiviert",
"enabledDesc": "Deaktivierte Webhooks bleiben gespeichert, erhalten jedoch keine Zustellungen.",
"refresh": "Aktualisieren",
"loading": "Webhooks werden geladen...",
"never": "Niemals",
"failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}",
"testWebhook": "Test senden",
"testSuccess": "Test-Webhook erfolgreich gesendet.",
"testFailed": "Der Test des Webhooks ist fehlgeschlagen.",
"saveSuccess": "Webhook erfolgreich gespeichert.",
"saveFailed": "Webhook konnte nicht gespeichert werden.",
"loadFailed": "Webhooks konnten nicht geladen werden.",
"delete": "Löschen",
"deleteConfirm": "Sind Sie sicher, dass Sie diesen Webhook löschen möchten?",
"deleteSuccess": "Webhook erfolgreich gelöscht.",
"deleteFailed": "Webhook konnte nicht gelöscht werden.",
"edit": "Bearbeiten",
"enable": "Aktivieren",
"disable": "Deaktivieren",
"noWebhooks": "Noch keine Webhooks konfiguriert.",
"signatureTitle": "Webhook-Signaturen",
"signatureDescription": "Jede Lieferung enthält einen X-Webhook-Signature-Header, der mit HMAC-SHA256 unter Verwendung des Webhook-Geheimnisses signiert ist. Überprüfen Sie die Signatur, bevor Sie der Nutzlast vertrauen.",
"wizard": {
"cancel": "Abbrechen",
"step1Title": "Integration auswählen",
"step2Title": "Ziel konfigurieren",
"step3Title": "Events & Test",
"back": "Zurück",
"next": "Weiter",
"finish": "Fertigstellen",
"step1Desc": "Wähle das Ziel-Integrationssystem für diesen Webhook aus."
},
"howItWorks": {
"step1": "Wähle einen Integrationsanbieter (z. B. Slack, Discord, benutzerdefinierter Webhook) und richte die Verbindungsdetails ein.",
"step2": "Konfiguriere die Systemereignisse, die abonniert werden sollen (z. B. Completion-Fehler, Modell-Fallbacks oder Nutzungslimits).",
"step3": "Überprüfe die Konfiguration, indem du eine Test-Payload sendest, um sicherzustellen, dass der Endpunkt sie empfängt.",
"step4": "Sichere deinen Endpunkt, indem du den X-Webhook-Signature-HMAC-SHA256-Header mit dem Webhook-Secret validierst.",
"title": "So funktionieren Webhooks",
"customOnly": "Gilt nur für benutzerdefinierte Endpunkt-Integrationen.",
"hmacRecipeTitle": "HMAC-Verifizierungsrezept",
"hmacRecipe": "Um Webhook-Payloads in Node.js zu verifizieren, berechne den HMAC-SHA256 des rohen Request-Bodys mit deinem geheimen Schlüssel. Vergleiche ihn mit dem X-Webhook-Signature-Header mittels timingSafeEqual.",
"timeoutNote": "Webhook-Zustellungen haben ein Timeout von 10 Sekunden.",
"retryNote": "Fehlgeschlagene Zustellungen werden mit exponentiellem Backoff bis zu 5-mal wiederholt.",
"docsLink": "Vollständigen Webhooks-Entwicklerleitfaden lesen",
"hmacRecipePython": "Python-HMAC-Verifizierung: hmac.new(secret, body, hashlib.sha256).hexdigest()",
"hmacRecipeBash": "Bash-HMAC-Verifizierung: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\""
},
"deliveries": {
"title": "Zustellprotokolle",
"loadFailed": "Webhook-Zustellprotokolle konnten nicht geladen werden.",
"empty": "Noch keine Zustellungen erfasst. Löse ein Ereignis aus oder sende eine Test-Payload.",
"status": "Status",
"event": "Event",
"latency": "Latenz",
"at": "Gesendet am"
},
"kinds": {
"comingSoon": "Demnächst verfügbar",
"slack": "Slack",
"slackDesc": "Systemereignisse direkt in einen Slack-Kanal posten",
"telegram": "Telegram",
"telegramDesc": "Ereignisnachrichten über einen Telegram-Bot senden",
"discord": "Discord",
"discordDesc": "Echtzeit-Updates direkt an einen Discord-Server senden",
"custom": "Benutzerdefinierter Webhook",
"customDesc": "Systemereignis-Payloads an einen beliebigen HTTPS-Endpunkt senden",
"email": "E-Mail-Benachrichtigung",
"emailDesc": "Zusammenfassende Updates per E-Mail erhalten",
"pagerduty": "PagerDuty",
"pagerdutyDesc": "Bei kritischen Systemproblemen Alarme in PagerDuty auslösen",
"teams": "Microsoft Teams",
"teamsDesc": "Systembenachrichtigungen an Microsoft-Teams-Kanäle weiterleiten"
},
"testPayloadSent": "Test-Payload gesendet",
"testResponse": "Testantwort",
"validateUrl": {
"checking": "URL wird geprüft...",
"ok": "URL ist gültig",
"blockedPrivate": "URL ist eine blockierte private Adresse",
"invalidUrl": "Ungültiges URL-Format"
},
"custom": {
"endpointUrl": "Endpunkt-URL",
"endpointUrlPlaceholder": "https://api.yourdomain.com/webhook",
"secretKey": "Geheimer Schlüssel",
"secretKeyPlaceholder": "Geheimen Schlüssel eingeben oder leer lassen zur automatischen Generierung",
"secretKeyHint": "Wird verwendet, um den Payload-Header zur Authentifizierung zu signieren."
},
"discord": {
"webhookUrl": "Discord-Webhook-URL",
"webhookUrlPlaceholder": "https://discord.com/api/webhooks/...",
"webhookUrlHint": "Die Webhook-URL, die du aus den Integrationseinstellungen deines Discord-Kanals kopiert hast.",
"tutorial": "So erstellst du einen Discord-Webhook:"
},
"slack": {
"webhookUrl": "Slack-Webhook-URL",
"webhookUrlPlaceholder": "https://hooks.slack.com/services/...",
"webhookUrlHint": "Die Webhook-URL, die du aus deiner Slack-Incoming-Webhooks-Integration kopiert hast.",
"tutorial": "So erstellst du einen Slack-Webhook:"
},
"telegram": {
"botToken": "Telegram-Bot-Token",
"botTokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ",
"botTokenHint": "Das HTTP-API-Token, das du von @BotFather beim Erstellen deines Bots erhalten hast.",
"chatId": "Telegram-Chat-ID / Kanal",
"chatIdPlaceholder": "-100123456789 oder @kanalname",
"chatIdHint": "Die eindeutige numerische Kennung oder der öffentliche Benutzername des Chats/Kanals.",
"tutorial": "So konfigurierst du den Telegram-Webhook:"
}
},
"compliance": {
"auditTitle": "Prüfung",
"auditDescription": "Überprüfen Sie Compliance-Ereignisse und MCP-Tool-Aufrufe aus einer operativen Sicht.",
"complianceTab": "Compliance",
"mcpTab": "MCP-Audit",
"title": "Compliance-Audit",
"description": "Richtlinien-, Zugriffs-, Anbieter- und Sicherheitsereignisse, die im Compliance-Audit-Protokoll aufgezeichnet werden.",
"eventType": "Ereignistyp",
"eventTypePlaceholder": "Filtern Sie nach Aktion oder Ereignistyp",
"severity": "Schweregrad",
"allSeverities": "Alle Schweregrade",
"info": "Infos",
"warning": "Warnung",
"critical": "Kritisch",
"sourceIp": "Quell-IP",
"userOrKey": "Benutzer / Schlüssel",
"action": "Aktion",
"result": "Ergebnis",
"details": "Einzelheiten",
"timestamp": "Zeitstempel",
"from": "Von",
"to": "Zu",
"refresh": "Aktualisieren",
"export": "Exportieren",
"clearFilters": "Filter löschen",
"loading": "Prüfereignisse werden geladen...",
"showing": "Es werden {count} von {total} Ereignissen angezeigt",
"policyViolation": "Richtlinienverstoß",
"accessDenied": "Zugriff verweigert",
"injectionBlocked": "Injektion blockiert",
"noEvents": "Es wurden keine Compliance-Ereignisse aufgezeichnet.",
"failedFetch": "Das Compliance-Audit-Protokoll konnte nicht abgerufen werden.",
"viewDetails": "Details anzeigen",
"closeDetails": "Details schließen",
"notAvailable": "—",
"system": "System",
"previous": "Zurück",
"next": "Als nächstes",
"mcpAudit": "MCP-Audit",
"mcpAuditDesc": "Vom MCP-Server aufgezeichnete Tool-Aufruf-Überwachungseinträge.",
"failedFetchMcpAudit": "Das MCP-Überwachungsprotokoll konnte nicht abgerufen werden.",
"tool": "Werkzeug",
"toolPlaceholder": "Nach Werkzeugnamen filtern",
"duration": "Dauer",
"apiKey": "API-Schlüssel",
"output": "Ausgabe",
"allResults": "Alle Ergebnisse",
"success": "Erfolg",
"failure": "Misserfolg",
"noMcpEvents": "Es wurden keine MCP-Überwachungsereignisse aufgezeichnet.",
"a2aAudit": "A2A-Audit",
"a2aAuditDesc": "Vom A2A-Server aufgezeichneter Audit-Trail zur Aufgabenausführung.",
"a2aShowingTasks": "Es werden {count} von {total} Aufgaben angezeigt",
"a2aSkill": "Geschicklichkeit",
"a2aSkillPlaceholder": "Filtern Sie nach dem Namen der Fertigkeit",
"a2aState": "Staat",
"a2aAllStates": "Alle Staaten",
"a2aStateSubmitted": "Eingereicht",
"a2aStateWorking": "Arbeiten",
"a2aStateCompleted": "Abgeschlossen",
"a2aStateFailed": "Fehlgeschlagen",
"a2aStateCancelled": "Abgesagt",
"a2aTaskId": "Aufgaben-ID",
"a2aEvents": "Veranstaltungen",
"a2aArtifacts": "Artefakte",
"a2aNoTasks": "Keine A2A-Aufgaben erfasst.",
"a2aLoadingTasks": "A2A-Aufgaben werden geladen...",
"actor": "Akteur",
"actorPlaceholder": "Nach Akteur filtern",
"eventTypes": {
"apiKey": {
"activate": "API-Schlüssel aktiviert",
"ban": "API-Schlüssel gesperrt",
"deactivate": "API-Schlüssel deaktiviert",
"regenerate": "API-Schlüssel neu generiert",
"scopes": {
"grant": "API-Schlüssel-Umfänge gewährt",
"revoke": "API-Schlüssel-Umfänge widerrufen",
"update": "API-Schlüssel-Umfänge aktualisiert"
},
"unban": "API-Schlüssel entsperrt"
},
"auth": {
"login": {
"error": "Anmeldefehler",
"failed": "Anmeldung fehlgeschlagen",
"locked": "Anmeldung gesperrt",
"misconfigured": "Anmeldung falsch konfiguriert",
"setup_required": "Anmeldeeinrichtung erforderlich",
"success": "Anmeldung erfolgreich"
},
"logout": {
"success": "Abmeldung erfolgreich"
}
},
"compliance": {
"cleanup": "Compliance-Bereinigung"
},
"provider": {
"credentials": {
"applied": "Anbieter-Zugangsdaten angewendet",
"batch_revoked": "Anbieter-Zugangsdaten im Batch widerrufen",
"bulk_created": "Anbieter-Zugangsdaten massenhaft erstellt",
"bulk_imported": "Anbieter-Zugangsdaten massenhaft importiert",
"created": "Anbieter-Zugangsdaten erstellt",
"imported": "Anbieter-Zugangsdaten importiert",
"revoked": "Anbieter-Zugangsdaten widerrufen",
"updated": "Anbieter-Zugangsdaten aktualisiert"
},
"validation": {
"ssrf_blocked": "Anbieter-SSRF blockiert"
}
},
"quota": {
"plan": {
"updated": "Kontingentplan aktualisiert"
},
"pool": {
"created": "Kontingent-Pool erstellt",
"deleted": "Kontingent-Pool gelöscht",
"updated": "Kontingent-Pool aktualisiert"
},
"store": {
"driver_changed": "Kontingent-Speichertreiber geändert"
}
},
"server": {
"start": "Serverstart"
},
"service": {
"reveal_api_key": "Dienst-API-Schlüssel offengelegt"
},
"settings": {
"update": "Einstellungen aktualisiert",
"update_failed": "Aktualisierung der Einstellungen fehlgeschlagen"
},
"sync": {
"token": {
"created": "Sync-Token erstellt",
"revoked": "Sync-Token widerrufen"
}
}
}
},
"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",
"mcp": "MCP",
"mcpDescription": "Model Context Protocol server management and tools",
"a2a": "A2A",
"a2aDescription": "Agent-to-Agent protocol tasks and observability",
"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",
"costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers",
"cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.",
"limitsDescription": "Configure rate limits and quotas per API key and provider",
"runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts",
"apiManagerDescription": "Manage API keys and access control for your OmniRoute instance",
"batchDescription": "Process large volumes of requests asynchronously with batched API calls",
"contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.",
"contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.",
"contextCombosDescription": "Define how engines are combined for different routing scenarios.",
"changelogDescription": "Stay up to date with the latest platform features and announcements.",
"agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents",
"cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval",
"memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing",
"skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution",
"agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration",
"translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini",
"playgroundDescription": "Test prompts interactively with live provider responses and format inspection",
"searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking",
"logsDescription": "Real-time request logs, error traces, and streaming event inspector",
"auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events",
"webhooksDescription": "Configure webhook endpoints to receive real-time event notifications",
"healthDescription": "System health overview: providers, circuit breakers, rate limits, and database",
"proxyDescription": "Configure upstream proxy settings for outbound provider connections",
"apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides",
"batchFilesDescription": "Browse and manage batch job output files and results",
"analyticsEvalsDescription": "Model evaluation results and performance benchmarks",
"analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking",
"analyticsUtilizationDescription": "Provider utilization metrics and capacity planning",
"analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations",
"analyticsCompressionDescription": "Context compression analytics and token savings",
"costsBudgetDescription": "Budget limits and spending alerts per API key and provider",
"costsPricingDescription": "Custom pricing configuration for token cost calculations",
"logsProxyDescription": "Upstream proxy request logs and traffic inspection",
"logsConsoleDescription": "Application console output and debug logs",
"logsActivityDescription": "Audit trail of user actions and system events",
"auditMcpDescription": "MCP tool invocation audit trail and compliance records",
"auditA2a": "A2A-Audit",
"auditA2aDescription": "Audit-Trail zur A2A-Aufgabenausführung, Statusübergänge und Skill-Aufrufaufzeichnungen",
"settingsGeneralDescription": "Storage, database, and general instance configuration",
"settingsAppearanceDescription": "Theme, branding, and visual customization",
"settingsAiDescription": "AI behaviors, thinking budgets, vision, and memory settings",
"settingsSecurityDescription": "Authentication, authorization, and access control settings",
"featureFlags": "Feature-Flags",
"featureFlagsDescription": "Steuerungssystemfunktionen und experimentelle Funktionen",
"featureFlagsActive": "{count} aktiv",
"featureFlagsInactive": "{count} inaktiv",
"featureFlagsOverrides": "{count} DB-Überschreibungen",
"featureFlagsSearch": "Flaggen suchen...",
"featureFlagsCategoryAll": "Alle",
"featureFlagsCategorySecurity": "Sicherheit",
"featureFlagsCategoryNetwork": "Netzwerk",
"featureFlagsCategoryPolicies": "Richtlinien",
"featureFlagsCategoryRuntime": "Laufzeit",
"featureFlagsCategoryCli": "CLI",
"featureFlagsCategoryHealth": "Gesundheit",
"featureFlagsSourceDb": "DB",
"featureFlagsSourceEnv": "ENV",
"featureFlagsSourceDefault": "DEF",
"featureFlagsReset": "Zurücksetzen",
"featureFlagsResetAll": "Alle Überschreibungen zurücksetzen",
"featureFlagsResetAllConfirm": "Sind Sie sicher, dass Sie alle Feature-Flag-Überschreibungen zurücksetzen möchten? Dadurch werden alle Flags auf ihre ENV- oder Standardwerte zurückgesetzt.",
"featureFlagsRestartRequired": "Zur Bewerbung ist ein Neustart erforderlich",
"featureFlagsNoResults": "Keine Flaggen entsprechen Ihrer Suche",
"featureFlagsSaved": "Flagge aktualisiert",
"featureFlagsError": "Flag konnte nicht aktualisiert werden",
"settingsRoutingDescription": "Routing rules, model aliases, combo defaults, and degradation settings",
"settingsResilienceDescription": "Circuit breaker, retry, and fallback configuration",
"settingsAdvancedDescription": "Advanced payload rules, request limits, and proxy API settings",
"mitmProxyDescription": "Configure MITM proxy settings for traffic inspection and debugging",
"oneProxyDescription": "Configure 1Proxy settings for advanced proxy chaining",
"omniSkillsDescription": "Sandbox-Skills für automatisierte Prompt- und Tool-Ausführung installieren und verwalten"
},
"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.",
"noProvidersConfigured": "Noch keine Anbieter konfiguriert",
"addProvider": "Fügen Sie einen Anbieter hinzu",
"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...",
"reloadingPageAutomatically": "Seite wird automatisch neu geladen...",
"providerTopology": "Anbietertopologie"
},
"analytics": {
"title": "Analytik",
"usageAnalyticsTitle": "Nutzungsanalyse",
"diversityScoreTitle": "Anbietervielfalt",
"diversityScoreDesc": "Momentaufnahme der Anbieterkonzentration für das letzte Traffic-Fenster.",
"diversityShannonEntropy": "Shannon-Entropie",
"diversityWindow": "Fenster: {count} Anfragen · Letzte {mins} Min.",
"diversityHealthy": "Gesunde Verteilung",
"diversityRiskHigh": "Hohes Vendor-Lock-in-Risiko",
"diversityRiskModerate": "Moderate Verteilung",
"diversityScoreLabel": "Score",
"diversityHigherExplanation": "Höhere Werte bedeuten, dass sich der Traffic auf mehrere Anbieter verteilt.",
"diversityNoData": "Keine aktuellen Nutzungsdaten verfügbar.",
"chartRequests": "Anfragen",
"chartInput": "Eingabe",
"chartOutput": "Ausgabe",
"chartTotal": "Gesamt",
"chartCost": "Kosten",
"chartShare": "Anteil",
"chartServiceTier": "Service-Stufe",
"chartServiceTierSplit": "Kostenaufteilung Fast/Standard",
"chartCostPct": "{pct}% der Kosten",
"chartUsageDetail": "Nutzungsdetails",
"chartCacheRead": "Cache-Lesevorgänge",
"chartCostByProvider": "Kosten nach Anbieter",
"chartNoCostData": "Keine Kostendaten",
"chartModelUsageOverTime": "Modellnutzung im Zeitverlauf",
"chartNoData": "Keine Daten",
"chartWeekly": "Wöchentlich",
"chartModelBreakdown": "Modellaufschlüsselung",
"chartModel": "Modell",
"chartProvider": "Anbieter",
"chartProviderBreakdown": "Anbieteraufschlüsselung",
"chartDate": "Datum",
"chartRequestsByProviderDate": "Anfragen nach Anbieter & Datum",
"filterAllKeys": "Alle Schlüssel",
"filterSearchKeys": "Schlüssel suchen…",
"filterNoKeysMatch": "Keine passenden Schlüssel",
"filterOneKey": "1 Schlüssel",
"filterMultipleKeys": "{count} Schlüssel",
"rangeToday": "Heute",
"rangeYesterday": "Gestern",
"rangeLast3Days": "Letzte 3 Tage",
"rangeThisWeek": "Diese Woche",
"rangeLast14Days": "Letzte 14 Tage",
"rangeThisMonth": "Dieser Monat",
"rangeQuickSelect": "Schnellauswahl",
"rangeStart": "Start",
"rangeEnd": "Ende",
"rangeCancel": "Abbrechen",
"rangeApply": "Übernehmen",
"rangeErrorInvalid": "Start muss vor dem Ende liegen",
"period1D": "1T",
"period7D": "7T",
"period30D": "30T",
"period90D": "90T",
"periodYTD": "YTD",
"periodAll": "Alle",
"totalTokens": "Gesamte Token",
"inputTokens": "Eingabe-Token",
"outputTokens": "Ausgabe-Token",
"estCost": "Geschätzte Kosten",
"infraTitle": "Infrastruktur",
"infraAccounts": "Konten",
"infraProviders": "Anbieter",
"infraApiKeys": "API-Schlüssel",
"infraModels": "Modelle",
"perfTitle": "Performance",
"perfAvgTokens": "Ø Token/Anfrage",
"perfCostReq": "Kosten/Anfrage",
"perfIoRatio": "I/O-Verhältnis",
"perfFastReq": "Fast-Anfragen",
"highlightsTitle": "Highlights",
"highlightsTopModel": "Top-Modell",
"highlightsTopProvider": "Top-Anbieter",
"highlightsBusiestDay": "Stärkster Tag",
"highlightsDiversity": "Diversität",
"highlightsFallbackRate": "Fallback-Rate",
"customRange": "Benutzerdefiniert",
"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",
"utilization": "Auslastung",
"utilizationDescription": "Anbieter-Kontingent-Nutzungstrends und Ratenlimit-Verfolgung",
"modelStatus": "Modellstatus",
"modelStatusCooldown": "Abklingzeit",
"modelStatusUnavailable": "Nicht verfügbar",
"modelStatusError": "Fehler",
"comboHealth": "Combo-Gesundheit",
"comboHealthDescription": "Combo-level Kontingent, Nutzungsverteilung und Leistungsmetriken",
"compressionAnalyticsTitle": "Compression Analytics",
"compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.",
"autoRoutingTotalAutoRequests": "Gesamtzahl der automatischen Anfragen",
"autoRoutingAvgSelectionScore": "Durchschnittlicher Auswahlwert",
"autoRoutingExplorationRate": "Explorationsrate",
"autoRoutingLkgpHitRate": "LKGP-Trefferquote",
"autoRoutingRequestsByVariant": "Anfragen nach Variante",
"autoRoutingTopRoutedProviders": "Top-Routing-Anbieter",
"comboHealthWorstQuotaLeft": "Schlechteste verbleibende Quote",
"comboHealthUsageSkew": "Nutzungsverzerrung",
"comboHealthSuccessRate": "Erfolgsquote",
"comboHealthQuotaHealth": "Quotengesundheit",
"comboHealthRequests": "Anfragen",
"comboHealthTokens": "Token",
"comboHealthAvgLatency": "Durchschnittliche Latenz",
"comboHealthTotalRequests": "Gesamtzahl der Anfragen",
"comboHealthExecutionTargets": "Ausführungsziele",
"comboHealthSuccess": "Erfolg",
"comboHealthLatency": "Latenz",
"comboHealthQuota": "Quote",
"comboHealthTitle": "Kombinierte Gesundheit",
"comboHealthUnableToLoad": "Combo-Gesundheit kann nicht geladen werden",
"comboHealthGettingStarted": "Erste Schritte",
"compressionAnalyticsTotalRequests": "Gesamtzahl der Anfragen",
"compressionAnalyticsTokensSaved": "Tokens gespeichert",
"compressionAnalyticsAvgSavings": "Durchschnittliche Ersparnis",
"compressionAnalyticsAvgDuration": "Durchschnittliche Dauer",
"compressionAnalyticsReceipts": "Quittungen",
"compressionAnalyticsFallbacks": "Rückfälle",
"compressionAnalyticsPromptTokens": "Prompt-Token",
"compressionAnalyticsCompletionTokens": "Abschlusstoken",
"compressionAnalyticsTotalTokens": "Gesamtzahl der Token",
"compressionAnalyticsCacheTokens": "Cache-Token",
"compressionAnalyticsNoDataYet": "Noch keine Komprimierungsdaten",
"searchAnalyticsTotalSearches": "Gesamtzahl der Suchanfragen",
"searchAnalyticsCacheHitRate": "Cache-Trefferrate",
"searchAnalyticsTotalCost": "Gesamtkosten",
"searchAnalyticsAvgResponse": "Durchschnittliche Antwort",
"searchAnalyticsNoSearchesYet": "Noch keine Suchanfragen",
"providerUtilizationTitle": "Auslastung des Anbieters",
"providerUtilizationFailedToLoad": "Die Nutzungsdaten konnten nicht geladen werden",
"providerUtilizationNoData": "Keine Nutzungsdaten verfügbar",
"providerUtilizationGettingStarted": "Erste Schritte",
"providerUtilizationLatestSnapshot": "Letzter Kontingent-Snapshot",
"providerUtilizationRemainingCapacity": "Restkapazität"
},
"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",
"managementAccessDesc": "Erlaubt diesem API-Schlüssel, die OmniRoute-Konfiguration zu verwalten.",
"selfServiceVisibility": "Self-Service-Sichtbarkeit",
"selfServiceVisibilityDesc": "Steuert, was dieser Schlüssel über die eigene Nutzung und das gemeinsam genutzte Upstream-Kontingent sehen kann.",
"ownUsageVisibility": "Eigene Kosten- und Token-Nutzung",
"ownUsageVisibilityDesc": "Erlaubt diesem Schlüssel, seinen Status-Endpunkt für eigene USD-Nutzung, Budgetprozentsatz und Token-Summen aufzurufen.",
"sharedAccountQuotaVisibility": "Gemeinsames Konto-Kontingent",
"sharedAccountQuotaVisibilityDesc": "Erlaubt diesem Schlüssel, das gemeinsam genutzte Upstream-Konto-Kontingent zu sehen, wenn genau eine explizite Verbindung konfiguriert ist.",
"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",
"endpointRestrictions": "Allowed Endpoints",
"allEndpointsAllowed": "This key can access all API endpoints.",
"endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}.",
"autoResolve": "Auto-Resolve",
"autoResolveDesc": "Auto-resolve ambiguous model names to native provider for this API key.",
"streamDefaultMode": "Stream-Standardverhalten",
"streamDefaultModeDesc": "Steuert fehlende `stream`-Angaben für diesen Schlüssel. Im JSON-Modus werden nicht-streamende Antworten zurückgegeben, außer der Client fordert SSE explizit an.",
"streamDefaultLegacy": "Legacy",
"streamDefaultJson": "JSON-kompatibel",
"streamDefaultBadge": "JSON-Standardstream",
"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",
"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",
"keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key",
"modelsCount": "{count, plural, one {# model} other {# models}}",
"lastUsedOn": "Zuletzt: {date}",
"editPermissions": "Berechtigungen bearbeiten",
"deleteKey": "Schlüssel löschen",
"regenerateKey": "Schlüssel neu generieren",
"regenerateConfirm": "Sind Sie sicher, dass Sie diesen API-Schlüssel neu generieren möchten? Der alte Schlüssel wird sofort ungültig.",
"failedRegenerateKey": "Der API-Schlüssel konnte nicht neu generiert werden",
"failedRegenerateKeyRetry": "Der API-Schlüssel konnte nicht neu generiert werden. Bitte versuchen Sie es erneut.",
"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",
"maxActiveSessions": "Max. aktive Sitzungen",
"apiManagerCustomRateLimits": "Benutzerdefinierte Tariflimits",
"apiManagerCustomRateLimitsDesc": "Überschreiben Sie globale Standardgrenzen. Lassen Sie das Feld leer, um die Standardeinstellungen zu verwenden.",
"apiManagerRateLimitRequestsPlaceholder": "Anfragen",
"apiManagerRateLimitReqPer": "erforderlich /",
"apiManagerRateLimitSecondsPlaceholder": "Sekunden",
"apiManagerRemoveLimitTitle": "Limit entfernen",
"apiManagerTimezonePlaceholder": "Amerika/Sao_Paulo",
"noLogPayloadPrivacy": "No-Log-Payload-Datenschutz",
"bannedStatus": "Verbotener Status",
"managementApiAccess": "Management-API-Zugriff",
"expirationDate": "Ablaufdatum",
"managementAccess": "Verwaltungszugriff",
"allowedConnections": "Zulässige Verbindungen",
"searchPlaceholder": "Nach Name oder Token suchen...",
"activeOnly": "Nur aktive",
"filterStatus": "STATUS",
"filterType": "TYP",
"filterAll": "Alle",
"filterStatusActive": "Aktiv",
"filterStatusDisabled": "Deaktiviert",
"filterStatusBanned": "Gesperrt",
"filterStatusExpired": "Abgelaufen",
"filterTypeStandard": "Standard",
"filterTypeManage": "Verwaltung",
"filterTypeRestricted": "Eingeschränkt",
"shownOf": "{shown} von {total} angezeigt",
"emptyFilterTitle": "Keine Schlüssel entsprechen deinen Filtern",
"emptyFilterClear": "Filter zurücksetzen",
"localUsageCommand": "Lokalen Nutzungsbefehl zulassen",
"localUsageCommandDesc": "Erlaubt diesem API-Schlüssel, mit @@om-usage zwischengespeicherte Nutzungs- und Kontingentinformationen abzurufen, ohne einen vorgelagerten Anbieter aufzurufen.",
"localUsageCommandBadge": "Nutzungsbefehl",
"devicesCount": "{count, plural, one {# Gerät} other {# Geräte}}",
"devicesTooltip": "{count, plural, one {# eindeutiges IP-/User-Agent-Gerät mit diesem Schlüssel gesehen (letzte 30 Min.)} other {# eindeutige IP-/User-Agent-Geräte mit diesem Schlüssel gesehen (letzte 30 Min.)}}",
"viewCostsFor": "Kosten für {name} anzeigen",
"restrictLoading": "Modellkatalog wird geladen…",
"restrictCatalogUnavailable": "Modellkatalog nicht verfügbar; für diesen Schlüssel sind {selectedCount} Modellbeschränkungen ausgewählt.",
"disableNonPublicModels": "Nicht-öffentliche Modelle deaktivieren",
"disableNonPublicModelsDesc": "Lehnt Anfragen für Modelle ab, die im Anbieterkatalog nicht erkannt oder nicht als öffentlich markiert sind",
"normalKeysSection": "Normale Schlüssel",
"quotaKeysSection": "Kontingent-Schlüssel",
"quotaPill": "KONTINGENT",
"quotaModeOnly": "qtSd-only"
},
"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.",
"kinds": {
"embedding": "Embedding",
"image": "Bild",
"imageToText": "Bild zu Text",
"tts": "Text zu Sprache",
"stt": "Sprache zu Text",
"webSearch": "Websuche",
"webFetch": "Web-Abruf",
"video": "Video",
"music": "Musik",
"ocr": "OCR"
},
"noProviders": "Für diese Art noch keine Anbieter konfiguriert.",
"addConnection": "Verbindung hinzufügen",
"backToProviders": "Zurück zu den Anbietern",
"connections": "{count} Verbindungen",
"noConnections": "Noch keine Verbindungen — füge eine über die Anbieterseite hinzu.",
"loading": "Laden...",
"suggestedModels": "Vom Anbieter vorgeschlagene Modelle"
},
"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",
"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",
"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",
"copy": "Kopieren",
"resetToDefault": "Auf Standard zurücksetzen",
"tabSearch": "Search",
"tabScrape": "Scrape",
"tabCompare": "Compare",
"modalitiesGuide": "Modalities guide",
"searchConceptTitle": "Search",
"searchConceptDesc": "Search = fetches a list of web results (title, URL, snippet, relevance score)",
"scrapeConceptTitle": "Scrape",
"scrapeConceptDesc": "Scrape = extracts the full content of a URL (markdown, text or HTML)",
"compareConceptTitle": "Compare",
"compareConceptDesc": "Compare = runs the same query across N providers side-by-side to compare latency, cost and result overlap",
"rerankConceptTitle": "Rerank",
"rerankConceptDesc": "Rerank = reorders results via LLM to improve relevance based on the query",
"autoConceptTitle": "Auto (cheapest)",
"autoConceptDesc": "Auto (cheapest) = automatically picks the cheapest available provider with configured credentials",
"providerCatalogTitle": "Provider Catalog",
"kindSearch": "Search",
"kindFetch": "Fetch/Scrape",
"statusConfigured": "Configured",
"statusMissing": "No credential",
"statusRateLimited": "Rate limited",
"configureProvider": "Configure in Providers",
"loadingProviders": "Loading providers…",
"failedToLoadProviders": "Failed to load providers",
"costPerQuery": "Cost/query",
"freeQuota": "Free quota/mo",
"scrapeUrl": "URL to scrape",
"scrapeUrlPlaceholder": "https://example.com",
"scrapeExtract": "Extract",
"scrapeExtracting": "Extracting…",
"scrapeFullPage": "Full page",
"scrapeFormat": "Format",
"formatMarkdown": "Markdown",
"formatHtml": "HTML",
"formatText": "Text",
"scrapePreview": "Preview",
"scrapeRaw": "Raw",
"scrapeContentTruncated": "(truncated, view raw)",
"scrapeMetadata": "Metadata",
"scrapeProvider": "Provider",
"scrapeSize": "Size",
"compareRun": "Compare",
"compareRunning": "Comparing…",
"autoProvider": "Auto (cheapest)",
"configuredStatus": "Configured",
"rateLimitedStatus": "Rate limited",
"noCredential": "No credential",
"searchTypeLabel": "Type",
"rerankModelLabel": "Rerank model",
"noneOption": "None",
"size": "Size",
"scrapeUrlRequired": "URL ist erforderlich",
"scrapeUrlInvalid": "Ungültige URL — sie muss mit http:// oder https:// beginnen",
"scrapeEmptyState": "Gib eine URL ein, um deren Inhalt zu extrahieren",
"scrapeProvidersAvailable": "Verfügbare Anbieter: Firecrawl, Jina Reader, Tavily, TinyFish."
},
"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.",
"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.",
"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",
"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.",
"windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through 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.",
"amp": "Use when you want Amp CLI routed through OmniRoute with stable shorthand aliases and OpenAI-compatible setup.",
"qwen": "Use when you want Qwen Code CLI with OmniRoute-managed provider settings and multi-provider model access.",
"hermes": "Verwenden Sie es, wenn Sie einen leichten terminal-nativen KI-Assistenten für schnelle Aufgaben benötigen.",
"hermes-agent": "Verwenden, wenn du Hermes Agent (von Nousresearch) mit Standard-, Delegations-, Vision- und Hilfsmodellen benötigst, die über OmniRoute geroutet werden.",
"custom": "Verwendung für benutzerdefinierte Tool-Implementierungen oder generische OpenAI-kompatible Konfigurationen."
},
"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",
"qwen": "Alibaba Qwen Code CLI",
"amp": "Sourcegraph Amp coding assistant CLI",
"hermes": "Hermes AI Terminal Assistant",
"hermes-agent": "Hermes Agent (von Nousresearch) – Fortschrittliche Terminal-KI mit Multi-Modell-Unterstützung (Delegation, Vision, Komprimierung usw.)",
"custom": "Allgemeiner OpenAI-kompatibler CLI- oder SDK-Konfigurationsgenerator"
},
"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"
},
"5": {
"title": "Use Thinking Variant",
"desc": "For thinking models, run with --variant high/low/max (example command below)."
}
},
"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."
}
},
"windsurf": {
"steps": {
"1": {
"title": "Open AI Settings",
"desc": "Click the AI Settings icon in Windsurf or go to Settings"
},
"2": {
"title": "Add Custom Provider",
"desc": "Select \"Add custom provider\" (OpenAI-compatible)"
},
"3": {
"title": "Base URL",
"desc": "http://127.0.0.1:20128/v1"
},
"4": {
"title": "API Key",
"desc": "Select your OmniRoute API key"
},
"5": {
"title": "Select Model",
"desc": "Choose a model from the dropdown"
}
}
}
},
"autoConfiguredTab": "Auto Configured Tab",
"toolCategoriesDesc": "Tool Categories Desc",
"allToolsTab": "All Tools Tab",
"guidedClientsTab": "Guided Clients Tab",
"mitmClientsTab": "Mitm Clients Tab",
"customCliTab": "Benutzerdefinierte CLI",
"toolCategories": "Tool Categories",
"visibleToolsCount": "{count} Tools verfügbar",
"customCliBuilderTitle": "OpenAI-kompatibler CLI-Builder",
"customCliBuilderDescription": "Generieren Sie Umgebungsvariablen und JSON-Snippets für jede CLI oder jedes SDK, das eine OpenAI-kompatible Basis-URL, einen API-Schlüssel und eine Modell-ID akzeptiert.",
"customCliNoModels": "Verbinden Sie mindestens einen Anbieter, um die Modellselektoren zu füllen.",
"customCliNameLabel": "CLI-Name",
"customCliNamePlaceholder": "z.B. Mein Team-CLI",
"customCliDefaultModelLabel": "Standardmodell",
"customCliDefaultModelHelp": "Verwenden Sie eine beliebige OmniRoute-Modell-ID oder -Kombination. Die meisten OpenAI-kompatiblen CLIs benötigen nur die /v1-Basis-URL plus eine Modellzeichenfolge.",
"customCliKeyHelper": "Für lokale Installationen kann OmniRoute sk_omniroute verwenden. Wählen Sie im Cloud-Modus einen Ihrer Verwaltungs-API-Schlüssel aus.",
"customCliAliasMappingsLabel": "Alias-Zuordnungen",
"customCliAliasMappingsHelp": "Optionale Hilfsaliase für Wrapper-Skripte oder Konfigurationsdateien, die stabile Kurznamen benötigen.",
"customCliAddAlias": "Alias hinzufügen",
"customCliNoMappings": "Noch keine Alias-Zuordnungen. Fügen Sie einen hinzu, wenn Ihr Wrapper oder Ihre Teamskripte stabile Kurznamen verwenden.",
"customCliAliasPlaceholder": "z.B. Rezension",
"customCliTargetModelLabel": "Zielmodell",
"customCliEndpointHintLabel": "So verkabeln Sie den Endpunkt",
"customCliEndpointHint": "Verweisen Sie jeden OpenAI-kompatiblen Client auf die OmniRoute /v1-Basis-URL. Der Endpunkt für rohe Chat-Abschlüsse ist {endpoint}. Verwenden Sie den JSON-Block, wenn das Tool ein Provider-Objekt benötigt, oder das Env-Skript, wenn es OPENAI_*-Variablen liest.",
"customCliEnvBlockTitle": "Env/Shell-Snippet",
"customCliJsonBlockTitle": "JSON-Block des Anbieters",
"copilotConfigGenerator": "GitHub Copilot-Konfigurationsgenerator",
"copilotApiKey": "API-Schlüssel",
"copilotFilterModelsPlaceholder": "Modelle filtern...",
"copilotMaxInputTokens": "Max. Eingabe-Tokens",
"copilotMaxOutputTokens": "Max. Ausgabetoken",
"copilotToolCalling": "Werkzeugaufruf",
"copilotPasteInto": "Einfügen in:",
"wireApiChatCompletions": "Chat-Abschlüsse (/chat/completions)",
"wireApiResponses": "Antwort-API (/responses)"
},
"combos": {
"title": "Kombinationen",
"description": "Erstellen Sie Modellkombinationen mit gewichtetem Routing und Fallback-Unterstützung",
"autoCatalogTitle": "Katalog für automatisches Routing",
"autoCatalogTemplateCount": "{count} Vorlagen",
"autoCatalogDescription": "Integrierte Auto/*-Kombinationen werden dynamisch von verbundenen Anbietern aufgelöst. Verwenden Sie eine dieser IDs als Modellfeld – keine Einrichtung erforderlich.",
"autoCatalogExpand": "Erweitern Sie den Katalog für automatisches Routing",
"autoCatalogCollapse": "Auto-Routing-Katalog einklappen",
"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",
"contextRelay": "Context Relay",
"contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate",
"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",
"resetAware": "Reset-Aware RR",
"resetAwareDesc": "Gewichtet Restquote gegen 5h- und Wochen-Resets und rotiert ähnliche Scores per Round Robin",
"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)",
"contextRelayHandoffThreshold": "Handoff Threshold",
"contextRelayHandoffThresholdHelp": "When quota usage reaches this threshold, OmniRoute generates a structured handoff summary before the active account is exhausted.",
"contextRelayMaxMessages": "Max Messages For Summary",
"contextRelayMaxMessagesHelp": "Limits how much recent history is condensed into the relay summary.",
"contextRelaySummaryModel": "Summary Model",
"contextRelaySummaryModelHelp": "Optional override model used only for generating the handoff summary. Leave empty to reuse the active combo model.",
"contextRelayProviderNote": "Context Relay currently generates handoffs for Codex account rotation. Pair it with multiple accounts of the same provider for the best continuity.",
"advancedHint": "Lassen Sie das Feld leer, um globale Standardeinstellungen zu verwenden. Diese überschreiben die Einstellungen pro Anbieter.",
"failoverBeforeRetry": "Failover vor erneutem Versuch",
"maxSetRetries": "Max. Set-Wiederholungen",
"setRetryDelayMs": "Wiederholungsverzögerung festlegen (ms)",
"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."
},
"reset-aware": {
"when": "Du routest über mehrere Konten mit Quota-Telemetrie und unterschiedlichen Reset-Fenstern.",
"avoid": "Für die meisten Konten fehlen Quota-Telemetriedaten.",
"example": "Bevorzuge ein Konto mit 60 % Wochen-Restquote und Reset morgen vor 80 % mit späterem Reset."
},
"strict-random": {
"when": "Use when you want perfectly even spread — each model used once before repeating.",
"avoid": "Avoid when models have different quality or latency and order matters.",
"example": "Example: Multiple accounts of the same model to distribute usage evenly."
},
"p2c": {
"when": "Use when you want low-latency selection using Power-of-Two-Choices algorithm.",
"avoid": "Avoid for small combos with 2 or fewer models — no benefit over round-robin.",
"example": "Example: High-throughput inference across 4+ equivalent model endpoints."
},
"context-relay": {
"when": "Use when long sessions must survive account rotation without losing the working context.",
"avoid": "Avoid when account switching is rare or when you do not want extra summarization requests.",
"example": "Example: Codex sessions that rotate across multiple accounts near quota exhaustion."
},
"fill-first": {
"when": "Verwenden Sie diese Option, wenn Sie das Kontingent eines Anbieters vollständig ausschöpfen möchten, bevor Sie zum nächsten wechseln.",
"avoid": "Vermeiden Sie es, wenn Sie einen Lastausgleich auf Anforderungsebene zwischen den Anbietern benötigen.",
"example": "Beispiel: Nutzen Sie alle 200 $ Deepgram-Guthaben, bevor Sie auf Groq zurückgreifen."
},
"auto": {
"when": "Verwenden Sie diese Option, wenn Sie ein Multi-Faktor-Scoring-Routing basierend auf Kosten, Latenz und Qualität benötigen.",
"avoid": "Vermeiden Sie es, wenn Sie eine strikte Prioritätsreihenfolge oder historische Persistenz benötigen.",
"example": "Beispiel: Ausgleichsanfragen über Modelle mit unterschiedlichen Stärken hinweg."
},
"lkgp": {
"when": "Verwenden Sie diese Option, wenn Sie eine Route basierend auf historischen Erfolgsraten und Leistung erstellen möchten.",
"avoid": "Vermeiden Sie es, wenn historische Daten begrenzt oder unzuverlässig sind.",
"example": "Beispiel: Weiterleitung an Models mit einer guten Erfolgsbilanz bei bestimmten Aufgaben."
},
"context-optimized": {
"when": "Verwenden Sie diese Option, wenn Sie die Kontextfensternutzung modellübergreifend optimieren müssen.",
"avoid": "Vermeiden Sie es, wenn Modelle ähnliche Kontextlängen haben oder Aufgaben einfach sind.",
"example": "Beispiel: Verteilen Sie lange Gespräche auf Modelle mit größeren Kontextfenstern."
}
},
"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.",
"failoverBeforeRetry": "Wenn diese Option aktiviert ist, löst jeder Upstream-Fehler ein sofortiges Failover zum nächsten Kombinationsziel aus, wobei alle Wiederholungsversuche und Fallback-URLs übersprungen werden.",
"maxSetRetries": "Anzahl der Wiederholungsversuche mit dem vollständigen Zielsatz, wenn jedes Ziel fehlschlägt. 0 = kein Wiederholungsversuch auf festgelegter Ebene.",
"setRetryDelayMs": "Verzögerung zwischen Wiederholungsversuchen auf Satzebene, sodass vorübergehende Probleme Zeit zur Lösung haben.",
"disableSessionStickiness": "Wechselt bei jeder Anfrage zu einer anderen Verbindung, anstatt eine gesamte Konversation anhand des Hash der ersten Nachricht an eine Verbindung zu binden. Überschreibt die globale Standardeinstellung. Auf „Erben“ belassen, um Prompt-Cache-Treffer bei mehrteiligen Chats zu erhalten."
},
"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.",
"filterAll": "All",
"filterIntelligent": "Intelligent",
"filterDeterministic": "Deterministic",
"filterEmptyTitle": "No combos match this strategy filter.",
"filterEmptyIntelligentDescription": "Create an auto or LKGP combo to populate the intelligent routing dashboard.",
"filterEmptyDeterministicDescription": "Only auto and LKGP combos exist right now. Switch back to All or create a deterministic combo.",
"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.",
"intelligentPanelTitle": "Intelligent Routing Dashboard",
"intelligentPanelDesc": "Real-time scoring and health status for this auto-routing combo.",
"configOnlyStatus": "Konfigurationsansicht",
"configOnlyHint": "Dieses Panel zeigt nur die Routing-Eingaben. Den Live-Status der Breaker findest du auf der Health-Seite.",
"routingInputs": "Routing-Eingaben",
"routingInputsHint": "Mode-Pack und Gewichtung bleiben hier; der Laufzeitstatus der Breaker bleibt auf der Health-Seite.",
"emailVisibilityHint": "Konto-E-Mails folgen hier dem globalen Datenschutz-Schalter.",
"emailVisibilityTooltip": "Verwende das Augensymbol, um Konto-E-Mails global in Combos, Anbietern und Kontingent-Ansichten ein- oder auszublenden.",
"manualModel": "Manuelles Modell",
"manualModelInvalid": "Gib ein Modell im Format Anbieter/Modell ein.",
"manualModelUnknownProvider": "Unbekanntes Anbieter-Präfix.",
"builderDynamicAccountShort": "Dynamisches Konto",
"builderNeedValidName": "Definiere einen gültigen Combo-Namen, bevor du fortfährst.",
"statusOverview": "Status Overview",
"normalOperation": "Normal Operation",
"allProvidersHealthy": "Providers are reporting healthy routing conditions.",
"incidentMode": "Incident Mode",
"highCircuitBreakerRate": "High circuit breaker trip rate detected.",
"activeModePack": "Active Mode Pack",
"modePackUpdated": "Mode pack updated to {pack}.",
"modePackHint": "Switch presets to bias the routing engine without rebuilding the combo.",
"providerScores": "Provider Scores",
"allProvidersEvaluated": "No candidate pool configured. All active providers are evaluated at runtime.",
"excludedProviders": "Excluded Providers",
"excludedProvidersHint": "Providers with an OPEN circuit breaker are temporarily excluded from routing.",
"noExcludedProviders": "No providers are currently excluded.",
"cooldownMinutes": "Cooldown: {minutes}m",
"builderIntelligentTitle": "Intelligent Routing Configuration",
"builderIntelligentDesc": "Configure the multi-factor scoring engine for this auto-routing combo.",
"candidatePoolLabel": "Candidate Pool",
"candidatePoolHint": "Select which providers this engine should evaluate. Leave empty to use all active providers.",
"candidatePoolEmpty": "No active providers available yet.",
"candidatePoolAllProviders": "All providers",
"modePackLabel": "Mode Pack",
"routerStrategyLabel": "Router Strategy",
"strategyRules": "Rules (6-Factor Scoring)",
"explorationRateLabel": "Exploration Rate",
"explorationRateHint": "{percent}% of requests can explore non-optimal providers.",
"budgetCapLabel": "Budget Cap (USD / request)",
"budgetCapPlaceholder": "No limit",
"advancedWeightsTitle": "Advanced: Scoring Weights",
"weightQuota": "Quota",
"weightHealth": "Health",
"weightCostInv": "Cost",
"weightLatencyInv": "Latency",
"weightTaskFit": "Task Fit",
"weightStability": "Stability",
"weightTierPriority": "Tier",
"reviewIntelligentTitle": "Intelligent Routing Config",
"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."
},
"reset-aware": {
"title": "Reset-bewusste Kontorotation",
"description": "Gewichtet verbleibende Provider-Quote gegen Reset-Zeitpunkte.",
"tip1": "Nutze explizite Kontoschritte oder Tag-Routing für Provider mit Quota-Telemetrie.",
"tip2": "Passe 5h- und Wochengewichtung an, wenn kurzfristige Erschöpfung riskant ist.",
"tip3": "Halte das Tie-Band klein, damit gleichwertige Konten fair rotieren."
},
"strict-random": {
"title": "Shuffle deck distribution",
"description": "Each model is used exactly once per cycle before reshuffling.",
"tip1": "Use at least 2 models for meaningful distribution.",
"tip2": "Works best with equivalent-performance models.",
"tip3": "Ideal for load balancing across multiple API accounts."
},
"fill-first": {
"description": "Erschöpfen Sie die Anbieterquoten nacheinander, bevor Sie zurückfallen.",
"tip1": "Verwendung für kontingentbasiertes Routing mit klaren Fallback-Ketten.",
"tip2": "Legen Sie Kontingente genau fest, um einen vorzeitigen Rückfall zu vermeiden.",
"tip3": "Funktioniert am besten mit Anbietern, die kostenlose Kontingente oder Kreditpakete anbieten.",
"title": "Quotenerschöpfung"
},
"auto": {
"description": "Route basierend auf Echtzeitbewertung für Kosten, Latenz, Qualität und Zustand.",
"tip1": "Lassen Sie die Engine mehrere Faktoren automatisch ausgleichen.",
"tip2": "Überwachen Sie in Protokollen, welche Faktoren Routing-Entscheidungen beeinflussen.",
"tip3": "Für komplexe Arbeitslasten verwenden, bei denen kein einzelner Faktor dominiert.",
"title": "Multi-Faktor-Optimierung"
},
"lkgp": {
"description": "Route basierend auf historischen Leistungs- und Erfolgsmustern.",
"tip1": "Für genaue Vorhersagen ist ein ausreichender Anforderungsverlauf erforderlich.",
"tip2": "Gut für Workloads mit konsistenten Modellleistungsmustern.",
"tip3": "Überwachen Sie die Vorhersagegenauigkeit und passen Sie die Gewichte nach Bedarf an.",
"title": "Verlaufsbasiertes Routing"
},
"context-optimized": {
"description": "Optimieren Sie das Routing basierend auf der Kontextfensternutzung und der Token-Effizienz.",
"tip1": "Leiten Sie lange Gespräche an Modelle mit größeren Kontextfenstern weiter.",
"tip2": "Überwachen Sie die Kontextnutzung, um Token-Verschwendung zu vermeiden.",
"tip3": "Am besten für Konversations-KI geeignet, die eine umfassende Kontexterhaltung erfordert.",
"title": "Kontextoptimierung"
},
"context-relay": {
"description": "Am besten geeignet, wenn eine Kontorotation erwartet wird und das nächste Konto eine vereinfachte Aufgabenzusammenfassung erben muss.",
"tip1": "Verwendung bei Anbietern mit rotierenden Konten für dieselbe Modellfamilie.",
"tip2": "Legen Sie den Übergabeschwellenwert unterhalb der harten Kontingentgrenzen für die Erstellungszeit der Zusammenfassung fest.",
"tip3": "Legen Sie nur dann ein dediziertes Zusammenfassungsmodell fest, wenn das Primärmodell zu teuer oder instabil ist.",
"title": "Priorität der Sitzungskontinuität"
},
"p2c": {
"description": "Leiten Sie basierend auf Echtzeitmetriken zum Anbieter mit der geringsten aktuellen Auslastung weiter.",
"tip1": "Überwachen Sie die Gesundheitsmetriken des Anbieters für eine genaue Lastbewertung.",
"tip2": "Funktioniert am besten mit homogenen Anbieterpools.",
"tip3": "Passen Sie die Empfindlichkeit an, um Schwankungen bei Verkehrsspitzen zu vermeiden.",
"title": "Macht der zwei Möglichkeiten"
}
},
"templateFreeStack": "Free Stack ($0)",
"templateFreeStackDesc": "Round-robin across all free providers: Kiro (Claude), Qoder (5 models), Qwen (4 models). Zero cost, never stops coding.",
"auto": "Auto Combo",
"autoDesc": "Self-healing smart routing pool (Performance optimized)",
"lkgp": "LKGP Mode",
"lkgpDesc": "Last Known Good Provider (Predictable resilience)",
"wizardGuideTitle": "Getting Started with Combos",
"wizardGuideDesc": "Create model combos to route AI traffic intelligently",
"wizardGuideHint": "or click + Create Combo above",
"createFirstCombo": "Create Your First Combo",
"wizardStep1Title": "Name Your Combo",
"wizardStep1Desc": "Give your combo a unique name to identify it in routing rules",
"wizardStep2Title": "Add Models",
"wizardStep2Desc": "Select AI models and arrange their fallback priority order",
"wizardStep3Title": "Choose Strategy",
"wizardStep3Desc": "Pick how requests are distributed across your models - 13 strategies available",
"wizardStep4Title": "Review & Save",
"wizardStep4Desc": "Review your configuration and activate the combo",
"emailVisibilityStateOn": "On",
"emailVisibilityStateOff": "Off",
"reorderHandle": "Drag to reorder",
"failedReorder": "Failed to reorder models",
"builderFlowTitle": "Combo Builder Flow",
"builderStage": {
"basics": {
"label": "Basics",
"description": "Name and starting template"
},
"steps": {
"label": "Steps",
"description": "Provider, model, and account selection"
},
"strategy": {
"label": "Strategy",
"description": "Routing behavior and advanced settings"
},
"intelligent": {
"label": "Smart Routing",
"description": "Auto-routing candidate pool, presets, and scoring"
},
"review": {
"label": "Review",
"description": "Final validation before saving"
}
},
"builderStageVisited": "Stage completed",
"builderStageCurrent": "Current stage",
"builderStagePending": "Pending",
"builderStageLocked": "Locked — complete previous stage first",
"builderTitle": "Build a Combo",
"builderBrowseCatalog": "Browse catalog",
"builderProvider": "Provider",
"builderLoadingProviders": "Loading providers...",
"builderSelectProvider": "Select provider",
"builderModel": "Model",
"builderSelectModel": "Select model",
"builderProviderFirst": "Pick provider first",
"builderAccount": "Account",
"builderPreview": "Preview",
"builderAddStep": "Add step",
"builderDuplicateExact": "Dieser genaue Anbieter-/Modell-/Kontoschritt ist bereits in der Kombination enthalten.",
"builderComboRef": "Combo Ref",
"builderAddComboRef": "Add combo reference",
"builderComboRefStep": "Add combo reference",
"builderPinnedAccount": "Pinned Account",
"builderLegacyEntry": "Legacy entry",
"reviewName": "Name",
"reviewStrategy": "Strategy",
"reviewSteps": "Steps",
"reviewAccounts": "Accounts",
"reviewProviders": "Providers",
"reviewComboRefs": "Combo References",
"reviewAdvanced": "Advanced Settings",
"reviewAgentFlags": "Agent Flags",
"reviewSequence": "Model Sequence",
"reviewNoSteps": "No steps configured",
"builderStagesDescription": "Schließen Sie jede Phase ab, um Kombinationen zu definieren, Schritte zu erstellen, eine Routing-Strategie auszuwählen und die Ergebnisse zu überprüfen.",
"builderStepsDescription": "Erstellen Sie jeden Kombinationsschritt in der Reihenfolge: Anbieter, Modell, dann Konto. Dies ermöglicht die Wiederverwendung desselben Anbieters und Modells für verschiedene Konten.",
"selectProvider": "Wählen Sie Anbieter aus",
"selectProviderPlaceholder": "Wählen Sie einen Anbieter aus",
"selectModel": "Wählen Sie Modell aus",
"selectModelPlaceholder": "Wählen Sie zunächst einen Anbieter aus",
"selectAccount": "Wählen Sie Konto aus",
"selectComboToReference": "Wählen Sie die Kombination aus, auf die verwiesen werden soll",
"comboReference": "Combo-Referenz",
"addComboReference": "Kombinationsreferenz hinzufügen",
"addStepBeforeContinue": "Bitte fügen Sie mindestens einen Schritt hinzu, bevor Sie mit der nächsten Stufe fortfahren.",
"previewNextStep": "Vorschau des nächsten Schritts",
"autoSelectAccount": "Konto zur Laufzeit automatisch auswählen",
"modePackBalanced": "Ausgewogen",
"modePackBudget": "Budget",
"modePackPerformance": "Leistung",
"modePackCustom": "Benutzerdefiniert",
"browseLegacyCatalog": "Durchsuchen Sie den Legacy-Combo-Katalog",
"agentFeaturesTitle": "Agentenfunktionen",
"agentFeaturesDescription": "Aktivieren Sie erweiterte Funktionen für Agenten, die diese Kombination verwenden",
"agentFeaturesSystemMessageOverride": "Systemmeldung überschreiben",
"agentFeaturesSystemMessagePlaceholder": "Sie sind ein erfahrener Assistent...",
"agentFeaturesSystemMessageHint": "Überschreibung von Systemnachrichten für Agenten",
"agentFeaturesToolFilterRegex": "/Regex-Muster/",
"agentFeaturesToolFilterHint": "Tool zum Filtern regulärer Ausdrücke für Agenten",
"agentFeaturesContextCacheHint": "Aktivieren Sie den In-Context-Cache für Agent-Tools",
"agentFeaturesContextCacheProtection": "Schützen Sie den Cache vor Agent-Tool-Mutationen",
"agentFeaturesContextLength": "Kontextlänge",
"agentFeaturesContextLengthPlaceholder": "z.B. 128000",
"agentFeaturesContextLengthHint": "Definiert das Kontextfenster für diese Kombination in /v1/models.",
"agentFeaturesContextLengthErrorInteger": "Die Kontextlänge muss eine gültige Ganzzahl sein",
"agentFeaturesContextLengthErrorRange": "Die Kontextlänge muss zwischen 1000 und 2000000 liegen",
"compressionOverride": "Komprimierungsüberschreibung",
"modePack": "Moduspaket",
"comboDescription": "Beschreibung",
"comboDescriptionPlaceholder": "Optionale Notiz zur Beschreibung dieser Kombination",
"fusion": "Fusion",
"fusionDesc": "Sendet den Prompt parallel an alle Panel-Modelle; anschließend fasst ein Judge-Modell die Antworten zu einer finalen Antwort zusammen",
"fusionJudgeModel": "Judge-Modell",
"fusionJudgeModelHelp": "Modell, das die Panel-Antworten zu einer finalen Antwort zusammenfasst. Leer lassen, um das erste Panel-Modell zu verwenden.",
"fusionMinPanel": "Min. Panel",
"fusionMinPanelHelp": "Anzahl erfolgreicher Panel-Antworten, bevor Nachzügler ein Kulanzfenster erhalten (Standard: 2).",
"fusionStragglerGraceMs": "Kulanzzeit für Nachzügler (ms)",
"fusionStragglerGraceMsHelp": "Wie lange auf langsame Panel-Modelle gewartet wird, sobald das Quorum erreicht ist (Standard: 8000).",
"fusionPanelHardTimeoutMs": "Hartes Panel-Timeout (ms)",
"fusionPanelHardTimeoutMsHelp": "Absolute Obergrenze, damit ein hängendes Modell nicht das gesamte Panel blockiert (Standard: 90000).",
"responseValidationTitle": "Antwortvalidierung",
"responseValidationHelp": "Wechselt zum nächsten Ziel, wenn der Body einer 200-OK-Antwort diese Prüfungen nicht besteht (Assistant-Inhalt).",
"responseValidationForbidden": "Verbotene Teilzeichenfolgen (eine pro Zeile)",
"responseValidationRequired": "Erforderliche Teilzeichenfolgen (eine pro Zeile)",
"responseValidationMinLength": "Mindestlänge des Inhalts (Zeichen)",
"responseValidationJsonPaths": "JSON-Pfad-Prüfungen",
"responseValidationAddCheck": "+ Prüfung hinzufügen",
"disableSessionStickiness": "Sitzungsbindung deaktivieren",
"sessionStickinessEnabled": "Bindung aktiv",
"sessionStickinessDisabled": "Bindung inaktiv"
},
"costs": {
"title": "Kosten",
"pageDescription": "Verfolgen Sie Ausgaben, analysieren Sie Trends und verwalten Sie Ihr KI-Budget über alle Anbieter hinweg",
"overview": "Übersicht",
"budget": "Budget",
"totalCost": "Gesamtkosten",
"breakdown": "Kostenaufschlüsselung",
"noData": "Keine Kostendaten",
"byModel": "Nach Modell",
"byProvider": "Nach Anbieter",
"range7d": "7 Tage",
"range30d": "30 Tage",
"range90d": "90 Tage",
"rangeAll": "Alle Zeit",
"spend30d": "Spend30D",
"activeModels": "Active Models",
"selectedWindow": "Selected Window",
"activeProviders": "Active Providers",
"overviewTitle": "Overview Title",
"spend7d": "Spend7D",
"avgCostPerRequest": "Avg Cost Per Request",
"noCostDataDescription": "No Cost Data Description",
"spendToday": "Spend Today",
"overviewLoadFailed": "Overview Load Failed",
"overviewDescription": "Overview Description",
"providerShare": "Provider Share",
"topProviders": "Top Providers",
"costTrend": "Cost Trend",
"noCostDataTitle": "No Cost Data Title",
"topModels": "Top Models",
"requestsInWindow": "Requests In Window",
"tokenUsage": "Token-Nutzung",
"totalTokens": "Gesamtzahl der Token",
"inputTokens": "Eingabetoken",
"outputTokens": "Ausgabetoken",
"inputOutputRatio": "Input/Output-Verhältnis",
"tokens": "Token",
"routingEfficiency": "Routing-Effizienz",
"fallbackCount": "Fallback-Anfragen",
"fallbackRate": "Fallback-Rate",
"modelCoverage": "Modellabdeckung",
"modelCoverageDesc": "% der Anfragen mit explizitem Modell",
"outOfRequests": "von {total} Anfragen",
"costByApiKey": "Kosten nach API-Schlüssel",
"costByAccount": "Kosten pro Konto",
"apiKeyName": "API-Schlüssel",
"account": "Konto",
"requests": "Anfragen",
"cost": "Kosten",
"dayStreak": "Tagessträhne",
"weeklyUsagePattern": "Wöchentliches Nutzungsmuster",
"activityHeatmap": "Aktivität (365 Tage)",
"less": "Weniger",
"more": "Mehr",
"monthlyForecast": "Monatliche Prognose",
"forecastBasis": "Basierend auf den letzten {days} Tagen",
"avgDailyCost": "Durchschn. Tageskosten",
"daysRemaining": "{days} Tage verbleiben",
"periodComparison": "Periodenvergleich",
"previousPeriod": "Vorherige Hälfte",
"currentPeriod": "Aktuelle Hälfte",
"exportCSV": "Als CSV exportieren",
"exportJSON": "Als JSON exportieren",
"legacyFreeLabel": "Legacy / Kostenlos",
"costExplorerTitle": "Kosten-Explorer",
"costExplorerDescription": "Analysiere Ausgaben nach Anbieter, Modell, API-Schlüssel, Konto oder Service-Stufe.",
"groupProvider": "Anbieter",
"groupModel": "Modell",
"groupApiKey": "API-Schlüssel",
"groupAccount": "Konto",
"groupServiceTier": "Service-Stufe",
"serviceTierFast": "Schnell",
"serviceTierFlex": "Flex",
"serviceTierStandard": "Standard",
"serviceTierBreakdownTitle": "Service-Stufe",
"serviceTierBreakdownSubtitle": "Schnell / Flex / Standard",
"serviceTierUsageSaved": "Nutzung gespart",
"serviceTierCostSaved": "gespart",
"serviceTierCostShareSuffix": "der Kosten",
"dimension": "Merkmal",
"share": "Anteil",
"legacyOrFree": "Legacy / kostenlos",
"filterRows": "Zeilen filtern…",
"filterCostExplorerRows": "Kosten-Explorer-Zeilen filtern",
"noMatchingCostRows": "Keine passenden Kostenzeilen",
"noMatchingCostRowsDescription": "Passe Suchtext, Gruppierung oder das ausgewählte Zeitfenster an.",
"showingCostRows": "Zeige {shown} von {total} passenden Zeilen.",
"showingTopCostRows": "Zeige {shown} von {total} passenden Zeilen (Top 50)."
},
"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",
"loadingModels": "Loading available models...",
"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",
"musicGeneration": "Music Generation",
"musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)",
"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",
"categorySearch": "Search & Discovery",
"categoryUtility": "Hilfsmittel & Verwaltung",
"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.",
"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",
"cloudflaredTitle": "Cloudflare Quick Tunnel",
"cloudflaredDescription": "Create a Cloudflare Quick Tunnel for this endpoint to make it accessible from the internet without configuring DNS.",
"cloudflaredUrlNotice": "Creates a temporary Cloudflare Quick Tunnel. URLs change after restart.",
"cloudflaredEnable": "Enable Tunnel",
"cloudflaredInstallAndEnable": "Install & Enable",
"cloudflaredDisable": "Stop Tunnel",
"cloudflaredRunning": "Running",
"cloudflaredStarting": "Starting",
"cloudflaredStoppedState": "Stopped",
"cloudflaredNotInstalled": "Not installed",
"cloudflaredUnsupported": "Unsupported",
"cloudflaredError": "Error",
"cloudflaredStarted": "Cloudflare tunnel started",
"cloudflaredStopped": "Cloudflare tunnel stopped",
"cloudflaredRequestFailed": "Failed to update Cloudflare tunnel",
"cloudflaredTemporaryNote": "Quick Tunnel URLs are temporary and will change after restart.",
"cloudflaredUnsupportedNote": "This platform is not supported for managed installation.",
"cloudflaredIdleNote": "Create a temporary Cloudflare Quick Tunnel for this endpoint.",
"cloudflaredLastError": "Last error: {error}",
"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",
"messagesApi": "Nachrichten",
"messagesApiDesc": "Natives Anthropic Messages API-Format für Claude-kompatible Anbieter",
"imageEdits": "Bildbearbeitung",
"imageEditsDesc": "Bestehende Bilder mit KI bearbeiten und modifizieren (Inpainting, Outpainting, Variationen)",
"batchApi": "Batch-API",
"batchApiDesc": "Große Anfragenmengen asynchron verarbeiten (OpenAI-kompatibel)",
"filesApi": "Datei-API",
"filesApiDesc": "Laden Sie Dateien für die Stapelverarbeitung hoch und verwalten Sie sie",
"videoGeneration": "Video Generation",
"videoDesc": "Generate videos using AI models like ComfyUI and Stable Video Diffusion.",
"tailscaleRequestFailed": "Failed to load Tailscale status",
"tailscaleEnableFailed": "Failed to enable Tailscale Funnel",
"tailscaleWaitingForLogin": "Complete the Tailscale login in the opened browser tab. OmniRoute will retry automatically.",
"tailscaleLoginTimedOut": "Timed out waiting for Tailscale login",
"tailscaleWaitingForFunnel": "Enable Funnel for this device in the opened browser tab. OmniRoute will keep polling.",
"tailscaleFunnelTimedOut": "Timed out waiting for Tailscale Funnel to be enabled",
"tailscaleStarted": "Tailscale Funnel enabled",
"tailscaleDisableFailed": "Failed to disable Tailscale Funnel",
"tailscaleStopped": "Tailscale Funnel disabled",
"tailscaleInstallFailed": "Failed to install Tailscale",
"tailscaleInstallProgress": "Working...",
"tailscaleInstalled": "Tailscale installed successfully",
"tailscaleRunning": "Running",
"tailscaleNeedsLogin": "Needs Login",
"tailscaleStoppedState": "Stopped",
"tailscaleNotInstalled": "Not installed",
"tailscaleUnsupported": "Unsupported",
"tailscaleError": "Error",
"tailscaleDisable": "Stop Funnel",
"tailscaleInstallAndEnable": "Install & Enable",
"tailscaleLoginAndEnable": "Login & Enable",
"tailscaleEnable": "Enable Funnel",
"tailscaleUrlNotice": "Uses your Tailscale .ts.net address. Login and Funnel approval may be required on first use.",
"tailscaleTitle": "Tailscale Funnel",
"tailscaleNeedsLoginHint": "Authenticate this machine with Tailscale, then enable Funnel.",
"tailscaleBinaryPath": "Binary: {path}",
"tailscaleLastError": "Last error: {error}",
"tailscaleInstallTitle": "Install Tailscale",
"tailscaleInstallIntro": "Installs Tailscale on this machine and prepares OmniRoute to enable Funnel.",
"tailscaleInstallPasswordHint": "On macOS and Linux, sudo may be required for the package install and daemon start.",
"tailscaleSudoPlaceholder": "Optional sudo password",
"tailscaleInstalling": "Installing",
"tailscaleSudoLabel": "Sudo-Passwort (erforderlich unter macOS/Linux)",
"ngrokTitle": "Ngrok-Tunnel",
"ngrokRunning": "Laufen",
"ngrokStarting": "Beginnt",
"ngrokStoppedState": "Angehalten",
"ngrokNeedsAuth": "Benötigt Authentifizierung",
"ngrokNotInstalled": "Nicht installiert",
"ngrokUnsupported": "Nicht unterstützt",
"ngrokError": "Fehler",
"ngrokEnable": "Tunnel aktivieren",
"ngrokDisable": "Tunnel stoppen",
"ngrokUrlNotice": "Erstellt einen öffentlichen Ngrok-Tunnel.",
"ngrokAuthTokenLabel": "Authtoken (Erforderlich, wenn NGROK_AUTHTOKEN nicht festgelegt ist)",
"ngrokAuthTokenPlaceholder": "Geben Sie Ihr Ngrok-Authentifizierungstoken ein",
"ngrokLastError": "Letzter Fehler: {error}",
"ngrokStarted": "Ngrok-Tunnel gestartet",
"ngrokStopped": "Ngrok-Tunnel gestoppt",
"ngrokRequestFailed": "Der Ngrok-Tunnel konnte nicht aktualisiert werden",
"tokenSaverSubtitle": "Geben Sie bei jeder Anfrage weniger Token aus.",
"tokenSaverToolOutput": "Werkzeugausgabe",
"tokenSaverLlmOutput": "LLM-Ausgabe",
"tokenSaverInputCompression": "Eingabekomprimierung",
"apiEndpointsCatalogUnavailable": "API-Katalog nicht verfügbar",
"apiEndpointsSearchPlaceholder": "Endpunkte suchen...",
"apiEndpointsRequiresAuth": "Erfordert Authentifizierung",
"apiEndpointsNoMatch": "Keine Endpunkte entsprechen Ihrem Filter",
"localServer": "Lokaler Server",
"cloudOmniroute": "Cloud OmniRoute",
"copyUrl": "URL kopieren",
"badgeLoopbackTooltip": "Dieser Endpunkt ist nur lokal erreichbar (nur Loopback)",
"badgeAlwaysProtectedTooltip": "Dieser Endpunkt ist immer geschützt und erfordert eine Autorisierung",
"badgeInternalTooltip": "Dies ist ein interner Systemendpunkt",
"tierAll": "Alle",
"tierAuth": "Authentifiziert",
"tierLoopback": "Loopback",
"tierAlwaysProtected": "Immer geschützt",
"tierPublic": "Öffentlich",
"hideInternal": "Interne ausblenden",
"showInternal": "Interne anzeigen",
"customSystemPromptTitle": "Custom System Prompt",
"customSystemPromptDescription": "Inject a custom system prompt into every model request",
"customSystemPromptPlaceholder": "e.g. Always respond in pirate speak...",
"vscodeAliasTitle": "VS-Code-Token-Alias",
"vscodeAliasDescriptionReady": "Einsatzbereite Kompatibilitäts-URLs über den Endpunkt /api/v1/vscode/TOKEN/…",
"vscodeAliasDescriptionError": "Es werden Platzhalter-URLs angezeigt, da CLI-Schlüssel in dieser Sitzung nicht geladen werden konnten.",
"vscodeAliasDescriptionLoading": "CLI-Schlüssel werden geladen. Bis ein Schlüssel verfügbar ist, werden Platzhalter-URLs angezeigt.",
"vscodeAliasDescriptionPlaceholder": "Es werden Platzhalter-URLs angezeigt. Erstelle oder aktiviere einen API-Schlüssel in CLI-Tools, um TOKEN zu ersetzen.",
"vscodeAliasManage": "CLI-Tools",
"vscodeAliasBaseLabel": "VS-Code-Basis",
"vscodeAliasModelsLabel": "VS-Code-Modelle",
"vscodeAliasChatLabel": "VS-Code-Chat"
},
"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"
},
"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",
"disableLabel": "{label} deaktivieren",
"enableLabel": "{label} aktivieren",
"transportMode": "Transportmodus",
"transportStdioDesc": "Lokal — IDE startet den Prozess über omniroute --mcp",
"transportSseDesc": "Remote — Server-Sent Events über HTTP",
"transportStreamableHttpDesc": "Remote — Modernes bidirektionales HTTP",
"copy": "Kopieren",
"mcpDashboardCopyUrl": "URL kopieren",
"mcpDisabledTitle": "MCP ist deaktiviert",
"mcpDisabledDesc": "Aktiviere MCP oben, um den Transportmodus zu konfigurieren und die Server-Telemetrie anzuzeigen.",
"mcpIntro": "Model Context Protocol — {tools} Werkzeuge über {scopes} Scopes, {transports} Transportarten (stdio / SSE / Streamable HTTP).",
"mcpStep1": "Ausführen über {code}",
"mcpStep2": "Konfiguriere deinen MCP-Client für die Verbindung über stdio-Transport.",
"mcpStep3": "Rufe Werkzeuge wie {code1} und {code2} auf.",
"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",
"apiKeyId": "Api Key Id",
"offset": "Offset",
"limit": "Limit",
"tool": "Tool"
},
"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",
"agentCardPath": "/.well-known/agent.json",
"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",
"tablePhase": "Table Phase",
"offset": "Offset",
"limit": "Limit",
"skill": "Skill",
"rpcEndpoint": "POST /a2a",
"rpcMethodSend": "Nachricht/senden",
"rpcMethodStream": "Nachricht/Stream",
"rpcMethodGet": "Aufgaben/erhalten",
"rpcMethodCancel": "Aufgaben/Abbrechen",
"serviceLabel": "A2A",
"online": "Online",
"offline": "Offline",
"disableLabel": "{label} deaktivieren",
"enableLabel": "{label} aktivieren",
"a2aDisabledTitle": "A2A ist deaktiviert",
"a2aDisabledDesc": "Aktiviere A2A oben, um Task-Telemetrie, Agentendetails und Validierungswerkzeuge anzuzeigen.",
"a2aIntro": "Agent2Agent-JSON-RPC-2.0-Endpunkt — Tasks senden, Antworten streamen, laufende Jobs abbrechen.",
"a2aStep1": "Entdecke die Agent-Card unter {code}.",
"a2aStep2": "Sende JSON-RPC an {code1} mit {code2} oder {code3}.",
"a2aStep3": "Verfolge und storniere Tasks mit {code1} und {code2}."
},
"memory": {
"title": "Memory Management",
"description": "View and manage stored memory entries",
"memories": "Memories",
"totalEntries": "Total Entries",
"tokensUsed": "Tokens Used",
"hitRate": "Hit Rate",
"loading": "Loading memories...",
"noMemories": "No memories found",
"search": "Search memories...",
"allTypes": "All Types",
"export": "Export",
"import": "Import",
"addMemory": "Add Memory",
"type": "Type",
"key": "Key",
"content": "Content",
"created": "Created",
"actions": "Actions",
"delete": "Delete",
"factual": "Factual",
"episodic": "Episodic",
"procedural": "Procedural",
"semantic": "Semantic",
"a": "A",
"pipelineOk": "Pipeline OK ({latencyMs}ms)",
"pipelineError": "Pipelinefehler",
"healthUnknown": "Gesundheitszustand unbekannt",
"checkingHealth": "Überprüfen…",
"checkHealth": "Überprüfen Sie den Gesundheitszustand",
"pageInfo": "Seite {page} von {totalPages} ({total} insgesamt)",
"previous": "Zurück",
"next": "Als nächstes",
"cancel": "Abbrechen",
"save": "Speichern",
"keyPlaceholder": "z.B. user.preferences.theme",
"contentPlaceholder": "Wert oder JSON-Inhalt, den man sich merken sollte",
"compactOld": "Alte komprimieren",
"concept": {
"title": "Konversationsgedächtnis",
"description": "OmniRoute lernt aus jeder Konversation und merkt sich Fakten, Episoden, Abläufe und semantische Konzepte, die Antworten präziser und kontextbewusster machen.",
"howWorksToggle": "So funktioniert es",
"howWorksContent": "1. Automatische Extraktion: Am Ende jeder Antwort werden Fakten und Episoden erkannt und automatisch gespeichert.\n2. Abruf: Vor jeder Antwort werden die relevantesten Erinnerungen per FTS5 (exakt), Vektor (semantisch) oder hybridem RRF gesucht.\n3. Einbindung: Relevante Erinnerungen werden in den Assistant-Kontext eingefügt, um die Antwortqualität zu verbessern.\n4. Verwaltung: Nutze diese Seite, um alte Erinnerungen anzuzeigen, zu bearbeiten, zu exportieren und zu komprimieren."
},
"deleteConfirmDesc": "Diese Aktion kann nicht rückgängig gemacht werden. Die Erinnerung wird dauerhaft entfernt.",
"deleteConfirmTitle": "Erinnerung löschen?",
"editMemory": "Erinnerung bearbeiten",
"editModal": {
"title": "Erinnerung bearbeiten",
"metadataLabel": "Metadaten (JSON)",
"metadataInvalid": "Ungültiges JSON",
"saveFailed": "Speichern der Erinnerung fehlgeschlagen"
},
"embedding": {
"autoLabel": "Automatisch",
"autoDesc": "Verwendet die beste verfügbare Option: Remote-Anbieter > Static > Transformers",
"remoteLabel": "Remote-Anbieter",
"remoteDesc": "Nutzt Embedding über die Anbieter-API (erfordert API-Schlüssel)",
"staticLabel": "Statisch lokal (Potion)",
"staticDesc": "Lokales Embedding ohne WASM oder externe Abhängigkeiten",
"transformersLabel": "Transformers.js (MiniLM)",
"transformersDesc": "Lokales Embedding über @huggingface/transformers (~400 MB RAM)",
"providerModelLabel": "Anbieter / Modell",
"noRemoteProviders": "Keine Anbieter mit konfiguriertem API-Schlüssel",
"selectProviderModel": "Modell auswählen",
"staticEnabledLabel": "Static Potion aktivieren",
"staticEnabledDesc": "Lädt das Modell potion-base-8M herunter und nutzt es lokal",
"transformersEnabledLabel": "Transformers.js aktivieren",
"transformersEnabledDesc": "Opt-in für lokales MiniLM (~400 MB RAM, ~3 s Kaltstart)",
"transformersWarning": "Benötigt ~400 MB RAM und ~3 s Kaltstart bei der ersten semantischen Abfrage."
},
"emptyState": {
"title": "Noch keine Erinnerungen",
"description": "Erinnerungen werden automatisch aus Konversationen erstellt. Du kannst sie auch manuell über die Schaltfläche oben hinzufügen."
},
"engine": {
"statusTitle": "Engine-Status",
"embeddingTitle": "Embedding-Quelle",
"rerankTitle": "Rerank (optional)",
"reindexNow": "Jetzt neu indizieren",
"reindexStarted": "Neuindizierung gestartet ({pending} ausstehend)",
"reindexFailed": "Neuindizierung konnte nicht gestartet werden",
"keywordLabel": "Keyword (FTS5)",
"keywordReason": "Keyword-Suche immer verfügbar",
"embeddingLabel": "Embedding",
"vectorStoreLabel": "Vector Store",
"qdrantLabel": "Qdrant",
"rerankLabel": "Rerank",
"qdrantDisabled": "Deaktiviert",
"qdrantOk": "Gesund ({latencyMs}ms)",
"qdrantError": "Verbindungsfehler",
"needsReindex": "{count} Erinnerung(en) müssen neu indiziert werden",
"configureCta": "Konfigurieren",
"vectorStoreInstallHint": "Um die Vektorsuche zu aktivieren: npm install sqlite-vec ausführen (benötigt natives Node.js, nicht WASM), dann neu starten."
},
"importError": "Import der Datei fehlgeschlagen",
"importResult": "{imported} importiert, {skipped} übersprungen",
"playground": {
"infoTitle": "Memory-Spielwiese",
"infoDesc": "Simuliert, was für eine bestimmte Abfrage abgerufen würde. Es werden keine Erinnerungen verändert — reine Vorschau.",
"queryLabel": "Testabfrage",
"queryPlaceholder": "Frage oder Testphrase eingeben...",
"strategyLabel": "Strategie",
"strategyExact": "Exakt (FTS5)",
"strategySemantic": "Semantisch (Vektor)",
"strategyHybrid": "Hybrid (RRF)",
"budgetLabel": "Budget (Token)",
"simulate": "Simulieren",
"resultsTitle": "{count} Ergebnis(se)",
"resolutionTitle": "Suchauflösung",
"resolutionEmbedding": "Embedding",
"resolutionStore": "Vector Store",
"resolutionStrategy": "Verwendete Strategie",
"rerankApplied": "Rerank angewendet",
"fallback": "Fallback",
"noResults": "Für diese Abfrage wurden keine Erinnerungen gefunden.",
"tokensUsed": "genutzte Token",
"none": "keine",
"errorFetch": "Vorschau konnte nicht geladen werden"
},
"qdrant": {
"title": "Qdrant (Vector Store Stufe 2)",
"description": "Optionale Qdrant-Integration für skalierbare semantische Suche",
"enableLabel": "Qdrant aktivieren",
"enableDesc": "Wenn aktiviert, wird Qdrant als primärer Vector Store verwendet",
"banner": "Vector Store Stufe 2 — eine externe, skalierbare Alternative zum integrierten sqlite-vec (Stufe 1). Aktiviere sie nur, wenn du einen sehr großen Erinnerungsbestand hast oder gemeinsam genutzten Speicher über mehrere Instanzen hinweg möchtest; für die meisten Nutzer reicht sqlite-vec aus. Wenn aktiviert, wird sie zum primären Speicher und fällt bei Nichterreichbarkeit automatisch auf sqlite-vec zurück.",
"hostHelp": "Lokales Docker: http://localhost:6333 · Qdrant Cloud: deine Cluster-URL",
"collectionHelp": "Beliebiger Name — OmniRoute erstellt ihn bei der ersten Verwendung",
"embeddingModelHelp": "Legt die Vektordimension automatisch bei der ersten Verwendung fest. Bestehende Erinnerungen werden nicht nachträglich befüllt; wird das Modell geändert, nachdem bereits Daten vorhanden sind, ist eine neue Collection erforderlich.",
"testConnection": "Verbindung testen",
"testing": "Wird getestet...",
"statusActive": "Aktiv",
"statusError": "Fehler",
"statusDisabled": "Deaktiviert",
"healthOk": "Verbindung OK ({latencyMs}ms)",
"healthError": "Verbindungsfehler",
"saved": "Einstellungen gespeichert",
"saveError": "Speichern fehlgeschlagen",
"portLabel": "Port",
"embeddingModelLabel": "Embedding-Modell",
"optional": "optional",
"apiKeyKeepPlaceholder": "Leer lassen, um den aktuellen Schlüssel zu behalten",
"apiKeyOptional": "Leer lassen, wenn keine Authentifizierung verwendet wird",
"removeApiKey": "Entfernen",
"quickSelectModel": "Schnellauswahl",
"searchTestTitle": "Semantischer Suchtest",
"searchPlaceholder": "Testabfrage eingeben...",
"searching": "Wird gesucht...",
"search": "Suchen",
"cleanupTitle": "Alte Punkte bereinigen",
"cleanupDesc": "Entfernt Qdrant-Punkte für abgelaufene Erinnerungen (Aufbewahrungsfrist).",
"cleaning": "Wird bereinigt...",
"cleanNow": "Jetzt bereinigen",
"cleanupSuccess": "{count} Punkt(e) entfernt",
"cleanupFailed": "Bereinigung fehlgeschlagen"
},
"rerank": {
"enableLabel": "Rerank aktivieren",
"enableDesc": "Ordnet Ergebnisse nach der Suche mit einem Rerank-Modell neu",
"warning": "Rerank erhöht die Latenz um +200–500 ms und verursacht zusätzliche Kosten pro Anfrage. Sparsam einsetzen.",
"providerModelLabel": "Rerank-Anbieter / Modell",
"noProviderWithKey": "Kein Anbieter mit konfiguriertem API-Schlüssel. Konfiguriere einen Anbieter, um Rerank zu nutzen.",
"selectProviderModel": "Anbieter/Modell auswählen"
},
"saving": "Wird gespeichert...",
"summarize": {
"title": "Alte Erinnerungen komprimieren",
"noCandidates": "Keine Erinnerungen für die Komprimierung geeignet (Kriterium: älter als 30 Tage).",
"candidatesDesc": "{count} Erinnerungen werden zu Zusammenfassungen komprimiert. Diese Aktion kann nicht rückgängig gemacht werden.",
"confirm": "Jetzt komprimieren"
},
"tabs": {
"memories": "Erinnerungen",
"playground": "Spielwiese",
"engine": "Engine"
},
"tooltip": {
"totalEntries": "Insgesamt gespeicherte Erinnerungen für diesen API-Schlüssel",
"tokensUsed": "Geschätzte Gesamtzahl an Token, die von aktiven Erinnerungen belegt werden",
"hitRate": "Cache-Trefferquote beim Lesen per ID (keine Genauigkeit des semantischen Abrufs)",
"factual": "Objektive, dauerhafte Fakten aus dem Nutzerkontext",
"episodic": "Ereignisse und Erfahrungen aus dem Konversationsverlauf",
"procedural": "Abläufe, Workflows und Anweisungen, denen der Assistant folgen soll",
"semantic": "Konzepte, Präferenzen und Fachwissen"
},
"memoryEnabled": "Erinnerungen aktiviert"
},
"skills": {
"title": "Skills",
"description": "Manage and monitor AI skills",
"skillsTab": "Skills",
"executionsTab": "Executions",
"sandboxTab": "Sandbox",
"loading": "Loading skills...",
"noSkills": "No skills found",
"noExecutions": "No executions found",
"enabled": "Enabled",
"disabled": "Disabled",
"version": "Version",
"tableDescription": "Description",
"skill": "Skill",
"status": "Status",
"duration": "Duration",
"time": "Time",
"sandboxConfig": "Sandbox Configuration",
"cpuLimit": "CPU Limit",
"cpuLimitDesc": "Maximum execution time per skill",
"memoryLimit": "Memory Limit",
"memoryLimitDesc": "Maximum memory allocation",
"timeout": "Timeout",
"timeoutDesc": "Maximum wait time for response",
"networkAccess": "Network Access",
"networkAccessDesc": "Allow outbound network requests",
"mode": "Mode",
"q": "Q",
"filterSkillsPlaceholder": "Filtern Sie Fähigkeiten nach Name, Beschreibung oder Tag",
"allModes": "Alle Modi",
"totalSkills": "Skills gesamt",
"enabledSkills": "Aktiviert",
"totalExecutions": "Ausführungen",
"successRate": "Erfolgsquote",
"marketplaceTab": "Marketplace",
"applyFilters": "Filter anwenden",
"popularDefaultsLabel": "Standardmäßig beliebt für ausgewählten Anbieter:",
"onMode": "AN",
"offMode": "AUS",
"autoMode": "AUTO",
"installSkillButton": "Skill installieren",
"installSkillModalTitle": "Skill installieren",
"installJsonPlaceholder": "Skill-Manifest-JSON hier einfügen...",
"installing": "Wird installiert...",
"installSuccess": "Skill installiert ({id})",
"installError": "Installation fehlgeschlagen",
"invalidJson": "Ungültiges JSON",
"searchMarketplacePlaceholder": "Skills suchen...",
"searchMarketplace": "Marketplace durchsuchen",
"marketplaceEmpty": "Keine Skills im Marketplace gefunden",
"marketplaceError": "Suche fehlgeschlagen",
"installingFromMarketplace": "Installation aus dem Marketplace...",
"popularSkills": "Beliebte Skills",
"skillsMarketplace": "Kompetenzmarktplatz",
"searching": "Suche läuft...",
"pageInfo": "Seite {page} von {totalPages} ({total} insgesamt)",
"previous": "Zurück",
"next": "Weiter",
"activeProvider": "Aktiver Anbieter:",
"changeInSettings": "Dies in den Einstellungen → Memory & Skills ändern.",
"installs": "Installationen",
"marketplaceSkillsMpHint": "Konfiguriere deinen SkillsMP-API-Schlüssel in den Einstellungen, um den Marketplace zu durchsuchen.",
"marketplaceSkillsShHint": "Durchsuche das offene Verzeichnis skills.sh, um Agent-Skills zu entdecken und zu installieren.",
"installSkillModalDesc": "Füge ein Skill-Manifest-JSON ein oder lade eine .json-Datei hoch.",
"uploadJson": "JSON hochladen",
"cancel": "Abbrechen",
"installSkill": "Skill installieren",
"delete": "Löschen"
},
"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",
"configuredProvidersLabel": "Im Dashboard konfiguriert",
"configuredProvidersHint": "Anbieter mit in /dashboard/providers gespeicherten Anmeldeinformationen, unabhängig vom Laufzeitstatus.",
"activeProviders": "{count} active",
"activeProvidersHint": "Konfigurierte Anbieter, die derzeit für Routing-Anfragen aktiviert sind.",
"monitoredProviders": "{count} monitored",
"monitoredProvidersHint": "Anbieter, die derzeit von Leistungsschalter-Zustandsmonitoren überwacht werden.",
"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}",
"limitExhausted": "Exhausted",
"learnedFromHeaders": "Learned from headers",
"remainingOfLimit": "{remaining}/{limit} remaining",
"throttleStatus": "Throttle: {value}",
"lastHeaderUpdate": "Header update: {age}",
"databaseHealth": "Datenbankzustand",
"stickyBoundSessions": "Sitzungen mit Klebebindung",
"sessionsByApiKey": "Sitzungen nach API-Schlüssel",
"noActiveSessionsTracked": "Es wurden noch keine aktiven Sitzungen erfasst.",
"noSessionQuotaMonitorsActive": "Keine Sitzungskontingentmonitore aktiv.",
"gracefulDegradationStatus": "Anmutiger Degradationsstatus",
"additionalModels": "+{count} weitere Modelle",
"providerHealthMatrixTitle": "Anbieter-Health-Matrix",
"providerHealthMatrixDescription": "Zustände von Anbieter × Konto × Modell aus Breakern, Cooldowns, Sperren und Protokollen.",
"healthMatrixRange": "Zeitraum der Health-Matrix",
"providerFilter": "Anbieterfilter",
"onlyIssues": "Nur Probleme",
"refresh": "Aktualisieren",
"accounts": "Konten",
"models": "Modelle",
"issues": "Probleme",
"loadingProviderHealthMatrix": "Anbieter-Health-Matrix wird geladen...",
"failedProviderHealthMatrix": "Anbieter-Health-Matrix konnte nicht geladen werden: {error}",
"noProvidersMatchedFilters": "Keine Anbieter entsprechen den aktuellen Filtern.",
"modelPillSummary": "{requests} Anfr. · {successRate} Erfolg · {latency} Ø",
"modelLockoutSummary": "{reason} · {duration} verbleibend",
"locked": "gesperrt",
"inferred": "abgeleitet",
"inactive": "Inaktiv",
"noConnectionId": "keine Verbindungs-ID",
"accountModelSummary": "{connectionId} · {count} Modelle",
"cooldown": "Cooldown",
"durationRemaining": "{duration} verbleibend",
"noSyncedModelsOrTraffic": "Noch keine synchronisierten Modelle oder aktueller Traffic.",
"providerRowSummary": "{active}/{total} aktive Konten · {requests} Anfr. · {successRate} Erfolg · {latency} Ø",
"cooldownCount": "{count} Cooldown",
"lockoutCount": "{count} Sperren",
"issueCount": "{count} Probleme",
"score": "Punktzahl",
"lastRequest": "Letzte Anfrage",
"lastError": "Letzter Fehler"
},
"telemetry": {
"title": "Systemtelemetrie",
"description": "Rollierende Anforderungs-, Laufzeit-, Sitzungs- und Speichersignale von diesem OmniRoute-Prozess.",
"uptime": "Betriebszeit",
"totalRequests": "Gesamtzahl der Anfragen",
"avgLatency": "Durchschnittliche Latenz",
"errorRate": "Fehlerrate",
"activeConnections": "Aktive Verbindungen",
"memoryUsage": "Speichernutzung",
"latencyTrend": "Latenztrend",
"throughputTrend": "Durchsatztrend",
"memoryTrend": "Erinnerungstrend",
"refresh": "Aktualisieren",
"updatedAt": "Aktualisiert {time}",
"loadFailed": "Telemetriedaten konnten nicht geladen werden.",
"partialData": "Telemetrie ist teilweise verfügbar: {error}"
},
"mitm": {
"title": "MITM-Proxy",
"description": "Transparenter Proxy zum Abfangen und Weiterleiten von Client-Anfragen.",
"enable": "Aktivieren Sie MITM-Proxy",
"enableDesc": "Starten oder stoppen Sie den lokalen Abfangprozess und die DNS-Überschreibung.",
"status": "Status",
"running": "Laufen",
"stopped": "Angehalten",
"start": "Starten",
"stop": "Stopp",
"refresh": "Aktualisieren",
"port": "Proxy-Port",
"apiKey": "Router-API-Schlüssel",
"apiKeyPlaceholder": "Optional; greift auf einen lokalen Schlüssel zurück",
"sudoPassword": "Sudo-Passwort",
"cachedPassword": "Für diesen Prozess zwischengespeichert",
"saveSettings": "Einstellungen speichern",
"settingsSaved": "MITM-Einstellungen gespeichert.",
"startedSuccess": "MITM-Proxy gestartet.",
"stoppedSuccess": "MITM-Proxy gestoppt.",
"saveFailed": "Die MITM-Einstellungen konnten nicht aktualisiert werden.",
"loadFailed": "MITM-Einstellungen konnten nicht geladen werden.",
"invalidPort": "Für das transparente MITM-Abfangen ist derzeit Port 443 erforderlich.",
"certificate": "CA-Zertifikat",
"certificateReady": "Für die Client-Vertrauensinstallation ist ein Zertifikat verfügbar.",
"certificateMissing": "Das Zertifikat wurde noch nicht generiert.",
"available": "Verfügbar",
"missing": "Fehlt",
"downloadCert": "Laden Sie das CA-Zertifikat herunter",
"regenerateCert": "Zertifikat neu generieren",
"regenerateConfirm": "Dadurch wird die bestehende Client-Vertrauensstellung ungültig. Weitermachen?",
"regenerateSuccess": "MITM-Zertifikat neu generiert.",
"regenerateFailed": "Das MITM-Zertifikat konnte nicht neu generiert werden.",
"targetRoutes": "Zielrouten",
"interceptedRequests": "Abgefangene Anfragen",
"activeConnections": "Aktive Verbindungen",
"dnsConfigured": "DNS konfiguriert",
"pid": "PID",
"lastIntercept": "Letzter Abschnitt",
"target": "Ziel",
"host": "Gastgeber",
"localPort": "Lokaler Hafen",
"endpoints": "Endpunkte",
"enabled": "Aktiviert",
"configured": "Konfiguriert",
"yes": "Ja",
"no": "Nein",
"noTargets": "Keine Zielrouten konfiguriert."
},
"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",
"providerWarningTitle": "Provider Warning Title",
"viewDetails": "View Details",
"eventMetadata": "Event Metadata",
"eventPayload": "Event Payload",
"requestId": "Request Id",
"providerWarningDesc": "Provider Warning Desc",
"a": "A",
"offset": "Offset",
"limit": "Limit",
"status": "Status",
"resourceType": "Resource Type",
"totalEntries": "Total Entries",
"tab": "Tab",
"auditModalSubtitle": "Audit Modal Subtitle",
"close": "Close",
"runningRequests": "Active Requests",
"runningRequestsDesc": "Real-time view of currently running upstream requests",
"clearAll": "Alles löschen",
"confirmClearActiveRequests": "Alle aktiven Anfragen löschen?",
"model": "Model",
"provider": "Provider",
"account": "Account",
"elapsed": "Laufzeit",
"activeStage": "Phase",
"activeStageUnknown": "Noch nicht an Upstream gesendet",
"activeStageRegistered": "Registriert",
"activeStagePayloadPrepared": "Payload vorbereitet",
"activeStageWaitingAccountSlot": "Wartet auf Account-Slot",
"activeStageWaitingRateLimit": "Wartet auf Rate-Limiter",
"activeStageRateLimitSlotAcquired": "Rate-Limit-Slot erhalten",
"activeStageSendingToProvider": "Sendet an Upstream",
"activeStageProviderResponseStarted": "Upstream-Antwort gestartet",
"count": "Count",
"payloads": "Payloads",
"viewPayloads": "View",
"activeCount": "{count} active",
"clientPayload": "Client Request Payload",
"upstreamPayload": "Upstream Provider Payload",
"upstreamNotSentYet": "Not sent to upstream yet",
"runningRequestDetailMeta": "Account: {account} — Elapsed: {elapsed}",
"export": "Export",
"exporting": "Exporting...",
"exportFailed": "Export failed",
"timeRange": "Time Range",
"lastNHours": "Last {hours}",
"defaultRange": "default",
"consoleViewer": {
"fetchFailed": "Failed to fetch logs",
"copyFailed": "Failed to copy log entry",
"copyLogEntry": "Copy log entry"
},
"cleanHistoryButton": "Verlauf löschen",
"cleanHistoryTitle": "Protokollverlauf löschen?",
"cleanHistoryMessage": "Dies löscht dauerhaft alle Anfrage-Protokollzeilen, veraltete Detailzeilen und lokale Artefaktdateien unter DATA_DIR/call_logs. Die Live-Seite wird nach der Bereinigung aktualisiert.",
"cleanHistoryConfirm": "Verlauf löschen",
"cleanHistoryCancel": "Abbrechen",
"cleanHistorySuccess": "{deleted} Protokolleinträge, {deletedArtifacts} Artefakte und {deletedDetailedLogs} veraltete Detailzeilen bereinigt.",
"cleanHistoryEmpty": "Es wurde kein Anfrage-Protokollverlauf gefunden.",
"cleanHistoryFailed": "Bereinigung des Protokollverlaufs fehlgeschlagen.",
"compressionLogTitle": "Komprimierungsprotokoll",
"compressionLogEmpty": "Noch keine komprimierten Anfragen. Komprimierungsstatistiken erscheinen hier, sobald Anfragen mit aktivierter Komprimierung verarbeitet werden.",
"tokens": "Token"
},
"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",
"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",
"apiKeyHelp": "Ein API-Schlüssel ist ein Passwort für KI-Dienste. Holen Sie sich eines von der Website Ihres Anbieters (z. B. platform.openai.com, console.anthropic.com).",
"tier": {
"subtitle": "OmniRoute organisiert Anbieter in drei Ebenen, sodass beim Routing zuerst der zuverlässigste und kostengünstigste Pfad bevorzugt wird.",
"tier1": {
"label": "Premium-Kunden",
"description": "Erstklassige CLIs mit nativen Authentifizierungsflüssen und Argumentationsmodellen."
},
"tier2": {
"label": "Kostenoptimiert",
"description": "Günstige Anbieter mit hohem Durchsatz für den alltäglichen Datenverkehr."
},
"tier3": {
"label": "Fallback & Spezialität",
"description": "Lokal gehostete oder spezielle Endpunkte, die als Fallbacks verwendet werden."
},
"configure": "Anbieter konfigurieren"
},
"tierFlowDiagramAlt": "OmniRoute 3-Stufen-Fallback-Diagramm",
"apiKeyMgmt": "API-Schlüsselverwaltung",
"tiers": "Stufen"
},
"providers": {
"title": "Anbieter",
"allProviders": "Alle Anbieter",
"audioProviders": "Audioanbieter",
"showFreeOnly": "Nur kostenlos",
"addProvider": "Anbieter hinzufügen",
"addFirstProvider": "Fügen Sie Ihren ersten Anbieter hinzu",
"addFirstProviderDesc": "Verbinden Sie einen KI-Anbieter, um mit der Weiterleitung von Anforderungen über OmniRoute zu beginnen. Sie können kostenlose Anbieter, API-Schlüssel oder OAuth-Konten verwenden.",
"learnMore": "Erfahren Sie mehr",
"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",
"warningCount": "{count} Warnung",
"noConnections": "Keine Verbindungen",
"expiredBadge": "Expired",
"expiringSoonBadge": "Expiring Soon",
"freeTier": "Kostenloses Kontingent",
"freeTierAvailable": "Kostenloses Kontingent verfügbar",
"hasFreeTooltip": "Kostenloses Kontingent verfügbar",
"noAuthLabel": "Ohne Auth",
"noAuthProviders": "Anbieter ohne Authentifizierung",
"upstreamProxyLabel": "Upstream-Proxy",
"freeAggregated": "Alle Anbieter mit kostenloser Stufe (auch in ihrer ursprünglichen Kategorie angezeigt)",
"deprecated": "Veraltet",
"deprecatedProvider": "Dieser Anbieter ist veraltet",
"riskNotice": {
"title": "Bevor du fortfährst",
"tooltip": "Anbieter mit Nutzungshinweisen — für Details klicken",
"oauth": "Dieser Anbieter nutzt deine offizielle Produktsitzung/OAuth, die nicht für die Nutzung über Proxy/Router autorisiert ist. Wir empfehlen keine intensive Nutzung durch autonome Agenten (im OpenCloud-Stil, lange mehrstufige Abläufe, große Batches) — der Anbieter kann darauf reagieren, indem er das Konto einschränkt oder sperrt. Nutzung auf eigenes Risiko.",
"webCookie": "Dieser Anbieter authentifiziert sich über deine Web-Sitzungs-Cookies. Der Dienst kann die Sitzung jederzeit ungültig machen, sodass du dich erneut anmelden musst. Nicht empfohlen für lange unbeaufsichtigte Vorgänge. Nutzung auf eigenes Risiko.",
"deprecated": "Dieser Anbieter wurde vom Upstream-Dienst eingestellt und funktioniert möglicherweise ohne Vorankündigung nicht mehr. Bestehende Verbindungen funktionieren unter Umständen weiter, bis der Zugriff vollständig entzogen wird. Ziehe Alternativen in Betracht.",
"dontShowAgain": "Für diesen Anbieter nicht mehr anzeigen",
"understand": "Verstanden, weiter",
"cancel": "Abbrechen"
},
"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",
"showConfiguredOnly": "Configured only",
"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",
"providerTestTimeout": "Provider test timed out — too many connections to test at once",
"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?",
"batchDeleteSelected": "Delete Selected ({count})",
"batchDeleteConfirm": "Delete {count} connection(s)? This action cannot be undone.",
"batchDeleteSuccess": "Deleted {count} connection(s)",
"batchActivateSelected": "Aktivieren",
"batchDeactivateSelected": "Deaktivieren",
"batchRetestSelected": "Erneut testen",
"batchActivateSuccess": "{count} Verbindung(en) aktiviert",
"batchDeactivateSuccess": "{count} Verbindung(en) deaktiviert",
"batchUpdatePartial": "{count} aktualisiert, {skipped} übersprungen (existieren nicht mehr)",
"batchUpdateNone": "Es wurden keine Verbindungen aktualisiert (sie existieren möglicherweise nicht mehr)",
"batchRetestLimit": "Teste bis zu {max} Verbindungen gleichzeitig erneut",
"noConnectionsToTest": "Keine passenden Verbindungen zum Testen",
"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",
"embeddings": "Embeddings",
"audioTranscriptions": "Audio Transcriptions",
"audioSpeech": "Audio Speech",
"imagesGenerations": "Images Generations",
"chatCompletions": "Chat-Abschlüsse",
"importingModels": "Importieren...",
"importFromModels": "Import aus /models",
"modelsImported": "{count} models imported",
"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",
"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",
"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...",
"close": "Close",
"importingModelsTitle": "Modelle importieren",
"copyModel": "Modell kopieren",
"filterModels": "Modelle filtern…",
"modelsActive": "aktiv",
"showModel": "Modell anzeigen",
"hideModel": "Modell ausblenden",
"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",
"codexApplyModalTitle": "Bewerben Sie sich beim Local Codex",
"codexApplyTargetLabel": "Zielpfad",
"codexApplyBackupLabel": "Backups",
"codexApplyWarning": "Dadurch wird die vorhandene auth.json ersetzt. Weitermachen?",
"codexApplyConfirmCheckbox": "Ich bestätige, dass ich die vorhandene auth.json ersetzen möchte",
"codexApply": "Bewerben",
"bulkTabSingle": "Single",
"bulkTabBulkAdd": "Massenhinzufügung",
"bulkAddFormatHint": "Ein Schlüssel pro Zeile. Format: Name|apiKey oder nur apiKey (automatisch nach Index benannt).",
"bulkValidateKeys": "Überprüfen Sie jeden Schlüssel vor dem Speichern (langsamer)",
"bulkAddAllKeys": "Alle Schlüssel hinzufügen",
"bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}",
"bulkFailedCount": "{count, plural, one {# failed} other {# failed}}",
"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",
"repairEnv": "Repair env",
"repairEnvWorking": "Repairing...",
"repairEnvHint": "Restore missing OAuth defaults into .env without overwriting existing values.",
"repairEnvSuccess": "OAuth defaults restored",
"repairEnvFailed": "Failed to repair .env",
"noConnectionsYet": "Noch keine Verbindungen",
"addFirstConnectionHint": "Fügen Sie Ihre erste Verbindung hinzu, um loszulegen",
"addConnection": "Verbindung hinzufügen",
"availableModels": "Verfügbare Modelle",
"builtInModels": "Built-in models",
"builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.",
"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.",
"aliasInputPlaceholder": "alias name",
"clickToSetAlias": "Click to set alias",
"clickToEditAlias": "Alias: {alias} (click to edit)",
"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.",
"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",
"compatUpstreamHeadersLabel": "Extra upstream headers",
"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.",
"compatUpstreamHeaderName": "Header name",
"compatUpstreamHeaderValue": "Value",
"compatUpstreamAddRow": "Add header",
"compatUpstreamRemoveRow": "Remove row",
"compatBadgeUpstreamHeaders": "Headers",
"perModelQuotaLabel": "Per Model Quota Label",
"perModelQuotaDescription": "Per Model Quota Description",
"perModelQuotaToggle": "Kontingent pro Modell umschalten",
"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.",
"selectAllModels": "Select all",
"deselectAllModels": "Deselect all",
"modelsActiveCount": "{active}/{total} active",
"noModelsMatch": "No models match \"{filter}\"",
"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)",
"tokenRefreshed": "Token refreshed successfully",
"tokenRefreshFailed": "Token refresh failed",
"applyCodexAuthLocal": "Apply auth",
"exportCodexAuthFile": "Export auth",
"applyClaudeAuthLocal": "Authentifizierung anwenden",
"exportClaudeAuthFile": "Authentifizierung exportieren",
"importClaudeAuth": "Authentifizierung importieren",
"claudeApplyModalTitle": "Bewerben Sie sich bei Local Claude Code",
"claudeApplyTargetLabel": "Zielpfad",
"claudeApplyBackupLabel": "Backups",
"claudeApplyMcpHint": "Der bestehende MCP-OAuth-Status bleibt erhalten.",
"claudeApplyWarning": "Dadurch wird der vorhandene Abschnitt claudeAiOauth ersetzt. Weitermachen?",
"claudeApplyConfirmCheckbox": "Ich bestätige, dass ich den vorhandenen Abschnitt „claudeAiOauth“ ersetzen möchte",
"claudeApply": "Bewerben",
"claudeAuthAppliedLocal": "Claude-Authentifizierung vor Ort angewendet",
"claudeAuthApplyFailed": "Die lokale Anwendung der Claude-Authentifizierung ist fehlgeschlagen",
"claudeAuthExported": "Claude-Authentifizierungsdatei exportiert",
"claudeAuthExportFailed": "Der Export der Claude-Authentifizierungsdatei ist fehlgeschlagen",
"claudeImportModalTitle": "Importieren Sie Claude Auth",
"claudeImportTabSingle": "Single",
"claudeImportTabBulk": "Masse",
"claudeImportTabUpload": "Datei hochladen",
"claudeImportTabPaste": "JSON einfügen",
"claudeImportFileLabel": "Wählen Sie .credentials.json",
"claudeImportPasteLabel": "Fügen Sie den JSON-Inhalt ein",
"claudeImportEmailLabel": "E-Mail-Adresse des Kontos",
"claudeImportNameLabel": "Verbindungsname (optional)",
"claudeImportOverwriteLabel": "Ersetzen Sie die vorhandene Verbindung, wenn das Konto bereits vorhanden ist",
"claudeImportSubmit": "Importieren",
"claudeImportSuccess": "Claude-Verbindung erfolgreich importiert",
"claudeImportInvalidJson": "Die Datei konnte nicht als JSON geparst werden",
"claudeImportInvalidShape": "Die Datei ist keine gültige .credentials.json-Datei",
"claudeImportDuplicate": "Das Konto existiert bereits – aktivieren Sie „Vorhandenes ersetzen“, um es zu überschreiben",
"claudeImportIdentityUnverified": "Bootstrap konnte das Konto nicht verifizieren. Aktivieren Sie „Vorhandene ersetzen“ oder geben Sie eine E-Mail an.",
"claudeImportFailed": "Import der Claude-Authentifizierung fehlgeschlagen",
"claudeImportBulkModeUpload": "Dateien hochladen",
"claudeImportBulkModePaste": "JSON-Array einfügen",
"claudeImportBulkModeZip": "ZIP hochladen",
"claudeImportBulkUploadHint": "Legen Sie bis zu 50 .credentials.json-Dateien ab oder holen Sie sie ab (jeweils 256 KB, insgesamt 10 MB).",
"claudeImportBulkPasteHint": "Fügen Sie ein Array von Objekten ein: [{ json, name?, email? }...]",
"claudeImportBulkZipHint": "ZIP-Datei mit .json-Einträgen. Maximal 50 Einträge, 10 MB entpackt.",
"claudeImportBulkSubmit": "Alles importieren",
"claudeImportBulkSuccess": "Importierte {count} Claude-Verbindungen",
"claudeImportBulkFailed": "Einige Einträge konnten nicht importiert werden",
"claudeImportBulkZipExtracting": "ZIP extrahieren…",
"claudeImportBulkZipError": "ZIP konnte nicht extrahiert werden",
"geminiAuthAppliedLocal": "Gemini-Authentifizierung lokal angewendet",
"geminiAuthApplyFailed": "Die Gemini-Authentifizierung konnte lokal nicht angewendet werden",
"geminiAuthExported": "Gemini-Authentifizierungsdatei exportiert",
"geminiAuthExportFailed": "Der Export der Gemini-Authentifizierungsdatei ist fehlgeschlagen",
"geminiImportModalTitle": "Gemini-Auth importieren",
"geminiImportTabSingle": "Single",
"geminiImportTabBulk": "Masse",
"geminiImportTabUpload": "Datei hochladen",
"geminiImportTabPaste": "JSON einfügen",
"geminiImportFileLabel": "Wählen Sie oauth_creds.json",
"geminiImportPasteLabel": "Fügen Sie den JSON-Inhalt ein",
"geminiImportEmailLabel": "E-Mail-Adresse des Kontos",
"geminiImportNameLabel": "Verbindungsname (optional)",
"geminiImportOverwriteLabel": "Ersetzen Sie die vorhandene Verbindung, wenn das Konto bereits vorhanden ist",
"geminiImportSubmit": "Importieren",
"geminiImportSuccess": "Gemini-Verbindung erfolgreich importiert",
"geminiImportInvalidJson": "Die Datei konnte nicht als JSON geparst werden",
"geminiImportInvalidShape": "Die Datei ist keine gültige oauth_creds.json",
"geminiImportDuplicate": "Das Konto existiert bereits – aktivieren Sie „Vorhandenes ersetzen“, um es zu überschreiben",
"geminiImportIdentityUnverified": "Die Identität von id_token konnte nicht überprüft werden. Aktivieren Sie „Vorhandene ersetzen“ oder geben Sie eine E-Mail an.",
"geminiImportFailed": "Gemini-Authentifizierung konnte nicht importiert werden",
"geminiImportBulkModeUpload": "Dateien hochladen",
"geminiImportBulkModePaste": "JSON-Array einfügen",
"geminiImportBulkModeZip": "ZIP hochladen",
"geminiImportBulkUploadHint": "Legen Sie bis zu 50 oauth_creds.json-Dateien ab oder holen Sie sie ab (jeweils 256 KB, insgesamt 10 MB).",
"geminiImportBulkPasteHint": "Fügen Sie ein Array von Objekten ein: [{ json, name?, email? }...]",
"geminiImportBulkZipHint": "ZIP mit oauth_creds.json-Einträgen. Maximal 50 Einträge, 10 MB entpackt.",
"geminiImportBulkSubmit": "Alles importieren",
"geminiImportBulkSuccess": "Importierte {count} Gemini-Verbindungen",
"geminiImportBulkFailed": "Einige Einträge konnten nicht importiert werden",
"geminiImportBulkZipExtracting": "ZIP extrahieren…",
"geminiImportBulkZipError": "ZIP konnte nicht extrahiert werden",
"codexAuthAppliedLocal": "Codex auth.json applied locally",
"codexAuthApplyFailed": "Failed to apply Codex auth.json locally",
"codexAuthExported": "Codex auth.json exported",
"codexAuthExportFailed": "Failed to export Codex auth.json",
"importCodexAuth": "Authentifizierung importieren",
"codexImportModalTitle": "Codex-Authentifizierung importieren",
"codexImportTabSingle": "Single",
"codexImportTabBulk": "Masse",
"codexImportTabUpload": "Datei hochladen",
"codexImportTabPaste": "JSON einfügen",
"codexImportFileLabel": "Wählen Sie auth.json",
"codexImportFileHint": "Wählen Sie die aus Codex oder OmniRoute exportierte auth.json-Datei aus.",
"codexImportPasteLabel": "Fügen Sie den JSON-Inhalt ein",
"codexImportEmailLabel": "E-Mail-Adresse des Kontos",
"codexImportEmailHint": "Automatisch aus der Datei erkannt; bei Bedarf bearbeiten.",
"codexImportNameLabel": "Verbindungsname (optional)",
"codexImportOverwriteLabel": "Ersetzen Sie die vorhandene Verbindung, wenn das Konto bereits vorhanden ist",
"codexImportSubmit": "Importieren",
"codexImportSuccess": "Codex-Verbindung erfolgreich importiert",
"codexImportInvalidJson": "Die Datei konnte nicht als JSON geparst werden",
"codexImportInvalidShape": "Die Datei ist kein gültiger Codex auth.json",
"codexImportDuplicate": "Das Konto existiert bereits – aktivieren Sie „Vorhandenes ersetzen“, um es zu überschreiben",
"codexImportFailed": "Codex-Authentifizierung konnte nicht importiert werden",
"codexImportDetectedEmail": "Erkannt: {email}",
"codexImportNoEmailDetected": "In der Datei wurde keine E-Mail gefunden",
"codexImportBulkModeUpload": "Dateien hochladen",
"codexImportBulkModePaste": "Liste einfügen",
"codexImportBulkModeZip": "ZIP-Archiv",
"codexImportBulkUploadHint": "Wählen Sie mehrere .json-Dateien aus oder ziehen Sie sie per Drag & Drop",
"codexImportBulkPasteHint": "JSON-Array [ {...}, {...} ] oder mehrere durch --- getrennte JSONs in einer eigenen Zeile",
"codexImportBulkZipHint": "Laden Sie eine ZIP-Datei mit auth.json-Dateien hoch (maximal 50 Dateien, 10 MB).",
"codexImportBulkSubmit": "Importieren Sie {count}-Konten",
"codexImportBulkLimit": "Maximal 50 Dateien pro Import",
"codexImportBulkSuccess": "{count} importiert",
"codexImportBulkFailed": "{count} fehlgeschlagen",
"codexImportBulkZipExtracting": "ZIP extrahieren…",
"codexImportBulkZipError": "ZIP konnte nicht extrahiert werden",
"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)",
"statusDeactivated": "Deactivated (Manual)",
"statusBanned": "Banned / Sandbox Violation",
"statusCreditsExhausted": "Insufficient Balance / Quota Exhausted",
"showEmails": "Show all emails",
"hideEmails": "Hide all emails",
"a": "A",
"accountConcurrencyCapHint": "Account Concurrency Cap Hint",
"accountConcurrencyCapLabel": "Account Concurrency Cap Label",
"accountIdHint": "Account Id Hint",
"accountIdLabel": "Account Id Label",
"accountIdPlaceholder": "Account Id Placeholder",
"addAnotherApiKey": "Add another API key or paste multiple keys",
"addCcCompatible": "Add Cc Compatible",
"aggregatorsGateways": "Aggregators Gateways",
"enterpriseCloud": "Unternehmen und Cloud",
"apiFormatLabel": "Api Format Label",
"apiKeyOptionalHint": "Api Key Optional Hint",
"apiKeyOptionalLabel": "Api Key Optional Label",
"apiRegionChina": "Api Region China",
"apiRegionHint": "Api Region Hint",
"apiRegionInternational": "Api Region International",
"apiRegionLabel": "Api Region Label",
"apikey": "Apikey",
"audio": "Audio",
"audioProvidersHeading": "Audio Providers Heading",
"cloudAgentProviders": "Cloud-Agent-Anbieter",
"audioShortLabel": "Audio Short Label",
"azureOpenAiBaseUrlHint": "Azure Open Ai Base Url Hint",
"bailianBaseUrlHint": "Bailian Base Url Hint",
"claudeWebCookieHint": "Open claude.ai → DevTools → Application → Cookies → claude.ai, copy the 'sessionKey' value. Also need cf_clearance, __cf_bm, _cfuvid for Cloudflare.",
"claudeWebCookiePlaceholder": "sessionKey=sk-ant-...",
"blackboxWebCookieHint": "Blackbox Web Cookie Hint",
"blackboxWebCookiePlaceholder": "Blackbox Web Cookie Placeholder",
"t3ChatWebCookieHint": "Öffnen Sie t3.chat → DevTools → Anwendung → Lokaler Speicher → https://t3.chat, kopieren Sie „convex-session-id“. Öffnen Sie dann DevTools → Netzwerk und kopieren Sie den vollständigen Cookie-Header aus jeder Chat-Anfrage. Fügen Sie beide Werte in die Felder unten ein.",
"t3ChatWebCookiePlaceholder": "convex-session-id=abc123...",
"blockClaudeExtraUsageDescription": "Block Claude Extra Usage Description",
"blockClaudeExtraUsageLabel": "Block Claude Extra Usage Label",
"bulkPasteAdded": "{count, plural, one {1 key added} other {# keys added}}",
"bulkPasteDuplicatesIgnored": "{count, plural, one {1 duplicate skipped} other {# duplicates skipped}}",
"bulkPasteHint": "Paste one API key per line. Empty lines are ignored and duplicate keys are skipped.",
"ccCompatibleBaseUrlHint": "Cc Compatible Base Url Hint",
"ccCompatibleBaseUrlPlaceholder": "Cc Compatible Base Url Placeholder",
"ccCompatibleChatPathHint": "Cc Compatible Chat Path Hint",
"ccCompatibleContext1mDescription": "Cc Compatible Context1M Description",
"ccCompatibleContext1mLabel": "Cc Compatible Context1M Label",
"ccCompatibleRedactThinkingDescription": "Adds the redact-thinking beta header for CC Compatible upstreams that require hidden Claude thinking streams.",
"ccCompatibleRedactThinkingLabel": "Enable redact-thinking beta",
"ccCompatibleSummarizeThinkingDescription": "Adds `display: \"summarized\"` to CC Compatible thinking requests so supported Claude models stream visible thinking deltas.",
"ccCompatibleSummarizeThinkingLabel": "Enable summarized thinking display",
"ccCompatibleDetailsTitle": "Cc Compatible Details Title",
"ccCompatibleLabel": "Cc Compatible Label",
"ccCompatibleModelsDescription": "Cc Compatible Models Description",
"ccCompatibleNameHint": "Cc Compatible Name Hint",
"ccCompatibleNamePlaceholder": "Cc Compatible Name Placeholder",
"ccCompatiblePrefixHint": "Cc Compatible Prefix Hint",
"ccCompatiblePrefixPlaceholder": "Cc Compatible Prefix Placeholder",
"ccCompatibleValidationHint": "Cc Compatible Validation Hint",
"claudeExtraUsageShort": "Claude Extra Usage Short",
"claudeExtraUsageToggleTitle": "Claude Extra Usage Toggle Title",
"codex5hToggleTitle": "Codex5H Toggle Title",
"codexFastServiceTierDescription": "Use the priority service tier for Codex requests when available.",
"codexFastServiceTierLabel": "Codex fast service tier",
"codexWeeklyToggleTitle": "Codex Weekly Toggle Title",
"compatUpstreamHeaderNamePlaceholder": "Compat Upstream Header Name Placeholder",
"compatUpstreamHeaderValuePlaceholder": "Compat Upstream Header Value Placeholder",
"compatible": "Compatible",
"configuredCount": "Configured Count",
"consoleApiKeyOracleHint": "Console Api Key Oracle Hint",
"consoleApiKeyOracleLabel": "Console Api Key Oracle Label",
"consoleApiKeyOraclePlaceholder": "Console Api Key Oracle Placeholder",
"cpaModeDisabledTitle": "Cpa Mode Disabled Title",
"cpaModeEnabledTitle": "Cpa Mode Enabled Title",
"customUserAgentHint": "Custom User Agent Hint",
"customUserAgentLabel": "Custom User Agent Label",
"databricksBaseUrlHint": "Databricks Base Url Hint",
"defaultThinkingStrengthHint": "Used when a request does not specify reasoning effort.",
"defaultThinkingStrengthLabel": "Default thinking strength",
"deleteAllExtraApiKeys": "Delete all",
"excludedModelsHint": "Excluded Models Hint",
"excludedModelsLabel": "Excluded Models Label",
"excludedModelsPlaceholder": "Excluded Models Placeholder",
"expirationBannerExpired": "Expiration Banner Expired",
"expirationBannerExpiredDesc": "Expiration Banner Expired Desc",
"expirationBannerExpiringSoon": "Expiration Banner Expiring Soon",
"expirationBannerExpiringSoonDesc": "Expiration Banner Expiring Soon Desc",
"extraApiKeyMasked": "Key {index}: {prefix}••••{suffix}",
"extraApiKeysHint": "Extra Api Keys Hint",
"extraApiKeysLabel": "Extra Api Keys Label",
"apiKeyHealthLabel": "API Key Health",
"apiKeyStatusActive": "Active",
"apiKeyStatusWarning": "Warning ({count} failures)",
"apiKeyStatusInvalid": "Invalid",
"primaryKey": "Primary Key",
"apiKeyInvalidAlert": "{count} API key(s) marked as invalid due to authentication failures in connections: {connections}. They will be skipped in rotation. Click to review.",
"apiKeyInvalidAlertTitle": "API Key Health Alert",
"apiKeyWarningAlert": "{count} API key(s) in warning state due to elevated failure rate in connections: {connections}. Review to prevent rotation issues.",
"apiKeyWarningAlertTitle": "API Key Warning",
"googlePseInfo": "Google Pse Info",
"antigravityProjectIdHint": "Optionale Überschreibung für Antigravity Cloud Code-Anfragen. Lassen Sie das Feld leer, um das während Google OAuth erkannte Projekt zu verwenden.",
"antigravityClientProfileLabel": "Client-Profil",
"antigravityClientProfileHint": "Wähle, welche Antigravity-Client-Identität OmniRoute gegenüber der API verwendet.",
"antigravityClientProfileIde": "IDE",
"antigravityClientProfileHarness": "Harness / CLI",
"codexFastTierActiveChip": "Codex Fast Tier ist aktiv",
"tierFast": "Schnell",
"antigravityProjectIdLabel": "Google Cloud-Projekt-ID",
"antigravityProjectIdPlaceholder": "meine-gcp-projekt-id",
"grokWebCookieHint": "Grok Web Cookie Hint",
"grokWebCookiePlaceholder": "Grok Web Cookie Placeholder",
"herokuBaseUrlHint": "Heroku Base Url Hint",
"hideEmail": "Hide Email",
"imageProviders": "Image Providers",
"videoProviders": "Videogenerierung",
"embeddingRerankProviders": "Einbettungen und Neubewertung",
"imagesShortLabel": "Images Short Label",
"llmProviders": "Llm Providers",
"localProviderApiKeyOptionalHint": "Local Provider Api Key Optional Hint",
"localProviderBaseUrlHint": "Local Provider Base Url Hint",
"localProviders": "Local Providers",
"maxConcurrentWholeNumberError": "Max Concurrent Whole Number Error",
"museSparkWebCookieHint": "Muse Spark Web Cookie Hint",
"museSparkWebCookiePlaceholder": "Muse Spark Web Cookie Placeholder",
"oauth": "Oauth",
"openCliTools": "Open Cli Tools",
"openSettings": "Open Settings",
"openaiResponsesStoreDescription": "Allow compatible Responses API requests to preserve stored response state.",
"openaiResponsesStoreLabel": "OpenAI Responses store",
"perplexitySearchSharedKeyInfo": "Perplexity Search Shared Key Info",
"perplexityWebCookieHint": "Perplexity Web Cookie Hint",
"perplexityWebCookiePlaceholder": "Perplexity Web Cookie Placeholder",
"personalAccessTokenLabel": "Personal Access Token Label",
"qoderPatHint": "Qoder Pat Hint",
"qoderPatPlaceholder": "Qoder Pat Placeholder",
"refreshOauthTokenTitle": "Refresh Oauth Token Title",
"regionHint": "Region Hint",
"regionLabel": "Region Label",
"removeThisKey": "Remove This Key",
"routingTagsHint": "Routing Tags Hint",
"routingTagsLabel": "Routing Tags Label",
"routingTagsPlaceholder": "Routing Tags Placeholder",
"search": "Search",
"searchEngineIdHint": "Search Engine Id Hint",
"searchEngineIdLabel": "Search Engine Id Label",
"searchEngineIdRequired": "Search Engine Id Required",
"searchProvider": "Search Provider",
"searchProviderDesc": "Search Provider Desc",
"searchProviders": "Anbieter suchen...",
"searchProvidersHeading": "Search Providers Heading",
"searxngBaseUrlHint": "Searxng Base Url Hint",
"searxngInfo": "Searxng Info",
"sessionCookieLabel": "Session Cookie Label",
"showEmail": "Show Email",
"snowflakeBaseUrlHint": "Snowflake Base Url Hint",
"supportedEndpointAudio": "Supported Endpoint Audio",
"supportedEndpointChat": "Supported Endpoint Chat",
"supportedEndpointEmbeddings": "Supported Endpoint Embeddings",
"supportedEndpointImages": "Supported Endpoint Images",
"supportedEndpointsLabel": "Supported Endpoints Label",
"tagGroupHint": "Tag Group Hint",
"tagGroupLabel": "Tag Group Label",
"tagGroupPlaceholder": "Tag Group Placeholder",
"testModel": "Test Model",
"testingModel": "Testing Model",
"toggleOffShort": "Toggle Off Short",
"toggleOnShort": "Toggle On Short",
"tokenExpiredBadge": "Token Expired Badge",
"tokenExpiredTitle": "Token Expired Title",
"tokenExpiresSoonTitle": "Token Expires Soon Title",
"tokenShort": "Token Short",
"totalKeysRotating": "{count, plural, one {1 key rotating} other {# keys rotating}}",
"unhideModel": "Unhide Model",
"upstreamProxyProviders": "Upstream Proxy Providers",
"validationModelIdHint": "Validation Model Id Hint",
"validationModelIdLabel": "Validation Model Id Label",
"validationModelIdPlaceholder": "Validation Model Id Placeholder",
"vertexServiceAccountPlaceholder": "Paste your Service Account JSON ({\"type\":\"service_account\",\"project_id\":\"…\",\"client_email\":\"…\",\"private_key\":\"…\"}) or an OAuth access_token",
"webCookieProviders": "Web Cookie Providers",
"weeklyShort": "Weekly Short",
"xiaomiMimoBaseUrlHint": "Xiaomi Mimo Base Url Hint",
"zedImportButton": "Zed Import Button",
"zedImportFailed": "Zed Import Failed",
"zedImportHint": "Zed Import Hint",
"zedImportNetworkError": "Zed Import Network Error",
"zedImportNone": "Zed Import None",
"zedImportSuccess": "Zed Import Success",
"zedImporting": "Zed Importing",
"freeTierProviders": "Kostenlose Anbieter",
"freeTierLabel": "Kostenloses Kontingent verfügbar",
"freeTierProvidersDesc": "Anbieter mit kostenlosen Stufen – einige erfordern eine API-Schlüsselanmeldung, andere benötigen überhaupt keine Anmeldeinformationen.",
"providerSummaryAll": "Insgesamt",
"ideProviders": "IDE-Anbieter",
"ideProvidersDesc": "Redakteure mit integriertem KI-Abonnement. Verwenden Sie die Anbieterseite, um Anmeldeinformationen direkt aus dem IDE-Schlüsselbund zu importieren.",
"noIdeProviders": "Kein IDE-Anbieter entspricht den aktuellen Filtern.",
"providerDetailFastTierTooltip": "Wenden Sie die Codex Fast-Stufe standardmäßig auf alle Codex-Verbindungen an",
"providerDetailFastDefaultLabel": "Schneller Standard",
"providerDetailBrowserManualConnect": "Browser-/manuelle Verbindung",
"providerDetailAuthUrl": "Authentifizierungs-URL",
"providerDetailCallbackUrl": "Rückruf-URL",
"providerDetailValidClaudeCredentialsFile": "Gültige Claude-Anmeldeinformationsdatei",
"providerDetailPathAutoDetectedAllOs": "Der Pfad wird je nach Betriebssystem (Linux/Mac/Windows) automatisch erkannt.",
"providerDetailMyClaudeAccountPlaceholder": "Mein Claude-Konto",
"providerDetailPathAutoDetected": "Der Pfad wird je nach Betriebssystem (Linux/Mac) automatisch erkannt.",
"webFetch": "Web-Abruf",
"webFetchTooltip": "Anbieter, die Inhalte aus Web-URLs extrahieren (HTML → Markdown, Scraping, Screenshot)",
"webFetchProvidersHeading": "Web-Abruf-Anbieter",
"compatibleProvidersDesc": "OpenAI-kompatible und Anthropic-kompatible Endpunkte, die du selbst hostest oder konfigurierst. Richte ein beliebiges OpenAI SDK auf deine eigene URL und leite Anfragen hierher weiter.",
"oauthProvidersDesc": "Anbieter, die über OAuth authentifiziert werden — einmal anmelden, und OmniRoute übernimmt die Token-Rotation automatisch.",
"webCookieProvidersDesc": "Diese Anbieter verwenden Browser-Web-Sessions, Cookies oder Web-Tokens statt API-Schlüsseln. Öffnen Sie einen Anbieter, um die erforderlichen Session-Zugangsdaten hinzuzufügen.",
"apiKeyProvidersDesc": "Standard-API-Schlüssel-Anbieter. Füge deinen Schlüssel einmal hinzu, und OmniRoute übernimmt für dich Routing, Wiederholungsversuche und Rate-Limiting.",
"noAuthProvidersDesc": "Offene Endpunkte, die keine Anmeldedaten benötigen — sofort einsatzbereit, ganz ohne Registrierung.",
"upstreamProxyProvidersDesc": "Leite ausgehenden Traffic über einen Upstream-Proxy, bevor er den Anbieter erreicht. Nützlich für Unternehmensnetzwerke oder Traffic-Inspektion.",
"webFetchProvidersDesc": "Anbieter, die Inhalte aus Web-URLs abrufen und extrahieren. Nutze sie, um Prompts mit aktuellen Webdaten zu untermauern.",
"aggregatorsGatewaysDesc": "Multi-Provider-Aggregatoren und KI-Gateways, die eine einzige einheitliche API über Dutzende zugrunde liegender Modelle bereitstellen.",
"enterpriseCloudDesc": "Modelle der Enterprise-Stufe und Cloud-gehostete Modelle mit erweiterten SLAs, Compliance-Zertifizierungen und dedizierter Kapazität.",
"cloudAgentProvidersDesc": "Autonome Cloud-Agenten, die lang laufende Aufgaben mit Plangenehmigung und Live-Statusverfolgung ausführen.",
"localProvidersDesc": "Selbst gehostete Modelle, die auf deiner eigenen Hardware laufen. Es verlassen keine Daten deine Infrastruktur.",
"searchProvidersDesc": "Web- und Dokumentensuche-Anbieter. Binde sie in LLM-Aufrufe ein für Retrieval-Augmented Generation.",
"audioProvidersDesc": "Text-zu-Sprache- und Sprache-zu-Text-Anbieter für Sprach-I/O und Audio-Transkriptions-Pipelines.",
"embeddingRerankProvidersDesc": "Vektor-Embedding- und Reranking-Anbieter für semantische Suche, RAG-Pipelines und Ähnlichkeitsbewertung.",
"imageProvidersDesc": "Bildgenerierungs- und Vision-Anbieter — erstelle Bilder aus Text oder analysiere vorhandene.",
"videoProvidersDesc": "Anbieter für Videogenerierung. Erstelle kurze Videoclips aus Text-Prompts oder Bildern.",
"onboardingWizard": "Anbieter-Onboarding-Assistent",
"onboardingWizardShort": "Onboarding-Assistent",
"onboardingWizardDescription": "Verbinden Sie API-Schlüssel-, benutzerdefinierte kompatible und OAuth-Anbieter mit Validierung, Persistenz und einem sofortigen Verbindungstest.",
"onboardingStepType": "Typ",
"onboardingStepProvider": "Anbieter",
"onboardingStepCredentials": "Anmeldeinformationen",
"onboardingStepResult": "Ergebnis",
"onboardingTypeApiKeyTitle": "API-Schlüsselanbieter",
"onboardingTypeApiKeyText": "Nutzen Sie integrierte Anbieter wie OpenAI, Anthropic, Gemini, Groq, Azure und mehr.",
"onboardingTypeCustomTitle": "Benutzerdefinierter kompatibler Anbieter",
"onboardingTypeCustomText": "Erstellen Sie einen mit OpenAI, Anthropic oder Claude Code kompatiblen Endpunkt und fügen Sie seinen Schlüssel hinzu.",
"onboardingTypeOAuthTitle": "OAuth-Anbieter",
"onboardingTypeOAuthText": "Verwenden Sie die vorhandenen OAuth-, Gerätecode- oder lokalen Importabläufe für Codierungsanbieter wieder.",
"onboardingChooseOAuthProvider": "Wählen Sie einen OAuth-Anbieter",
"onboardingChooseApiKeyProvider": "Wählen Sie einen API-Schlüsselanbieter",
"onboardingChooseProviderDescription": "Wählen Sie einen Anbieter aus, dann führt Sie der Assistent durch die Anmeldeinformationen und Tests.",
"onboardingChangeType": "Typ ändern",
"onboardingChangeProvider": "Anbieter wechseln",
"onboardingSearchProviders": "Suchanbieter…",
"onboardingApiKeyOptional": "API-Schlüssel optional",
"onboardingProviderConnected": "Anbieter verbunden",
"onboardingProviderSavedWithWarnings": "Anbieter mit Warnungen gespeichert",
"onboardingProviderFinished": "Anbieter-Onboarding abgeschlossen",
"onboardingYourProviderConnection": "Ihr Provider-Anschluss",
"onboardingTestPassed": "Test bestanden",
"onboardingTestFailed": "Test fehlgeschlagen",
"onboardingOpenProviderDetails": "Anbieterdetails öffnen",
"onboardingTryInPlayground": "Versuchen Sie es auf dem Spielplatz",
"onboardingDefaultConnectionName": "{provider} Primär",
"onboardingTestingConnection": "Provider-Verbindung testen…",
"onboardingValidatingCredentials": "Anmeldeinformationen werden validiert…",
"onboardingSavingConnection": "Providerverbindung wird gespeichert…",
"onboardingProviderFailed": "Das Anbieter-Onboarding ist fehlgeschlagen",
"onboardingCreatingCompatibleProvider": "Kompatiblen Anbieter erstellen…",
"onboardingSavingCompatibleConnection": "Kompatible Anbieterverbindung wird gespeichert…",
"onboardingCustomProviderFallbackName": "Benutzerdefinierter Anbieter",
"onboardingCustomProviderFailed": "Das Onboarding des benutzerdefinierten Anbieters ist fehlgeschlagen",
"onboardingLoadingOAuthConnection": "OAuth-Verbindung wird geladen…",
"onboardingOAuthNoConnectionFound": "OAuth beendet, aber es wurde keine Anbieterverbindung gefunden.",
"onboardingOAuthFailed": "Das OAuth-Onboarding ist fehlgeschlagen",
"onboardingAddProvider": "{provider} hinzufügen",
"onboardingConnectionName": "Verbindungsname",
"onboardingApiKeyOptionalLabel": "API-Schlüssel (optional)",
"onboardingBaseUrlOverride": "Basis-URL-Überschreibung",
"onboardingBaseUrlOverrideHint": "Optional. Gespeichert als „providerSpecificData.baseUrl“.",
"onboardingRegion": "Region",
"onboardingSearchCx": "Suchen Sie nach CX/Engine-ID",
"onboardingProviderSpecificIdPlaceholder": "Optionale anbieterspezifische ID",
"onboardingCustomUserAgent": "Benutzerdefinierter Benutzeragent",
"onboardingWorking": "Arbeiten…",
"onboardingValidateSaveTest": "Validieren, speichern und testen",
"onboardingBack": "Zurück",
"onboardingCreateCustomCompatibleProvider": "Erstellen Sie einen benutzerdefinierten kompatiblen Anbieter",
"onboardingCreateCustomCompatibleDescription": "Der Assistent erstellt zunächst einen Anbieterknoten, speichert und testet dann seine API-Schlüsselverbindung.",
"onboardingProtocol": "Protokoll",
"onboardingOpenAiCompatible": "OpenAI-kompatibel",
"onboardingAnthropicCompatible": "Anthropisch-kompatibel",
"onboardingClaudeCodeCompatible": "Claude Code-kompatibel",
"onboardingProviderPrefix": "Anbieterpräfix",
"onboardingProviderPrefixHint": "Wird zum Generieren der verwalteten Anbieter-ID verwendet.",
"onboardingChatPath": "Chatpfad",
"onboardingModelsPath": "Modellpfad",
"onboardingCreateSaveTest": "Erstellen, speichern und testen",
"onboardingConnectProvider": "Verbinden Sie {provider}",
"onboardingOAuthFlowDescription": "OmniRoute öffnet den vorhandenen OAuth-Flow für diesen Anbieter. Nach der Anmeldung lädt der Assistent die gespeicherte Verbindung neu und führt denselben Verbindungstest wie auf der Anbieterseite durch.",
"onboardingStartOAuthFlow": "Starten Sie den OAuth-Flow",
"passthroughModelsDescription": "{provider} akzeptiert provider-native Modell-IDs. Importiere sie über /models oder füge eigene IDs fürs Routing hinzu.",
"bedrockModelsDescription": "Amazon-Bedrock-Modelle hängen von der AWS-Region ab. Importiere sie über /models oder füge Bedrock-Modell-IDs hinzu, die in der gewählten Region aktiviert sind.",
"bedrockModelPlaceholder": "anthropic.claude-sonnet-4-6",
"addProviderSessionCookieTitle": "Session-Cookie für {provider} hinzufügen",
"addProviderWebTokenTitle": "Web-Token für {provider} hinzufügen",
"addProviderConnectionTitle": "Verbindung für {provider} hinzufügen",
"webTokenCredentialLabel": "Web-Session-Token",
"webNoAuthCredentialLabel": "Keine Zugangsdaten erforderlich",
"webCookieCredentialHint": "Erforderliches Cookie: {credential}. Fügen Sie den Cookie-Header-Wert aus Ihrer eigenen angemeldeten {provider}-Web-Session ein. Lassen Sie das Präfix Cookie: weg.",
"webTokenCredentialHint": "Zugangsdaten: {credential}. Fügen Sie den Token-Wert aus Ihrer eigenen angemeldeten {provider}-Web-Session ein oder, falls vom Anbieter unterstützt, einen DevTools-HAR-Export.",
"webCookieEditHint": "Leer lassen, um das aktuelle Session-Cookie beizubehalten. Erforderliches Cookie: {credential}.",
"webTokenEditHint": "Leer lassen, um das aktuelle Web-Session-Token beizubehalten. Zugangsdaten: {credential}.",
"webSessionGuideTitle": "So erhalten Sie die Session-Zugangsdaten",
"webSessionGuideIntro": "{provider} verwendet eine Browser-Web-Session statt eines API-Schlüssels.",
"webCookieRequiredCredential": "Erforderliches Cookie: {credential}",
"webTokenRequiredCredential": "Erforderliches Token: {credential}",
"webSessionGuideStep1": "Melden Sie sich im Browser bei {provider} an.",
"webSessionGuideStep2": "Öffnen Sie die Entwicklertools des Browsers und prüfen Sie eine Anfrage der Web-App.",
"webSessionGuideStep3": "Kopieren Sie die erforderlichen Zugangsdaten von der Domain des Anbieters. Bei Cookies nur den Cookie-Header-Wert kopieren und Cookie: weglassen.",
"webSessionGuideStep4": "Fügen Sie den Wert hier ein und prüfen Sie die Verbindung. Falls er nicht mehr funktioniert, melden Sie sich erneut an und ersetzen ihn durch einen frischen Wert.",
"webSessionSecurityHint": "Behandeln Sie dies wie ein Passwort: Es kann Zugriff auf Ihr angemeldetes Webkonto ermöglichen, bis es abläuft oder widerrufen wird.",
"webNoAuthGuideTitle": "Keine Zugangsdaten erforderlich",
"webNoAuthGuideBody": "{provider} benötigt keinen API-Schlüssel und kein Cookie. Speichern Sie die Verbindung, um den kostenlosen Web-Endpunkt zu verwenden.",
"webSessionCredentialValidationFailed": "Validierung der Session-Zugangsdaten fehlgeschlagen. Melden Sie sich erneut an, kopieren Sie frische Zugangsdaten und versuchen Sie es noch einmal.",
"checkCookie": "Cookie prüfen",
"checkWebToken": "Token prüfen",
"filterAll": "Alle",
"filterActive": "Aktiv",
"filterError": "Fehler",
"filterBanned": "Gesperrt",
"filterCreditsExhausted": "Guthaben aufgebraucht",
"contextWindowOverrideLabel": "Kontextfenster-Override",
"contextWindowOverridePlaceholder": "z. B. 131072",
"contextWindowOverrideHint": "Lege das tatsächliche Kontextfenster (Token) dieses Modells manuell fest, wenn der Anbieter falsche Werte meldet. Hat Vorrang vor automatisch erkannten Werten oder Katalogwerten und verhindert, dass das Modell beim Combo-Routing herausfällt.",
"contextWindowOverrideInvalid": "Der Kontextfenster-Override muss eine positive ganze Zahl von Token sein",
"Account Deactivated": "Konto deaktiviert",
"adaptaTutorial": {
"title": "So verbindest du Adapta Web",
"introPrefix": "Adapta authentifiziert sich über Clerk. Das Token",
"introSuffix": "ist ein langlebiges JWT, mit dem OmniRoute Sitzungen automatisch erneuern kann.",
"or": "oder",
"step1Title": "Adapta-Chat öffnen",
"step1DescPrefix": "Öffne",
"step1DescSuffix": "und melde dich mit deinem Gold- oder Business-Konto an.",
"step2Title": "DevTools öffnen",
"step2DescPrefix": "Drücke",
"step2DescSuffix": "um die Entwicklertools zu öffnen.",
"step3Title": "Gehe zu Application → Cookies",
"step3DescPrefix": "Im",
"step3DescMiddle": "erweitere",
"step3DescSuffix": "und klicke",
"step4Title": "Kopiere den Cookie-Wert für",
"step4DescPrefix": "Suche den Cookie mit dem Namen",
"step4DescMiddle": "in der Liste. Klicke ihn an und kopiere den Inhalt aus der",
"step4DescSuffix": "Spalte. Er beginnt mit",
"step5Title": "Hier einfügen und speichern",
"step5DescPrefix": "Klicke",
"step5DescMiddle": "füge den",
"step5DescSuffix": "Wert in das API-Schlüssel-Feld ein und speichere. OmniRoute erneuert die Sitzung automatisch.",
"tipLabel": "Tipp:",
"tipPrefix": "Der",
"tipSuffix": "Cookie ist langlebig, meist für Monate. Du musst ihn nur erneuern, wenn du dich abmeldest oder Adapta die Sitzung invalidiert."
},
"distributeProxies": "Proxys verteilen",
"distributing": "Wird verteilt...",
"selectedCount": "{count, plural, one {# ausgewählt} other {# ausgewählt}}",
"accountsCount": "{count, plural, one {# Konto} other {# Konten}}",
"testAllModels": "Alle Modelle testen",
"testAllModelsConfirm": "Alle sichtbaren Modelle testen? Fehlgeschlagene Modelle werden ausgeblendet, wenn automatisches Ausblenden aktiviert ist.",
"testingAllModels": "Teste {done}/{total}...",
"testAllResults": "{ok} von {total} Modellen funktionieren",
"noModelsToTest": "Keine Modelle entsprechen dem aktuellen Filter",
"showAllModels": "Alle",
"showVisibleOnly": "Nur sichtbare",
"freeFilterAll": "Alle",
"freeFilterFreeOnly": "Nur kostenlos",
"freeFilterPaidOnly": "Nur kostenpflichtig",
"sortFreeFirst": "Kostenlose zuerst",
"showHiddenOnly": "Nur ausgeblendete",
"filterByVisibility": "Nach Sichtbarkeit filtern",
"autoHideFailed": "Fehlgeschlagene Modelle automatisch ausblenden",
"autoHideFailedHint": "Wenn aktiviert, blendet „Alle testen“ dauerhafte Fehler aus öffentlichen Katalogen wie /v1/models aus. Einzelmodell-Tests blenden nie automatisch aus.",
"testAllCompleted": "{total} Modelle getestet: {ok} OK, {failed} fehlgeschlagen",
"modelAutoHidden": "Modell {model} automatisch ausgeblendet (Test fehlgeschlagen)",
"filterVisible": "Nur sichtbare",
"filterHidden": "Nur ausgeblendete",
"modelsHiddenCount": "{count} ausgeblendet",
"iconUrlLabel": "Icon-URL",
"iconUrlHint": "Optional. Bild-URL, die als Icon dieses Anbieters angezeigt wird.",
"batchDeleteConfirmTitle": "Verbindungen löschen",
"batchDeleteConfirmButton": "Löschen",
"noFilteredConnections": "Keine Verbindungen entsprechen dem aktuellen Filter.",
"setAliasSuccess": "Alias {alias} gesetzt",
"deleteAliasSuccess": "Alias {alias} gelöscht",
"noFreeModelsFound": "Keine kostenlosen Modelle für diesen Anbieter gefunden — nichts importiert.",
"fetchModelsSuccess": "{count} neue Modelle gefunden",
"fetchModelsFailed": "Modelle konnten nicht automatisch abgerufen werden (du kannst es in den Einstellungen erneut versuchen)",
"testAllRateLimited": "Ratenlimit erreicht, vorzeitig gestoppt",
"hideFailedAuto": "Fehlgeschlagene Modelle automatisch ausblenden",
"hideAllModels": "Alle ausblenden",
"testAllProgress": "{done}/{total} getestet",
"testAllFailedHidden": "{count} fehlgeschlagene Modelle ausgeblendet",
"testAllDone": "Alle Modelle getestet",
"compatibleDefaultModelLabel": "Standardmodell",
"compatibleDefaultModelHint": "Gib die Modell-ID genau so ein, wie dein kompatibler Endpunkt sie erwartet. Dieses Modell wird als Standard für die Verbindung gespeichert.",
"errorTypeCreditsExhausted": "Kein Guthaben",
"errorTypeBanned": "403 Gesperrt",
"proxyOn": "Proxy an",
"proxyOff": "Direkt (Proxy umgehen)",
"proxyEnabledTitle": "Proxy ist für diese Verbindung aktiviert",
"proxyDisabledTitle": "Direkte Verbindung — umgeht jeden Proxy (einschließlich des globalen Proxys) für diese Verbindung",
"perKeyProxyOn": "Pro Schlüssel",
"perKeyProxyOff": "Verbindung",
"perKeyProxyEnabledTitle": "Pro-Schlüssel-Proxy-Zuweisung für diesen Anbieter aktiviert",
"perKeyProxyDisabledTitle": "Pro-Schlüssel-Proxy-Zuweisung für diesen Anbieter deaktiviert",
"targetFormatLabel": "Zielformat",
"targetFormatHint": "Überschreibt das Wire-Format des Upstreams. Verwende „Anthropic Messages“, um OpenAI-kompatible Anbieter (z. B. opencode-go) über den /v1/messages-Endpunkt zu leiten.",
"targetFormatAuto": "Standard (automatisch)",
"targetFormatGemini": "Gemini",
"targetFormatAntigravity": "Antigravity",
"compatParamFiltersLabel": "Parameterfilter",
"compatBlockedParamsHint": "Blockierte Parameter (werden aus Anfragen entfernt)",
"compatAllowedParamsHint": "Erlaubte Parameter (werden nach dem Blockieren wieder hinzugefügt)",
"paramFiltersSectionTitle": "Parameterfilter",
"paramFiltersSectionHint": "Entfernt oder fügt Anfrageparameter wieder hinzu, bevor sie an diesen Anbieter gesendet werden. Damit lassen sich 400-Fehler von Anbietern vermeiden, die bestimmte Parameter ablehnen (z. B. lehnt NVIDIA NIM <code>thinking</code> ab).",
"paramFiltersBlockedLabel": "Blockierte Parameter",
"paramFiltersBlockedHint": "Diese Parameter werden aus ausgehenden Anfragen entfernt (Sperrliste).",
"paramFiltersAllowedLabel": "Erlaubte Parameter",
"paramFiltersAllowedHint": "Diese Parameter werden nach dem Entfernen durch die Sperrliste wieder hinzugefügt (nur wenn der Client sie gesendet hat).",
"paramFiltersAutoLearnLabel": "Automatisches Lernen aus 400-Fehlern",
"paramFiltersAutoLearnHint": "Wenn aktiviert, wird bei einem 400-Fehler des Upstreams mit „Unsupported parameter: X“ der Parameter automatisch zur Sperrliste hinzugefügt und die Anfrage erneut versucht.",
"paramFiltersSaving": "Wird gespeichert…",
"paramFiltersSaveChanges": "Änderungen speichern",
"paramFiltersResetToDefault": "Auf Standard zurücksetzen",
"paramFiltersLoadError": "Parameterfilter-Konfiguration konnte nicht geladen werden: {error}",
"paramFiltersSaveSuccess": "Parameterfilter-Konfiguration gespeichert",
"paramFiltersSaveError": "Parameterfilter-Konfiguration konnte nicht gespeichert werden: {error}",
"paramFiltersResetSuccess": "Parameterfilter-Konfiguration auf Standard zurückgesetzt",
"paramFiltersResetError": "Parameterfilter-Konfiguration konnte nicht zurückgesetzt werden: {error}",
"importFreeModelsOnlyLabel": "Nur kostenlose Modelle importieren",
"importFreeModelsOnlyHint": "Wenn aktiviert, werden nur die kostenlosen Modelle dieses Anbieters importiert. Kostenpflichtige Modelle werden übersprungen.",
"testModelIdLabel": "Modell-ID (optional)",
"testModelIdPlaceholder": "z. B. my-model-id",
"testModelIdHint": "Falls der Anbieter keinen /models-Endpunkt hat, gib stattdessen eine Modell-ID ein, um die Validierung über /chat/completions durchzuführen.",
"codexCliGuideButton": "Codex-CLI-Anleitung",
"codexCliGuideTitle": "Codex-CLI-Anleitung",
"codexCliGuideLoading": "Anleitung wird geladen...",
"codexCliGuideLoadFailed": "Die Anleitung konnte nicht geladen werden.",
"codexExternalLinkButton": "Externer Codex-Link",
"codexExternalLinkModalTitle": "Externer Codex-Link",
"codexExternalLinkModalDescription": "Teile diesen einmalig verwendbaren Link mit der Person, die das Codex-Konto authentifizieren soll. Sie öffnet ihn in ihrem eigenen Browser, schließt die OpenAI-Anmeldung ab, und die Verbindung wird hier registriert. Der Link läuft nach 15 Minuten ab.",
"codexExternalLinkGenerating": "Link wird erstellt...",
"codexExternalLinkWaiting": "Warte auf Browser-Authentifizierung. Dieses Fenster aktualisiert sich automatisch.",
"codexExternalLinkCreateFailed": "Der Link konnte nicht erstellt werden.",
"codexExternalLinkNetworkError": "Der Server konnte nicht erreicht werden.",
"codexExternalLinkConnected": "Codex-Konto über den externen Link verbunden.",
"codexExternalLinkExpired": "Der Link ist abgelaufen, bevor der Vorgang abgeschlossen wurde.",
"clientIdentityLabel": "Client-Identität",
"clientIdentityHint": "Optional. Fügt Client-Fingerprint-Header (z. B. User-Agent) hinzu, die einer bekannten CLI entsprechen, für kompatible Gateways, die einen solchen erwarten.",
"disableCoolingDescription": "Überspringt die vorübergehende Abkühlphase, sodass diese Verbindung auch nach behebbaren Fehlern verfügbar bleibt (endgültige Zustände wie gesperrt/abgelaufen gelten weiterhin).",
"disableCoolingLabel": "Abkühlphase für diese Verbindung deaktivieren",
"m365TierLabel": "Copilot-Stufe",
"m365TierHint": "Wähle, welche Microsoft-365-Copilot-Oberfläche diese Verbindung verwendet. „Individuell“ ist der standardmäßige Consumer-BizChat; „Bildung“ und „Unternehmen“ (Arbeit) nutzen die jeweiligen Mandantenoberflächen.",
"m365TierIndividualOption": "Individuell (Standard)",
"m365TierEduOption": "Bildung",
"m365TierEnterpriseOption": "Unternehmen / Arbeit",
"rateLimitOverridesSection": "Ratenlimit-Überschreibungen",
"rateLimitOverridesMaxConcurrentHint": "Überschreibt die maximale Anzahl gleichzeitiger Anfragen für diese Verbindung. Überschreibt die Obergrenze auf Kontoebene.",
"rateLimitOverridesMaxConcurrentLabel": "Max. gleichzeitig (Ratenlimit)",
"rateLimitOverridesMinTimeHint": "Mindestzeit (ms) zwischen Anfragen. Überschreibt die Standardverzögerung des Ratenbegrenzers.",
"rateLimitOverridesMinTimeLabel": "Min. Intervall (ms)",
"rateLimitOverridesRpmHint": "Maximale Anfragen pro Minute für diese Verbindung. Überschreibt den Standardwert des Anbieters.",
"rateLimitOverridesRpmLabel": "RPM (Anfragen/Min)",
"rateLimitOverridesTpdHint": "Maximale Token pro Tag für diese Verbindung. Überschreibt den Standardwert des Anbieters.",
"rateLimitOverridesTpdLabel": "TPD (Token/Tag)",
"rateLimitOverridesTpmHint": "Maximale Token pro Minute für diese Verbindung. Überschreibt den Standardwert des Anbieters.",
"rateLimitOverridesTpmLabel": "TPM (Token/Min)",
"searchByModel": "Nach Modell suchen…",
"openWebProviderSite": "{host} öffnen",
"huggingchatLabel": "HuggingChat (Kostenlos)",
"huggingchatDesc": "Kostenloser LLM-Chat über huggingface.co/chat",
"poeWebLabel": "Poe Web",
"poeWebDesc": "Multi-Modell-Chat über poe.com",
"veniceWebLabel": "Venice Web",
"veniceWebDesc": "Datenschutzorientierter KI-Chat",
"v0VercelWebLabel": "v0 Vercel Web",
"v0VercelWebDesc": "KI-Codegenerierung über v0.dev",
"kimiWebLabel": "Kimi Web",
"kimiWebDesc": "Moonshot-AI-Verbraucher-Chat über www.kimi.com (international, Connect-RPC-API)",
"doubaoWebLabel": "Dola Web",
"doubaoWebDesc": "ByteDance-KI-Chat über dola.com",
"overrideBaseUrlAdvanced": "Erweitert: Basis-URL überschreiben",
"overrideBaseUrlHint": "Erweitert: Diesen integrierten Anbieter auf einen benutzerdefinierten Endpunkt verweisen. Leer lassen, um den Standard zu verwenden.",
"bulkAddFormatHintCloudflare": "Ein Schlüssel pro Zeile. Format: name|accountId|apiKey (Cloudflare-Konto-ID + API-Token).",
"lmarenaWebCookieHint": "Öffne arena.ai, melde dich an und kopiere dann den vollständigen Cookie-Header aus einer Netzwerkanfrage. Füge arena-auth-prod-v1.0 und arena-auth-prod-v1.1 (sowie weitere Teile, falls vorhanden) ein, vorzugsweise mit cf_clearance. Füge nicht nur das leere arena-auth-prod-v1-Cookie ein. Optional: providerSpecificData.recaptchaV3Token, falls create-evaluation weiterhin 403 zurückgibt."
},
"settings": {
"title": "Einstellungen",
"general": "Allgemein",
"security": "Sicherheit",
"appearance": "Aussehen",
"routing": "Routenführung",
"cache": "Cache",
"resilience": "Belastbarkeit",
"routingSettingsIntro": "Steuert, wie Ihre Anfragen weitergeleitet, umgewandelt und an KI-Anbieter gesendet werden.",
"routingOpDropParagraphContainsLabel": "Absatz verwerfen (enthält)",
"routingOpDropParagraphStartsWithLabel": "Absatz verwerfen (beginnt mit)",
"routingOpReplaceTextLabel": "Text ersetzen",
"routingOpReplaceRegexLabel": "Regex ersetzen",
"routingOpDropBlockContainsLabel": "Block verwerfen (enthält)",
"routingOpPrependSystemBlockLabel": "System-Block voranstellen",
"routingOpAppendSystemBlockLabel": "System-Block anhängen",
"routingOpInjectBillingHeaderLabel": "Billing-Header einschleusen",
"routingOpObfuscateWordsLabel": "Wörter verschleiern (ZWJ)",
"routingOpDropParagraphContainsDesc": "Entfernt jeden Absatz (durch Leerzeilen getrennter Textblock) im System-Prompt, dessen Text EINEN der aufgeführten Teilstrings enthält. Damit lassen sich Fingerprints von Drittanbieter-Clients wie 'github.com/anomalyco/opencode' oder 'docs.openwebui.com' entfernen, die Anthropics Klassifikator markiert.",
"routingOpDropParagraphStartsWithDesc": "Entfernt jeden Absatz, der MIT einem der aufgeführten Präfixe BEGINNT. Verwende dies für Identitätszeilen wie 'You are OpenCode' oder 'You are Open WebUI', die den aufrufenden Client ankündigen.",
"routingOpReplaceTextDesc": "Ersetzt einen wörtlichen Teilstring durch einen anderen wörtlichen Teilstring. Verwende dies für bekannte Trigger-Phrasen — z. B. um 'Here is some useful information about the environment you are running in:' in 'Environment context you are running in:' umzuschreiben (eine empirisch validierte Trigger-Phrase).",
"routingOpReplaceRegexDesc": "Ersetzt Text, der auf einen regulären Ausdruck passt. Verwende dies, wenn du Muster (Zeichenklassen, optionale Leerzeichen, Anker) statt wörtlicher Teilstrings benötigst. Ein fehlerhaftes Muster wird zur Laufzeit erkannt, wenn die Operation ausgeführt wird.",
"routingOpDropBlockContainsDesc": "Entfernt GANZE System-Blöcke (nicht nur Absätze), deren Text einen der aufgeführten Teilstrings enthält. Verwende dies, wenn ein ganzer Block einen Fingerprint trägt und vollständig entfernt werden soll — z. B. eine eingeschleuste MCP-Server-Beschreibung.",
"routingOpPrependSystemBlockDesc": "Fügt einen neuen Textblock am ANFANG des System-Arrays ein. Damit lässt sich die SDK-Identität 'You are a Claude agent, built on Anthropic's Claude Agent SDK.' hinzufügen, die Anthropics Klassifikator erwartet.",
"routingOpAppendSystemBlockDesc": "Fügt einen neuen Textblock am ENDE des System-Arrays ein. Verwende dies für kosmetische Ergänzungen, die nicht an Position [0] stehen müssen.",
"routingOpInjectBillingHeaderDesc": "Stellt den speziellen Textblock 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' voran, den Anthropics Klassifikator validiert. Erforderlich für CC-Bridge-Relay-Endpunkte; beim nativen claude-Anbieter fügt OmniRoute bereits eine eigene Billing-Zeile ein, weshalb diese Operation dort in der Regel überflüssig ist.",
"routingOpObfuscateWordsDesc": "Fügt nach dem ersten Buchstaben jedes aufgeführten Worts ein Zero-Width-Joiner-Zeichen ein, sodass aus 'opencode' 'o‍pencode' wird. Liest sich für Menschen identisch, umgeht aber Wort-Abgleiche des Klassifikators. Betrifft System-Blöcke, User-/Assistant-Nachrichten und Tool-Beschreibungen.",
"routingNeedlesHint": "Liste von Teilstrings. Ein Absatz passt, wenn er EINEN davon enthält. Füge über 'Eintrag hinzufügen' jeweils einen pro Zeile hinzu.",
"routingPrefixesHint": "Liste von Zeichenketten. Ein Absatz passt, wenn er mit einer davon beginnt (führende Leerzeichen werden vor dem Abgleich entfernt).",
"routingCaseSensitiveHint": "Wenn AKTIVIERT, sind 'OpenCode' und 'opencode' unterschiedliche Zeichenketten. Wenn DEAKTIVIERT (Standard), ignoriert der Vergleich Groß-/Kleinschreibung.",
"routingMatchLiteralHint": "Exakter wörtlicher Teilstring, nach dem gesucht wird. Keine Regex-Syntax — Sonderzeichen wie . * ? werden als sie selbst behandelt.",
"routingReplacementTextHint": "Ersetzungstext. Leer lassen, um den Treffer zu löschen. Der umgebende Text bleibt erhalten.",
"routingAllOccurrencesHint": "Wenn AKTIVIERT (Standard), wird jedes Vorkommen ersetzt. Wenn DEAKTIVIERT, wird nur der erste Treffer ersetzt.",
"routingPatternHint": "JavaScript-Regex-Quelltext. Nicht in Schrägstriche einschließen — einfach 'foo(.*)bar'. Der Server lehnt Muster ab, die nicht kompilieren.",
"routingRegexFlagsHint": "JavaScript-Regex-Flags (g = alle Treffer, i = Groß-/Kleinschreibung ignorieren, s = Punkt erfasst Zeilenumbruch, m = mehrzeilig). Standard 'g'.",
"routingBlockTextHint": "Vollständiger Text des neuen System-Blocks. Verwende eine wörtliche Zeichenkette; der System-Block speichert nur Text.",
"routingIdempotencyKeyHint": "Optional. Falls gesetzt, überspringt die Operation, wenn bereits ein Block vorhanden ist, dessen Text mit diesem Schlüssel beginnt. Verhindert doppeltes Voranstellen bei Wiederholungen.",
"routingBillingEntrypointHint": "Wert, der als 'cc_entrypoint=' eingeschleust wird. Anthropic akzeptiert 'sdk-cli' (Agent SDK), 'cli' (Claude Code CLI) oder andere dokumentierte Werte.",
"routingBillingVersionFormatHint": "Wie der 3-stellige Build-Hash nach cc_version= berechnet wird. 'ex-machina' = sha256 aus CCH_SALT+Zeichen-aus-erster-User-Nachricht+Version (pro Nachricht). 'omniroute-daystamp' = sha256 aus YYYY-MM-DD+Version (pro Tag stabil).",
"routingBillingCchAlgoHint": "Wie das 5-stellige cch=-Token berechnet wird. 'sha256-first-user' = sha256 des Texts der ersten User-Nachricht. 'xxhash64-body' = wird später durch Signierung auf Body-Ebene gefüllt. 'static-zero' = wörtlicher Platzhalter '00000'.",
"routingObfuscateWordsHint": "Wörter in Kleinschreibung, die verschleiert werden sollen. Die ZWJ-Einfügung erfolgt unabhängig von Groß-/Kleinschreibung, sodass 'opencode' auch auf 'OpenCode' und 'OPENCODE' passt.",
"routingObfuscateTargetsHint": "Welche Bereiche des Bodys nach den Wörtern durchsucht werden: System-Blöcke, User-/Assistant-Nachrichten und/oder Tool-Beschreibungen.",
"routingObfuscateTargetsLabel": "Ziele",
"routingSummarizeDropParagraphContains": "Absätze verwerfen, die enthalten: {items}",
"routingSummarizeDropParagraphStartsWith": "Absätze verwerfen, die beginnen mit: {items}",
"routingSummarizeReplaceText": "ersetze \"{match}\" → \"{replacement}\"",
"routingSummarizeReplaceRegex": "regex /{pattern}/{flags} → \"{replacement}\"",
"routingSummarizeDropBlockContains": "Blöcke verwerfen, die enthalten: {items}",
"routingSummarizePrependSystemBlock": "Block voranstellen: \"{text}\"",
"routingSummarizeAppendSystemBlock": "Block anhängen: \"{text}\"",
"routingSummarizeInjectBillingHeader": "Billing-Header einschleusen (entrypoint={entrypoint}, version={versionFormat}, cch={cchAlgo})",
"routingSummarizeObfuscateWords": "{count} Wort/Wörter über ZWJ verschleiern in {targets}",
"routingDefaultAutoVariantLKGP": "Letzter bekannter guter Anbieter",
"routingDefaultAutoVariantLKGPDesc": "Letzter bekannter guter Anbieter",
"routingDefaultAutoVariantCoding": "Qualität zuerst für Code",
"routingDefaultAutoVariantCodingDesc": "Qualität zuerst für Code",
"routingDefaultAutoVariantFast": "Routing mit niedriger Latenz",
"routingDefaultAutoVariantFastDesc": "Routing mit niedriger Latenz",
"routingDefaultAutoVariantCheap": "Kostenoptimiert",
"routingDefaultAutoVariantCheapDesc": "Kostenoptimiert",
"routingDefaultAutoVariantOffline": "Hohe Verfügbarkeit",
"routingDefaultAutoVariantOfflineDesc": "Hohe Verfügbarkeit",
"routingDefaultAutoVariantSmart": "Beste Entdeckung (10 % Exploration)",
"routingDefaultAutoVariantSmartDesc": "Beste Entdeckung (10 % Exploration)",
"routingOpSummaryCount": "{count, plural, =0 {keine Operationen} one {# Operation} other {# Operationen}}",
"routingOpEnabled": "aktiviert",
"routingOpDisabled": "deaktiviert",
"routingOpStatusSeparator": "·",
"resilienceSettingsIntro": "Automatischer Wiederholungsversuch, Abklingzeit und Fallback, wenn Anbieter ausfallen.",
"aiSettingsIntro": "KI-spezifische Einstellungen für Denkbudget, Modellverhalten und Komprimierung.",
"systemPrompt": "Systemaufforderung",
"thinkingBudget": "Denkendes Budget",
"proxy": "Stellvertreter",
"httpProxy": "HTTP Proxy",
"1proxy": "1proxy",
"proxySubTabsAria": "Proxy sections",
"requestBodyLimitTitle": "Request Body Limit",
"requestBodyLimitDescription": "Maximum API payload size accepted before a request body is parsed. Dedicated upload routes keep at least their built-in 100 MB limit.",
"requestBodyLimitInputLabel": "Request body limit in MB",
"requestBodyLimitEmptyError": "Enter a limit in MB",
"requestBodyLimitWholeNumberError": "Use a whole number",
"requestBodyLimitMinimumError": "Minimum is {min} MB",
"requestBodyLimitMaximumError": "Maximum is {max} MB",
"requestBodyLimitLoadFailed": "Failed to load request limit settings",
"requestBodyLimitSaveSuccess": "Request body limit saved",
"requestBodyLimitSaveFailed": "Failed to save request body limit",
"requestBodyLimitSaving": "Saving...",
"requestBodyLimitSave": "Save",
"requestBodyLimitCurrent": "Current: {value}",
"mitmProxy": "MITM-Proxy",
"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",
"memoryTitle": "Memory",
"memoryDesc": "Persistent cross-session conversational memory",
"memoryEnabled": "Enable Memory",
"memoryEnabledDesc": "When enabled, OmniRoute will inject relevant past context.",
"maxTokens": "Max Tokens",
"retentionDays": "Retention",
"recent": "Recent",
"recentDesc": "Chronological window",
"semantic": "Semantic",
"semanticDesc": "Vector search",
"hybrid": "Hybrid",
"hybridDesc": "Recent + Semantic",
"skillsTitle": "Skills",
"skillsDesc": "Tools for models",
"skillsEnabled": "Enable Skills",
"skillsEnabledDesc": "Allows agents to trigger functions.",
"skillsComingSoon": "Skills marketplace coming soon.",
"memorySkillsTitle": "Memory & Skills",
"memorySkillsDesc": "Persistent context & capabilities",
"modelsDevTitle": "Model Database",
"modelsDevDesc": "Auto-sync pricing, capabilities & specs from models.dev",
"modelsDevEnabled": "Enable models.dev Sync",
"modelsDevEnabledDesc": "Fetch model pricing, capabilities, and specs from the open-source models.dev database",
"modelsDevInterval": "Sync Interval",
"syncNow": "Sync Now",
"syncing": "Syncing...",
"lastSync": "Last sync",
"never": "Never",
"justNow": "gerade jetzt",
"modelsDevStats": "Sync Statistics",
"modelsDevStatsDesc": "Current models.dev data coverage",
"providers": "Anbieter",
"modelsWithPricing": "Models with Pricing",
"capabilities": "Capabilities",
"lastSyncCount": "Last Sync Count",
"lastSyncFull": "Last full sync",
"modelsDevInfo": "How It Works",
"modelsDevInfoDesc": "models.dev is an open-source database of AI model specifications maintained by the SST/OpenCode team. It provides pricing, capabilities, context limits, and modalities for 4,000+ models across 100+ providers.",
"modelsDevInfoResolution": "Pricing resolution order (highest priority first):",
"modelsDevInfoOrder": "User Override → models.dev → LiteLLM → Hardcoded Default",
"systemTheme": "Systemthema",
"debugToggle": "Enable Debug Mode",
"sidebarVisibilityToggle": "Show Sidebar Items",
"enableCache": "Cache aktivieren",
"cacheTTL": "Cache-TTL",
"maxCacheSize": "Maximale Cache-Größe",
"clearCache": "Cache leeren",
"cacheCleared": "Cache cleared successfully",
"clearCacheFailed": "Failed to clear cache",
"cacheHits": "Cache-Treffer",
"cacheMisses": "Cache-Fehler",
"hitRate": "Trefferquote",
"cacheEntries": "Cache-Einträge",
"cacheSettings": "Cache Settings",
"semanticCache": "Semantic Cache",
"maxEntries": "Max Entries",
"ttlMinutes": "TTL (minutes)",
"promptCache": "Prompt-Cache",
"strategy": "Strategy",
"preserveClientCache": "Preserve Client Cache",
"enabled": "Enabled",
"loading": "Loading...",
"saving": "Sparen...",
"save": "Save",
"circuitBreaker": "Leistungsschalter",
"retryPolicy": "Wiederholungsrichtlinie",
"maxRetries": "Max. Wiederholungsversuche",
"retryDelay": "Wiederholungsverzögerung",
"timeoutMs": "Timeout (ms)",
"enableSystemPrompt": "Aktivieren Sie die Systemaufforderung",
"systemPromptText": "Systemaufforderungstext",
"autoDisableBannedAccounts": "Auto-Disable Banned Accounts",
"autoDisableDescription": "Permanently mark provider connections as deactivated if they return specific terminal ban signals (e.g. HTTP 403 'verify your account'). This removes them from the combo rotation.",
"autoDisableThreshold": "Ban Threshold",
"autoDisableThresholdDesc": "Consecutive ban signals required before permanent deactivation.",
"resilienceStructureTitle": "Resilience Structure",
"resilienceStructureDesc": "Auf dieser Seite wird lediglich das Verhalten konfiguriert. Der Live-Breaker-Status wird auf der Seite „Zustand“ angezeigt. Combo-spezifische Wiederholungsversuche und Round-Robin-Slot-Steuerung bleiben in den Combo-Einstellungen.",
"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",
"endpointTunnelVisibility": "Sichtbarkeit des Endpunkttunnels",
"endpointTunnelVisibilityDesc": "Blenden Sie Tunnelsteuerelemente auf der Seite „Endpunkt“ aus, ohne den Tunnelstatus zu ändern.",
"showCloudflareTunnel": "Cloudflare-Schnelltunnel",
"showCloudflareTunnelDesc": "Cloudflare Quick Tunnel-Steuerelemente auf der Endpunktseite anzeigen.",
"showTailscaleFunnel": "Tailscale-Trichter",
"showTailscaleFunnelDesc": "Tailscale Funnel-Steuerelemente auf der Endpunktseite anzeigen.",
"showNgrokTunnel": "Ngrok-Tunnel",
"showNgrokTunnelDesc": "Ngrok-Tunnel-Steuerelemente auf der Endpunktseite anzeigen.",
"sidebarVisibility": "Hide sidebar items",
"sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.",
"sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...",
"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",
"whitelabeling": "Branding",
"whitelabelingDesc": "Customize the application name and logo",
"appName": "Application Name",
"appNameDesc": "Display name shown in sidebar and browser tab",
"customLogo": "Custom Logo URL",
"customLogoDesc": "URL to your custom logo image",
"uploadLogo": "Upload Logo",
"resetLogo": "Reset to Default",
"logoPreview": "Preview",
"customFavicon": "Browser Favicon",
"customFaviconDesc": "URL to your custom favicon (shown in browser tab)",
"uploadFavicon": "Upload Favicon",
"resetFavicon": "Reset Favicon",
"faviconPreview": "Favicon Preview",
"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",
"bulkHealthcheck": "Bulk Healthcheck",
"bulkHealthcheckDesc": "Test all configured proxies against a target URL to find which ones work.",
"healthcheckTesting": "Testing...",
"healthcheckAll": "Healthcheck All",
"healthcheckFailed": "Failed to run healthcheck",
"healthcheckTestingAll": "Testing all proxies in parallel...",
"healthcheckTotal": "Total",
"healthcheckWorking": "Working",
"healthcheckFailedLabel": "Failed",
"healthcheckStatus": "Status",
"healthcheckProxyUrl": "Proxy URL",
"healthcheckLatency": "Latency",
"globalLabel": "Global",
"configure": "Konfigurieren",
"globalSystemPrompt": "Globale Systemaufforderung",
"saved": "Gespeichert",
"beforePromptLabel": "Vor dem Prompt",
"beforePromptDesc": "Wird vor den System-Anweisungen von Agent/Anbieter eingefügt",
"beforePromptPlaceholder": "Anweisungen, die vor dem Agent-/Anbieter-Prompt eingefügt werden...",
"afterPromptLabel": "Nach dem Prompt",
"afterPromptDesc": "Wird nach den System-Anweisungen von Agent/Anbieter eingefügt",
"afterPromptPlaceholder": "Anweisungen, die nach dem Agent-/Anbieter-Prompt eingefügt werden...",
"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.",
"authModelHeading": "Aktives Autorisierungsmodell",
"authModelClient": "Client-API-Endpunkte (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) erfordern einen Bearer-API-Schlüssel.",
"authModelManagement": "Verwaltungsendpunkte (/dashboard, /api/*) erfordern eine Dashboard-Sitzung oder Verwaltungsanmeldeinformationen.",
"authModelPublic": "Nur Anmelde-, Gesundheits- und Bootstrap-Routen sind öffentlich.",
"bruteForceProtection": "Login-Brute-Force-Schutz",
"bruteForceProtectionDesc": "Drosseln und sperren Sie /api/auth/login nach wiederholten Fehlern von derselben IP.",
"corsAllowedOrigins": "CORS erlaubte Ursprünge",
"corsAllowedOriginsDesc": "Durch Kommas getrennte Liste der Browser-Ursprünge, die diesen Server aufrufen dürfen. Leere Liste = kein Browser-CORS-Zugriff (Server-zu-Server funktioniert weiterhin). Verwenden Sie CORS_ALLOW_ALL=true env var nur für die Entwicklung.",
"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}",
"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}",
"systemTransforms": "Systemblock-Transformationspipeline",
"systemTransformsDesc": "Pro Anbieter geordnete Pipeline von Transformationen, die vor der Weiterleitung auf den Anforderungstext angewendet werden. Unterstützt jede Anbieter-ID.",
"systemTransformsAddProvider": "Anbieter hinzufügen",
"systemTransformsAddProviderPlaceholder": "Wählen Sie einen Anbieter aus…",
"systemTransformsAddProviderAllConfigured": "Alle Anbieter bereits konfiguriert",
"systemTransformsRemoveProvider": "Anbieter entfernen",
"systemTransformsNoProviders": "Keine Anbieter konfiguriert. Fügen Sie einen Anbieter hinzu, um loszulegen.",
"systemTransformsOpMoveUp": "Bewegen Sie sich nach oben",
"systemTransformsOpMoveDown": "Bewegen Sie sich nach unten",
"systemTransformsOpDelete": "Op löschen",
"routingStrategy": "Routing-Strategie",
"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.",
"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",
"resetAware": "Reset-Aware RR",
"resetAwareDesc": "Bevorzugt Konten mit gesunder Restquote und näherem Reset",
"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": "Remap model names using exact matches or wildcard patterns.",
"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",
"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.",
"globalComboConfig": "Globale Combo-Konfiguration",
"defaultStrategy": "Standardstrategie",
"defaultStrategyDesc": "Wird auf neue Combos ohne explizite Strategie angewendet",
"comboStrategyAria": "Combo-Strategie",
"priority": "Priorität",
"weighted": "Gewichtet",
"contextRelay": "Context Relay",
"contextRelayDesc": "Hands off context between providers with automatic summarization",
"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)",
"contextRelayHandoffThreshold": "Handoff Threshold",
"contextRelayMaxMessages": "Max Messages For Summary",
"contextRelaySummaryModel": "Summary Model",
"contextRelayProviderNote": "Context Relay currently generates handoffs for Codex accounts and uses these values as global defaults for new or unconfigured combos.",
"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.",
"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",
"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",
"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",
"adaptiveVolumeRouting": "Adaptive Volume Routing",
"adaptiveVolumeRoutingDesc": "Scale connections dynamically based on payload volume and throughput pressure.",
"lkgpToggleTitle": "Last Known Good Provider (LKGP)",
"lkgpToggleDesc": "When enabled, the router remembers which provider last served a successful response and tries it first on subsequent requests.",
"clearLkgpCache": "Clear LKGP Cache",
"lkgpCacheCleared": "LKGP cache cleared successfully",
"lkgpCacheClearFailed": "Failed to clear LKGP cache",
"days": "Days",
"lkgp": "LKGP Mode",
"lkgpDesc": "Last Known Good Provider (Predictable resilience)",
"maintenance": "Maintenance",
"purgeExpiredLogs": "Purge Expired Logs",
"purgeLogsFailed": "Failed to purge logs",
"contextOpt": "Context Optimized",
"contextOptDesc": "Routes based on context window requirements and conversation length",
"priorityDesc": "Sequential fallback - tries provider 1 first, then provider 2, and so on",
"weightedDesc": "Distributes traffic by percentage weights across providers",
"modelRoutingTitle": "Model Routing Rules",
"modelRoutingDesc": "Automatically route models to specific combos using glob patterns",
"addRule": "Add Rule",
"routeToCombo": "Route to Combo",
"selectCombo": "Select combo...",
"priorityHint": "Higher = checked first. Use 10+ for specific patterns.",
"patternHint": "Use * for any chars, ? for single char. Case-insensitive.",
"noRoutingRules": "No routing rules configured. Requests use the global combo by default.",
"routingRuleHint": "Add a rule like claude-opus* -> frontier-combo to automatically route requests.",
"deleteRoutingRule": "Delete this model routing rule?",
"exactMatchMode": "Exact Match",
"wildcardPatternMode": "Wildcard Pattern",
"exactMatchModeDesc": "Use exact aliases for deprecated or renamed model IDs.",
"wildcardPatternModeDesc": "Use wildcard aliases with * and ? when a family of models should map to one target.",
"noExactAliasesConfigured": "No exact-match aliases configured.",
"wildcardRulesTitle": "Wildcard Rules",
"noWildcardAliasesConfigured": "No wildcard aliases configured.",
"overview": "Overview",
"unknownError": "Unknown Error",
"pricingSourceLiteLLM": "Pricing Source Lite Llm",
"clearSyncedPricingConfirm": "Clear Synced Pricing Confirm",
"clearSyncedPricingFailed": "Clear Synced Pricing Failed",
"pricingSourceUser": "Pricing Source User",
"pageDescription": "Page Description",
"pricingSyncStatus": "Pricing Sync Status",
"whitelist": "Whitelist",
"syncDisabled": "Sync Disabled",
"pricingLoadFailed": "Pricing Load Failed",
"pricingSyncDescription": "Pricing Sync Description",
"clearSyncedPricingSuccess": "Clear Synced Pricing Success",
"clearSyncedPricingFailedWithReason": "Preis konnte nicht gelöscht werden: {reason}",
"pricingSourceDefault": "Pricing Source Default",
"pricingSyncSuccess": "Pricing Sync Success",
"enableSyncError": "Enable Sync Error",
"syncEnabled": "Sync Enabled",
"blacklist": "Blacklist",
"pricingSourceModelsDev": "Pricing Source Models Dev",
"syncedModels": "Synced Models",
"budget": "Budget",
"pricingSyncTitle": "Pricing Sync Title",
"pricingResetFailedWithReason": "Preise konnten nicht zurückgesetzt werden: {reason}",
"tab": "Tab",
"pricingSavedProvider": "Preis für {provider} gespeichert",
"pricingSyncFailed": "Pricing Sync Failed",
"pricingSaveFailedWithReason": "Preise konnten nicht gespeichert werden: {reason}",
"pricingResetProvider": "Preis für {provider} zurückgesetzt",
"nextSync": "Next Sync",
"pricingSyncFailedWithReason": "Preissynchronisierung fehlgeschlagen: {reason}",
"clearSyncedPricing": "Clear Synced Pricing",
"compressionTitle": "Prompt Compression",
"compressionDesc": "Reduce token usage by compressing prompts before sending to providers",
"compressionMode": "Compression Mode",
"compressionModeOff": "Off",
"compressionModeOffDesc": "No compression applied",
"compressionModeLite": "Lite",
"compressionModeLiteDesc": "Whitespace and blank line reduction",
"compressionModeStandard": "Standard (Caveman)",
"compressionModeStandardDesc": "Rule-based compression with 30+ patterns, preserves code blocks and URLs",
"compressionModeAggressive": "Aggressive",
"compressionModeAggressiveDesc": "Summarization + tool result compression + progressive aging for maximum savings",
"compressionModeUltra": "Ultra",
"compressionModeUltraDesc": "Maximum compression with all techniques including semantic deduplication",
"compressionAggressiveConfig": "Aggressive Motorkonfiguration",
"compressionAggressiveConfigDesc": "Feinabstimmung der Zusammenfassung, Toolkomprimierung und Alterungsschwellenwerte",
"compressionUltraConfig": "Ultra Engine-Konfiguration",
"compressionUltraConfigDesc": "Feinabstimmung der heuristischen Bereinigung, des SLM-Fallbacks und der Schwellenwerte pro Nachricht",
"compressionUltraRate": "Rate beibehalten",
"compressionUltraMinScore": "Mindestpunktzahlschwelle",
"compressionUltraSlmFallback": "Rückgriff auf Aggressiv",
"compressionUltraModelPath": "SLM-Modellpfad",
"compressionSummarizerEnabled": "Aktivieren Sie die Zusammenfassung",
"compressionMaxTokensPerMessage": "Maximale Token pro Nachricht",
"compressionMinSavings": "Mindesteinsparungsschwelle",
"compressionAgingThresholds": "Altersschwellen",
"compressionAgingThresholdsDesc": "Anzahl der letzten Nachrichten, die auf jeder Altersstufe aufbewahrt werden (höher = besser erhalten)",
"compressionToolStrategies": "Tool-Ergebnisstrategien",
"compressionToolStrategiesDesc": "Komprimierungsstrategien für verschiedene Tool-Ergebnistypen umschalten",
"compressionGeneral": "General Settings",
"compressionAutoTrigger": "Auto-Trigger Threshold",
"compressionCacheTTL": "Cache TTL",
"compressionPreserveSystem": "Preserve System Prompt",
"compressionCavemanConfig": "Caveman Engine Configuration",
"compressionCavemanConfigDesc": "Fine-tune the rule-based compression engine",
"compressionRoles": "Compress Message Roles",
"compressionRoleUser": "User",
"compressionRoleAssistant": "Assistant",
"compressionRoleSystem": "System",
"compressionMinLength": "Minimum Message Length",
"compressionSkipRules": "Skip Compression Rules",
"compressionSkipRulesDesc": "Click rules to skip them during compression",
"compressionPreservePatterns": "Preserve Patterns",
"compressionPreservePatternsDesc": "Regex patterns that are never compressed (one per line)",
"compressionLogTitle": "Compression Log",
"compressionLogEmpty": "No compressed requests yet. Compression stats will appear here when requests are processed with compression enabled.",
"minutes": "Minuten",
"compressionModeRtk": "RTK",
"compressionModeRtkDesc": "Command-aware tool output filtering",
"compressionModeStacked": "Stacked",
"compressionModeStackedDesc": "RTK tool-output filtering followed by Caveman message compression",
"qdrantTitle": "Qdrant (Vector memory)",
"qdrantDesc": "Optional. Indexes semantic memories in an external vector database for faster retrieval.",
"qdrantStatusActive": "Active",
"qdrantStatusError": "Error",
"qdrantStatusDisabled": "Disabled",
"qdrantEnable": "Enable Qdrant",
"qdrantEnableDesc": "When enabled, semantic/hybrid strategy can use Qdrant to retrieve memories.",
"qdrantTesting": "Testing...",
"qdrantTestConnection": "Test connection",
"qdrantSaved": "Configuration saved",
"qdrantSaveError": "Failed to save configuration",
"qdrantHostHint": "Without port. Example: 127.0.0.1 or http://qdrant",
"qdrantPort": "Port",
"qdrantPortHint": "Qdrant default: 6333",
"qdrantCollectionHint": "Where memory points will be stored.",
"qdrantEmbeddingModel": "Embedding model",
"qdrantHelpTitle": "Quick setup help",
"qdrantHelpQuickTitle": "Quick setup (Qdrant + OpenRouter)",
"qdrantHelpStep1": "1. Host: Qdrant IP/URL, Port: 6333, Collection: omniroute_memory.",
"qdrantHelpStep2": "2. If using nvidia/llama-nemotron-embed-vl-1b-v2:free, use collection dimension 2048.",
"qdrantHelpStep3": "3. Model field: openrouter/nvidia/llama-nemotron-embed-vl-1b-v2:free.",
"qdrantHelpStep4": "4. Save, test connection, then test search.",
"qdrantEmbeddingQuickSelect": "Quick select from discovered models...",
"qdrantEmbeddingInputPlaceholder": "openai/text-embedding-3-small",
"qdrantEmbeddingHint": "Format: provider/model. The provider credential must be configured.",
"qdrantApiKeyPlaceholderKeep": "(leave empty to keep current key)",
"qdrantApiKeyPlaceholderOptional": "(leave empty if not used)",
"qdrantSaveHint": "Tip: edit host/port/collection/model and click Save. API key is optional.",
"qdrantSearchTestTitle": "Search test",
"qdrantSearchTestDesc": "Generates embedding and searches in Qdrant.",
"qdrantSearchPlaceholder": "Example: user preferences, history, etc",
"qdrantNoResults": "No results (or Qdrant is not configured).",
"qdrantCleanupTitle": "Retention and cleanup",
"qdrantCleanupDesc": "Removes expired and old points based on",
"searching": "Searching...",
"cleaning": "Cleaning...",
"cleanNow": "Clean now",
"optional": "Optional",
"current": "Aktuell",
"remove": "Entfernen",
"search": "Suchen",
"oneproxyTitle": "1proxy Kostenloser Proxy-Marktplatz",
"oneproxyTotalProxies": "Gesamtzahl der Proxys",
"oneproxyAvgQuality": "Durchschnittliche Qualität",
"resilienceScope": "Geltungsbereich:",
"resilienceTrigger": "Auslöser:",
"resilienceEffect": "Wirkung:",
"resilienceRequestQueueTitle": "Request Queue & Rate",
"resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers",
"resilienceRequestsPerMinute": "Requests per minute",
"resilienceMinTimeBetweenRequests": "Minimum time between requests",
"resilienceConcurrentRequests": "Concurrent requests",
"resilienceMaxQueueWaitTime": "Maximale Wartezeit in der Warteschlange",
"resilienceBaseCooldown": "Base cooldown",
"resilienceUseUpstreamRetryHints": "Use upstream retry hints",
"resilienceDefaultPerProvider": "Default (per provider)",
"resilienceAlwaysOn": "Always on",
"resilienceAlwaysOff": "Always off",
"routingRemoveEntry": "Eintrag entfernen",
"routingNeedlesSubstrings": "Nadeln (passende Teilzeichenfolgen)",
"routingCaseSensitive": "Groß- und Kleinschreibung beachten",
"routingPrefixes": "Präfixe",
"routingMatch": "Spiel",
"routingReplacement": "Ersatz",
"routingReplaceAllOccurrences": "Ersetzen Sie alle Vorkommen",
"routingPatternRegex": "Muster (Regex)",
"routingFlags": "Flaggen",
"routingNeedles": "Nadeln",
"routingBlockText": "Text blockieren",
"routingIdempotencyKey": "Idempotenzschlüssel",
"routingEntrypoint": "Einstiegspunkt",
"routingVersionFormat": "Versionsformat",
"routingCchAlgorithm": "CCH-Algorithmus",
"routingWordsToObfuscate": "Zu verschleiernde Wörter (ZWJ nach dem ersten Zeichen eingefügt)",
"logsSettingsTitle": "Protokolleinstellungen",
"detailedLogsLabel": "Detaillierte Protokolle aktiviert",
"detailedLogsDesc": "Aktivieren Sie die detaillierte Anforderungs-/Antwortprotokollierung",
"callLogPipelineLabel": "Anrufprotokoll-Pipeline",
"callLogPipelineDesc": "Aktivieren Sie die Pipeline für die Anrufprotokollverarbeitung",
"maxDetailSizeLabel": "Maximale Detailgröße (KB)",
"maxDetailSizeDesc": "Maximale Größe für detaillierte Protokolleinträge",
"ringBufferSizeLabel": "Ringpuffergröße",
"ringBufferSizeDesc": "Größe des Ringpuffers für Protokolle",
"semanticCacheEnabledLabel": "Semantischer Cache aktiviert",
"semanticCacheMaxSizeLabel": "Maximale Größe des semantischen Caches",
"semanticCacheMaxSizeDesc": "Maximale Anzahl semantischer Cache-Einträge",
"semanticCacheTTLLabel": "Semantischer Cache TTL",
"promptCacheEnabledLabel": "Prompt-Cache aktiviert",
"promptCacheEnabledDesc": "Aktivieren Sie das Prompt-Caching",
"promptCacheStrategyLabel": "Prompt-Cache-Strategie",
"promptCacheStrategyDesc": "Strategie für sofortiges Caching",
"alwaysPreserveClientCacheLabel": "Client-Cache immer beibehalten",
"alwaysPreserveClientCacheDesc": "Richtlinie zur Aufbewahrung des Client-Cache",
"logRetentionPolicyTitle": "Protokollaufbewahrungsrichtlinie",
"resilienceUseUpstream429HintsForBreaker": "Upstream-429-Hinweise verwenden (Unterbrecher)",
"appearanceLogoPreviewAlt": "Logo-Vorschau",
"appearanceFaviconPreviewAlt": "Favicon-Vorschau",
"oneproxyLastSync": "Letzte Synchronisierung",
"oneproxyAllProtocols": "Alle Protokolle",
"oneproxyCountryCodePlaceholder": "Ländercode (z. B. USA)",
"oneproxyMinQualityPlaceholder": "Mindestqualität",
"oneproxyLoadingProxies": "Proxys werden geladen...",
"oneproxyLastSyncLabel": "Letzte Synchronisierung:",
"oneproxyProxiesFetched": "Abgerufene Proxys:",
"oneproxyConsecutiveFailures": "Aufeinanderfolgende Fehler:",
"oneproxyErrorLabel": "Fehler:",
"oneproxyNever": "Niemals",
"oneproxySyncStatusTitle": "Synchronisierungsstatus",
"oneproxySuccess": "Erfolg",
"oneproxyFailed": "Fehlgeschlagen",
"routingAntigravitySignatureTitle": "Antigravity-Signatur-Cache-Modus",
"routingAntigravitySignatureDesc": "Steuert, ob OmniRoute nur gespeicherte Gemini-Thought-Signaturen wiederverwendet oder validierte, vom Client bereitgestellte Signaturen in Antigravity-kompatiblen Tool-Call-Abläufen akzeptiert.",
"routingAntigravitySignatureEnabledLabel": "Aktiviert",
"routingAntigravitySignatureEnabledDesc": "Aktuelles Verhalten. Ignoriert vom Client bereitgestellte Signaturen und verwendet weiterhin den gespeicherten OmniRoute-Ablauf.",
"routingAntigravitySignatureBypassLabel": "Umgehen",
"routingAntigravitySignatureBypassDesc": "Akzeptiert vom Client bereitgestellte Signaturen nach einer einfachen Validierung und greift bei Ungültigkeit auf die gespeicherte Signatur zurück.",
"routingAntigravitySignatureBypassStrictLabel": "Umgehen (strikt)",
"routingAntigravitySignatureBypassStrictDesc": "Erfordert eine vollständige Protobuf-Validierung, bevor eine vom Client bereitgestellte Signatur akzeptiert wird.",
"routingHeaderFingerprintTitle": "Header-Fingerabdruck (pro Anbieter)",
"routingServerRejectedSave": "⚠ Server lehnte Speicherung ab:",
"routingAddTransformOp": "Fügen Sie eine Transformationsoperation hinzu",
"routingClientCacheControlTitle": "Client-Cache-Steuerung",
"routingClientCacheControlDesc": "Konfiguriert, ob OmniRoute vom Client bereitgestellte cache_control-Markierungen beibehält",
"routingClientCacheControlAutoDesc": "Bei deterministischen, Claude-kompatiblen Abläufen wird vom Client bereitgestelltes cache_control unverändert beibehalten. Enthält die Anfrage kein cache_control, fügt OmniRoute keine eigenen Bridge-Markierungen ein, um die Kompatibilität mit CC-kompatiblen Drittanbieter-Proxys zu wahren.",
"routingClientCacheControlAlwaysLabel": "Immer beibehalten",
"routingClientCacheControlAlwaysDesc": "Leitet vom Client bereitgestellte cache_control-Header immer unverändert an vorgelagerte Anbieter weiter.",
"routingClientCacheControlNeverLabel": "Nie beibehalten",
"routingClientCacheControlNeverDesc": "Entfernt Client-cache_control-Header immer und überlässt das Caching OmniRoute, sofern die nativen Anbieter-Abläufe dies unterstützen.",
"routingZeroConfigTitle": "Null-Konfigurations-Auto-Routing",
"routingZeroConfigDesc": "Aktiviert die automatische Anbieterauswahl über das auto/-Präfix. Wenn aktiviert, werden Anfragen an auto, auto/coding, auto/fast usw. dynamisch über alle verbundenen Anbieter geroutet.",
"routingDefaultAutoVariant": "Standard-Auto-Variante",
"visionBridge": "Vision-Brücke",
"visionBridgeDesc": "Führt einen automatischen Vision-zu-Text-Fallback aus, bevor Bildanfragen an reine Textmodelle weitergeleitet werden.",
"visionBridgeEnabledLabel": "Aktiviert",
"visionBridgeEnabledDesc": "Schaltet die Pre-Call-Bridge um, die Bildteile durch extrahierten Text ersetzt.",
"visionBridgeModel": "Brückenmodell",
"visionBridgeModelPlaceholder": "openai/gpt-4o-mini",
"visionBridgeModelHint": "Hier kann jede OmniRoute-Modell-ID verwendet werden, die Vision unterstützt.",
"visionBridgePrompt": "Bridge-Eingabeaufforderung",
"visionBridgePromptPlaceholder": "Beschreiben Sie dieses Bild kurz.",
"visionBridgePromptHint": "Wird an das Vision-Modell gesendet, bevor die extrahierte Beschreibung wieder in die ursprüngliche Anfrage eingefügt wird.",
"visionBridgeTimeoutMs": "Timeout (ms)",
"visionBridgeMaxImagesPerRequest": "Maximale Bilder pro Anfrage",
"resilienceMaxBackoffSteps": "Max backoff steps",
"resilienceProviderBreakerTitle": "Circuit Breaker per Provider",
"resilienceFailureThreshold": "Failure threshold",
"resilienceDegradationThreshold": "Degradation threshold",
"resilienceResetTimeout": "Timeout zurücksetzen",
"resilienceFailureThresholdLabel": "Fehlerschwelle",
"resilienceResetTimeoutLabel": "Timeout zurücksetzen",
"resilienceConnectionCooldownTitle": "Connection Cooldown",
"resilienceUseUpstreamRetryHintsLabel": "Verwenden Sie Upstream-Wiederholungshinweise",
"resilienceUseUpstream429BreakerLabel": "Upstream-429-Hinweise verwenden (Unterbrecher)",
"resilienceMaxBackoffStepsLabel": "Maximale Backoff-Schritte",
"resilienceYes": "Ja",
"resilienceNo": "Nein",
"resilienceDefault": "Default",
"storageDatabaseBackupRetention": "Aufbewahrung der Datenbanksicherung",
"storagePurgeData": "Daten bereinigen",
"retentionQuotaSnapshots": "Kontingent-Snapshots (Tage)",
"retentionMcpAudit": "MCP-Audit (Tage)",
"retentionA2aEvents": "A2A-Veranstaltungen (Tage)",
"retentionCallLogs": "Anrufprotokolle (Tage)",
"retentionUsageHistory": "Nutzungsverlauf (Tage)",
"retentionMemoryEntries": "Speichereinträge (Tage)",
"storageAutoVacuumMode": "Automatischer Vakuummodus",
"storageScheduledVacuum": "Geplantes Vakuum",
"storageVacuumHour": "Vakuumstunde (0-23)",
"storagePageSize": "Seitengröße (Byte)",
"storageDatabaseSize": "Datenbankgröße",
"storagePageCount": "Seitenzahl",
"storageFreelistCount": "Freelist-Anzahl",
"storageLastVacuum": "Letztes Vakuum",
"storageLastOptimization": "Letzte Optimierung",
"storageIntegrityCheck": "Integritätsprüfung",
"storageIntegrityOk": "✓ OK",
"storageIntegrityError": "✗ Fehler",
"storageUsageTokenBuffer": "Nutzungs-Token-Puffer",
"compressionSettingsAutoTriggerMode": "Auto-Trigger-Modus",
"compressionSettingsMcpDescriptionCompression": "Komprimierung der MCP-Beschreibung",
"compressionSettingsCavemanIntensity": "Höhlenmensch-Intensität",
"compressionSettingsCavemanOutputMode": "Caveman-Ausgabemodus",
"compressionSettingsOutputIntensity": "Ausgangsintensität",
"compressionSettingsAutoClarityBypass": "Umgehung der automatischen Klarheit",
"resilienceWaitForCooldown": "Warten Sie auf die Abklingzeit",
"resilienceEnableServerSideWait": "Aktivieren Sie das serverseitige Warten",
"resilienceMaximumRetries": "Maximale Wiederholungsversuche",
"resilienceMaximumWaitPerRetry": "Maximale Wartezeit pro Wiederholung",
"memorySkillsSkillsmpMarketplace": "SkillsMP-Marktplatz",
"memorySkillsFailedToSave": "Speichern fehlgeschlagen",
"memorySkillsApiKey": "API-Schlüssel",
"memorySkillsActiveSkillsProvider": "Aktiver Kompetenzanbieter",
"cliproxyapiFallback": "CLIProxyAPI-Fallback",
"cliproxyapiEnableFallback": "Aktivieren Sie CLIProxyAPI-Fallback",
"cliproxyapiUrl": "CLIProxyAPI-URL",
"cliproxyapiStatus": "CLIProxyAPI-Status",
"cliproxyapiNotDetected": "Nicht erkannt",
"payloadRulesTitle": "Nutzlastregeln",
"payloadRulesDesc": "Konfiguriert Payload-Änderungen für Anfragen nach Modell und Protokoll. Änderungen werden in den Einstellungen gespeichert und direkt nach dem Speichern per Hot Reload in die Laufzeitumgebung übernommen.",
"payloadRuleDefaultTitle": "default",
"payloadRuleDefaultDesc": "Wendet Parameter nur an, wenn der Zielpfad in der ausgehenden Payload fehlt.",
"payloadRuleOverrideTitle": "override",
"payloadRuleOverrideDesc": "Erzwingt Werte in der Payload und ersetzt alles, was an diesem Pfad bereits vorhanden ist.",
"payloadRuleFilterTitle": "filter",
"payloadRuleFilterDesc": "Entfernt blockierte Parameter aus der Payload, bevor die Anfrage an den Anbieter gesendet wird.",
"payloadRuleDefaultRawTitle": "defaultRaw",
"payloadRuleDefaultRawDesc": "Wie default, aber String-Werte werden nach Möglichkeit zuerst als JSON geparst. Der veraltete Eingabe-Alias default-raw wird beim Speichern ebenfalls akzeptiert.",
"payloadEditorTitle": "Editor",
"payloadEditorDesc": "Verwende die Schemaform der Laufzeitumgebung: default, override, filter, defaultRaw. Die API akzeptiert außerdem den veralteten Eingabeschlüssel default-raw.",
"payloadEditorReady": "Bereit",
"payloadResetInfo": "Editor auf die neutrale Vorlage zurückgesetzt. Zum Anwenden speichern.",
"payloadSaveSuccess": "Payload-Regeln gespeichert und per Hot Reload übernommen.",
"payloadJsonParseError": "JSON-Parse-Fehler: {error}",
"payloadMustBeObject": "Payload-Regeln müssen ein JSON-Objekt sein.",
"payloadInvalidJson": "Ungültige JSON-Payload.",
"payloadValidJsonRequired": "Payload-Regeln müssen vor dem Speichern gültiges JSON sein.",
"savePayloadRules": "Payload-Regeln speichern",
"requestLimitsTitle": "Anfragelimits",
"requestLimitsDesc": "Konfiguriert globale Anfragelimits und Nebenläufigkeitsschutz.",
"maxRequestSizeLabel": "Max. Anfragegröße (MB)",
"maxRequestSizeDesc": "Maximal zulässige Größe für eingehende API-Anfragen.",
"maxResponseSizeLabel": "Max. Antwortgröße (MB)",
"maxResponseSizeDesc": "Maximal zulässige Größe für ausgehende API-Antworten.",
"maxRequestTokensLabel": "Max. Anfrage-Token",
"maxRequestTokensDesc": "Maximale Gesamtzahl an Token, die in einer einzelnen Anfrage erlaubt sind.",
"maxResponseTokensLabel": "Max. Antwort-Token",
"maxResponseTokensDesc": "Maximale Gesamtzahl an Token, die in einer einzelnen Antwort erlaubt sind.",
"modelCooldownsTitle": "Modelle in der Abklingzeit",
"modelCooldownsEmpty": "Im Moment befinden sich keine Modelle in der Abklingzeit.",
"responsesStateTitle": "Responses-State",
"responsesStateDesc": "Steuert, wie OmniRoute previous_response_id weiterleitet.",
"responsesStateModeLabel": "previous_response_id behandeln",
"responsesStateModeAuto": "Auto",
"responsesStateModeStrip": "Entfernen",
"responsesStateModePreserve": "Beibehalten",
"responsesStateHint": "Auto entfernt previous_response_id, außer eine Verbindung aktiviert explizit OpenAI Responses Storage. Entfernen ist am sichersten für zustandslose Clients wie VS Code Custom Endpoint; der Kontext hängt dann davon ab, dass der Client die vollständige Historie sendet.",
"responsesStateSaveError": "Responses-State-Einstellung konnte nicht aktualisiert werden",
"codexFastTierTitle": "Codex Fast Tier",
"codexFastTierDesc": "service_tier=priority global für OpenAI Codex-Anfragen einfügen.",
"codexFastTierHint": "Wenn aktiviert, fügt OmniRoute ausgehenden Codex-Anfragen service_tier=priority hinzu, sofern für die Verbindung noch kein Tier festgelegt ist. Der Priority-Tier erfordert einen OpenAI Enterprise API-Schlüssel oder den ChatGPT-Auth-Codex-Pfad; andere Schlüsseltypen erhalten von OpenAI einen tier-bezogenen Fehler. Pro-Verbindung-Einstellungen auf der Codex-Provider-Seite haben Vorrang.",
"codexFastTierSaveError": "Codex Fast Tier-Einstellung konnte nicht aktualisiert werden",
"codexFastTierTierLabel": "Service-Tier",
"codexFastTierTierPriority": "Priorität",
"codexFastTierTierFlex": "Flex",
"codexFastTierTierDefault": "Standard",
"codexFastTierModelsLabel": "Fast-Tier-Modelle",
"codexFastTierModelsHint": "Nur ausgewählte Modelle erhalten service_tier, wenn Fast Tier aktiviert ist.",
"codexFastTierModelCheckbox": "Fast Tier für {model} aktivieren",
"claudeFastModeTitle": "Claude Fast Mode",
"claudeFastModeDesc": "Aktiviert den Fast Mode (speed:\"fast\") für ausgewählte Claude-Anfragen.",
"claudeFastModeHint": "Anthropic unterstützt Fast Mode für SDK-Clients offiziell nicht. Wenn aktiviert, fügt OmniRoute den Header X-CPA-Force-Fast-Mode hinzu, sodass ein kompatibler CLIProxyAPI-Build den Entrypoint umschreiben kann. Nur die aufgeführten Opus-Modelle passieren die clientseitige Anthropic-Prüfung. Abonnement, Max-Plan und Fast-Mode-Credit-Saldo werden weiterhin serverseitig durchgesetzt — Anthropic kann auch bei aktiviertem Toggle out_of_credits zurückgeben.",
"claudeFastModeModelsLabel": "Auf Modelle angewendet ({count})",
"claudeFastModeModelCheckbox": "Fast Mode für {model} aktivieren",
"claudeFastModeSaveError": "Claude Fast Mode-Einstellung konnte nicht aktualisiert werden",
"authz": {
"title": "Autorisierungsübersicht",
"description": "5-stufige Routen-Klassifizierung mit Live-Bypass-Richtlinie. Lesen zeigt die vollständige Taxonomie; Änderungen fordern erneut das Verwaltungspasswort an.",
"loading": "Übersicht wird geladen…",
"loadError": "Laden der Autorisierungsübersicht fehlgeschlagen",
"tier": {
"LOCAL_ONLY": "Nur lokal",
"ALWAYS_PROTECTED": "Immer geschützt",
"MANAGEMENT": "Verwaltung",
"CLIENT_API": "Client-API",
"PUBLIC": "Öffentlich"
},
"bypass": {
"section": "Bypass für Verwaltungs-Scope",
"kill_switch": {
"label": "Bypass-Kill-Switch",
"desc": "Hauptschalter. Wenn deaktiviert, ist kein LOCAL_ONLY-Präfix von außerhalb des Loopbacks erreichbar, unabhängig von der Präfix-Liste."
},
"prefix": {
"label": "Umgehbare Präfixe",
"desc": "LOCAL_ONLY-Präfixe, die API-Schlüssel mit Verwaltungs-Scope (oder Dashboard-Sitzungen) von Nicht-Loopback-Hosts aus erreichen dürfen.",
"add": "Präfix hinzufügen",
"placeholder": "/api/mcp/v2/",
"empty": "Keine Präfixe konfiguriert. Bypass ist effektiv deaktiviert."
},
"cli_tools_runtime_note": "Spawn-fähiges Präfix. Zur Kompilierzeit verboten; kann nicht umgehbar gemacht werden. Wird nur lesbar angezeigt."
},
"password": {
"prompt": {
"label": "Aktuelles Passwort",
"desc": "Bestätige erneut, um sicherheitsrelevante Änderungen anzuwenden."
},
"placeholder": "Aktuelles Verwaltungspasswort",
"cancel": "Abbrechen",
"submit": "Anwenden"
},
"save": "Änderungen speichern",
"saved": "Autorisierungseinstellungen aktualisiert",
"pending": "Nicht gespeicherte Änderungen",
"badge": {
"bypassable": "Umgehbar über Verwaltungs-Scope",
"strict": "Strikter Loopback",
"auth_required": "Authentifizierung erforderlich",
"public": "Öffentlich",
"always_protected": "Immer geschützt",
"spawn_capable": "Spawn-fähig"
},
"error": {
"PASSWORD_REQUIRED": "Aktuelles Passwort erforderlich, um diese Änderungen anzuwenden.",
"PASSWORD_MISMATCH": "Aktuelles Passwort ist falsch.",
"INSUFFICIENT_SCOPE": "Dem API-Schlüssel fehlt der Verwaltungs-Scope.",
"BYPASS_PREFIX_NOT_ALLOWED": "Ein oder mehrere Präfixe zielen auf spawn-fähige Routen und können nicht umgangen werden.",
"GENERIC": "Aktualisieren der Autorisierungseinstellungen fehlgeschlagen."
},
"cors": {
"wildcard": {
"title": "CORS ist für jeden Ursprung offen (CORS_ALLOW_ALL=true)",
"desc": "Jede Website kann die API dieses Servers aus dem Browser eines Besuchers aufrufen. Nur in vertrauenswürdigen Netzwerken verwenden — setze explizite Ursprünge in ALLOWED_ORIGINS und deaktiviere CORS_ALLOW_ALL in der Produktion."
}
}
},
"resilienceBaseCooldownLabel": "Grundabklingzeit",
"scopeLabel": "Geltungsbereich",
"triggerLabel": "Auslöser",
"effectLabel": "Wirkung",
"statusEnabled": "Aktiviert",
"statusDisabled": "Deaktiviert",
"resilienceRequestQueueScope": "Pro Request-Queue",
"resilienceRequestQueueTrigger": "Vor dem Senden an den Upstream",
"resilienceRequestQueueEffect": "Stellt Anfragen in die Warteschlange, begrenzt Parallelität und verteilt Aufrufe zeitlich",
"resilienceRequestQueueDesc": "Diese Ebene steuert nur Warteschlange und Taktung. Sie speichert keine Cooldowns und öffnet keine Circuit Breaker.",
"resilienceAutoEnableApiKeyProvidersDesc": "Aktiviert den Queue-Schutz standardmäßig für aktive API-Key-Verbindungen.",
"resilienceMaxQueueWait": "Maximale Wartezeit in der Queue",
"resilienceConnectionCooldownScope": "Einzelne Verbindung",
"resilienceConnectionCooldownTrigger": "Wenn eine Verbindung einen vorübergehenden Upstream-Fehler zurückgibt",
"resilienceConnectionCooldownEffect": "Überspringt diese Verbindung vorübergehend und erhöht den Backoff bei wiederholten Fehlern",
"resilienceConnectionCooldownDesc": "Der Basis-Cooldown deckt vorübergehende Verbindungsfehler ab. Wenn Upstream-Retry-Hinweise aktiv sind, überschreibt das explizite Fenster des Anbieters den lokalen Cooldown.",
"resilienceUseUpstreamRetryHintsDesc": "Verwendet Retry-After-/Reset-Werte des Upstream-Anbieters, wenn sie verfügbar sind.",
"resilienceUseUpstream429BreakerHints": "Upstream-429-Hinweise für Breaker-Cooldown verwenden",
"resilienceUseUpstream429BreakerHintsShort": "Upstream-429-Hinweise verwenden",
"resilienceUseUpstream429BreakerHintsDesc": "Wendet Retry-After- oder quota-exhausted-Signale aus 429-Antworten auf die Circuit-Breaker-Cooldown-Dauer an. Standard nutzt eine Anbieter-Richtlinie: direkte Cloud-Anbieter standardmäßig an; Reverse-Proxy-, Self-Hosted- und CLI-basierte Anbieter standardmäßig aus. Unabhängig von \"Upstream-Retry-Hinweise verwenden\".",
"resilienceProviderBreakerScope": "Ganzer Anbieter",
"resilienceProviderBreakerTrigger": "Endgültige Transport-/Serverfehler, nachdem das Verbindungs-Fallback ausgeschöpft ist",
"resilienceProviderBreakerEffect": "Blockiert diesen Anbieter vorübergehend, bis die Reset-Zeit abläuft",
"resilienceProviderBreakerDesc": "Der Live-Status des Breakers erscheint nur auf der Health-Seite. Verbindungsbezogene 429-Rate-Limits bleiben im Verbindungs-Cooldown und lösen den Provider-Breaker nicht aus.",
"resilienceResetTime": "Reset-Zeit",
"resilienceWaitForCooldownTitle": "Auf Cooldown warten",
"resilienceWaitForCooldownScope": "Aktuelle Client-Anfrage",
"resilienceWaitForCooldownTrigger": "Wenn alle Kandidaten-Verbindungen bereits im Cooldown sind",
"resilienceWaitForCooldownEffect": "Wartet auf dem Server und versucht es erneut, wenn der erste Cooldown abläuft",
"resilienceWaitForCooldownDesc": "Dies betrifft nur die aktuelle Anfrage. Es speichert keinen Verbindungs- oder Anbieterstatus.",
"resilienceEnableServerWait": "Serverseitiges Warten aktivieren",
"resilienceEnableServerWaitDesc": "Wenn aktiviert, wartet OmniRoute, bis der erste Cooldown abläuft, und versucht es automatisch erneut.",
"resilienceMaxAttempts": "Maximale Versuche",
"resilienceMaxWaitPerAttempt": "Maximale Wartezeit pro Versuch",
"forcedFingerprintTitle": "Für {provider} immer aktiviert — erforderlich für die Sicherheit von OAuth-Konten; kann nicht deaktiviert werden.",
"forcedFingerprintBadge": "Erforderlich",
"codexSessionAffinityTitle": "Codex-Session-Affinity",
"codexSessionAffinityDesc": "Hält dieselbe Codex-Konversation für diese Anzahl Sekunden auf demselben Account. 0 deaktiviert es.",
"codexSessionAffinityTtl": "Affinity-TTL (Sekunden)",
"resetAwareQuotaCacheTitle": "Reset-aware Quota-Cache",
"resetAwareQuotaCacheDesc": "Cached Quota-Telemetrie nur für die Reset-aware-Sortierung. Der Quota-Preflight schützt Requests weiterhin. 0/0 bleibt bei Live-Fetching.",
"resetAwareQuotaCacheTtl": "Fresh-TTL (Sekunden)",
"resetAwareQuotaCacheMaxStale": "Max. stale (Sekunden)",
"qdrantCleanupSuccess": "OK: {count} Punkt(e) entfernt (Aufbewahrung: {days} Tage)",
"qdrantCleanupFailed": "Bereinigung fehlgeschlagen",
"qdrantCleanupError": "Fehler: {error}",
"vercelRelaySuccess": "Vercel Relay erfolgreich bereitgestellt",
"vercelRelayButton": "Vercel Relay bereitstellen",
"vercelRelayModalTitle": "Vercel Relay bereitstellen",
"vercelRelayWarning": "Warnung: Ein Vercel-Deployment-Token ist erforderlich. Dieses Token wird ausschließlich zum Erstellen des serverlosen Relays verwendet und niemals von OmniRoute gespeichert.",
"vercelRelayTokenLabel": "Vercel-Zugriffstoken",
"vercelRelayProjectNameLabel": "Vercel-Projektname",
"vercelRelayFreeTierNote": "Relays sind leichtgewichtige Proxy-Endpunkte, die auf der kostenlosen Stufe von Vercel bereitgestellt werden, um lokale Netzwerk-/Regionsbeschränkungen zu umgehen.",
"vercelRelayDeploying": "Wird bereitgestellt...",
"vercelRelayDeploy": "Bereitstellen",
"homePinProviderQuotaToHome": "Pin Information to Home Page",
"homeProviderQuotaLimits": "Provider Quota Limits",
"homeProviderQuotaLimitsDesc": "Pin the Provider Quota status container (with Refresh All button) to the top of the Home page.",
"homeQuickStart": "Quick Start",
"homeQuickStartDesc": "Show the Quick Start panel on the Home page.",
"homeProviderTopology": "Provider Topology",
"homeProviderTopologyDesc": "Show the Provider Topology on the Home page.",
"description": "Beschreibung",
"enable": "Aktivieren",
"disable": "Deaktivieren",
"update": "Aktualisieren",
"memoryTokenCostWarning": "Hinweis: Bei aktiviertem Memory fügt OmniRoute bis zu {tokens} Token abgerufenen Kontexts in jede Chat-Anfrage ein — das erhöht Token-Verbrauch und Kosten. Um die Einfügung für eine bestimmte Anfrage zu überspringen, sende den Header „x-omniroute-no-memory: true“.",
"logToolSourcesToggle": "Werkzeugquellen protokollieren",
"logToolSourcesDescription": "Gibt pro Anfrage eine Diagnosezeile aus, die die Anzahl der Werkzeuge sowie die Aufschlüsselung nach MCP-/Hosted-/Client-Quelle zusammenfasst.",
"accountEmailVisibility": "Sichtbarkeit der Konto-E-Mail",
"accountEmailVisibilityDesc": "Zeigt vollständige Konto-E-Mails auf allen Bildschirmen für Anbieter, Kombinationen, Protokolle, Kontingente und Spielwiese an. Deaktiviere dies, um sie standardmäßig zu maskieren.",
"customBannedSignals": "Gesperrte Schlüsselwörter",
"customBannedSignalsDesc": "Zusätzliche Schlüsselwörter, die die Erkennung einer dauerhaften Kontosperrung auslösen. Integrierte Schlüsselwörter gelten immer.",
"customBannedSignalsPlaceholder": "z. B. api key revoked",
"noCustomBannedSignals": "Keine benutzerdefinierten Schlüsselwörter. Nur integrierte Schlüsselwörter sind aktiv.",
"perKeyProxyEnabled": "Pro-Schlüssel-Proxy-Zuweisung aktivieren",
"perKeyProxyEnabledDesc": "Wenn aktiviert, kann jede Anbieterverbindung ihre eigene Proxy-Zuweisung verwenden",
"proxyPool": "Proxy-Pool",
"freePool": "Kostenloser Pool",
"proxyDocumentation": "Proxy-Dokumentation",
"proxyGlobalConfigTab": "Globale Konfiguration",
"proxyPoolTab": "Proxy-Pool",
"freePoolTab": "Kostenloser Pool",
"proxyDocumentationTab": "Dokumentation",
"proxyDocumentationScopeTitle": "Auflösung des Proxy-Geltungsbereichs",
"proxyDocumentationScopeDescBefore": "OmniRoute löst den ausgehenden Proxy in dieser Prioritätsreihenfolge auf:",
"proxyDocumentationScopeOrder": "Kombination → Konto → Anbieter → Global",
"proxyDocumentationScopeDescAfter": ". Der spezifischste Geltungsbereich gewinnt.",
"proxyDocumentationAddTitle": "Einen benutzerdefinierten Proxy hinzufügen",
"proxyDocumentationAddDescBefore": "Gehe zum",
"proxyDocumentationAddDescMiddle": "-Tab → klicke auf",
"proxyDocumentationAddCta": "+ Proxy hinzufügen",
"proxyDocumentationAddDescAfter": ". Gib Typ (http/https/socks5), Host und Port ein. Optional kannst du ihn einem Geltungsbereich zuweisen.",
"proxyDocumentationBulkTitle": "Format für den Massenimport",
"proxyDocumentationBulkDesc": "Durch Pipe getrennte Felder:",
"proxyDocumentationSocks5DescBefore": "SOCKS5-Proxys sind standardmäßig deaktiviert. Setze",
"proxyDocumentationFreePoolDesc": "Der Tab „Kostenloser Pool“ fasst Proxys von 1proxy, Proxifly und IPLocate zusammen. Verwende ⊕, um einen Proxy zu testen und in deine Registrierung aufzunehmen. Nur Proxys, die den Verbindungstest bestehen, werden hinzugefügt.",
"proxyDocumentationVercelRelayDescBefore": "Das Vercel-Relay ist ein ausgehendes Edge-Relay — kein eingehender Tunnel. Beim Deployment werden LLM-API-Aufrufe über die dynamischen IPs von Vercel gesendet, wodurch Geo-Sperren und Ratenlimits von Rechenzentren umgangen werden. Das Relay ist durch einen generierten geheimen Header geschützt",
"proxyDocumentationVercelRelayDescAfter": "Dein Vercel-Token wird nur während des Deployments verwendet und niemals gespeichert.",
"vercelRelayTokenRequired": "Token ist erforderlich",
"vercelRelayDeployFailed": "Deployment fehlgeschlagen",
"vercelRelayTokenHint": "Das Token wird nur während des Deployments verwendet — niemals gespeichert.",
"denoRelayTokenRequired": "Deno-Deploy-Token ist erforderlich",
"denoRelayOrgDomainRequired": "Organisationsdomäne ist erforderlich",
"denoRelayDeployFailed": "Deno Deploy fehlgeschlagen",
"denoRelayTokenHint": "Organisations-Token (Präfix ddo_) von console.deno.com → Organization → Settings → Organization Tokens. Wird nur einmal für das Deployment verwendet und niemals gespeichert.",
"denoRelayOrgDomainHint": "Die Standarddomäne deiner Deno-Deploy-Organisation (z. B. acme.deno.net). Das Relay ist unter https://<app-name>.<org-slug>.deno.net erreichbar.",
"proxyFreePoolFilterProtocol": "Nach Protokoll filtern",
"proxyFreePoolProtocol": "Protokoll",
"proxyFreePoolCountryPlaceholder": "Land (z. B. US)",
"proxyFreePoolFilterCountry": "Nach Land filtern",
"proxyFreePoolMinQualityPlaceholder": "Min. Qualität",
"proxyFreePoolMinQualityLabel": "Mindest-Qualitätswert",
"proxyFreePoolSyncAll": "Alle synchronisieren",
"proxyFreePoolTotal": "Gesamt",
"proxyFreePoolInPool": "Im Pool",
"proxyFreePoolAvgQuality": "Ø Qualität",
"proxyFreePoolSelected": "{count} ausgewählt",
"proxyFreePoolAddSelected": "Ausgewählte zum Pool hinzufügen",
"proxyFreePoolAddVisible": "Alle sichtbaren zum Pool hinzufügen",
"proxyFreePoolSource": "Quelle",
"proxyFreePoolHostPort": "Host:Port",
"proxyFreePoolType": "Typ",
"proxyFreePoolCountry": "Land",
"proxyFreePoolQuality": "Qualität",
"proxyFreePoolLatency": "Latenz",
"proxyFreePoolEmpty": "Keine Proxys gefunden. Klicke auf „Alle synchronisieren“, um sie von den Quellen abzurufen.",
"proxyFreePoolSearchPlaceholder": "Host suchen…",
"proxyFreePoolSearchLabel": "Proxys nach Host suchen",
"proxyFreePoolSortLabel": "Proxys sortieren",
"proxyFreePoolSortQuality": "Qualität",
"proxyFreePoolSortLatency": "Latenz",
"proxyFreePoolSortRecent": "Kürzlich geprüft",
"proxyFreePoolListTotal": "Gelistet",
"proxyFreePoolLoadMore": "Mehr laden",
"close": "Schließen",
"cancel": "Abbrechen",
"routingStrategyTitle": "Routing-Strategie",
"routingStrategySubtitle": "An 9router angeglichen: Konto-Round-Robin, Sticky-Limits und Kombinations-Rotation",
"accountRoundRobin": "Round Robin",
"accountRoundRobinDesc": "Durchläuft Konten reihum, um die Last zu verteilen",
"comboRoundRobin": "Kombinations-Round-Robin",
"comboRoundRobinDesc": "Durchläuft Kombinationsziele reihum, statt immer mit dem ersten zu beginnen",
"comboStickyLimit": "Kombinations-Sticky-Limit",
"comboStickyLimitDesc": "Aufrufe pro Kombinationsziel vor dem Wechsel",
"routingStrategyAccountSummary": "Verteilt Anfragen auf Konten mit {limit} Aufrufen pro Konto.",
"routingStrategyFillFirstSummary": "Verwendet Konten in Prioritätsreihenfolge (Fill First).",
"routingStrategyComboSummary": " Kombinationen rotieren nach {limit} Aufruf(en) pro Ziel.",
"routingStrategyComboFallbackSummary": " Kombinationen verwenden die jeweils konfigurierte Strategie (Standard: Priorität/Fallback).",
"providerAccountRoutingTitle": "Multi-Konto-Routing",
"providerAccountRoutingDesc": "Überschreibt die globale Kontostrategie für diesen Anbieter (9router-Parität).",
"providerRoutingStrategy": "Kontostrategie",
"providerRoutingInheritGlobal": "Globalen Standard übernehmen",
"selectProviderPlaceholder": "Anbieter auswählen...",
"searchProviderPlaceholder": "Anbieter suchen...",
"searchProviderAria": "Anbieter suchen",
"queueDepth": "Warteschlangentiefe",
"export": "Export",
"modelOverridesTitle": "Modell-Überschreibungen",
"modelOverridesDesc": "Überschreibt Anbieter-/Modellfähigkeiten, die für Routing und Anfrageanpassung verwendet werden. Ziele nutzen dieselbe Anbieter/Modell-Form wie Kombinationen.",
"searchModelOverrideTargets": "Anbieter/Modell suchen...",
"selectedModel": "Ausgewähltes Modell",
"configured": "konfiguriert",
"none": "Keine",
"modelOverrideValuePlaceholder": "Numerischer Wert",
"addKeyValue": "Schlüsselwert hinzufügen",
"noModelOverrides": "Für dieses Modell sind keine Überschreibungen konfiguriert.",
"modelOverrideLoadFailed": "Modell-Überschreibungen konnten nicht geladen werden",
"modelOverrideSaved": "Modell-Überschreibung gespeichert",
"modelOverrideRemoved": "Modell-Überschreibung entfernt",
"modelOverrideSaveFailed": "Modell-Überschreibung konnte nicht gespeichert werden",
"modelOverrideRemoveFailed": "Modell-Überschreibung konnte nicht entfernt werden",
"echoRequestedModelTitle": "Angeforderten Modellnamen in Antworten spiegeln",
"echoRequestedModelDesc": "Wenn aktiviert, spiegelt das Feld `model` in der Antwort den vom Client angeforderten Alias- oder Kombinationsnamen wider, statt den Upstream-Modellnamen. Behebt Probleme bei strengen Clients (z. B. Claude Desktop), die eine Antwort ablehnen, deren Modell nicht mit der Anfrage übereinstimmt.",
"webSearchRouteTitle": "Websuche-Routing",
"webSearchRouteDesc": "Wenn eine Anfrage ein natives web_search-Werkzeug enthält, wird die gesamte Anfrage statt an das Standardmodell an dieses Modell geleitet — nützlich für Anbieter, die Anthropics web_search-Server-Werkzeug nicht implementieren. Leer lassen zum Deaktivieren.",
"webSearchRoutePlaceholder": "z. B. openrouter,anthropic/claude-3.5-sonnet",
"logsDeleted": "{count, plural, =0 {Keine abgelaufenen Protokolle gelöscht} one {# abgelaufenes Protokoll gelöscht} other {# abgelaufene Protokolle gelöscht}}",
"resetUsageData": "Nutzungsdaten zurücksetzen",
"resetUsageDataDesc": "Wähle aus, wie weit zurück Nutzungsdaten gelöscht werden sollen. Diese Aktion kann nicht rückgängig gemacht werden.",
"resetUsagePeriod_5m": "5 Minuten",
"resetUsagePeriod_1h": "1 Stunde",
"resetUsagePeriod_3h": "3 Stunden",
"resetUsagePeriod_6h": "6 Stunden",
"resetUsagePeriod_12h": "12 Stunden",
"resetUsagePeriod_1d": "1 Tag",
"resetUsagePeriod_7d": "7 Tage",
"resetUsagePeriod_30d": "30 Tage",
"resetUsagePeriod_all": "Gesamter Zeitraum",
"resetUsageSuccess": "{count, plural, =0 {Keine Nutzungsdatenzeilen gelöscht} one {Nutzungsdaten zurückgesetzt (# Zeile gelöscht)} other {Nutzungsdaten zurückgesetzt (# Zeilen gelöscht)}}",
"resetUsageFailed": "Nutzungsdaten konnten nicht zurückgesetzt werden",
"reset": "Zurücksetzen",
"resetting": "Wird zurückgesetzt...",
"tokenSaverTitle": "Token-Sparer",
"tokenSaverSubtitle": "Weniger Token pro Anfrage verbrauchen.",
"tokenSaverToolOutput": "Werkzeugausgabe",
"tokenSaverToolOutputDesc": "Bereinigt git-, grep-, ls-, tree- und Log-Ausgaben, bevor sie den Anbieter erreichen.",
"tokenSaverLlmOutput": "LLM-Ausgabe",
"tokenSaverLlmOutputDesc": "Fügt knappe Antwortanweisungen ein, ohne die Ausgabe des Anbieters umzuschreiben.",
"tokenSaverInputCompression": "Eingabekomprimierung",
"tokenSaverInputCompressionDesc": "Schreibt geeigneten Chatverlauf um, während Code, URLs und Absicht erhalten bleiben.",
"tokenSaverFineTunePrefix": "Jede Engine feinabstimmen unter",
"tokenSaverFineTuneSuffix": "oder Engines pro Anfrage kombinieren unter",
"compressionUltraEngine": "Ultra-Stufe",
"compressionUltraEngineHeuristic": "Heuristik (Stufe A, Standard)",
"compressionUltraEngineSlm": "SLM (LLMLingua-2, opt-in)",
"compressionUltraSlmHint": "SLM lädt bei der ersten Nutzung (Kaltstart) ein kleines ONNX-Modell herunter und fällt bei Timeout oder Nichtverfügbarkeit transparent auf die Heuristik zurück.",
"compressionUltraSlmPrewarm": "SLM-Modell beim Aktivieren vorladen",
"compressionPreserveSystemAlways": "Immer",
"compressionPreserveSystemWhenNoCache": "Wenn kein Cache vorhanden ist",
"compressionPreserveSystemNever": "Nie",
"compressionCavemanPanelHint": "An/Aus und Stufe werden im Panel eingestellt:",
"storageDatabaseBackups": "Datenbank-Backups",
"storagePurgeDataDesc": "Löscht sofort alle Datensätze, ohne Aufbewahrungsprüfungen anzuwenden. Mit Vorsicht verwenden.",
"storageRetentionCleanup": "Aufbewahrungseinstellungen",
"storageRetentionCleanupDesc": "Konfiguriert die Aufbewahrung operativer Datensätze und die Bereinigung von Datenbank-Backups.",
"retentionCallDays": "Aufruf {count}d",
"retentionAppDays": "App {count}d",
"retentionRows": "{count} Zeilen",
"retentionCompressionAnalytics": "Komprimierungsanalyse (Tage)",
"saveRetentionSettings": "Aufbewahrungseinstellungen speichern",
"storageUsageTokenBufferDesc": "Zusätzliche Token, die der gemeldeten Nutzung hinzugefügt werden, um den Overhead des System-Prompts auszugleichen.",
"storageUsageTokenBufferHint": "Auf 0 setzen, um die rohen Token-Zahlen des Anbieters zu melden. Standard: 2000.",
"storageUsageTokenBufferCurrent": "Aktuell: {value}",
"redisLauncherTitle": "Lokales Redis",
"redisLauncherDesc": "Startet mit einem Klick einen Redis-7-Container (Podman oder Docker) für Antwort-Cache, Kontingent-Tracking und Ratenbegrenzung.",
"redisLauncherRefresh": "Aktualisieren",
"redisLauncherStop": "Stoppen",
"redisLauncherLaunching": "Wird gestartet...",
"redisLauncherLaunch": "Redis starten",
"redisLauncherContainer": "Container",
"redisLauncherRunning": "Läuft",
"redisLauncherReachable": "Erreichbar",
"redisLauncherError": "Fehler: {message}",
"redisLauncherHint": "Entspricht der Ausführung von `omniroute redis up`. Der Container heißt `omniroute-redis` und lauscht auf 127.0.0.1:6379.",
"mcpAccessibilityTitle": "MCP-Barrierefreiheitsausgabe",
"compressionSettingsOutputStyles": "Ausgabestile",
"compressionStylesTileTitle": "Ausgabestile",
"cliproxyapiImportAuthTitle": "Konten von CLIProxyAPI importieren",
"cliproxyapiImportAuthDesc": "Importiert die OAuth-Konten, die CLIProxyAPI bereits in ~/.cli-proxy-api/ gespeichert hat, als OmniRoute-Verbindungen, sodass du dich nicht erneut bei jedem Konto anmelden musst. Unterstützte Kontotypen (Gemini, Codex, Claude, Antigravity, Qwen, Kimi) werden importiert; andere werden übersprungen.",
"cliproxyapiImportAuthButton": "Konten importieren",
"resilienceComboCooldownWaitTitle": "Wartezeit bei Kontingent-Sharing-Kombinationen",
"resilienceComboCooldownWaitDesc": "Nur für Kontingent-Sharing-Kombinationen: Wartet eine kurze vorübergehende Abkühlphase ab und sendet die Anfrage erneut, statt sofort einen 429-Fehler zurückzugeben. Wartet niemals bei quota_exhausted.",
"resilienceComboCooldownWaitToggleDesc": "Nur Kontingent-Sharing-Kombinationen; wartet niemals bei quota_exhausted.",
"resilienceComboCooldownMaxWaitMs": "Maximale Wartezeit pro Versuch",
"resilienceComboCooldownBudgetMs": "Gesamtes Wartebudget",
"resilienceQuotaShareConcurrencyTitle": "Gleichzeitigkeit pro Verbindung bei Kontingent-Sharing",
"resilienceQuotaShareConcurrencyDesc": "Nur für Kontingent-Sharing-Kombinationen: Wenn eine Verbindung eine Obergrenze für „Max. gleichzeitig“ festlegt, werden gleichzeitige Anfragen an dieses Abo-Konto serialisiert, damit es nie über seine Obergrenze hinaus überlastet wird. Überschüssige Anfragen warten in der Warteschlange, statt einen 429-Fehler zu erhalten. Die Obergrenze stammt aus dem Feld „Max. gleichzeitig“ jeder Verbindung; dieser Schalter aktiviert oder deaktiviert nur deren Einhaltung.",
"resilienceQuotaShareConcurrencyToggleDesc": "Nur Kontingent-Sharing-Kombinationen; berücksichtigt die Obergrenze „Max. gleichzeitig“ jeder Verbindung.",
"resilienceProviderCooldownTitle": "Anbieter-Abkühlphase",
"resilienceProviderCooldownScope": "Alle Kombinationsanfragen",
"resilienceProviderCooldownTrigger": "Wenn ein Anbieter/eine Verbindung fehlschlägt",
"resilienceProviderCooldownEffect": "Überspringt den fehlgeschlagenen Anbieter für eine Abkühlphase, bevor erneut versucht wird",
"resilienceProviderCooldownDesc": "Verhindert, dass nachfolgende Anfragen erneut dieselben fehlschlagenden Anbieter durchlaufen. Die Abkühlphase skaliert exponentiell mit aufeinanderfolgenden Fehlschlägen.",
"resilienceProviderCooldownEnabled": "Globale Anbieter-Abkühlphase aktivieren",
"resilienceProviderCooldownEnabledDesc": "Wenn aktiviert, werden fehlgeschlagene Anbieter global erfasst und für eine Abkühlphase übersprungen.",
"resilienceProviderCooldownMin": "Minimale Abkühlphase",
"resilienceProviderCooldownMax": "Maximale Abkühlphase",
"deployRelayButton": "Relay bereitstellen",
"denoRelayButton": "Deno-Relay bereitstellen",
"denoRelayModalTitle": "Deno-Relay bereitstellen",
"denoRelayWarning": "Warnung: Ein Deno-Deploy-Organisations-Token ist erforderlich. Dieses Token wird nur zum Erstellen der Relay-App verwendet und niemals von OmniRoute gespeichert.",
"denoRelayTokenLabel": "Deno-Deploy-Organisations-Token",
"denoRelayOrgDomainLabel": "Organisationsdomäne",
"denoRelayProjectNameLabel": "Deno-App-Name",
"denoRelayFreeTierNote": "Deno Deploy v2 läuft auf einem globalen Edge-Netzwerk. Kostenlose Stufe: 1 Mio. Anfragen & 100 GiB ausgehender Traffic pro Monat, keine CPU-Limits pro Anfrage, bis zu 20 aktive Apps & 50 benutzerdefinierte Domains.",
"denoRelayDeploying": "Wird bereitgestellt...",
"denoRelayDeploy": "Bereitstellen",
"cloudflareRelaySuccess": "Cloudflare-Relay erfolgreich bereitgestellt",
"cloudflareRelayButton": "Cloudflare-Relay bereitstellen",
"cloudflareRelayModalTitle": "Cloudflare-Worker-Relay bereitstellen",
"cloudflareRelayWarning": "Stellt einen Cloudflare Worker bereit, der LLM-Anfragen über das Edge-Netzwerk von Cloudflare weiterleitet — dabei wird die Host-IP hinter dynamischen Cloudflare-Adressen maskiert. Der Worker erzwingt ein einmaliges Auth-Geheimnis, damit die öffentliche workers.dev-URL nicht als offenes Relay wiederverwendet werden kann.",
"cloudflareRelayTokenHowto": "Erstelle das API-Token unter My Profile -> API Tokens -> Create Token -> Custom Token -> Account / Workers Scripts / Edit.",
"cloudflareRelayAccountIdLabel": "Cloudflare-Konto-ID",
"cloudflareRelayAccountIdHint": "Zu finden auf der rechten Seite der Cloudflare-Dashboard-Übersichtsseite.",
"cloudflareRelayApiTokenLabel": "Cloudflare-API-Token",
"cloudflareRelayApiTokenHint": "Erfordert die Berechtigung „Workers Scripts: Edit“. Das Token wird nur zum Zeitpunkt des Deployments verwendet und niemals gespeichert.",
"cloudflareRelayProjectNameLabel": "Worker-Name",
"cloudflareRelayFreeTierNote": "Kostenlose Stufe: 100.000 Anfragen/Tag pro Cloudflare-Konto.",
"cloudflareRelayDeploying": "Wird bereitgestellt...",
"cloudflareRelayDeploy": "Bereitstellen",
"cloudflareRelayCredsRequired": "Konto-ID und API-Token sind erforderlich",
"cloudflareRelayDeployFailed": "Deployment fehlgeschlagen",
"modelLockout": "Modell-Sperre",
"modelLockoutPageDescription": "Konfiguriert, welche HTTP-Fehlercodes eine Modell-Sperre auslösen, und steuert das Verhalten der Abkühlphase.",
"modelLockoutEnabled": "Modell-Sperre aktivieren",
"modelLockoutEnabledDescription": "Wenn aktiviert, werden Modelle, die mit konfigurierten Fehlercodes fehlschlagen, vorübergehend gesperrt, um Wiederholungsschleifen zu verhindern.",
"modelLockoutErrorCodes": "Fehlercodes",
"modelLockoutErrorCodesDescription": "HTTP-Statuscodes, die eine Modell-Sperre auslösen. Gib einen Code ein und klicke auf „Hinzufügen“, oder wähle aus den Vorschlägen.",
"modelLockoutBaseCooldown": "Basis-Abkühlphase (ms)",
"modelLockoutBaseCooldownDescription": "Anfängliche Abkühldauer in Millisekunden, bevor ein Modell erneut versucht werden kann.",
"modelLockoutMaxCooldown": "Max. Abkühlphase (ms)",
"modelLockoutMaxCooldownDescription": "Maximale Abkühldauer in Millisekunden. Verhindert übermäßig lange Sperren.",
"modelLockoutExponentialBackoff": "Exponentieller Backoff",
"modelLockoutExponentialBackoffDescription": "Wenn aktiviert, erhöht jeder aufeinanderfolgende Fehlschlag die Abkühldauer exponentiell.",
"modelLockoutMaxBackoffSteps": "Max. Backoff-Schritte",
"modelLockoutMaxBackoffStepsDescription": "Maximale Anzahl an Backoff-Schritten, bevor die Abkühlphase nicht weiter wächst. In den meisten Konfigurationen wird zuerst die Obergrenze „Max. Abkühlphase“ erreicht, wodurch dies zu einer Sicherheitsgrenze wird, falls „Max. Abkühlphase“ erhöht wird.",
"disableSessionStickiness": "Sitzungsbindung deaktivieren",
"disableSessionStickinessDesc": "Round-Robin- und Zufalls-Kombinationen wechseln bei jeder Anfrage zu einer anderen Verbindung, statt eine ganze Konversation anhand des Hashes der ersten Nachricht an eine Verbindung zu binden. Lass dies deaktiviert, um Prompt-Cache-Treffer bei mehrstufigen Chats zu erhalten. Kombinationsspezifische Überschreibungen haben Vorrang."
},
"contextRtk": {
"title": "RTK Engine",
"description": "Command-aware compression for tool output, terminal logs and build results.",
"enabled": "Enabled",
"intensity": "Intensity",
"intensityMinimal": "Minimal",
"intensityStandard": "Standard",
"intensityAggressive": "Aggressive",
"toolResults": "Tool results",
"assistantMessages": "Assistant messages",
"codeBlocks": "Code blocks",
"filterCatalog": "Katalog filtern",
"filterCatalogDesc": "Verfügbare Ausgabefilter nach Kategorie",
"guidedConfig": "Konfiguration",
"guidedConfigDesc": "Passen Sie an, wie RTK Ihre Terminalausgabe filtert",
"maxLines": "Max lines",
"maxChars": "Max chars",
"deduplicateThreshold": "Schwellenwert für die Deduplizierung",
"customFilters": "Benutzerdefinierte Filter",
"detectedType": "Erkannter Typ",
"confidence": "Vertrauen",
"beforeAfter": "Vorher/Nachher",
"trustProjectFilters": "Vertrauen Sie Projektfiltern",
"rawOutputRetention": "Beibehaltung der Rohausgabe",
"rawOutputNever": "Niemals",
"rawOutputFailures": "Misserfolge",
"rawOutputAlways": "Immer",
"rawOutputMaxBytes": "Maximale Rohausgabe in Bytes",
"filterTesting": "Filter Testing",
"pasteOutput": "Paste tool output to test filtering...",
"presetHigh": "Aggressiv",
"presetLow": "Licht",
"presetMaxChars": "Maximale Ausgabezeichen",
"presetMaxLines": "Max. Ausgabezeilen",
"presetMedium": "Standard",
"run": "Run",
"result": "Result",
"previewEmpty": "Run a sample to preview RTK output.",
"detected": "Detected",
"masterSwitchOffAlert": "Der Hauptschalter von Token Saver ist DEAKTIVIERT — diese Einstellungen wirken sich erst auf Anfragen aus, wenn du ihn in den Kompressionseinstellungen aktivierst.",
"tokensFiltered": "Tokens filtered",
"filtersActive": "Filters active",
"requests": "Requests",
"avgSavings": "Avg savings",
"simpleMode": "Einfach",
"advancedMode": "Fortgeschritten",
"searchFilters": "Suchfilter...",
"tooltipDedup": "Wie aggressiv wiederholte Zeilen entfernt werden.",
"tooltipMaxChars": "Maximale Zeichen pro Ausgabeblock.",
"tooltipMaxLines": "Maximale Anzahl von Zeilen, die von der Befehlsausgabe ferngehalten werden sollen. Der Überschuss wird abgeschnitten.",
"learnDiscoverTitle": "Filter lernen & entdecken",
"learnDiscoverDesc": "Durchsucht deine erfassten Befehlsausgaben (Raw-Output-Aufbewahrung muss aktiviert sein), um neue RTK-Filter vorzuschlagen. Nur Vorschläge — du prüfst und speicherst sie.",
"discoverHeading": "Wiederkehrendes Rauschen entdecken",
"discoverButton": "Beispiele scannen",
"discoverScanning": "Wird gescannt…",
"discoverEmpty": "Kein wiederkehrendes Rauschen gefunden. Aktiviere zuerst die Raw-Output-Aufbewahrung und führe ein paar Befehle aus.",
"discoverSamples": "{count} Beispiel(e) gescannt",
"discoverHits": "{hits}× über alle Beispiele",
"learnHeading": "Einen Filter für einen Befehl lernen",
"learnCommandPlaceholder": "z. B. npm install",
"learnButton": "Filter vorschlagen",
"learnEmpty": "Noch kein Vorschlag. Gib einen Befehl ein, den du ausgeführt hast, und scanne.",
"learnSamplesUsed": "Aus {count} passenden Beispiel(en) gelernt",
"suggestionError": "Vorschläge konnten nicht geladen werden. Überprüfe die Management-Authentifizierung und versuche es erneut."
},
"contextCombos": {
"title": "Compression Combos",
"description": "Define how engines are combined for different routing scenarios.",
"createCombo": "Create Compression Combo",
"editCombo": "Edit",
"deleteCombo": "Delete",
"deleteConfirm": "Delete this compression combo?",
"pipeline": "Pipeline",
"addStep": "Add Step",
"removeStep": "Remove",
"name": "Name",
"descriptionField": "Description",
"languagePacks": "Language Packs",
"outputMode": "Output Mode",
"assignToRouting": "Assign to Routing Combos",
"noAssignments": "No routing combos available",
"default": "Default",
"setAsDefault": "Set as Default",
"save": "Save",
"cancel": "Cancel",
"enabled": "Enabled"
},
"contextCaveman": {
"title": "Caveman Engine",
"description": "Rule-based message compression, language packs, analytics and output mode controls.",
"advancedConfig": "Erweiterte Konfiguration",
"advancedConfigDesc": "Optimieren Sie das Komprimierungsverhalten",
"aggressiveSettings": "Aggressive Einstellungen",
"aggressiveSettingsDesc": "Maximale Komprimierung mit möglichen Qualitätseinbußen",
"requests": "Requests",
"tokensSaved": "Tokens saved",
"savingsPercent": "Savings %",
"avgLatency": "Avg latency",
"languagePacks": "Language Packs",
"languagePacksDesc": "Enable compression rules for specific languages.",
"labelAutoTrigger": "Automatische Komprimierung, wenn der Kontext überschritten wird",
"labelCompressionRate": "Kompressionsstärke",
"labelMaxTokens": "Zieltoken pro Nachricht",
"labelMinLength": "Mindestnachrichtenlänge",
"labelMinSavings": "Mindestanzahl an zu speichernden Token",
"enabled": "Enabled",
"autoDetect": "Auto-detect language",
"rulesCount": "{count} rules",
"inputCompressionTitle": "Eingabekomprimierung",
"inputCompressionDesc": "Schreibt den Chatverlauf mit kürzerer Formulierung um. Reduziert Eingabe-Token um ~50 %.",
"analyticsTitle": "Compression Analytics",
"noAnalytics": "No compression analytics yet.",
"outputMode": "Ausgabemodus",
"outputModeDesc": "Instructs the LLM to respond in a terse, compact format.",
"outputModeTitle": "Output Mode",
"quickSettings": "Schnelleinstellungen",
"quickSettingsDesc": "Grundlegende Komprimierungseinstellungen für den Einstieg",
"autoClarity": "Auto-Clarity Bypass",
"bypassConditions": "Bypass conditions",
"bypassConditionsList": "Sicherheit, irreversibel, klärend, auftragsempfindlich",
"simpleMode": "Einfach",
"advancedMode": "Fortgeschritten",
"tooltipAutoTrigger": "Automatisch komprimieren, wenn der Kontext diese Größe überschreitet.",
"tooltipCompressionRate": "0,0 = keine, 1,0 = maximal. 0,5 = ausgeglichen.",
"tooltipMaxTokens": "Zieltokenanzahl nach der Komprimierung. Niedriger = aggressiver.",
"tooltipMinLength": "Nachrichten, die kürzer sind, werden nicht komprimiert. Niedriger = mehr Komprimierung.",
"tooltipMinSavings": "Komprimieren Sie nur, wenn dadurch mindestens so viele Token eingespart werden.",
"ultraSettings": "Ultra-Einstellungen",
"ultraSettingsDesc": "SLM-gestützte semantische Komprimierung",
"preview": {
"lite": "Respond concise. Preserve technical terms, code, errors, URLs, and identifiers.",
"full": "Respond terse and compact. Preserve all technical substance.",
"ultra": "Respond ultra terse with common technical abbreviations. Preserve exact symbols."
}
},
"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).",
"translationPathHubSpoke": "{source} → OpenAI (mittel) → {target}",
"translationPathDirect": "{source} → {target} (direkter Übersetzer)",
"translationPathPassthrough": "Gleiches Format – keine Übersetzung erforderlich",
"openaiIntermediatePanel": "OpenAI-Mittelstufe",
"autoFeaturesTitle": "Was OmniRoute automatisch tut",
"autoFeaturesCount": "8 Funktionen",
"featureReasoningCache": "Argumentations-Cache",
"featureReasoningCacheDesc": "Fügt zwischengespeicherten reasoning_content für Modelle im Denkmodus (DeepSeek V4, Kimi K2, Qwen) erneut ein, wenn Clients ihn aus dem Konversationsverlauf weglassen.",
"featureSchemaCoercion": "Schemazwang",
"featureSchemaCoercionDesc": "Behebt fehlerhafte Tool-Schemata: Fügt fehlende zusätzliche Eigenschaften hinzu, bereinigt lange Beschreibungen und normalisiert verschachtelte Objekte.",
"featureRoleNormalization": "Rollennormalisierung",
"featureRoleNormalizationDesc": "Ordnet Entwickler→System für Nicht-OpenAI-Ziele zu. Ordnet System→Benutzer für Modelle zu, die keine Systemrolle unterstützen.",
"featureToolCallIds": "Normalisierung der Tool-Aufruf-ID",
"featureToolCallIdsDesc": "Erzeugt bei Fehlen eindeutige Tool_Call-IDs. Wird für Anbieter wie Mistral auf das 9-Zeichen-Format normalisiert.",
"featureMissingToolResponse": "Tool-Response-Injektion",
"featureMissingToolResponseDesc": "Fügt leere Tool_Result-Nachrichten ein, wenn Clients Tool_Calls ohne entsprechende Antworten senden.",
"featureThinkingBudget": "Denkendes Budget",
"featureThinkingBudgetDesc": "Verwaltet automatisch die Denkkonfiguration. Entfernt Denkparameter, wenn die letzte Nachricht nicht vom Benutzer stammt.",
"featureDirectPaths": "Direkte Übersetzungspfade",
"featureDirectPathsDesc": "Einige Formatpaare (Claude→Gemini) verfügen über Direktübersetzer, die den OpenAI-Hub umgehen und so eine genauere Ausgabe erzeugen.",
"featureImageMapping": "Bildgrößenzuordnung",
"featureImageMappingDesc": "Übersetzt Bilddimensionskonventionen zwischen API-Formaten (z. B. OpenAI-Detailebenen → Gemini-Dimensionen).",
"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",
"vision": "Vision",
"schema-coercion": "Schemazwang"
},
"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",
"vision": "Multimodale Anfrage mit Bildeingabe",
"schema-coercion": "Strukturierte Ausgabe/JSON-Schema-Durchsetzung"
},
"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: „Python\ndef sort_array(arr): 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."
},
"vision": {
"system": "Sie sind ein Assistent, der Bilder präzise beschreibt.",
"userPrompt": "Was ist auf diesem Bild zu sehen?",
"imageUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/600px-PNG_transparency_demonstration_1.png"
},
"schemaCoercion": {
"userPrompt": "Suchen Sie nach dem Wetter für Tokio in metrischen Einheiten und fügen Sie die stündliche Aufschlüsselung hinzu.",
"toolDescription": "Holen Sie sich das Wetter für eine Stadt mit strukturierten Optionen.",
"cityDescription": "Die abzufragende Stadt, z. B. „Tokio“ oder „New York“."
}
},
"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)",
"liveMonitorMemoryNote": "Ereignisse werden im Speicher gespeichert und gehen beim Neustart verloren.",
"liveMonitorMemoryCapNote": "Maximal 200 Ereignisse bleiben erhalten.",
"eventSourcesLabel": "Ereignisquellen:",
"eventSourceTranslatorPage": "• Übersetzerseite (Chat-Tester, Prüfstand)",
"eventSourceMainPipeline": "• Hauptanforderungspipeline (CLI/IDE/API-Verkehr)",
"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.",
"streamTransformer": "Transformer streamen",
"modeDescriptionStreamTransformer": "Führen Sie Chat-Abschlüsse-SSE-Streams über den Responses-Transformer aus.",
"streamTransformerTitle": "Antwort-Stream-Transformer",
"streamTransformerDescription": "Fügen Sie einen SSE-Stream für Chat-Abschlüsse ein, führen Sie ihn über den Responses-Transformer von OmniRoute aus und überprüfen Sie die ausgegebenen Response.*-Ereignisse, bevor Sie einen Client verbinden.",
"loadTextSample": "Textbeispiel laden",
"loadToolSample": "Tool-Call-Beispiel laden",
"transformToResponses": "In Antworten verwandeln",
"rawChatSseInput": "Rohe Chat-Abschlüsse SSE",
"transformedResponsesSse": "API für transformierte Antworten SSE",
"noResultsYet": "Noch keine Ergebnisse",
"transformedEvents": "Verwandelte Ereignisse",
"uniqueEventTypes": "Einzigartige Veranstaltungstypen",
"inputLines": "Eingabezeilen",
"outputLines": "Ausgabezeilen",
"transformedEventTimeline": "Transformierte Ereigniszeitleiste",
"transformerTimelineHint": "Führen Sie den Transformator aus, um die ausgegebenen „response.output_*“-Ereignisse der Reihe nach zu überprüfen.",
"eventType": "Ereignistyp",
"eventPreview": "Vorschau",
"comboRouted": "Combo geroutet",
"uniqueEndpoints": "Einzigartige Endpunkte",
"routeDetails": "Routendetails",
"comboBadge": "Kombi",
"routeEndpointLabel": "Endpunkt",
"routeConnectionLabel": "Verbindung",
"scenarioVision": "Vision (Bildverständnis)",
"scenarioSchemaCoercion": "Schemazwang (strukturierte Ausgabe)",
"techniques": "Techniken:",
"friendlyTitle": "Übersetzer",
"friendlySubtitle": "Verwende deine bestehende App mit jedem Anbieter — ohne Code umzuschreiben.",
"conceptHeadline": "Deine App spricht die „Sprache“ einer API. Der Übersetzer wandelt sie um, damit sie einen anderen Anbieter nutzen kann.",
"conceptDiagramAppLabel": "Deine App",
"conceptDiagramSourceLabel": "Quellformat",
"conceptDiagramHubLabel": "OpenAI (Hub)",
"conceptDiagramTargetLabel": "Zielanbieter",
"conceptDiagramExampleApp": "z. B. Anthropic SDK",
"conceptDiagramExampleSource": "claude",
"conceptDiagramExampleTarget": "Gemini",
"conceptHowItWorksToggle": "So funktioniert's",
"conceptHowItWorksBody": "Deine App sendet eine Anfrage in ihrem eigenen Format. Der Übersetzer erkennt das Format, wandelt es über OpenAI als Zwischen-Hub um (oder direkt, wenn ein direkter Übersetzer verfügbar ist), sendet es an den gewählten Anbieter und gibt die Antwort zurück, umgewandelt in das Format deiner App.",
"tabTranslate": "Übersetzen",
"tabMonitor": "Monitor",
"tabTranslateAriaLabel": "Zum Tab „Übersetzen“ wechseln",
"tabMonitorAriaLabel": "Zum Tab „Monitor“ wechseln",
"simpleAppUsesLabel": "Meine App verwendet",
"simpleAppUsesHint": "Das API-Format, das deine App spricht (z. B. Anthropic SDK = claude).",
"simpleSendToLabel": "Senden an",
"simpleSendToHint": "Wohin die Anfrage tatsächlich gesendet wird (ein in OmniRoute verbundener Anbieter).",
"simpleStartWithLabel": "Beginnen mit",
"simpleStartWithExamplePlaceholder": "Ein vorgefertigtes Beispiel auswählen",
"simpleStartWithCustomOption": "Eigene Anfrage einfügen (erweitert)",
"simpleModeLabel": "Modus",
"simpleModePreview": "Nur Übersetzung anzeigen",
"simpleModeSend": "Senden und Antwort ansehen",
"simpleAdvancedToggle": "Erweitert",
"simpleInputPanelTitle": "Eingabe",
"simpleInputPanelHint": "Freitextnachricht oder vorgefertigtes Beispiel",
"simpleResultPanelTitle": "Übersetzung + Antwort",
"narratedDetected": "✓ Erkannt: {format}",
"narratedTranslating": "Übersetze nach {target}...",
"narratedSending": "Sende an {target}...",
"narratedSuccess": "→ nach {target} übersetzt · Antwort in {latency}ms",
"narratedError": "Fehlgeschlagen: {reason}",
"narratedSeeTranslatedJson": "übersetztes JSON ansehen",
"narratedSeePipeline": "Pipeline ansehen",
"advancedSectionTitle": "Erweitert",
"advancedSectionSubtitle": "Raw JSON, Pipeline und technische Tools. Alles hier ist dasselbe wie in den alten Tabs — nur neu organisiert.",
"advancedRawJsonTitle": "Raw JSON (automatische Erkennung + Monaco)",
"advancedRawJsonSubtitle": "Füge eine JSON-Anfrage ein; das Format wird automatisch erkannt.",
"advancedPipelineTitle": "OpenAI-Zwischenpipeline",
"advancedPipelineSubtitle": "Visualisiere jeden Übersetzungsschritt (Hub-and-Spoke).",
"advancedStreamTransformTitle": "Stream-Transformer (Chat → Responses SSE)",
"advancedStreamTransformSubtitle": "Wandelt Chat Completions SSE in die Responses API um.",
"advancedTestBenchTitle": "Test Bench (8 Szenarien)",
"advancedTestBenchSubtitle": "Führt alle Szenarien aus und meldet Bestanden/Fehlgeschlagen + Kompatibilität in %.",
"advancedCompressionTitle": "Komprimierungsvorschau",
"advancedCompressionSubtitle": "Schätzt die Token-Einsparung über verschiedene Komprimierungsmodi.",
"monitorOriginHint": "Ereignisse, die von „Übersetzen“ oder der Hauptpipeline erzeugt werden, erscheinen hier in Echtzeit.",
"monitorEmptyCta": "Wechsle zum Tab „Übersetzen“ und sende eine Anfrage — sie erscheint dann hier.",
"monitorOpenTranslateButton": "Zu „Übersetzen“",
"pipelineStepClientRequest": "Client-Anfrage",
"pipelineStepClientRequestDesc": "Anfrage im Client-Format empfangen",
"pipelineStepFormatDetected": "Format erkannt",
"pipelineStepFormatDetectedDesc": "Automatisch erkanntes Quellformat",
"pipelineStepOpenAIIntermediate": "OpenAI-Zwischenformat",
"pipelineStepOpenAIIntermediateDesc": "In das OpenAI-Hub-Format übersetzt",
"pipelineStepProviderFormat": "Anbieter-Format",
"pipelineStepProviderFormatDesc": "In das Zielformat des Anbieters übersetzt",
"pipelineStepProviderResponse": "Anbieter-Antwort",
"pipelineStepProviderResponseDesc": "Streaming-Antwort vom Anbieter",
"conceptDiagramArrow1": "spricht",
"conceptDiagramArrow2": "übersetzt",
"conceptDiagramArrow3": "wandelt um",
"conceptDiagramExampleHub": "OpenAI",
"conceptDiagramHubTooltip": "Zwischen-Hub, den der Übersetzer verwendet, um zwischen Formaten ohne direkte Zuordnung zu konvertieren.",
"conceptDiagramSourceTooltip": "Das API-Format, das deine App spricht (z. B. Anthropic SDK = claude).",
"conceptDiagramTargetTooltip": "Der Anbieter, an den die Anfrage tatsächlich gesendet wird.",
"compressionEmptyHint": "Fülle das Eingabefeld im Tab „Übersetzen“ (Einfache Steuerung oder Raw JSON) aus, um die Vorschau zu aktivieren.",
"compressionModeLabel": "Komprimierungsmodus",
"compressionPreviewButton": "Vorschau der Komprimierung anzeigen",
"compressionPreviewing": "Vorschau wird erstellt…"
},
"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.",
"evalsStrategyContainsLabel": "Enthält",
"evalsStrategyExactLabel": "Exakte Übereinstimmung",
"evalsStrategyRegexLabel": "Regex",
"evalsStrategyCustomLabel": "Benutzerdefinierte Logik",
"evalsStrategyContainsDescription": "Prüft, ob die LLM-Ausgabe den erwarteten Teilstring enthält.",
"evalsStrategyExactDescription": "Prüft, ob die LLM-Ausgabe exakt dem erwarteten Wert entspricht.",
"evalsStrategyRegexDescription": "Validiert die LLM-Ausgabe anhand eines regulären Ausdrucks.",
"evalsStrategyCustomDescription": "Benutzerdefinierte Auswertungslogik (über JSON konfiguriert).",
"historyColumnSuiteName": "Suite-Name",
"historyColumnTarget": "Ziel",
"historyColumnPassRate": "Erfolgsquote",
"historyColumnAvgLatencyMs": "Ø Latenz",
"historyColumnCreatedAt": "Ausgeführt",
"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",
"runAllSuites": "Alle ausführen",
"runAllRunning": "Läuft alles...",
"runAllProgress": "Ausführen von {current}/{total}: {name}",
"runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}",
"runAllCompleted": "{suites} Suiten ausgeführt – {passed} bestanden, {failed} fehlgeschlagen",
"runAllCompletedWithFailures": "{completed} Suiten ausgeführt; {failedSuites} konnte nicht abgeschlossen werden",
"runningProgress": "Ausführen von {current}/{total}...",
"passRate": "Erfolgsquote",
"summaryBreakdown": "{passed} bestanden · {failed} fehlgeschlagen · {total} insgesamt",
"passedIconLabel": "✅Bestanden",
"failedIconLabel": "❌ Fehlgeschlagen",
"resultPassed": "Bestanden",
"resultFailed": "Fehlgeschlagen",
"expandResult": "Erweitern Sie die Ergebnisdetails",
"collapseResult": "Ergebnisdetails ausblenden",
"detailsContains": "Enthält: „{term}“",
"detailsRegex": "Regex: {pattern}",
"detailsExpected": "Erwartet: „{expected}“",
"expectedOutputLabel": "Erwartete Ausgabe",
"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": "Last Refreshed",
"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",
"cardExpand": "Erweitern",
"cardCollapse": "Einklappen",
"moreQuotas": "+{count} weitere",
"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",
"tierLite": "Lite",
"tierUnknown": "Unbekannt",
"statTotal": "Gesamt",
"statCritical": "Kritisch",
"statAlert": "Warnung",
"statHealthy": "Gesund",
"filterPurchaseTypeLabel": "Typ",
"filterTierLabel": "Stufe",
"purchaseAll": "Alle",
"purchaseOauthSub": "Abonnement",
"purchaseOauthFree": "OAuth kostenlos",
"purchaseApiKey": "API-Schlüssel",
"creditsLabel": "Guthaben",
"creditBalanceHint": "Verbleibendes Guthaben",
"unlimitedLabel": "Unbegrenzt",
"refreshing": "Wird aktualisiert",
"resetsIn": "Zurücksetzung in",
"editCutoffs": "Grenzwerte bearbeiten",
"forceRefresh": "Jetzt aktualisieren",
"resetCreditsLabel": "Reset-Credits",
"redeemResetCredit": "Reset einlösen",
"confirmRedeemResetCredit": "Einen Codex-Reset-Credit für dieses Konto einlösen? Dabei wird genau ein Reset-Credit verbraucht.",
"resetCreditRedeemed": "Reset eingelöst",
"resetCreditRedeemFailed": "Reset-Credit konnte nicht eingelöst werden",
"suiteBuilderSaveFailed": "Failed to save suite",
"clone": "Klonen",
"exportSuite": "Exportieren",
"importSuite": "Importieren",
"suiteExported": "Suite exportiert",
"suiteExportFailed": "Suite konnte nicht exportiert werden",
"suiteImportReady": "Suite-Import zur Überprüfung geladen",
"suiteImportFailed": "Suite konnte nicht importiert werden",
"suiteImportInvalid": "Ungültiger Evaluierungssuite-JSON",
"suiteBuilderCloneSuffix": "kopieren",
"suiteBuilderImportedSuite": "Importierte Suite",
"scorecardTitle": "Scorecard",
"evalApiKey": "API Key",
"scorecardPassRate": "Pass Rate",
"targetTypeModel": "Model",
"actualOutputLabel": "Actual Output",
"evalTargetHint": "Select a model or combo to evaluate.",
"suiteBuilderDeleted": "Suite deleted successfully",
"suiteBuilderCaseCardHint": "Define the input prompt and expected output criteria.",
"nextResetUtc": "Next reset (UTC)",
"scorecardHint": "Aggregated pass rates across all evaluation suites.",
"suiteLatestRunsHint": "Most recent evaluation runs for this suite.",
"saving": "Saving",
"suiteBuilderCaseModelLabel": "Model (optional)",
"evalControlsTitle": "Evaluation Controls",
"suiteBuilderEditTitle": "Edit Eval Suite",
"suiteBuilderCaseStrategyLabel": "Validation Strategy",
"notifySelectDifferentCompareTarget": "Please select a different target for comparison",
"recentRunsHint": "Showing the most recent evaluation runs. Click a run to see detailed results.",
"evalCompareHint": "Optionally compare results against a second target.",
"suiteBuilderCaseInvalid": "This case has validation errors. Please fix before saving.",
"historyEmpty": "No evaluation history yet",
"suiteBuilderUpdated": "Suite updated successfully",
"resetInterval": "Reset Interval",
"suiteBuilderCreateTitle": "Create Eval Suite",
"activePeriodSpend": "Active Period Spend",
"evalApiKeyHint": "Select which API key to use for evaluation requests.",
"evalCompareOptional": "Compare (optional)",
"suiteBuilderDeleteFailed": "Failed to delete suite",
"suiteBuilderCaseSystemPromptPlaceholder": "Optional system instructions...",
"scorecardCases": "Cases",
"runCompletedWithScore": "Evaluation completed — {score}% pass rate",
"suiteBuilderCustomBadge": "Custom",
"targetSuiteDefaults": "Suite defaults",
"suiteBuilderDeleteConfirm": "Are you sure you want to delete this suite? This action cannot be undone.",
"suiteBuilderNameLabel": "Suite Name",
"scorecardSuites": "Suites",
"evalCompareTarget": "Compare Target",
"suiteBuilderCaseModelPlaceholder": "e.g. gpt-4o-mini",
"evalControlsHint": "Configure your evaluation target and API key, then run suites to validate model quality.",
"recentRunsTitle": "Recent Runs",
"suiteBuilderCaseSystemPromptLabel": "System Prompt",
"suiteBuilderCaseExpectedPlaceholder": "e.g. def fibonacci",
"suiteBuilderCaseExpectedPlaceholderContains": "z.B. auf jeden Fall Fibonacci",
"suiteBuilderCaseExpectedPlaceholderExact": "Fügen Sie die genaue erwartete Antwort ein",
"suiteBuilderCaseExpectedPlaceholderRegex": "z.B. ^\\\\s*\\\\{.*\\\\}\\\\s*$",
"suiteBuilderCaseExpectedHintRegex": "Verwenden Sie einen regulären JavaScript-Ausdruck ohne Umbruch von Schrägstrichen.",
"suiteBuilderNamePlaceholder": "e.g. Coding Quality Suite",
"suiteBuilderAddCase": "Add Case",
"cancel": "Cancel",
"evalTarget": "Target",
"suiteBuilderCaseNameLabel": "Case Name",
"weeklyLimitUsd": "Weekly Limit (USD)",
"suiteBuilderCaseUserPromptPlaceholder": "e.g. Write a fibonacci function in Python",
"suiteBuilderNameRequired": "Suite name is required",
"suiteBuilderCaseUserPromptLabel": "User Prompt",
"daily": "Daily",
"resultErrorLabel": "Error",
"suiteBuilderBuiltInBadge": "Built-in",
"suiteBuilderCaseCardTitle": "Test Case",
"suiteBuilderDuplicateCase": "Duplizieren",
"weeklyLimitPlaceholder": "e.g. 50.00",
"suiteBuilderCaseTagsHint": "Comma-separated tags for organizing test cases.",
"notifyEvalRunFailedWithReason": "Evaluation failed: {reason}",
"weekly": "Weekly",
"runEvalRunning": "Running evaluation...",
"delete": "Delete",
"resetTimeUtc": "Reset Time (UTC)",
"evalApiKeyAuto": "Auto (use default)",
"suiteBuilderDescriptionPlaceholder": "Optional description of what this suite tests...",
"targetComparisonTitle": "Target Comparison",
"save": "Save",
"suiteBuilderCreated": "Suite created successfully",
"suiteLatestRuns": "Latest Runs",
"suiteBuilderCaseExpectedLabel": "Expected Value",
"historyLatency": "Latency",
"suiteBuilderCaseTagsPlaceholder": "e.g. coding, python",
"targetTypeCombo": "Combo",
"scorecardPassed": "Passed",
"suiteBuilderCaseTagsLabel": "Tags",
"suiteBuilderNewSuite": "New Suite",
"notifyEvalLoadFailed": "Failed to load evaluation data",
"notConfigured": "Not Configured",
"suiteBuilderCaseNamePlaceholder": "e.g. Python fibonacci test",
"intervalLabel": "Interval",
"suiteBuilderCreateAction": "Create Suite",
"suiteBuilderCasesHint": "Each case sends a prompt and validates the response.",
"suiteBuilderUpdatedAt": "Updated",
"errorBadge": "Error",
"suiteBuilderCasesTitle": "Test Cases",
"edit": "Edit",
"monthly": "Monthly",
"suiteBuilderCasesRequired": "At least one test case is required",
"weeklyLimitSummary": "Weekly budget limit summary",
"suiteBuilderDescriptionLabel": "Description",
"targetComparisonHint": "Side-by-side comparison of evaluation results between targets.",
"compareCompletedWithScore": "Comparison completed — {score}% pass rate",
"staleQuotaTooltip": "Last refresh failed — showing cached data",
"quotaThresholdLabel": "Min. übrig",
"quotaCutoffsColumnHelp": "Stoppen Sie Anfragen, wenn das verbleibende Kontingent auf diesen Prozentsatz oder darunter fällt.",
"quotaCutoffsButtonDefault": "Standard",
"quotaCutoffsButtonHelp": "Bearbeiten Sie die verbleibenden Mindestkontingente für dieses Konto.",
"quotaCutoffsButtonDisabled": "Für dieses Konto sind noch keine Kontingentfenster verfügbar.",
"quotaCutoffsTitle": "Kontingentbegrenzungen für {name} ({provider})",
"quotaCutoffsExplainer": "Überschreiben Sie den Prozentsatz des verbleibenden Mindestkontingents, bei dem dieses Konto nicht mehr für jedes Kontingentfenster ausgewählt wird. Lassen Sie das Feld leer, um den Anbieterstandard zu übernehmen.",
"quotaCutoffsDefaultHint": "Standardmäßige verbleibende Mindestanzahl: {default} %",
"quotaCutoffsResetAll": "Alles zurücksetzen",
"quotaCutoffsNoWindows": "Für dieses Konto sind noch keine Kontingentfenster verfügbar.",
"quotaThresholdInvalid": "Geben Sie eine ganze Zahl von 0 bis 100 ein.",
"budgetKpiToday": "Heute",
"budgetKpiThisMonth": "Diesen Monat",
"budgetKpiProjEom": "Projekt EOM",
"budgetKpiBlocked": "Blockiert",
"budgetKpiAtRisk": "In Gefahr",
"budgetKpiActiveKeys": "Aktive Schlüssel",
"budgetSearchKeysPlaceholder": "Suchschlüssel...",
"budgetSortPctUsed": "Sortieren: % Verwendet ↓",
"budgetSortTodayDollar": "Sortieren: Heute $ ↓",
"budgetSortMonthDollar": "Sortieren: Monat $ ↓",
"budgetSortNameAZ": "Sortieren: Name (A–Z)",
"budgetColDailyLim": "Tageslimit",
"budgetColMonthlyLim": "Monatslimit",
"budgetColUsedPct": "Verwendet %",
"budgetLoading": "Laden…",
"budgetNoKeysMatch": "Keine Schlüssel entsprechen den Filtern",
"budgetLinearExtrapolation": "lineare Extrapolation",
"budgetThisMonthSoFar": "Bisher diesen Monat",
"budgetProjectedEndOfMonth": "Voraussichtliches Monatsende",
"budgetByProvider": "nach Anbieter",
"budgetDailyDollar": "Täglich $",
"budgetWeeklyDollar": "Wöchentlich $",
"budgetMonthlyDollar": "Monatlich $",
"budgetWarnAtPct": "Warnen bei %",
"quotaAlerts": "Kontingentwarnungen",
"quotaTableRefreshing": "⟳ Erfrischend...",
"noSpendLast30Days": "Keine Ausgaben in den letzten 30 Tagen",
"updatedShort": "Aktualisiert",
"lastRefreshed": "Zuletzt aktualisiert",
"providerQuota": "Anbieter-Kontingent",
"providerQuotaHomeHint": "Live-Status über alle verbundenen Konten",
"showMoreQuotas": "{count} weitere anzeigen",
"showLessQuotas": "Weniger anzeigen",
"tokenExpiresIn": "Token läuft ab in {time}",
"tokenExpired": "Token abgelaufen",
"deactivateAccount": "Konto deaktivieren (Routing stoppen)",
"activateAccount": "Konto aktivieren (Routing fortsetzen)",
"accountActivated": "Konto aktiviert",
"accountDeactivated": "Konto deaktiviert",
"toggleActiveFailed": "Kontostatus konnte nicht aktualisiert werden",
"percentUsed": "{pct}% genutzt"
},
"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: CHANGEME (unless INITIAL_PASSWORD was set)",
"Authorization": "Autorisierung",
"Content-Disposition": "Inhaltliche Disposition",
"waitingForAuthorization": "Warte auf Autorisierung...",
"waitingForGoogleAuthorization": "Warte auf Google-Autorisierung...",
"waitingForOpenAIAuthorization": "Warte auf OpenAI-Autorisierung...",
"waitingForAntigravityAuthorization": "Warte auf Antigravity-Autorisierung...",
"waitingForQoderAuthorization": "Warte auf Qoder-Autorisierung...",
"exchangingCodeForTokens": "Tausche Code gegen Token aus...",
"nodeIncompatibleTitle": "Incompatible Node.js Version",
"nodeIncompatibleDesc": "You are running Node.js {version}, which is outside OmniRoute's supported secure runtime policy. Use a patched Node.js 20.x or 22.x LTS release.",
"nodeIncompatibleFixLabel": "Fix: install a patched Node.js 22 LTS release",
"nodeIncompatibleHint": "OmniRoute requires Node.js 22.22.2+ (22.x LTS) or 24.0.0+ (24.x LTS). Node 24 LTS is recommended."
},
"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",
"deploymentGuides": "Bereitstellungshandbücher",
"features": "Funktionen",
"supportedProviders": "Unterstützte Anbieter",
"supportedProvidersToc": "Anbieter",
"commonUseCases": "Häufige Anwendungsfälle",
"clientCompatibility": "Client-Kompatibilität",
"protocolsToc": "Protokolle",
"apiReference": "API-Referenz",
"managementApiReference": "Management API Reference",
"managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.",
"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",
"deploySetupTitle": "Setup-Anleitung",
"deploySetupText": "Schrittweise Installation, Umgebungskonfiguration und exemplarische Vorgehensweise für die erste Ausführung von OmniRoute.",
"deployElectronTitle": "Elektronen-Desktop",
"deployElectronText": "Führen Sie OmniRoute als native Desktop-Anwendung unter Windows, macOS und Linux aus.",
"deployDockerTitle": "Docker",
"deployDockerText": "Containerisierte Bereitstellung mit Docker Compose; bereit für Produktionsstacks und Kubernetes.",
"deployVmTitle": "Virtuelle Maschine",
"deployVmText": "Selbsthosting auf jeder Linux-VM. Beinhaltet Systemd-Einheit, Protokollrotation und Backup-Tools.",
"deployFlyTitle": "Fly.io",
"deployFlyText": "Stellen Sie es mit einem fly.toml und einem einzigen Bereitstellungsbefehl auf der Edge-Laufzeitumgebung von Fly.io bereit.",
"deployPwaTitle": "PWA",
"deployPwaText": "Installieren Sie OmniRoute als Progressive Web App auf Android-, iOS- und Desktop-Browsern.",
"deployTermuxTitle": "Termux (Android)",
"deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.",
"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).",
"clientWindsurfTitle": "Windsurfen",
"clientWindsurfBullet1": "Verwenden Sie OmniRoute als OpenAI-kompatible Basis-URL und behalten Sie explizite Anbieterpräfixe für deterministisches Routing bei.",
"clientWindsurfBullet2": "Verweisen Sie Modelle auf „/v1/chat/completions“ für allgemeinen Datenverkehr und behalten Sie „/v1/responses“ für Codex-artige Abläufe bei.",
"clientWindsurfBullet3": "Verwenden Sie Dashboard -> CLI-Tools für eine vorgefertigte Windsurf-Konfigurationsanleitung.",
"clientClineTitle": "Cline",
"clientClineBullet1": "Cline funktioniert am besten mit expliziten Anbieter-/Modellpräfixen, sodass der Router das Backend nie erraten muss.",
"clientClineBullet2": "Verwenden Sie „/v1/chat/completions“ für allgemeine Modelle und verwenden Sie dieselbe OmniRoute-Basis-URL für verschiedene Konten wieder.",
"clientClineBullet3": "Verwenden Sie das Provider-Dashboard, um den OAuth-/API-Schlüssel zu validieren, bevor Sie Cline-Laufzeitprobleme debuggen.",
"clientKimiTitle": "Kimi-Codierung",
"clientKimiBullet1": "Verwenden Sie OmniRoute als stabile Basis-URL, während Sie Konten oder Anbieterkombinationen darunter rotieren.",
"clientKimiBullet2": "Bevorzugen Sie Modelle mit Präfixen in Codierungsabläufen, damit Fallback und Prüfpfad explizit bleiben.",
"clientKimiBullet3": "Verwenden Sie „/v1/responses“, wenn Sie natives Routing im Responses-Stil für Tool-verwendende Clients wünschen.",
"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).",
"endpointSpeechNote": "Sprachsynthese (ElevenLabs, OpenAI TTS).",
"endpointEmbeddingsNote": "Text-Embedding-Generierung (OpenAI, Cohere, Voyage).",
"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.",
"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.",
"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.",
"endpointCompletionsNote": "Legacy-Vervollständigungsendpunkt für die Textgenerierung.",
"endpointModerationsNote": "Inhaltsmoderation und Sicherheitsklassifizierung.",
"endpointRerankNote": "Neurangierung von Dokumenten für die abrufgestützte Generierung (Cohere, Jina).",
"endpointSearchNote": "Websuche mit 5 Anbietern (Serper, Brave, Exa, Tavily, Perplexity).",
"endpointSearchAnalyticsNote": "Analysen und Metriken für Suchanfragen.",
"endpointVideoNote": "Videogenerierung (ComfyUI, SD WebUI-Workflows).",
"endpointMusicNote": "Musikgenerierung über ComfyUI-Workflows.",
"endpointMessagesNote": "Endpunkt für anthropisch-native Nachrichten.",
"endpointCountTokensNote": "Zählen Sie Token für eine bestimmte Nachrichtennutzlast.",
"endpointFilesNote": "Datei-Upload für multimodale Eingaben.",
"endpointBatchesNote": "Stapelverarbeitung für Massen-API-Anfragen.",
"endpointWsNote": "WebSocket-Endpunkt für Echtzeit-Streaming.",
"mgmtProvidersListNote": "Listen Sie alle registrierten Providerverbindungen auf.",
"mgmtProvidersCreateNote": "Erstellen Sie eine neue Provider-Verbindung.",
"mgmtProvidersUpdateNote": "Aktualisieren Sie eine bestehende Provider-Verbindung.",
"mgmtProvidersDeleteNote": "Löschen Sie eine Provider-Verbindung.",
"mgmtProvidersTestNote": "Testen Sie die Konnektivität und Authentifizierung für einen Anbieter.",
"mgmtProvidersModelsNote": "Listen Sie verfügbare Modelle für einen bestimmten Anbieter auf.",
"mgmtSettingsGetNote": "Aktuelle Anwendungseinstellungen abrufen.",
"mgmtSettingsUpdateNote": "Anwendungseinstellungen aktualisieren.",
"mgmtPayloadRulesGetNote": "Holen Sie sich Regeln für die Nutzlasttransformation.",
"mgmtPayloadRulesUpdateNote": "Aktualisieren Sie die Regeln für die Nutzlasttransformation.",
"mcpToolsTitle": "MCP-Tools",
"mcpToolsDescription": "OmniRoute stellt {count}-Tools über das Model Context Protocol für die Agent-Orchestrierung bereit.",
"mcpToolsCount": "{count} Tools",
"mcpToolsToc": "MCP-Tools",
"mcpToolsRoutingTitle": "Routing und Entdeckung",
"mcpToolsRoutingDesc": "Gesundheitsprüfungen, Combo-Management, Quotenüberwachung, Kostenberichte und Zugriff auf Modellkataloge.",
"mcpToolsOperationsTitle": "Betrieb und Strategie",
"mcpToolsOperationsDesc": "Routensimulation, Budgetwächter, Strategiewechsel, Belastbarkeitsprofile und Anbietermetriken.",
"mcpToolsCacheTitle": "Cache-Verwaltung",
"mcpToolsCacheDesc": "Zeigen Sie Cache-Statistiken an und leeren Sie semantische oder Signatur-Caches.",
"mcpToolsCompressionTitle": "Kompressionsmotoren",
"mcpToolsCompressionDesc": "Konfigurieren Sie die RTK/Brotli-Komprimierung, tauschen Sie Engines aus und überprüfen Sie die Komprimierungsanalyse per Kombination.",
"mcpToolsOneProxyTitle": "1Proxy / Tunnel",
"mcpToolsOneProxyDesc": "Verwalten Sie ausgehende Proxys, rotieren Sie private IPs und überprüfen Sie den Proxy-Zustand.",
"mcpToolsMemoryTitle": "Erinnerung",
"mcpToolsMemoryDesc": "Suchen, hinzufügen und löschen Sie persistente Konversationsspeichereinträge.",
"mcpToolsSkillsTitle": "Fähigkeiten",
"mcpToolsSkillsDesc": "Listen Sie benutzerdefinierte Skill-Ausführungen auf, aktivieren Sie sie, führen Sie sie aus und überwachen Sie sie.",
"featureAutoComboTitle": "Auto-Combo",
"featureAutoComboText": "Erstellen Sie automatisch optimierte Kombinationen basierend auf Ihren verbundenen Anbietern, Nutzungsmustern und Modellfunktionen.",
"featureSearchTitle": "Websuche",
"featureSearchText": "Integrierte Websuche mit 5 Anbietern (Serper, Brave, Exa, Tavily, Perplexity) inklusive Analyse und Kostenverfolgung.",
"featureMemoryTitle": "Speichersystem",
"featureMemoryText": "Persistentes Gesprächsgedächtnis mit Extraktion, Injektion, Abruf und Zusammenfassung über Sitzungen hinweg.",
"featureSkillsTitle": "Kompetenzrahmen",
"featureSkillsText": "Erweiterbares Skill-System mit integrierten und benutzerdefinierten Skills, Sandbox-Ausführung, Anforderungsabfangen und Kontextinjektion.",
"featureAcpTitle": "Agentenkommunikation",
"featureAcpText": "Agent Communication Protocol (ACP)-Registrierung zur Verwaltung von Agent-zu-Agent-Workflows und zur Tool-Orchestrierung.",
"protocolAcpTitle": "ACP (Agentenkommunikation)",
"protocolAcpDesc": "Registrieren und verwalten Sie Agenten über die ACP-Registrierung für die Kommunikation zwischen Agenten und die gemeinsame Nutzung von Tools.",
"protocolAcpStep1": "Navigieren Sie zu Dashboard → Agents, um registrierte ACP-Agenten anzuzeigen.",
"protocolAcpStep2": "Registrieren Sie neue Agenten mit Funktionen und Endpunktkonfiguration.",
"protocolAcpStep3": "Verwenden Sie CLI-Tools, um Agenten-Kommunikationskanäle zu konfigurieren."
},
"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."
},
"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.",
"cliToolsRedirectTitle": "Cli Tools Redirect Title",
"cliToolsRedirectDesc": "Cli Tools Redirect Desc",
"spawnArgsPlaceholder": "Spawn Args Placeholder",
"binaryNamePlaceholder": "Binary Name Placeholder",
"versionCommandPlaceholder": "Version Command Placeholder",
"architectureTitle": "Architecture Title",
"flowLocalBinary": "Flow Local Binary",
"flowOmniRoute": "Flow Omni Route",
"agentNamePlaceholder": "Agent Name Placeholder",
"architectureDescription": "Architecture Description",
"flowExecute": "Flow Execute",
"flowSpawn": "Flow Spawn",
"cliToolsRedirectCta": "Cli Tools Redirect Cta",
"comparisonTitle": "CLI-Tools vs. Agent-Ziele – Was ist der Unterschied?",
"comparisonCliToolsLabel": "CLI-Tools-Seite",
"comparisonCliToolsTitle": "Ihre IDE sendet Anfragen über OmniRoute",
"comparisonCliToolsDesc": "Konfigurieren Sie Claude Code, Codex, Cursor und andere IDEs für die Verwendung von OmniRoute als API-Basis-URL. OmniRoute fungiert als Proxy und leitet Anfragen an Ihre konfigurierten Anbieter weiter.",
"comparisonAgentsLabel": "Diese Seite (Agent-Ziele)",
"comparisonAgentsTitle": "OmniRoute sendet Anfragen an lokale CLI-Tools",
"comparisonAgentsDesc": "OmniRoute kann lokale CLI-Binärdateien (Claude, Codex, Goose) als Ausführungs-Backends erzeugen. Das CLI-Tool verarbeitet die Anfrage mithilfe seiner eigenen Authentifizierung und gibt das Ergebnis zurück.",
"comparisonSummary": "Kurz gesagt: CLI-Tools = Sie konfigurieren Tools so, dass sie auf OmniRoute verweisen. Agent-Ziele = OmniRoute verwendet Tools als Endpunkte.",
"agentUseCaseHint": "Kann über das ACP-Protokoll als Ausführungsziel verwendet werden",
"flowDiagramClient": "Client-App",
"flowDiagramClientDesc": "SDK, API oder Upstream-Dienst",
"flowDiagramOmniRoute": "OmniRoute",
"flowDiagramOmniRouteDesc": "Empfängt die Anfrage und wählt das Ziel aus",
"flowDiagramSpawn": "Spawn-Prozess",
"flowDiagramSpawnDesc": "Startet die CLI-Binärdatei über stdio",
"flowDiagramCli": "CLI-Agent",
"flowDiagramCliDesc": "Prozesse mit eigener Authentifizierung/eigenem Modell",
"fingerprintSettingsHint": "Der CLI-Fingerabdruckabgleich (Anforderungen als bestimmte CLI-Tools tarnen) kann in konfiguriert werden",
"settingsRoutingLink": "Einstellungen/Routing",
"openSettings": "Einstellungen",
"copyRawUrlTitle": "Roh-URL in die Zwischenablage kopieren",
"copied": "Kopiert!",
"copyUrl": "URL kopieren",
"startHere": "Beginnen Sie hier",
"badgeNew": "Neu",
"viewOnGithub": "Auf GitHub ansehen",
"howToUse": "Wie zu verwenden",
"browseAllSkillsOnGithub": "Durchsuchen Sie alle Fähigkeiten auf GitHub",
"apiSkills": "API-Kenntnisse",
"cliSkills": "CLI-Kenntnisse",
"apiSkillsSubtitle": "{count} Skills — steuere OmniRoute über REST / HTTP",
"cliSkillsSubtitle": "{count} Skills — steuere OmniRoute über die omniroute-Terminal-Binary",
"howToUseStep1": "Klicke bei dem Skill, den dein Agent kennen soll, auf <bold>{copyUrl}</bold>.",
"howToUseStep2": "Sage in deinem KI-Agenten (Claude, Cursor, Cline…):",
"howToUseStep2Code": "Verwende den Skill unter [pasted-url]",
"howToUseStep3": "Der Agent ruft die SKILL.md ab und lernt die API oder CLI von OmniRoute — keine manuelle Dokumentation nötig."
},
"cloudAgents": {
"title": "Cloud-Agenten",
"description": "Verwalten Sie autonome Codierungsagenten (Jules, Devin, Codex Cloud)",
"loading": "Aufgaben werden geladen...",
"aboutTitle": "Über Cloud-Agenten",
"aboutDescription": "Cloud-Agenten sind Remote-KI-Codierungsassistenten, die Aufgaben autonom ausführen können. Sie funktionieren anders als lokale CLI-Agenten – Sie interagieren mit ihnen über die OmniRoute-API.",
"howItWorksTitle": "So funktioniert es:",
"howItWorksDesc": "Erstellen Sie eine Aufgabe → Agent analysiert und schlägt einen Plan vor → Sie genehmigen → Agent führt aus → Ergebnisse werden zurückgegeben",
"newTaskTitle": "Neue Aufgabe erstellen",
"newTaskDescription": "Starten Sie eine neue Aufgabe mit einem Cloud-Agenten",
"selectAgent": "Wählen Sie Agent aus",
"taskDescription": "Aufgabenbeschreibung",
"taskDescriptionPlaceholder": "Beschreiben Sie, was der Agent tun soll ...",
"startTask": "Aufgabe starten",
"tasks": "Aufgaben",
"taskDetail": "Aufgabendetails",
"noTasks": "Noch keine Aufgaben. Erstellen Sie eines, um loszulegen.",
"noTasksTitle": "Noch keine Aufgaben",
"noTasksDesc": "Erstelle deine erste Aufgabe, um loszulegen.",
"tasksTab": "Aufgaben",
"agentsTab": "Agenten",
"settingsTab": "Einstellungen",
"agentsEnabled": "Aktiviert",
"agentsDisabled": "Deaktiviert",
"filterAllProviders": "Alle Anbieter",
"filterAll": "Alle",
"autoRefreshing": "Automatische Aktualisierung",
"viewPR": "Pull Request ansehen",
"connected": "Verbunden",
"notConnected": "Nicht verbunden",
"configure": "Konfigurieren",
"settingsTitle": "Cloud-Agent-Einstellungen",
"settingsDesc": "Konfiguriere lokale Einstellungen für Cloud-Agenten.",
"settingEnableAgents": "Cloud-Agenten aktivieren",
"settingEnableAgentsDesc": "Erlaubt OmniRoute, autonome Coding-Agenten zu orchestrieren.",
"settingAutoPR": "PR automatisch erstellen",
"settingAutoPRDesc": "Erstellt automatisch einen Pull Request mit den Änderungen, sobald eine Aufgabe abgeschlossen ist.",
"settingRequireApproval": "Plangenehmigung erforderlich",
"settingRequireApprovalDesc": "Wartet immer auf manuelle Genehmigung, bevor ein Agent einen vorgeschlagenen Plan ausführt.",
"untitledTask": "Unbenannte Aufgabe",
"created": "Erstellt",
"conversation": "Gespräch",
"result": "Ergebnis",
"error": "Fehler",
"planReady": "Plan zur Genehmigung bereit",
"approvePlan": "Plan genehmigen",
"rejectPlan": "Ablehnen und stornieren",
"sendMessagePlaceholder": "Senden Sie eine Nachricht an den Agenten...",
"cancel": "Abbrechen",
"delete": "Löschen",
"selectTaskPrompt": "Wählen Sie eine Aufgabe aus, um Details anzuzeigen",
"statusPending": "Ausstehend",
"statusRunning": "Laufen",
"statusWaitingApproval": "Warten auf Genehmigung",
"statusCompleted": "Abgeschlossen",
"statusFailed": "Fehlgeschlagen",
"statusCancelled": "Abgesagt",
"repositoryName": "Repository-Name",
"repositoryUrl": "Repository-URL",
"branch": "Zweig"
},
"templateNames": {
"simple-chat": "Einfacher Chat",
"streaming": "Streaming",
"system-prompt": "System-Prompt",
"thinking": "Denken",
"tool-calling": "Werkzeugaufruf",
"multi-turn": "Mehrere Runden",
"vision": "Vision",
"schema-coercion": "Schemazwang"
},
"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",
"vision": "Multimodale Vorlage mit Bildeingabe",
"schema-coercion": "Strukturierte Ausgabe/JSON-Schema-Durchsetzung"
},
"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",
"memoryEntriesSub": "In-memory LRU",
"dbEntries": "DB Entries",
"dbEntriesSub": "Persisted (SQLite)",
"cacheHits": "Cache Hits",
"cacheHitsSub": "of {total} total",
"tokensSaved": "Tokens Saved",
"tokensSavedSub": "Estimated from hits",
"hitRate": "Hit Rate",
"performance": "Cache Performance",
"autoRefresh": "Auto-refreshes every {seconds}s",
"hits": "Hits",
"misses": "Misses",
"total": "Total",
"behavior": "Cache Behavior",
"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}.",
"idempotency": "Idempotency Layer",
"activeDedupKeys": "Active Dedup Keys",
"dedupWindow": "Dedup Window",
"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.",
"loadingCacheAria": "Cache wird geladen",
"promptCache": "Prompt Cache (Provider-Side)",
"semanticCache": "Semantic Cache",
"promptCacheSectionDesc": "Shows provider-side prompt caching activity from usage history so you can see where cache control is active and how much input reuse you are getting.",
"promptTrendDesc": "Hourly request volume, cache coverage, and cache read volume across the last 24 hours.",
"cachedRequests": "Cached Requests",
"cachedRequests24h": "Cached Requests (24h)",
"cacheHitRate": "Cache Hit Rate",
"cacheRate": "Cache Rate",
"cacheRateDesc": "of total requests",
"cachedTokens": "Cached Tokens",
"cacheCreationTokens": "Cache Creation Tokens",
"cacheMetrics": "Prompt Cache Metrics",
"withCacheControl": "With Cache Control",
"cachedTokensRead": "Cached Tokens (Read)",
"cacheCreationWrite": "Cache Creation (Write)",
"cacheReuseRatio": "Cache Reuse Ratio",
"cacheReuseRatioDesc": "Cached tokens / Total input tokens",
"estCostSaved": "Est. Cost Saved",
"lastUpdated": "Last updated",
"hoursTracked": "hours tracked",
"busiestHour": "Busiest Hour",
"peakCacheRate": "Peak Cache Rate",
"trendHour": "Hour",
"activityVolume": "Activity",
"requestsShort": "reqs",
"inputShort": "In",
"cachedShort": "Cached",
"writeShort": "Write",
"resetting": "Resetting...",
"resetMetrics": "Reset Metrics",
"byProvider": "Breakdown by Provider",
"providerCacheRateDesc": "Each provider exposes total input tokens, cache read tokens, and cache write tokens so you can verify the reuse ratio against raw totals.",
"provider": "Provider",
"requests": "Requests",
"inputTokens": "Input Tokens",
"cachedTokensCol": "Cached",
"cacheCreation": "Creation",
"trend24h": "Cache Trend (24h)",
"peakCached": "Peak cached",
"cached": "Cached",
"overview": "Overview",
"tableProvider": "Anbieter",
"tableModel": "Modell",
"performanceTitle": "Performance",
"semanticCacheSectionDesc": "OmniRoute's own deterministic response cache. When enabled, repeated non-streaming temperature=0 requests can be served locally without hitting the upstream provider.",
"semanticCacheDisabledDesc": "Semantic cache is disabled. OmniRoute will skip local response reuse until you turn it back on in Settings.",
"semanticEntriesDesc": "Persisted semantic cache records currently stored in SQLite. Provider-side prompt cache activity is not listed here.",
"searchEntries": "Search entries...",
"search": "Search",
"loading": "Loading...",
"entriesLoadError": "Failed to load semantic cache entries.",
"noEntries": "No cache entries found",
"noPromptCacheData": "No provider-side prompt cache activity has been recorded yet.",
"noTrendData": "No prompt cache activity has been recorded over the last 24 hours.",
"signature": "Signature",
"model": "Model",
"created": "Created",
"expires": "Expires",
"actions": "Actions",
"deduplicatedRequests": "Deduplicated Requests",
"savedCalls": "Saved API Calls",
"totalProcessed": "Total Requests Processed",
"disabled": "Disabled",
"totalRequests": "Total Requests",
"reasoningCache": "Argumentationswiederholung",
"reasoningCacheDesc": "Behält das Modelldenken für Multi-Turn-Werkzeugaufrufabläufe bei",
"reasoningEntries": "Aktive Einträge",
"reasoningReplayRate": "Wiedergaberate",
"reasoningReplays": "Gesamtwiederholungen",
"reasoningCharsCached": "Charaktere im Cache",
"reasoningMisses": "Cache-Fehler",
"reasoningByProvider": "Nach Anbieter",
"reasoningByModel": "Nach Modell",
"reasoningRecentEntries": "Aktuelle Einträge",
"reasoningToolCallId": "Tool-Aufruf-ID",
"reasoningChars": "Charaktere",
"reasoningAge": "Alter",
"reasoningView": "Ansicht",
"reasoningDetail": "Argumentationsinhalt",
"reasoningBehavior": "Verhalten",
"reasoningBehaviorCapture": "Erfasst reasoning_content aus Streaming-Antworten",
"reasoningBehaviorReplay": "Wird in der nächsten Runde erneut injiziert, wenn der Kunde es unterlässt",
"reasoningBehaviorFallback": "Memory-First mit SQLite-Fallback für die Wiederherstellung nach einem Absturz",
"reasoningBehaviorTtl": "TTL: 2 Stunden | Maximale Einträge: 2.000 (Speicher)",
"reasoningBehaviorModels": "Unterstützt: DeepSeek, Kimi, Qwen-Thinking, GLM",
"reasoningClearAll": "Leeren Sie den Reasoning-Cache",
"reasoningClearSuccess": "Einträge im Reasoning-Cache {count} gelöscht",
"reasoningClearError": "Der Begründungscache konnte nicht geleert werden",
"reasoningNoData": "Es wurden noch keine Begründungseinträge zwischengespeichert. Einträge erscheinen, wenn Denkmodelle Toolaufrufe verwenden.",
"cachePerformanceRetry": "Versuchen Sie es noch einmal",
"cachePerformanceHitRate": "Trefferquote",
"cachePerformanceAvgLatency": "Durchschnittliche Latenz (ms)",
"cachePerformanceP95Latency": "p95 Latenz (ms)",
"retry": "Versuchen Sie es noch einmal",
"reasoningAvgChars": "Durchschnittliche Zeichen",
"tableShare": "Anteil",
"justNow": "gerade eben",
"minutesAgo": "vor {minutes} Min.",
"hoursAgo": "vor {hours} Std.",
"daysAgo": "vor {days} T.",
"entries": "Entries"
},
"proxyConfigModal": {
"levelGlobal": "Global",
"levelProvider": "Anbieter",
"levelCombo": "Kombi",
"levelKey": "Schlüssel",
"levelDirect": "Direkt (kein Proxy)",
"titleGlobal": "Globale Proxy-Konfiguration",
"titleLevel": "{level} Proxy – {label}",
"loading": "Proxy-Konfiguration wird geladen...",
"inheritingFrom": "Erben von",
"source": "Quelle",
"savedProxy": "Gespeicherter Proxy",
"custom": "Benutzerdefiniert",
"selectSavedProxyPlaceholder": "Gespeicherten Proxy auswählen...",
"proxyType": "Proxy-Typ",
"host": "Gastgeber",
"hostPlaceholder": "1.2.3.4 oder Proxy.example.com",
"port": "Hafen",
"authOptional": "Authentifizierung (optional)",
"username": "Benutzername",
"usernamePlaceholder": "Benutzername",
"password": "Passwort",
"passwordPlaceholder": "Passwort",
"connected": "Verbunden",
"ip": "IP:",
"connectionFailed": "Verbindung fehlgeschlagen",
"testConnection": "Testverbindung",
"clear": "Klar",
"cancel": "Abbrechen",
"save": "Speichern",
"errorSelectSavedProxy": "Bitte wählen Sie zunächst einen gespeicherten Proxy aus.",
"errorSelectProxyFirst": "Bitte wählen Sie zunächst einen Proxy aus.",
"errorProxyNotFound": "Ausgewählter Proxy nicht gefunden.",
"errorClearSavedProxy": "Der gespeicherte Proxy konnte nicht gelöscht werden",
"errorSaveProxy": "Die Proxy-Konfiguration konnte nicht gespeichert werden",
"errorClearProxy": "Die Proxy-Konfiguration konnte nicht gelöscht werden",
"errorSocks5Hidden": "SOCKS5 ist konfiguriert, aber ausgeblendet, weil NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false."
},
"oauthModal": {
"title": "Verbinden Sie {providerName}",
"waiting": "Warten auf Autorisierung",
"completeAuthInPopup": "Vollständige Autorisierung im Popup.",
"popupClosedHint": "Wenn das Popup ohne Umleitung geschlossen wird (z. B. Qoder), wechselt dieser Dialog automatisch in den manuellen URL-Eingabemodus.",
"popupBlocked": "Popup blockiert? Geben Sie die URL manuell ein",
"deviceCodeVisitUrl": "Besuchen Sie die URL unten und geben Sie den Code ein:",
"deviceCodeVerificationUrl": "Verifizierungs-URL",
"deviceCodeYourCode": "Ihr Code",
"deviceCodeWaiting": "Warten auf Autorisierung...",
"googleOAuthWarning": "Fernzugriff + Google OAuth: Standardanmeldeinformationen akzeptieren nur Weiterleitungen zu <code>localhost</code>. Nach der Autorisierung versucht Ihr Browser, <code>localhost</code> zu öffnen. Kopieren Sie die vollständige URL und fügen Sie sie unten ein. Für eine vollständige Remote-Nutzung ohne diesen manuellen Schritt <a>konfigurieren Sie Ihre eigenen OAuth-Anmeldeinformationen</a>.",
"remoteAccessInfo": "Fernzugriff: Da Sie aus der Ferne auf OmniRoute zugreifen, wird nach der Autorisierung eine Fehlerseite angezeigt (localhost nicht gefunden). Das ist normal – kopieren Sie einfach die vollständige URL aus der Adressleiste Ihres Browsers und fügen Sie sie unten ein.",
"step1OpenUrl": "Schritt 1: Öffnen Sie diese URL in Ihrem Browser",
"copy": "Kopieren",
"step2PasteCallback": "Schritt 2: Fügen Sie hier die Rückruf-URL oder den Autorisierungscode ein",
"step2Hint": "Fügen Sie nach der Autorisierung die vollständige Rückruf-URL ein. Bei Claude Code und Cline können Sie den Authentifizierungscode auch direkt einfügen, z.B. <code>code#state</code>.",
"connect": "Verbinden",
"cancel": "Abbrechen",
"success": "Verbindung erfolgreich!",
"successMessage": "Ihr {providerName}-Konto wurde verbunden.",
"done": "Fertig",
"error": "Verbindung fehlgeschlagen",
"tryAgain": "Versuchen Sie es erneut"
},
"cursorAuthModal": {
"title": "Verbinden Sie die Cursor-IDE",
"autoDetecting": "Automatische Erkennung von Token...",
"readingFromCursor": "Lesen aus der Cursor-IDE oder dem Cursor-Agenten",
"tokensAutoDetected": "Tokens wurden erfolgreich automatisch von der Cursor-IDE erkannt!",
"cursorNotDetected": "Cursor-IDE nicht erkannt. Bitte fügen Sie Ihr Token manuell ein.",
"accessToken": "Zugriffstoken",
"required": "*",
"accessTokenPlaceholder": "Das Zugriffstoken wird automatisch ausgefüllt...",
"machineId": "Maschinen-ID",
"optional": "(optional)",
"machineIdPlaceholder": "Die Maschinen-ID wird automatisch ausgefüllt...",
"importing": "Importieren...",
"importToken": "Token importieren",
"cancel": "Abbrechen",
"errorAutoDetect": "Token können nicht automatisch erkannt werden",
"errorAutoDetectFailed": "Die automatische Erkennung von Token ist fehlgeschlagen",
"errorEnterToken": "Bitte geben Sie das Zugriffstoken ein",
"errorImportFailed": "Der Import ist fehlgeschlagen"
},
"pricingModal": {
"title": "Preiskonfiguration",
"loading": "Preisdaten werden geladen...",
"pricingRatesFormat": "Preisformat",
"ratesDescription": "Alle Preise sind in <strong>Dollar pro Million Token</strong> ($/1 Mio. Token) angegeben. Beispiel: Eine Eingaberate von 2,50 bedeutet 2,50 $ pro 1.000.000 Eingabe-Token.",
"model": "Modell",
"input": "Eingabe",
"output": "Ausgabe",
"cached": "Zwischengespeichert",
"reasoning": "Begründung",
"cacheCreation": "Cache-Erstellung",
"noPricingData": "Keine Preisdaten verfügbar",
"resetToDefaults": "Auf Standardeinstellungen zurücksetzen",
"cancel": "Abbrechen",
"saving": "Sparen...",
"saveChanges": "Änderungen speichern",
"resetConfirm": "Alle Preise auf die Standardwerte zurücksetzen? Dies kann nicht rückgängig gemacht werden.",
"errorSaveFailed": "Preise konnten nicht gespeichert werden",
"errorResetFailed": "Preise konnten nicht zurückgesetzt werden"
},
"proxyRegistry": {
"title": "Title",
"description": "Description",
"importLegacy": "Import Legacy",
"bulkAssign": "Bulk Assign",
"addProxy": "Add Proxy",
"loading": "Loading",
"noProxies": "No Proxies",
"tableName": "Table Name",
"tableEndpoint": "Table Endpoint",
"tableStatus": "Table Status",
"tableHealth": "Table Health",
"tableUsage": "Table Usage",
"tableActions": "Table Actions",
"test": "Test",
"edit": "Edit",
"delete": "Delete",
"modalCreateTitle": "Modal Create Title",
"modalEditTitle": "Modal Edit Title",
"labelName": "Label Name",
"labelType": "Typ",
"labelHost": "Gastgeber",
"labelPort": "Hafen",
"labelUsername": "Benutzername",
"labelPassword": "Passwort",
"labelRegion": "Region",
"labelStatus": "Status",
"labelNotes": "Notizen",
"usernamePlaceholderEdit": "Lassen Sie das Feld leer, um den aktuellen Benutzernamen beizubehalten",
"passwordPlaceholderEdit": "Lassen Sie das Feld leer, um das aktuelle Passwort beizubehalten",
"statusActive": "Aktiv",
"statusInactive": "Inaktiv",
"cancel": "Abbrechen",
"save": "Speichern",
"bulkModalTitle": "Massen-Proxy-Zuweisung",
"bulkLabelScope": "Umfang",
"bulkLabelProxy": "Stellvertreter",
"bulkClearAssignment": "(Klare Zuordnung)",
"bulkLabelScopeIds": "Bereichs-IDs (durch Komma oder Zeilenumbruch getrennt)",
"bulkScopeIdsPlaceholder": "Provider-Openai, Provider-Anthropic",
"bulkApply": "Bewerben",
"labelScope": "Umfang",
"labelProxy": "Proxy",
"scopeGlobal": "global",
"scopeProvider": "Anbieter",
"scopeAccount": "Konto",
"scopeCombo": "Kombination",
"bulkImportErrorMissingName": "NAME fehlt",
"bulkImportErrorMissingHost": "Fehlender HOST",
"bulkImportErrorInvalidPort": "Ungültiger PORT (muss 1-65535 sein)",
"bulkImportErrorInvalidType": "Ungültiger TYP (verwenden Sie http, https oder sock5)",
"bulkImportErrorInvalidStatus": "Ungültiger STATUS (aktiv oder inaktiv verwenden)",
"errorLoadFailed": "Error Load Failed",
"errorNameHostRequired": "Error Name Host Required",
"errorSaveFailed": "Error Save Failed",
"errorDeleteFailed": "Error Delete Failed",
"errorForceDeleteConfirm": "Error Force Delete Confirm",
"errorMigrateFailed": "Error Migrate Failed",
"errorBulkFailed": "Error Bulk Failed",
"success": "✓",
"failure": "✗",
"failed": "Failed",
"successRate": "{rate} % Erfolg",
"avgLatency": "{latency}ms Durchschnitt",
"assignmentsCount": "{count} Aufgaben",
"noData": "No Data",
"testSuccess": "✓ {ip}",
"testLatency": "{latency}ms",
"testFailure": "✗ {error}",
"bulkImport": "Massenimport",
"bulkImportTitle": "Massenimport von Proxys",
"bulkImportDescription": "Fügen Sie Proxy-Profile im durch Pipes getrennten Format ein. Ein Proxy pro Zeile. Vorhandene Proxys (gleicher Host + Port) werden aktualisiert.",
"bulkImportParse": "Analysieren",
"bulkImportImport": "Importieren Sie {count}-Proxys",
"bulkImportImporting": "Importieren...",
"bulkImportParsed": "{count} Proxys analysiert",
"bulkImportSkipped": "{count} Zeilen übersprungen",
"bulkImportParseErrors": "{count} Fehler",
"bulkImportNoValidEntries": "Keine gültigen Einträge gefunden. Überprüfen Sie das Format und versuchen Sie es erneut.",
"bulkImportSuccess": "Import abgeschlossen: {created} erstellt, {updated} aktualisiert, {failed} fehlgeschlagen",
"bulkImportErrorLine": "Zeile {line}: {reason}",
"bulkImportMaxExceeded": "Maximal 100 Proxys pro Import",
"bulkImportPreview": "Vorschau",
"clearAssignment": "(klare Zuordnung)",
"bulkProxyAssignment": "Massen-Proxy-Zuweisung",
"labelFamily": "IP-Familie",
"familyAuto": "Auto (Dual-Stack)",
"familyIpv4": "Nur IPv4",
"familyIpv6": "Nur IPv6",
"familyHint": "Adressfamilie für den ausgehenden Verkehr. Auto behält Dual-Stack bei; IPv4/IPv6 legt diesen Proxy auf diese Familie fest (verhindert ein v4-Leck bei einem reinen IPv6-Proxy).",
"repair": "Reparieren",
"relayAuthMissing": "Auth fehlt",
"relayRepairTooltip": "Relay-Auth vor Ort wiederherstellen. Falls das Token nicht wiederherstellbar ist (z. B. nach einer Rotation des STORAGE_ENCRYPTION_KEY), das Relay stattdessen neu bereitstellen.",
"relayRepairRedeployRequired": "Relay-Auth ist nicht wiederherstellbar — Relay neu bereitstellen, um ein neues Token zu schreiben.",
"relayRepairFailed": "Relay-Reparatur fehlgeschlagen",
"relayRepairError": "Reparatur fehlgeschlagen",
"relayProbeSummary": "Relay-Prüfungen: {alive}/{tested} aktiv",
"testAll": "Alle testen",
"errorTestFailed": "Proxys konnten nicht getestet werden",
"batchSelectedCount": "{count} ausgewählt",
"batchDeleteSelected": "{count} ausgewählte löschen",
"batchActivateSelected": "{count} ausgewählte aktivieren",
"testPassed": "✓ OK",
"close": "Schließen",
"managePool": "Pool verwalten",
"poolTitle": "Proxy-Pool & Rotation",
"poolDescription": "Verknüpfe mehrere Proxys mit einem Umfang und rotiere die ausgehenden IPs zwischen ihnen. Ein Umfang mit nur einem Proxy verhält sich genau wie eine einfache Zuweisung.",
"poolScopeIdLabel": "Umfang-ID",
"poolScopeIdPlaceholder": "Anbieter-ID / Verbindungs-ID / Kombi-ID",
"poolScopeIdRequired": "Eine Umfang-ID ist für Anbieter-, Konto- oder Kombinations-Umfang erforderlich.",
"poolLoad": "Pool laden",
"poolLoadFailed": "Proxy-Pool konnte nicht geladen werden",
"poolStrategyLabel": "Rotationsstrategie",
"poolStrategyHint": "Round-Robin durchläuft die Mitglieder der Reihe nach; Zufällig wählt gleichmäßig verteilt aus; Sticky hält ein Mitglied für ein Zeitfenster fest; Latenzoptimiert wählt anhand der Protokolle das schnellste aus.",
"poolStrategyFailed": "Rotationsstrategie konnte nicht aktualisiert werden",
"strategyRoundRobin": "Round-Robin",
"strategyRandom": "Zufällig",
"strategySticky": "Sticky",
"strategyLatency": "Latenzoptimiert",
"poolMembersLabel": "Pool-Mitglieder ({count})",
"poolNoMembers": "Noch keine Proxys in diesem Pool.",
"poolRemove": "Entfernen",
"poolRemoveFailed": "Proxy konnte nicht aus dem Pool entfernt werden",
"poolAddLabel": "Proxy hinzufügen",
"poolAddMember": "Hinzufügen",
"poolAddFailed": "Proxy konnte nicht zum Pool hinzugefügt werden",
"poolSelectProxy": "Proxy auswählen…",
"poolSaveFailed": "Pool-Zuweisung konnte nicht gespeichert werden"
},
"playground": {
"title": "Title",
"description": "Description",
"endpoint": "Endpoint",
"provider": "Provider",
"model": "Model",
"accountKey": "Account Key",
"autoAccounts": "Automatisch ({count} Konten)",
"noAccounts": "No Accounts",
"send": "Send",
"cancel": "Cancel",
"audioFile": "Audio File",
"attachImages": "Attach Images",
"multipartFormData": "Multipart Form Data",
"upToImages": "Up To Images",
"selectAudioFile": "Select Audio File",
"clearAll": "Clear All",
"request": "Request",
"response": "Response",
"transcription": "Transcription",
"copy": "Copy",
"resetToDefault": "Reset To Default",
"downloadAudio": "Download Audio",
"copyText": "Copy Text",
"transcriptionHint": "Transcription Hint",
"imagesGenerated": "{count} Bilder generiert",
"generatedImage": "Generiertes Bild {index}",
"save": "Save",
"endpointOptions": {
"chat": "Chat",
"responses": "Responses",
"images": "Images",
"embeddings": "Embeddings",
"speech": "Speech",
"transcription": "Transcription",
"video": "Video",
"music": "Music",
"rerank": "Rerank",
"search": "Search"
},
"conversationalChat": "Konversationschat",
"clearChat": "Klarer Chat",
"typeMessagePlaceholder": "Geben Sie eine Nachricht ein... (Umschalt+Eingabetaste für neue Zeile)",
"tabChat": "Chat",
"tabCompare": "Compare",
"tabApi": "API",
"tabBuild": "Build",
"configPane": "Config",
"systemPrompt": "System prompt",
"systemPromptPlaceholder": "You are a helpful assistant.",
"modelPlaceholder": "e.g. openai/gpt-4o",
"endpointLabel": "Endpoint",
"parametersLabel": "Parameters",
"collapseConfig": "Collapse config pane",
"expandConfig": "Expand config pane",
"temperature": "Temperature",
"maxTokens": "Max tokens",
"topP": "Top-p",
"presencePenalty": "Presence penalty",
"frequencyPenalty": "Frequency penalty",
"seedPlaceholder": "Random (leave empty)",
"presetsLabel": "Presets",
"loadPreset": "Load preset",
"savePreset": "Save preset",
"noPresets": "No presets",
"presetNamePlaceholder": "Preset name",
"savingPreset": "Saving…",
"nameRequired": "Name is required",
"failedToSavePreset": "Failed to save preset",
"improvePrompt": "Improve prompt",
"improvingPrompt": "Improving…",
"improvePromptTitle": "Improve your prompt with AI",
"setModelFirst": "Set a model first",
"improveQuotaWarning": "This will consume quota from the model configured in Config.",
"improveConfirm": "Improve",
"exportCode": "Export code",
"exportCodeTitle": "Export Code",
"noStateToExport": "No playground state available to export.",
"copyCode": "Copy",
"copiedCode": "Copied!",
"addModel": "+ Add model",
"runAll": "Run all",
"cancelAll": "Cancel all",
"maxColumnsReached": "Maximum {max} columns",
"modelPlaceholderCompare": "Model (Cmd+K)…",
"ttft": "TTFT",
"tps": "TPS",
"metricsDisclaimer": "client-side estimate",
"tokensLabel": "Tokens",
"costLabel": "Cost",
"costEstimated": "(estimated)",
"toolsLabel": "Tools",
"addTool": "Add tool",
"toolNamePlaceholder": "Function name",
"toolDescPlaceholder": "Description (optional)",
"toolParamsInvalid": "Parameters must be valid JSON",
"structuredOutputLabel": "Structured Output",
"enableJsonMode": "Enable JSON mode",
"disableJsonMode": "Disable JSON mode",
"invalidJson": "Invalid JSON",
"running": "Running…",
"runLabel": "Run",
"enterToolResult": "Enter tool result…",
"reasoningLabel": "Reasoning",
"thinking": "Denkprozess",
"effort": "Aufwand",
"effortDefault": "Standard",
"exportShort": "Exportieren",
"closeExportModal": "Exportfenster schließen",
"close": "Schließen",
"exportRealKeyWarning": "Sicherheitswarnung: Export blockiert — im Ausgabetext wurde ein echter API-Schlüssel erkannt. Bitte setze deinen API-Schlüssel zurück und versuche es erneut.",
"placeholderHintPrefix": "Ersetze",
"placeholderHintSuffix": "mit deinem tatsächlichen API-Schlüssel oder lege ihn als Umgebungsvariable fest.",
"copyLangCode": "{language}-Code kopieren",
"loadingPresets": "Laden…",
"loadPresetPlaceholder": "Voreinstellung laden…",
"build": {
"step1Label": "Was testen?",
"step2Label": "Konfigurieren",
"step3Label": "Ausführen",
"step1Title": "Was möchtest du testen?",
"step1Subtitle": "Wähle die Fähigkeit, die du in dieser Sitzung erkunden möchtest.",
"step2Title": "Konfigurieren",
"step2Subtitle": "Richte die Tools oder das JSON-Schema ein, die in der Anfrage verwendet werden.",
"step3Title": "Ausführen",
"modeToolsTitle": "Werkzeuge",
"modeToolsDesc": "Testet Function Calling — definiere Werkzeuge und sieh, wie das Modell sie aufruft.",
"modeJsonTitle": "JSON",
"modeJsonDesc": "Testet strukturierte Ausgabe — schränke die Antwort auf ein JSON-Schema ein.",
"modeBothTitle": "Werkzeuge + JSON",
"modeBothDesc": "Kombiniere Function Calling und strukturierte Ausgabe in einer einzigen Anfrage.",
"backButton": "Zurück",
"nextButton": "Als nächstes",
"runButton": "Ausführen",
"promptPlaceholder": "Gib deine Nachricht ein… (Enter zum Senden, Shift+Enter für neue Zeile)"
}
},
"miniPlayground": {
"endpoint": "Endpunkt",
"apiKey": "API-Schlüssel",
"model": "Modell",
"voice": "Stimme",
"speed": "Geschwindigkeit",
"input": "Eingabe",
"url": "URL",
"format": "Format",
"depth": "Tiefe",
"copyCurl": "cURL kopieren",
"copied": "Kopiert!",
"run": "Ausführen",
"running": "Wird ausgeführt...",
"response": "Antwort",
"tunnel": "Tunnel",
"send": "Senden",
"selectKey": "Schlüssel auswählen",
"testLabel": "Test",
"expandTest": "Test erweitern",
"collapseTest": "Test einklappen",
"revealKey": "Schlüssel anzeigen",
"hideKey": "Schlüssel verbergen",
"download": "Herunterladen",
"play": "Abspielen",
"query": "Abfrage",
"numResults": "Max. Ergebnisse",
"prompt": "Prompt",
"size": "Größe",
"duration": "Dauer",
"question": "Frage",
"audioFile": "Audiodatei",
"noKeysFound": "Keine API-Schlüssel gefunden. Füge einen im Bereich Schlüssel hinzu.",
"exampleLabel": "Beispiel",
"latency": "{ms} ms",
"statsLine": "{ms} ms · {tokensIn} ein / {tokensOut} aus Token"
},
"requestLogger": {
"recording": "Recording",
"paused": "Paused",
"pipelineLogsOn": "Pipeline logs on",
"pipelineLogsOff": "Pipeline logs off",
"updatingPipelineLogs": "Updating pipeline logs...",
"updatePipelineFailed": "Failed to update pipeline logging",
"capturePipeline": "Capture pipeline payloads for new requests",
"searchPlaceholder": "Search models, providers, accounts, API keys, combos...",
"allProviders": "All providers",
"allModels": "All models",
"allAccounts": "All accounts",
"allApiKeys": "All API keys",
"total": "Total",
"ok": "Success",
"err": "Error",
"combo": "Combo",
"keys": "Keys",
"shown": "Shown",
"sortNewest": "Newest",
"sortOldest": "Oldest",
"sortTokensDesc": "Tokens ↓",
"sortTokensAsc": "Tokens ↑",
"sortDurationDesc": "Duration ↓",
"sortDurationAsc": "Duration ↑",
"sortStatusDesc": "Status ↓",
"sortStatusAsc": "Status ↑",
"sortModelAsc": "Model A-Z",
"sortModelDesc": "Model Z-A",
"sortLogs": "Sort logs",
"refresh": "Refresh",
"columnsLabel": "Columns",
"cacheSem": "SEM",
"cacheUp": "UP",
"semantic": "Semantic",
"upstream": "Upstream",
"semanticCacheHit": "Semantic cache hit (served by OmniRoute)",
"upstreamResponse": "Upstream provider response",
"noApiKey": "No API key",
"requestedRoutedTitle": "Requested {requested}, routed as {routed}",
"statusFilters": {
"all": "All",
"error": "Errors",
"success": "Success",
"combo": "Combo"
},
"columns": {
"status": "Status",
"cacheSource": "Cache Source",
"model": "Model",
"requested": "Requested",
"provider": "Provider",
"protocol": "Request Protocol",
"account": "Account",
"apiKey": "API Key",
"combo": "Combo",
"tokens": "Tokens",
"compressed": "Komprimierung",
"tps": "TPS",
"duration": "Duration",
"time": "Time"
},
"loadingLogs": "Loading logs...",
"noLogs": "No logs yet. Make some API calls to see them here.",
"noMatchingLogs": "No logs matching current filters.",
"callLogsInfo": "Call logs are also saved as JSON files to {dataDir} and rotated based on {retentionDays} and {maxEntries}.",
"loadMore": "Mehr laden",
"loadingMore": "Mehr laden..."
},
"proxyLogger": {
"filterAll": "All",
"filterErrors": "Errors",
"filterSuccess": "Success",
"filterTimeout": "Timeout",
"colStatus": "Status",
"colProxy": "Proxy",
"colTls": "TLS",
"colType": "Type",
"colLevel": "Level",
"colProvider": "Provider",
"colTarget": "Target",
"colLatency": "Latency",
"colClientIp": "Client IP",
"colTime": "Time",
"recording": "Recording",
"paused": "Paused",
"searchPlaceholder": "Search host, provider, target, IP...",
"allTypes": "All Types",
"allLevels": "All Levels",
"allProviders": "All Providers",
"total": "total",
"ok": "OK",
"err": "ERR",
"timeoutShort": "TMO",
"direct": "direct",
"newest": "Newest",
"oldest": "Oldest",
"latencyDesc": "Latency ↓",
"latencyAsc": "Latency ↑",
"refresh": "Refresh",
"columns": "Columns",
"loadingProxyLogs": "Loading proxy logs...",
"noProxyLogs": "No proxy logs yet. Configure proxies and make API calls to see them here.",
"noMatchingLogs": "No logs match the current filters.",
"tlsFingerprint": "Chrome 124 TLS Fingerprint",
"colPublicIp": "Öffentliche IP"
},
"endpointOptions": {
"speech": "Speech",
"search": "Search",
"images": "Images",
"chat": "Chat",
"music": "Music",
"responses": "Responses",
"rerank": "Rerank",
"video": "Video",
"embeddings": "Embeddings",
"transcription": "Transcription"
},
"toolDescriptions": {
"cline": "Cline",
"openclaw": "Openclaw",
"droid": "Droid",
"codex": "Codex",
"claude": "Claude",
"kilo": "Kilo"
},
"runtime": {
"title": "Runtime",
"description": "Realtime observability — 3-layer resilience + sessions + quota alerts",
"pause": "Pause",
"resume": "Resume",
"refreshNow": "Refresh now",
"kpiSessions": "Sessions",
"kpiCircuits": "Circuits",
"kpiCooldowns": "Cooldowns",
"kpiLockouts": "Lockouts",
"hintStickyBound": "{count} sticky-bound",
"hintRecovering": "{count} recovering",
"hintAllHealthy": "all healthy",
"hintOpen": "open",
"hintConnsCooling": "connections cooling",
"hintModelsBlocked": "models blocked",
"resilienceTitle": "3-Layer Resilience",
"resilienceSubtitle": "Mirrors the documented resilience model",
"providersHealthy": "{percent}% providers healthy",
"layer": "Layer {n}",
"layer1Title": "Provider Circuit Breakers",
"layer1Desc": "Stop traffic to providers failing at the upstream level",
"layer2Title": "Connection Cooldowns",
"layer2Desc": "Skip one bad account/key; other connections keep serving",
"layer3Title": "Model Lockouts",
"layer3Desc": "Per-model rate-limit locks; same connection still serves other models",
"badgeAffectedOf": "{affected} of {total} affected",
"badgeCooling": "{count} cooling",
"badgeLocked": "{count} locked",
"emptyCircuits": "No circuit breakers active yet",
"emptyCooldowns": "No connection cooldowns active",
"emptyLockouts": "No model lockouts",
"moreCooldowns": "+{count} more cooldowns",
"moreLockouts": "+{count} more lockouts",
"feedTitle": "Live Feed",
"feedSubtitle": "Last {count} events",
"feedFilterAll": "All",
"feedFilterCircuits": "Circuits",
"feedFilterCooldowns": "Cooldowns",
"feedFilterLockouts": "Lockouts",
"feedFilterSessions": "Sessions",
"feedFilterQuotas": "Quotas",
"feedClear": "Clear",
"feedEmptyWaiting": "Waiting for events... (polled every 5s)",
"feedEmptyFiltered": "No events match this filter",
"sessionsTitle": "Active Sessions",
"sessionsSubtitle": "Sticky-bound request fingerprints (live)",
"sessionsActive": "{count} active",
"sessionsEmptyTitle": "No active sessions",
"sessionsEmptyHint": "Sessions appear as requests flow through the proxy",
"tblSession": "Session",
"tblAge": "Age",
"tblIdle": "Idle",
"tblReqs": "Reqs",
"tblBoundTo": "Bound to",
"topApiKeys": "Top API keys",
"quotaMonitorsTitle": "Quota Monitors",
"quotaMonitorsSubtitle": "Live quota state per account window",
"openQuota": "Open Quota",
"allQuotasHealthy": "All quotas healthy",
"statusExhausted": "EXHAUSTED",
"statusAlerting": "ALERTING",
"statusError": "ERROR",
"moreSuffix": "+{count} more"
},
"quotaShare": {
"title": "Quota Sharing",
"description": "Share provider quotas across API keys with % limits",
"newPool": "New pool",
"betaTitle": "Beta — UI preview.",
"betaDescription": "Configuration is saved in localStorage (not yet persisted on the server). Per-request cap enforcement is not yet wired into the proxy pipeline. This screen lets you design and visualize the quota split; real enforcement will land in a future iteration with DB persistence and upstream call interception.",
"kpiActivePools": "Active pools",
"kpiKeysAllocated": "Keys allocated",
"kpiAvgUnallocated": "Avg unallocated",
"kpiProvidersWithQuota": "Providers w/ quota",
"emptyTitle": "No pools configured",
"emptyDescription": "Create a pool to assign API keys to share a provider's quota window with % allocations.",
"loading": "Loading…",
"removePool": "Remove pool",
"removeConfirm": "Remove this pool?",
"pool": "Pool",
"used": "used",
"allocationsCount": "Allocations ({count})",
"allocatedFree": "{allocated}% allocated · {free}% free",
"noAllocations": "No keys allocated yet",
"capLabel": "cap {value}",
"notTrackedYet": "(not tracked yet)",
"policy": "Policy",
"policyHard": "hard",
"policySoft": "soft",
"policyBurst": "burst",
"policyHardHint": "Block when key exhausts allocation",
"policySoftHint": "Allow overflow, alert only",
"policyBurstHint": "Allow burst into free pool",
"editAllocations": "Edit allocations",
"newPoolTitle": "New quota pool",
"providerConnection": "Provider connection (account)",
"selectConnection": "Select a connection…",
"noEligibleConnections": "No connections with quota data. Refresh from /dashboard/quota first.",
"quotaWindow": "Quota window",
"selectWindow": "Select a window…",
"alreadyUsedSuffix": "(already used)",
"windowReset": "Reset",
"duplicatePoolError": "A pool for this connection + window already exists",
"cancel": "Cancel",
"createPool": "Create pool",
"editTitle": "Edit allocations",
"noKeysAdded": "No keys allocated. Add one below.",
"totalLabel": "Total: {percent}%",
"totalExceeded": "⚠ exceeds 100%",
"addKey": "+ Add key…",
"equalSplit": "Equal split",
"save": "Save allocations",
"betaPreviewLabel": "Beta – UI-Vorschau.",
"betaConfigSavedPrefix": "Die Konfiguration wird gespeichert in",
"betaConfigSavedSuffix": "(noch nicht auf dem Server persistiert). Die Durchsetzung der Obergrenze pro Anfrage ist noch nicht in der Proxy-Pipeline verankert. Auf diesem Bildschirm können Sie die Quotenaufteilung entwerfen und visualisieren. Eine echte Durchsetzung wird in einer zukünftigen Iteration mit DB-Persistenz und Upstream-Anrufabfangen erfolgen.",
"policyLabel": "Richtlinie:",
"resetIn": "Zurücksetzung in",
"quotaTotal": "Gesamt",
"kpiAvgUtilization": "Ø Auslastung",
"kpiBorrowingNow": "Aktuell geliehen",
"conceptTitle": "So funktioniert Quota Share",
"conceptIntro": "Quota Share teilt das Kontingent eines Anbieters mit einem arbeitserhaltenden Fair-Share-Verfahren auf mehrere API-Schlüssel auf: Jeder Schlüssel erhält einen proportionalen Anteil, kann aber vom freien Guthaben leihen, ohne die globale Obergrenze zu überschreiten.",
"conceptFairShare": "Fair-Share: Jeder Schlüssel erhält ein Kontingent proportional zu seiner konfigurierten Gewichtung",
"conceptBorrowing": "Leihen: Schlüssel können freies Guthaben anderer nutzen, ohne die Obergrenze zu überschreiten",
"conceptGlobalCap": "Harte globale Obergrenze: Das absolute Limit des Anbieters wird nie überschritten",
"conceptWindows": "Zeitfenster: 5 Std., stündlich, täglich, wöchentlich, monatlich — jedes wird unabhängig erfasst",
"conceptKeyHowTitle": "Einen Schlüssel für das Kontingent aktivieren",
"conceptKeyHowDesc": "Erstelle den Schlüssel wie gewohnt unter API-Schlüssel — er erscheint automatisch im Schlüssel-Schritt des Assistenten. Aktiviere dort Exklusiv, um ihn auf das Kontingent zu beschränken. Es ist kein separater Aktivierungsschritt nötig.",
"conceptExclusiveTitle": "Was „Exklusiv“ bewirkt",
"conceptExclusiveDesc": "Ein exklusiver Schlüssel sieht und verwendet nur die quotaShared-*-Modelle des Pools — jedes andere Modell wird aus seinem /v1/models ausgeblendet und blockiert.",
"burnRateTitle": "Verbrauchsrate",
"burnRateExhaustsIn": "Aufgebraucht in",
"dimensionResetIn": "Zurückgesetzt in",
"realConsumedColumn": "Verbraucht",
"deficitColumn": "Defizit",
"borrowingIndicator": "leiht",
"migratedFromLocalStorageNotice": "Pools erfolgreich aus localStorage migriert.",
"policyCapAbsoluteLabel": "Absolute Obergrenze",
"policyCapAbsolutePlaceholder": "Numerisches Limit (optional)",
"multiDimensionLabel": "Mehrdimensional",
"stackedBarTitle": "Anteile nach API-Schlüssel",
"usedSuffix": "{percent}% genutzt",
"wizardTitle": "Neuer Kontingent-Pool",
"editPoolTitle": "Pool bearbeiten",
"saveChanges": "Änderungen speichern",
"wizardStep1Label": "Konto",
"wizardStep2Label": "Limit",
"wizardStep3Label": "Schlüssel",
"wizardStep1Title": "Anbieterverbindung wählen",
"wizardStep1Subtitle": "Wähle das Anbieterkonto, für das dieser Pool das Kontingent teilt, und lege einen Namen sowie eine Standardrichtlinie fest.",
"wizardStep2Title": "Kontingent-Dimensionen konfigurieren",
"wizardStep2Subtitle": "Definiere die Dimensionen des Kontingentplans (Einheit, Zeitfenster, Limit) für die gewählte Verbindung. Unverändert lassen, um die aktuellen Einstellungen beizubehalten.",
"wizardStep3Title": "API-Schlüssel zuweisen",
"wizardStep3Subtitle": "Weise diesem Pool API-Schlüssel mit Gewichtungs-% und optionalen Obergrenzen zu.",
"wizardPoolNameLabel": "Pool-Name",
"wizardPoolNamePlaceholder": "Mein Kontingent-Pool",
"wizardNext": "Als nächstes",
"wizardBack": "Zurück",
"wizardCreatePool": "Pool erstellen",
"wizardDimensionsEditedNotice": "Dimensionen bearbeitet — werden beim Erstellen des Pools als manuelle Überschreibung gespeichert.",
"wizardExclusiveLabel": "Exklusives Kontingent",
"wizardExclusiveHint": "Wenn aktiviert, dürfen diese API-Schlüssel nur die virtuellen Modelle dieses Pools verwenden (die allowedQuotas-Abstimmung wird beim Speichern angewendet).",
"wizardPreviewLabel": "Vorschau der virtuellen Modellnamen",
"wizardConnectionsLabel": "Anbieterverbindungen",
"wizardPrimaryBadge": "primär",
"wizardAdditionalConnectionsNote": "Zusätzliche Verbindungen verwenden ihre Standard-Kataloglimits (später bearbeitbar).",
"wizardSingleProviderNote": "Ein Pool verwendet einen einzelnen Anbieter",
"wizardPreviewMoreModels": "+{count} weitere",
"accountQuotaTitle": "Kontokontingent",
"accountQuotaNone": "—",
"logTitle": "Nutzungsprotokoll",
"logEmpty": "Noch keine Nutzung",
"groupLabel": "Gruppe",
"newGroup": "Neue Gruppe",
"renameGroup": "Gruppe umbenennen",
"groupSelectHint": "Pools nach Gruppe filtern",
"groupAllocationNote": "Zuweisungen gelten über die gemeinsame Kontingent-Schicht für alle Pools dieser Gruppe.",
"groupNamePrompt": "Gruppennamen eingeben",
"wizardGroupLabel": "Gruppe",
"allGroups": "Alle Gruppen",
"endpointsTitle": "Verfügbare Endpunkte",
"endpointsHint": "Rufe diese virtuellen Modelle mit jedem zugewiesenen Schlüssel auf — Routing und Kontingent werden pro Gruppe verwaltet.",
"previewForKey": "Vorschau für Schlüssel",
"previewKeyNone": "(alle Endpunkte)",
"endpointsBaseUrl": "Basis-URL",
"endpointsCollapse": "Einklappen",
"endpointsExpand": "Ausklappen",
"endpointsAnthropicNote": "Anthropic-nativ",
"endpointsResponsesNote": "OpenAI Responses — codex/github",
"endpointsWsNote": "WebSocket — nur codex",
"betaText": "Quota Share ist funktionsfähig, aber es sind noch Fehler zu erwarten. Einen gefunden? Bitte melde ihn.",
"betaReportLink": "Ein Problem melden",
"deleteGroup": "Gruppe löschen",
"deleteGroupConfirm": "Diese Gruppe löschen? Ihre Pools müssen zuerst neu zugewiesen oder entfernt werden.",
"deleteGroupHasPools": "Diese Gruppe enthält noch Pools — weise sie zuerst neu zu oder lösche sie.",
"ungroupedTitle": "Ohne Gruppe",
"ungroupedHint": "Diese Pools sind keiner bekannten Gruppe zugewiesen. Bearbeite einen Pool, um ihn in eine echte Gruppe zu verschieben."
},
"plugins": {
"title": "Plugins",
"description": "Install and manage plugins for extending OmniRoute functionality",
"loading": "Loading plugins...",
"scanning": "Scanning...",
"scanForPlugins": "Scan for Plugins",
"noPlugins": "No plugins installed",
"noPluginsDescription": "Place plugin directories in ~/.omniroute/plugins/ and click Scan.",
"activate": "Activate",
"deactivate": "Deactivate",
"uninstall": "Uninstall",
"uninstallConfirm": "Uninstall plugin \"{name}\"?",
"pluginScanComplete": "Plugin scan complete",
"pluginScanFailed": "Plugin scan failed",
"activated": "{name} activated",
"deactivated": "{name} deactivated",
"activateFailed": "Failed to activate {name}",
"deactivateFailed": "Failed to deactivate {name}",
"uninstalled": "{name} uninstalled",
"uninstallFailed": "Failed to uninstall {name}",
"configure": "Configure: {name}",
"configurePlugin": "Configure",
"noConfigSettings": "This plugin has no configurable settings.",
"saving": "Saving...",
"saveConfiguration": "Save Configuration",
"configurationSaved": "Configuration saved",
"saveConfigurationFailed": "Failed to save configuration",
"pluginNotFound": "Plugin not found",
"version": "Version",
"author": "Author",
"description_label": "Description",
"status": "Status",
"enabled": "Enabled",
"disabled": "Disabled",
"hooks": "Hooks",
"installedTab": "Installiert",
"marketplaceTab": "Marktplatz",
"marketplaceUrlLabel": "Eigene Marktplatz-URL",
"marketplaceUrlPlaceholder": "Leer lassen für die offizielle OmniRoute-Registry",
"saveMarketplaceUrl": "Speichern & neu laden",
"marketplaceUrlSaved": "Marktplatz-URL aktualisiert",
"marketplaceEmpty": "Keine Plugins im Marktplatz gefunden.",
"marketplaceInstallComingSoon": "Installationen über den Marktplatz folgen in Kürze.",
"verified": "Verifiziert",
"install": "Installieren",
"installedFromMarketplace": "Plugin {name} installiert!"
},
"disabled": "Deaktiviert",
"featureFlagOmnirouteEmergencyFallbackDescription": "Leitet Anfragen mit aufgebrauchtem Budget an den kostenlosen Notfall-Fallback-Anbieter/-Modell weiter.",
"featureFlagArenaEloSyncEnabledDescription": "Aktiviert die regelmäßige ELO-Synchronisierung der Arena-AI-Bestenliste für Modell-Intelligenz-Rankings.",
"quotaPlans": {
"title": "Pläne & Kontingente",
"description": "Konfiguriere Kontingentpläne pro Anbieter — Dimensionen (%, Anfragen, Token, $) und Zeitfenster",
"providerLabel": "Anbieter / Verbindung",
"detectedPlanLabel": "Erkannter Plan",
"manualPlanLabel": "Manuelle Überschreibung",
"unconfiguredLabel": "Nicht konfiguriert — manuell erforderlich",
"dimensionLabel": "Dimensionen",
"addDimension": "Dimension hinzufügen",
"removeDimension": "Entfernen",
"limitLabel": "Limit",
"unitOptions": {
"percent": "%",
"requests": "Anfragen",
"tokens": "Token",
"usd": "USD ($)"
},
"windowOptions": {
"5h": "5 Stunden",
"hourly": "Stündlich",
"daily": "Täglich",
"weekly": "Wöchentlich",
"monthly": "Monatlich"
},
"useCatalogButton": "Katalog verwenden",
"saveOverrideButton": "Überschreibung speichern",
"revertToCatalogButton": "Auf Katalog zurücksetzen",
"unknownProviderNotice": "Wähle links einen Anbieter aus, um dessen Kontingentplan zu konfigurieren.",
"catalogTitle": "Bekannter Katalog",
"catalogDescription": "Automatisch erkannte Pläne für die folgenden Anbieter:"
},
"activity": {
"title": "Aktivität",
"description": "Feed der letzten Ereignisse",
"emptyTitle": "Noch keine Aktivität",
"emptyDescription": "Wenn du Anbieter hinzufügst, Kombinationen erstellst oder Schlüssel rotierst, erscheinen hier Ereignisse.",
"todayHeader": "Heute",
"yesterdayHeader": "Gestern",
"filterAll": "Alle",
"filterProviders": "Anbieter",
"filterCombos": "Kombinationen",
"filterApiKeys": "API-Schlüssel",
"filterSettings": "Einstellungen",
"filterQuota": "Kontingent",
"filterAuth": "Auth",
"filterSystem": "System",
"relative": {
"justNow": "gerade eben",
"minutesAgo": "vor {n} Min.",
"hoursAgo": "vor {n} Std.",
"yesterday": "gestern",
"daysAgo": "vor {n} Tagen"
},
"eventVerb": {
"providerAdded": "{actor} hat Anbieter {target} hinzugefügt",
"providerRemoved": "{actor} hat Anbieter {target} entfernt",
"providerTested": "{actor} hat Anbieter {target} getestet",
"comboCreated": "{actor} hat Kombination {target} erstellt",
"comboUpdated": "{actor} hat Kombination {target} aktualisiert",
"comboDeleted": "{actor} hat Kombination {target} entfernt",
"apiKeyCreated": "{actor} hat API-Schlüssel {target} erstellt",
"apiKeyRevoked": "{actor} hat API-Schlüssel {target} widerrufen",
"apiKeyRotated": "{actor} hat API-Schlüssel {target} rotiert",
"budgetThreshold": "Budgetschwelle für {target} erreicht",
"settingUpdated": "{actor} hat Einstellung {target} aktualisiert",
"authLogin": "{actor} hat sich angemeldet",
"authLogout": "{actor} hat sich abgemeldet",
"cloudAgentSession": "Cloud-Agent-Sitzung für {target} gestartet",
"mcpToolRegistered": "MCP-Werkzeug {target} registriert",
"webhookCreated": "{actor} hat Webhook {target} erstellt",
"webhookDeleted": "{actor} hat Webhook {target} entfernt",
"quotaPoolCreated": "{actor} hat Kontingent-Pool {target} erstellt",
"quotaPoolUpdated": "{actor} hat Kontingent-Pool {target} aktualisiert",
"quotaPoolDeleted": "{actor} hat Kontingent-Pool {target} entfernt",
"quotaPlanUpdated": "{actor} hat Kontingentplan {target} aktualisiert",
"quotaStoreDriverChanged": "QuotaStore-Treiber geändert",
"updateApplied": "Update {target} angewendet",
"deployCompleted": "Deployment abgeschlossen",
"skillInstalled": "{actor} hat Fertigkeit {target} installiert",
"skillRemoved": "{actor} hat Fertigkeit {target} entfernt",
"providerCredentialsCreated": "{actor} hat Anmeldedaten für {target} erstellt",
"providerCredentialsApplied": "Anmeldedaten für {target} angewendet",
"providerCredentialsUpdated": "{actor} hat Anmeldedaten für {target} aktualisiert",
"providerCredentialsRevoked": "{actor} hat Anmeldedaten für {target} widerrufen",
"providerCredentialsBatchRevoked": "{actor} hat Anmeldedaten im Batch widerrufen",
"providerCredentialsBatchUpdated": "{actor} hat Anmeldedaten im Batch aktualisiert",
"providerCredentialsBulkCreated": "{actor} hat Anmeldedaten im Bulk erstellt",
"providerCredentialsBulkImported": "{actor} hat Anmeldedaten im Bulk importiert",
"providerCredentialsImported": "{actor} hat Anmeldedaten importiert",
"providerSsrfBlocked": "SSRF-Versuch für {target} blockiert",
"authLoginSuccess": "{actor} hat sich angemeldet",
"authLoginError": "Anmeldefehler für {actor}",
"authLoginFailed": "Anmeldung für {actor} fehlgeschlagen",
"authLoginLocked": "{actor} wurde nach zu vielen Versuchen gesperrt",
"authLoginMisconfigured": "Auth-Konfiguration ungültig",
"authLoginSetupRequired": "Auth-Einrichtung erforderlich",
"authLogoutSuccess": "{actor} hat sich abgemeldet",
"syncTokenCreated": "{actor} hat Sync-Token erstellt",
"syncTokenRevoked": "{actor} hat Sync-Token widerrufen",
"settingsUpdate": "{actor} hat Einstellungen aktualisiert",
"settingsUpdateFailed": "Aktualisierung der Einstellungen fehlgeschlagen",
"serviceRevealApiKey": "{actor} hat API-Schlüssel für {target} angezeigt",
"genericEvent": "{actor} {target}"
}
},
"agentBridge": {
"title": "AgentBridge",
"subtitle": "Nutze IDE-Agenten mit OmniRoute-Modellen — keine Konfiguration nötig",
"riskBannerTitle": "Nutzung auf eigene Gefahr",
"riskBannerBody": "AgentBridge fängt HTTPS-Datenverkehr von IDE-Agenten ab. Durch die Aktivierung übernimmst du die Verantwortung für die Einhaltung der Nutzungsbedingungen jedes Agenten. Verwende es niemals auf Geräten oder in Netzwerken, in denen TLS-Inspektion untersagt ist.",
"riskBannerDismiss": "Verwerfen",
"serverCardTitle": "AgentBridge-Server",
"statusRunning": "Läuft",
"statusStopped": "Gestoppt",
"statusActive": "Aktiv",
"statusDnsOff": "DNS aus",
"statusSetupRequired": "Einrichtung erforderlich",
"statusInvestigating": "Wird untersucht",
"serverPort": "Port",
"serverConns": "Verbindungen",
"serverIntercepted": "Abgefangen",
"serverLastStarted": "Zuletzt gestartet",
"startServer": "Starten",
"stopServer": "Stoppen",
"restartServer": "Neu starten",
"trustCert": "Zertifikat vertrauen",
"downloadCert": "Zertifikat herunterladen",
"certManualTitle": "Das Zertifikat konnte nicht automatisch installiert werden (z. B. innerhalb eines Containers). Die Bridge kann trotzdem laufen — vertraue der CA manuell:",
"regenerateCert": "Zertifikat neu generieren",
"starting": "Starten…",
"stopping": "Stoppen…",
"restarting": "Neu starten…",
"trusting": "Vertrauen…",
"regenerating": "Regenerieren…",
"upstreamCaLabel": "Upstream-CA-Zertifikat (Unternehmen)",
"upstreamCaPlaceholder": "/etc/ssl/certs/corp-ca.pem",
"upstreamCaTest": "TLS testen",
"upstreamCaTestOk": "TLS-Test bestanden",
"upstreamCaTestError": "TLS-Test fehlgeschlagen — Pfad und CA-Datei prüfen",
"bypassSectionTitle": "Bypass-Liste",
"bypassSectionDesc": "Hosts, die diesen Mustern entsprechen, werden direkt getunnelt (keine TLS-Entschlüsselung). Zu den Standardwerten gehören banks.gov und Unternehmens-SSO.",
"bypassDefaultsLabel": "Standard-Bypass-Muster (schreibgeschützt)",
"bypassUserLabel": "Eigene Bypass-Muster (eines pro Zeile, Glob oder Regex)",
"saveBypassList": "Bypass-Liste speichern",
"agentListTitle": "IDE-Agenten",
"filterAll": "Alle",
"filterActive": "Aktiv",
"filterSetupRequired": "Einrichtung erforderlich",
"filterInvestigating": "Wird untersucht",
"searchAgents": "Agenten suchen…",
"noAgentsMatch": "Keine Agenten entsprechen dem aktuellen Filter",
"agentHosts": "Abgefangene Hosts",
"certTrusted": "Zertifikat vertrauenswürdig",
"certNotTrusted": "Zertifikat nicht vertrauenswürdig",
"investigatingNotice": "Dieser Agent wird derzeit untersucht. Hosts und API-Oberfläche werden noch bestätigt. Die Einrichtung steht zur Verfügung, sobald die Upstream-API dokumentiert ist.",
"modelMappingsLabel": "Modellzuordnungen",
"sourceModel": "Quellmodell (agentenspezifisch)",
"targetModel": "Zielmodell (OmniRoute)",
"noMappings": "Keine Modellzuordnungen konfiguriert. Führe den Einrichtungsassistenten aus, um Modelle automatisch zu erkennen.",
"selectModel": "Auswählen…",
"saveMappings": "Zuordnungen speichern",
"setupWizard": "Einrichtungsassistent",
"startDns": "DNS starten",
"stopDns": "DNS stoppen",
"toggling": "Umschalten…",
"viewTraffic": "Traffic anzeigen",
"emptyNoProvidersTitle": "Noch keine Anbieter konfiguriert",
"emptyNoProvidersBody": "Um AgentBridge zu nutzen, verbinde zuerst mindestens einen Anbieter. Er ist das Ziel, an das IDE-Anfragen weitergeleitet werden.",
"emptyGoToProviders": "Zu Anbietern",
"wizardTitle": "Einrichtungsassistent",
"wizardSubtitle": "3-Schritte-Einrichtung",
"wizardStep1Label": "Überprüfen",
"wizardStep2Label": "DNS",
"wizardStep3Label": "Zuordnungen",
"wizardStep1Desc": "Bestätige, dass der Server läuft und das Zertifikat installiert ist.",
"wizardStep2Desc": "Die folgenden Einträge werden zu /etc/hosts hinzugefügt, um den Traffic über AgentBridge umzuleiten:",
"wizardStep3Desc": "Du kannst jetzt Modellzuordnungen in der Agentenkarte konfigurieren. Starte die IDE neu, um die Änderungen zu übernehmen.",
"wizardStep3Success": "Agent ist konfiguriert!",
"wizardServerCheck": "AgentBridge-Server",
"wizardRunning": "läuft",
"wizardNotRunning": "läuft nicht",
"wizardCertCheck": "Zertifikat",
"wizardTrusted": "vertrauenswürdig",
"wizardNotTrusted": "noch nicht vertrauenswürdig — nutze die Schaltfläche „Zertifikat vertrauen“",
"wizardTutorialTitle": "Einrichtungsanleitung:",
"wizardEnableDns": "/etc/hosts-Einträge hinzufügen",
"wizardDnsAlreadyEnabled": "DNS für diesen Agenten bereits aktiviert",
"enablingDns": "Aktivieren…",
"modelSelectorTitle": "Zielmodell auswählen",
"modelSelectorSearch": "Modelle suchen…",
"noModelsFound": "Keine Modelle gefunden",
"quickLinks": "Schnellzugriff",
"quickLinkProviders": "Anbieter konfigurieren",
"quickLinkInspector": "Traffic im Traffic Inspector anzeigen",
"maintenanceTitle": "Wartung & Diagnose",
"maintenanceSubtitle": "Teste die Capture-Pipeline selbst, entferne verbliebenen Systemzustand und übertrage deine Einrichtung zwischen Rechnern.",
"orphanedStateWarning": "Eine frühere Sitzung hat Systemzustand hinterlassen (DNS-Spoofing, CA oder System-Proxy). Führe „Reparieren“ aus, um dies zu bereinigen.",
"diagnose": "Diagnose",
"diagnosing": "Diagnostizieren…",
"diagnoseHealthy": "Capture-Pipeline ist fehlerfrei.",
"diagnoseUnhealthy": "Capture-Pipeline hat Probleme:",
"repair": "Reparieren",
"repairing": "Reparieren…",
"repairDone": "Repariert: {items}",
"repairNothing": "Nichts zu reparieren — der Systemzustand ist sauber.",
"removeCa": "CA entfernen",
"removeCaConfirm": "CA entfernen?",
"removeCaDone": "MITM-Root-CA aus dem Vertrauensspeicher des Betriebssystems entfernt.",
"removing": "Entfernen…",
"confirm": "Bestätigen",
"exportConfig": "Konfiguration exportieren",
"exporting": "Exportieren…",
"importConfig": "Konfiguration importieren",
"importing": "Importieren…",
"importInvalidJson": "Die ausgewählte Datei ist kein gültiges JSON.",
"importDone": "{bypass} Bypass · {hosts} Hosts · {agents} Agenten importiert",
"save": "Speichern",
"saving": "Speichern…",
"cancel": "Abbrechen",
"back": "Zurück",
"next": "Als nächstes",
"done": "Fertig",
"loading": "Laden…",
"riskNoticeTitle": "Risikobestätigung",
"riskNoticeBody": "AgentBridge fängt den HTTPS-Traffic dieses Agenten ab, indem seine API-Hosts per DNS umgeleitet werden. Aktiviere dies nur, wenn du die Verantwortung für die Einhaltung der Nutzungsbedingungen des Agenten und aller geltenden Netzwerkrichtlinien übernimmst.",
"pageMoved": {
"goNow": "Jetzt öffnen",
"message": "Der MITM-Proxy befindet sich jetzt unter AgentBridge.",
"title": "Diese Seite wurde verschoben"
}
},
"trafficInspector": {
"title": "Traffic Inspector",
"subtitle": "Überwache LLM-Aufrufe und debugge den HTTPS-Traffic beliebiger Anwendungen",
"captureModesTitle": "Erfassungsmodi",
"agentBridgeMode": "AgentBridge",
"agentBridgeModeDesc": "Traffic von allen verbundenen IDE-Agenten erfassen",
"customHostsMode": "Eigene Hosts",
"customHostsModeDesc": "Bestimmte Hosts zum Abfangen hinzufügen",
"httpProxyMode": "HTTP-Proxy",
"httpProxyModeDesc": "HTTP_PROXY-Umgebungsvariable verwenden",
"systemWideMode": "Systemweit",
"systemWideModeDesc": "Gesamten Systemverkehr abfangen (fortgeschritten)",
"tproxyMode": "TPROXY-Entschlüsselung",
"tproxyModeUnavailable": "TPROXY-Entschlüsselung erfordert Linux + Root + das native Addon",
"filterBarTitle": "Filter",
"profileLlmOnly": "Nur LLM",
"profileCustom": "Benutzerdefiniert",
"profileAll": "Alle",
"filterHost": "Host filtern…",
"filterAgent": "Agent",
"filterStatus": "Status",
"pauseBtn": "Pause",
"resumeBtn": "Fortsetzen",
"clearBtn": "Leeren",
"exportHar": ".har exportieren",
"recordSession": "REC",
"stopSession": "Stopp",
"liveBadge": "live",
"offlineBadge": "offline",
"noRequests": "Noch keine Anfragen erfasst.",
"noRequestsDesc": "Stelle sicher, dass AgentBridge läuft, oder aktiviere einen anderen Erfassungsmodus.",
"selectRequest": "Wähle eine Anfrage aus, um sie zu untersuchen.",
"tabConversation": "Unterhaltung",
"tabHeaders": "Header",
"tabRequest": "Anfrage",
"tabResponse": "Antwort",
"tabTiming": "Timing",
"tabLlm": "LLM",
"tabStats": "Statistiken",
"requestHeaders": "Anfrage-Header",
"responseHeaders": "Antwort-Header",
"rawEvents": "Rohereignisse",
"mergedView": "Zusammengeführte Ansicht",
"noBody": "Kein Body.",
"streaming": "Streaming…",
"manageHosts": "Hosts verwalten",
"copySnippet": "Proxy-Snippet kopieren",
"addHost": "Hinzufügen",
"hostPlaceholder": "api.openai.com",
"noHostsYet": "Noch keine eigenen Hosts hinzugefügt.",
"noSessionsYet": "Noch keine Sitzungen",
"allTraffic": "Gesamter Traffic (keine Sitzung)",
"sessionsDropdown": "Sitzungen",
"annotationPlaceholder": "Notiz hinzufügen…",
"contextFingerprint": "Kontext-Fingerabdruck",
"llmProvider": "Erkannter Anbieter",
"llmApiKind": "API-Art",
"llmModel": "Modell",
"llmMessages": "Nachrichten",
"llmStream": "Stream",
"llmMappedTo": "Zugeordnet zu",
"llmCostEstimate": "Kostenschätzung",
"systemProxyExitWarning": "Systemweiter Proxy noch aktiv — Seite trotzdem verlassen?",
"customHostsTitle": "Eigene Hosts",
"loading": "Laden…",
"copied": "Kopiert!",
"copy": "Kopieren",
"httpProxyTitle": "HTTP-Proxy-Snippet — Port {port}",
"notRecording": "Keine Aufzeichnung",
"anyStatus": "Beliebiger Status",
"liveOnly": "Live",
"viewingRecordedSession": "Aufgezeichnete Sitzung wird angezeigt",
"backToLive": "Zurück zu Live",
"untitledSession": "Unbenannte Sitzung",
"contextHistory": "Kontextverlauf",
"modelResponse": "Modellantwort",
"conversationNoMessages": "In dieser Anfrage wurden keine Nachrichten gefunden.",
"conversationNotAvailable": "Unterhaltungsdaten nicht verfügbar. Dies ist möglicherweise keine LLM-Anfrage, oder der Body konnte nicht verarbeitet werden.",
"loadingCharts": "Diagramme werden geladen…",
"statsErrors": "Fehler",
"statsLatency": "Latenz (letzte 50 Anfragen)",
"statsNoData": "Noch keine Anfragen. Starte eine Sitzungsaufzeichnung, um Daten für die Statistik zu erfassen.",
"statsStatusDistribution": "Statusverteilung",
"statsSuccessful": "Erfolgreich",
"statsTotalRequests": "Anfragen gesamt",
"timingProxyOverhead": "Proxy-Overhead",
"timingUpstreamResponse": "Upstream-Antwort",
"timingNoData": "Keine Timing-Daten verfügbar.",
"timingTotalLatency": "Gesamtlatenz",
"timingTimestamp": "Zeitstempel",
"timingMethod": "Methode",
"timingStatus": "Status",
"timingRequestSize": "Anfragegröße",
"timingResponseSize": "Antwortgröße",
"pausedNewBadge": "{count} neu",
"clearContextFilter": "leeren"
},
"cliCommon": {
"concept": {
"code": {
"title": "CLI Code",
"phrase": "Code-Tools, die du auf OmniRoute richtest",
"flow": "Du → CLI Code → OmniRoute → Anbieter",
"seeOther": "Siehe →"
},
"agent": {
"title": "CLI-Agenten",
"phrase": "Vielseitige autonome CLI-Agenten, die du auf OmniRoute richtest",
"flow": "Du → CLI-Agent → OmniRoute → Anbieter",
"seeOther": "Siehe →"
},
"acp": {
"title": "ACP-Agenten",
"phrase": "CLIs, die OmniRoute als Ausführungs-Backend startet (umgekehrter Ablauf)",
"flow": "Client → OmniRoute → CLI starten (stdio/ACP) → Antwort",
"seeOther": "Siehe →"
}
},
"comparison": {
"title": "Die 3 CLI-Typen in OmniRoute verstehen",
"thisPage": "Diese Seite",
"open": "Öffnen →",
"code": {
"title": "Code-Tool",
"desc": "Zeigt auf Omni",
"flow": "du → CLI → Omni → Anbieter",
"examples": "z. B.: claude, codex"
},
"agent": {
"title": "Vielseitiger autonomer Agent",
"desc": "Zeigt auf Omni",
"flow": "du → Agent → Omni",
"examples": "z. B.: hermes, goose"
},
"acp": {
"title": "CLI, die von Omni als Backend genutzt wird",
"desc": "Umgekehrte Ausführung",
"flow": "Omni → CLI starten → Antw.",
"examples": "z. B.: claude, codex (ACP)"
}
},
"card": {
"detected": "Erkannt",
"notDetected": "Nicht erkannt",
"configured": "Konfiguriert",
"notConfigured": "Nicht konfiguriert",
"configure": "Konfigurieren →",
"howToInstall": "Installationsanleitung →",
"manualConfig": "Manuelle Konfiguration",
"installGuide": "Installationsanleitung",
"endpointLabel": "Endpunkt",
"baseUrlFull": "Vollständige Basis-URL",
"baseUrlPartial": "Teilweise Basis-URL",
"refreshDetection": "Erkennung aktualisieren",
"alsoAcp": "auch ACP",
"connectProviderHint": "Verbinde einen Anbieter unter Anbieter"
},
"detail": {
"back": "Zurück",
"apply": "Speichern",
"reset": "Leeren",
"manualConfig": "Manuelle Konfiguration",
"vendor": "Hersteller",
"category": "Typ",
"detectionStatus": "Erkennung",
"configStatus": "Konfiguration",
"baseUrlLabel": "Basis-URL",
"apiKeyLabel": "API-Schlüssel",
"modelMappingLabel": "Modellzuordnung",
"noActiveProviders": "Keine aktiven Anbieter.",
"noActiveProvidersDesc": "Gehe zu Anbieter, um mindestens einen Anbieter zu verbinden, bevor du die CLI konfigurierst.",
"openProviders": "Anbieter öffnen →"
}
},
"cliCode": {
"pageTitle": "CLI Codes",
"pageSubtitle": "Code-Tools, die auf OmniRoute zeigen",
"searchPlaceholder": "CLI suchen…",
"filterDetectionLabel": "Erkennung",
"filterBaseUrlLabel": "Basis-URL",
"detectionAll": "Alle",
"detectionInstalled": "Installiert",
"detectionNotFound": "Nicht gefunden",
"baseUrlAll": "Alle",
"baseUrlFull": "Vollständig",
"baseUrlPartial": "Teilweise"
},
"cliAgents": {
"pageTitle": "CLI-Agenten",
"pageSubtitle": "Vielseitige autonome CLI-Agenten",
"refreshDetection": "Erkennung aktualisieren",
"searchPlaceholder": "Agent suchen…",
"detectionFilterLabel": "Erkennung",
"detectionAll": "Alle",
"detectionInstalled": "Installiert",
"detectionNotInstalled": "Nicht installiert",
"visibleCount": "{count} sichtbar",
"emptyState": "Keine CLI-Agenten mit den aktuellen Filtern gefunden."
},
"acpAgents": {
"pageTitle": "ACP-Agenten",
"pageSubtitle": "CLIs, die OmniRoute als Ausführungs-Backend startet",
"scanning": "Agenten werden erkannt…",
"refresh": "Aktualisieren",
"setupGuideTitle": "Einrichtungsanleitung",
"setupGuideDetectCliTitle": "CLI erkennen",
"setupGuideDetectCliDesc": "Agenten werden erkannt, indem der Befehl --version im PATH ausgeführt wird.",
"setupGuideCustomAgentTitle": "Eigenen Agenten hinzufügen",
"setupGuideCustomAgentDesc": "Fülle das Formular unten aus, um einen eigenen CLI-Agenten zu registrieren.",
"setupGuideCommandMissingTitle": "Befehl nicht gefunden",
"setupGuideCommandMissingDesc": "Stelle sicher, dass sich die Binärdatei im PATH befindet.",
"fingerprintSettingsHint": "Routing und Fingerabdrücke konfigurieren unter",
"settingsRoutingLink": "Einstellungen → Routing",
"installed": "Installiert",
"notFound": "Nicht gefunden",
"builtIn": "Integriert",
"custom": "Benutzerdefiniert",
"agentUseCaseHint": "Verfügbar zum Starten über ACP.",
"remove": "Entfernen",
"addCustomAgent": "Eigenen Agenten hinzufügen",
"addCustomAgentDesc": "Registriere einen eigenen CLI-Agenten, der über ACP gestartet wird.",
"addAgent": "Agent hinzufügen",
"agentName": "Name",
"agentNamePlaceholder": "z. B.: Mein Agent",
"binaryName": "Binärdatei",
"binaryNamePlaceholder": "z. B.: myagent",
"versionCommand": "Versionsbefehl",
"versionCommandPlaceholder": "z. B.: myagent --version",
"spawnArgs": "Startargumente",
"spawnArgsPlaceholder": "z. B.: --quiet, --json",
"cliCodeRedirectCta": "CLI Code öffnen"
},
"agentSkills": {
"pageTitle": "Agent Skills",
"pageSubtitle": "Bringe deinem Agenten bei, OmniRoute zu bedienen — 22 API-Bereiche + 20 CLI-Familien",
"conceptCard": {
"agent": {
"title": "Agent Skills — Outbound",
"description": "Agent Skills sind maschinenlesbare SKILL.md-Dokumente, die externe KI-Agenten (Claude Code, Cursor, Copilot …) von GitHub abrufen, um zu lernen, wie sie OmniRoute über REST oder CLI bedienen. Sie werden vom Agenten gelesen, nicht von OmniRoute ausgeführt.",
"crossLinkLabel": "Den Unterschied verstehen →"
},
"omni": {
"title": "Omni Skills — Inbound",
"description": "Omni Skills sind Sandbox-Werkzeuge, die OmniRoute bei jeder Anfrage in den Kontext des Modells einfügt. Sie werden von OmniRoute ausgeführt, nicht vom Agenten gelesen.",
"crossLinkLabel": "Den Unterschied verstehen →"
},
"comparison": {
"colAgent": "Agent Skills",
"colOmni": "Omni Skills",
"whatIs": {
"label": "Was es ist",
"agent": "Maschinenlesbare SKILL.md, die einem externen Agenten beibringt, OmniRoute zu bedienen",
"omni": "Ausführbare Werkzeuge, die OmniRoute als Tools in LLM-Anfragen einfügt"
},
"direction": {
"label": "Richtung",
"agent": "Outbound — externer Agent lernt, OmniRoute zu steuern",
"omni": "Inbound — OmniRoute gibt Modellen, die dadurch laufen, Werkzeuge"
},
"executor": {
"label": "Ausführende Instanz",
"agent": "Externer Agent (liest Markdown → handelt über API/CLI)",
"omni": "OmniRoute selbst (fängt tool_calls ab, Docker-Sandbox)"
},
"storage": {
"label": "Speicherung",
"agent": "Dynamischer Katalog (/api/agent-skills) → SKILL.md auf GitHub",
"omni": "SQLite (SkillsMP / skills.sh / lokal)"
},
"tagline": {
"label": "Slogan",
"agent": "Bringe deinem Agenten bei, OmniRoute zu nutzen",
"omni": "Gib OmniRoute-Modellen ausführbare Werkzeuge"
}
}
},
"filters": {
"category": "Kategorie",
"area": "Bereich",
"searchPlaceholder": "Skills suchen…"
},
"categoryApi": "API",
"categoryCli": "CLI",
"categoryConfig": "Konfiguration",
"filterAll": "Alle",
"coverageLabel": "Abdeckung",
"mcpUrl": "MCP-URL",
"a2aLink": "A2A",
"copyUrl": "URL kopieren",
"viewOnGithub": "Auf GitHub ansehen",
"previewLoading": "Skill-Dokumentation wird geladen…",
"previewError": "Skill-Dokumentation konnte nicht geladen werden.",
"previewEmpty": "Wähle einen Skill aus, um seine Dokumentation anzuzeigen.",
"generateButton": "Fehlende Skills generieren",
"coverageBar": {
"complete": "Vollständig",
"partial": "Teilweise"
},
"noSkillsFound": "Keine Skills gefunden, die deinen Filtern entsprechen.",
"regenerateConfirm": "Dadurch werden alle fehlenden SKILL.md-Dateien neu generiert. Fortfahren?",
"regenerateRunning": "Skills werden regeneriert…",
"regenerateSuccess": "Skills wurden erfolgreich regeneriert.",
"regenerateError": "Skills konnten nicht regeneriert werden."
},
"freeProviderRankingsPage": {
"title": "Rangliste kostenloser Anbieter",
"subtitle": "Die besten kostenlosen Anbieter, bewertet nach Modell-ELO-Werten aus den Arena-AI-Ranglisten",
"loading": "Rangliste wird geladen...",
"errorLoading": "Rangliste konnte nicht geladen werden",
"emptyState": "Noch keine Ranglisten verfügbar. Arena-ELO-Daten werden beim Start synchronisiert (täglich) — schau später noch einmal vorbei oder starte eine manuelle Synchronisierung. Deaktiviere Arena ELO Sync in den Feature Flags oder setze ARENA_ELO_SYNC_ENABLED=false, um dies abzuschalten.",
"bestModel": "Bestes",
"allCategories": "Alle Kategorien",
"categoryDefault": "Standard",
"categoryCoding": "Programmierung",
"categoryReview": "Review",
"categoryDocumentation": "Dokumentation",
"categoryDebugging": "Debugging",
"colRank": "Rang",
"colProvider": "Anbieter",
"colTopModel": "Top-Modell",
"colScore": "Score",
"colAvgScore": "Ø Score",
"colModels": "Modelle",
"colType": "Typ",
"filterConfiguredOnly": "Nur konfigurierte",
"filterAvailableOnly": "Nur verfügbare",
"filterAvailableOnlyHelp": "Blendet Anbieter aus, deren Verbindungen alle ratenbegrenzt oder ohne Kontingent sind.",
"configuredOnly": "Nur konfiguriert",
"configuredOnlyHint": "Nur Anbieter mit aktiven Verbindungen anzeigen",
"noConfiguredProviders": "Keine konfigurierten Anbieter gefunden. Füge zuerst eine Anbieterverbindung hinzu.",
"colConfigured": "Status"
},
"discovery": {
"title": "Anbieter-Discovery",
"subtitle": "Anbieter nach kostenlosen/unbegrenzten Zugriffsmethoden durchsuchen und Ergebnisse überprüfen. Opt-in, nur lokal.",
"scanLabel": "Zu scannender Anbieter",
"scanPlaceholder": "z. B. huggingchat",
"scan": "Scannen",
"scanning": "Scannen…",
"scanQueued": "Scan für {provider} abgeschlossen.",
"scanFailed": "Scan fehlgeschlagen.",
"loadFailed": "Discovery-Ergebnisse konnten nicht geladen werden.",
"localOnlyNote": "Dieses Werkzeug ist rein lokal (Loopback). Scans laufen auf diesem Rechner und sind niemals remote erreichbar.",
"verify": "Verifizieren",
"verifyFailed": "Ergebnis konnte nicht verifiziert werden.",
"delete": "Löschen",
"deleteFailed": "Ergebnis konnte nicht gelöscht werden.",
"deleteTitle": "Discovery-Ergebnis löschen",
"deleteConfirm": "Discovery-Ergebnis für {provider} löschen? Dies kann nicht rückgängig gemacht werden.",
"emptyTitle": "Noch keine Discovery-Ergebnisse",
"emptyDescription": "Starte oben einen Scan, um nach kostenlosen Zugriffsmethoden für einen Anbieter zu suchen.",
"risk": "Risiko",
"method": "Methode",
"auth": "Auth",
"feasibility": "Machbarkeit",
"models": "Modelle"
},
"chaosConfig": {
"pageTitle": "Chaos-Modus",
"pageSubtitle": "Mehrere KI-Modelle parallel oder kollaborativ an derselben Aufgabe ausführen",
"enableChaos": "Chaos-Modus aktivieren",
"enableChaosDesc": "API-Schlüsseln mit aktiviertem Chaos-Modus die Nutzung dieser Funktion erlauben",
"mode": "Standardmodus",
"modeParallel": "Parallel",
"modeCollaborative": "Kollaborativ",
"modeParallelDesc": "Alle Modelle laufen gleichzeitig — schnellste Ergebnisse",
"modeCollaborativeDesc": "Modelle verketten ihre Ausgaben — jedes sieht das vorherige Ergebnis",
"timeout": "Timeout (ms)",
"timeoutDesc": "Maximale Zeit pro Modellaufruf (5000-600000 ms)",
"systemPrompt": "System-Prompt (optional)",
"systemPromptDesc": "Eigene Anweisungen für alle Modellinstanzen im Chaos-Modus",
"providerOverrides": "Anbieter-Overrides",
"providerOverridesDesc": "Bestimmte Modelle pro Anbieter für den Chaos-Modus auswählen",
"providerId": "Anbieter",
"modelId": "Modell",
"addProvider": "Anbieter hinzufügen",
"removeProvider": "Entfernen",
"saveConfig": "Konfiguration speichern",
"configSaved": "Chaos-Konfiguration erfolgreich gespeichert",
"configError": "Chaos-Konfiguration konnte nicht gespeichert werden",
"configReset": "Auf Standard zurücksetzen",
"keyPermission": "Chaos-Modus-Zugriff",
"keyPermissionDesc": "Diesem API-Schlüssel die Nutzung des Chaos-Modus erlauben (parallele Ausführung mehrerer Modelle)",
"testButton": "Chaos-Modus testen",
"testTask": "Schreibe ein kurzes Gedicht über künstliche Intelligenz",
"loadingProviderModels": "Anbieter werden geladen..."
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment