{
  "common": {
    "save": "Gem",
    "cancel": "Annuller",
    "delete": "Slet",
    "loading": "Indlæser...",
    "error": "Der opstod en fejl",
    "success": "Succes",
    "confirm": "Er du sikker?",
    "refresh": "Opdater",
    "close": "Luk",
    "add": "Tilføj",
    "edit": "Rediger",
    "search": "Søg",
    "back": "Tilbage",
    "next": "Næste",
    "submit": "Indsend",
    "reset": "Nulstil",
    "copy": "Kopiér",
    "copied": "Kopieret!",
    "enabled": "Aktiveret",
    "disabled": "Deaktiveret",
    "active": "Aktiv",
    "inactive": "Inaktiv",
    "noData": "Ingen tilgængelige data",
    "nothingHere": "Nothing here yet",
    "configure": "Konfigurer",
    "manage": "Administrer",
    "name": "Navn",
    "actions": "Handlinger",
    "status": "Status",
    "type": "Type",
    "model": "Model",
    "models": "modeller",
    "provider": "Udbyder",
    "account": "Konto",
    "time": "Tid",
    "details": "Detaljer",
    "created": "Oprettet",
    "lastUsed": "Last Refreshed",
    "loadMore": "Indlæs mere",
    "noResults": "Ingen resultater fundet",
    "reloadPage": "Genindlæs siden",
    "connected": "Forbundet",
    "disconnected": "Afbrudt",
    "notConfigured": "Ikke konfigureret",
    "testConnection": "Test forbindelse",
    "enable": "Aktiver",
    "disable": "Deaktiver",
    "columns": "Kolonner",
    "newest": "Nyeste",
    "oldest": "Ældste",
    "all": "Alle",
    "none": "Ingen",
    "yes": "Ja",
    "no": "Nej",
    "on": "__MISSING__:ON",
    "off": "__MISSING__:OFF",
    "warning": "Advarsel",
    "note": "Bemærk",
    "free": "Gratis",
    "skipToContent": "Gå til indhold",
    "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.",
    "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...",
    "accept": "Accepter",
    "accountId": "Konto-id",
    "alias": "Alias",
    "apiKeyId": "API-nøgle-id",
    "apiKeyName": "API-nøglenavn",
    "apiKeySecret": "API-nøglehemmelighed",
    "authorization": "Autorisation",
    "content-type": "Indholdstype",
    "content-length": "Indholdslængde",
    "cookie": "Cookie",
    "file": "Fil",
    "host": "vært",
    "id": "ID",
    "import": "Importer",
    "limit": "Grænse",
    "offset": "Offset",
    "open": "Åbn",
    "origin": "Oprindelse",
    "promptTokens": "Spørg tokens",
    "completionTokens": "Fuldførelsestokens",
    "totalTokens": "Samlede tokens",
    "rawModel": "Rå model",
    "scope": "Omfang",
    "skill": "Færdighed",
    "sortBy": "Sorter efter",
    "sortOrder": "Sorteringsrækkefølge",
    "tab": "Tab",
    "text": "Tekst",
    "textarea": "Tekstområde",
    "tool": "Værktøj",
    "toolId": "Værktøjs-id",
    "web": "Web",
    "whereUsed": "Hvor brugt",
    "whitelist": "Hvidliste",
    "blacklist": "Sortliste",
    "resolve": "Løs",
    "force": "Kraft",
    "base64url": "Base64 URL",
    "hex": "Hex",
    "range": "Rækkevidde",
    "component": "Komponent",
    "redirect_uri": "Omdiriger URI",
    "idempotency-key": "Idempotens nøgle",
    "error_description": "Fejlbeskrivelse",
    "code": "Kode",
    "compatible": "Kompatibel",
    "chat-completions": "Chatafslutninger",
    "oauth": "OAuth",
    "auth_token": "Auth Token",
    "crypto": "Krypto",
    "hours": "Timer",
    "selfsigned": "Selvsigneret",
    "proxy_id": "Proxy ID",
    "proxyId": "Proxy ID",
    "connectionId": "Forbindelses-id",
    "resolveConnectionId": "Løs forbindelses-id",
    "resolve_connection_id": "Løs forbindelses-id",
    "scope_id": "Omfang ID",
    "scopeId": "Omfang ID",
    "jwtSecret": "JWT-hemmelighed",
    "keytar": "Keytar",
    "better-sqlite3": "bedre-sqlite3",
    "undici": "undici",
    "builder-id": "Bygherre-id",
    "musicDesc": "Musikbeskrivelse",
    "musicGeneration": "Musik Generation",
    "idc": "IDC",
    "cloud-status-changed": "Cloud-status ændret",
    "where_used": "Hvor brugt",
    "windowMs": "Vindue (ms)",
    "social-github": "GitHub",
    "social-google": "Google",
    "TOOL_ALLOWLIST": "Værktøjstilladelsesliste",
    "TOOL_DENYLIST": "Værktøj Denylist",
    "Failed to save pricing": "Kunne ikke gemme prisen",
    "Failed to reset pricing": "Failed to reset pricing",
    "apikey": "API nøgle",
    "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-udbydere",
    "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": "Kun gratis",
    "addFirstProvider": "Tilføj din første udbyder",
    "addFirstProviderDesc": "Tilslut en AI-udbyder for at starte routinganmodninger gennem OmniRoute. Du kan bruge gratis udbydere, API-nøgler eller OAuth-konti.",
    "learnMore": "Få flere oplysninger",
    "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": "Gratis udbydere",
    "freeTierLabel": "Gratis niveau tilgængelig",
    "freeTierProvidersDesc": "Udbydere med gratis niveauer - nogle kræver en API-nøgletilmelding, andre behøver slet ingen legitimationsoplysninger.",
    "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 Admin",
    "monitorAnomaliesAndHealth": "Overvåg uregelmæssigheder og systemsundhed",
    "flaggedAnomalies": "Markerede anomalier",
    "noAnomaliesDetected": "Ingen uregelmæssigheder opdaget",
    "apiKey": "API nøgle",
    "xpLastHour": "XP (1 time)",
    "zScore": "Z-score",
    "tokensCommunityServers": "Fællesskabsservere",
    "tokensServerNamePlaceholder": "Servernavn",
    "tokensApiKeyPlaceholder": "API nøgle",
    "tokensTokenBalance": "Token balance",
    "tokensSendTokens": "Send tokens",
    "tokensRecipientApiKeyId": "Recipient API Key ID",
    "tokensRecipientApiKeyIdPlaceholder": "Indtast modtagerens API-nøgle-id",
    "tokensReasonOptional": "Årsag (valgfrit)",
    "tokensReasonPlaceholder": "f.eks. bonus, belønning",
    "tokensTransactionHistory": "Transaktionshistorik",
    "tokensNoTransactionsYet": "Ingen transaktioner endnu",
    "tokensInviteCodes": "Invitationskoder",
    "tokensMaxUses": "Max anvendelser",
    "tokensRedeemCode": "Indløs kode",
    "tokensRedeemCodePlaceholder": "Indtast invitationskode",
    "tokensYourActiveInvites": "Dine aktive invitationer",
    "tierCoverageTitle": "Niveaudækning",
    "tierCoverageSubtitle": "Udbydere konfigureret pr. reserveniveau",
    "batchDetailCopyId": "Kopiér ID",
    "batchDetailClose": "Luk",
    "batchDetailEndpoint": "Slutpunkt",
    "batchDetailModel": "Model",
    "batchDetailWindow": "vindue",
    "batchDetailCreated": "Oprettet",
    "providerTopologyEmpty": "Ingen udbydere tilsluttet endnu",
    "badgeToastUnlocked": "Badge låst op!",
    "batchListSearchPlaceholder": "Søg efter ID, slutpunkt, model...",
    "batchListDeleteAllCompletedTitle": "Slet alle afsluttede batches",
    "batchListBatchesTable": "Batcher",
    "changelogViewerLoading": "Indlæser ændringslog fra GitHub...",
    "profileLoading": "Indlæser profil...",
    "profileHowToEarn": "Hvordan man tjener",
    "bootstrapBannerDismiss": "Afvis",
    "batchListDeleteBatchTitle": "Slet batch og dens filer",
    "leaderboardYourRank": "Din rang",
    "leaderboardLoading": "Indlæser leaderboard...",
    "batchFileDetailCopyId": "Kopiér ID",
    "batchFileDetailClose": "Luk",
    "batchFileDetailFailedToLoad": "Filindholdet kunne ikke indlæses",
    "batchFilesListSearchPlaceholder": "Søg efter ID eller filnavn...",
    "batchFilesListFilesTable": "Filer",
    "batchPageLoadingMore": "Indlæser mere...",
    "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": "Hjem",
    "dashboard": "Dashboard",
    "providers": "Udbydere",
    "combos": "Combos",
    "usage": "Brug",
    "analytics": "Analytics",
    "costs": "Omkostninger",
    "health": "Sundhed",
    "proxy": "Proxy",
    "limits": "Grænser og kvoter",
    "cliTools": "CLI værktøjer",
    "media": "Medier",
    "settings": "Indstillinger",
    "translator": "Oversætter",
    "playground": "Legeplads",
    "searchTools": "Search Tools",
    "agents": "Agenter",
    "cloudAgents": "Cloud-agenter",
    "memory": "Memory",
    "skills": "Skills",
    "omniSkills": "OmniSkills",
    "agentSkills": "AgentSkills",
    "docs": "Dokumenter",
    "issues": "Problemer",
    "endpoints": "Endpoints",
    "endpointsSubtitle": "Dine AI-forbindelses-URL'er",
    "apiManager": "API Key Manager",
    "apiManagerSubtitle": "Administrer API-nøgler og adgang",
    "embeddedServices": "__MISSING__:Embedded Services",
    "embeddedServicesSubtitle": "__MISSING__:Manage local proxy services",
    "logs": "Logs",
    "webhooks": "Webhooks",
    "webhooksSubtitle": "Få besked om begivenheder",
    "combosSubtitle": "Gruppeudbydere til failover",
    "batchSubtitle": "Behandle flere anmodninger",
    "contextCavemanSubtitle": "Hurtig komprimering",
    "contextRtkSubtitle": "Outputfiltrering",
    "auditLog": "Revisionslog",
    "shutdown": "Nedlukning",
    "restart": "Genstart",
    "shutdownConfirm": "Vil du lukke OmniRoute ned?",
    "restartConfirm": "Genstart OmniRoute?",
    "version": "v{version}",
    "debug": "Debug",
    "system": "System",
    "help": "Hjælp",
    "primarySection": "Main",
    "cliSection": "CLI",
    "debugSection": "Debug",
    "systemSection": "System",
    "helpSection": "Help",
    "serverDisconnected": "Server afbrudt",
    "serverDisconnectedMsg": "Proxyserveren er blevet stoppet eller genstarter.",
    "expandSidebar": "Udvid sidebjælken",
    "collapseSidebar": "Skjul sidebjælken",
    "themes": "Temaer",
    "presetColors": "Populære farver",
    "createTheme": "Opret nyt tema...",
    "chooseColor": "Vælg én farve",
    "themeCoral": "Coral",
    "themeBlue": "Blå",
    "themeRed": "Rød",
    "themeGreen": "Grøn",
    "themeViolet": "Violet",
    "themeOrange": "Orange",
    "themeCyan": "Turkis",
    "cliToolsShort": "Værktøjer",
    "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 revision",
    "settingsGeneral": "General",
    "settingsAppearance": "Appearance",
    "settingsAi": "AI Settings",
    "settingsSecurity": "Security",
    "settingsFeatureFlags": "Feature Flag",
    "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": "Skift systemfunktioner",
    "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": "Konfigurer HTTP-tilbagekald for systemhændelser.",
    "configuredWebhooks": "Konfigurerede Webhooks",
    "configuredWebhooksDesc": "Administrer leveringsslutpunkter, tilmeldte hændelser, status og testafsendelser.",
    "addWebhook": "Tilføj Webhook",
    "editWebhook": "Rediger Webhook",
    "name": "Navn",
    "namePlaceholder": "Produktionsovervågning",
    "unnamedWebhook": "Unavngiven webhook",
    "url": "Endpoint URL",
    "events": "Begivenheder",
    "allEvents": "Alle arrangementer",
    "secret": "Hemmelighed",
    "secretPlaceholder": "Lad stå tomt for automatisk at generere en hemmelighed",
    "secretEditPlaceholder": "Lad stå tomt for at beholde den aktuelle hemmelighed",
    "status": "Status",
    "active": "Aktiv",
    "inactive": "Inaktiv",
    "errored": "Fejl",
    "total": "I alt",
    "lastTriggered": "Sidst udløst",
    "actions": "Handlinger",
    "enabled": "Aktiveret",
    "enabledDesc": "Deaktiverede webhooks forbliver gemt, men modtager ikke leveringer.",
    "refresh": "Opdater",
    "loading": "Indlæser webhooks...",
    "never": "Aldrig",
    "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}",
    "testWebhook": "Send test",
    "testSuccess": "Testwebhook blev sendt.",
    "testFailed": "Test webhook mislykkedes.",
    "saveSuccess": "Webhook blev gemt.",
    "saveFailed": "Webhook kunne ikke gemmes.",
    "loadFailed": "Kunne ikke indlæse webhooks.",
    "delete": "Slet",
    "deleteConfirm": "Er du sikker på, at du vil slette denne webhook?",
    "deleteSuccess": "Webhook blev slettet.",
    "deleteFailed": "Webhook kunne ikke slettes.",
    "edit": "Rediger",
    "enable": "Aktiver",
    "disable": "Deaktiver",
    "noWebhooks": "Ingen webhooks konfigureret endnu.",
    "signatureTitle": "Webhook signaturer",
    "signatureDescription": "Hver levering inkluderer en X-Webhook-Signature-header signeret med HMAC-SHA256 ved hjælp af webhook-hemmeligheden. Bekræft signaturen, før du stoler på nyttelasten.",
    "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": "Revision",
    "auditDescription": "Gennemgå overholdelseshændelser og MCP-værktøjsopkald fra én operationel visning.",
    "complianceTab": "Overholdelse",
    "mcpTab": "MCP revision",
    "title": "Compliance Audit",
    "description": "Politik-, adgangs-, udbyder- og sikkerhedshændelser registreret af overholdelsesrevisionsloggen.",
    "eventType": "Begivenhedstype",
    "eventTypePlaceholder": "Filtrer efter handling eller begivenhedstype",
    "severity": "Sværhedsgrad",
    "allSeverities": "Alle sværhedsgrader",
    "info": "Info",
    "warning": "Advarsel",
    "critical": "Kritisk",
    "sourceIp": "Kilde IP",
    "userOrKey": "Bruger / nøgle",
    "action": "Handling",
    "result": "Resultat",
    "details": "Detaljer",
    "timestamp": "Tidsstempel",
    "from": "Fra",
    "to": "Til",
    "refresh": "Opdater",
    "export": "Eksporter",
    "clearFilters": "Ryd filtre",
    "loading": "Indlæser revisionsbegivenheder...",
    "showing": "Viser {count} af {total} begivenheder",
    "policyViolation": "Overtrædelse af politik",
    "accessDenied": "Adgang nægtet",
    "injectionBlocked": "Injektion blokeret",
    "noEvents": "Ingen overholdelseshændelser registreret.",
    "failedFetch": "Kunne ikke hente overholdelsesrevisionslog.",
    "viewDetails": "Se detaljer",
    "closeDetails": "Luk detaljer",
    "notAvailable": "—",
    "system": "system",
    "previous": "Forrige",
    "next": "Næste",
    "mcpAudit": "MCP revision",
    "mcpAuditDesc": "Værktøjsopkald revisionsindtastninger registreret af MCP-serveren.",
    "failedFetchMcpAudit": "Kunne ikke hente MCP-revisionslog.",
    "tool": "Værktøj",
    "toolPlaceholder": "Filtrer efter værktøjsnavn",
    "duration": "Varighed",
    "apiKey": "API nøgle",
    "output": "Output",
    "allResults": "Alle resultater",
    "success": "Succes",
    "failure": "Fejl",
    "noMcpEvents": "Ingen MCP-revisionshændelser registreret.",
    "a2aAudit": "A2A revision",
    "a2aAuditDesc": "Opgaveudførelse revisionsspor registreret af A2A-serveren.",
    "a2aShowingTasks": "Viser {count} af {total} opgaver",
    "a2aSkill": "Færdighed",
    "a2aSkillPlaceholder": "Filtrer efter færdighedsnavn",
    "a2aState": "stat",
    "a2aAllStates": "Alle stater",
    "a2aStateSubmitted": "Indsendt",
    "a2aStateWorking": "Arbejder",
    "a2aStateCompleted": "Afsluttet",
    "a2aStateFailed": "Mislykkedes",
    "a2aStateCancelled": "Annulleret",
    "a2aTaskId": "Opgave-id",
    "a2aEvents": "Begivenheder",
    "a2aArtifacts": "Artefakter",
    "a2aNoTasks": "Ingen A2A-opgaver registreret.",
    "a2aLoadingTasks": "Indlæser A2A-opgaver..."
  },
  "themesPage": {
    "title": "Temaer",
    "description": "Vælg et forudindstillet tema, eller opret dit eget med en enkelt farve",
    "presetColors": "Populære farver",
    "customTheme": "Brugerdefineret tema",
    "customThemeDesc": "Klik på Opret tema, og vælg en farve",
    "createTheme": "Opret nyt tema...",
    "activePreset": "Aktiv theme"
  },
  "header": {
    "logout": "Log ud",
    "language": "Sprog",
    "providers": "Udbydere",
    "providerDescription": "Administrer dine AI-udbyderforbindelser",
    "combos": "Combos",
    "comboDescription": "Modelkombinationer med fallback",
    "usage": "Brug & Analytics",
    "usageDescription": "Overvåg dit API-brug, tokenforbrug og anmodningslogfiler",
    "analytics": "Analytics",
    "analyticsDescription": "Diagrammer, tendenser og evalueringsindsigter",
    "cliTools": "CLI værktøjer",
    "cliToolsDescription": "Konfigurer CLI-værktøjer",
    "home": "Hjem",
    "homeDescription": "Velkommen til OmniRoute",
    "endpoint": "Endpoints",
    "endpointDescription": "Manage proxy endpoints, MCP, A2A, and API endpoints",
    "mcp": "MCP",
    "mcpDescription": "Model Context Protocol server management and tools",
    "a2a": "A2A",
    "a2aDescription": "Agent-to-Agent protocol tasks and observability",
    "settings": "Indstillinger",
    "settingsDescription": "Administrer dine præferencer",
    "openaiCompatible": "OpenAI-kompatibel",
    "anthropicCompatible": "Antropisk kompatibel",
    "media": "Medie",
    "mediaDescription": "Generer billeder, videoer og musik",
    "themes": "Temaer",
    "themesDescription": "Vælg et farvetema til hele dashboardpanelet",
    "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 revision",
    "auditA2aDescription": "A2A opgaveudførelse revisionsspor, tilstandsovergange og registreringer af færdighedskald",
    "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 Flag",
    "featureFlagsDescription": "Styresystemfunktioner og eksperimentelle funktioner",
    "featureFlagsActive": "{count} aktiv",
    "featureFlagsInactive": "{count} inaktiv",
    "featureFlagsOverrides": "{count} DB tilsidesætter",
    "featureFlagsSearch": "Søg efter flag...",
    "featureFlagsCategoryAll": "Alle",
    "featureFlagsCategorySecurity": "Sikkerhed",
    "featureFlagsCategoryNetwork": "Netværk",
    "featureFlagsCategoryPolicies": "Politikker",
    "featureFlagsCategoryRuntime": "Runtime",
    "featureFlagsCategoryCli": "CLI",
    "featureFlagsCategoryHealth": "Sundhed",
    "featureFlagsSourceDb": "DB",
    "featureFlagsSourceEnv": "ENV",
    "featureFlagsSourceDefault": "DEF",
    "featureFlagsReset": "Nulstil",
    "featureFlagsResetAll": "Nulstil alle tilsidesættelser",
    "featureFlagsResetAllConfirm": "Er du sikker på, at du vil nulstille alle tilsidesættelser af funktionsflag? Dette vil vende alle flag tilbage til deres ENV eller standardværdier.",
    "featureFlagsRestartRequired": "Genstart påkrævet for at ansøge",
    "featureFlagsNoResults": "Ingen flag matcher din søgning",
    "featureFlagsSaved": "Flag opdateret",
    "featureFlagsError": "Flag kunne ikke opdateres",
    "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": "Hurtig start",
    "quickStartDesc": "Kom i gang i 4 trin. Tilslut udbydere, rutemodeller, overvåg alt.",
    "fullDocs": "Fuld dokumenter",
    "step1Title": "1. Opret API-nøgle",
    "step1Desc": "Gå til <endpoint>Endpoint</endpoint> -> Registrerede nøgler. Generer én nøgle pr. miljø.",
    "step2Title": "2. Tilslut udbydere",
    "step2Desc": "Tilføj konti i <providers>Providers</providers>. Understøtter OAuth, API Key og gratis niveauer.",
    "step3Title": "3. Peg din klient",
    "step3Desc": "Indstil basis-URL til {url} i din IDE- eller API-klient.",
    "step4Title": "4. Overvåg & optimer",
    "step4Desc": "Spor tokens, omkostninger og fejl i <logs>Request Logs</logs> og <analytics>Analytics</analytics>.",
    "providersOverview": "Oversigt over udbydere",
    "configuredOf": "{configured} konfigureret af {total} tilgængelige udbydere",
    "noModelsAvailable": "Ingen tilgængelige modeller for denne udbyder.",
    "noProvidersConfigured": "Ingen udbydere er konfigureret endnu",
    "addProvider": "Tilføj en udbyder",
    "configureFirst": "Konfigurer en forbindelse først i {providers}",
    "configureProvider": "Konfigurer udbyder",
    "modelAvailable": "{count} model tilgængelig",
    "modelsAvailable": "{count} modeller tilgængelige",
    "connectionsActive": "{count} forbindelse aktiv",
    "connectionsActivePlural": "{count} forbindelser aktive",
    "copyModelName": "Kopiér modelnavnet",
    "documentation": "Dokumentation",
    "healthMonitor": "Sundhedsmonitor",
    "reportIssue": "Rapportér problem",
    "activeError": "{active} aktiv · {errors} fejl",
    "oauthLabel": "OAuth",
    "apiKeyLabel": "API nøgle",
    "requestsShort": "{count} req",
    "providerModelsTitle": "{provider} - Modeller",
    "copiedModel": "Kopieret: {model}",
    "aliasLabel": "alias",
    "updateNow": "Opdater nu",
    "updating": "Opdaterer...",
    "updateAvailableDesc": "En ny version er tilgængelig. Klik for at opdatere.",
    "updateStarted": "Opdatering startet...",
    "reloadingPageAutomatically": "Genindlæser siden automatisk...",
    "providerTopology": "Udbydertopologi"
  },
  "analytics": {
    "title": "Analytics",
    "usageAnalyticsTitle": "__MISSING__:Usage Analytics",
    "diversityScoreTitle": "Udbyder mangfoldighed",
    "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": "Overvåg dine API-brugsmønstre, tokenforbrug, omkostninger og aktivitetstendenser på tværs af alle udbydere og modeller.",
    "evalsDescription": "Kør evalueringspakker for at teste og validere dine LLM-endepunkter. Sammenlign modelkvalitet, detekter regressioner og benchmark-forsinkelse.",
    "overview": "Oversigt",
    "evals": "Evals",
    "utilization": "Udnyttelse",
    "utilizationDescription": "Leverandørkvoteforbrugstendenser og hastighedsgrænseovervågning",
    "modelStatus": "Modelstatus",
    "modelStatusCooldown": "Nedkøling",
    "modelStatusUnavailable": "Ikke tilgængelig",
    "modelStatusError": "Fejl",
    "comboHealth": "Kombosundhed",
    "comboHealthDescription": "Komboniveaudkvote, fordeling af brug og ydeevnemålinger",
    "compressionAnalyticsTitle": "Compression Analytics",
    "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.",
    "autoRoutingTotalAutoRequests": "Samlede automatiske anmodninger",
    "autoRoutingAvgSelectionScore": "Gns. selektionsscore",
    "autoRoutingExplorationRate": "Efterforskningshastighed",
    "autoRoutingLkgpHitRate": "LKGP Hit Rate",
    "autoRoutingRequestsByVariant": "Forespørgsler efter variant",
    "autoRoutingTopRoutedProviders": "Top-rutede udbydere",
    "comboHealthWorstQuotaLeft": "Værste kvote tilbage",
    "comboHealthUsageSkew": "Brug skævt",
    "comboHealthSuccessRate": "Succesrate",
    "comboHealthQuotaHealth": "Kvote sundhed",
    "comboHealthRequests": "Forespørgsler",
    "comboHealthTokens": "Poletter",
    "comboHealthAvgLatency": "Gennemsnitlig latenstid",
    "comboHealthTotalRequests": "Samlet antal anmodninger",
    "comboHealthExecutionTargets": "Udførelsesmål",
    "comboHealthSuccess": "Succes",
    "comboHealthLatency": "Latency",
    "comboHealthQuota": "Kvote",
    "comboHealthTitle": "Kombineret sundhed",
    "comboHealthUnableToLoad": "Kan ikke indlæse combo-sundhed",
    "comboHealthGettingStarted": "Kom godt i gang",
    "compressionAnalyticsTotalRequests": "Samlet antal anmodninger",
    "compressionAnalyticsTokensSaved": "Tokens gemt",
    "compressionAnalyticsAvgSavings": "Gnsn. besparelse",
    "compressionAnalyticsAvgDuration": "Gns. varighed",
    "compressionAnalyticsReceipts": "Kvitteringer",
    "compressionAnalyticsFallbacks": "Fallbacks",
    "compressionAnalyticsPromptTokens": "Spørg tokens",
    "compressionAnalyticsCompletionTokens": "Fuldførelsestokens",
    "compressionAnalyticsTotalTokens": "Samlede tokens",
    "compressionAnalyticsCacheTokens": "Cache-tokens",
    "compressionAnalyticsNoDataYet": "Ingen komprimeringsdata endnu",
    "searchAnalyticsTotalSearches": "Samlet antal søgninger",
    "searchAnalyticsCacheHitRate": "Cache hitrate",
    "searchAnalyticsTotalCost": "Samlede omkostninger",
    "searchAnalyticsAvgResponse": "Gns. svar",
    "searchAnalyticsNoSearchesYet": "Ingen søgninger endnu",
    "providerUtilizationTitle": "Udbyder udnyttelse",
    "providerUtilizationFailedToLoad": "Kunne ikke indlæse brugsdata",
    "providerUtilizationNoData": "Ingen tilgængelige data om udnyttelse",
    "providerUtilizationGettingStarted": "Kom godt i gang",
    "providerUtilizationLatestSnapshot": "Seneste kvote-øjebliksbillede",
    "providerUtilizationRemainingCapacity": "Resterende kapacitet"
  },
  "apiManager": {
    "title": "API nøgler",
    "createKey": "Opret API-nøgle",
    "key": "Nøgle",
    "revokeKey": "Tilbagekald nøgle",
    "revokeConfirm": "Er du sikker på, at du vil tilbagekalde denne API-nøgle?",
    "noKeys": "Ingen API-nøgler endnu",
    "noKeysDesc": "Opret din første API-nøgle til at godkende anmodninger til dit slutpunkt",
    "keyLabel": "Nøglemærke",
    "permissions": "Tilladelser",
    "expiresAt": "Udløber",
    "never": "Aldrig",
    "revoke": "Tilbagekald",
    "showKey": "Vis nøgle",
    "hideKey": "Skjul nøgle",
    "copyKey": "Kopiér API-nøgle",
    "allModels": "Alle modeller",
    "selectedModels": "Udvalgte modeller",
    "readOnly": "Kun læse",
    "fullAccess": "Fuld adgang",
    "keyManagement": "API nøglestyring",
    "keyManagementDesc": "Opret og administrer API-nøgler til godkendelse af anmodninger til dit slutpunkt",
    "totalKeys": "Totalnøgler",
    "restricted": "Begrænset",
    "totalRequests": "Samlet antal anmodninger",
    "modelsAvailable": "Modeller tilgængelige",
    "registeredKeys": "Registrerede nøgler",
    "keysRegistered": "{count} nøgler registreret",
    "keyRegistered": "{count} nøgle registreret",
    "keysSecurityNote": "Hver nøgle isolerer brugssporing og kan tilbagekaldes uafhængigt. Nøgler er maskeret efter oprettelse for sikkerhed.",
    "createFirstKey": "Opret din første nøgle",
    "name": "Navn",
    "usage": "Brug",
    "created": "Oprettet",
    "actions": "Handlinger",
    "reqs": "req",
    "neverUsed": "Aldrig brugt",
    "deleteConfirm": "Vil du slette denne API-nøgle?",
    "usageTips": "Brugstips",
    "tipAuth": "Brug API-nøgler i autorisationsoverskriften som bærer DIN_KEY",
    "tipSecure": "Nøgler vises kun én gang under oprettelsen - gem dem sikkert",
    "tipSeparate": "Opret separate nøgler til forskellige klienter eller miljøer",
    "tipRestrict": "Begræns nøgler til specifikke modeller for bedre sikkerhed og omkostningskontrol",
    "keyName": "Nøglenavn",
    "keyNamePlaceholder": "f.eks. Produktionsnøgle, Udviklingsnøgle",
    "keyNameDesc": "Vælg et beskrivende navn for at identificere denne nøgles formål",
    "managementAccessDesc": "Tillad denne API-nøgle at administrere OmniRoute-konfigurationen.",
    "selfServiceVisibility": "Selvbetjeningssynlighed",
    "selfServiceVisibilityDesc": "Styr, hvad denne nøgle kan se om sit eget forbrug og delt upstream-kvote.",
    "ownUsageVisibility": "Egne omkostninger og tokenforbrug",
    "ownUsageVisibilityDesc": "Tillad denne nøgle at kalde sit status-endpoint for eget USD-forbrug, budgetprocent og tokensummer.",
    "sharedAccountQuotaVisibility": "Delt kontokvote",
    "sharedAccountQuotaVisibilityDesc": "Tillad denne nøgle at se delt upstream-kontokvote, når én eksplicit forbindelse er konfigureret.",
    "keyCreated": "API-nøgle oprettet",
    "keyCreatedSuccess": "Nøglen blev oprettet!",
    "keyCreatedNote": "Kopiér og gem denne nøgle nu – den vises ikke igen.",
    "done": "Færdig",
    "savePermissions": "Gem tilladelser",
    "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.",
    "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": "Tillad alle",
    "restrict": "Begræns",
    "allowAllInfo": "Denne nøgle kan få adgang til alle tilgængelige modeller.",
    "restrictInfo": "Denne nøgle kan få adgang til {selected} af {total} modeller.",
    "selected": "{count} valgt",
    "all": "Alle",
    "clear": "Ryd",
    "searchModels": "Søg efter modeller efter navn eller udbyder...",
    "noModelsFound": "Ingen modeller fundet",
    "keyNameRequired": "Nøglenavn er påkrævet",
    "keyNameTooLong": "Nøglenavnet skal være på højst {max} tegn",
    "keyNameInvalid": "Nøglenavn kan kun indeholde bogstaver, tal, mellemrum, bindestreger og understregninger",
    "invalidKeyName": "Ugyldigt nøglenavn",
    "failedCreateKey": "Kunne ikke oprette nøgle",
    "failedCreateKeyRetry": "Kunne ikke oprette nøgle. Prøv venligst igen.",
    "invalidKeyId": "Ugyldigt nøgle-id",
    "failedDeleteKey": "Nøglen kunne ikke slettes",
    "failedDeleteKeyRetry": "Nøglen kunne ikke slettes. Prøv venligst igen.",
    "invalidModelsSelection": "Ugyldigt valg af modeller",
    "cannotSelectMoreThanModels": "Kan ikke vælge mere end {max} modeller",
    "failedUpdatePermissions": "Kunne ikke opdatere tilladelser",
    "failedUpdatePermissionsRetry": "Kunne ikke opdatere tilladelser. Prøv venligst igen.",
    "unknownProvider": "ukendt",
    "copyMaskedKey": "Kopiér maskeret nøgle",
    "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key",
    "modelsCount": "{count, plural, one {# model} other {# models}}",
    "lastUsedOn": "Sidste: {date}",
    "editPermissions": "Rediger tilladelser",
    "deleteKey": "Slet nøgle",
    "regenerateKey": "Regenerer nøgle",
    "regenerateConfirm": "Er du sikker på, at du vil genskabe denne API-nøgle? Den gamle nøgle vil øjeblikkeligt blive ugyldig.",
    "failedRegenerateKey": "Kunne ikke genskabe API-nøgle",
    "failedRegenerateKeyRetry": "Kunne ikke genskabe API-nøgle. Prøv venligst igen.",
    "model": "{count} model",
    "models": "{count} modeller",
    "permissionsTitle": "Tilladelser: {name}",
    "allowAllDesc": "Denne nøgle kan få adgang til alle tilgængelige modeller.",
    "restrictDesc": "Denne nøgle kan få adgang til {selectedCount} af {totalModels} modeller.",
    "selectedCount": "{count} valgt",
    "maxActiveSessions": "Max aktive sessioner",
    "apiManagerCustomRateLimits": "Brugerdefinerede satsgrænser",
    "apiManagerCustomRateLimitsDesc": "Tilsidesæt globale standardgrænser. Lad være tom for at bruge standardindstillinger.",
    "apiManagerRateLimitRequestsPlaceholder": "Forespørgsler",
    "apiManagerRateLimitReqPer": "kræve /",
    "apiManagerRateLimitSecondsPlaceholder": "Sekunder",
    "apiManagerRemoveLimitTitle": "Fjern grænsen",
    "apiManagerTimezonePlaceholder": "Amerika/Sao_Paulo",
    "noLogPayloadPrivacy": "No-Log Payload Privatliv",
    "bannedStatus": "Udelukket status",
    "managementApiAccess": "Management API-adgang",
    "expirationDate": "Udløbsdato",
    "managementAccess": "Administrationsadgang",
    "allowedConnections": "Tilladte forbindelser",
    "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": "Revisionslog",
    "searchPlaceholder": "Søgehandlinger...",
    "action": "Handling",
    "actor": "Skuespiller",
    "target": "Mål",
    "ipAddress": "IP-adresse",
    "timestamp": "Tidsstempel",
    "noEntries": "Ingen revisionsposter fundet",
    "filterByAction": "Filtrer efter handling...",
    "filterByActor": "Filtrer efter skuespiller...",
    "filterEntriesAria": "Filtrer revisionslogposter",
    "filterByActionTypeAria": "Filtrer efter handlingstype",
    "filterByActorAria": "Filtrer efter skuespiller",
    "refreshAuditLogAria": "Opdater revisionslog",
    "tableAria": "Revisionslogposter",
    "failedFetchAuditLog": "Kunne ikke hente revisionslog",
    "notAvailable": "—",
    "description": "Administrative handlinger og sikkerhedshændelser",
    "showing": "Viser {count} poster (offset {offset})",
    "previous": "Forrige"
  },
  "media": {
    "title": "Medieværksted",
    "subtitle": "Generér billeder, videoer og musik",
    "model": "Model",
    "prompt": "Prompt",
    "generate": "Generer",
    "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": "Kopiér",
    "resetToDefault": "Nulstil til standard",
    "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 værktøjer",
    "noActiveProviders": "Ingen aktive udbydere",
    "noActiveProvidersDesc": "Tilføj og tilslut udbydere først for at konfigurere CLI-værktøjer.",
    "mapModels": "Kortmodeller",
    "testConnection": "Test forbindelse",
    "connectionStatus": "Forbindelsesstatus",
    "configureEndpoint": "Konfigurer slutpunkt",
    "instructions": "Instruktioner",
    "modelMapping": "Modelkortlægning",
    "baseUrl": "Basis URL",
    "apiKey": "API nøgle",
    "configured": "Konfigureret",
    "notConfigured": "Ikke konfigureret",
    "notInstalled": "Ikke installeret",
    "custom": "Brugerdefineret",
    "unknown": "Ukendt",
    "lastSavedAt": "Sidst gemt: {date}",
    "never": "Aldrig",
    "justNow": "lige nu",
    "minutesAgoShort": "{count}m siden",
    "hoursAgoShort": "{count}t siden",
    "daysAgoShort": "{count}d siden",
    "monthsAgoShort": "{count}måned siden",
    "yearsAgoShort": "{count}år siden",
    "runtimeCheckFailed": "Kørselskontrol mislykkedes",
    "yourApiKeyPlaceholder": "din-api-nøgle",
    "modelPlaceholder": "udbyder/model-id",
    "configurationSaved": "Konfigurationen blev gemt.",
    "failedToSave": "Konfigurationen kunne ikke gemmes.",
    "noApiKeysCreateOne": "Ingen API-nøgler - Opret en på Nøgler-siden",
    "defaultOmnirouteKey": "sk_omniroute (standard)",
    "selectModel": "Vælg Model",
    "selectModelForAlias": "Vælg model til {alias}",
    "selectModelForTool": "Vælg model til {tool}",
    "select": "Vælg",
    "clear": "Ryd",
    "comingSoon": "Kommer snart",
    "checkingRuntime": "Kontrollerer køretidsstatus...",
    "guideOnlyIntegration": "Integration kun til guide (ingen lokal kørselstid påkrævet)",
    "cliRuntimeDetected": "CLI runtime registreret og klar",
    "cliFoundNotRunnable": "CLI fundet, men kan ikke køres{reason}",
    "cliRuntimeNotDetected": "CLI runtime ikke fundet",
    "binary": "Binær",
    "configPath": "Konfigurationssti",
    "configPathShort": "Konfig",
    "failedCheckRuntimeStatus": "Kørselsstatus kunne ikke kontrolleres.",
    "copy": "Kopiér",
    "copied": "Kopieret",
    "copyConfig": "Kopiér Config",
    "saveConfig": "Gem konfiguration",
    "selectionSaved": "Valget er gemt",
    "guide": "Vejledning",
    "detected": "Opdaget",
    "notReady": "Ikke klar",
    "active": "Aktiv",
    "inactive": "Inaktiv",
    "startMitm": "Start MITM",
    "stopMitm": "Stop MITM",
    "mitmStarted": "MITM startede med succes!",
    "mitmStopped": "MITM stoppede med succes!",
    "failedStart": "Kunne ikke starte MITM",
    "failedStop": "Kunne ikke stoppe MITM",
    "saveMappings": "Gem kortlægninger",
    "mappingsSaved": "Kortlægninger gemt!",
    "failedSaveMappings": "Tilknytningerne kunne ikke gemmes",
    "howItWorks": "Sådan fungerer det:",
    "antigravityHowWorksDesc": "Antigravity sender anmodninger til Googles slutpunkt. MITM opsnapper og omdirigerer dem til OmniRoute.",
    "antigravityStep1": "1. Start MITM for at dirigere anmodninger gennem OmniRoute.",
    "antigravityStep2Prefix": "2. Tilføj",
    "antigravityStep2Suffix": "til din hosts-fil som 127.0.0.1.",
    "antigravityStep3": "3. Åbn Antigravity og anmodninger vil blive fuldført.",
    "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-adgangskode påkrævet",
    "sudoPasswordHint": "Administratoradgangskode er påkrævet for at ændre værtsfil- og systemproxyindstillinger.",
    "enterSudoPassword": "Indtast sudo adgangskode",
    "sudoPasswordRequiredError": "Sudo-adgangskode er påkrævet.",
    "cancel": "Annuller",
    "confirm": "Bekræft",
    "settingsApplied": "Indstillinger blev anvendt!",
    "failedApplySettings": "Indstillingerne kunne ikke anvendes",
    "settingsReset": "Indstillinger blev nulstillet!",
    "failedResetSettings": "Indstillingerne kunne ikke nulstilles",
    "backupRestored": "Backup gendannet!",
    "failedRestore": "Kunne ikke gendanne",
    "checkingCli": "Kontrollerer {tool} CLI...",
    "cliNotRunnable": "{tool} CLI installeret, men kan ikke køres",
    "cliNotInstalled": "{tool} CLI ikke installeret",
    "cliNotDetected": "{tool} CLI ikke fundet",
    "cliDetectedReady": "{tool} CLI fundet og klar",
    "cliFoundFailedHealthcheck": "{tool} CLI blev fundet, men kørselssundhedstjek mislykkedes{reason}.",
    "installCliPrompt": "Installer venligst {tool} CLI for at bruge denne funktion.",
    "installCodexPrompt": "Installer venligst Codex CLI for at bruge auto-apply-funktionen.",
    "hide": "Skjul",
    "howToInstall": "Sådan installeres",
    "installationGuide": "Installationsvejledning",
    "platforms": "macOS / Linux / Windows:",
    "afterInstallationRun": "Kør efter installationen",
    "toVerify": "at verificere.",
    "current": "Nuværende",
    "baseUrlPlaceholder": "https://.../v1",
    "resetToDefault": "Nulstil til standard",
    "providerModelPlaceholder": "udbyder/model-id",
    "apply": "Ansøg",
    "reset": "Nulstil",
    "manualConfig": "Manuel konfiguration",
    "backups": "Sikkerhedskopier",
    "configBackups": "Konfigurer sikkerhedskopier",
    "noBackupsYet": "Ingen sikkerhedskopier endnu. Sikkerhedskopier oprettes automatisk før hver anvendelse eller nulstilling.",
    "restore": "Gendan",
    "backupRestoredReloading": "Backup gendannet! Genindlæser status...",
    "failedRestoreBackup": "Kunne ikke gendanne backup",
    "applied": "Anvendt!",
    "failed": "Mislykkedes",
    "resetDone": "Nulstil!",
    "omnirouteConfiguredOpenAiCompatible": "OmniRoute er konfigureret som OpenAI-kompatibel udbyder",
    "provider": "Udbyder",
    "model": "Model",
    "providers": "Udbydere",
    "auth": "Auth",
    "noApiKeysAvailable": "Ingen tilgængelige API-nøgler",
    "usingDefaultOmniroute": "Bruger standard: sk_omniroute",
    "updateConfig": "Opdater konfiguration",
    "applyConfig": "Anvend Config",
    "noBackupsAvailable": "Ingen tilgængelige sikkerhedskopier.",
    "profileSaved": "Profilen \"{name}\" er gemt!",
    "failedSaveProfile": "Profilen kunne ikke gemmes",
    "profileActivated": "Profil aktiveret!",
    "failedActivateProfile": "Profilen kunne ikke aktiveres",
    "profiles": "Profiler",
    "savedProfiles": "Gemte profiler",
    "noProfilesYet": "Ingen profiler gemt endnu. Gem den aktuelle konfiguration som en profil nedenfor.",
    "activate": "Aktiver",
    "deleteProfile": "Slet profil",
    "profileNamePlaceholder": "Profilnavn (f.eks. personlig konto)",
    "saveCurrent": "Gem nuværende",
    "codexAuthNotePrefix": "Codex bruger",
    "codexAuthNoteMiddle": "med",
    "codexAuthNoteSuffix": "Klik på \"Anvend\" for at konfigurere automatisk.",
    "claudeManualConfiguration": "Claude CLI - Manuel konfiguration",
    "codexManualConfiguration": "Codex CLI - Manuel konfiguration",
    "droidManualConfiguration": "Factory Droid - Manuel konfiguration",
    "openClawManualConfiguration": "Åbn Claw - Manuel konfiguration",
    "clineManualConfiguration": "Cline manuel konfiguration",
    "kiloManualConfiguration": "Kilokode manuel konfiguration",
    "whenToUseLabel": "Hvornår skal bruges",
    "openToolDocs": "Åbn værktøjsdokumenter",
    "toolUseCases": {
      "claude": "Brug, når du ønsker stærke planlægnings-arbejdsgange og lange multi-fil-refaktorer med Claude Code.",
      "codex": "Bruges, når dit team er standardiseret på OpenAI Codex CLI-flows og profilbaseret godkendelse.",
      "droid": "Brug, når du har brug for en letvægtsterminalagent med fokus på hurtig kodning og kommandoudførelsesløkker.",
      "openclaw": "Brug, når du vil have en Open Claw-stil-kodningsagent, men dirigeret gennem OmniRoute-politikker.",
      "cline": "Bruges, når du konfigurerer kodningsagenter i editorer og ønsker guidet opsætning med OmniRoute-modeller.",
      "kilo": "Brug, når dit arbejdsflow afhænger af Kilo Code-kommandoer og hurtige iterative redigeringer.",
      "cursor": "Brug, når du koder i Cursor, og du har brug for brugerdefinerede OpenAI-kompatible modeller gennem OmniRoute.",
      "continue": "Brug, når du kører Continue i IDE'er, og du har brug for bærbar JSON-baseret udbyderkonfiguration.",
      "opencode": "Brug, når du foretrækker terminal-native agentkørsler og scriptet automatisering via OpenCode.",
      "kiro": "Bruges ved integration af Kiro og styring af modelrouting centralt fra OmniRoute.",
      "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.",
      "antigravity": "Bruges, når Antigravity/Kiro-trafik skal opsnappes gennem MITM og dirigeres til OmniRoute.",
      "copilot": "Brug, når du ønsker Copilot-chatstil UX, mens du håndhæver OmniRoute-nøgler og routingregler.",
      "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": "Brug, når du har brug for en letvægts terminal-native AI-assistent til hurtige opgaver.",
      "hermes-agent": "__MISSING__:Use when you need Hermes Agent (by Nousresearch) with default, delegation, vision and auxiliary models routed through OmniRoute.",
      "custom": "Brug til brugerdefinerede værktøjsimplementeringer eller generiske OpenAI-kompatible konfigurationer."
    },
    "toolDescriptions": {
      "antigravity": "Google Antigravity IDE med MITM",
      "claude": "Antropisk Claude Code CLI",
      "codex": "OpenAI Codex CLI",
      "droid": "Factory Droid AI Assistant",
      "openclaw": "Åbn Claw AI Assistant",
      "cline": "Cline AI Coding Assistant CLI",
      "kilo": "Kilokode AI Assistant CLI",
      "cursor": "Cursor AI Code Editor",
      "continue": "Fortsæt 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 terminalassistent",
      "hermes-agent": "__MISSING__:Hermes Agent (by Nousresearch) - Advanced terminal AI with multi-model support (delegation, vision, compression, etc.)",
      "custom": "Generisk OpenAI-kompatibel CLI- eller SDK-konfigurationsgenerator"
    },
    "guides": {
      "cursor": {
        "notes": {
          "0": "Kræver Cursor Pro-konto for at bruge denne funktion.",
          "1": "Markøren dirigerer anmodninger gennem sin egen server, så lokalt slutpunkt understøttes ikke. Aktiver venligst Cloud Endpoint i Indstillinger."
        },
        "steps": {
          "1": {
            "title": "Åbn Indstillinger",
            "desc": "Gå til Indstillinger -> Modeller"
          },
          "2": {
            "title": "Aktiver OpenAI API",
            "desc": "Aktiver muligheden \"OpenAI API-nøgle\"."
          },
          "3": {
            "title": "Basis URL"
          },
          "4": {
            "title": "API nøgle"
          },
          "5": {
            "title": "Tilføj brugerdefineret model",
            "desc": "Klik på \"Vis alle modeller\" -> \"Tilføj brugerdefineret model\""
          },
          "6": {
            "title": "Vælg Model"
          }
        }
      },
      "continue": {
        "steps": {
          "1": {
            "title": "Åbn Config",
            "desc": "Åbn Fortsæt konfigurationsfil"
          },
          "2": {
            "title": "API nøgle"
          },
          "3": {
            "title": "Vælg Model"
          },
          "4": {
            "title": "Tilføj Model Config",
            "desc": "Tilføj følgende konfiguration til dit modelarray:"
          }
        },
        "notes": {
          "0": "Continue bruger JSON-konfigurationsfil."
        }
      },
      "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 kræver API-nøglekonfiguration.",
          "1": "Indstil basis-URL'en til dit OmniRoute-slutpunkt."
        }
      },
      "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 kræver en 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": "Brugerdefineret CLI",
    "toolCategories": "Tool Categories",
    "visibleToolsCount": "{count} tilgængelige værktøjer",
    "customCliBuilderTitle": "OpenAI-kompatibel CLI-bygger",
    "customCliBuilderDescription": "Generer env vars og JSON-uddrag for enhver CLI eller SDK, der accepterer en OpenAI-kompatibel basis-URL, API-nøgle og model-id.",
    "customCliNoModels": "Tilslut mindst én udbyder for at udfylde modelvælgerne.",
    "customCliNameLabel": "CLI navn",
    "customCliNamePlaceholder": "f.eks. Mit hold CLI",
    "customCliDefaultModelLabel": "Standardmodel",
    "customCliDefaultModelHelp": "Brug et hvilket som helst OmniRoute-model-id eller combo. De fleste OpenAI-kompatible CLI'er behøver kun /v1 base URL plus en modelstreng.",
    "customCliKeyHelper": "Til lokale installationer kan OmniRoute bruge sk_omniroute. I skytilstand skal du vælge en af ​​dine administrations-API-nøgler.",
    "customCliAliasMappingsLabel": "Alias kortlægninger",
    "customCliAliasMappingsHelp": "Valgfri hjælpealiasser til wrapper-scripts eller konfigurationsfiler, der ønsker stabile stenografinavne.",
    "customCliAddAlias": "Tilføj alias",
    "customCliNoMappings": "Ingen alias-tilknytninger endnu. Tilføj et, hvis dine wrapper- eller teamscripts bruger stabile korte navne.",
    "customCliAliasPlaceholder": "f.eks. anmeldelse",
    "customCliTargetModelLabel": "Målmodel",
    "customCliEndpointHintLabel": "Sådan tilsluttes endepunktet",
    "customCliEndpointHint": "Peg enhver OpenAI-kompatibel klient til OmniRoute /v1-basis-URL'en. Slutpunktet for fuldførelse af rå chat er {endpoint}. Brug JSON-blokken, når værktøjet ønsker et udbyderobjekt, eller env-scriptet, når det læser OPENAI_*-variabler.",
    "customCliEnvBlockTitle": "Env / shell snippet",
    "customCliJsonBlockTitle": "Udbyder JSON blok",
    "copilotConfigGenerator": "GitHub Copilot Config Generator",
    "copilotApiKey": "API nøgle",
    "copilotFilterModelsPlaceholder": "Filter modeller...",
    "copilotMaxInputTokens": "Max input-tokens",
    "copilotMaxOutputTokens": "Maks output tokens",
    "copilotToolCalling": "Værktøjsopkald",
    "copilotPasteInto": "Indsæt i: ",
    "wireApiChatCompletions": "Chatafslutninger (/chat/afslutninger)",
    "wireApiResponses": "Responses API (/responses)"
  },
  "combos": {
    "title": "Combos",
    "description": "Skab modelkombinationer med vægtet routing og fallback-understøttelse",
    "autoCatalogTitle": "Auto-routing katalog",
    "autoCatalogTemplateCount": "{count} skabeloner",
    "autoCatalogDescription": "Indbyggede auto/*-kombinationer løst dynamisk fra tilsluttede udbydere. Brug et af disse id'er som modelfelt - ingen opsætning nødvendig.",
    "autoCatalogExpand": "Udvid auto-routing-kataloget",
    "autoCatalogCollapse": "Skjul kataloget til automatisk routing",
    "createCombo": "Opret Combo",
    "editCombo": "Rediger kombination",
    "deleteCombo": "Slet Combo",
    "noModels": "Ingen modeller",
    "noModelsYet": "Ingen modeller tilføjet endnu",
    "addModel": "Tilføj model",
    "addModelToCombo": "Tilføj Model til Combo",
    "routingStrategy": "Rutestrategi",
    "maxRetries": "Max forsøger igen",
    "timeout": "Timeout (ms)",
    "healthcheck": "Sundhedstjek",
    "priority": "Prioritet",
    "fallback": "Fallback",
    "roundRobin": "Round Robin",
    "random": "Tilfældig",
    "leastLatency": "Mindst latenstid",
    "comboName": "Combo navn",
    "comboNamePlaceholder": "min-kombi",
    "deleteConfirm": "Vil du slette denne kombination?",
    "noCombosYet": "Ingen kombinationer endnu",
    "comboCreated": "Kombinationen blev oprettet",
    "comboUpdated": "Kombinationen blev opdateret",
    "comboDeleted": "Combo slettet",
    "failedCreate": "Kunne ikke oprette kombination",
    "failedUpdate": "Kunne ikke opdatere kombinationen",
    "errorCreating": "Fejl ved oprettelse af kombination",
    "errorUpdating": "Fejl ved opdatering af kombination",
    "errorDeleting": "Fejl ved sletning af kombination",
    "testFailed": "Testanmodning mislykkedes",
    "failedToggle": "Kombinationen kunne ikke skiftes",
    "testResults": "Testresultater — {name}",
    "resolvedBy": "Løst af:",
    "more": "+{count} mere",
    "reqs": "req",
    "success": "succes",
    "proxyConfigured": "Proxy konfigureret",
    "copyComboName": "Kopiér kombinationsnavnet",
    "enableCombo": "Aktiver kombination",
    "disableCombo": "Deaktiver kombination",
    "testCombo": "Test combo",
    "duplicate": "Duplikat",
    "proxyConfig": "Proxy konfiguration",
    "nameRequired": "Navn er påkrævet",
    "nameInvalid": "Kun bogstaver, tal, -, _, / og . tilladt",
    "nameHint": "Bogstaver, tal, -, _, / og . tilladt",
    "priorityDesc": "Sekventiel fallback: prøver model 1 først, derefter 2 osv.",
    "weightedDesc": "Fordeler trafik efter vægtprocent med fallback",
    "roundRobinDesc": "Cirkulær fordeling: hver anmodning går til den næste model i rotation",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate",
    "randomDesc": "Ensartet tilfældig udvælgelse, derefter tilbagevenden til de resterende modeller",
    "leastUsedDesc": "Vælger modellen med færrest anmodninger, balancerer belastningen over tid",
    "costOptimizedDesc": "Ruter til den billigste model først baseret på priser",
    "resetAware": "Reset-Aware RR",
    "resetAwareDesc": "Afbalancerer resterende kvote mod 5 timer og ugentlige nulstillinger, og runder derefter lignende resultater",
    "strictRandom": "Strict Random",
    "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling",
    "models": "Modeller",
    "autoBalance": "Auto-balance",
    "advancedSettings": "Avancerede indstillinger",
    "retryDelay": "Forsinkelse af forsøg igen (ms)",
    "concurrencyPerModel": "Samtidighed / Model",
    "queueTimeout": "Timeout for kø (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": "Lad være tom for at bruge globale standardindstillinger. Disse tilsidesætter indstillinger for hver udbyder.",
    "failoverBeforeRetry": "Failover før forsøg igen",
    "maxSetRetries": "Max sæt forsøg igen",
    "setRetryDelayMs": "Indstil Forsøgsforsinkelse (ms)",
    "moveUp": "Flyt op",
    "moveDown": "Flyt ned",
    "removeModel": "Fjern",
    "saving": "Gemmer...",
    "weighted": "Vægtet",
    "leastUsed": "Mindst brugt",
    "costOpt": "Cost-Opt",
    "strategyGuideTitle": "Sådan bruger du denne strategi",
    "strategyGuideWhen": "ANVENDELSE",
    "strategyGuideAvoid": "Undgå når",
    "strategyGuideExample": "Eksempel",
    "strategyGuide": {
      "priority": {
        "when": "Du har én foretrukken model og ønsker kun at falde tilbage på fejl.",
        "avoid": "Du skal anmode om fordeling på tværs af modeller.",
        "example": "Primær kodningsmodel med billigere backup for nedbrud."
      },
      "weighted": {
        "when": "Du har brug for kontrolleret trafik fordelt på modeller.",
        "avoid": "Du kan ikke opretholde nøjagtige vægte over tid.",
        "example": "80% stabil model + 20% kanariefugl model udrulning."
      },
      "round-robin": {
        "when": "Du ønsker forudsigelig og jævn fordeling.",
        "avoid": "Modeller afviger for meget i latens eller omkostninger.",
        "example": "Samme model på flere konti for at sprede gennemløb."
      },
      "random": {
        "when": "Du ønsker enkel distribution med minimal opsætning.",
        "avoid": "Du har brug for strenge trafikgarantier.",
        "example": "Hurtig prototyping med ækvivalente modeller."
      },
      "least-used": {
        "when": "Du vil have adaptiv balancering baseret på live-efterspørgsel.",
        "avoid": "Trafikken er for lav til at drage fordel af brugsbalancering.",
        "example": "Blandede arbejdsbelastninger, hvor en model ofte bliver overbelastet."
      },
      "cost-optimized": {
        "when": "Omkostningsreduktion er din højeste prioritet.",
        "avoid": "Prissætningsdata mangler eller er forældede.",
        "example": "Baggrunds- eller batchjob, hvor lavere omkostninger foretrækkes."
      },
      "reset-aware": {
        "when": "Du ruter på tværs af flere konti med kvotetelemetri og forskellige nulstillingsvinduer.",
        "avoid": "Kvotetelemetri er ikke tilgængelig for de fleste konti.",
        "example": "Foretrækker en 60 % ugentlig kontonulstilling i morgen frem for en 80 % kontonulstilling senere."
      },
      "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": "Bruges, når du vil opbruge en udbyders kvote fuldt ud, før du går videre til den næste.",
        "avoid": "Undgå, når du har brug for belastningsbalancering på anmodningsniveau på tværs af udbydere.",
        "example": "Eksempel: Brug alle $200 Deepgram-kreditter, før du falder tilbage til Groq."
      },
      "auto": {
        "when": "Brug, når du har brug for multi-faktor scoring routing baseret på omkostninger, latens og kvalitet.",
        "avoid": "Undgå, når du har brug for streng prioriteringsbestilling eller historisk vedholdenhed.",
        "example": "Eksempel: Balancere anmodninger på tværs af modeller med forskellige styrker."
      },
      "lkgp": {
        "when": "Brug, når du vil rute baseret på historiske succesrater og ydeevne.",
        "avoid": "Undgå, når historiske data er begrænsede eller upålidelige.",
        "example": "Eksempel: Vej til modeller med en god track record på specifikke opgaver."
      },
      "context-optimized": {
        "when": "Brug, når du har brug for at optimere brugen af kontekstvindue på tværs af modeller.",
        "avoid": "Undgå, når modeller har lignende kontekstlængder eller opgaver er enkle.",
        "example": "Eksempel: Fordel lange samtaler på tværs af modeller med større kontekstvinduer."
      }
    },
    "advancedHelp": {
      "maxRetries": "Hvor mange forsøg der forsøges igen, før en anmodning mislykkes.",
      "retryDelay": "Indledende ventetid mellem genforsøg. Højere værdier reducerer sprængningstrykket.",
      "timeout": "Maksimal anmodningsvarighed før afbrydelse.",
      "healthcheck": "Skipper usunde modeller/udbydere fra dirigeringsbeslutninger.",
      "concurrencyPerModel": "Maks. tilladte samtidige anmodninger pr. model i round-robin.",
      "queueTimeout": "Hvor længe en anmodning kan vente i kø, før den udløber.",
      "failoverBeforeRetry": "Når den er aktiveret, udløser enhver upstream-fejl øjeblikkelig failover til det næste kombinationsmål, hvorved alle genforsøg og reserve-URL'er springes over.",
      "maxSetRetries": "Antallet af gange at prøve det fulde målsæt igen, når hvert mål mislykkes. 0 = ingen genforsøg på indstillet niveau.",
      "setRetryDelayMs": "Forsinkelse mellem genforsøg på sæt-niveau, hvilket giver forbigående problemer tid til at løse."
    },
    "templatesTitle": "Hurtige skabeloner",
    "templatesDescription": "Anvend en startprofil, og juster derefter modeller og konfiguration.",
    "templateApply": "Anvend skabelon",
    "templateHighAvailability": "Høj tilgængelighed",
    "templateHighAvailabilityDesc": "Prioriteret routing med sundhedstjek og sikre forsøg.",
    "templateCostSaver": "Omkostningsbesparende",
    "templateCostSaverDesc": "Omkostningsoptimeret routing til budget-første arbejdsbelastning.",
    "templateBalanced": "symmetrisk belastning",
    "templateBalancedDesc": "Minst anvendte routing for at sprede efterspørgslen over tid.",
    "usageGuideHide": "Skjul",
    "usageGuideDontShowAgain": "Vis ikke dette igen",
    "usageGuideShow": "Vis guide",
    "quickTestTitle": "Kombination klar til validering",
    "quickTestDescription": "Kør en test nu for at bekræfte fallback og latensadfærd.",
    "testNow": "Test Nu",
    "pricingCoverage": "Prisdækning",
    "pricingCoverageHint": "Omkostningsoptimeret fungerer bedst, når alle kombinationsmodeller har priser.",
    "pricingAvailable": "Prissætning tilgængelig",
    "pricingMissing": "Ingen prissætning",
    "pricingAvailableShort": "Det er mere forankret i den reelle situati­",
    "pricingMissingShort": "ingen pris",
    "warningRoundRobinSingleModel": "Round-robin er mest nyttig med mindst 2 modeller.",
    "warningCostOptimizedPartialPricing": "Kun {priced} af {total}-modeller har priser. Routing kan være delvist omkostningsbevidst.",
    "warningCostOptimizedNoPricing": "Der blev ikke fundet nogen prisdata for denne kombination. Omkostningsoptimeret kan rute uventet.",
    "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": "Klar til at spare?",
    "readinessDescription": "Gennemgå tjeklisten, før du opretter eller opdaterer denne kombination.",
    "readinessCheckName": "Kombinationsnavnet er gyldigt",
    "readinessCheckModels": "Der er valgt mindst én model",
    "readinessCheckWeights": "Vægtet total er 100 %",
    "readinessCheckWeightsOptional": "Vægtregel ikke påkrævet",
    "readinessCheckPricing": "Prisdata er tilgængelige",
    "readinessCheckPricingOptional": "Reglen om prissætning er ikke påkrævet",
    "saveBlockedTitle": "Gem er blokeret, indtil følgende elementer er rettet:",
    "saveBlockName": "Definer et kombinationsnavn.",
    "saveBlockModels": "Tilføj mindst én model.",
    "saveBlockWeighted": "Indstil vægte til 100 % (aktuelt: {total}%).",
    "saveBlockPricing": "Tilføj priser for mindst én model, eller vælg en anden strategi.",
    "recommendationsLabel": "Recommended setup",
    "applyRecommendations": "Apply recommendations",
    "recommendationsUpdated": "Recommendations updated for {strategy}.",
    "recommendationsApplied": "Recommendations applied to this combo.",
    "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": "Fail-safe baseline",
        "description": "Use one primary model and keep fallback chain short and reliable.",
        "tip1": "Put your most reliable model first.",
        "tip2": "Keep 1-2 backup models with similar quality.",
        "tip3": "Use safe retries to absorb transient provider failures."
      },
      "weighted": {
        "title": "Controlled traffic split",
        "description": "Great for canary rollouts and gradual migration between models.",
        "tip1": "Start with conservative split like 90/10.",
        "tip2": "Keep the total at 100% and auto-balance after changes.",
        "tip3": "Monitor success and latency before increasing canary weight."
      },
      "round-robin": {
        "title": "Predictable load sharing",
        "description": "Best when models are equivalent and you need smooth distribution.",
        "tip1": "Use at least 2 models.",
        "tip2": "Set concurrency limits to avoid burst overload.",
        "tip3": "Use queue timeout to fail fast under saturation."
      },
      "random": {
        "title": "Quick spread with low setup",
        "description": "Use when you need simple distribution without strict guarantees.",
        "tip1": "Use models with similar latency profiles.",
        "tip2": "Keep retries enabled to absorb random misses.",
        "tip3": "Prefer this for experimentation, not strict SLAs."
      },
      "least-used": {
        "title": "Adaptive balancing",
        "description": "Routes to less-used models to reduce hotspots over time.",
        "tip1": "Works better under continuous traffic.",
        "tip2": "Combine with health checks for safer balancing.",
        "tip3": "Track per-model usage to validate distribution gains."
      },
      "cost-optimized": {
        "title": "Budget-first routing",
        "description": "Routes to lower-cost models when pricing metadata is available.",
        "tip1": "Ensure pricing coverage for all selected models.",
        "tip2": "Keep a quality fallback for hard prompts.",
        "tip3": "Use for batch/background jobs where cost is the main KPI."
      },
      "reset-aware": {
        "title": "Nulstil-bevidst kontorotation",
        "description": "Balancerer resterende udbyderkvote mod nulstillingstid.",
        "tip1": "Brug eksplicitte kontotrin eller konto-tag-routing for udbydere med kvotetelemetri.",
        "tip2": "Juster session versus ugentlige vægte, når kortvarig udmattelse er mere risikabelt.",
        "tip3": "Hold bindebåndet lille, så tilsvarende konti stadig roterer nogenlunde."
      },
      "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": "Udstødningsudbyderkvoter sekventielt, før de falder tilbage.",
        "tip1": "Bruges til kvotebaseret routing med tydelige reservekæder.",
        "tip2": "Indstil kvoter nøjagtigt for at undgå for tidlig fallback.",
        "tip3": "Fungerer bedst med udbydere, der tilbyder gratis niveauer eller kreditspande.",
        "title": "Kvoteudmattelse"
      },
      "auto": {
        "description": "Rute baseret på realtidsscoring for omkostninger, latens, kvalitet og sundhed.",
        "tip1": "Lad motoren afbalancere flere faktorer automatisk.",
        "tip2": "Overvåg, hvilke faktorer der driver routingbeslutninger i logfiler.",
        "tip3": "Bruges til komplekse arbejdsbelastninger, hvor ingen enkelt faktor dominerer.",
        "title": "Multi-faktor optimering"
      },
      "lkgp": {
        "description": "Rute baseret på historisk præstation og succesmønstre.",
        "tip1": "Kræver tilstrækkelig anmodningshistorik for nøjagtige forudsigelser.",
        "tip2": "God til arbejdsbelastninger med ensartede modelpræstationsmønstre.",
        "tip3": "Overvåg forudsigelsesnøjagtighed og juster vægte efter behov.",
        "title": "Historik-baseret routing"
      },
      "context-optimized": {
        "description": "Optimer routing baseret på kontekstvinduebrug og tokeneffektivitet.",
        "tip1": "Led lange samtaler til modeller med større kontekstvinduer.",
        "tip2": "Overvåg kontekstbrug for at undgå token-spild.",
        "tip3": "Bedst til konversations-AI, der kræver omfattende kontekstbevarelse.",
        "title": "Kontekstoptimering"
      },
      "context-relay": {
        "description": "Bedst når kontorotation forventes, og den næste konto skal arve en forenklet opgaveoversigt.",
        "tip1": "Brug med udbydere, der roterer konti for samme modelfamilie.",
        "tip2": "Indstil overdragelsesgrænsen under hårde kvotegrænser for opsummerende genereringstid.",
        "tip3": "Indstil kun en dedikeret opsummeringsmodel, hvis den primære er for dyr eller ustabil.",
        "title": "Sessionskontinuitetsprioritet"
      },
      "p2c": {
        "description": "Rute til udbyderen med den laveste aktuelle belastning baseret på realtidsmålinger.",
        "tip1": "Overvåg udbyderens helbredsmålinger for nøjagtig belastningsvurdering.",
        "tip2": "Fungerer bedst med homogene udbyderpuljer.",
        "tip3": "Juster følsomheden for at undgå svingninger under trafikstigninger.",
        "title": "Power of Two Choices"
      }
    },
    "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": "Dette nøjagtige trin for udbyder/model/konto er allerede i kombinationen.",
    "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": "Gennemfør hvert trin for at definere kombinationer, bygge trin, vælge routingstrategi og gennemgå resultater.",
    "builderStepsDescription": "Byg hvert kombinationstrin i rækkefølge: udbyder, model og derefter konto. Dette gør det muligt at genbruge den samme udbyder og model på tværs af forskellige konti.",
    "selectProvider": "Vælg udbyder",
    "selectProviderPlaceholder": "Vælg en udbyder",
    "selectModel": "Vælg Model",
    "selectModelPlaceholder": "Vælg først en udbyder",
    "selectAccount": "Vælg Konto",
    "selectComboToReference": "Vælg combo til reference",
    "comboReference": "Combo reference",
    "addComboReference": "Tilføj Combo Reference",
    "addStepBeforeContinue": "Tilføj venligst mindst ét trin, før du fortsætter til næste trin.",
    "previewNextStep": "Forhåndsvisning af næste trin",
    "autoSelectAccount": "Vælg automatisk konto ved kørsel",
    "modePackBalanced": "Balanceret",
    "modePackBudget": "Budget",
    "modePackPerformance": "Ydeevne",
    "modePackCustom": "Brugerdefineret",
    "browseLegacyCatalog": "Gennemse det gamle kombinationskatalog",
    "agentFeaturesTitle": "Agent funktioner",
    "agentFeaturesDescription": "Aktiver avancerede funktioner for agenter, der bruger denne kombination",
    "agentFeaturesSystemMessageOverride": "Tilsidesæt systemmeddelelse",
    "agentFeaturesSystemMessagePlaceholder": "Du er en ekspert assistent...",
    "agentFeaturesSystemMessageHint": "Systemmeddelelse tilsidesættelse for agenter",
    "agentFeaturesToolFilterRegex": "/regex-pattern/",
    "agentFeaturesToolFilterHint": "Værktøjsfilter regex for agenter",
    "agentFeaturesContextCacheHint": "Aktiver in-context cache for agentværktøjer",
    "agentFeaturesContextCacheProtection": "Beskyt cachen mod agentværktøjsmutationer",
    "agentFeaturesContextLength": "Kontekstlængde",
    "agentFeaturesContextLengthPlaceholder": "f.eks. 128000",
    "agentFeaturesContextLengthHint": "Definerer kontekstvinduet for denne kombination i /v1/models.",
    "agentFeaturesContextLengthErrorInteger": "Kontekstlængden skal være et gyldigt heltal",
    "agentFeaturesContextLengthErrorRange": "Kontekstlængden skal være mellem 1000 og 2000000",
    "compressionOverride": "Tilsidesættelse af kompression",
    "modePack": "Mode-pakke"
  },
  "costs": {
    "title": "Omkostninger",
    "pageDescription": "Spor udgifter, analyser tendenser, og administrer dit AI-budget på tværs af alle udbydere",
    "overview": "Oversigt",
    "budget": "Budget",
    "totalCost": "Samlede omkostninger",
    "breakdown": "Omkostningsfordeling",
    "noData": "Ingen omkostningsdata",
    "byModel": "Efter model",
    "byProvider": "Af udbyder",
    "range7d": "7 dage",
    "range30d": "30 dage",
    "range90d": "90 dage",
    "rangeAll": "Alle Tider",
    "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": "Tokenbrug",
    "totalTokens": "Samlede tokens",
    "inputTokens": "Indtast tokens",
    "outputTokens": "Output tokens",
    "inputOutputRatio": "Input/output-forhold",
    "tokens": "tokens",
    "routingEfficiency": "Routing effektivitet",
    "fallbackCount": "Fallback-anmodninger",
    "fallbackRate": "Fallback rate",
    "modelCoverage": "Modeldækning",
    "modelCoverageDesc": "% af anmodninger med eksplicit model",
    "outOfRequests": "ud af {total} anmodninger",
    "costByApiKey": "Pris efter API-nøgle",
    "costByAccount": "Omkostninger efter konto",
    "apiKeyName": "API nøgle",
    "account": "Konto",
    "requests": "Forespørgsler",
    "cost": "Omkostninger",
    "dayStreak": "dagsrække",
    "weeklyUsagePattern": "Ugentligt brugsmønster",
    "activityHeatmap": "Aktivitet (365 dage)",
    "less": "Mindre",
    "more": "Mere",
    "monthlyForecast": "Månedlig prognose",
    "forecastBasis": "Baseret på de seneste {days} dage",
    "avgDailyCost": "Gns. daglige omkostninger",
    "daysRemaining": "{days} dage tilbage",
    "periodComparison": "Periode sammenligning",
    "previousPeriod": "Forrige halvdel",
    "currentPeriod": "Nuværende halvdel",
    "exportCSV": "Eksporter som CSV",
    "exportJSON": "Eksporter som JSON",
    "legacyFreeLabel": "__MISSING__:Legacy / Free",
    "costExplorerTitle": "Omkostningsudforsker",
    "costExplorerDescription": "Udforsk forbrug efter udbyder, model, API-nøgle, konto eller serviceniveau.",
    "groupProvider": "Udbyder",
    "groupModel": "Modeltype",
    "groupApiKey": "API-nøgle",
    "groupAccount": "Konto",
    "groupServiceTier": "Serviceniveau",
    "serviceTierFast": "__MISSING__:Fast",
    "serviceTierFlex": "__MISSING__:Flex",
    "serviceTierStandard": "__MISSING__:Standard",
    "serviceTierBreakdownTitle": "__MISSING__:Service Tier",
    "serviceTierBreakdownSubtitle": "__MISSING__:Fast / Flex / Standard split",
    "serviceTierUsageSaved": "__MISSING__:usage saved",
    "serviceTierCostSaved": "__MISSING__:saved",
    "serviceTierCostShareSuffix": "__MISSING__:of cost",
    "dimension": "Analysefelt",
    "share": "Andel",
    "legacyOrFree": "Ældre / gratis",
    "filterRows": "Filtrer rækker…",
    "filterCostExplorerRows": "Filtrer rækker i omkostningsudforsker",
    "noMatchingCostRows": "Ingen matchende omkostningsrækker",
    "noMatchingCostRowsDescription": "Juster søgeteksten, grupperingen eller det valgte tidsvindue.",
    "showingCostRows": "Viser {shown} af {total} matchende rækker.",
    "showingTopCostRows": "Viser {shown} af {total} matchende rækker (top 50)."
  },
  "endpoint": {
    "title": "API-endepunkt",
    "available": "Tilgængelige endepunkter",
    "cloudProxy": "Cloud proxy",
    "disableConfirm": "Er du sikker på, at du vil deaktivere cloud-proxy?",
    "baseUrl": "Basis URL",
    "apiKeyLabel": "API nøgle",
    "registeredKeys": "Registrerede nøgler",
    "chatCompletions": "Chatafslutninger",
    "responses": "Svar",
    "listModels": "Liste over modeller",
    "usingCloudProxy": "Brug af Cloud Proxy",
    "usingLocalServer": "Brug af lokal server",
    "machineId": "Maskin-id: {id}...",
    "disableCloud": "Deaktiver Cloud",
    "enableCloud": "Aktiver Cloud",
    "modelsAcrossEndpoints": "{models} modeller på tværs af {endpoints} slutpunkter",
    "loadingModels": "Loading available models...",
    "chatDesc": "Streaming og ikke-streaming chat med alle udbydere",
    "embeddings": "Indlejringer",
    "embeddingsDesc": "Tekstindlejringer til søge- og RAG-pipelines",
    "imageGeneration": "Billedgenerering",
    "imageDesc": "Generer billeder fra tekstprompter",
    "rerank": "Genranger",
    "rerankDesc": "Genranger dokumenter efter relevans for en forespørgsel",
    "audioTranscription": "Lydtransskription",
    "audioTranscriptionDesc": "Transskriber lydfiler til tekst (Whisper)",
    "textToSpeech": "Tekst til tale",
    "textToSpeechDesc": "Konverter tekst til naturligt klingende tale",
    "musicGeneration": "Music Generation",
    "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)",
    "moderations": "Moderationer",
    "moderationsDesc": "Indholdsmoderering og sikkerhedsklassificering",
    "responsesDesc": "OpenAI Responses API for Codex and advanced agentic workflows",
    "listModelsDesc": "List all available models across all connected providers",
    "settingsApiDesc": "Read and modify OmniRoute configuration via API",
    "settingsApi": "Settings API",
    "categoryCore": "Kerne-API'er",
    "categoryMedia": "Medier & Multi-Modal",
    "categorySearch": "Search & Discovery",
    "categoryUtility": "Værktøjer & Administration",
    "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": "Aktiver Cloud Proxy",
    "whatYouGet": "Hvad du får",
    "cloudBenefitAccess": "Få adgang til din API fra hvor som helst i verden",
    "cloudBenefitShare": "Del nemt slutpunkt med dit team",
    "cloudBenefitPorts": "Ingen grund til at åbne porte eller konfigurere firewall",
    "cloudBenefitEdge": "Hurtigt globalt kantnetværk",
    "cloudSessionNote": "Cloud beholder din godkendelsessession i 1 dag. Hvis den ikke bruges, slettes den automatisk.",
    "cloudUnstableNote": "Cloud er i øjeblikket ustabil med Claude Code OAuth i nogle tilfælde.",
    "cloudConnected": "Cloud Proxy tilsluttet!",
    "connectingToCloud": "Opretter forbindelse til skyen...",
    "verifyingConnection": "Bekræfter forbindelse...",
    "connecting": "Opretter forbindelse...",
    "verifying": "Bekræfter...",
    "connected": "Forbundet!",
    "disableCloudTitle": "Deaktiver Cloud Proxy",
    "disableWarning": "Alle godkendelsessessioner vil blive slettet fra skyen.",
    "syncingData": "Synkroniserer seneste data...",
    "disablingCloud": "Deaktiverer skyen...",
    "syncing": "Synkroniserer...",
    "disabling": "Deaktiverer...",
    "cloudConnectedVerified": "Cloud Proxy tilsluttet og verificeret!",
    "connectedVerificationPending": "Forbundet — bekræftelse afventer",
    "connectedVerificationPendingWithError": "Forbundet — bekræftelse afventer: {error}",
    "cloudDisabledSuccess": "Cloud deaktiveret",
    "syncedSuccess": "Synkroniseret med succes",
    "failedDisable": "Skyen kunne ikke deaktiveres",
    "failedEnable": "Skyen kunne ikke aktiveres",
    "cloudRequestTimeout": "Timeout for skyanmodning",
    "cloudRequestFailed": "Cloud-anmodning mislykkedes",
    "cloudWorkerUnreachable": "Kunne ikke nå cloud worker. Sørg for, at skytjenesten kører (npm kør dev i /cloud).",
    "connectionFailed": "Forbindelsen mislykkedes",
    "syncFailed": "Kunne ikke synkronisere skydata",
    "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} — Modeller",
    "noModelsForProvider": "Ingen tilgængelige modeller for denne udbyder.",
    "chat": "Chat",
    "embedding": "Indlejring",
    "image": "Billede",
    "custom": "skik",
    "modelsCount": "{count, plural, one {# model} other {# models}}",
    "sectionTitle": "Integrationsoverflade",
    "sectionDescription": "OpenAI-kompatible API'er og operationelle protokolendepunkter",
    "tabApis": "OpenAI-kompatible API'er",
    "tabProtocols": "Protokoller",
    "tabsAria": "Endepunktsafsnit",
    "protocolsTitle": "Protokoller",
    "protocolsDescription": "MCP og A2A er førsteklasses endepunkter med dedikeret observerbarhed og kontroller.",
    "mcpCardTitle": "MCP-server",
    "mcpCardDescription": "Modelkontekstprotokol over stdio",
    "a2aCardTitle": "A2A-server",
    "a2aCardDescription": "Agent2Agent JSON-RPC-endepunkt",
    "protocolToolsLabel": "Værktøjer",
    "protocolTasksLabel": "Opgaver",
    "protocolActiveStreamsLabel": "Aktive streams",
    "protocolLastActivity": "Seneste aktivitet",
    "quickStart": "Kom hurtigt i gang",
    "openMcpDashboard": "Åbn MCP-administration",
    "openA2aDashboard": "Åbn A2A-administration",
    "mcpQuickStartTitle": "Hurtig start",
    "mcpQuickStartStep1": "Kør MCP-serveren via`omniroute --mcp`.",
    "mcpQuickStartStep2": "Konfigurer din MCP-klient til at forbinde over stdio-transport.",
    "mcpQuickStartStep3": "Påkald værktøjer som `omniroute_get_health` og `omniroute_list_combos`.",
    "a2aQuickStartTitle": "Hurtig start",
    "a2aQuickStartStep1": "Find agentkortet på`/.well-known/agent.json`.",
    "a2aQuickStartStep2": "Send JSON-RPC-anmodninger til`POST /a2a`vedhjælp af `message/send` eller `message/stream`.",
    "a2aQuickStartStep3": "Spor og kontroller opgaver ved hjælp af `tasks/get` og `tasks/cancel`.",
    "completionsLegacy": "Completions (Legacy)",
    "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format",
    "messagesApi": "Beskeder",
    "messagesApiDesc": "Native Anthropic Messages API-format til Claude-kompatible udbydere",
    "imageEdits": "Billedredigeringer",
    "imageEditsDesc": "Rediger og modificer eksisterende billeder med AI (inpainting, outpainting, variationer)",
    "batchApi": "Batch API",
    "batchApiDesc": "Behandle store partier af anmodninger asynkront (OpenAI-kompatibel)",
    "filesApi": "Filer API",
    "filesApiDesc": "Upload og administrer filer til batchbehandling",
    "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-adgangskode (påkrævet på macOS/Linux)",
    "ngrokTitle": "ngrok tunnel",
    "ngrokRunning": "Løb",
    "ngrokStarting": "Starter",
    "ngrokStoppedState": "Stoppet",
    "ngrokNeedsAuth": "Behøver Auth",
    "ngrokNotInstalled": "Ikke installeret",
    "ngrokUnsupported": "Ikke understøttet",
    "ngrokError": "Fejl",
    "ngrokEnable": "Aktiver Tunnel",
    "ngrokDisable": "Stop Tunnel",
    "ngrokUrlNotice": "Opretter en offentlig ngrok-tunnel.",
    "ngrokAuthTokenLabel": "Authtoken (påkrævet, hvis NGROK_AUTHTOKEN ikke er indstillet)",
    "ngrokAuthTokenPlaceholder": "Indtast din ngrok-godkendelse",
    "ngrokLastError": "Sidste fejl: {error}",
    "ngrokStarted": "ngrok-tunnelen startede",
    "ngrokStopped": "ngrok tunnel stoppet",
    "ngrokRequestFailed": "Kunne ikke opdatere ngrok-tunnelen",
    "tokenSaverSubtitle": "Brug færre tokens på hver anmodning.",
    "tokenSaverToolOutput": "Værktøjs output",
    "tokenSaverLlmOutput": "LLM output",
    "tokenSaverInputCompression": "Input komprimering",
    "apiEndpointsCatalogUnavailable": "API-katalog er ikke tilgængeligt",
    "apiEndpointsSearchPlaceholder": "Søg efter slutpunkter...",
    "apiEndpointsRequiresAuth": "Kræver auth",
    "apiEndpointsNoMatch": "Ingen endepunkter matcher dit filter",
    "localServer": "Lokal server",
    "cloudOmniroute": "Cloud OmniRoute",
    "copyUrl": "Kopiér URL",
    "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 Endpoints",
    "apiEndpointsTitle": "API Endpoints",
    "apiEndpointsDescription": "Backend API endpoints that can be consumed by other applications and services. This section will list all available REST APIs with documentation and testing capabilities.",
    "comingSoon": "Coming Soon",
    "plannedFeatures": "Planned Features",
    "featureRestApi": "REST API endpoint catalog with interactive documentation",
    "featureWebhooks": "Webhook configuration and event subscriptions",
    "featureSwagger": "OpenAPI / Swagger spec auto-generation",
    "featureAuth": "API key and OAuth scope management per endpoint"
  },
  "mcpDashboard": {
    "loading": "Indlæser MCP-dashboard...",
    "activate": "aktivér",
    "deactivate": "deaktiver",
    "confirmSwitchCombo": "Bekræft {action} combo \"{combo}\"?",
    "switchComboFailed": "Kunne ikke skifte kombinationstilstand.",
    "switchComboSuccess": "Kombinationen \"{combo}\" er opdateret.",
    "confirmApplyProfile": "Vil du anvende modstandsdygtighedsprofilen \"{profile}\"?",
    "applyProfileFailed": "Kunne ikke anvende modstandsdygtighedsprofil.",
    "applyProfileSuccess": "Profil \"{profile}\" er anvendt.",
    "confirmResetBreakers": "Nulstil alle afbrydere?",
    "resetBreakersFailed": "Kunne ikke nulstille afbrydere.",
    "resetBreakersSuccess": "Afbrydere nulstilles.",
    "processStatus": "Processtatus.",
    "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": "Kopiér URL",
    "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": "Underlivsbetaendelse",
    "sessionUptime": "Sessionens oppetid",
    "lastHeartbeat": "Sidste hjerteslag",
    "activity24h": "Aktivitet (24 timer)",
    "totalCalls": "Samlede kald",
    "successRate": "54 IE/kg)",
    "avgLatency": "Gns. ventetid",
    "topTools": "Topværktøjer",
    "noToolCalls24h": "Ingen værktøjsopkald inden for de sidste 24 timer.",
    "runtimeDetails": "Kørselsoplysninger",
    "transport": "Transport",
    "scopesEnforced": "Omfang håndhævet",
    "yes": "ja",
    "no": "nej",
    "lastCall": "Sidste opkald",
    "heartbeatPath": "Hjerteslagssti",
    "operationalControls": "Driftskontrol",
    "switchCombo": "Skift combo",
    "inactive": "inaktiv",
    "active": "aktiv",
    "activateCombo": "Aktiver combo",
    "deactivateCombo": "Deaktiver combo",
    "applyResilienceProfile": "Anvend modstandsdygtighedsprofil",
    "profileAggressive": "aggressive",
    "profileBalanced": "afbalanceret",
    "profileConservative": "konservative",
    "applyProfile": "Anvend profil",
    "resetCircuitBreakers": "Nulstil afbrydere",
    "resetCircuitBreakersHelp": "Rydder den aktuelle afbrydertilstand og fejltællere for udbydere.",
    "resetAllBreakers": "Nulstil alle afbrydere",
    "toolsAndScopes": "Værktøjer og scopes",
    "tableTool": "Værktøj",
    "tableScopes": "Omfang",
    "tablePhase": "Fase",
    "tableAudit": "Revision",
    "auditLog": "Revisionslog",
    "auditSummary": "Opkald: {total} | side {page} af {totalPages}",
    "allTools": "Alle værktøjer",
    "allResults": "Alle resultater",
    "success": "Succes",
    "failure": "Fejl",
    "apiKeyIdPlaceholder": "apiKeyId",
    "loadingAuditEntries": "Indlæser revisionsposter...",
    "noAuditEntriesForFilters": "Ingen revisionsposter fundet for aktuelle filtre.",
    "tableTimestamp": "Tidsstempel",
    "tableDuration": "Varighed",
    "tableResult": "Resultat",
    "tableApiKey": "API nøgle",
    "failed": "mislykkedes",
    "previous": "Forrige",
    "next": "Næste",
    "apiKeyId": "Api Key Id",
    "offset": "Offset",
    "limit": "Limit",
    "tool": "Tool"
  },
  "a2aDashboard": {
    "loading": "Indlæser A2A-dashboard...",
    "confirmCancelTask": "Vil du annullere opgave {taskId}?",
    "cancelTaskFailed": "Opgaven kunne ikke annulleres.",
    "cancelTaskSuccess": "Opgave {taskId} annulleret.",
    "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": "Aktive streams",
    "lastTask": "Last task",
    "taskStateOverview": "Task state overview",
    "state": {
      "submitted": "submitted",
      "working": "working",
      "completed": "afsluttet",
      "failed": "mislykkedes",
      "cancelled": "annulleret"
    },
    "agentCard": "Agentkort",
    "agentCardPath": "__MISSING__:/.well-known/agent.json",
    "version": "Version",
    "url": "URL",
    "capabilities": "Evner",
    "agentCardNotAvailable": "Agentkort er ikke tilgængeligt.",
    "quickValidation": "Hurtig validering",
    "quickValidationDescription": "Udfører røgopkald gennem live `/a2a` slutpunktet.",
    "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": "Updated",
    "tableActions": "Handlinger",
    "view": "Udsigt",
    "cancel": "Ophæve",
    "previous": "Forrige",
    "next": "Næste",
    "taskDetail": "Opgavedetaljer",
    "close": "Tæt",
    "metadata": "Metadata",
    "events": "Begivenheder",
    "artifacts": "Artefakter",
    "tablePhase": "Table Phase",
    "offset": "Offset",
    "limit": "Limit",
    "skill": "Skill",
    "rpcEndpoint": "POST /a2a",
    "rpcMethodSend": "besked/send",
    "rpcMethodStream": "besked/stream",
    "rpcMethodGet": "opgaver/få",
    "rpcMethodCancel": "opgaver/annullerer",
    "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": "Rørledning OK ({latencyMs}ms)",
    "pipelineError": "Pipeline fejl",
    "healthUnknown": "Helbred ukendt",
    "checkingHealth": "Tjekker...",
    "checkHealth": "Tjek sundhed",
    "pageInfo": "Side {page} af {totalPages} ({total} i alt)",
    "previous": "Forrige",
    "next": "Næste",
    "cancel": "Annuller",
    "save": "Gem",
    "keyPlaceholder": "f.eks. bruger.præferencer.tema",
    "contentPlaceholder": "Værdi eller JSON-indhold at huske"
  },
  "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": "Filtrer færdigheder efter navn, beskrivelse eller tag",
    "allModes": "Alle tilstande",
    "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": "Skills Marketplace",
    "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": "Installer Skill"
  },
  "health": {
    "title": "Systemsundhed",
    "description": "Realtidsovervågning af din OmniRoute-instans",
    "healthy": "Sundt",
    "degraded": "Nedbrudt",
    "down": "Ned",
    "uptime": "Oppetid",
    "memory": "Hukommelse",
    "memoryRss": "Hukommelse (RSS)",
    "heap": "Dynge",
    "cpu": "CPU",
    "database": "Database",
    "version": "version",
    "lastCheck": "Sidste kontrol",
    "providerHealth": "Udbyder sundhed",
    "systemMetrics": "System Metrics",
    "tokenHealth": "Token Health",
    "refreshAll": "Opdater alle",
    "checkNow": "Tjek nu",
    "loadingHealth": "Indlæser sundhedsdata...",
    "failedToLoad": "Kunne ikke indlæse sundhedsdata: {error}",
    "retry": "Prøv igen",
    "allOperational": "Alle systemer i drift",
    "issuesDetected": "Systemproblemer opdaget",
    "updatedAt": "Opdateret {time}",
    "latency": "Latency",
    "latencyP50": "p50",
    "latencyP95": "s95",
    "latencyP99": "s99",
    "millisecondsShort": "{value}ms",
    "notAvailable": "—",
    "totalRequests": "Samlet antal anmodninger",
    "noDataYet": "Ingen data endnu",
    "promptCache": "Spørg cache",
    "entries": "Indgange",
    "hitRate": "Hitrate",
    "hitsMisses": "Hits / Misses",
    "signatureCache": "Signatur cache",
    "signatureDefaults": "Standarder",
    "signatureTool": "Værktøj",
    "signatureFamily": "Familie",
    "signatureSession": "Session",
    "recovering": "Gendannelse",
    "noCBData": "Ingen strømafbryderdata tilgængelige. Kom med nogle anmodninger først.",
    "providerHealthStatusAria": "Udbyder sundhedsstatus",
    "issuesLabel": "Problemer opdaget",
    "operational": "Operationel",
    "providers": "Udbydere",
    "configuredProvidersLabel": "Konfigureret i dashboard",
    "configuredProvidersHint": "Udbydere med legitimationsoplysninger gemt i /dashboard/udbydere, uanset køretidstilstand.",
    "activeProviders": "{count} active",
    "activeProvidersHint": "Konfigurerede udbydere, der i øjeblikket er aktiveret for routinganmodninger.",
    "monitoredProviders": "{count} monitored",
    "monitoredProvidersHint": "Udbydere, der i øjeblikket spores af strømafbryderens sundhedsmonitorer.",
    "healthyCount": "{count} sund",
    "nodeVersion": "Node {version}",
    "failures": "{count} fejl",
    "failuresPlural": "{count} fejl",
    "lastFailure": "Sidst",
    "rateLimitStatus": "Prisgrænsestatus",
    "activeLimiters": "{count} aktiv begrænser",
    "activeLimitersPlural": "{count} aktive begrænsere",
    "queued": "I kø",
    "queuedCount": "{count} i kø",
    "running": "løb",
    "runningCount": "{count} kører",
    "ok": "OK",
    "activeLockouts": "Aktive lockouts",
    "resetConfirm": "Nulstille alle afbrydere til sund tilstand? Dette vil rydde alle fejloptællinger og gendanne alle udbydere til driftsstatus.",
    "resetAllTitle": "Nulstil alle afbrydere til sund tilstand",
    "resetting": "Nulstiller...",
    "resetAll": "Nulstil alle",
    "until": "Indtil {time}",
    "limitExhausted": "Exhausted",
    "learnedFromHeaders": "Learned from headers",
    "remainingOfLimit": "{remaining}/{limit} remaining",
    "throttleStatus": "Throttle: {value}",
    "lastHeaderUpdate": "Header update: {age}",
    "databaseHealth": "Database sundhed",
    "stickyBoundSessions": "Sticky-bundne sessioner",
    "sessionsByApiKey": "Sessioner efter API-nøgle",
    "noActiveSessionsTracked": "Ingen aktive sessioner sporet endnu.",
    "noSessionQuotaMonitorsActive": "Ingen sessionskvotemonitorer er aktive.",
    "gracefulDegradationStatus": "Yndefuld nedbrydningsstatus",
    "additionalModels": "+{count} flere modeller",
    "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": "System telemetri",
    "description": "Rullende anmodnings-, runtime-, sessions- og hukommelsessignaler fra denne OmniRoute-proces.",
    "uptime": "Oppetid",
    "totalRequests": "Samlet antal anmodninger",
    "avgLatency": "Gns. latens",
    "errorRate": "Fejlrate",
    "activeConnections": "Aktive forbindelser",
    "memoryUsage": "Hukommelsesbrug",
    "latencyTrend": "Latency trend",
    "throughputTrend": "Gennemstrømningstendens",
    "memoryTrend": "Hukommelsestendens",
    "refresh": "Opdater",
    "updatedAt": "Opdateret {time}",
    "loadFailed": "Telemetri kunne ikke indlæses.",
    "partialData": "Telemetri er delvist tilgængelig: {error}"
  },
  "mitm": {
    "title": "MITM Proxy",
    "description": "Gennemsigtig proxy til at opsnappe og dirigere klientanmodninger.",
    "enable": "Aktiver MITM Proxy",
    "enableDesc": "Start eller stop den lokale aflytning og DNS-tilsidesættelse.",
    "status": "Status",
    "running": "Løb",
    "stopped": "Stoppet",
    "start": "Start",
    "stop": "Stop",
    "refresh": "Opdater",
    "port": "Proxy port",
    "apiKey": "Router API nøgle",
    "apiKeyPlaceholder": "Valgfrit; falder tilbage til en lokal nøgle",
    "sudoPassword": "Sudo adgangskode",
    "cachedPassword": "Cachelagret til denne proces",
    "saveSettings": "Gem indstillinger",
    "settingsSaved": "MITM-indstillinger gemt.",
    "startedSuccess": "MITM-proxy startede.",
    "stoppedSuccess": "MITM-proxy stoppede.",
    "saveFailed": "Kunne ikke opdatere MITM-indstillinger.",
    "loadFailed": "Kunne ikke indlæse MITM-indstillinger.",
    "invalidPort": "Gennemsigtig MITM aflytning kræver i øjeblikket port 443.",
    "certificate": "CA-certifikat",
    "certificateReady": "Certifikatet er tilgængeligt for klienttillidsinstallation.",
    "certificateMissing": "Certifikatet er ikke blevet genereret endnu.",
    "available": "Tilgængelig",
    "missing": "Mangler",
    "downloadCert": "Download CA-certifikat",
    "regenerateCert": "Gendan certifikat",
    "regenerateConfirm": "Dette vil ugyldiggøre eksisterende klienttillid. Fortsætte?",
    "regenerateSuccess": "MITM certifikat regenereret.",
    "regenerateFailed": "Kunne ikke genskabe MITM-certifikatet.",
    "targetRoutes": "Målruter",
    "interceptedRequests": "Opsnappede anmodninger",
    "activeConnections": "Aktive forbindelser",
    "dnsConfigured": "DNS konfigureret",
    "pid": "PID",
    "lastIntercept": "Sidste intercept",
    "target": "Mål",
    "host": "vært",
    "localPort": "Lokal havn",
    "endpoints": "Slutpunkter",
    "enabled": "Aktiveret",
    "configured": "Konfigureret",
    "yes": "Ja",
    "no": "Nej",
    "noTargets": "Ingen målruter konfigureret."
  },
  "limits": {
    "title": "Grænser og kvoter",
    "rateLimit": "Satsgrænse",
    "remaining": "Tilbage",
    "requestsPerMinute": "Forespørgsler/min",
    "tokensPerMinute": "Poletter/min",
    "dailyLimit": "Daglig grænse"
  },
  "logs": {
    "title": "Logs",
    "requestLogs": "Anmod om logs",
    "proxyLogs": "Proxy logs",
    "auditLog": "Revisionslog",
    "console": "Konsol",
    "auditLogDesc": "Administrative handlinger og sikkerhedshændelser",
    "loading": "Indlæser...",
    "refresh": "Opdater",
    "filterByAction": "Filtrer efter handling...",
    "filterByActor": "Filtrer efter skuespiller...",
    "filterEntriesAria": "Filtrer revisionslogposter",
    "filterByActionTypeAria": "Filtrer efter handlingstype",
    "filterByActorAria": "Filtrer efter skuespiller",
    "refreshAuditLogAria": "Opdater revisionslog",
    "tableAria": "Revisionslogposter",
    "failedFetchAuditLog": "Kunne ikke hente revisionslog",
    "showing": "Viser {count} poster (offset {offset})",
    "search": "Søg",
    "timestamp": "Tidsstempel",
    "action": "Handling",
    "actor": "Skuespiller",
    "target": "Mål",
    "details": "Detaljer",
    "ipAddress": "IP-adresse",
    "notAvailable": "—",
    "noEntries": "Ingen revisionslogposter fundet",
    "previous": "Forrige",
    "next": "Næste",
    "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": "Ryd alle",
    "confirmClearActiveRequests": "Vil du slette alle aktive anmodninger?",
    "model": "Model",
    "provider": "Provider",
    "account": "Account",
    "elapsed": "Elapsed",
    "activeStage": "__MISSING__:Stage",
    "activeStageUnknown": "__MISSING__:Not sent to upstream yet",
    "activeStageRegistered": "__MISSING__:Registered",
    "activeStagePayloadPrepared": "__MISSING__:Payload prepared",
    "activeStageWaitingAccountSlot": "__MISSING__:Waiting for account slot",
    "activeStageWaitingRateLimit": "__MISSING__:Waiting for rate limiter",
    "activeStageRateLimitSlotAcquired": "__MISSING__:Rate limit slot acquired",
    "activeStageSendingToProvider": "__MISSING__:Sending to upstream",
    "activeStageProviderResponseStarted": "__MISSING__:Upstream response started",
    "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": "Velkommen",
    "security": "Sikkerhed",
    "test": "Test",
    "ready": "Klar!",
    "setPassword": "Indstil adgangskode",
    "addProvider": "Tilføj din første udbyder",
    "getStarted": "Kom i gang",
    "skip": "Spring over",
    "skipWizard": "Spring guiden helt over",
    "skipPassword": "Spring adgangskodeopsætning over",
    "skipAndContinue": "Spring over og fortsæt",
    "passwordLabel": "Adgangskode",
    "confirmPassword": "Bekræft adgangskode",
    "enterPassword": "Indtast adgangskode",
    "confirmPasswordPlaceholder": "Bekræft adgangskode",
    "passwordsMismatch": "Adgangskoder stemmer ikke overens",
    "setupComplete": "Opsætning fuldført!",
    "goToDashboard": "Gå til Dashboard →",
    "welcomeDesc": "OmniRoute er din lokale AI API-proxy. Det dirigerer anmodninger til flere AI-udbydere med belastningsbalancering, failover og brugssporing.",
    "multiProvider": "Multi-udbyder",
    "usageTracking": "Brugssporing",
    "securityDesc": "Indstil en adgangskode for at beskytte dit dashboard, eller spring over indtil videre.",
    "providerDesc": "Tilslut din første AI-udbyder. Du kan tilføje flere senere.",
    "apiKeyRequired": "API-nøgle (påkrævet)",
    "customUrlOptional": "Tilpasset webadresse (valgfrit)",
    "testDesc": "Lad os kontrollere, at din udbyderforbindelse fungerer.",
    "runTest": "Kør forbindelsestest",
    "testingConnection": "Tester forbindelse...",
    "connectionSuccessful": "Forbindelsen lykkedes! Din udbyder er klar.",
    "noProviderFound": "Ingen udbyder fundet. Du kan tilføje en fra dashboardet senere.",
    "testFailed": "Test mislykkedes, men du kan konfigurere dette senere.",
    "couldNotTest": "Kunne ikke teste lige nu. Du kan teste fra dashboardet.",
    "doneDesc": "Du er klar! Din OmniRoute-instans er konfigureret og klar til proxy AI-anmodninger.",
    "yourEndpoint": "Dit slutpunkt:",
    "continue": "Fortsæt",
    "retry": "Prøv igen",
    "failedSetPassword": "Kunne ikke indstille adgangskoden. Prøv igen.",
    "failedAddProvider": "Kunne ikke tilføje udbyder. Prøv igen.",
    "connectionError": "Forbindelsesfejl. Prøv venligst igen.",
    "provider": "Udbyder",
    "apiKeyHelp": "En API-nøgle er en adgangskode til AI-tjenester. Få en fra din udbyders websted (f.eks. platform.openai.com, console.anthropic.com).",
    "tier": {
      "subtitle": "OmniRoute organiserer udbydere i tre niveauer, så routing foretrækker den mest pålidelige, billigste vej først.",
      "tier1": {
        "label": "Premium kunder",
        "description": "Førsteklasses CLI'er med native auth-flows og ræsonneringsmodeller."
      },
      "tier2": {
        "label": "Omkostningsoptimeret",
        "description": "Billige, high-throughput-udbydere, der bruges til daglig trafik."
      },
      "tier3": {
        "label": "Fallback & specialitet",
        "description": "Lokalt hostede eller specielle slutpunkter, der bruges som fallbacks."
      },
      "configure": "Konfigurer udbydere"
    },
    "tierFlowDiagramAlt": "OmniRoute 3-tiers fallback diagram",
    "apiKeyMgmt": "API Key Mgmt"
  },
  "providers": {
    "title": "Udbydere",
    "allProviders": "Alle udbydere",
    "audioProviders": "Lydudbydere",
    "showFreeOnly": "Kun gratis",
    "addProvider": "Tilføj udbyder",
    "addFirstProvider": "Tilføj din første udbyder",
    "addFirstProviderDesc": "Tilslut en AI-udbyder for at starte routinganmodninger gennem OmniRoute. Du kan bruge gratis udbydere, API-nøgler eller OAuth-konti.",
    "learnMore": "Få flere oplysninger",
    "editProvider": "Rediger udbyder",
    "deleteProvider": "Slet udbyder",
    "noProviders": "Ingen udbydere er konfigureret",
    "modelAvailability": "Modeltilgængelighed",
    "accounts": "Regnskaber",
    "newAccount": "Ny konto",
    "deleteConfirm": "Er du sikker på, at du vil slette denne udbyder?",
    "testing": "Tester...",
    "testConnection": "Test forbindelse",
    "testSuccess": "Forbindelsen lykkedes",
    "testFailed": "Forbindelsen mislykkedes",
    "available": "Tilgængelig",
    "cooldown": "Nedkøling",
    "unavailable": "Ikke tilgængelig",
    "unknown": "Ukendt",
    "oauthLabel": "OAuth",
    "compatibleLabel": "Kompatibel",
    "chat": "Chat",
    "responses": "Svar",
    "messages": "Beskeder",
    "oauthProviders": "OAuth-udbydere",
    "freeProviders": "Gratis udbydere",
    "apiKeyProviders": "API-nøgleudbydere",
    "compatibleProviders": "API Key-kompatible udbydere",
    "testAll": "Test alle",
    "testAllOAuth": "Test alle OAuth-forbindelser",
    "testAllFree": "Test alle gratis forbindelser",
    "testAllApiKey": "Test alle API-nøgleforbindelser",
    "testAllCompatible": "Test alle kompatible forbindelser",
    "connected": "{count} Forbundet",
    "errorCount": "{count} Fejl ({code})",
    "errorCountNoCode": "{count} Fejl",
    "warningCount": "{count} Advarsel",
    "noConnections": "Ingen forbindelser",
    "expiredBadge": "Expired",
    "expiringSoonBadge": "Expiring Soon",
    "freeTier": "Gratis niveau",
    "freeTierAvailable": "Gratis niveau tilgængelig",
    "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": "Forældet",
    "deprecatedProvider": "Denne udbyder er blevet udfaset",
    "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": "Deaktiveret",
    "enableProvider": "Aktiver udbyder",
    "disableProvider": "Deaktiver udbyder",
    "testResults": "Testresultater",
    "noCompatibleYet": "Ingen kompatible udbydere tilføjet endnu",
    "compatibleHint": "Brug knapperne ovenfor til at tilføje OpenAI- eller Anthropic-kompatible slutpunkter",
    "addOpenAICompatible": "Tilføj OpenAI-kompatibel",
    "addAnthropicCompatible": "Tilføj Antropisk kompatibel",
    "addNewProvider": "Tilføj ny udbyder",
    "backToProviders": "Tilbage til Udbydere",
    "configureNewProvider": "Konfigurer en ny AI-udbyder til brug med dine applikationer.",
    "providerLabel": "Udbyder",
    "selectProvider": "Vælg en udbyder",
    "selectedProvider": "Udvalgt udbyder",
    "authMethod": "Autentificeringsmetode",
    "apiKeyLabel": "API nøgle",
    "apiKeyRequired": "API-nøgle er påkrævet",
    "selectProviderRequired": "Vælg venligst en udbyder",
    "enterApiKey": "Indtast din API-nøgle",
    "apiKeySecure": "Din API-nøgle vil blive krypteret og opbevaret sikkert.",
    "oauth2Connect": "Opret forbindelse til OAuth2",
    "oauth2Label": "OAuth2",
    "oauth2Desc": "Tilslut din konto ved hjælp af OAuth2-godkendelse.",
    "displayName": "Vist navn",
    "displayNamePlaceholder": "f.eks. Production API, Dev Environment",
    "displayNameHint": "Valgfrit. Et venligt navn til at identificere denne konfiguration.",
    "active": "Aktiv",
    "activeDescription": "Aktiver denne udbyder til brug i dine applikationer",
    "cancel": "Annuller",
    "createProvider": "Opret udbyder",
    "failedCreate": "Kunne ikke oprette udbyder",
    "errorOccurred": "Der opstod en fejl. Prøv venligst igen.",
    "modelStatus": "Modelstatus",
    "showConfiguredOnly": "Configured only",
    "allModelsOperational": "Alle modeller i drift",
    "modelsWithIssues": "{count} model(er) med problemer",
    "allModelsNormal": "Alle modeller reagerer normalt.",
    "cooldownCleared": "Nedkøling ryddet for {model}",
    "failedClearCooldown": "Kunne ikke rydde nedkøling",
    "loadingAvailability": "Indlæser modeltilgængelighed...",
    "clearCooldown": "Ryd",
    "clearing": "Rydder...",
    "until": "Indtil {time}",
    "providerTestFailed": "Providertest mislykkedes",
    "providerTestTimeout": "Provider test timed out — too many connections to test at once",
    "modeTest": "{mode} Test",
    "passedCount": "{count} bestået",
    "failedCount": "{count} mislykkedes",
    "testedCount": "{count} testet",
    "millisecondsAbbr": "{value}ms",
    "okShort": "OK",
    "errorShort": "FEJL",
    "noActiveConnectionsInGroup": "Der blev ikke fundet nogen aktive forbindelser til denne gruppe.",
    "allTestsPassed": "Alle {total} tests bestået",
    "testSummary": "{passed}/{total} bestået, {failed} mislykkedes",
    "nameLabel": "Navn",
    "prefixLabel": "Præfiks",
    "baseUrlLabel": "Basis URL",
    "apiTypeLabel": "API type",
    "prefixHint": "Påkrævet. Unikt præfiks for modelnavne.",
    "nameHint": "Påkrævet. En venlig etiket til denne node.",
    "baseUrlHint": "Påkrævet.  Udbyder API base URL.",
    "anthropicPrefixPlaceholder": "ac-prod",
    "openaiPrefixPlaceholder": "oc-prod",
    "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1",
    "openaiBaseUrlPlaceholder": "https://api.openai.com/v1",
    "validateConnection": "Bekræft forbindelsen",
    "validating": "Validerer...",
    "connectionValid": "Forbindelsen er gyldig!",
    "connectionFailed": "Forbindelsen mislykkedes. Tjek URL og nøgle.",
    "testKeyLabel": "Test API-nøgle",
    "testKeyPlaceholder": "sk-... (kun til validering)",
    "providerNotFound": "Udbyder blev ikke fundet",
    "deleteConnectionConfirm": "Vil du slette denne forbindelse?",
    "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": "Aliaset kunne ikke indstilles",
    "failedSaveConnection": "Forbindelsen kunne ikke gemmes",
    "failedSaveConnectionRetry": "Forbindelsen kunne ikke gemmes. Prøv venligst igen.",
    "failedRetestConnection": "Forbindelsen kunne ikke gentestes",
    "deleteCompatibleNodeConfirm": "Vil du slette denne {type}-kompatible node?",
    "anthropicCompatibleDetails": "Antropiske kompatible detaljer",
    "openaiCompatibleDetails": "OpenAI-kompatible detaljer",
    "messagesApi": "Beskeder API",
    "responsesApi": "Responses API",
    "embeddings": "Embeddings",
    "audioTranscriptions": "Audio Transcriptions",
    "audioSpeech": "Audio Speech",
    "imagesGenerations": "Images Generations",
    "chatCompletions": "Chatafslutninger",
    "importingModels": "Importerer...",
    "importFromModels": "Importer fra /models",
    "modelsImported": "{count} models imported",
    "allModelsAlreadyImported": "Alle modeller er allerede importeret",
    "noNewModelsToImport": "Ingen nye modeller at importere — alle modeller findes allerede i registreret eller brugerdefineret liste",
    "skippingExistingModels": "Springer {count} eksisterende modeller over",
    "autoSync": "Auto-synkronisering",
    "autoSyncTooltip": "Opdater modellisten automatisk hver 24. time (kan konfigureres via MODEL_SYNC_INTERVAL_HOURS)",
    "autoSyncEnabled": "Automatisk synkronisering aktiveret - modellerne opdateres med jævne mellemrum",
    "autoSyncDisabled": "Automatisk synkronisering deaktiveret",
    "autoSyncToggleFailed": "Automatisk synkronisering kunne ikke slås til eller fra",
    "clearAllModels": "Ryd alle modeller",
    "clearAllModelsConfirm": "Er du sikker på, at du vil fjerne alle modeller for denne udbyder? Dette kan ikke fortrydes.",
    "clearAllModelsSuccess": "Alle modeller ryddet",
    "clearAllModelsFailed": "Det lykkedes ikke at rydde modeller",
    "addConnectionToImport": "Tilføj en forbindelse for at aktivere import.",
    "noModelsConfigured": "Ingen modeller konfigureret",
    "connectionCount": "{count} forbindelse(r)",
    "fetchingModels": "Henter tilgængelige modeller...",
    "failedFetchModels": "Kunne ikke hente modeller",
    "noModelsFound": "Ingen modeller fundet",
    "importFailed": "Import mislykkedes",
    "noNewModelsAdded": "Der blev ikke tilføjet nye modeller.",
    "adding": "Tilføjer...",
    "close": "Close",
    "importingModelsTitle": "Import af modeller",
    "copyModel": "Kopi model",
    "filterModels": "Filtrer modeller…",
    "modelsActive": "aktive",
    "showModel": "Vis model",
    "hideModel": "Skjul model",
    "removeModel": "Fjern modellen",
    "rateLimitProtected": "Beskyttet",
    "rateLimitUnprotected": "Ubeskyttet",
    "enableRateLimitProtection": "Klik for at aktivere hastighedsgrænsebeskyttelse",
    "disableRateLimitProtection": "Klik for at deaktivere satsgrænsebeskyttelse",
    "productionKey": "Produktionsnøgle",
    "enterNewApiKey": "Indtast ny API-nøgle",
    "codexApplyModalTitle": "Ansøg til Local Codex",
    "codexApplyTargetLabel": "Målvej",
    "codexApplyBackupLabel": "Sikkerhedskopier",
    "codexApplyWarning": "Dette vil erstatte den eksisterende auth.json. Fortsætte?",
    "codexApplyConfirmCheckbox": "Jeg bekræfter, at jeg vil erstatte den eksisterende auth.json",
    "codexApply": "Ansøg",
    "bulkTabSingle": "Single",
    "bulkTabBulkAdd": "Bulk Tilføj",
    "bulkAddFormatHint": "En nøgle pr. linje. Format: navn|apiKey eller bare apiKey (automatisk navngivet af indeks).",
    "bulkValidateKeys": "Valider hver nøgle, før du gemmer (langsommere)",
    "bulkAddAllKeys": "Tilføj alle nøgler",
    "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}",
    "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}",
    "optional": "Valgfrit",
    "anthropicCompatibleName": "Antropisk kompatibel",
    "openaiCompatibleName": "OpenAI-kompatibel",
    "failedImportModels": "Kunne ikke importere modeller",
    "noModelsReturnedFromEndpoint": "Ingen modeller returneret fra /models slutpunkt.",
    "importingModelsProgress": "Importerer {current} af {total} modeller...",
    "foundModelsStartingImport": "Fundet {count} modeller. Starter import...",
    "importingModelById": "Importerer {modelId}...",
    "importSuccessCount": "{count, plural, one {# model} other {# models}} blev importeret med succes!",
    "noNewModelsAddedExisting": "Ingen nye modeller blev tilføjet (alle findes allerede).",
    "importDoneCount": "✓ Færdig! {count, plural, one {# model imported.} other {# models imported.}}",
    "unexpectedErrorOccurred": "Der opstod en uventet fejl",
    "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}",
    "messagesPath": "beskeder",
    "responsesPath": "svar",
    "chatCompletionsPath": "chat/afslutninger",
    "add": "Tilføj",
    "edit": "Rediger",
    "delete": "Slet",
    "anthropic": "Antropisk",
    "openai": "OpenAI",
    "singleConnectionPerCompatible": "Kun én forbindelse er tilladt pr. kompatibel node. Tilføj en anden node, hvis du har brug for flere forbindelser.",
    "connections": "Forbindelser",
    "providerProxyTitleConfigured": "Udbyder proxy: {host}",
    "configured": "konfigureret",
    "providerProxyConfigureHint": "Konfigurer proxy for alle forbindelser fra denne udbyder",
    "providerProxy": "Udbyder 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": "Ingen forbindelser endnu",
    "addFirstConnectionHint": "Tilføj din første forbindelse for at komme i gang",
    "addConnection": "Tilføj forbindelse",
    "availableModels": "Tilgængelige modeller",
    "builtInModels": "Built-in models",
    "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.",
    "pageAutoRefresh": "Siden opdateres automatisk...",
    "statusDisabled": "deaktiveret",
    "statusConnected": "tilsluttet",
    "statusRuntimeIssue": "runtime problem",
    "statusAuthFailed": "godkendelse mislykkedes",
    "statusRateLimited": "sats begrænset",
    "statusNetworkIssue": "netværksproblem",
    "statusTestUnsupported": "test ikke understøttet",
    "statusUnavailable": "ikke tilgængelig",
    "statusFailed": "mislykkedes",
    "statusError": "fejl",
    "oauthAccount": "OAuth-konto",
    "errorTypeRuntime": "Lokal køretid",
    "errorTypeUpstreamAuth": "Opstrøms auth",
    "errorTypeMissingCredential": "Manglende legitimationsoplysninger",
    "errorTypeRefreshFailed": "Opdatering mislykkedes",
    "errorTypeTokenExpired": "Token er udløbet",
    "errorTypeRateLimited": "Sats begrænset",
    "errorTypeUpstreamUnavailable": "Upstream ikke tilgængelig",
    "errorTypeNetworkError": "Netværksfejl",
    "errorTypeTestUnsupported": "Test understøttes ikke",
    "errorTypeUpstreamError": "Opstrøms fejl",
    "proxySourceGlobal": "Globalt",
    "proxySourceProvider": "Udbyder",
    "proxySourceKey": "Nøgle",
    "proxyConfiguredBySource": "Proxy ({source}): {host}",
    "autoPriority": "Auto: {priority}",
    "proxy": "Fuldmagt",
    "retestAuthentication": "Gentest godkendelse",
    "retest": "Gentest",
    "disableConnection": "Deaktiver forbindelse",
    "enableConnection": "Aktiver forbindelse",
    "reauthenticateConnection": "Genautentificer denne forbindelse",
    "proxyConfig": "Proxy konfiguration",
    "aliasExistsAlert": "Aliaset \"{alias}\" findes allerede. Brug venligst en anden model, eller rediger eksisterende alias.",
    "openRouterAnyModelHint": "OpenRouter understøtter enhver model. Tilføj modeller og opret aliaser for hurtig adgang.",
    "modelIdFromOpenRouter": "Model ID (fra OpenRouter)",
    "openRouterModelPlaceholder": "antropisk/claude-3-opus",
    "customModels": "Brugerdefinerede modeller",
    "customModelsHint": "Tilføj model-id'er, der ikke er på standardlisten. Disse vil være tilgængelige for routing.",
    "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": "Per-model kvoteskift",
    "modelId": "Model ID",
    "customModelPlaceholder": "f.eks. gpt-4.5-turbo",
    "loading": "Indlæser...",
    "removeCustomModel": "Fjern brugerdefineret model",
    "noCustomModels": "Ingen brugerdefinerede modeller tilføjet endnu.",
    "allSuggestedAliasesExist": "Alle foreslåede aliasser findes allerede. Vælg venligst en anden model, eller fjern modstridende aliasser.",
    "failedSaveCustomModel": "Kunne ikke gemme den tilpassede model",
    "modelAddedSuccess": "Model {modelId} blev tilføjet",
    "failedAddModelTryAgain": "Kunne ikke tilføje model. Prøv venligst igen.",
    "failedSaveImportedModel": "Kunne ikke gemme importeret model til brugerdefineret database",
    "failedImportModelsTryAgain": "Kunne ikke importere modeller. Prøv venligst igen.",
    "failedRemoveModelFromDatabase": "Kunne ikke fjerne modellen fra databasen",
    "modelRemovedSuccess": "Modellen blev fjernet",
    "failedDeleteModelTryAgain": "Modellen kunne ikke slettes. Prøv venligst igen.",
    "compatibleModelsDescription": "Tilføj {type}-kompatible modeller manuelt eller importer dem fra /models-slutpunktet.",
    "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229",
    "openaiCompatibleModelPlaceholder": "gpt-4o",
    "apiKeyValidationFailed": "API-nøglevalidering mislykkedes. Tjek venligst din nøgle og prøv igen.",
    "addProviderApiKeyTitle": "Tilføj {provider} API-nøgle",
    "checking": "Tjekker...",
    "check": "Tjek",
    "valid": "Gyldig",
    "invalid": "Ugyldig",
    "creating": "Opretter...",
    "validationChecksAnthropicCompatible": "Validering kontrollerer {provider} ved at bekræfte API-nøglen.",
    "validationChecksOpenAiCompatible": "Valideringstjek {provider} via /models på din basis-URL.",
    "priorityLabel": "Prioritet",
    "saving": "Gemmer...",
    "save": "Gem",
    "editConnection": "Rediger forbindelse",
    "accountName": "Kontonavn",
    "email": "E-mail",
    "healthCheckMinutes": "Sundhedstjek (min)",
    "healthCheckHint": "Proaktivt token-opdateringsinterval. 0 = deaktiveret.",
    "selectAllModels": "Select all",
    "deselectAllModels": "Deselect all",
    "modelsActiveCount": "{active}/{total} active",
    "noModelsMatch": "No models match \"{filter}\"",
    "groupLabel": "Environment",
    "groupPlaceholder": "e.g. eKaizen, Personal",
    "failedTestConnection": "Forbindelsen kunne ikke testes",
    "failed": "Mislykkedes",
    "leaveBlankKeepCurrentApiKey": "Lad stå tomt for at beholde den aktuelle API-nøgle.",
    "editCompatibleTitle": "Rediger {type} Kompatibel",
    "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.",
    "apiKeyForCheck": "API-nøgle (til check)",
    "compatibleProdPlaceholder": "{type} Kompatibel (Prod)",
    "tokenRefreshed": "Token refreshed successfully",
    "tokenRefreshFailed": "Token refresh failed",
    "applyCodexAuthLocal": "Apply auth",
    "exportCodexAuthFile": "Export auth",
    "applyClaudeAuthLocal": "Anvend godkendelse",
    "exportClaudeAuthFile": "Eksporter auth",
    "importClaudeAuth": "Importer auth",
    "claudeApplyModalTitle": "Ansøg til den lokale Claude Code",
    "claudeApplyTargetLabel": "Målvej",
    "claudeApplyBackupLabel": "Sikkerhedskopier",
    "claudeApplyMcpHint": "Eksisterende MCP OAuth-tilstand vil blive bevaret.",
    "claudeApplyWarning": "Dette vil erstatte den eksisterende claudeAiOauth-sektion. Fortsætte?",
    "claudeApplyConfirmCheckbox": "Jeg bekræfter, at jeg vil erstatte den eksisterende claudeAiOauth-sektion",
    "claudeApply": "Ansøg",
    "claudeAuthAppliedLocal": "Claude auth søgte lokalt",
    "claudeAuthApplyFailed": "Kunne ikke anvende Claude auth lokalt",
    "claudeAuthExported": "Claude auth-fil eksporteret",
    "claudeAuthExportFailed": "Kunne ikke eksportere Claude auth-fil",
    "claudeImportModalTitle": "Importer Claude Auth",
    "claudeImportTabSingle": "Single",
    "claudeImportTabBulk": "Bulk",
    "claudeImportTabUpload": "Upload fil",
    "claudeImportTabPaste": "Indsæt JSON",
    "claudeImportFileLabel": "Vælg .credentials.json",
    "claudeImportPasteLabel": "Indsæt JSON-indholdet",
    "claudeImportEmailLabel": "Konto-e-mail",
    "claudeImportNameLabel": "Forbindelsesnavn (valgfrit)",
    "claudeImportOverwriteLabel": "Erstat eksisterende forbindelse, hvis kontoen allerede eksisterer",
    "claudeImportSubmit": "Importer",
    "claudeImportSuccess": "Claude-forbindelsen blev importeret",
    "claudeImportInvalidJson": "Kunne ikke parse filen som JSON",
    "claudeImportInvalidShape": "Filen er ikke en gyldig .credentials.json",
    "claudeImportDuplicate": "Kontoen findes allerede – aktiver \"Erstat eksisterende\" for at overskrive",
    "claudeImportIdentityUnverified": "Bootstrap kunne ikke bekræfte kontoen. Aktiver \"Erstat eksisterende\", eller angiv en e-mail.",
    "claudeImportFailed": "Kunne ikke importere Claude auth",
    "claudeImportBulkModeUpload": "Upload filer",
    "claudeImportBulkModePaste": "Indsæt JSON-array",
    "claudeImportBulkModeZip": "Upload ZIP",
    "claudeImportBulkUploadHint": "Slip eller hent op til 50 .credentials.json-filer (256 KB hver, 10 MB i alt).",
    "claudeImportBulkPasteHint": "Indsæt en række objekter: [{ json, name?, email? }, ...]",
    "claudeImportBulkZipHint": "ZIP, der indeholder .json-poster. Max 50 indgange, 10MB udpakket.",
    "claudeImportBulkSubmit": "Importer alle",
    "claudeImportBulkSuccess": "Importerede {count} Claude-forbindelser",
    "claudeImportBulkFailed": "Nogle poster kunne ikke importeres",
    "claudeImportBulkZipExtracting": "Udpakker ZIP...",
    "claudeImportBulkZipError": "Kunne ikke udpakke ZIP",
    "applyGeminiAuthLocal": "Anvend godkendelse",
    "exportGeminiAuthFile": "Eksporter auth",
    "importGeminiAuth": "Importer auth",
    "geminiApplyModalTitle": "Ansøg til Local Gemini CLI",
    "geminiApplyTargetLabel": "Målvej",
    "geminiApplyBackupLabel": "Sikkerhedskopier",
    "geminiApplyAccountsHint": "Den aktive google_accounts.json-konto vil blive opdateret, så den matcher denne forbindelse.",
    "geminiApplyWarning": "Dette vil erstatte den eksisterende oauth_creds.json og opdatere google_accounts.json. Fortsætte?",
    "geminiApplyConfirmCheckbox": "Jeg bekræfter, at jeg vil erstatte den eksisterende oauth_creds.json",
    "geminiApply": "Ansøg",
    "geminiAuthAppliedLocal": "Gemini-godkendelse anvendt lokalt",
    "geminiAuthApplyFailed": "Kunne ikke anvende Gemini-godkendelse lokalt",
    "geminiAuthExported": "Gemini godkendelsesfil eksporteret",
    "geminiAuthExportFailed": "Kunne ikke eksportere Gemini-godkendelsesfil",
    "geminiImportModalTitle": "Importer Gemini Auth",
    "geminiImportTabSingle": "Single",
    "geminiImportTabBulk": "Bulk",
    "geminiImportTabUpload": "Upload fil",
    "geminiImportTabPaste": "Indsæt JSON",
    "geminiImportFileLabel": "Vælg oauth_creds.json",
    "geminiImportPasteLabel": "Indsæt JSON-indholdet",
    "geminiImportEmailLabel": "Konto-e-mail",
    "geminiImportNameLabel": "Forbindelsesnavn (valgfrit)",
    "geminiImportOverwriteLabel": "Erstat eksisterende forbindelse, hvis kontoen allerede eksisterer",
    "geminiImportSubmit": "Importer",
    "geminiImportSuccess": "Gemini-forbindelse blev importeret",
    "geminiImportInvalidJson": "Kunne ikke parse filen som JSON",
    "geminiImportInvalidShape": "Filen er ikke en gyldig oauth_creds.json",
    "geminiImportDuplicate": "Kontoen findes allerede – aktiver \"Erstat eksisterende\" for at overskrive",
    "geminiImportIdentityUnverified": "Kunne ikke bekræfte identiteten fra id_token. Aktiver \"Erstat eksisterende\", eller angiv en e-mail.",
    "geminiImportFailed": "Kunne ikke importere Gemini-godkendelse",
    "geminiImportBulkModeUpload": "Upload filer",
    "geminiImportBulkModePaste": "Indsæt JSON-array",
    "geminiImportBulkModeZip": "Upload ZIP",
    "geminiImportBulkUploadHint": "Slip eller tag op til 50 oauth_creds.json-filer (256 KB hver, 10 MB i alt).",
    "geminiImportBulkPasteHint": "Indsæt en række objekter: [{ json, name?, email? }, ...]",
    "geminiImportBulkZipHint": "ZIP, der indeholder oauth_creds.json-poster. Max 50 indgange, 10MB udpakket.",
    "geminiImportBulkSubmit": "Importer alle",
    "geminiImportBulkSuccess": "Importerede {count} Gemini-forbindelser",
    "geminiImportBulkFailed": "Nogle poster kunne ikke importeres",
    "geminiImportBulkZipExtracting": "Udpakker ZIP...",
    "geminiImportBulkZipError": "Kunne ikke udpakke ZIP",
    "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": "Importer auth",
    "codexImportModalTitle": "Importer Codex Auth",
    "codexImportTabSingle": "Single",
    "codexImportTabBulk": "Bulk",
    "codexImportTabUpload": "Upload fil",
    "codexImportTabPaste": "Indsæt JSON",
    "codexImportFileLabel": "Vælg auth.json",
    "codexImportFileHint": "Vælg den auth.json-fil, der er eksporteret fra Codex eller fra OmniRoute.",
    "codexImportPasteLabel": "Indsæt JSON-indholdet",
    "codexImportEmailLabel": "Konto-e-mail",
    "codexImportEmailHint": "Auto-detekteret fra filen; redigere om nødvendigt.",
    "codexImportNameLabel": "Forbindelsesnavn (valgfrit)",
    "codexImportOverwriteLabel": "Erstat eksisterende forbindelse, hvis kontoen allerede eksisterer",
    "codexImportSubmit": "Importer",
    "codexImportSuccess": "Codex-forbindelse blev importeret",
    "codexImportInvalidJson": "Kunne ikke parse filen som JSON",
    "codexImportInvalidShape": "Filen er ikke en gyldig Codex auth.json",
    "codexImportDuplicate": "Kontoen findes allerede – aktiver \"Erstat eksisterende\" for at overskrive",
    "codexImportFailed": "Kunne ikke importere Codex auth",
    "codexImportDetectedEmail": "Registreret: {email}",
    "codexImportNoEmailDetected": "Ingen e-mail fundet i filen",
    "codexImportBulkModeUpload": "Upload filer",
    "codexImportBulkModePaste": "Indsæt liste",
    "codexImportBulkModeZip": "ZIP-arkiv",
    "codexImportBulkUploadHint": "Vælg flere .json-filer, eller træk og slip",
    "codexImportBulkPasteHint": "JSON-array [ {...}, {...} ] eller flere JSON'er adskilt af --- på sin egen linje",
    "codexImportBulkZipHint": "Upload en .zip, der indeholder auth.json-filer (maks. 50 filer, 10 MB)",
    "codexImportBulkSubmit": "Importer {count} konti",
    "codexImportBulkLimit": "Maks. 50 filer pr. import",
    "codexImportBulkSuccess": "{count} importeret",
    "codexImportBulkFailed": "{count} mislykkedes",
    "codexImportBulkZipExtracting": "Udpakker ZIP...",
    "codexImportBulkZipError": "Kunne ikke udpakke ZIP",
    "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": "Enterprise & 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-udbydere",
    "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": "Åbn t3.chat → DevTools → Application → Local Storage → https://t3.chat, kopier 'convex-session-id'. Åbn derefter DevTools → Netværk, kopier den fulde Cookie-header fra enhver chatanmodning. Indsæt begge værdier i felterne nedenfor.",
    "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": "Dit Google Cloud-projekt-id. Påkrævet for konti med undtagelser. Indtast dit GCP-projekt-id, der skal bruges med Gemini CLI.",
    "geminiCliProjectIdLabel": "Google Cloud-projekt-id",
    "geminiCliProjectIdPlaceholder": "mit-gcp-projekt-id",
    "antigravityProjectIdHint": "Valgfri tilsidesættelse af anmodninger om Antigravity Cloud Code. Lad feltet stå tomt for at bruge det projekt, der blev opdaget under Google OAuth.",
    "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": "mit-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": "Videogenerering",
    "embeddingRerankProviders": "Indlejringer og omrangering",
    "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": "Søg efter udbydere...",
    "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": "Gratis udbydere",
    "freeTierLabel": "Gratis niveau tilgængelig",
    "freeTierProvidersDesc": "Udbydere med gratis niveauer - nogle kræver en API-nøgletilmelding, andre behøver slet ingen legitimationsoplysninger.",
    "providerSummaryAll": "I alt",
    "ideProviders": "IDE udbydere",
    "ideProvidersDesc": "Redaktører med indbygget AI-abonnement. Brug udbydersiden til at importere legitimationsoplysninger direkte fra IDE-nøgleringen.",
    "noIdeProviders": "Ingen IDE-udbydere matcher de aktuelle filtre.",
    "providerDetailFastTierTooltip": "Anvend Codex Fast tier på alle Codex-forbindelser som standard",
    "providerDetailFastDefaultLabel": "Hurtig standard",
    "providerDetailBrowserManualConnect": "Browser/manuel forbindelse",
    "providerDetailAuthUrl": "Godkendt URL",
    "providerDetailCallbackUrl": "Callback URL",
    "providerDetailValidClaudeCredentialsFile": "Gyldig Claude-legitimationsfil",
    "providerDetailPathAutoDetectedAllOs": "Stien registreres automatisk pr. OS (Linux/Mac/Windows).",
    "providerDetailMyClaudeAccountPlaceholder": "Min Claude-konto",
    "providerDetailPathAutoDetected": "Stien registreres automatisk pr. OS (Linux/Mac).",
    "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": "Disse udbydere bruger browserwebsessioner, cookies eller webtokens i stedet for API-nøgler. Åbn en udbyder for at tilføje den nødvendige sessionslegitimationsoplysninger.",
    "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": "Udbyder Onboarding Wizard",
    "onboardingWizardShort": "Onboarding Wizard",
    "onboardingWizardDescription": "Forbind API-nøgle, brugerdefinerede kompatible og OAuth-udbydere med validering, vedholdenhed og en øjeblikkelig forbindelsestest.",
    "onboardingStepType": "Type",
    "onboardingStepProvider": "Udbyder",
    "onboardingStepCredentials": "Legitimationsoplysninger",
    "onboardingStepResult": "Resultat",
    "onboardingTypeApiKeyTitle": "API-nøgleudbyder",
    "onboardingTypeApiKeyText": "Brug indbyggede udbydere såsom OpenAI, Anthropic, Gemini, Groq, Azure og mere.",
    "onboardingTypeCustomTitle": "Tilpasset kompatibel udbyder",
    "onboardingTypeCustomText": "Opret et OpenAI-, Anthropic- eller Claude Code-kompatibelt slutpunkt, og tilføj dets nøgle.",
    "onboardingTypeOAuthTitle": "OAuth-udbyder",
    "onboardingTypeOAuthText": "Genbrug de eksisterende OAuth-, enhedskode- eller lokale importstrømme til kodningsudbydere.",
    "onboardingChooseOAuthProvider": "Vælg en OAuth-udbyder",
    "onboardingChooseApiKeyProvider": "Vælg en API-nøgleudbyder",
    "onboardingChooseProviderDescription": "Vælg en udbyder, så vil guiden guide dig gennem legitimationsoplysninger og test.",
    "onboardingChangeType": "Skift type",
    "onboardingChangeProvider": "Skift udbyder",
    "onboardingSearchProviders": "Søgeudbydere...",
    "onboardingApiKeyOptional": "API-nøgle valgfri",
    "onboardingProviderConnected": "Udbyder tilsluttet",
    "onboardingProviderSavedWithWarnings": "Udbyder gemt med advarsler",
    "onboardingProviderFinished": "Udbyder onboarding afsluttet",
    "onboardingYourProviderConnection": "Din udbyderforbindelse",
    "onboardingTestPassed": "Test bestået",
    "onboardingTestFailed": "Test mislykkedes",
    "onboardingOpenProviderDetails": "Åbn udbyderoplysninger",
    "onboardingTryInPlayground": "Prøv på legepladsen",
    "onboardingDefaultConnectionName": "{provider} Primær",
    "onboardingTestingConnection": "Tester udbyderforbindelse...",
    "onboardingValidatingCredentials": "Validerer loginoplysninger...",
    "onboardingSavingConnection": "Gemmer udbyderforbindelse...",
    "onboardingProviderFailed": "Udbyder onboarding mislykkedes",
    "onboardingCreatingCompatibleProvider": "Opretter kompatibel udbyder...",
    "onboardingSavingCompatibleConnection": "Gemmer kompatibel udbyderforbindelse...",
    "onboardingCustomProviderFallbackName": "Tilpasset udbyder",
    "onboardingCustomProviderFailed": "Onboarding af tilpasset udbyder mislykkedes",
    "onboardingLoadingOAuthConnection": "Indlæser OAuth-forbindelse...",
    "onboardingOAuthNoConnectionFound": "OAuth afsluttet, men der blev ikke fundet nogen udbyderforbindelse.",
    "onboardingOAuthFailed": "OAuth-onboarding mislykkedes",
    "onboardingAddProvider": "Tilføj {provider}",
    "onboardingConnectionName": "Forbindelsesnavn",
    "onboardingApiKeyOptionalLabel": "API-nøgle (valgfrit)",
    "onboardingBaseUrlOverride": "Tilsidesættelse af basis-URL",
    "onboardingBaseUrlOverrideHint": "Valgfrit. Gemt som providerSpecificData.baseUrl.",
    "onboardingRegion": "Region",
    "onboardingSearchCx": "Søg CX / Engine id",
    "onboardingProviderSpecificIdPlaceholder": "Valgfrit udbyderspecifikt id",
    "onboardingCustomUserAgent": "Tilpasset bruger-agent",
    "onboardingWorking": "Arbejder...",
    "onboardingValidateSaveTest": "Valider, gem og test",
    "onboardingBack": "Tilbage",
    "onboardingCreateCustomCompatibleProvider": "Opret tilpasset kompatibel udbyder",
    "onboardingCreateCustomCompatibleDescription": "Guiden opretter først en udbyderknude, og derefter gemmer og tester dens API-nøgleforbindelse.",
    "onboardingProtocol": "Protokol",
    "onboardingOpenAiCompatible": "OpenAI-kompatibel",
    "onboardingAnthropicCompatible": "Antropisk-kompatibel",
    "onboardingClaudeCodeCompatible": "Claude Code-kompatibel",
    "onboardingProviderPrefix": "Udbyderpræfiks",
    "onboardingProviderPrefixHint": "Bruges til at generere det administrerede udbyder-id.",
    "onboardingChatPath": "Chatsti",
    "onboardingModelsPath": "Modellers vej",
    "onboardingCreateSaveTest": "Opret, gem og test",
    "onboardingConnectProvider": "Tilslut {provider}",
    "onboardingOAuthFlowDescription": "OmniRoute åbner det eksisterende OAuth-flow for denne udbyder. Efter login genindlæser guiden den gemte forbindelse og kører den samme forbindelsestest som udbydersiden.",
    "onboardingStartOAuthFlow": "Start OAuth-flow",
    "passthroughModelsDescription": "{provider} accepterer udbyder-native model-id'er. Importer fra /models eller tilføj brugerdefinerede id'er til routing.",
    "bedrockModelsDescription": "Amazon Bedrock-modeller er omfattet af AWS-regionen. Importer fra /models eller tilføj Bedrock-model-id'er aktiveret i det valgte område.",
    "bedrockModelPlaceholder": "antropisk.claude-sonnet-4-6",
    "addProviderSessionCookieTitle": "Tilføj {provider} sessionscookie",
    "addProviderWebTokenTitle": "Tilføj {provider} webtoken",
    "addProviderConnectionTitle": "Tilføj {provider} forbindelse",
    "webTokenCredentialLabel": "Web session token",
    "webNoAuthCredentialLabel": "Der kræves ingen legitimationsoplysninger",
    "webCookieCredentialHint": "Påkrævet cookie: {credential}. Indsæt cookie-headerværdien fra din egen loggede {provider} websession. Inkluder ikke Cookie:-præfikset.",
    "webTokenCredentialHint": "Legitimationsoplysninger: {credential}. Indsæt tokenværdien fra din egen loggede {provider}-websession eller en DevTools HAR-eksport, hvis udbyderen understøtter det.",
    "webCookieEditHint": "Lad stå tomt for at beholde den aktuelle sessionscookie. Påkrævet cookie: {credential}.",
    "webTokenEditHint": "Lad stå tomt for at beholde det aktuelle websessionstoken. Legitimationsoplysninger: {credential}.",
    "webSessionGuideTitle": "Sådan får du sessionslegitimationen",
    "webSessionGuideIntro": "{provider} bruger en browserwebsession i stedet for en API-nøgle.",
    "webCookieRequiredCredential": "Påkrævet cookie: {credential}",
    "webTokenRequiredCredential": "Påkrævet token: {credential}",
    "webSessionGuideStep1": "Log ind på {provider} i din browser.",
    "webSessionGuideStep2": "Åbn browserens udviklerværktøjer, og inspicér en anmodning fra webappen.",
    "webSessionGuideStep3": "Kopiér de påkrævede legitimationsoplysninger fra udbyderens eget domæne. For cookies skal du kun kopiere Cookie-headerværdien og udelade Cookie:.",
    "webSessionGuideStep4": "Indsæt det her og kontroller forbindelsen. Hvis det holder op med at fungere, skal du logge ind igen og erstatte det med en ny værdi.",
    "webSessionSecurityHint": "Behandl dette som en adgangskode: den kan få adgang til din loggede webkonto, indtil den udløber eller tilbagekaldes.",
    "webNoAuthGuideTitle": "Der kræves ingen legitimationsoplysninger",
    "webNoAuthGuideBody": "{provider} behøver ikke en API-nøgle eller cookie. Gem forbindelsen for at bruge dens gratis webslutpunkt.",
    "webSessionCredentialValidationFailed": "Validering af legitimationsoplysninger for session mislykkedes. Log ind igen, kopier en ny login, og prøv igen.",
    "checkCookie": "Tjek cookie",
    "checkWebToken": "Tjek token"
  },
  "settings": {
    "title": "Indstillinger",
    "general": "Generelt",
    "security": "Sikkerhed",
    "appearance": "Udseende",
    "routing": "Routing",
    "cache": "Cache",
    "resilience": "Modstandsdygtighed",
    "routingSettingsIntro": "Styrer, hvordan dine anmodninger rutes, transformeres og sendes til AI-udbydere.",
    "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": "Automatisk genforsøg, nedkøling og fallback, når udbydere fejler.",
    "aiSettingsIntro": "AI-specifikke indstillinger til at tænke budget, modeladfærd og komprimering.",
    "systemPrompt": "Systemprompt",
    "thinkingBudget": "Tænke budget",
    "proxy": "Fuldmagt",
    "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": "Prissætning",
    "storage": "Opbevaring",
    "policies": "Politikker",
    "ipFilter": "IP-filter",
    "comboDefaults": "Combo standarder",
    "fallbackChains": "Fallback kæder",
    "changePassword": "Skift adgangskode",
    "enablePassword": "Aktiver adgangskode",
    "darkMode": "Mørk tilstand",
    "lightMode": "Lys tilstand",
    "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": "lige nu",
    "modelsDevStats": "Sync Statistics",
    "modelsDevStatsDesc": "Current models.dev data coverage",
    "providers": "Udbydere",
    "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": "System tema",
    "debugToggle": "Enable Debug Mode",
    "sidebarVisibilityToggle": "Show Sidebar Items",
    "enableCache": "Aktiver cache",
    "cacheTTL": "Cache TTL",
    "maxCacheSize": "Max cachestørrelse",
    "clearCache": "Ryd cache",
    "cacheCleared": "Cache cleared successfully",
    "clearCacheFailed": "Failed to clear cache",
    "cacheHits": "Cache hits",
    "cacheMisses": "Cache misses",
    "hitRate": "Hitrate",
    "cacheEntries": "Cache-indtastninger",
    "cacheSettings": "Cache Settings",
    "semanticCache": "Semantic Cache",
    "maxEntries": "Max Entries",
    "ttlMinutes": "TTL (minutes)",
    "promptCache": "Spørg cache",
    "strategy": "Strategy",
    "preserveClientCache": "Preserve Client Cache",
    "enabled": "Enabled",
    "loading": "Loading...",
    "saving": "Gemmer...",
    "save": "Save",
    "circuitBreaker": "Strømafbryder",
    "retryPolicy": "Politik for forsøg igen",
    "maxRetries": "Max forsøger igen",
    "retryDelay": "Forsink igen",
    "timeoutMs": "Timeout (ms)",
    "enableSystemPrompt": "Aktiver systemprompt",
    "systemPromptText": "Systemprompttekst",
    "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": "Denne side konfigurerer kun adfærd. Live breaker-tilstand vises på Sundhedssiden. Kombinationsspecifik genforsøg og round-robin slotkontrol forbliver på kombinationsindstillinger.",
    "enableThinking": "Aktiver tænkning",
    "maxThinkingTokens": "Max Thinking Tokens",
    "enableProxy": "Aktiver proxy",
    "proxyUrl": "Proxy-URL",
    "pricingRates": "Prisformat",
    "currentPricing": "Aktuel prisoversigt",
    "loadingPricing": "Indlæser prisdata...",
    "noPricing": "Ingen tilgængelige prisdata",
    "input": "Input",
    "output": "Output",
    "cached": "Cachelagret",
    "reasoning": "Ræsonnement",
    "cacheCreation": "Oprettelse af cache",
    "customPricing": "Tilpasset prisfastsættelse",
    "databaseSize": "Database størrelse",
    "backupDb": "Backup database",
    "restoreDb": "Gendan database",
    "exportData": "Eksporter data",
    "importData": "Importer data",
    "clearData": "Ryd alle data",
    "clearDataConfirm": "Dette vil permanent slette alle data. Er du sikker?",
    "enableRequestLogs": "Aktiver anmodningslogfiler",
    "logRetention": "Logopbevaring",
    "ipWhitelist": "IP hvidliste",
    "ipBlacklist": "IP sortliste",
    "addIP": "Tilføj IP",
    "savedSuccessfully": "Indstillinger blev gemt",
    "ai": "AI",
    "advanced": "Avanceret",
    "localMode": "Lokal tilstand — Alle data gemt på din maskine",
    "settingsSectionsAria": "Indstillinger sektioner",
    "switchThemes": "Skift mellem lyse og mørke temaer",
    "themeSelectionAria": "Valg af tema",
    "themeLight": "Lys",
    "themeDark": "Mørk",
    "themeSystem": "System",
    "endpointTunnelVisibility": "Endpoint tunnel synlighed",
    "endpointTunnelVisibilityDesc": "Skjul tunnelkontroller fra Endpoint-siden uden at ændre tunneltilstand.",
    "showCloudflareTunnel": "Cloudflare Quick Tunnel",
    "showCloudflareTunnelDesc": "Vis Cloudflare Quick Tunnel-kontroller på Endpoint-siden.",
    "showTailscaleFunnel": "Haleskala tragt",
    "showTailscaleFunnelDesc": "Vis Tailscale Funnel-kontroller på Endpoint-siden.",
    "showNgrokTunnel": "ngrok tunnel",
    "showNgrokTunnelDesc": "Vis ngrok Tunnel-kontroller på Endpoint-siden.",
    "sidebarVisibility": "Hide sidebar items",
    "sidebarVisibilityDesc": "Hide any sidebar navigation entry to reduce visual clutter.",
    "sidebarVisibilityHint": "Any sidebar section is hidden automatically when a...",
    "hideHealthLogs": "Skjul logs til sundhedstjek",
    "hideHealthLogsDesc": "Når ON, skal du undertrykke [HealthCheck]-meddelelser i serverkonsollen",
    "themeAccent": "Temafarve",
    "themeAccentDesc": "Vælg en forudindstillet farve eller opret dit eget tema med én farve",
    "themeCreate": "Opret tema",
    "themeCustom": "Brugerdefineret tema",
    "themeBlue": "Blå",
    "themeRed": "Rød",
    "themeGreen": "Grøn",
    "themeViolet": "Lilla",
    "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": "Skyl cache",
    "flushing": "Skyller...",
    "size": "Størrelse",
    "hits": "Hits",
    "evictions": "Udsættelser",
    "loadingCacheStats": "Indlæser cachestatistik...",
    "globalProxy": "Global proxy",
    "globalProxyDesc": "Konfigurer en global udgående proxy for alle API-kald. Individuelle udbydere, kombinationer og nøgler kan tilsidesætte dette.",
    "noGlobalProxy": "Ingen global proxy konfigureret",
    "globalLabel": "Globalt",
    "configure": "Konfigurer",
    "globalSystemPrompt": "Global System Prompt",
    "saved": "Gemt",
    "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} tegn",
    "thinkingBudgetTitle": "Tænke budget",
    "thinkingBudgetDesc": "Kontroller brugen af AI-ræsonnementstoken på tværs af alle anmodninger",
    "passthrough": "Gennemløb",
    "passthroughDesc": "Ingen ændringer - klienten styrer tænkebudgettet",
    "auto": "Auto",
    "autoDesc": "Fjern al tænkekonfig - lad udbyderen bestemme",
    "custom": "Brugerdefineret",
    "customDesc": "Indstil et fast token-budget for alle anmodninger",
    "adaptive": "Adaptiv",
    "adaptiveDesc": "Skaler budget baseret på anmodningens kompleksitet",
    "effortNone": "Ingen (0 tokens)",
    "effortLow": "Lav (1K tokens)",
    "effortMedium": "Medium (10.000 tokens)",
    "effortHigh": "Høj (128K tokens)",
    "tokenBudget": "Token budget",
    "tokens": "tokens",
    "baseEffortLevel": "Basisindsatsniveau",
    "adaptiveHint": "Adaptiv tilstand skaleres fra dette basisniveau baseret på antal meddelelser, værktøjsbrug og promptlængde.",
    "requireLogin": "Kræv login",
    "requireLoginDesc": "Når ON, kræver dashboard adgangskode. Når OFF, adgang uden login.",
    "currentPassword": "Nuværende adgangskode",
    "enterCurrentPassword": "Indtast den aktuelle adgangskode",
    "newPassword": "Ny adgangskode",
    "enterNewPassword": "Indtast ny adgangskode",
    "confirmPassword": "Bekræft ny adgangskode",
    "confirmPasswordPlaceholder": "Bekræft ny adgangskode",
    "passwordsNoMatch": "Adgangskoder stemmer ikke overens",
    "passwordUpdated": "Adgangskoden blev opdateret",
    "failedUpdatePassword": "Kunne ikke opdatere adgangskoden",
    "errorOccurred": "Der opstod en fejl",
    "updatePassword": "Opdater adgangskode",
    "setPassword": "Indstil adgangskode",
    "apiEndpointProtection": "API-endepunktsbeskyttelse",
    "requireAuthModels": "Kræv API-nøgle til /models",
    "requireAuthModelsDesc": "Når ON, returnerer /v1/models-slutpunktet 404 for ikke-godkendte anmodninger. Forhindrer modelopdagelse af uautoriserede brugere.",
    "authModelHeading": "Aktiv autorisationsmodel",
    "authModelClient": "Client API-endepunkter (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) kræver en Bearer API-nøgle.",
    "authModelManagement": "Administrationsslutpunkter (/dashboard, /api/*) kræver en dashboardsession eller ledelseslegitimationsoplysninger.",
    "authModelPublic": "Kun login-, sundheds- og bootstrap-ruter er offentlige.",
    "bruteForceProtection": "Log på brute-force beskyttelse",
    "bruteForceProtectionDesc": "Gas og lås /api/auth/login efter gentagne fejl fra samme IP.",
    "corsAllowedOrigins": "CORS tilladte oprindelser",
    "corsAllowedOriginsDesc": "Kommasepareret liste over browseroprindelser, der er tilladt at kalde denne server. Tom liste = ingen CORS-adgang til browseren (server-til-server fungerer stadig). Brug kun CORS_ALLOW_ALL=true env var til udvikling.",
    "blockedProviders": "Blokerede udbydere",
    "blockedProvidersDesc": "Skjul specifikke udbydere fra /v1/models-svaret. Blokerede udbydere vises ikke i modellister.",
    "providersBlocked": "{count} udbyder(e) blokeret fra /modeller",
    "blockProviderTitle": "Bloker {provider}",
    "unblockProviderTitle": "Fjern blokering af {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": "System-blok Transform Pipeline",
    "systemTransformsDesc": "Pr. udbyder bestilt pipeline af transformationer anvendt på anmodningslegemet før videresendelse. Understøtter ethvert udbyder-id.",
    "systemTransformsAddProvider": "Tilføj udbyder",
    "systemTransformsAddProviderPlaceholder": "Vælg en udbyder...",
    "systemTransformsAddProviderAllConfigured": "Alle udbydere er allerede konfigureret",
    "systemTransformsRemoveProvider": "Fjern udbyder",
    "systemTransformsNoProviders": "Ingen udbydere er konfigureret. Tilføj en udbyder for at komme i gang.",
    "systemTransformsOpMoveUp": "Flyt op",
    "systemTransformsOpMoveDown": "Flyt ned",
    "systemTransformsOpDelete": "Slet op",
    "routingStrategy": "Rutestrategi",
    "routingAdvancedGuideTitle": "Avanceret rutevejledning",
    "routingAdvancedGuideHint1": "Brug Fill First for forudsigelig prioritet, Round Robin for retfærdighed og P2C for latensmodstandsdygtighed.",
    "routingAdvancedGuideHint2": "Hvis udbydere varierer i kvalitet/omkostninger, start med Cost Opt for baggrundsarbejde og Mindst brugt for balanceret slid.",
    "fillFirst": "Fyld først",
    "fillFirstDesc": "Brug konti i prioriteret rækkefølge",
    "roundRobin": "Round Robin",
    "roundRobinDesc": "Gennemgå alle konti",
    "p2c": "P2C",
    "p2cDesc": "Vælg 2 tilfældige, brug den sundere",
    "random": "Tilfældig",
    "randomDesc": "Tilfældig konto hver anmodning",
    "leastUsed": "Mindst brugt",
    "leastUsedDesc": "Vælg den mindst brugte konto",
    "costOpt": "Omkostningsopt",
    "costOptDesc": "Foretrækker den billigste tilgængelige konto",
    "resetAware": "Reset-Aware RR",
    "resetAwareDesc": "Foretrækker konti med sund resterende kvote og nærmere nulstillinger",
    "strictRandom": "Strict Random",
    "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling",
    "stickyLimit": "Sticky Limit",
    "stickyLimitDesc": "Opkald pr. konto før skift",
    "modelAliases": "Model aliaser",
    "modelAliasesTitle": "Model Aliaser",
    "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.",
    "addCustomAlias": "Tilføj Tilpasset Alias",
    "deprecatedModelId": "Forældet model-ID",
    "newModelId": "Nyt model-ID",
    "customAliases": "Tilpassede Aliaser",
    "builtInAliases": "Indbyggede Aliaser",
    "backgroundDegradationTitle": "Baggrundsopgave Degradering",
    "backgroundDegradationDesc": "Opdager automatisk baggrundsopgaver (titler, resuméer) og dirigerer til billigere modeller",
    "enableDegradation": "Aktiver Baggrundsdegradation",
    "enableDegradationHint": "Når aktiveret, dirigeres baggrundsopgaver som titelgenerering og resuméer automatisk til billigere modeller",
    "tasksDetected": "Opgaver opdaget",
    "degradationMap": "Modeldegraderingsschema",
    "premiumModel": "Premium model",
    "cheapModel": "Billig model",
    "detectionPatterns": "Detektionsmønstre",
    "newPattern": "f.eks. \"generer en titel\"",
    "aliasPatternPlaceholder": "claude-sonnet-*",
    "aliasTargetPlaceholder": "claude-sonnet-4-20250514",
    "pattern": "Mønster",
    "targetModel": "Målmodel",
    "add": "+ Tilføj",
    "session": "Session",
    "sessionDetailsAria": "Session detaljer",
    "status": "Status",
    "authenticated": "Autentificeret",
    "guest": "Gæst",
    "loginTime": "Login tid",
    "sessionAge": "Session Alder",
    "browser": "Browser",
    "clearLocalData": "Ryd lokale data",
    "logout": "Log ud",
    "clearLocalDataConfirm": "Vil du rydde alle lokale data? Dette vil nulstille dine præferencer.",
    "unknown": "Ukendt",
    "systemActor": "system",
    "ipAccessControl": "IP adgangskontrol",
    "ipAccessControlDesc": "Bloker eller tillad specifikke IP-adresser",
    "ipModeDisabled": "Deaktiveret",
    "ipModeBlacklist": "Sortliste",
    "ipModeWhitelist": "Hvidliste",
    "ipModeWhitelistPriority": "WL prioritet",
    "addIpAddress": "Tilføj IP-adresse",
    "ipAddressPlaceholder": "192.168.1.0/24 eller 10.0.*.*",
    "block": "+ Bloker",
    "allow": "+ Tillad",
    "blocked": "Blokeret ({count})",
    "allowed": "Tilladt ({count})",
    "temporaryBans": "Midlertidige forbud ({count})",
    "minLeft": "{min}m tilbage",
    "auditLog": "Revisionslog",
    "searchAuditLogs": "Søg i revisionslogfiler...",
    "failedLoadAuditLog": "Kunne ikke indlæse revisionslog",
    "noAuditEvents": "Ingen revisionsbegivenheder fundet",
    "action": "Handling",
    "actor": "Skuespiller",
    "details": "Detaljer",
    "time": "Tid",
    "fallbackChainsTitle": "Fallback kæder",
    "fallbackChainsDesc": "Definer udbyderens reserveordre pr. model",
    "addChain": "+ Tilføj kæde",
    "modelName": "Model navn",
    "modelNamePlaceholder": "claude-sonnet-4-20250514",
    "providersCommaSeparated": "Udbydere (kommasepareret, i prioriteret rækkefølge)",
    "providersCommaSeparatedPlaceholder": "antropisk, openai, gemini",
    "createChain": "Opret kæde",
    "noFallbackChains": "Ingen Fallback-kæder",
    "noFallbackChainsDesc": "Opret en kæde for at definere udbyderens reserveordre for en model.",
    "loadingFallbackChains": "Indlæser reservekæder...",
    "deleteChainConfirm": "Vil du slette reservekæden for \"{model}\"?",
    "chainCreated": "Kæde oprettet til {model}",
    "chainDeleted": "Kæde slettet for {model}",
    "failedCreateChain": "Kunne ikke oprette kæde",
    "failedDeleteChain": "Kæden kunne ikke slettes",
    "deleteChain": "Slet kæde",
    "fillModelAndProviders": "Udfyld venligst modelnavn og udbydere",
    "addAtLeastOneProvider": "Tilføj mindst én udbyder",
    "comboDefaultsTitle": "Combo standarder",
    "comboDefaultsGuideTitle": "Sådan indstiller du combo-standarder",
    "comboDefaultsGuideHint1": "Hold lave genforsøg i flows med lav latens; øg kun timeout for lange generationsopgaver.",
    "comboDefaultsGuideHint2": "Brug udbydertilsidesættelser, når en udbyder har brug for en anden timeout-/genforsøgsadfærd end globale standardindstillinger.",
    "globalComboConfig": "Global combo-konfiguration",
    "defaultStrategy": "Standardstrategi",
    "defaultStrategyDesc": "Anvendt på nye kombinationer uden eksplicit strategi",
    "comboStrategyAria": "Kombinationsstrategi",
    "priority": "Prioritet",
    "weighted": "Vægtet",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Hands off context between providers with automatic summarization",
    "maxRetriesLabel": "Max forsøger igen",
    "retryDelayLabel": "Forsinkelse af forsøg igen (ms)",
    "timeoutLabel": "Timeout (ms)",
    "healthCheck": "Sundhedstjek",
    "healthCheckDesc": "Forhåndstjek udbyderens tilgængelighed",
    "trackMetrics": "Spor metrics",
    "trackMetricsDesc": "Optag pr-kombinationsanmodningsmetrics",
    "providerOverrides": "Udbydertilsidesættelser",
    "providerOverridesDesc": "Tilsidesæt timeout og genforsøg pr. udbyder. Udbyderindstillinger tilsidesætter globale standardindstillinger.",
    "providerMaxRetriesAria": "{provider} maks. genforsøg",
    "providerTimeoutAria": "{provider} timeout ms",
    "removeProviderOverrideAria": "Fjern {provider} tilsidesættelse",
    "newProviderNamePlaceholder": "f.eks. google, åben...",
    "newProviderNameAria": "Nyt udbydernavn",
    "retries": "forsøger igen",
    "ms": "ms",
    "saveComboDefaults": "Gem Combo-standarder",
    "maxNestingDepth": "Maks. rededybde",
    "concurrencyPerModel": "Samtidighed / Model",
    "queueTimeout": "Timeout for kø (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": "Udbyder profiler",
    "providerProfilesDesc": "Separate indstillinger for modstandsdygtighed for OAuth (session-baserede) og API Key (målte) udbydere. OAuth-udbydere har strengere tærskler på grund af lavere takstgrænser.",
    "oauthProviders": "OAuth-udbydere",
    "apiKeyProviders": "API-nøgleudbydere",
    "transientCooldown": "Forbigående nedkøling",
    "rateLimitCooldown": "Rate Limit Cooldown",
    "maxBackoffLevel": "Max Backoff Level",
    "cbThreshold": "CB-tærskel",
    "cbResetTime": "CB-nulstillingstid",
    "rateLimiting": "Satsbegrænsende",
    "rateLimitingDesc": "API-nøgleudbydere er automatisk hastighedsbegrænsede med sikre standardindstillinger. Grænser læres fra svaroverskrifter og tilpasses over tid.",
    "defaultSafetyNet": "Standard sikkerhedsnet",
    "rpm": "RPM",
    "minGap": "Min Gap",
    "maxConcurrent": "Max samtidig",
    "activeLimiters": "Aktive begrænsere",
    "noActiveLimiters": "Ingen aktive hastighedsbegrænsere endnu.",
    "reservoir": "Reservoir",
    "running": "Løb",
    "queued": "I kø",
    "circuitBreakers": "Strømafbrydere",
    "breakerStateClosed": "Lukket",
    "breakerStateOpen": "Åbn",
    "breakerStateHalfOpen": "Halvåbent",
    "tripped": "{count} udløste",
    "healthy": "{count} sund",
    "resetAll": "Nulstil alle",
    "noCircuitBreakers": "Ingen afbrydere aktive endnu. De oprettes automatisk, når anmodninger strømmer gennem den kombinerede pipeline.",
    "failures": "{count} fejl(er)",
    "policiesLocked": "Politikker og låste identifikatorer",
    "allOperational": "Alle systemer fungerer - ingen lockouts eller udløste afbrydere",
    "loadingPolicies": "Indlæser politikker...",
    "lockedIdentifiers": "Låste identifikatorer",
    "unlockedIdentifier": "Ulåst: {identifier}",
    "sinceDate": "siden {date}",
    "forceUnlock": "Tving oplåsning",
    "unlocking": "Låser op...",
    "failedUnlock": "Kunne ikke låse op",
    "failedLoadWithStatus": "Kunne ikke indlæse: {status}",
    "failedLoadResilience": "Kunne ikke indlæse modstandsdygtighedsstatus",
    "saveFailed": "Gem mislykkedes",
    "resetFailed": "Nulstilling mislykkedes",
    "loadingResilience": "Indlæser modstandsdygtighedsstatus...",
    "retry": "Prøv igen",
    "systemStorage": "System & Opbevaring",
    "allDataLocal": "Alle data gemt lokalt på din maskine",
    "databasePath": "Databasesti",
    "exportDatabase": "Eksporter database",
    "exportAll": "Eksporter alle (.tar.gz)",
    "importDatabase": "Importer database",
    "confirmDbImport": "Bekræft databaseimport",
    "confirmDbImportDesc": "Dette vil erstatte alle aktuelle data med indholdet fra {file}. Der oprettes automatisk en sikkerhedskopi før importen.",
    "yesImport": "Ja, import",
    "lastBackup": "Sidste backup",
    "noBackupYet": "Ingen backup endnu",
    "backupNow": "Sikkerhedskopier nu",
    "backupRestore": "Sikkerhedskopiering og gendannelse",
    "viewBackups": "Se sikkerhedskopier",
    "hide": "Skjul",
    "backupRetentionDesc": "Database-snapshots oprettes automatisk før gendannelse og hvert 15. minut, når data ændres. Retention: 24 timer i timen + 30 daglige backups med smart rotation.",
    "loadingBackups": "Indlæser sikkerhedskopier...",
    "noBackupsYet": "Ingen tilgængelige sikkerhedskopier endnu. Sikkerhedskopier oprettes automatisk, når data ændres.",
    "backupsAvailable": "{count} backup(r) tilgængelige",
    "refresh": "Opdater",
    "confirm": "bekræfte?",
    "yes": "Ja",
    "no": "Nej",
    "restore": "Gendan",
    "invalidFileType": "Ugyldig filtype. Kun .sqlite-filer accepteres.",
    "exportFailed": "Eksporten mislykkedes",
    "exportFailedWithError": "Eksport mislykkedes: {error}",
    "fullExportFailedWithError": "Fuld eksport mislykkedes: {error}",
    "backupCreated": "Sikkerhedskopiering oprettet: {file}",
    "restoreSuccess": "Gendannet! {connections} forbindelser, {nodes} noder, {combos} kombinationer, {apiKeys} API nøgler.",
    "importSuccess": "Database importeret! {connections} forbindelser, {nodes} noder, {combos} kombinationer, {apiKeys} API nøgler.",
    "minutesAgo": "{count}m siden",
    "hoursAgo": "{count}t siden",
    "daysAgo": "{count}d siden",
    "backupReasonManual": "manual",
    "backupReasonPreRestore": "for-gendannelse",
    "connectionsCount": "{count, plural, one {# connection} other {# connections}}",
    "noChangesSinceBackup": "Ingen ændringer siden sidste backup",
    "backupFailed": "Sikkerhedskopiering mislykkedes",
    "restoreFailed": "Gendannelse mislykkedes",
    "importFailed": "Import mislykkedes",
    "errorDuringRestore": "Der opstod en fejl under gendannelse",
    "errorDuringImport": "Der opstod en fejl under importen",
    "modelPricing": "Modelpriser",
    "modelPricingDesc": "Konfigurer omkostningssatser pr. model • Alle satser i $/1M tokens",
    "registry": "Register",
    "priced": "Prissat",
    "searchProvidersModels": "Søg efter udbydere eller modeller...",
    "showAll": "Vis alle",
    "noProvidersMatch": "Ingen udbydere matcher din søgning.",
    "howPricingWorks": "Hvordan prissætning fungerer",
    "cacheWrite": "Cache skriv",
    "unsaved": "ikke gemt",
    "resetDefaults": "Nulstil standarder",
    "saveProvider": "Gem udbyder",
    "model": "Model",
    "models": "modeller",
    "moreProviders": "{count} flere udbydere",
    "withPricing": "med konfigureret prissætning",
    "policiesCircuitBreakers": "Politikker og strømafbrydere",
    "activeIssuesDetected": "Aktive problemer registreret",
    "off": "Fra",
    "resetPricingConfirm": "Vil du nulstille alle priser for {provider} til standardindstillingerne?",
    "pricingDescInput": "Input: tokens sendt til modellen",
    "pricingDescOutput": "Output: tokens genereret",
    "pricingDescCached": "Cachelagret: genbrugt input (~50 % af inputhastigheden)",
    "pricingDescReasoning": "Begrundelse: Tænketegn (falder tilbage til output)",
    "pricingDescCacheWrite": "Cacheskrivning: oprettelse af cacheposter (falder tilbage til input)",
    "pricingDescFormula": "Omkostninger = (input × input_rate) + (output × output_rate) + (cached × cached_rate) pr. million tokens.",
    "pricingSettingsTitle": "Prisindstillinger",
    "totalModels": "Totale modeller",
    "active": "Aktiv",
    "costCalculation": "Omkostningsberegning",
    "costCalculationDesc": "Omkostninger beregnes baseret på token-forbrug og prissætningssatser, der er konfigureret for hver model.",
    "pricingFormat": "Prisformat",
    "pricingFormatDesc": "Alle priser er i $/1M tokens (dollars per million tokens).",
    "tokenTypes": "Token typer",
    "inputTokenDesc": "Standard prompt-tokens",
    "outputTokenDesc": "Fuldførelse/svar-tokens",
    "cachedTokenDesc": "Cachelagrede inputtokens (typisk 50 % af inputhastigheden)",
    "reasoningTokenDesc": "Særlige ræsonnement/tænke-tokens (tilbagefald til outputhastighed)",
    "cacheCreationTokenDesc": "Tokens, der bruges til at oprette cacheposter (tilbage til inputhastighed)",
    "customPricingNote": "Du kan tilsidesætte standardpriser for specifikke modeller. Tilpassede tilsidesættelser har prioritet frem for automatisk registrerede priser.",
    "editPricing": "Rediger prissætning",
    "viewFullDetails": "Se alle detaljer",
    "themeCoral": "Koral",
    "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": "Prisen kunne ikke ryddes: {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": "Prisen kunne ikke nulstilles: {reason}",
    "tab": "Tab",
    "pricingSavedProvider": "Priser gemt for {provider}",
    "pricingSyncFailed": "Pricing Sync Failed",
    "pricingSaveFailedWithReason": "Prisen kunne ikke gemmes: {reason}",
    "pricingResetProvider": "Prisnulstilling for {provider}",
    "nextSync": "Next Sync",
    "pricingSyncFailedWithReason": "Prissynkronisering mislykkedes: {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": "Aggressiv motorkonfiguration",
    "compressionAggressiveConfigDesc": "Finjuster opsummering, værktøjskomprimering og aldringstærskler",
    "compressionUltraConfig": "Ultra Engine Configuration",
    "compressionUltraConfigDesc": "Finjuster heuristisk beskæring, SLM fallback og tærskler pr. besked",
    "compressionUltraRate": "Behold sats",
    "compressionUltraMinScore": "Minimumsscoretærskel",
    "compressionUltraSlmFallback": "Fallback til aggressiv",
    "compressionUltraModelPath": "SLM Model Path",
    "compressionSummarizerEnabled": "Aktiver Summarizer",
    "compressionMaxTokensPerMessage": "Maks. tokens pr. besked",
    "compressionMinSavings": "Min. opsparingstærskel",
    "compressionAgingThresholds": "Aldringstærskler",
    "compressionAgingThresholdsDesc": "Antallet af seneste beskeder opbevaret på hvert aldrende niveau (højere = mere bevaret)",
    "compressionToolStrategies": "Værktøjsresultatstrategier",
    "compressionToolStrategiesDesc": "Skift komprimeringsstrategier for forskellige værktøjsresultattyper",
    "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": "minutter",
    "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": "Valgfrit",
    "current": "Nuværende",
    "remove": "Fjern",
    "search": "Søg",
    "oneproxyTitle": "1proxy gratis proxy markedsplads",
    "oneproxyTotalProxies": "Samlede fuldmagter",
    "oneproxyAvgQuality": "Gns. kvalitet",
    "resilienceScope": "Omfang:",
    "resilienceTrigger": "Udløser:",
    "resilienceEffect": "Effekt:",
    "resilienceRequestQueueTitle": "Request Queue & Rate",
    "resilienceAutoEnableApiKeyProviders": "Auto-enable for API-key providers",
    "resilienceRequestsPerMinute": "Requests per minute",
    "resilienceMinTimeBetweenRequests": "Minimum time between requests",
    "resilienceConcurrentRequests": "Concurrent requests",
    "resilienceMaxQueueWaitTime": "Maksimal ventetid i kø",
    "resilienceBaseCooldown": "Base cooldown",
    "resilienceUseUpstreamRetryHints": "Use upstream retry hints",
    "resilienceDefaultPerProvider": "Default (per provider)",
    "resilienceAlwaysOn": "Always on",
    "resilienceAlwaysOff": "Always off",
    "routingRemoveEntry": "Fjern indtastning",
    "routingNeedlesSubstrings": "Nåle (understrenge, der passer til)",
    "routingCaseSensitive": "Der skelnes mellem store og små bogstaver",
    "routingPrefixes": "Præfikser",
    "routingMatch": "Match",
    "routingReplacement": "Udskiftning",
    "routingReplaceAllOccurrences": "Erstat alle forekomster",
    "routingPatternRegex": "Mønster (regex)",
    "routingFlags": "Flag",
    "routingNeedles": "Nåle",
    "routingBlockText": "Bloker tekst",
    "routingIdempotencyKey": "Idempotens nøgle",
    "routingEntrypoint": "Indgangspunkt",
    "routingVersionFormat": "Versionsformat",
    "routingCchAlgorithm": "CCH algoritme",
    "routingWordsToObfuscate": "Ord til at sløre (ZWJ indsat efter første tegn)",
    "logsSettingsTitle": "Logindstillinger",
    "detailedLogsLabel": "Detaljerede logfiler aktiveret",
    "detailedLogsDesc": "Aktiver detaljeret logning af anmodninger/svar",
    "callLogPipelineLabel": "Call Log Pipeline",
    "callLogPipelineDesc": "Aktiver pipeline til behandling af opkaldslog",
    "maxDetailSizeLabel": "Maks. detaljestørrelse (KB)",
    "maxDetailSizeDesc": "Maksimal størrelse for detaljerede logindtastninger",
    "ringBufferSizeLabel": "Ringbufferstørrelse",
    "ringBufferSizeDesc": "Størrelse på ringbufferen til træstammer",
    "semanticCacheEnabledLabel": "Semantisk cache aktiveret",
    "semanticCacheMaxSizeLabel": "Semantisk cache maks. størrelse",
    "semanticCacheMaxSizeDesc": "Maksimalt antal semantiske cache-poster",
    "semanticCacheTTLLabel": "Semantisk cache TTL",
    "promptCacheEnabledLabel": "Prompt-cache aktiveret",
    "promptCacheEnabledDesc": "Aktiver prompt-caching",
    "promptCacheStrategyLabel": "Spørg cachestrategi",
    "promptCacheStrategyDesc": "Strategi for hurtig caching",
    "alwaysPreserveClientCacheLabel": "Bevar altid klientcache",
    "alwaysPreserveClientCacheDesc": "Politik for bevaring af klientcache",
    "logRetentionPolicyTitle": "Politik for opbevaring af log",
    "resilienceUseUpstream429HintsForBreaker": "Brug upstream 429 tip (breaker)",
    "appearanceLogoPreviewAlt": "Forhåndsvisning af logo",
    "appearanceFaviconPreviewAlt": "Forhåndsvisning af favicon",
    "oneproxyLastSync": "Sidste synkronisering",
    "oneproxyAllProtocols": "Alle protokoller",
    "oneproxyCountryCodePlaceholder": "Landekode (f.eks. USA)",
    "oneproxyMinQualityPlaceholder": "Min kvalitet",
    "oneproxyLoadingProxies": "Indlæser proxyer...",
    "oneproxyLastSyncLabel": "Sidste synkronisering:",
    "oneproxyProxiesFetched": "Fuldmagter hentet:",
    "oneproxyConsecutiveFailures": "På hinanden følgende fejl:",
    "oneproxyErrorLabel": "Fejl:",
    "oneproxyNever": "Aldrig",
    "oneproxySyncStatusTitle": "Synkroniseringsstatus",
    "oneproxySuccess": "Succes",
    "oneproxyFailed": "Mislykkedes",
    "routingAntigravitySignatureTitle": "Antigravity Signature Cache Mode",
    "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-fingeraftryk (pr. udbyder)",
    "routingServerRejectedSave": "⚠ Server afvist gem:",
    "routingAddTransformOp": "Tilføj en transformationsop",
    "routingClientCacheControlTitle": "Klient cache kontrol",
    "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": "Zero-Config 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 autovariant",
    "visionBridge": "Visionsbro",
    "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": "Bromodel",
    "visionBridgeModelPlaceholder": "openai/gpt-4o-mini",
    "visionBridgeModelHint": "__MISSING__:Any OmniRoute model ID that supports vision can be used here.",
    "visionBridgePrompt": "Broprompt",
    "visionBridgePromptPlaceholder": "Beskriv dette billede kortfattet.",
    "visionBridgePromptHint": "__MISSING__:Sent to the vision model before the extracted description is injected back into the original request.",
    "visionBridgeTimeoutMs": "Timeout (ms)",
    "visionBridgeMaxImagesPerRequest": "Max billeder pr. anmodning",
    "resilienceMaxBackoffSteps": "Max backoff steps",
    "resilienceProviderBreakerTitle": "Circuit Breaker per Provider",
    "resilienceFailureThreshold": "Failure threshold",
    "resilienceResetTimeout": "Nulstil timeout",
    "resilienceFailureThresholdLabel": "Fejlgrænse",
    "resilienceResetTimeoutLabel": "Nulstil timeout",
    "resilienceConnectionCooldownTitle": "Connection Cooldown",
    "resilienceUseUpstreamRetryHintsLabel": "Brug opstrøms tip til genforsøg",
    "resilienceUseUpstream429BreakerLabel": "Brug upstream 429 tip (breaker)",
    "resilienceMaxBackoffStepsLabel": "Max tilbageskridtstrin",
    "resilienceYes": "Ja",
    "resilienceNo": "Nej",
    "resilienceDefault": "Default",
    "storageDatabaseBackupRetention": "Database backup opbevaring",
    "storagePurgeData": "Rens data",
    "retentionQuotaSnapshots": "Kvote-øjebliksbilleder (dage)",
    "retentionMcpAudit": "MCP-revision (dage)",
    "retentionA2aEvents": "A2A-begivenheder (dage)",
    "retentionCallLogs": "Opkaldslogger (dage)",
    "retentionUsageHistory": "Brugshistorik (dage)",
    "retentionMemoryEntries": "Hukommelsesindgange (dage)",
    "storageAutoVacuumMode": "Automatisk vakuumtilstand",
    "storageScheduledVacuum": "Planlagt vakuum",
    "storageVacuumHour": "Vakuum time (0-23)",
    "storagePageSize": "Sidestørrelse (bytes)",
    "storageDatabaseSize": "Database størrelse",
    "storagePageCount": "Sideantal",
    "storageFreelistCount": "Freelistetæller",
    "storageLastVacuum": "Sidste vakuum",
    "storageLastOptimization": "Sidste optimering",
    "storageIntegrityCheck": "Integritetstjek",
    "storageIntegrityOk": "✓ OK",
    "storageIntegrityError": "✗ Fejl",
    "storageUsageTokenBuffer": "Usage Token Buffer",
    "compressionSettingsAutoTriggerMode": "Auto trigger mode",
    "compressionSettingsMcpDescriptionCompression": "MCP beskrivelse komprimering",
    "compressionSettingsCavemanIntensity": "Hulemands intensitet",
    "compressionSettingsCavemanOutputMode": "Caveman output mode",
    "compressionSettingsOutputIntensity": "Output intensitet",
    "compressionSettingsAutoClarityBypass": "Automatisk klarhed bypass",
    "resilienceWaitForCooldown": "Vent på nedkøling",
    "resilienceEnableServerSideWait": "Aktiver ventetid på serversiden",
    "resilienceMaximumRetries": "Maksimalt antal genforsøg",
    "resilienceMaximumWaitPerRetry": "Maksimal ventetid pr. genforsøg",
    "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace",
    "memorySkillsFailedToSave": "Kunne ikke gemme",
    "memorySkillsApiKey": "API nøgle",
    "memorySkillsActiveSkillsProvider": "Udbyder af aktive færdigheder",
    "cliproxyapiFallback": "CLIProxyAPI Fallback",
    "cliproxyapiEnableFallback": "Aktiver CLIProxyAPI Fallback",
    "cliproxyapiUrl": "CLIProxyAPI URL",
    "cliproxyapiStatus": "CLIProxyAPI-status",
    "cliproxyapiNotDetected": "Ikke opdaget",
    "payloadRulesTitle": "Regler for nyttelast",
    "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": "Modeller i cooldown",
    "modelCooldownsEmpty": "Ingen modeller i cooldown lige nu.",
    "codexFastTierTitle": "Codex Fast Tier",
    "codexFastTierDesc": "Globalt injicer service_tier=prioritet for OpenAI Codex-anmodninger.",
    "codexFastTierHint": "Når det er aktiveret, tilføjer OmniRoute service_tier=prioritet til udgående Codex-anmodninger for forbindelser, der ikke allerede angiver et niveau. Prioritetsniveau kræver en OpenAI Enterprise API-nøgle eller ChatGPT-auth Codex-stien; andre nøgletyper vil modtage en tier-relateret fejl fra OpenAI. Indstillinger for hver forbindelse på Codex-udbydersiden har forrang.",
    "codexFastTierSaveError": "Kunne ikke opdatere Codex Fast Tier-indstillingen",
    "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": "Vælg udvalgte Claude-anmodninger til Antropisk hurtig tilstand (hastighed: \"hurtig\").",
    "claudeFastModeHint": "Anthropic understøtter ikke officielt Fast Mode for klienter i SDK-stil. Når den er aktiveret, videresender OmniRoute en X-CPA-Force-Fast-Mode-header, så en parret CLIProxyAPI-build kan tilmelde sig spoof indgangspunktet. Kun de anførte Opus-modeller er lukket af Anthropics klientside-tjek. Abonnementsniveau, Max-plan og Fast Mode-kreditsaldo er stadig håndhævet på serversiden - Anthropic kan returnere out_of_credits, selv når til/fra-knappen er slået til.",
    "claudeFastModeModelsLabel": "Anvendt på modeller ({count})",
    "claudeFastModeModelCheckbox": "Aktiver hurtig tilstand for {model}",
    "claudeFastModeSaveError": "Claude Fast Mode-indstillingen kunne ikke opdateres",
    "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": "Grundafkøling",
    "scopeLabel": "Omfang",
    "triggerLabel": "Udløser",
    "effectLabel": "Effekt",
    "statusEnabled": "Aktiveret",
    "statusDisabled": "Deaktiveret",
    "resilienceRequestQueueScope": "Per anmodningskø",
    "resilienceRequestQueueTrigger": "Før du sender til opstrøms",
    "resilienceRequestQueueEffect": "Sætter forespørgsler i kø, begrænser samtidighed og udelukker opkald",
    "resilienceRequestQueueDesc": "Dette lag styrer kun kø og pacing. Den opbevarer ikke nedkøling eller åbne afbrydere.",
    "resilienceAutoEnableApiKeyProvidersDesc": "Aktiverer købeskyttelse som standard for aktive API-nøgleforbindelser.",
    "resilienceMaxQueueWait": "Maksimal ventetid i kø",
    "resilienceConnectionCooldownScope": "Individuel tilslutning",
    "resilienceConnectionCooldownTrigger": "Når en forbindelse returnerer en forbigående opstrømsfejl",
    "resilienceConnectionCooldownEffect": "Springer midlertidigt den forbindelse over og øger backoff for gentagne fejl",
    "resilienceConnectionCooldownDesc": "Basisafkølingen dækker forbigående forbindelsesfejl. Når upstream-tip til genforsøg er aktiveret, tilsidesætter udbyderens eksplicitte vindue den lokale nedkøling.",
    "resilienceUseUpstreamRetryHintsDesc": "Bruger genforsøg efter/nulstil værdier fra upstream-udbyderen, når de er tilgængelige.",
    "resilienceUseUpstream429BreakerHints": "Brug upstream 429 tip til breaker cooldown",
    "resilienceUseUpstream429BreakerHintsShort": "Brug upstream 429 tip",
    "resilienceUseUpstream429BreakerHintsDesc": "Anvend Retry-After / kvote-opbrugte signaler fra 429 svar på afbryderens afkølingsvarighed. Standard bruger en per-udbyder-politik: direkte cloud-udbydere er som standard slået til; omvendt proxy, selv-hostede og CLI-støttede udbydere er som standard deaktiveret. Uafhængig af \"Brug upstream-tip til genforsøg\".",
    "resilienceProviderBreakerScope": "Hele udbyderen",
    "resilienceProviderBreakerTrigger": "Endelig transport/serverfejl, efter at forbindelsen er opbrugt",
    "resilienceProviderBreakerEffect": "Blokerer midlertidigt denne udbyder, indtil nulstillingstiden udløber",
    "resilienceProviderBreakerDesc": "Live breaker-tilstand vises kun på Sundhedssiden. Forbindelsesbestemte 429-takstgrænser forbliver i Connection Cooldown og udløser ikke udbyderens afbryder.",
    "resilienceResetTime": "Nulstil tid",
    "resilienceWaitForCooldownTitle": "Vent på nedkøling",
    "resilienceWaitForCooldownScope": "Aktuel kundeanmodning",
    "resilienceWaitForCooldownTrigger": "Når alle kandidatforbindelser allerede er ved at køle af",
    "resilienceWaitForCooldownEffect": "Venter på serveren og prøver igen, når den første nedkøling udløber",
    "resilienceWaitForCooldownDesc": "Dette påvirker kun den aktuelle anmodning. Den gemmer ikke forbindelse eller udbydertilstand.",
    "resilienceEnableServerWait": "Aktiver ventetid på serversiden",
    "resilienceEnableServerWaitDesc": "Når den er aktiveret, venter OmniRoute på, at den første nedkøling udløber og prøver automatisk igen.",
    "resilienceMaxAttempts": "Maksimalt antal forsøg",
    "resilienceMaxWaitPerAttempt": "Maksimal ventetid pr. forsøg",
    "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.",
    "forcedFingerprintBadge": "Required",
    "codexSessionAffinityTitle": "Codex session affinitet",
    "codexSessionAffinityDesc": "Holder en Codex-samtale på samme konto i så mange sekunder. 0 deaktiverer det.",
    "codexSessionAffinityTtl": "Affinitets-TTL (sekunder)",
    "resetAwareQuotaCacheTitle": "Nulstil-bevidst kvote-cache",
    "resetAwareQuotaCacheDesc": "Cacher kun kvotetelemetri til nulstillingsbevidst bestilling. Kvote preflight beskytter stadig anmodninger. 0/0 bliver ved med at hente live.",
    "resetAwareQuotaCacheTtl": "Frisk TTL (sekunder)",
    "resetAwareQuotaCacheMaxStale": "Max forældet (sekunder)",
    "qdrantCleanupSuccess": "OK: fjernede {count} point (retention: {days} dage)",
    "qdrantCleanupFailed": "Oprydning mislykkedes",
    "qdrantCleanupError": "Fejl: {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": "Filterkatalog",
    "filterCatalogDesc": "Tilgængelige outputfiltre efter kategori",
    "guidedConfig": "Konfiguration",
    "guidedConfigDesc": "Juster, hvordan RTK filtrerer dit terminaloutput",
    "maxLines": "Max lines",
    "maxChars": "Max chars",
    "deduplicateThreshold": "Deduplikatgrænse",
    "customFilters": "Brugerdefinerede filtre",
    "detectedType": "Registreret type",
    "confidence": "Tillid",
    "beforeAfter": "Før / Efter",
    "trustProjectFilters": "Stol på projektfiltre",
    "rawOutputRetention": "Fastholdelse af rå output",
    "rawOutputNever": "Aldrig",
    "rawOutputFailures": "Fejl",
    "rawOutputAlways": "Altid",
    "rawOutputMaxBytes": "Rå output maks. bytes",
    "filterTesting": "Filter Testing",
    "pasteOutput": "Paste tool output to test filtering...",
    "presetHigh": "Aggressiv",
    "presetLow": "Lys",
    "presetMaxChars": "Maks. output-tegn",
    "presetMaxLines": "Max udgangslinjer",
    "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": "Simpelt",
    "advancedMode": "Avanceret",
    "searchFilters": "Søgefiltre...",
    "tooltipDedup": "Hvor aggressivt at fjerne gentagne linjer.",
    "tooltipMaxChars": "Maksimalt antal tegn pr. outputblok.",
    "tooltipMaxLines": "Maksimalt antal linjer at holde fra kommandoudgang. Overskydende afkortes."
  },
  "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": "Avanceret konfiguration",
    "advancedConfigDesc": "Finjuster kompressionsadfærd",
    "aggressiveSettings": "Aggressive indstillinger",
    "aggressiveSettingsDesc": "Maksimal komprimering med potentielle kvalitetsafvejninger",
    "requests": "Requests",
    "tokensSaved": "Tokens saved",
    "savingsPercent": "Savings %",
    "avgLatency": "Avg latency",
    "languagePacks": "Language Packs",
    "languagePacksDesc": "Enable compression rules for specific languages.",
    "labelAutoTrigger": "Auto-komprimer, når konteksten overskrider",
    "labelCompressionRate": "Kompressionsstyrke",
    "labelMaxTokens": "Mål tokens pr. besked",
    "labelMinLength": "Minimum beskedlængde",
    "labelMinSavings": "Minimum tokens at gemme",
    "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": "Udgangstilstand",
    "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.",
    "outputModeTitle": "Output Mode",
    "quickSettings": "Hurtige indstillinger",
    "quickSettingsDesc": "Grundlæggende komprimeringsindstillinger for at komme i gang",
    "autoClarity": "Auto-Clarity Bypass",
    "bypassConditions": "Bypass conditions",
    "bypassConditionsList": "sikkerhed, irreversibel, afklaring, ordrefølsom",
    "simpleMode": "Simpelt",
    "advancedMode": "Avanceret",
    "tooltipAutoTrigger": "Komprimer automatisk, når konteksten overstiger denne størrelse.",
    "tooltipCompressionRate": "0,0 = ingen, 1,0 = maksimum. 0,5 = balanceret.",
    "tooltipMaxTokens": "Mål tokenantal efter komprimering. Lavere = mere aggressiv.",
    "tooltipMinLength": "Beskeder, der er kortere end dette, komprimeres ikke. Lavere = mere kompression.",
    "tooltipMinSavings": "Komprimer kun, hvis det sparer mindst så mange tokens.",
    "ultraSettings": "Ultra-indstillinger",
    "ultraSettingsDesc": "SLM-drevet semantisk komprimering",
    "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": "Oversætter",
    "metaTitle": "Oversætter Legeplads | OmniRoute",
    "metaDescription": "Debug, test og visualiser API-formatoversættelser mellem udbydere",
    "playgroundTitle": "Oversætter legeplads",
    "playground": "Legeplads",
    "realtime": "Oversættelsesaktivitet i realtid",
    "chatTester": "Chat tester",
    "testBench": "Test bænk",
    "liveMonitor": "Live Monitor",
    "modeDescriptionPlayground": "Indsæt enhver API-anmodningstekst og se, hvordan OmniRoute oversætter den mellem udbyderformater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)",
    "modeDescriptionChatTester": "Send rigtige chatanmodninger gennem OmniRoute og inspicer hele rundrejsen: input, oversat anmodning, udbydersvar og oversat output.",
    "modeDescriptionTestBench": "Kør foruddefinerede scenarier og sammenlign kompatibilitet på tværs af udbydere og modeller.",
    "modeDescriptionLiveMonitor": "Se oversættelsesbegivenheder i realtid, mens anmodninger flyder gennem OmniRoute.",
    "modeDescriptionFallback": "Debug, test og visualiser, hvordan OmniRoute oversætter API-anmodninger mellem udbydere.",
    "recentTranslations": "Nylige oversættelser",
    "noTranslations": "Ingen oversættelser endnu",
    "source": "Kilde",
    "target": "Mål",
    "time": "Tid",
    "model": "Model",
    "status": "Status",
    "latency": "Latency",
    "totalTranslations": "Samlede oversættelser",
    "successful": "Vellykket",
    "errors": "Fejl",
    "avgLatency": "Gns. latens",
    "millisecondsShort": "{value}ms",
    "notAvailableSymbol": "—",
    "liveAutoRefreshing": "Live — Automatisk opdatering",
    "paused": "Pause",
    "eventsAppearHint": "Oversættelsesbegivenheder vises her, når anmodninger flyder gennem OmniRoute. Brug en af disse metoder til at generere begivenheder:",
    "chatTesterTab": "Fanen Chat Tester",
    "testBenchTab": "Fanen Testbænk",
    "externalApiCalls": "Eksterne API-kald",
    "ideCliIntegrations": "IDE/CLI integrationer",
    "inMemoryNote": "Bemærk: Hændelser gemmes i hukommelsen og nulstilles, når serveren genstarter.",
    "ok": "OK",
    "errorShort": "ERR",
    "formatConverter": "Formatkonverter",
    "formatConverterDescription": "Indsæt eller skriv en JSON-anmodningstekst. Oversætteren vil automatisk registrere kildeformatet og konvertere det til målformatet. Brug dette til at fejlsøge, hvordan OmniRoute oversætter anmodninger mellem formater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).",
    "translationPathHubSpoke": "{source} → OpenAI (mellemliggende) → {target}",
    "translationPathDirect": "{source} → {target} (direkte oversætter)",
    "translationPathPassthrough": "Samme format - ingen oversættelse nødvendig",
    "openaiIntermediatePanel": "OpenAI Intermediate",
    "autoFeaturesTitle": "Hvad OmniRoute gør automatisk",
    "autoFeaturesCount": "8 funktioner",
    "featureReasoningCache": "Begrundelse Cache",
    "featureReasoningCacheDesc": "Geninjicerer cachelagret reasoning_content til tænketilstandsmodeller (DeepSeek V4, Kimi K2, Qwen), når klienter udelader det fra samtalehistorikken.",
    "featureSchemaCoercion": "Skema tvang",
    "featureSchemaCoercionDesc": "Retter ødelagte værktøjsskemaer: tilføjer manglende yderligere egenskaber, renser lange beskrivelser, normaliserer indlejrede objekter.",
    "featureRoleNormalization": "Rollenormalisering",
    "featureRoleNormalizationDesc": "Kortudvikler→system til ikke-OpenAI-mål. Kortsystem→bruger til modeller, der ikke understøtter systemrollen.",
    "featureToolCallIds": "Værktøj Call ID Normalization",
    "featureToolCallIdsDesc": "Genererer unikke tool_call ID'er, når de mangler. Normaliserer til 9-char format for udbydere som Mistral.",
    "featureMissingToolResponse": "Tool Response Injection",
    "featureMissingToolResponseDesc": "Injicerer tomme tool_result-meddelelser, når klienter sender tool_calls uden tilsvarende svar.",
    "featureThinkingBudget": "Tænkende budget",
    "featureThinkingBudgetDesc": "Administrerer automatisk tankekonfiguration. Fjerner tænkeparametre, når den sidste besked ikke er fra brugeren.",
    "featureDirectPaths": "Direkte oversættelsesstier",
    "featureDirectPathsDesc": "Nogle formatpar (Claude → Gemini) har direkte oversættere, der omgår OpenAI-hubben og producerer mere nøjagtigt output.",
    "featureImageMapping": "Kortlægning af billedstørrelse",
    "featureImageMappingDesc": "Oversætter billeddimensionskonventioner mellem API-formater (f.eks. OpenAI-detaljeniveauer → Gemini-dimensioner).",
    "input": "Input",
    "output": "Output",
    "auto": "Auto",
    "swapFormats": "Skift formater",
    "translateAction": "Oversæt",
    "clear": "Ryd",
    "inputPlaceholder": "Indsæt en anmodningstekst her eller vælg en skabelon nedenfor...",
    "exampleTemplates": "Eksempel skabeloner",
    "exampleTemplatesHint": "— Klik for at indlæse",
    "templateLoadHint": "Skabelonen indlæser anmodningen i formatet {format}. Skift kildeformat for at indlæse i et andet format.",
    "compatibilityTester": "Kompatibilitetstester",
    "compatibilityReport": "Kompatibilitetsrapport",
    "testBenchDescription": "Kør foruddefinerede scenarier (simpel chat, værktøjsopkald osv.) for at bekræfte oversættelse og udbyderkompatibilitet. Vælg et kildeformat og måludbyder, og kør derefter alle test for at se en kompatibilitetsprocent. Brug dette til at finde ud af, hvilke funktioner der fungerer på tværs af udbydere.",
    "targetProvider": "Måludbyder",
    "runAllTests": "Kør alle tests",
    "runTest": "Kør test",
    "reRun": "Kør igen",
    "running": "Kører...",
    "passed": "bestået",
    "failed": "mislykkedes",
    "passedIconLabel": "✅ Bestået",
    "chunks": "bidder",
    "scenarioSimpleChat": "Simpel chat",
    "scenarioToolCalling": "Værktøjsopkald",
    "scenarioMultiTurn": "Multivending",
    "scenarioThinking": "Tænker",
    "scenarioSystemPrompt": "Systemprompt",
    "scenarioStreaming": "Streaming",
    "templateNames": {
      "simple-chat": "Simpel chat",
      "tool-calling": "Værktøjsopkald",
      "multi-turn": "Multivending",
      "thinking": "Tænker",
      "system-prompt": "Systemprompt",
      "streaming": "Streaming",
      "vision": "Vision",
      "schema-coercion": "Skema tvang"
    },
    "templateDescriptions": {
      "simple-chat": "Grundlæggende tekstbesked",
      "tool-calling": "Funktion/værktøjskald",
      "multi-turn": "Samtale med historien",
      "thinking": "Udvidet tænkning/ræsonnement",
      "system-prompt": "Komplekse systeminstruktioner",
      "streaming": "SSE streaming anmodning",
      "vision": "Multimodal anmodning med billedinput",
      "schema-coercion": "Håndhævelse af struktureret output / JSON-skema"
    },
    "templatePayloads": {
      "simpleChat": {
        "system": "Du er en hjælpsom assistent.",
        "userGreeting": "Hej! Hvordan har du det i dag?"
      },
      "toolCalling": {
        "userWeather": "Hvordan er vejret i São Paulo?",
        "toolDescription": "Få det aktuelle vejr for en placering",
        "cityNameDescription": "Byens navn"
      },
      "multiTurn": {
        "system": "Du er kodningsassistent.",
        "userInitial": "Skriv en funktion til at sortere et array i Python.",
        "assistantExample": "Her er en simpel sorteringsfunktion:\n\n``` python\ndef sort_array(arr):\n    returner sorteret(arr)\n```",
        "userFollowUp": "Gør det nu sorteret i faldende rækkefølge."
      },
      "thinking": {
        "question": "Hvad er summen af de første 100 primtal?"
      },
      "systemPrompt": {
        "systemInstruction": "Du er senior softwareingeniør med speciale i distribuerede systemer. Besvar spørgsmål kortfattet ved at bruge industriens bedste praksis. Angiv altid kodeeksempler, når det er relevant. Formater dine svar ved hjælp af markdown.",
        "question": "Hvordan implementerer jeg et afbrydermønster?"
      },
      "streaming": {
        "prompt": "Fortæl mig en kort historie om en robot, der lærer at male."
      },
      "vision": {
        "system": "Du er en assistent, der beskriver billeder præcist.",
        "userPrompt": "Hvad er vist på dette billede?",
        "imageUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/600px-PNG_transparency_demonstration_1.png"
      },
      "schemaCoercion": {
        "userPrompt": "Slå vejret for Tokyo op ved hjælp af metriske enheder, og medtag timeoversigten.",
        "toolDescription": "Hent vejr til en by med strukturerede muligheder.",
        "cityDescription": "Byen, der skal forespørges, f.eks. 'Tokyo' eller 'New York'."
      }
    },
    "openaiCompatibleLabel": "OpenAI-kompatibel",
    "anthropicCompatibleLabel": "Antropisk kompatibel",
    "noTemplateForFormat": "Ingen skabelon til dette format",
    "translationFailed": "Oversættelse mislykkedes: {error}",
    "pipelineDebugger": "Pipeline Debugger",
    "translationPipeline": "Oversættelsesrørledning",
    "pipelineVisualization": "Pipeline visualisering",
    "pipelineVisualizationHint": "Send en besked for at se, hvordan din anmodning flyder gennem registrering → oversættelse → udbyderopkald.",
    "chatTesterDescription": "Send beskeder som et specifikt klientformat og inspicér hvert trin i oversættelsespipelinen.",
    "chatTesterFlow": "Client Request → Format Detection → OpenAI Intermediate → Provider Format → Response",
    "clickStepToInspect": "Klik på et trin for at inspicere dataene på det tidspunkt.",
    "clientFormat": "Klientformat",
    "provider": "Udbyder",
    "modelPlaceholder": "Vælg eller skriv et modelnavn...",
    "sendMessageToSeePipeline": "Send en besked for at se oversættelsespipeline",
    "chatMessageHintPrefix": "Din besked vil blive formateret som en",
    "chatMessageHintSuffix": "anmodning, oversat gennem pipelinen og sendt til den valgte udbyder.",
    "youWithFormat": "Dig ({format})",
    "assistant": "Assistent",
    "typeMessage": "Skriv en besked...",
    "send": "Send",
    "clientRequest": "Kundeanmodning",
    "clientRequestDescription": "Anmodningslegemet, som din klient ville sende det",
    "formatDetected": "Format fundet",
    "formatDetectedDescription": "OmniRoute registrerer automatisk API-formatet fra anmodningsstrukturen",
    "openaiIntermediate": "OpenAI Intermediate",
    "openaiIntermediateDescription": "Alle formater normaliseres først til OpenAI-format (den universelle bro)",
    "providerFormat": "Udbyder format",
    "providerFormatDescription": "OpenAI-formatet er oversat til udbyderens oprindelige format",
    "providerResponse": "Udbyder svar",
    "providerResponseRawDescription": "Det rå svar fra udbyderens API",
    "providerResponseSseDescription": "Den rå SSE-stream fra udbyderens API",
    "unexpectedError": "Der opstod en uventet fejl",
    "error": "Fejl",
    "errorMessage": "Fejl: {message}",
    "requestFailed": "Anmodningen mislykkedes",
    "noTextExtracted": "(Ingen tekst udtrukket)",
    "liveMonitorMemoryNote": "Hændelser gemmes i hukommelsen og går tabt ved genstart.",
    "liveMonitorMemoryCapNote": "Maks. 200 begivenheder bevaret.",
    "eventSourcesLabel": "Begivenhedskilder:",
    "eventSourceTranslatorPage": "• Oversætterside (chattester, testbænk)",
    "eventSourceMainPipeline": "• Hovedanmodningspipeline (CLI/IDE/API-trafik)",
    "liveMonitorDescriptionPrefix": "Viser oversættelsesbegivenheder, mens API-kald flyder gennem OmniRoute. Hændelser kommer fra bufferen i hukommelsen (nulstilles ved genstart). Brug",
    "liveMonitorDescriptionSuffix": ", eller eksterne API-kald for at generere hændelser.",
    "streamTransformer": "Stream transformer",
    "modeDescriptionStreamTransformer": "Kør chatafslutninger SSE-streams gennem Responses-transformeren.",
    "streamTransformerTitle": "Svar Stream Transformer",
    "streamTransformerDescription": "Indsæt en SSE-stream for chatafslutninger, kør den gennem OmniRoutes Responses-transformer, og inspicér de udsendte respons.*-hændelser, før du forbinder en klient.",
    "loadTextSample": "Indlæs teksteksempel",
    "loadToolSample": "Indlæs værktøj-opkald prøve",
    "transformToResponses": "Transformer til svar",
    "rawChatSseInput": "Rå chat-afslutninger SSE",
    "transformedResponsesSse": "Transformeret svar API SSE",
    "noResultsYet": "Ingen resultater endnu",
    "transformedEvents": "Forvandlede begivenheder",
    "uniqueEventTypes": "Unikke begivenhedstyper",
    "inputLines": "Indgangslinjer",
    "outputLines": "Udgangslinjer",
    "transformedEventTimeline": "Transformeret begivenheds tidslinje",
    "transformerTimelineHint": "Kør transformeren for at inspicere udsendte response.output_* hændelser i rækkefølge.",
    "eventType": "Begivenhedstype",
    "eventPreview": "Forhåndsvisning",
    "comboRouted": "Combo dirigeret",
    "uniqueEndpoints": "Unikke endepunkter",
    "routeDetails": "Rutedetaljer",
    "comboBadge": "Combo",
    "routeEndpointLabel": "Slutpunkt",
    "routeConnectionLabel": "Forbindelse",
    "scenarioVision": "Vision (billedforståelse)",
    "scenarioSchemaCoercion": "Skema-tvang (struktureret output)",
    "techniques": "Teknikker:"
  },
  "usage": {
    "title": "Brug",
    "loggerTab": "Logger",
    "proxyTab": "Fuldmagt",
    "budgetManagement": "Budgetstyring",
    "budgetSaved": "Budgetgrænser gemt",
    "budgetSaveFailed": "Budgettet kunne ikke gemmes",
    "loadingBudgetData": "Indlæser budgetdata...",
    "noApiKeysTitle": "Ingen API-nøgler",
    "noApiKeysDescription": "Tilføj API-nøgler først for at opsætte budgetgrænser.",
    "apiKey": "API nøgle",
    "todaysSpend": "Dagens forbrug",
    "thisMonth": "Denne måned",
    "setLimits": "Sæt grænser",
    "dailyLimitUsd": "Daglig grænse (USD)",
    "monthlyLimitUsd": "Månedlig grænse (USD)",
    "warningThresholdPercent": "Advarselstærskel (%)",
    "dailyLimitPlaceholder": "f.eks. 5.00",
    "monthlyLimitPlaceholder": "f.eks. 50,00",
    "warningThresholdPlaceholder": "80",
    "saveLimits": "Gem grænser",
    "budgetOk": "Budget OK — {remaining} tilbage",
    "budgetExceeded": "Budget overskredet — anmodninger kan blive blokeret",
    "totalRequests": "Samlet antal anmodninger",
    "noDataYet": "Ingen data endnu",
    "latency": "Latency",
    "latencyP50": "p50",
    "latencyP95": "s95",
    "latencyP99": "s99",
    "promptCache": "Spørg cache",
    "systemHealth": "Systemsundhed",
    "entries": "Indgange",
    "activeCount": "{count} aktiv",
    "openCircuitBreakersDetected": "Åbne afbrydere registreret",
    "hitRate": "Hitrate",
    "hitsMisses": "Hits / Misses",
    "circuitBreakers": "Strømafbrydere",
    "lockedIPs": "Låste IP'er",
    "lockoutsAutoRefreshHint": "Låse for hastighedsbegrænsning pr. model • Automatisk opdatering 10s",
    "lockedCount": "{count, plural, one {# locked} other {# locked}}",
    "timeLeft": "{time} tilbage",
    "howItWorks": "Hvordan det virker",
    "howItWorksSubtitle": "Lær, hvordan evalueringer validerer dine LLM-svar",
    "define": "Definer",
    "defineStepDescription": "Opret testcases med inputprompter og forventede outputkriterier ved hjælp af strategier som indeholder, regex eller eksakt match.",
    "run": "Løb",
    "runStepDescription": "Udfør testsager mod dine LLM-endepunkter gennem OmniRoute. Hver sag sendes som en ægte API-anmodning.",
    "evaluate": "Evaluer",
    "evaluateStepDescription": "Svar sammenlignes med forventede kriterier. Se bestået/ikke bestået for hver sag med latency-metrics og detaljeret feedback.",
    "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": "Evalueringssuiter",
    "evalSuitesHint": "Klik på en suite for at se testcases, og kør derefter for at evaluere dine LLM-endepunkter",
    "evalsLoading": "Indlæser eval suiter...",
    "noEvalSuitesFound": "Ingen Eval-suiter fundet",
    "noEvalSuitesDescription": "Eval-suiter kan defineres via API'et eller i kode. De tester modeloutput mod forventede resultater ved hjælp af strategier som indeholder, regex, eksakt match og brugerdefinerede funktioner.",
    "columnCase": "Sag",
    "columnStatus": "Status",
    "columnLatency": "Latency",
    "columnDetails": "Detaljer",
    "columnModel": "Model",
    "columnStrategy": "Strategi",
    "columnExpected": "Forventet",
    "statsSuites": "Suiter",
    "statsTestCases": "Test Cases",
    "statsModels": "Modeller",
    "statsCoverage": "Dækning",
    "statsStrategiesCount": "{count} strategier",
    "evaluationStrategies": "Evalueringsstrategier",
    "modelsUnderTest": "Modeller under test",
    "searchSuitesPlaceholder": "Søg suiter...",
    "passSuffix": "bestå",
    "casesCount": "{count, plural, one {# case} other {# cases}}",
    "runEval": "Kør Eval",
    "runAllSuites": "Kør alle",
    "runAllRunning": "Kører alle...",
    "runAllProgress": "Kører {current}/{total}: {name}",
    "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}",
    "runAllCompleted": "Kørte {suites} suiter — {passed} bestået, {failed} mislykkedes",
    "runAllCompletedWithFailures": "Kørte {completed} suiter; {failedSuites} kunne ikke fuldføres",
    "runningProgress": "Kører {current}/{total}...",
    "passRate": "beståelsesprocent",
    "summaryBreakdown": "{passed} bestået · {failed} mislykkedes · {total} i alt",
    "passedIconLabel": "✅ Bestået",
    "failedIconLabel": "❌ Mislykkedes",
    "resultPassed": "Bestået",
    "resultFailed": "Mislykkedes",
    "expandResult": "Udvid resultatdetaljerne",
    "collapseResult": "Skjul resultatdetaljerne",
    "detailsContains": "Indeholder: \"{term}\"",
    "detailsRegex": "Regex: {pattern}",
    "detailsExpected": "Forventet: \"{expected}\"",
    "expectedOutputLabel": "Forventet output",
    "noResultsYet": "Ingen resultater endnu",
    "testCasesCount": "Testcases ({count})",
    "noTestCasesDefined": "Ingen testcases defineret",
    "runEvalHint": "Klik på \"Run Eval\" for at udføre alle sager mod dit LLM-slutpunkt. Hver test sender en reel anmodning gennem OmniRoute.",
    "notifyNoTestCases": "Ingen testcases defineret for denne suite",
    "notifyAllCasesPassed": "Alle {total} sager bestået ✅",
    "notifySomeCasesFailed": "{passed}/{total} bestået, {failed} mislykkedes",
    "notifyEvalRunFailed": "Evalkørsel mislykkedes",
    "notifyEvalTitle": "Eval: {name}",
    "modelEvals": "Modelvurderinger",
    "evalsHeroDescription": "Test og valider dine LLM-endepunkter ved at køre foruddefinerede evalueringspakker. Hver suite indeholder testcases, der sender reelle prompter gennem OmniRoute og sammenligner svar med forventede kriterier - hjælper dig med at opdage regression, sammenligne modeller og sikre svarkvalitet på tværs af udbydere.",
    "qualityValidation": "Kvalitetsvalidering",
    "modelComparison": "Model sammenligning",
    "regressionDetection": "Regression detektion",
    "latencyBenchmarks": "Latency Benchmarks",
    "modelLockouts": "Model Lockouts",
    "noLockouts": "Ingen modeller er låst i øjeblikket",
    "activeSessions": "Aktive sessioner",
    "noSessions": "Ingen aktive sessioner",
    "sessionsHint": "Sessioner vises, når anmodninger strømmer gennem proxyen",
    "sessionsTrackedHint": "Spores via anmodning om fingeraftryk • Automatisk opdatering 5s",
    "session": "Session",
    "age": "Alder",
    "requests": "Forespørgsler",
    "connection": "Forbindelse",
    "durationMillisecondsShort": "{value}ms",
    "durationSecondsShort": "{value}s",
    "durationMinutesShort": "{value}m",
    "durationHoursShort": "{value}h",
    "reasonSeparator": " - ",
    "notAvailableSymbol": "-",
    "providerLimits": "Udbydergrænser",
    "noProviders": "Ingen udbydere tilsluttet",
    "connectProvidersForQuota": "Opret forbindelse til udbydere med OAuth for at spore dine API-kvotegrænser og brug.",
    "accountsCount": "{count, plural, one {# account} other {# accounts}}",
    "filteredFromCount": "(filtreret fra {count})",
    "autoRefresh": "Automatisk opdatering",
    "refreshAll": "Opdater alle",
    "loadingQuotas": "Indlæser...",
    "account": "Konto",
    "modelQuotas": "Modelkvoter",
    "lastUsed": "Last Refreshed",
    "actions": "Handlinger",
    "refreshQuota": "Opdater kvote",
    "today": "I dag",
    "tomorrow": "I morgen",
    "dayTimeFormat": "{day}, {time}",
    "inDuration": "i {duration}",
    "notApplicable": "N/A",
    "rawPlanWithValue": "Rå plan: {plan}",
    "noPlanFromProvider": "Ingen plan fra udbyderen",
    "noQuotaData": "Ingen kvotedata",
    "cardExpand": "__MISSING__:Expand",
    "cardCollapse": "__MISSING__:Collapse",
    "moreQuotas": "__MISSING__:+{count} more",
    "ungrouped": "Ungrouped",
    "viewFlat": "Flat",
    "viewByEnvironment": "By Environment",
    "noQuotaDataAvailable": "Ingen tilgængelige kvotedata",
    "noAccountsForTierFilter": "Der blev ikke fundet nogen konti til niveaufilter",
    "tierAll": "Alle",
    "tierEnterprise": "Enterprise",
    "tierTeam": "Team",
    "tierBusiness": "Forretning",
    "tierUltra": "Ultra",
    "tierPro": "Pro",
    "tierPlus": "Plus",
    "tierFree": "Gratis",
    "tierLite": "__MISSING__:Lite",
    "tierUnknown": "Ukendt",
    "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": "Rediger cutoffs",
    "forceRefresh": "Opdater nu",
    "suiteBuilderSaveFailed": "Failed to save suite",
    "clone": "Klon",
    "exportSuite": "Eksporter",
    "importSuite": "Importer",
    "suiteExported": "Suite eksporteret",
    "suiteExportFailed": "Suiten kunne ikke eksporteres",
    "suiteImportReady": "Suiteimport blev indlæst til gennemgang",
    "suiteImportFailed": "Kunne ikke importere suite",
    "suiteImportInvalid": "Ugyldig eval suite JSON",
    "suiteBuilderCloneSuffix": "kopi",
    "suiteBuilderImportedSuite": "Importeret 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": "f.eks. def fibonacci",
    "suiteBuilderCaseExpectedPlaceholderExact": "Indsæt det nøjagtige forventede svar",
    "suiteBuilderCaseExpectedPlaceholderRegex": "f.eks. ^\\\\s*\\\\{.*\\\\}\\\\s*$",
    "suiteBuilderCaseExpectedHintRegex": "Brug et regulært JavaScript-udtryk uden at ombryde skråstreger.",
    "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": "Duplikat",
    "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. tilbage",
    "quotaCutoffsColumnHelp": "Stop anmodninger, når den resterende kvote falder til denne procentdel eller derunder.",
    "quotaCutoffsButtonDefault": "Standard",
    "quotaCutoffsButtonHelp": "Rediger mindste resterende kvoteafskæringer for denne konto.",
    "quotaCutoffsButtonDisabled": "Ingen kvotevinduer er tilgængelige for denne konto endnu.",
    "quotaCutoffsTitle": "Kvoteafskæringer for {name} ({provider})",
    "quotaCutoffsExplainer": "Tilsidesæt den mindste resterende kvoteprocent, hvor denne konto stopper med at blive valgt for hvert kvotevindue. Lad stå tomt for at arve udbyderens standard.",
    "quotaCutoffsDefaultHint": "Standard min. resterende: {default}%",
    "quotaCutoffsResetAll": "Nulstil alle",
    "quotaCutoffsNoWindows": "Ingen kvotevinduer er tilgængelige for denne konto endnu.",
    "quotaThresholdInvalid": "Indtast et helt tal fra 0 til 100.",
    "budgetKpiToday": "I dag",
    "budgetKpiThisMonth": "Denne måned",
    "budgetKpiProjEom": "Projekt EOM",
    "budgetKpiBlocked": "Blokeret",
    "budgetKpiAtRisk": "I fare",
    "budgetKpiActiveKeys": "Aktive nøgler",
    "budgetSearchKeysPlaceholder": "Søg nøgler...",
    "budgetSortPctUsed": "Sorter: % brugt ↓",
    "budgetSortTodayDollar": "Sorter: I dag $ ↓",
    "budgetSortMonthDollar": "Sorter: Måned $ ↓",
    "budgetSortNameAZ": "Sorter: Navn (A–Z)",
    "budgetColDailyLim": "Daglig lim",
    "budgetColMonthlyLim": "Månedlig lim",
    "budgetColUsedPct": "Brugt %",
    "budgetLoading": "Indlæser...",
    "budgetNoKeysMatch": "Ingen nøgler matcher filtre",
    "budgetLinearExtrapolation": "lineær ekstrapolation",
    "budgetThisMonthSoFar": "Indtil videre denne måned",
    "budgetProjectedEndOfMonth": "Forventet slutningen af måneden",
    "budgetByProvider": "efter udbyder",
    "budgetDailyDollar": "Daglige $",
    "budgetWeeklyDollar": "Ugentlig $",
    "budgetMonthlyDollar": "Månedlig $",
    "budgetWarnAtPct": "Advare ved %",
    "quotaAlerts": "Kvoteadvarsler",
    "quotaTableRefreshing": "⟳ Forfriskende...",
    "noSpendLast30Days": "Intet forbrug i de sidste 30 dage",
    "updatedShort": "__MISSING__:Updated",
    "lastRefreshed": "__MISSING__:Last refreshed",
    "providerQuota": "__MISSING__:Provider Quota",
    "providerQuotaHomeHint": "__MISSING__:Live status across connected accounts"
  },
  "modals": {
    "waitingAuth": "Venter på autorisation",
    "verificationUrl": "Bekræftelses-URL",
    "yourCode": "Din kode",
    "remoteAccess": "Fjernadgang:",
    "connectedSuccess": "Forbundet med succes!",
    "connectionFailed": "Forbindelse mislykkedes",
    "chooseAuthMethod": "Vælg din godkendelsesmetode:",
    "awsBuilderId": "AWS Builder ID",
    "awsIamIdentity": "AWS IAM Identity Center",
    "googleAccount": "Google-konto",
    "githubAccount": "GitHub-konto",
    "importToken": "Importer token",
    "pasteToken": "Indsæt opdateringstoken fra Kiro IDE.",
    "awsRegion": "AWS-regionen",
    "autoDetecting": "Automatisk registrering af tokens...",
    "readingFromCache": "Læser fra AWS SSO-cache",
    "readingFromCursor": "Læsning fra Cursor IDE-database",
    "initializing": "Initialiserer...",
    "pricingConfig": "Priskonfiguration",
    "loadingPricing": "Indlæser prisdata...",
    "pricingRatesFormat": "Prisformat",
    "noPricingData": "Ingen tilgængelige prisdata",
    "noModelsFound": "Ingen modeller fundet"
  },
  "loggers": {
    "allProviders": "Alle udbydere",
    "allModels": "Alle modeller",
    "allAccounts": "Alle konti",
    "allApiKeys": "Alle API-nøgler",
    "allTypes": "Alle typer",
    "allLevels": "Alle niveauer",
    "modelAZ": "Model A-Z",
    "modelZA": "Model Z-A",
    "loadingLogs": "Indlæser logfiler...",
    "loadingProxyLogs": "Indlæser proxylogfiler...",
    "noLogEntries": "Ingen logposter fundet",
    "noPayloadData": "Ingen nyttelastdata tilgængelige for denne logpost.",
    "proxyEvent": "Proxy begivenhed",
    "proxy": "Fuldmagt",
    "level": "Niveau",
    "directNative": "Direkte (native)",
    "combo": "Combo",
    "inputTokens": "jeg:",
    "outputTokens": "O:"
  },
  "stats": {
    "usageOverview": "Brugsoversigt",
    "outputTokens": "Output tokens",
    "totalCost": "Samlede omkostninger",
    "usageByModel": "Brug efter model",
    "usageByAccount": "Brug efter konto",
    "failedToLoad": "Kunne ikke indlæse brugsstatistikker.",
    "tokenHealth": "Token Health",
    "totalOAuth": "Samlet OAuth",
    "healthy": "Sundt",
    "warning": "Advarsel",
    "errored": "Fejl",
    "lastCheck": "Sidste kontrol",
    "noData": "Ingen data",
    "share": "Del",
    "unableToLoad": "Systemmetrics kunne ikke indlæses",
    "product": "Produkt",
    "resources": "Ressourcer",
    "company": "Selskab"
  },
  "auth": {
    "welcome": "Velkommen",
    "signIn": "Log ind",
    "enterPassword": "Indtast din adgangskode for at fortsætte",
    "password": "Adgangskode",
    "unifiedProxy": "Unified AI API Proxy",
    "unifiedAiApiProxy": "Unified AI API Proxy",
    "unifiedAiApiProxyDesc": "Rut anmodninger til flere AI-udbydere gennem et enkelt slutpunkt. Belastningsbalancering, failover og brugssporing indbygget.",
    "passwordNotEnabled": "Adgangskodebeskyttelse er ikke aktiveret",
    "loading": "Indlæser...",
    "invalidPassword": "Ugyldig adgangskode",
    "errorOccurredRetry": "Der opstod en fejl. Prøv venligst igen.",
    "configureInstance": "Lad os få konfigureret din OmniRoute-instans",
    "runOnboardingWizard": "Kør onboarding-guiden for at konfigurere din adgangskode og oprette forbindelse til din første AI-udbyder.",
    "startOnboarding": "Start Onboarding",
    "secureYourInstance": "Sikre din instans",
    "setPasswordDescription": "Indstil en adgangskode for at beskytte dit dashboard og sikre dine API-endepunkter mod uautoriseret adgang.",
    "configurePassword": "Konfigurer adgangskode",
    "continue": "Fortsæt",
    "windowWillClose": "Dette vindue lukkes automatisk...",
    "closeTabNow": "Du kan lukke denne fane nu.",
    "copyUrlManual": "Kopier venligst URL'en fra adresselinjen og indsæt den i applikationen.",
    "accessDeniedDescription": "Du har ikke tilladelse til at få adgang til denne ressource. Tjek din API-nøgle, eller kontakt administratoren.",
    "goToDashboard": "Gå til Dashboard",
    "featureMultiProviderTitle": "Multi-udbyder",
    "featureMultiProviderDesc": "OpenAI, Anthropic, Google og mere",
    "featureLoadBalancingTitle": "Lastbalancering",
    "featureLoadBalancingDesc": "Fordel anmodninger intelligent",
    "featureUsageTrackingTitle": "Brugssporing",
    "featureUsageTrackingDesc": "Overvåg omkostninger og tokens",
    "resetPassword": "Nulstil adgangskode",
    "resetDescription": "Vælg en metode til at gendanne adgangen til dit dashboard",
    "stopServer": "Stop OmniRoute-serveren",
    "processing": "Behandler...",
    "pleaseWait": "Vent venligst, mens vi fuldfører godkendelsen.",
    "authSuccess": "Godkendelse lykkedes!",
    "copyUrl": "Kopiér denne URL",
    "accessDenied": "Adgang nægtet",
    "methodCliTitle": "Metode 1: CLI-nulstilling",
    "methodCliDescription": "Kør følgende kommando på serveren, hvor OmniRoute kører:",
    "methodCliHint": "Dette vil bede dig om at indstille en ny adgangskode. Serveren skal stoppes først.",
    "methodManualTitle": "Metode 2: Manuel nulstilling",
    "methodManualDescription": "Slet adgangskoden fra databasen og indstil en ny ved opstart:",
    "setPasswordInYour": "Indstil en ny adgangskode i din",
    "fileLabelSuffix": "fil:",
    "newPasswordPlaceholder": "dit_nye_adgangskode",
    "deleteSettingsFile": "Slet",
    "orRemovePasswordHashField": "eller fjern feltet passwordHash",
    "restartServerWithNewPassword": "Genstart serveren - den vil bruge den nye adgangskode",
    "backToLogin": "Tilbage til Login",
    "forgotPassword": "Glemt adgangskode?",
    "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)",
    "Authorization": "Autorisation",
    "Content-Disposition": "Indhold-Disposition",
    "waitingForAuthorization": "Venter på godkendelse...",
    "waitingForGoogleAuthorization": "Venter på Google-godkendelse...",
    "waitingForOpenAIAuthorization": "Venter på OpenAI-godkendelse...",
    "waitingForAntigravityAuthorization": "Venter på antigravity-autorisation...",
    "waitingForQoderAuthorization": "Venter på Qoder-godkendelse...",
    "exchangingCodeForTokens": "Udveksler kode til tokens...",
    "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": "Naviger til hjem",
    "toggleMenu": "Skift menu",
    "featuresLink": "Funktioner",
    "docsLink": "Dokumenter",
    "github": "GitHub",
    "versionLive": "v1.0 er nu live",
    "oneEndpoint": "Et slutpunkt til",
    "allProviders": "Alle AI-udbydere",
    "heroDescription": "AI-slutpunktsproxy med web-dashboard - En JavaScript-port af CLIProxyAPI. Fungerer problemfrit med Claude Code, OpenAI Codex, Cline, RooCode og andre CLI-værktøjer.",
    "getStarted": "Kom i gang",
    "viewOnGithub": "Se på GitHub",
    "powerfulFeatures": "Kraftige funktioner",
    "featuresSubtitle": "Alt hvad du behøver for at administrere din AI-infrastruktur på ét sted, bygget til skala.",
    "featureUnifiedEndpointTitle": "Unified Endpoint",
    "featureUnifiedEndpointDesc": "Få adgang til alle udbydere via en enkelt standard API-URL.",
    "featureEasySetupTitle": "Nem opsætning",
    "featureEasySetupDesc": "Kom i gang på få minutter med npx-kommandoen.",
    "featureModelFallbackTitle": "Model Fallback",
    "featureModelFallbackDesc": "Skift automatisk udbyder ved fejl eller høj latenstid.",
    "featureUsageTrackingTitle": "Brugssporing",
    "featureUsageTrackingDesc": "Detaljerede analyser og omkostningsovervågning på tværs af alle modeller.",
    "featureOAuthApiKeysTitle": "OAuth- og API-nøgler",
    "featureOAuthApiKeysDesc": "Administrer legitimationsoplysninger sikkert i én boks.",
    "featureCloudSyncTitle": "Cloud Sync",
    "featureCloudSyncDesc": "Synkroniser dine konfigurationer på tværs af enheder med det samme.",
    "featureCliSupportTitle": "CLI support",
    "featureCliSupportDesc": "Fungerer med Claude Code, Codex, Cline, Cursor og mere.",
    "featureDashboardTitle": "Dashboard",
    "featureDashboardDesc": "Visuelt dashboard til trafikanalyse i realtid.",
    "howItWorks": "Sådan fungerer OmniRoute",
    "howItWorksDescription": "Data flyder problemfrit fra din applikation gennem vores intelligente routing-lag til den bedste udbyder til jobbet.",
    "howItWorksStep1Title": "1. CLI & SDK'er",
    "howItWorksStep1Description": "Dine anmodninger starter fra dine yndlingsværktøjer eller vores forenede SDK. Skift blot den grundlæggende URL.",
    "howItWorksStep2Title": "2. OmniRoute Hub",
    "howItWorksStep2Description": "Vores motor analyserer prompten, tjekker udbyderens helbred og ruter for laveste latenstid eller omkostninger.",
    "howItWorksStep3Title": "3. AI-udbydere",
    "howItWorksStep3Description": "Anmodningen opfyldes af OpenAI, Anthropic, Gemini eller andre øjeblikkeligt.",
    "getStartedIn30Seconds": "Kom i gang på 30 sekunder",
    "getStartedDescription": "Installer OmniRoute, konfigurer dine udbydere via web-dashboard, og begynd at dirigere AI-anmodninger.",
    "installOmniRoute": "Installer OmniRoute",
    "installStepDescription": "Kør npx-kommandoen for at starte serveren med det samme",
    "openDashboard": "Åbn Dashboard",
    "openDashboardStepDescription": "Konfigurer udbydere og API-nøgler via webgrænseflade",
    "routeRequests": "Ruteanmodninger",
    "routeRequestsStepDescription": "Ret dine CLI-værktøjer til {endpoint}",
    "terminal": "terminal",
    "copy": "Kopiér",
    "copied": "✓ Kopieret",
    "startingOmniRoute": "Starter OmniRoute...",
    "serverRunningOnLabel": "Server kører på",
    "dashboardLabel": "Dashboard",
    "readyToRoute": "Klar til rute! ✓",
    "configureProvidersNote": "📝 Konfigurer udbydere i dashboard eller brug miljøvariabler",
    "dataLocation": "Dataplacering:",
    "dataLocationMacLinux": " macOS/Linux:",
    "dataLocationWindows": " Windows:",
    "product": "Produkt",
    "dashboardLink": "Dashboard",
    "changelog": "Ændringslog",
    "resources": "Ressourcer",
    "documentation": "Dokumentation",
    "npm": "NPM",
    "legal": "Juridisk",
    "mitLicense": "MIT-licens",
    "footerTagline": "Det forenede slutpunkt for AI-generering. Forbind, diriger og administrer dine AI-udbydere med lethed.",
    "copyright": "© {year} OmniRoute. Alle rettigheder forbeholdes.",
    "flowToolClaudeCode": "Claude kode",
    "flowToolOpenAICodex": "OpenAI Codex",
    "flowToolCline": "Cline",
    "flowToolCursor": "Markør",
    "flowProviderOpenAI": "OpenAI",
    "flowProviderAnthropic": "Antropisk",
    "flowProviderGemini": "Tvillingerne",
    "flowProviderGithubCopilot": "GitHub Copilot",
    "interactiveDiagram": "Interaktivt diagram synligt på skrivebordet",
    "ctaTitle": "Klar til at forenkle din AI-infrastruktur?",
    "ctaDescription": "Slut dig til udviklere, der strømliner deres AI-integrationer med OmniRoute. Open source og gratis at starte.",
    "startFree": "Start gratis",
    "readDocumentation": "Læs dokumentation"
  },
  "docs": {
    "title": "Dokumentation",
    "quickStart": "Hurtig start",
    "deploymentGuides": "Implementeringsvejledninger",
    "features": "Funktioner",
    "supportedProviders": "Understøttede udbydere",
    "supportedProvidersToc": "Udbydere",
    "commonUseCases": "Almindelige anvendelsestilfælde",
    "clientCompatibility": "Klientkompatibilitet",
    "protocolsToc": "Protokoller",
    "apiReference": "API-reference",
    "managementApiReference": "Management API Reference",
    "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.",
    "method": "Metode",
    "path": "Sti",
    "notes": "Noter",
    "modelPrefixes": "Modelpræfikser",
    "prefix": "Præfiks",
    "troubleshooting": "Fejlfinding",
    "supportsChat": "Understøtter både chat- og svarendepunkter.",
    "oauthAutoRefresh": "OAuth-forbindelse med automatisk token-opdatering.",
    "fullStreaming": "Fuld streaming support til alle modeller.",
    "docsLabel": "Dokumenter",
    "docsHeroDescription": "AI-gateway til LLM'er med flere udbydere. Ét endepunkt for OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor og mere end 20 udbydere.",
    "openDashboard": "Åbn Dashboard",
    "endpointPage": "Slutpunktside",
    "github": "GitHub",
    "reportIssue": "Rapportér problem",
    "onThisPage": "På denne side",
    "documentationVersion": "Dokumentation - v{version}",
    "quickStartStep1Title": "1. Installer og kør",
    "quickStartStep1Prefix": "Løb",
    "quickStartStep1Middle": "eller klon fra GitHub og kør",
    "quickStartStep2Title": "2. Opret API-nøgle",
    "quickStartStep2Text": "Gå til Slutpunkt -> Registrerede nøgler. Generer én nøgle pr. miljø.",
    "quickStartStep3Title": "3. Tilslut udbydere",
    "quickStartStep3Text": "Tilføj udbyderkonti via OAuth-login, API-nøgle eller automatisk forbindelse med frit niveau.",
    "quickStartStep4Title": "4. Indstil klientbase-URL",
    "quickStartStep4Prefix": "Peg din IDE- eller API-klient til",
    "quickStartStep4Suffix": "Brug for eksempel udbyderpræfiks",
    "deploySetupTitle": "Opsætningsvejledning",
    "deploySetupText": "Trin-for-trin installation, miljøkonfiguration og førstegangsgennemgang for OmniRoute.",
    "deployElectronTitle": "Electron Desktop",
    "deployElectronText": "Kør OmniRoute som en indbygget desktopapplikation på Windows, macOS og Linux.",
    "deployDockerTitle": "Docker",
    "deployDockerText": "Containeriseret udrulning med Docker Compose; klar til produktionsstabler og Kubernetes.",
    "deployVmTitle": "Virtuel maskine",
    "deployVmText": "Selvvært på enhver Linux VM. Inkluderer systemd enhed, log rotation og backup værktøj.",
    "deployFlyTitle": "Fly.io",
    "deployFlyText": "Implementer til Fly.io edge runtime med én fly.toml og en enkelt implementeringskommando.",
    "deployPwaTitle": "PWA",
    "deployPwaText": "Installer OmniRoute som en progressiv webapp på Android-, iOS- og desktopbrowsere.",
    "deployTermuxTitle": "Termux (Android)",
    "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.",
    "featureRoutingTitle": "Multi-Provider Routing",
    "featureRoutingText": "Rut anmodninger til 30+ AI-udbydere gennem et enkelt OpenAI-kompatibelt slutpunkt. Understøtter chat, svar, lyd og billed-API'er.",
    "featureCombosTitle": "Kombinationer og balancering",
    "featureCombosText": "Opret modelkombinationer med fallback-kæder og balanceringsstrategier: round-robin, prioritet, tilfældig, mindst brugt og omkostningsoptimeret.",
    "featureUsageTitle": "Brug og omkostningssporing",
    "featureUsageText": "Tokenoptælling i realtid, omkostningsberegning pr. udbyder/model og detaljeret forbrugsopdeling efter API-nøgle og konto.",
    "featureAnalyticsTitle": "Analytics Dashboard",
    "featureAnalyticsText": "Visuel analyse med diagrammer for anmodninger, tokens, fejl, latens, omkostninger og modelpopularitet over tid.",
    "featureHealthTitle": "Sundhedsovervågning",
    "featureHealthText": "Live-sundhedstjek, udbyderstatus, strømafbrydertilstande og automatisk hastighedsgrænsedetektering med eksponentiel backoff.",
    "featureCliTitle": "CLI værktøjer",
    "featureCliText": "Administrer IDE-konfigurationer, eksporter/importér sikkerhedskopier, find codex-profiler og konfigurer indstillinger fra dashboardet.",
    "featureSecurityTitle": "Sikkerhed og politikker",
    "featureSecurityText": "API-nøglegodkendelse, IP-filtrering, promptindsprøjtningsbeskyttelse, domænepolitikker, sessionsstyring og revisionslogning.",
    "featureCloudSyncTitle": "Cloud Sync",
    "featureCloudSyncText": "Synkroniser din konfiguration med Cloudflare Workers for fjernadgang med krypterede legitimationsoplysninger og automatisk failover.",
    "providersAcrossConnectionTypes": "{count} udbydere på tværs af tre forbindelsestyper.",
    "manageProviders": "Administrer udbydere",
    "providersCount": "{count} udbydere",
    "providerTypeFree": "Gratis niveau",
    "providerTypeOAuth": "OAuth",
    "providerTypeApiKey": "API nøgle",
    "useCaseSingleEndpointTitle": "Enkelt slutpunkt for mange udbydere",
    "useCaseSingleEndpointText": "Peg klienter til én basis-URL og rute efter modelpræfiks (for eksempel: gh/, cc/, kr/, openai/).",
    "useCaseFallbackTitle": "Fallback og modelskift med kombinationer",
    "useCaseFallbackText": "Opret kombinationsmodeller i Dashboard, og hold klientkonfigurationen stabil, mens udbyderne roterer internt.",
    "useCaseUsageVisibilityTitle": "Brug, omkostninger og fejlfindingssynlighed",
    "useCaseUsageVisibilityText": "Spor tokens og omkostninger efter udbyder, konto og API-nøgle på fanerne Brug og Analytics.",
    "clientCherryStudioTitle": "Cherry Studio",
    "baseUrlLabel": "Basis URL",
    "chatEndpointLabel": "Chat slutpunkt",
    "modelRecommendationLabel": "Modelanbefaling: eksplicit præfiks",
    "clientCodexTitle": "Codex / GitHub Copilot-modeller",
    "clientCodexBullet1": "Brug model-id'er med",
    "clientCodexBullet2": "Codex-familiemodeller dirigeres automatisk til",
    "clientCodexBullet3": "Ikke-Codex-modeller fortsætter",
    "clientCursorTitle": "Markør IDE",
    "clientCursorBullet1": "Brug",
    "clientCursorBullet1Suffix": "præfiks for Cursor-modeller.",
    "clientCursorBullet2": "OAuth-forbindelse - log på fra siden Udbydere.",
    "clientClaudeTitle": "Claude Code / Antigravity",
    "clientClaudeBullet1Prefix": "Brug",
    "clientClaudeBullet1Middle": "(Claude) eller",
    "clientClaudeBullet1Suffix": "(antityngdekraft) præfiks.",
    "clientWindsurfTitle": "Windsurf",
    "clientWindsurfBullet1": "Brug OmniRoute som en OpenAI-kompatibel basis-URL, og behold eksplicitte udbyderpræfikser til deterministisk routing.",
    "clientWindsurfBullet2": "Ret modeller til `/v1/chat/afslutninger` for generel trafik og bevar `/v1/responses` for flows i Codex-stil.",
    "clientWindsurfBullet3": "Brug Dashboard -> CLI Tools til en færdiglavet Windsurf-konfigurationsvejledning.",
    "clientClineTitle": "Cline",
    "clientClineBullet1": "Cline fungerer bedst med eksplicitte udbyder/modelpræfikser, så routeren aldrig behøver at gætte backend.",
    "clientClineBullet2": "Brug `/v1/chat/completions` til generelle modeller og genbrug den samme OmniRoute-basis-URL på tværs af forskellige konti.",
    "clientClineBullet3": "Brug Providers dashboard til at validere OAuth/API-nøgle, før du fejlfinder Cline-runtime-problemer.",
    "clientKimiTitle": "Kimi kodning",
    "clientKimiBullet1": "Brug OmniRoute som en stabil basis-URL, mens du roterer konti eller udbyderkombinationer nedenunder.",
    "clientKimiBullet2": "Foretrække præfiksede modeller i kodningsflows, så fallback og revisionsspor forbliver eksplicitte.",
    "clientKimiBullet3": "Brug `/v1/responses`, når du ønsker native Responses-stil routing for værktøjsbrugende klienter.",
    "protocolsTitle": "Protokoller: MCP & A2A",
    "protocolsDescription": "OmniRoute afslører to operationelle protokoller ud over OpenAI-kompatible API'er: MCP til værktøjsudførelse og A2A til agent-til-agent arbejdsgange.",
    "protocolMcpTitle": "MCP (Model Context Protocol)",
    "protocolMcpDesc": "Brug MCP over stdio til at lade klienter opdage og kalde OmniRoute-værktøjer med revisionssynlighed.",
    "protocolMcpStep1": "Start MCP-transport med `omniroute --mcp`.",
    "protocolMcpStep2": "Ret din MCP-klient til stdio-transport.",
    "protocolMcpStep3": "Ring til `omniroute_get_health` og `omniroute_list_combos` for at validere forbindelsen.",
    "protocolA2aTitle": "A2A (Agent2Agent)",
    "protocolA2aDesc": "Brug A2A JSON-RPC til at sende opgaver synkront eller via SSE-streaming.",
    "protocolA2aStep1": "Læs `/.well-known/agent.json` for at finde agenter.",
    "protocolA2aStep2": "Send `message/send` eller `message/stream` anmodninger til `POST /a2a`.",
    "protocolA2aStep3": "Administrer opgavens livscyklus med `tasks/get` og `tasks/cancel`.",
    "protocolTroubleshootingTitle": "Protokol fejlfinding",
    "protocolTroubleshooting1": "Hvis MCP-status er offline, skal du kontrollere, at stdio-processen kører, og heartbeat-filen opdateres.",
    "protocolTroubleshooting2": "Hvis A2A-opgaver forbliver i `working`, inspicer `/api/a2a/tasks/:id` og stream hændelser for terminaltilstand.",
    "protocolTroubleshooting3": "Brug `/dashboard/mcp` og `/dashboard/a2a` til operationelle kontroller og revisionssynlighed.",
    "endpointChatNote": "OpenAI-kompatibelt chatslutpunkt (standard).",
    "endpointResponsesNote": "Responses API-endepunkt (Codex, o-serien).",
    "endpointModelsNote": "Modelkatalog for alle tilsluttede udbydere.",
    "endpointAudioNote": "Lydtransskription (Deepgram, AssemblyAI).",
    "endpointSpeechNote": "Tekst-til-tale generation (ElevenLabs, OpenAI TTS).",
    "endpointEmbeddingsNote": "Generering af tekstindlejring (OpenAI, Cohere, Voyage).",
    "endpointImagesNote": "Billedgenerering (NanoBanana).",
    "endpointRewriteChatNote": "Omskrivehjælper til klienter uden /v1.",
    "endpointRewriteResponsesNote": "Omskriv hjælper til svar uden /v1.",
    "endpointRewriteModelsNote": "Omskrivningshjælper til modelopdagelse uden /v1.",
    "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": "Brug udbyderpræfikset før modelnavnet for at rute til en bestemt udbyder. Eksempel:",
    "modelPrefixesDescriptionEnd": "ruter til GitHub Copilot.",
    "provider": "Udbyder",
    "type": "Type",
    "troubleshootingModelRouting": "Hvis klienten fejler med modelrouting, skal du bruge eksplicit udbyder/model (for eksempel: gh/gpt-5.1-codex).",
    "troubleshootingAmbiguousModels": "Hvis du modtager tvetydige modelfejl, skal du vælge et udbyderpræfiks i stedet for et blottet model-id.",
    "troubleshootingCodexFamily": "For GitHub Codex-familiemodeller skal du beholde modellen som gh/codex-model; routeren vælger /svar automatisk.",
    "troubleshootingTestConnection": "Brug Dashboard > Udbydere > Test forbindelse, før du tester fra IDE'er eller eksterne klienter.",
    "troubleshootingCircuitBreaker": "Hvis en udbyder viser en afbryder åben, skal du vente på nedkøling eller tjekke Health-siden for detaljer.",
    "troubleshootingOAuth": "For OAuth-udbydere skal du godkende igen, hvis tokens udløber. Tjek udbyderkortets statusindikator.",
    "endpointCompletionsNote": "Ældre færdiggørelser slutpunkt til tekstgenerering.",
    "endpointModerationsNote": "Indholdsmoderering og sikkerhedsklassificering.",
    "endpointRerankNote": "Dokumentomplacering for genfinding-augmented generation (Cohere, Jina).",
    "endpointSearchNote": "Websøgning med 5 udbydere (Serper, Brave, Exa, Tavily, Perplexity).",
    "endpointSearchAnalyticsNote": "Analyse og metrics for søgeanmodninger.",
    "endpointVideoNote": "Videogenerering (ComfyUI, SD WebUI arbejdsgange).",
    "endpointMusicNote": "Musikgenerering via ComfyUI-arbejdsgange.",
    "endpointMessagesNote": "Slutpunkt for antropiske indfødte budskaber.",
    "endpointCountTokensNote": "Tæl tokens for en given meddelelsesnyttelast.",
    "endpointFilesNote": "Filupload til multimodale input.",
    "endpointBatchesNote": "Batchbehandling for bulk API-anmodninger.",
    "endpointWsNote": "WebSocket-endepunkt til streaming i realtid.",
    "mgmtProvidersListNote": "Liste over alle registrerede udbyderforbindelser.",
    "mgmtProvidersCreateNote": "Opret en ny udbyderforbindelse.",
    "mgmtProvidersUpdateNote": "Opdater en eksisterende udbyderforbindelse.",
    "mgmtProvidersDeleteNote": "Slet en udbyderforbindelse.",
    "mgmtProvidersTestNote": "Test forbindelse og godkendelse for en udbyder.",
    "mgmtProvidersModelsNote": "Liste over tilgængelige modeller for en bestemt udbyder.",
    "mgmtSettingsGetNote": "Hent aktuelle applikationsindstillinger.",
    "mgmtSettingsUpdateNote": "Opdater applikationsindstillinger.",
    "mgmtPayloadRulesGetNote": "Hent regler for omdannelse af nyttelast.",
    "mgmtPayloadRulesUpdateNote": "Opdater regler for omdannelse af nyttelast.",
    "mcpToolsTitle": "MCP-værktøjer",
    "mcpToolsDescription": "OmniRoute afslører {count} værktøjer via Model Context Protocol til agentorkestrering.",
    "mcpToolsCount": "{count} værktøjer",
    "mcpToolsToc": "MCP-værktøjer",
    "mcpToolsRoutingTitle": "Rute og opdagelse",
    "mcpToolsRoutingDesc": "Sundhedstjek, kombinationsstyring, kvoteovervågning, omkostningsrapportering og modelkatalogadgang.",
    "mcpToolsOperationsTitle": "Drift & Strategi",
    "mcpToolsOperationsDesc": "Rutesimulering, budgetvagter, strategiskift, robusthedsprofiler og udbydermålinger.",
    "mcpToolsCacheTitle": "Cachestyring",
    "mcpToolsCacheDesc": "Se cache-statistikker og tøm semantiske eller signatur-caches.",
    "mcpToolsCompressionTitle": "Kompressionsmotorer",
    "mcpToolsCompressionDesc": "Konfigurer RTK/Brotli-komprimering, skift motorer, og inspicér kompressionsanalyse efter combo.",
    "mcpToolsOneProxyTitle": "1 Proxy / Tunneler",
    "mcpToolsOneProxyDesc": "Administrer udgående proxyer, roter bolig-IP'er, og inspicér proxy-sundhed.",
    "mcpToolsMemoryTitle": "Hukommelse",
    "mcpToolsMemoryDesc": "Søg, tilføj og ryd vedvarende samtalehukommelsesposter.",
    "mcpToolsSkillsTitle": "Færdigheder",
    "mcpToolsSkillsDesc": "Liste, aktiver, eksekver og overvåg tilpassede færdighedsudførelser.",
    "featureAutoComboTitle": "Auto-kombination",
    "featureAutoComboText": "Opret automatisk optimerede kombinationer baseret på dine tilsluttede udbydere, brugsmønstre og modelmuligheder.",
    "featureSearchTitle": "Websøgning",
    "featureSearchText": "Integreret websøgning med 5 udbydere (Serper, Brave, Exa, Tavily, Perplexity) inklusive analyser og omkostningssporing.",
    "featureMemoryTitle": "Hukommelsessystem",
    "featureMemoryText": "Vedvarende samtalehukommelse med ekstraktion, injektion, genfinding og opsummering på tværs af sessioner.",
    "featureSkillsTitle": "Kompetenceramme",
    "featureSkillsText": "Udvidbart færdighedssystem med indbyggede og brugerdefinerede færdigheder, sandkasseudførelse, anmodningsaflytning og kontekstindsprøjtning.",
    "featureAcpTitle": "Agent kommunikation",
    "featureAcpText": "Agent Communication Protocol (ACP) register til styring af agent-til-agent arbejdsgange og værktøjsorkestrering.",
    "protocolAcpTitle": "ACP (agentkommunikation)",
    "protocolAcpDesc": "Registrer og administrer agenter via ACP-registret til kommunikation mellem agenter og værktøjsdeling.",
    "protocolAcpStep1": "Naviger til Dashboard → Agenter for at se registrerede ACP-agenter.",
    "protocolAcpStep2": "Registrer nye agenter med funktioner og slutpunktskonfiguration.",
    "protocolAcpStep3": "Brug CLI-værktøjer til at konfigurere agentkommunikationskanaler."
  },
  "legal": {
    "privacyPolicy": "Privatlivspolitik",
    "termsOfService": "Servicevilkår",
    "providerConfigurations": "Udbyder konfigurationer",
    "apiKeys": "API nøgler",
    "usageLogs": "Brugslogs",
    "applicationSettings": "Applikationsindstillinger",
    "viewExportAnalytics": "Se og eksporter brugsanalyse",
    "clearHistory": "Ryd brugshistorik til enhver tid",
    "configureRetention": "Konfigurer logopbevaringspolitikker",
    "backupRestore": "Sikkerhedskopier og gendan din database",
    "privacyMetadataTitle": "Privatlivspolitik | OmniRoute",
    "privacyMetadataDescription": "Privatlivspolitik for OmniRoute AI API proxy-routeren.",
    "termsMetadataTitle": "Servicevilkår | OmniRoute",
    "termsMetadataDescription": "Servicevilkår for OmniRoute AI API proxy-routeren.",
    "backToHome": "Tilbage til hjemmet",
    "lastUpdated": "Sidst opdateret: {date}",
    "policyLastUpdatedDate": "13. februar 2026",
    "listSeparator": "-",
    "questionsVisit": "Spørgsmål? Besøg vores",
    "githubRepository": "GitHub-depot",
    "privacySection1Title": "1. Lokal-første arkitektur",
    "privacySection1Text": "OmniRoute er designet som en lokal-først-applikation. Al databehandling og lagring foregår udelukkende på din maskine. Der er ingen centraliseret server, der indsamler dine oplysninger.",
    "privacySection2Title": "2. Data vi gemmer",
    "privacyDataStoredIn": "Følgende data gemmes lokalt i",
    "privacyDataProviderConfigurationsDesc": "forbindelses-URL'er, udbydertyper og prioritetsindstillinger",
    "privacyDataApiKeysDesc": "krypteret og gemt lokalt til godkendelse hos AI-udbydere",
    "privacyDataUsageLogsDesc": "antal anmodninger, tokenbrug, modelnavne, tidsstempler og svartider",
    "privacyDataApplicationSettingsDesc": "temapræferencer, routingstrategi og kombinationskonfigurationer",
    "privacySection3Title": "3. Ingen telemetri",
    "privacySection3Text": "OmniRoute indsamler ikke telemetri, analyser eller nedbrudsrapporter. Der sendes ingen data til os eller nogen tredjepart. Dine brugsmønstre, API-kald og konfigurationer forbliver helt private.",
    "privacySection4Title": "4. Tredjeparts AI-udbydere",
    "privacySection4Text": "Når du foretager API-kald gennem OmniRoute, videresendes dine anmodninger til de AI-udbydere, du har konfigureret (for eksempel: OpenAI, Anthropic, Google). Disse udbydere har deres egne privatlivspolitikker, der styrer, hvordan de håndterer dine data. Gennemgå venligst:",
    "privacyOpenAiPolicy": "OpenAI Privatlivspolitik",
    "privacyAnthropicPolicy": "Antropisk privatlivspolitik",
    "privacyGooglePolicy": "Googles privatlivspolitik",
    "privacySection5Title": "5. Cloud Sync (valgfrit)",
    "privacySection5Text": "Hvis du aktiverer den valgfri cloud-synkroniseringsfunktion, kan udbyderkonfigurationer og API-nøgler overføres til et konfigureret cloud-slutpunkt. Denne funktion er deaktiveret som standard og kræver eksplicit opt-in.",
    "privacySection6Title": "6. Logning",
    "privacyLoggingIntro": "Anmodningslogfiler kan konfigureres via dashboardindstillingerne. Du kan:",
    "privacySection7Title": "7. Dine rettigheder",
    "privacySection7TextStart": "Da alle data er gemt lokalt, har du fuld kontrol. Du kan til enhver tid slette dine data ved at fjerne",
    "privacySection7TextEnd": "bibliotek eller ved hjælp af databasesikkerhedskopierings- og gendannelsesfunktionerne i dashboardet.",
    "termsSection1Title": "1. Oversigt",
    "termsSection1Text": "OmniRoute er en lokal-første AI API proxy-router, der fungerer udelukkende på din maskine. Det dirigerer anmodninger til flere AI-udbydere med belastningsbalancering, failover og brugssporing.",
    "termsSection2Title": "2. Brugeransvar",
    "termsResponsibilityApiKeys": "Du er alene ansvarlig for at administrere dine egne API-nøgler og legitimationsoplysninger for tredjeparts AI-udbydere (OpenAI, Anthropic, Google osv.).",
    "termsResponsibilityCompliance": "Du skal overholde servicevilkårene for hver AI-udbyder, hvis API du tilgår via OmniRoute.",
    "termsResponsibilitySecurity": "Du er ansvarlig for sikkerheden af ​​din lokale OmniRoute-installation, herunder indstilling af en adgangskode og begrænsning af netværksadgang.",
    "termsSection3Title": "3. Hvordan det virker",
    "termsSection3Text": "OmniRoute fungerer som en mellemmand. API-kald, der sendes til OmniRoute, oversættes og videresendes til dine konfigurerede AI-udbydere. OmniRoute ændrer ikke indholdet af dine anmodninger eller svar ud over den nødvendige protokoloversættelse.",
    "termsSection4Title": "4. Datahåndtering",
    "termsDataStoredLocally": "Alle data gemmes lokalt på din maskine i en SQLite-database.",
    "termsNoTransmission": "OmniRoute transmitterer ingen data til eksterne servere, medmindre du udtrykkeligt aktiverer skysynkroniseringsfunktioner.",
    "termsDataLocationText": "Brugslogfiler, API-nøgler og konfiguration gemmes i",
    "termsSection5Title": "5. Ansvarsfraskrivelse",
    "termsSection5Text": "OmniRoute leveres \"som den er\" uden garanti af nogen art. Vi er ikke ansvarlige for omkostninger, der påløber som følge af API-brug, serviceforstyrrelser eller tab af data. Vedligehold altid sikkerhedskopier af din konfiguration.",
    "termsSection6Title": "6. Open Source",
    "termsSection6Text": "OmniRoute er open source-software. Du kan frit inspicere, ændre og distribuere den i henhold til licensbetingelserne."
  },
  "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 Targets — Hvad er forskellen?",
    "comparisonCliToolsLabel": "CLI Tools side",
    "comparisonCliToolsTitle": "Din IDE sender anmodninger gennem OmniRoute",
    "comparisonCliToolsDesc": "Konfigurer Claude Code, Codex, Cursor og andre IDE'er til at bruge OmniRoute som deres API-base-URL. OmniRoute fungerer som en proxy, der dirigerer anmodninger til dine konfigurerede udbydere.",
    "comparisonAgentsLabel": "Denne side (agentmål)",
    "comparisonAgentsTitle": "OmniRoute sender anmodninger til lokale CLI-værktøjer",
    "comparisonAgentsDesc": "OmniRoute kan skabe lokale CLI-binære filer (claude, codex, goose) som eksekveringsbackends. CLI-værktøjet behandler anmodningen ved hjælp af sin egen godkendelse og returnerer resultatet.",
    "comparisonSummary": "Kort sagt: CLI Tools = du konfigurerer værktøjer til at pege på OmniRoute. Agent Targets = OmniRoute bruger værktøjer som sine endepunkter.",
    "agentUseCaseHint": "Kan bruges som et eksekveringsmål via ACP-protokol",
    "flowDiagramClient": "Klient-app",
    "flowDiagramClientDesc": "SDK, API eller upstream-tjeneste",
    "flowDiagramOmniRoute": "OmniRoute",
    "flowDiagramOmniRouteDesc": "Modtager anmodning og vælger mål",
    "flowDiagramSpawn": "Spawn proces",
    "flowDiagramSpawnDesc": "Starter CLI binær via stdio",
    "flowDiagramCli": "CLI agent",
    "flowDiagramCliDesc": "Processer med egen auth/model",
    "fingerprintSettingsHint": "CLI Fingerprint matching (forklædningsanmodninger som specifikke CLI-værktøjer) kan konfigureres i",
    "settingsRoutingLink": "Indstillinger/Routing",
    "openSettings": "Indstillinger",
    "copyRawUrlTitle": "Kopier den rå URL til udklipsholderen",
    "copied": "Kopieret!",
    "copyUrl": "Kopiér URL",
    "startHere": "Start her",
    "badgeNew": "Ny",
    "viewOnGithub": "Se på GitHub",
    "howToUse": "Sådan bruges",
    "browseAllSkillsOnGithub": "Gennemse alle færdigheder på GitHub",
    "apiSkills": "API færdigheder",
    "cliSkills": "CLI færdigheder",
    "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-agenter",
    "description": "Administrer autonome kodningsagenter (Jules, Devin, Codex Cloud)",
    "loading": "Indlæser opgaver...",
    "aboutTitle": "Om Cloud-agenter",
    "aboutDescription": "Cloud-agenter er eksterne AI-kodningsassistenter, der kan udføre opgaver selvstændigt. De arbejder anderledes end lokale CLI-agenter - du interagerer med dem gennem OmniRoutes API.",
    "howItWorksTitle": "Sådan fungerer det:",
    "howItWorksDesc": "Opret en opgave → Agent analyserer og foreslår en plan → Du godkender → Agent udfører → Resultater returneret",
    "newTaskTitle": "Opret ny opgave",
    "newTaskDescription": "Start en ny opgave med en cloud-agent",
    "selectAgent": "Vælg Agent",
    "taskDescription": "Opgavebeskrivelse",
    "taskDescriptionPlaceholder": "Beskriv, hvad du vil have agenten til at gøre...",
    "startTask": "Start opgave",
    "tasks": "Opgaver",
    "taskDetail": "Opgavedetaljer",
    "noTasks": "Ingen opgaver endnu. Opret en for at komme i gang.",
    "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": "Unavngivet opgave",
    "created": "Oprettet",
    "conversation": "Samtale",
    "result": "Resultat",
    "error": "Fejl",
    "planReady": "Plan klar til godkendelse",
    "approvePlan": "Godkend plan",
    "rejectPlan": "Afvis & Annuller",
    "sendMessagePlaceholder": "Send en besked til agenten...",
    "cancel": "Annuller",
    "delete": "Slet",
    "selectTaskPrompt": "Vælg en opgave for at se detaljer",
    "statusPending": "Afventer",
    "statusRunning": "Løb",
    "statusWaitingApproval": "Afventer godkendelse",
    "statusCompleted": "Afsluttet",
    "statusFailed": "Mislykkedes",
    "statusCancelled": "Annulleret",
    "repositoryName": "Depotnavn",
    "repositoryUrl": "Repository URL",
    "branch": "Filial"
  },
  "templateNames": {
    "simple-chat": "Simpel chat",
    "streaming": "Streaming",
    "system-prompt": "Systemprompt",
    "thinking": "Tænker",
    "tool-calling": "Værktøjsopkald",
    "multi-turn": "Multivending",
    "vision": "Vision",
    "schema-coercion": "Skema tvang"
  },
  "templateDescriptions": {
    "simple-chat": "Grundlæggende chatskabelon med systembesked",
    "streaming": "Skabelon til streaming svar",
    "system-prompt": "Skabelon med brugerdefineret systemprompt",
    "thinking": "Skabelon med ræsonnement/tænkebudget",
    "tool-calling": "Skabelon til værktøj/funktionskald",
    "multi-turn": "Skabelon til samtaler med flere sving",
    "vision": "Multimodal skabelon med billedinput",
    "schema-coercion": "Håndhævelse af struktureret output / JSON-skema"
  },
  "templatePayloads": {
    "simpleChat": {
      "system": "Du er en hjælpsom AI-assistent.",
      "userGreeting": "Hej! Hvordan kan jeg hjælpe dig i dag?"
    },
    "streaming": {
      "prompt": "Skriv en historie om"
    },
    "systemPrompt": {
      "question": "Hvad er meningen med livet?",
      "systemInstruction": "Giv et tankevækkende, filosofisk svar."
    },
    "thinking": {
      "question": "Forklar kvanteberegning"
    },
    "toolCalling": {
      "cityNameDescription": "Navnet på byen for at få vejr til",
      "toolDescription": "Få det aktuelle vejr for en placering",
      "userWeather": "Hvordan er vejret i Tokyo?"
    },
    "multiTurn": {
      "system": "Du er en hjælpsom assistent.",
      "assistantExample": "Det hjælper jeg dig gerne med.",
      "userInitial": "Jeg har brug for hjælp til",
      "userFollowUp": "Kan du uddybe det?"
    }
  },
  "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": "Begrundelse Replay",
    "reasoningCacheDesc": "Bevarer modeltænkning for multi-turn tool calling flows",
    "reasoningEntries": "Aktive poster",
    "reasoningReplayRate": "Genafspilningshastighed",
    "reasoningReplays": "Samlede gentagelser",
    "reasoningCharsCached": "Karakterer i cache",
    "reasoningMisses": "Cache misses",
    "reasoningByProvider": "Af udbyder",
    "reasoningByModel": "Efter model",
    "reasoningRecentEntries": "Seneste indlæg",
    "reasoningToolCallId": "Værktøjsopkalds-id",
    "reasoningChars": "Karakterer",
    "reasoningAge": "Alder",
    "reasoningView": "Visning",
    "reasoningDetail": "Begrundelse Indhold",
    "reasoningBehavior": "Adfærd",
    "reasoningBehaviorCapture": "Indfanger ræsonnement_indhold fra streamingsvar",
    "reasoningBehaviorReplay": "Genindsprøjter ved næste tur, når klienten udelader det",
    "reasoningBehaviorFallback": "Hukommelse først med SQLite fallback til gendannelse af nedbrud",
    "reasoningBehaviorTtl": "TTL: 2 timer | Maks. indtastninger: 2.000 (hukommelse)",
    "reasoningBehaviorModels": "Understøttet: DeepSeek, Kimi, Qwen-Thinking, GLM",
    "reasoningClearAll": "Ryd begrundelsescache",
    "reasoningClearSuccess": "Ryddede {count} begrundelsescacheposter",
    "reasoningClearError": "Kunne ikke rydde begrundelsescachen",
    "reasoningNoData": "Ingen begrundelsesindgange i cache endnu. Indgange vises, når tænkende modeller bruger værktøjsopkald.",
    "cachePerformanceRetry": "Prøv igen",
    "cachePerformanceHitRate": "Hitrate",
    "cachePerformanceAvgLatency": "Gns. forsinkelse (ms)",
    "cachePerformanceP95Latency": "p95 latens (ms)",
    "retry": "Prøv igen",
    "reasoningAvgChars": "Gns. tegn",
    "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": "Globalt",
    "levelProvider": "Udbyder",
    "levelCombo": "Combo",
    "levelKey": "Nøgle",
    "levelDirect": "Direkte (ingen proxy)",
    "titleGlobal": "Global proxy-konfiguration",
    "titleLevel": "{level} Proxy — {label}",
    "loading": "Indlæser proxy-konfiguration...",
    "inheritingFrom": "Arver fra",
    "source": "Kilde",
    "savedProxy": "Gemt proxy",
    "custom": "Brugerdefineret",
    "selectSavedProxyPlaceholder": "Vælg gemt proxy...",
    "proxyType": "Proxy type",
    "host": "vært",
    "hostPlaceholder": "1.2.3.4 eller proxy.example.com",
    "port": "Havn",
    "authOptional": "Godkendelse (valgfrit)",
    "username": "Brugernavn",
    "usernamePlaceholder": "Brugernavn",
    "password": "Adgangskode",
    "passwordPlaceholder": "Adgangskode",
    "connected": "Forbundet",
    "ip": "IP:",
    "connectionFailed": "Forbindelsen mislykkedes",
    "testConnection": "Test forbindelse",
    "clear": "Klar",
    "cancel": "Annuller",
    "save": "Gem",
    "errorSelectSavedProxy": "Vælg venligst en gemt proxy først.",
    "errorSelectProxyFirst": "Vælg venligst en proxy først.",
    "errorProxyNotFound": "Den valgte proxy blev ikke fundet.",
    "errorClearSavedProxy": "Kunne ikke rydde gemt proxy",
    "errorSaveProxy": "Kunne ikke gemme proxy-konfigurationen",
    "errorClearProxy": "Kunne ikke rydde proxy-konfigurationen",
    "errorSocks5Hidden": "SOCKS5 er konfigureret, men skjult, fordi NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=falsk."
  },
  "oauthModal": {
    "title": "Tilslut {providerName}",
    "waiting": "Venter på autorisation",
    "completeAuthInPopup": "Fuldfør autorisation i popup.",
    "popupClosedHint": "Hvis pop op-vinduet lukkes uden at omdirigere tilbage (f.eks. Qoder), vil denne dialog automatisk skifte til manuel URL-indtastningstilstand.",
    "popupBlocked": "Popup blokeret? Indtast URL manuelt",
    "deviceCodeVisitUrl": "Besøg nedenstående URL og indtast koden:",
    "deviceCodeVerificationUrl": "Bekræftelses-URL",
    "deviceCodeYourCode": "Din kode",
    "deviceCodeWaiting": "Venter på godkendelse...",
    "googleOAuthWarning": "Fjernadgang + Google OAuth: Standardlegitimationsoplysninger accepterer kun omdirigeringer til <code>localhost</code>. Efter godkendelse vil din browser forsøge at åbne <code>localhost</code> — kopier den fulde URL og indsæt den nedenfor. For fuldstændig fjernbrug uden dette manuelle trin, <a>konfigurere dine egne OAuth-legitimationsoplysninger</a>.",
    "remoteAccessInfo": "Fjernadgang: Da du fjernadgang til OmniRoute, vil du efter godkendelse se en fejlside (lokal vært ikke fundet). Dette er normalt - bare kopier den fulde URL fra din browsers adresselinje og indsæt den nedenfor.",
    "step1OpenUrl": "Trin 1: Åbn denne URL i din browser",
    "copy": "Kopiér",
    "step2PasteCallback": "Trin 2: Indsæt tilbagekalds-URL eller autorisationskode her",
    "step2Hint": "Efter godkendelse skal du indsætte den fulde tilbagekalds-URL. For Claude Code og Cline kan du også indsætte autentificeringskoden direkte, f.eks. <code>kode#stat</code>.",
    "connect": "Forbind",
    "cancel": "Annuller",
    "success": "Forbindelsen lykkedes!",
    "successMessage": "Din {providerName} konto er blevet forbundet.",
    "done": "Færdig",
    "error": "Forbindelsen mislykkedes",
    "tryAgain": "Prøv igen"
  },
  "cursorAuthModal": {
    "title": "Tilslut Cursor IDE",
    "autoDetecting": "Automatisk registrering af tokens...",
    "readingFromCursor": "Læser fra Cursor IDE eller cursor-agent",
    "tokensAutoDetected": "Tokens blev automatisk registreret fra Cursor IDE!",
    "cursorNotDetected": "Markør-IDE blev ikke fundet. Indsæt venligst dit token manuelt.",
    "accessToken": "Adgangstoken",
    "required": "*",
    "accessTokenPlaceholder": "Adgangstoken udfyldes automatisk...",
    "machineId": "Maskin-id",
    "optional": "(valgfrit)",
    "machineIdPlaceholder": "Maskin-id udfyldes automatisk...",
    "importing": "Importerer...",
    "importToken": "Importer token",
    "cancel": "Annuller",
    "errorAutoDetect": "Kan ikke automatisk registrere tokens",
    "errorAutoDetectFailed": "Automatisk registrering af tokens mislykkedes",
    "errorEnterToken": "Indtast venligst adgangstoken",
    "errorImportFailed": "Import mislykkedes"
  },
  "pricingModal": {
    "title": "Priskonfiguration",
    "loading": "Indlæser prisdata...",
    "pricingRatesFormat": "Prisformat",
    "ratesDescription": "Alle priser er i <strong>dollars per million tokens</strong> ($/1M tokens). Eksempel: Inputhastighed på 2,50 betyder $2,50 pr. 1.000.000 input-tokens.",
    "model": "Model",
    "input": "Input",
    "output": "Output",
    "cached": "Cachelagret",
    "reasoning": "Begrundelse",
    "cacheCreation": "Cache-oprettelse",
    "noPricingData": "Ingen tilgængelige prisdata",
    "resetToDefaults": "Nulstil til standardindstillinger",
    "cancel": "Annuller",
    "saving": "Gemmer...",
    "saveChanges": "Gem ændringer",
    "resetConfirm": "Vil du nulstille alle priser til standard? Dette kan ikke fortrydes.",
    "errorSaveFailed": "Det lykkedes ikke at gemme prisen",
    "errorResetFailed": "Prisen kunne ikke nulstilles"
  },
  "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": "Type",
    "labelHost": "vært",
    "labelPort": "Havn",
    "labelUsername": "Brugernavn",
    "labelPassword": "Adgangskode",
    "labelRegion": "Region",
    "labelStatus": "Status",
    "labelNotes": "Noter",
    "usernamePlaceholderEdit": "Lad stå tomt for at beholde det nuværende brugernavn",
    "passwordPlaceholderEdit": "Lad stå tomt for at beholde den nuværende adgangskode",
    "statusActive": "Aktiv",
    "statusInactive": "Inaktiv",
    "cancel": "Annuller",
    "save": "Gem",
    "bulkModalTitle": "Bulk proxy tildeling",
    "bulkLabelScope": "Omfang",
    "bulkLabelProxy": "Fuldmagt",
    "bulkClearAssignment": "(Ryd opgave)",
    "bulkLabelScopeIds": "Omfangs-id'er (adskilt med komma eller ny linje)",
    "bulkScopeIdsPlaceholder": "udbyder-openai, udbyder-antropisk",
    "bulkApply": "Ansøg",
    "labelScope": "__MISSING__:Scope",
    "labelProxy": "__MISSING__:Proxy",
    "scopeGlobal": "__MISSING__:global",
    "scopeProvider": "__MISSING__:provider",
    "scopeAccount": "__MISSING__:account",
    "scopeCombo": "__MISSING__:combo",
    "bulkImportErrorMissingName": "Mangler NAME",
    "bulkImportErrorMissingHost": "Mangler HOST",
    "bulkImportErrorInvalidPort": "Ugyldig PORT (skal være 1-65535)",
    "bulkImportErrorInvalidType": "Ugyldig TYPE (brug http, https eller socks5)",
    "bulkImportErrorInvalidStatus": "Ugyldig STATUS (brug aktiv eller inaktiv)",
    "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} % succes",
    "avgLatency": "{latency} ms i gennemsnit",
    "assignmentsCount": "{count} opgaver",
    "noData": "No Data",
    "testSuccess": "✓ {ip}",
    "testLatency": "{latency}ms",
    "testFailure": "✗ {error}",
    "bulkImport": "Bulk import",
    "bulkImportTitle": "Bulk import fuldmagter",
    "bulkImportDescription": "Indsæt proxy-profiler ved hjælp af pipe-separeret format. En proxy pr. linje. Eksisterende proxyer (samme vært + port) vil blive opdateret.",
    "bulkImportParse": "Parse",
    "bulkImportImport": "Importer {count} proxyer",
    "bulkImportImporting": "Importerer...",
    "bulkImportParsed": "{count} proxyer parset",
    "bulkImportSkipped": "{count} linjer sprunget over",
    "bulkImportParseErrors": "{count} fejl",
    "bulkImportNoValidEntries": "Ingen gyldige poster fundet. Tjek formatet og prøv igen.",
    "bulkImportSuccess": "Import færdig: {created} oprettet, {updated} opdateret, {failed} mislykkedes",
    "bulkImportErrorLine": "Linje {line}: {reason}",
    "bulkImportMaxExceeded": "Maksimalt 100 fuldmagter pr. import",
    "bulkImportPreview": "Forhåndsvisning",
    "clearAssignment": "(klar opgave)",
    "bulkProxyAssignment": "Bulk proxy tildeling"
  },
  "playground": {
    "title": "Title",
    "description": "Description",
    "endpoint": "Endpoint",
    "provider": "Provider",
    "model": "Model",
    "accountKey": "Account Key",
    "autoAccounts": "Auto ({count} konti)",
    "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": "Genererede {count} billeder",
    "generatedImage": "Genereret billede {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": "Samtalechat",
    "clearChat": "Ryd chat",
    "typeMessagePlaceholder": "Skriv en besked... (Shift+Enter for ny linje)",
    "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": "Kompression",
      "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 preview.",
    "betaConfigSavedPrefix": "Konfiguration er gemt i",
    "betaConfigSavedSuffix": "(endnu ikke vedvaret på serveren). Håndhævelse af grænser pr. anmodning er endnu ikke koblet til proxy-pipelinen. Denne skærm lader dig designe og visualisere kvoteopdelingen; reel håndhævelse vil lande i en fremtidig iteration med DB persistens og opstrøms opkaldsaflytning.",
    "policyLabel": "Politik:",
    "resetIn": "nulstilles ind",
    "quotaTotal": "i alt"
  },
  "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"
  }
}
