{
  "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": "__MISSING__:ON",
    "off": "__MISSING__:OFF",
    "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": "__MISSING__:Recommended",
    "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"
  },
  "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": "__MISSING__:Embedded Services",
    "embeddedServicesSubtitle": "__MISSING__:Manage local proxy services",
    "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",
    "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": "__MISSING__: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",
    "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": "__MISSING__:Route inventory and bypass policy",
    "docsSubtitle": "Documentation",
    "issuesSubtitle": "Report a bug",
    "changelogSubtitle": "Release notes"
  },
  "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": "__MISSING__:Cancel",
      "step1Title": "__MISSING__:Select Integration",
      "step2Title": "__MISSING__:Configure Target",
      "step3Title": "__MISSING__:Events & Test",
      "back": "__MISSING__:Back",
      "next": "__MISSING__:Next",
      "finish": "__MISSING__:Finish",
      "step1Desc": "__MISSING__:Select the target integration system for this webhook."
    },
    "howItWorks": {
      "step1": "__MISSING__:Choose an integration provider (e.g. Slack, Discord, custom webhook) and set up the connection details.",
      "step2": "__MISSING__:Configure system events to subscribe to (e.g. completion errors, model fallbacks, or usage limits).",
      "step3": "__MISSING__:Verify the configuration by sending a test payload to make sure the endpoint receives it.",
      "step4": "__MISSING__:Secure your endpoint by validating the X-Webhook-Signature HMAC-SHA256 header using the webhook's secret.",
      "title": "__MISSING__:How Webhooks Work",
      "customOnly": "__MISSING__:Only applicable for custom endpoint integrations.",
      "hmacRecipeTitle": "__MISSING__:HMAC Verification Recipe",
      "hmacRecipe": "__MISSING__:To verify webhook payloads in Node.js, compute the HMAC-SHA256 of the raw request body using your secret key. Compare it to the X-Webhook-Signature header using timingSafeEqual.",
      "timeoutNote": "__MISSING__:Webhook deliveries have a timeout of 10 seconds.",
      "retryNote": "__MISSING__:Failed deliveries are retried up to 5 times with exponential backoff.",
      "docsLink": "__MISSING__:Read the full Webhooks developer guide",
      "hmacRecipePython": "__MISSING__:Python HMAC verification: hmac.new(secret, body, hashlib.sha256).hexdigest()",
      "hmacRecipeBash": "__MISSING__:Bash HMAC verification: echo -n \"$body\" | openssl dgst -sha256 -hmac \"$secret\""
    },
    "deliveries": {
      "title": "__MISSING__:Delivery Logs",
      "loadFailed": "__MISSING__:Failed to load webhook delivery logs.",
      "empty": "__MISSING__:No deliveries recorded yet. Trigger an event or send a test payload.",
      "status": "__MISSING__:Status",
      "event": "__MISSING__:Event",
      "latency": "__MISSING__:Latency",
      "at": "__MISSING__:Sent At"
    },
    "kinds": {
      "comingSoon": "__MISSING__:Coming Soon",
      "slack": "__MISSING__:Slack",
      "slackDesc": "__MISSING__:Post system events directly into a Slack channel",
      "telegram": "__MISSING__:Telegram",
      "telegramDesc": "__MISSING__:Send event messages using a Telegram bot",
      "discord": "__MISSING__:Discord",
      "discordDesc": "__MISSING__:Deliver real-time updates directly to a Discord server",
      "custom": "__MISSING__:Custom Webhook",
      "customDesc": "__MISSING__:Deliver system event payloads to any HTTPS endpoint",
      "email": "__MISSING__:Email Notification",
      "emailDesc": "__MISSING__:Receive summary updates via email",
      "pagerduty": "__MISSING__:PagerDuty",
      "pagerdutyDesc": "__MISSING__:Trigger alerts on PagerDuty for critical system issues",
      "teams": "__MISSING__:Microsoft Teams",
      "teamsDesc": "__MISSING__:Forward system notifications to Microsoft Teams channels"
    },
    "testPayloadSent": "__MISSING__:Test Payload Sent",
    "testResponse": "__MISSING__:Test Response",
    "validateUrl": {
      "checking": "__MISSING__:Checking URL...",
      "ok": "__MISSING__:URL is valid",
      "blockedPrivate": "__MISSING__:URL is a blocked private address",
      "invalidUrl": "__MISSING__:Invalid URL format"
    },
    "custom": {
      "endpointUrl": "__MISSING__:Endpoint URL",
      "endpointUrlPlaceholder": "__MISSING__:https://api.yourdomain.com/webhook",
      "secretKey": "__MISSING__:Secret Key",
      "secretKeyPlaceholder": "__MISSING__:Enter secret key or leave blank to auto-generate",
      "secretKeyHint": "__MISSING__:Used to sign the payload header for authentication."
    },
    "discord": {
      "webhookUrl": "__MISSING__:Discord Webhook URL",
      "webhookUrlPlaceholder": "__MISSING__:https://discord.com/api/webhooks/...",
      "webhookUrlHint": "__MISSING__:The webhook URL copied from your Discord channel integration settings.",
      "tutorial": "__MISSING__:How to create a Discord webhook:"
    },
    "slack": {
      "webhookUrl": "__MISSING__:Slack Webhook URL",
      "webhookUrlPlaceholder": "__MISSING__:https://hooks.slack.com/services/...",
      "webhookUrlHint": "__MISSING__:The webhook URL copied from your Slack Incoming Webhooks integration.",
      "tutorial": "__MISSING__:How to create a Slack webhook:"
    },
    "telegram": {
      "botToken": "__MISSING__:Telegram Bot Token",
      "botTokenPlaceholder": "__MISSING__:123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ",
      "botTokenHint": "__MISSING__:The HTTP API token received from @BotFather when creating your bot.",
      "chatId": "__MISSING__:Telegram Chat ID / Channel",
      "chatIdPlaceholder": "__MISSING__:-100123456789 or @channelname",
      "chatIdHint": "__MISSING__:The unique numerical identifier or public username of the chat/channel.",
      "tutorial": "__MISSING__:How to configure 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..."
  },
  "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"
  },
  "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": "__MISSING__:Usage Analytics",
    "diversityScoreTitle": "Anbietervielfalt",
    "diversityScoreDesc": "__MISSING__:Provider concentration snapshot for the recent traffic window.",
    "diversityShannonEntropy": "__MISSING__:Shannon entropy",
    "diversityWindow": "__MISSING__:Window: {count} reqs · Last {mins} mins",
    "diversityHealthy": "__MISSING__:Healthy Distribution",
    "diversityRiskHigh": "__MISSING__:High Vendor Lock-in Risk",
    "diversityRiskModerate": "__MISSING__:Moderate Distribution",
    "diversityScoreLabel": "__MISSING__:score",
    "diversityHigherExplanation": "__MISSING__:Higher values mean traffic is spread across multiple providers.",
    "diversityNoData": "__MISSING__:No recent usage data available.",
    "chartRequests": "__MISSING__:Requests",
    "chartInput": "__MISSING__:Input",
    "chartOutput": "__MISSING__:Output",
    "chartTotal": "__MISSING__:Total",
    "chartCost": "__MISSING__:Cost",
    "chartShare": "__MISSING__:Share",
    "chartServiceTier": "__MISSING__:Service Tier",
    "chartServiceTierSplit": "__MISSING__:Fast / Standard cost split",
    "chartCostPct": "__MISSING__:{pct}% of cost",
    "chartUsageDetail": "__MISSING__:Usage Detail",
    "chartCacheRead": "__MISSING__:Cache read",
    "chartCostByProvider": "__MISSING__:Cost by Provider",
    "chartNoCostData": "__MISSING__:No cost data",
    "chartModelUsageOverTime": "__MISSING__:Model Usage Over Time",
    "chartNoData": "__MISSING__:No data",
    "chartWeekly": "__MISSING__:Weekly",
    "chartModelBreakdown": "__MISSING__:Model Breakdown",
    "chartModel": "__MISSING__:Model",
    "chartProvider": "__MISSING__:Provider",
    "chartProviderBreakdown": "__MISSING__:Provider Breakdown",
    "filterAllKeys": "__MISSING__:All Keys",
    "filterSearchKeys": "__MISSING__:Search keys…",
    "filterNoKeysMatch": "__MISSING__:No keys match",
    "filterOneKey": "__MISSING__:1 key",
    "filterMultipleKeys": "__MISSING__:{count} keys",
    "rangeToday": "__MISSING__:Today",
    "rangeYesterday": "__MISSING__:Yesterday",
    "rangeLast3Days": "__MISSING__:Last 3 days",
    "rangeThisWeek": "__MISSING__:This week",
    "rangeLast14Days": "__MISSING__:Last 14 days",
    "rangeThisMonth": "__MISSING__:This month",
    "rangeQuickSelect": "__MISSING__:Quick Select",
    "rangeStart": "__MISSING__:Start",
    "rangeEnd": "__MISSING__:End",
    "rangeCancel": "__MISSING__:Cancel",
    "rangeApply": "__MISSING__:Apply",
    "rangeErrorInvalid": "__MISSING__:Start must be before end",
    "period1D": "__MISSING__:1D",
    "period7D": "__MISSING__:7D",
    "period30D": "__MISSING__:30D",
    "period90D": "__MISSING__:90D",
    "periodYTD": "__MISSING__:YTD",
    "periodAll": "__MISSING__:All",
    "totalTokens": "__MISSING__:Total Tokens",
    "inputTokens": "__MISSING__:Input Tokens",
    "outputTokens": "__MISSING__:Output Tokens",
    "estCost": "__MISSING__:Est. Cost",
    "infraTitle": "__MISSING__:Infrastructure",
    "infraAccounts": "__MISSING__:Accounts",
    "infraProviders": "__MISSING__:Providers",
    "infraApiKeys": "__MISSING__:API Keys",
    "infraModels": "__MISSING__:Models",
    "perfTitle": "__MISSING__:Performance",
    "perfAvgTokens": "__MISSING__:Avg Tokens/Req",
    "perfCostReq": "__MISSING__:Cost/Req",
    "perfIoRatio": "__MISSING__:I/O Ratio",
    "perfFastReq": "__MISSING__:Fast Requests",
    "highlightsTitle": "__MISSING__:Highlights",
    "highlightsTopModel": "__MISSING__:Top Model",
    "highlightsTopProvider": "__MISSING__:Top Provider",
    "highlightsBusiestDay": "__MISSING__:Busiest Day",
    "highlightsDiversity": "__MISSING__:Diversity",
    "highlightsFallbackRate": "__MISSING__:Fallback Rate",
    "customRange": "__MISSING__:Custom",
    "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": "__MISSING__:Allowed Endpoints",
    "allEndpointsAllowed": "__MISSING__:This key can access all API endpoints.",
    "endpointsRestricted": "__MISSING__: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": "__MISSING__:Search by name or token...",
    "activeOnly": "__MISSING__:Active only",
    "filterStatus": "__MISSING__:STATUS",
    "filterType": "__MISSING__:TYPE",
    "filterAll": "__MISSING__:All",
    "filterStatusActive": "__MISSING__:Active",
    "filterStatusDisabled": "__MISSING__:Disabled",
    "filterStatusBanned": "__MISSING__:Banned",
    "filterStatusExpired": "__MISSING__:Expired",
    "filterTypeStandard": "__MISSING__:Standard",
    "filterTypeManage": "__MISSING__:Manage",
    "filterTypeRestricted": "__MISSING__:Restricted",
    "shownOf": "__MISSING__:{shown} of {total} shown",
    "emptyFilterTitle": "__MISSING__:No keys match your filters",
    "emptyFilterClear": "__MISSING__:Clear filters",
    "endpointRestrictions": "Allowed Endpoints",
    "allEndpointsAllowed": "This key can access all API endpoints.",
    "endpointsRestricted": "Restricted to {count} endpoint{count, plural, one {} other {s}}."
  },
  "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": "__MISSING__:Embedding",
      "image": "__MISSING__:Image",
      "imageToText": "__MISSING__:Image to Text",
      "tts": "__MISSING__:Text to Speech",
      "stt": "__MISSING__:Speech to Text",
      "webSearch": "__MISSING__:Web Search",
      "webFetch": "__MISSING__:Web Fetch",
      "video": "__MISSING__:Video",
      "music": "__MISSING__:Music"
    },
    "noProviders": "__MISSING__:No providers configured for this kind yet.",
    "addConnection": "__MISSING__:Add Connection",
    "backToProviders": "__MISSING__:Back to Providers",
    "connections": "__MISSING__:{count} Connections",
    "noConnections": "__MISSING__:No connections yet — add one from the provider page.",
    "loading": "__MISSING__:Loading..."
  },
  "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"
  },
  "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": "__MISSING__:Use when you need Hermes Agent (by Nousresearch) with default, delegation, vision and auxiliary models routed through OmniRoute.",
      "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": "__MISSING__:Hermes Agent (by Nousresearch) - Advanced terminal AI with multi-model support (delegation, vision, compression, etc.)",
      "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."
    },
    "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": "__MISSING__:Configuration View",
    "configOnlyHint": "__MISSING__:This panel shows routing inputs only. Live breaker state is available on the Health page.",
    "routingInputs": "__MISSING__:Routing Inputs",
    "routingInputsHint": "__MISSING__:Mode pack and weighting stay here; breaker runtime state stays on the Health page.",
    "emailVisibilityHint": "__MISSING__:Account emails here follow the global privacy toggle.",
    "emailVisibilityTooltip": "__MISSING__:Use the eye icon to reveal or hide account emails globally across combos, providers and quota screens.",
    "manualModel": "__MISSING__:Manual model",
    "manualModelInvalid": "__MISSING__:Enter a model as provider/model.",
    "manualModelUnknownProvider": "__MISSING__:Unknown provider prefix.",
    "builderDynamicAccountShort": "__MISSING__:Dynamic account",
    "builderNeedValidName": "__MISSING__:Define a valid combo name before continuing.",
    "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), Gemini CLI. 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"
  },
  "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": "__MISSING__:Legacy / Free",
    "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": "__MISSING__:This endpoint is only accessible locally (loopback only)",
    "badgeAlwaysProtectedTooltip": "__MISSING__:This endpoint is always protected and requires authorization",
    "badgeInternalTooltip": "__MISSING__:This is an internal system endpoint",
    "tierAll": "__MISSING__:All",
    "tierAuth": "__MISSING__:Authenticated",
    "tierLoopback": "__MISSING__:Loopback",
    "tierAlwaysProtected": "__MISSING__:Always Protected",
    "tierPublic": "__MISSING__:Public",
    "hideInternal": "__MISSING__:Hide Internal",
    "showInternal": "__MISSING__:Show Internal"
  },
  "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": "__MISSING__:Disable {label}",
    "enableLabel": "__MISSING__:Enable {label}",
    "transportMode": "__MISSING__:Transport Mode",
    "transportStdioDesc": "__MISSING__:Local — IDE spawns process via omniroute --mcp",
    "transportSseDesc": "__MISSING__:Remote — Server-Sent Events over HTTP",
    "transportStreamableHttpDesc": "__MISSING__:Remote — Modern bidirectional HTTP",
    "copy": "__MISSING__:Copy",
    "mcpDashboardCopyUrl": "URL kopieren",
    "mcpDisabledTitle": "__MISSING__:MCP is disabled",
    "mcpDisabledDesc": "__MISSING__:Enable MCP above to configure transport mode and view server telemetry.",
    "mcpIntro": "__MISSING__:Model Context Protocol — {tools} tools across {scopes} scopes, {transports} transports (stdio / SSE / Streamable HTTP).",
    "mcpStep1": "__MISSING__:Run via {code}",
    "mcpStep2": "__MISSING__:Configure your MCP client to connect over stdio transport.",
    "mcpStep3": "__MISSING__:Invoke tools like {code1} and {code2}.",
    "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": "__MISSING__:/.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": "__MISSING__:Online",
    "offline": "__MISSING__:Offline",
    "disableLabel": "__MISSING__:Disable {label}",
    "enableLabel": "__MISSING__:Enable {label}",
    "a2aDisabledTitle": "__MISSING__:A2A is disabled",
    "a2aDisabledDesc": "__MISSING__:Enable A2A above to view task telemetry, agent details, and validation tools.",
    "a2aIntro": "__MISSING__:Agent2Agent JSON-RPC 2.0 endpoint — send tasks, stream responses, cancel in-flight jobs.",
    "a2aStep1": "__MISSING__:Discover the agent card at {code}.",
    "a2aStep2": "__MISSING__:Send JSON-RPC to {code1} using {code2} or {code3}.",
    "a2aStep3": "__MISSING__:Track and cancel tasks with {code1} and {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"
  },
  "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": "__MISSING__:Total Skills",
    "enabledSkills": "__MISSING__:Enabled",
    "totalExecutions": "__MISSING__:Executions",
    "successRate": "__MISSING__:Success Rate",
    "marketplaceTab": "__MISSING__:Marketplace",
    "applyFilters": "__MISSING__:Apply filters",
    "popularDefaultsLabel": "__MISSING__:Popular by default for selected provider:",
    "onMode": "__MISSING__:ON",
    "offMode": "__MISSING__:OFF",
    "autoMode": "__MISSING__:AUTO",
    "installSkillButton": "__MISSING__:Install Skill",
    "installSkillModalTitle": "__MISSING__:Install Skill",
    "installJsonPlaceholder": "__MISSING__:Paste skill manifest JSON here...",
    "installing": "__MISSING__:Installing...",
    "installSuccess": "__MISSING__:Skill installed ({id})",
    "installError": "__MISSING__:Install failed",
    "invalidJson": "__MISSING__:Invalid JSON",
    "searchMarketplacePlaceholder": "__MISSING__:Search skills...",
    "searchMarketplace": "__MISSING__:Search Marketplace",
    "marketplaceEmpty": "__MISSING__:No skills found in marketplace",
    "marketplaceError": "__MISSING__:Search failed",
    "installingFromMarketplace": "__MISSING__:Installing from marketplace...",
    "popularSkills": "__MISSING__:Popular Skills",
    "skillsMarketplace": "Kompetenzmarktplatz",
    "searching": "__MISSING__:Searching...",
    "pageInfo": "__MISSING__:Page {page} of {totalPages} ({total} total)",
    "previous": "__MISSING__:Previous",
    "next": "__MISSING__:Next",
    "activeProvider": "__MISSING__:Active provider:",
    "changeInSettings": "__MISSING__:Change this in Settings → Memory & Skills.",
    "installs": "__MISSING__:installs",
    "marketplaceSkillsMpHint": "__MISSING__:Configure your SkillsMP API key in Settings to browse the marketplace.",
    "marketplaceSkillsShHint": "__MISSING__:Search the skills.sh open directory to discover and install agent skills.",
    "installSkillModalDesc": "__MISSING__:Paste a skill manifest JSON or upload a .json file.",
    "uploadJson": "__MISSING__:Upload JSON",
    "cancel": "__MISSING__:Cancel",
    "installSkill": "Skill installieren"
  },
  "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": "__MISSING__:Provider Health Matrix",
    "providerHealthMatrixDescription": "__MISSING__:Provider × account × model states from breakers, cooldowns, lockouts and logs.",
    "healthMatrixRange": "__MISSING__:Health matrix range",
    "providerFilter": "__MISSING__:Provider filter",
    "onlyIssues": "__MISSING__:Only issues",
    "refresh": "__MISSING__:Refresh",
    "accounts": "__MISSING__:Accounts",
    "models": "__MISSING__:Models",
    "issues": "__MISSING__:Issues",
    "loadingProviderHealthMatrix": "__MISSING__:Loading provider health matrix...",
    "failedProviderHealthMatrix": "__MISSING__:Failed to load Provider Health Matrix: {error}",
    "noProvidersMatchedFilters": "__MISSING__:No providers matched the current filters.",
    "modelPillSummary": "__MISSING__:{requests} req · {successRate} success · {latency} avg",
    "modelLockoutSummary": "__MISSING__:{reason} · {duration} left",
    "locked": "__MISSING__:locked",
    "inferred": "__MISSING__:inferred",
    "inactive": "__MISSING__:Inactive",
    "noConnectionId": "__MISSING__:no connection id",
    "accountModelSummary": "__MISSING__:{connectionId} · {count} models",
    "cooldown": "__MISSING__:cooldown",
    "durationRemaining": "__MISSING__:{duration} remaining",
    "noSyncedModelsOrTraffic": "__MISSING__:No synced models or recent traffic yet.",
    "providerRowSummary": "__MISSING__:{active}/{total} active accounts · {requests} req · {successRate} success · {latency} avg",
    "cooldownCount": "__MISSING__:{count} cooldown",
    "lockoutCount": "__MISSING__:{count} lockouts",
    "issueCount": "__MISSING__:{count} issues",
    "score": "__MISSING__:Score",
    "lastRequest": "__MISSING__:Last request",
    "lastError": "__MISSING__:Last error"
  },
  "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"
    }
  },
  "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"
  },
  "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": "__MISSING__:Free tier available",
    "noAuthLabel": "__MISSING__:No Auth",
    "noAuthProviders": "__MISSING__:No Auth Providers",
    "upstreamProxyLabel": "__MISSING__:Upstream Proxy",
    "freeAggregated": "__MISSING__:All providers with free tier (also shown in their native category)",
    "deprecated": "Veraltet",
    "deprecatedProvider": "Dieser Anbieter ist veraltet",
    "riskNotice": {
      "title": "__MISSING__:Before continuing",
      "tooltip": "__MISSING__:Provider with usage caveats — click for details",
      "oauth": "__MISSING__:This provider uses your official product session/OAuth, which is not authorized for proxy/router use.\n\nWe don't recommend intensive autonomous agent usage (OpenCloud-style, long multi-step flows, large batches) — the upstream may react by restricting or banning the account.\n\nUse at your own risk.",
      "webCookie": "__MISSING__:This provider authenticates through your web session cookies. The upstream service may invalidate the session at any time, requiring you to log in again. Not recommended for long unattended operations.\n\nUse at your own risk.",
      "deprecated": "__MISSING__:This provider was discontinued by its upstream and may stop working without notice. Existing connections may continue working until the upstream fully removes access. Consider alternatives.",
      "dontShowAgain": "__MISSING__:Don't show this again for this provider",
      "understand": "__MISSING__:I understand, continue",
      "cancel": "__MISSING__:Cancel"
    },
    "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": "__MISSING__:Activate",
    "batchDeactivateSelected": "__MISSING__:Deactivate",
    "batchRetestSelected": "__MISSING__:Retest",
    "batchActivateSuccess": "__MISSING__:Activated {count} connection(s)",
    "batchDeactivateSuccess": "__MISSING__:Deactivated {count} connection(s)",
    "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.",
    "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",
    "applyGeminiAuthLocal": "Authentifizierung anwenden",
    "exportGeminiAuthFile": "Authentifizierung exportieren",
    "importGeminiAuth": "Authentifizierung importieren",
    "geminiApplyModalTitle": "Bewerben Sie sich bei Local Gemini CLI",
    "geminiApplyTargetLabel": "Zielpfad",
    "geminiApplyBackupLabel": "Backups",
    "geminiApplyAccountsHint": "Das aktive Konto google_accounts.json wird aktualisiert, um dieser Verbindung zu entsprechen.",
    "geminiApplyWarning": "Dadurch wird die vorhandene oauth_creds.json ersetzt und google_accounts.json aktualisiert. Weitermachen?",
    "geminiApplyConfirmCheckbox": "Ich bestätige, dass ich die vorhandene oauth_creds.json ersetzen möchte",
    "geminiApply": "Bewerben",
    "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",
    "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",
    "geminiCliProjectIdHint": "Ihre Google Cloud-Projekt-ID. Erforderlich für Konten mit Ausnahmen. Geben Sie Ihre GCP-Projekt-ID zur Verwendung mit Gemini CLI ein.",
    "geminiCliProjectIdLabel": "Google Cloud-Projekt-ID",
    "geminiCliProjectIdPlaceholder": "meine-gcp-projekt-id",
    "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": "__MISSING__:Client profile",
    "antigravityClientProfileHint": "__MISSING__:Choose which Antigravity client identity OmniRoute presents to the API.",
    "antigravityClientProfileIde": "__MISSING__:IDE",
    "antigravityClientProfileHarness": "__MISSING__:Harness / CLI",
    "codexFastTierActiveChip": "__MISSING__:Codex Fast tier is active",
    "tierFast": "__MISSING__:Fast",
    "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": "__MISSING__:Web Fetch",
    "webFetchTooltip": "__MISSING__:Providers that extract content from web URLs (HTML → Markdown, scrape, screenshot)",
    "webFetchProvidersHeading": "__MISSING__:Web Fetch Providers",
    "compatibleProvidersDesc": "__MISSING__:OpenAI-compatible and Anthropic-compatible endpoints you host or configure. Point any OpenAI SDK to your own URL and route requests here.",
    "oauthProvidersDesc": "__MISSING__:Providers authenticated via OAuth — sign in once and OmniRoute handles token rotation automatically.",
    "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": "__MISSING__:Standard API key providers. Add your key once and OmniRoute routes, retries, and rate-limits on your behalf.",
    "noAuthProvidersDesc": "__MISSING__:Open endpoints that require no credentials — ready to use immediately without any sign-up.",
    "upstreamProxyProvidersDesc": "__MISSING__:Route outbound traffic through an upstream proxy before it reaches the provider. Useful for corporate networks or traffic inspection.",
    "webFetchProvidersDesc": "__MISSING__:Providers that fetch and extract content from web URLs. Use them to ground prompts with live web data.",
    "aggregatorsGatewaysDesc": "__MISSING__:Multi-provider aggregators and AI gateways that expose a single unified API across dozens of underlying models.",
    "enterpriseCloudDesc": "__MISSING__:Enterprise-tier and cloud-hosted models with enhanced SLAs, compliance certifications, and dedicated capacity.",
    "cloudAgentProvidersDesc": "__MISSING__:Autonomous cloud agents that execute long-running tasks with plan approval and live status tracking.",
    "localProvidersDesc": "__MISSING__:Self-hosted models running on your own hardware. No data leaves your infrastructure.",
    "searchProvidersDesc": "__MISSING__:Web and document search providers. Attach them to LLM calls for Retrieval-Augmented Generation.",
    "audioProvidersDesc": "__MISSING__:Text-to-speech and speech-to-text providers for voice I/O and audio transcription pipelines.",
    "embeddingRerankProvidersDesc": "__MISSING__:Vector embedding and reranking providers for semantic search, RAG pipelines, and similarity scoring.",
    "imageProvidersDesc": "__MISSING__:Image generation and vision providers — create images from text or analyse existing ones.",
    "videoProvidersDesc": "__MISSING__:Video generation providers. Create short video clips from text prompts or images.",
    "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"
  },
  "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": "__MISSING__:Drop paragraph (contains)",
    "routingOpDropParagraphStartsWithLabel": "__MISSING__:Drop paragraph (starts with)",
    "routingOpReplaceTextLabel": "__MISSING__:Replace text",
    "routingOpReplaceRegexLabel": "__MISSING__:Replace regex",
    "routingOpDropBlockContainsLabel": "__MISSING__:Drop block (contains)",
    "routingOpPrependSystemBlockLabel": "__MISSING__:Prepend system block",
    "routingOpAppendSystemBlockLabel": "__MISSING__:Append system block",
    "routingOpInjectBillingHeaderLabel": "__MISSING__:Inject billing header",
    "routingOpObfuscateWordsLabel": "__MISSING__:Obfuscate words (ZWJ)",
    "routingOpDropParagraphContainsDesc": "__MISSING__:Removes any paragraph (text block split on blank lines) inside the system prompt whose text contains ANY of the listed substrings. Use to strip third-party client fingerprints like 'github.com/anomalyco/opencode' or 'docs.openwebui.com' that Anthropic's classifier flags.",
    "routingOpDropParagraphStartsWithDesc": "__MISSING__:Removes any paragraph that STARTS WITH one of the listed prefixes. Use for identity lines like 'You are OpenCode' or 'You are Open WebUI' that announce the calling client.",
    "routingOpReplaceTextDesc": "__MISSING__:Replaces a literal substring with another literal substring. Use for known trigger phrases — e.g. rewrite 'Here is some useful information about the environment you are running in:' to 'Environment context you are running in:' (an empirically-validated trigger phrase).",
    "routingOpReplaceRegexDesc": "__MISSING__:Replaces text matching a regular expression. Use when you need patterns (character classes, optional whitespace, anchors) instead of literal substrings. A malformed pattern is caught at runtime when the op runs.",
    "routingOpDropBlockContainsDesc": "__MISSING__:Removes ENTIRE system blocks (not just paragraphs) whose text contains any of the listed substrings. Use when a whole block is fingerprint-bearing and you want it gone — e.g. an injected MCP-server description.",
    "routingOpPrependSystemBlockDesc": "__MISSING__:Inserts a new text block at the FRONT of the system array. Use to add the SDK identity 'You are a Claude agent, built on Anthropic's Claude Agent SDK.' that Anthropic's classifier expects.",
    "routingOpAppendSystemBlockDesc": "__MISSING__:Inserts a new text block at the END of the system array. Use for cosmetic additions that don't need to be at position [0].",
    "routingOpInjectBillingHeaderDesc": "__MISSING__:Prepends the special 'x-anthropic-billing-header: cc_version=...; cc_entrypoint=...; cch=...;' text block that Anthropic's classifier validates. Required for CC bridge relay endpoints; for the native claude provider OmniRoute already injects its own billing line so this op is usually redundant there.",
    "routingOpObfuscateWordsDesc": "__MISSING__:Inserts a Zero-Width-Joiner character after the first letter of each listed word, so 'opencode' becomes 'o‍pencode'. Reads identical to humans but bypasses classifier word matches. Targets system blocks, user/assistant messages, and tool descriptions.",
    "routingNeedlesHint": "__MISSING__:List of substrings. A paragraph matches if it contains ANY one of them. Add one per line via 'Add entry'.",
    "routingPrefixesHint": "__MISSING__:List of strings. A paragraph matches if it starts with any one of them (leading whitespace is trimmed before matching).",
    "routingCaseSensitiveHint": "__MISSING__:When ON, 'OpenCode' and 'opencode' are different strings. When OFF (default), the comparison ignores case.",
    "routingMatchLiteralHint": "__MISSING__:Exact literal substring to find. No regex syntax — special chars like . * ? are treated as themselves.",
    "routingReplacementTextHint": "__MISSING__:Replacement string. Leave blank to delete the match. The output preserves surrounding text.",
    "routingAllOccurrencesHint": "__MISSING__:When ON (default), every instance is replaced. When OFF, only the first match is replaced.",
    "routingPatternHint": "__MISSING__:JavaScript regex source. Don't wrap in slashes — just 'foo(.*)bar'. Server rejects patterns that fail to compile.",
    "routingRegexFlagsHint": "__MISSING__:JavaScript regex flags (g = all matches, i = case-insensitive, s = dot matches newline, m = multiline). Default 'g'.",
    "routingBlockTextHint": "__MISSING__:Full text of the new system block. Use a literal string; the system block stores text only.",
    "routingIdempotencyKeyHint": "__MISSING__:Optional. If set, the op skips when a block whose text starts with this key is already present. Prevents double-prepend on retries.",
    "routingBillingEntrypointHint": "__MISSING__:Value injected as 'cc_entrypoint='. Anthropic accepts 'sdk-cli' (Agent SDK), 'cli' (Claude Code CLI), or other documented values.",
    "routingBillingVersionFormatHint": "__MISSING__:How the 3-char build hash after cc_version= is computed. 'ex-machina' = sha256 of CCH_SALT+chars-from-first-user-msg+version (per-message). 'omniroute-daystamp' = sha256 of YYYY-MM-DD+version (stable per-day).",
    "routingBillingCchAlgoHint": "__MISSING__:How the 5-char cch= token is computed. 'sha256-first-user' = sha256 of first user message text. 'xxhash64-body' = body-level signing fills it later. 'static-zero' = literal '00000' placeholder.",
    "routingObfuscateWordsHint": "__MISSING__:Lowercase words to obfuscate. ZWJ insertion is applied case-insensitively, so 'opencode' also matches 'OpenCode' and 'OPENCODE'.",
    "routingObfuscateTargetsHint": "__MISSING__:Which body regions to scan for the words: system blocks, user/assistant messages, and/or tool descriptions.",
    "routingObfuscateTargetsLabel": "__MISSING__:Targets",
    "routingSummarizeDropParagraphContains": "__MISSING__:drop paragraphs containing: {items}",
    "routingSummarizeDropParagraphStartsWith": "__MISSING__:drop paragraphs starting with: {items}",
    "routingSummarizeReplaceText": "__MISSING__:replace \"{match}\" → \"{replacement}\"",
    "routingSummarizeReplaceRegex": "__MISSING__:regex /{pattern}/{flags} → \"{replacement}\"",
    "routingSummarizeDropBlockContains": "__MISSING__:drop blocks containing: {items}",
    "routingSummarizePrependSystemBlock": "__MISSING__:prepend block: \"{text}\"",
    "routingSummarizeAppendSystemBlock": "__MISSING__:append block: \"{text}\"",
    "routingSummarizeInjectBillingHeader": "__MISSING__:inject billing header (entrypoint={entrypoint}, version={versionFormat}, cch={cchAlgo})",
    "routingSummarizeObfuscateWords": "__MISSING__:obfuscate {count} word(s) via ZWJ in {targets}",
    "routingDefaultAutoVariantLKGP": "__MISSING__:Last Known Good Provider",
    "routingDefaultAutoVariantLKGPDesc": "__MISSING__:Last Known Good Provider",
    "routingDefaultAutoVariantCoding": "__MISSING__:Quality-first for code",
    "routingDefaultAutoVariantCodingDesc": "__MISSING__:Quality-first for code",
    "routingDefaultAutoVariantFast": "__MISSING__:Low-latency routing",
    "routingDefaultAutoVariantFastDesc": "__MISSING__:Low-latency routing",
    "routingDefaultAutoVariantCheap": "__MISSING__:Cost-optimized",
    "routingDefaultAutoVariantCheapDesc": "__MISSING__:Cost-optimized",
    "routingDefaultAutoVariantOffline": "__MISSING__:High availability",
    "routingDefaultAutoVariantOfflineDesc": "__MISSING__:High availability",
    "routingDefaultAutoVariantSmart": "__MISSING__:Best discovery (10% explore)",
    "routingDefaultAutoVariantSmartDesc": "__MISSING__:Best discovery (10% explore)",
    "routingOpSummaryCount": "__MISSING__:{count, plural, =0 {no ops} one {# op} other {# ops}}",
    "routingOpEnabled": "__MISSING__:enabled",
    "routingOpDisabled": "__MISSING__:disabled",
    "routingOpStatusSeparator": "__MISSING__: · ",
    "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",
    "globalLabel": "Global",
    "configure": "Konfigurieren",
    "globalSystemPrompt": "Globale Systemaufforderung",
    "saved": "Gespeichert",
    "beforePromptLabel": "__MISSING__:Before Prompt",
    "beforePromptDesc": "__MISSING__:Injected before agent/provider system instructions",
    "beforePromptPlaceholder": "__MISSING__:Instructions inserted before agent/provider prompt...",
    "afterPromptLabel": "__MISSING__:After Prompt",
    "afterPromptDesc": "__MISSING__:Injected after agent/provider system instructions",
    "afterPromptPlaceholder": "__MISSING__:Instructions inserted after agent/provider prompt...",
    "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": "__MISSING__:Control whether OmniRoute reuses only stored Gemini thought signatures or accepts validated client-provided signatures in Antigravity-compatible tool-call flows.",
    "routingAntigravitySignatureEnabledLabel": "__MISSING__:Enabled",
    "routingAntigravitySignatureEnabledDesc": "__MISSING__:Current behavior. Ignore client-provided signatures and keep using the stored OmniRoute flow.",
    "routingAntigravitySignatureBypassLabel": "__MISSING__:Bypass",
    "routingAntigravitySignatureBypassDesc": "__MISSING__:Accept client-provided signatures after lightweight validation and fall back to the stored signature when invalid.",
    "routingAntigravitySignatureBypassStrictLabel": "__MISSING__:Bypass Strict",
    "routingAntigravitySignatureBypassStrictDesc": "__MISSING__:Require full protobuf validation before accepting a client-provided signature.",
    "routingHeaderFingerprintTitle": "Header-Fingerabdruck (pro Anbieter)",
    "routingServerRejectedSave": "⚠ Server lehnte Speicherung ab:",
    "routingAddTransformOp": "Fügen Sie eine Transformationsoperation hinzu",
    "routingClientCacheControlTitle": "Client-Cache-Steuerung",
    "routingClientCacheControlDesc": "__MISSING__:Configure whether OmniRoute preserves client-provided cache_control markers",
    "routingClientCacheControlAutoDesc": "__MISSING__:For deterministic Claude-compatible flows, preserve client-provided cache_control as-is. If the request has no cache_control, OmniRoute does not inject any bridge-owned markers for CC-compatible third-party proxy compatibility.",
    "routingClientCacheControlAlwaysLabel": "__MISSING__:Always Preserve",
    "routingClientCacheControlAlwaysDesc": "__MISSING__:Always forward client-provided cache_control headers to upstream providers as-is.",
    "routingClientCacheControlNeverLabel": "__MISSING__:Never Preserve",
    "routingClientCacheControlNeverDesc": "__MISSING__:Always remove client cache_control headers and let OmniRoute manage caching where native provider flows support it.",
    "routingZeroConfigTitle": "Null-Konfigurations-Auto-Routing",
    "routingZeroConfigDesc": "__MISSING__:Enable automatic provider selection using the auto/ prefix. When enabled, requests to auto, auto/coding, auto/fast, etc. will dynamically route across all connected providers.",
    "routingDefaultAutoVariant": "Standard-Auto-Variante",
    "visionBridge": "Vision-Brücke",
    "visionBridgeDesc": "__MISSING__:Run an automatic vision-to-text fallback before routing image requests to text-only models.",
    "visionBridgeEnabledLabel": "__MISSING__:Enabled",
    "visionBridgeEnabledDesc": "__MISSING__:Toggle the pre-call bridge that replaces image parts with extracted text.",
    "visionBridgeModel": "Brückenmodell",
    "visionBridgeModelPlaceholder": "openai/gpt-4o-mini",
    "visionBridgeModelHint": "__MISSING__:Any OmniRoute model ID that supports vision can be used here.",
    "visionBridgePrompt": "Bridge-Eingabeaufforderung",
    "visionBridgePromptPlaceholder": "Beschreiben Sie dieses Bild kurz.",
    "visionBridgePromptHint": "__MISSING__:Sent to the vision model before the extracted description is injected back into the original request.",
    "visionBridgeTimeoutMs": "Timeout (ms)",
    "visionBridgeMaxImagesPerRequest": "Maximale Bilder pro Anfrage",
    "resilienceMaxBackoffSteps": "Max backoff steps",
    "resilienceProviderBreakerTitle": "Circuit Breaker per Provider",
    "resilienceFailureThreshold": "Failure 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": "__MISSING__:Configure request payload mutations by model and protocol. Changes are persisted in settings and hot reloaded into the runtime immediately after save.",
    "payloadRuleDefaultTitle": "__MISSING__:default",
    "payloadRuleDefaultDesc": "__MISSING__:Applies params only when the target path is missing from the outgoing payload.",
    "payloadRuleOverrideTitle": "__MISSING__:override",
    "payloadRuleOverrideDesc": "__MISSING__:Forces values onto the payload, replacing anything already present at that path.",
    "payloadRuleFilterTitle": "__MISSING__:filter",
    "payloadRuleFilterDesc": "__MISSING__:Removes blocked params from the payload before the upstream request is sent.",
    "payloadRuleDefaultRawTitle": "__MISSING__:defaultRaw",
    "payloadRuleDefaultRawDesc": "__MISSING__:Like default, but string values are parsed as JSON first when possible. The legacy input alias default-raw is also accepted on save.",
    "payloadEditorTitle": "__MISSING__:Editor",
    "payloadEditorDesc": "__MISSING__:Use the runtime schema shape: default, override, filter, defaultRaw. The API also accepts the legacy input key default-raw.",
    "payloadEditorReady": "__MISSING__:Ready",
    "payloadResetInfo": "__MISSING__:Editor reset to the neutral template. Save to apply it.",
    "payloadSaveSuccess": "__MISSING__:Payload rules saved and hot reloaded.",
    "payloadJsonParseError": "__MISSING__:JSON parse error: {error}",
    "payloadMustBeObject": "__MISSING__:Payload rules must be a JSON object.",
    "payloadInvalidJson": "__MISSING__:Invalid JSON payload.",
    "payloadValidJsonRequired": "__MISSING__:Payload rules must be valid JSON before saving.",
    "savePayloadRules": "__MISSING__:Save Payload Rules",
    "requestLimitsTitle": "__MISSING__:Request Limits",
    "requestLimitsDesc": "__MISSING__:Configure global request limits and concurrency guards.",
    "maxRequestSizeLabel": "__MISSING__:Max Request Size (MB)",
    "maxRequestSizeDesc": "__MISSING__:Maximum allowed size for incoming API requests.",
    "maxResponseSizeLabel": "__MISSING__:Max Response Size (MB)",
    "maxResponseSizeDesc": "__MISSING__:Maximum allowed size for outgoing API responses.",
    "maxRequestTokensLabel": "__MISSING__:Max Request Tokens",
    "maxRequestTokensDesc": "__MISSING__:Maximum total tokens allowed in a single request.",
    "maxResponseTokensLabel": "__MISSING__:Max Response Tokens",
    "maxResponseTokensDesc": "__MISSING__:Maximum total tokens allowed in a single response.",
    "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": "__MISSING__:Service tier",
    "codexFastTierTierPriority": "__MISSING__:Priority",
    "codexFastTierTierFlex": "__MISSING__:Flex",
    "codexFastTierTierDefault": "__MISSING__:Default",
    "codexFastTierModelsLabel": "__MISSING__:Fast-tier models",
    "codexFastTierModelsHint": "__MISSING__:Only checked models receive service_tier when Fast Tier is enabled.",
    "codexFastTierModelCheckbox": "__MISSING__:Enable Fast Tier for {model}",
    "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": "__MISSING__:Authz Inventory",
      "description": "__MISSING__:5-tier route classification with live bypass policy. Read shows the full taxonomy; mutations re-prompt for the management password.",
      "loading": "__MISSING__:Loading inventory…",
      "loadError": "__MISSING__:Failed to load authz inventory",
      "tier": {
        "LOCAL_ONLY": "__MISSING__:Local only",
        "ALWAYS_PROTECTED": "__MISSING__:Always protected",
        "MANAGEMENT": "__MISSING__:Management",
        "CLIENT_API": "__MISSING__:Client API",
        "PUBLIC": "__MISSING__:Public"
      },
      "bypass": {
        "section": "__MISSING__:Manage-scope bypass",
        "kill_switch": {
          "label": "__MISSING__:Bypass kill-switch",
          "desc": "__MISSING__:Master toggle. When off, no LOCAL_ONLY prefix is reachable from non-loopback regardless of the per-prefix list."
        },
        "prefix": {
          "label": "__MISSING__:Bypassable prefixes",
          "desc": "__MISSING__:LOCAL_ONLY prefixes that manage-scope API keys (or dashboard sessions) may reach from non-loopback hosts.",
          "add": "__MISSING__:Add prefix",
          "placeholder": "__MISSING__:/api/mcp/v2/",
          "empty": "__MISSING__:No prefixes configured. Bypass effectively off."
        },
        "cli_tools_runtime_note": "__MISSING__:Spawn-capable prefix. Compile-time deny; cannot be made bypassable. Shown read-only."
      },
      "password": {
        "prompt": {
          "label": "__MISSING__:Current password",
          "desc": "__MISSING__:Re-confirm to apply security-impacting changes."
        },
        "placeholder": "__MISSING__:Current management password",
        "cancel": "__MISSING__:Cancel",
        "submit": "__MISSING__:Apply"
      },
      "save": "__MISSING__:Save changes",
      "saved": "__MISSING__:Authz settings updated",
      "pending": "__MISSING__:Unsaved changes",
      "badge": {
        "bypassable": "__MISSING__:Bypassable via manage scope",
        "strict": "__MISSING__:Strict loopback",
        "auth_required": "__MISSING__:Auth required",
        "public": "__MISSING__:Public",
        "always_protected": "__MISSING__:Always protected",
        "spawn_capable": "__MISSING__:Spawn-capable"
      },
      "error": {
        "PASSWORD_REQUIRED": "__MISSING__:Current password required to apply these changes.",
        "PASSWORD_MISMATCH": "__MISSING__:Current password is incorrect.",
        "INSUFFICIENT_SCOPE": "__MISSING__:API key lacks the manage scope.",
        "BYPASS_PREFIX_NOT_ALLOWED": "__MISSING__:One or more prefixes target spawn-capable routes and cannot be bypassed.",
        "GENERIC": "__MISSING__:Failed to update authz settings."
      }
    },
    "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": "__MISSING__:Vercel Relay deployed successfully",
    "vercelRelayButton": "__MISSING__:Deploy Vercel Relay",
    "vercelRelayModalTitle": "__MISSING__:Deploy Vercel Relay",
    "vercelRelayWarning": "__MISSING__:Warning: A Vercel deployment token is required. This token will only be used to create the serverless relay and will never be stored by OmniRoute.",
    "vercelRelayTokenLabel": "__MISSING__:Vercel Access Token",
    "vercelRelayProjectNameLabel": "__MISSING__:Vercel Project Name",
    "vercelRelayFreeTierNote": "__MISSING__:Relays are lightweight proxy endpoints deployed on Vercel's free tier to bypass local network/region limitations.",
    "vercelRelayDeploying": "__MISSING__:Deploying...",
    "vercelRelayDeploy": "__MISSING__:Deploy",
    "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."
  },
  "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": "__MISSING__:Token Saver master switch is OFF — these settings will not affect requests until you turn it on from the Endpoint page.",
    "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."
  },
  "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": "__MISSING__:Input compression",
    "inputCompressionDesc": "__MISSING__:Rewrite chat history with shorter wording. Reduces input tokens by ~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:\n\n„Python\ndef sort_array(arr):\n    Rückgabe sortiert(arr)\n„",
        "userFollowUp": "Sortieren Sie nun in absteigender Reihenfolge."
      },
      "thinking": {
        "question": "Wie groß ist die Summe der ersten 100 Primzahlen?"
      },
      "systemPrompt": {
        "systemInstruction": "Sie sind ein leitender Softwareentwickler mit Spezialisierung auf verteilte Systeme. Beantworten Sie Fragen präzise und nutzen Sie die Best Practices der Branche. Geben Sie bei Bedarf immer Codebeispiele an. Formatieren Sie Ihre Antworten mit Markdown.",
        "question": "Wie setze ich ein Schutzschaltermuster um?"
      },
      "streaming": {
        "prompt": "Erzählen Sie mir eine kurze Geschichte über einen Roboter, der malen lernt."
      },
      "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:"
  },
  "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": "__MISSING__:Contains",
    "evalsStrategyExactLabel": "__MISSING__:Exact Match",
    "evalsStrategyRegexLabel": "__MISSING__:Regex",
    "evalsStrategyCustomLabel": "__MISSING__:Custom Logic",
    "evalsStrategyContainsDescription": "__MISSING__:Checks if the LLM output contains the expected substring.",
    "evalsStrategyExactDescription": "__MISSING__:Checks if the LLM output exactly matches the expected value.",
    "evalsStrategyRegexDescription": "__MISSING__:Validates the LLM output against a regular expression pattern.",
    "evalsStrategyCustomDescription": "__MISSING__:Custom evaluation logic (configured via JSON).",
    "historyColumnSuiteName": "__MISSING__:Suite Name",
    "historyColumnTarget": "__MISSING__:Target",
    "historyColumnPassRate": "__MISSING__:Pass Rate",
    "historyColumnAvgLatencyMs": "__MISSING__:Avg Latency",
    "historyColumnCreatedAt": "__MISSING__:Executed",
    "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": "__MISSING__:Expand",
    "cardCollapse": "__MISSING__:Collapse",
    "moreQuotas": "__MISSING__:+{count} more",
    "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": "__MISSING__:Lite",
    "tierUnknown": "Unbekannt",
    "statTotal": "__MISSING__:Total",
    "statCritical": "__MISSING__:Critical",
    "statAlert": "__MISSING__:Alert",
    "statHealthy": "__MISSING__:Healthy",
    "filterPurchaseTypeLabel": "__MISSING__:Type",
    "filterTierLabel": "__MISSING__:Tier",
    "purchaseAll": "__MISSING__:All",
    "purchaseOauthSub": "__MISSING__:Subscription",
    "purchaseOauthFree": "__MISSING__:OAuth Free",
    "purchaseApiKey": "__MISSING__:API Key",
    "creditsLabel": "__MISSING__:Credits",
    "creditBalanceHint": "__MISSING__:Remaining balance",
    "unlimitedLabel": "__MISSING__:Unlimited",
    "refreshing": "__MISSING__:Refreshing",
    "resetsIn": "__MISSING__:Resets in",
    "editCutoffs": "Grenzwerte bearbeiten",
    "forceRefresh": "Jetzt aktualisieren",
    "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": "__MISSING__:Updated",
    "lastRefreshed": "__MISSING__:Last refreshed",
    "providerQuota": "__MISSING__:Provider Quota",
    "providerQuotaHomeHint": "__MISSING__:Live status across connected accounts"
  },
  "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 20.20.2+ (20.x LTS), 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": "__MISSING__:{count} skills — control OmniRoute via REST / HTTP",
    "cliSkillsSubtitle": "__MISSING__:{count} skills — control OmniRoute via the omniroute terminal binary",
    "howToUseStep1": "__MISSING__:Click <bold>{copyUrl}</bold> on the skill you want your agent to know about.",
    "howToUseStep2": "__MISSING__:In your AI agent (Claude, Cursor, Cline…), say:",
    "howToUseStep2Code": "__MISSING__:Use the skill at [pasted-url]",
    "howToUseStep3": "__MISSING__:The agent fetches the SKILL.md and learns OmniRoute's API or CLI — no manual docs needed."
  },
  "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": "__MISSING__:No tasks yet",
    "noTasksDesc": "__MISSING__:Create your first task to get started.",
    "tasksTab": "__MISSING__:Tasks",
    "agentsTab": "__MISSING__:Agents",
    "settingsTab": "__MISSING__:Settings",
    "agentsEnabled": "__MISSING__:Enabled",
    "agentsDisabled": "__MISSING__:Disabled",
    "filterAllProviders": "__MISSING__:All Providers",
    "filterAll": "__MISSING__:All",
    "autoRefreshing": "__MISSING__:Auto-refreshing",
    "viewPR": "__MISSING__:View Pull Request",
    "connected": "__MISSING__:Connected",
    "notConnected": "__MISSING__:Not connected",
    "configure": "__MISSING__:Configure",
    "settingsTitle": "__MISSING__:Cloud Agent Settings",
    "settingsDesc": "__MISSING__:Configure local preferences for cloud agents.",
    "settingEnableAgents": "__MISSING__:Enable cloud agents",
    "settingEnableAgentsDesc": "__MISSING__:Allow OmniRoute to orchestrate autonomous coding agents.",
    "settingAutoPR": "__MISSING__:Auto-create PR",
    "settingAutoPRDesc": "__MISSING__:When a task is completed, automatically create a Pull Request with the changes.",
    "settingRequireApproval": "__MISSING__:Require plan approval",
    "settingRequireApprovalDesc": "__MISSING__:Always wait for manual approval before an agent executes a proposed plan.",
    "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": "__MISSING__:Loading cache",
    "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": "__MISSING__:Provider",
    "tableModel": "__MISSING__:Model",
    "performanceTitle": "__MISSING__: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": "__MISSING__:Share",
    "justNow": "__MISSING__:just now",
    "minutesAgo": "__MISSING__:{minutes}m ago",
    "hoursAgo": "__MISSING__:{hours}h ago",
    "daysAgo": "__MISSING__:{days}d ago",
    "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": "__MISSING__:Scope",
    "labelProxy": "__MISSING__:Proxy",
    "scopeGlobal": "__MISSING__:global",
    "scopeProvider": "__MISSING__:provider",
    "scopeAccount": "__MISSING__:account",
    "scopeCombo": "__MISSING__:combo",
    "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"
  },
  "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…"
  },
  "miniPlayground": {
    "endpoint": "__MISSING__:Endpoint",
    "apiKey": "__MISSING__:API Key",
    "model": "__MISSING__:Model",
    "voice": "__MISSING__:Voice",
    "speed": "__MISSING__:Speed",
    "input": "__MISSING__:Input",
    "url": "__MISSING__:URL",
    "format": "__MISSING__:Format",
    "depth": "__MISSING__:Depth",
    "copyCurl": "__MISSING__:Copy cURL",
    "copied": "__MISSING__:Copied!",
    "run": "__MISSING__:Run",
    "running": "__MISSING__:Running...",
    "response": "__MISSING__:Response",
    "tunnel": "__MISSING__:Tunnel",
    "send": "__MISSING__:Send",
    "selectKey": "__MISSING__:Select key",
    "testLabel": "__MISSING__:Test",
    "expandTest": "__MISSING__:Expand test",
    "collapseTest": "__MISSING__:Collapse test",
    "revealKey": "__MISSING__:Reveal key",
    "hideKey": "__MISSING__:Hide key",
    "download": "__MISSING__:Download",
    "play": "__MISSING__:Play",
    "query": "__MISSING__:Query",
    "numResults": "__MISSING__:Max results",
    "prompt": "__MISSING__:Prompt",
    "size": "__MISSING__:Size",
    "duration": "__MISSING__:Duration",
    "question": "__MISSING__:Question",
    "audioFile": "__MISSING__:Audio file",
    "noKeysFound": "__MISSING__:No API keys found. Add one in the Keys section.",
    "exampleLabel": "__MISSING__:Example",
    "latency": "__MISSING__:{ms}ms",
    "statsLine": "__MISSING__:{ms}ms · {tokensIn} in / {tokensOut} out tokens"
  },
  "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}."
  },
  "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"
  },
  "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"
  },
  "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"
  }
}
