{
  "common": {
    "save": "Lagre",
    "cancel": "Avbryt",
    "delete": "Slett",
    "loading": "Laster inn...",
    "error": "Det oppsto en feil",
    "success": "Suksess",
    "confirm": "Er du sikker?",
    "refresh": "Oppdater",
    "close": "Lukk",
    "add": "Legg til",
    "edit": "Rediger",
    "search": "Søk",
    "back": "Tilbake",
    "next": "Neste",
    "submit": "Send inn",
    "reset": "Tilbakestill",
    "copy": "Kopier",
    "copied": "Kopiert!",
    "enabled": "Aktivert",
    "disabled": "Deaktivert",
    "active": "Aktiv",
    "inactive": "Inaktiv",
    "noData": "Ingen data tilgjengelig",
    "nothingHere": "Nothing here yet",
    "configure": "Konfigurer",
    "manage": "Administrer",
    "name": "Navn",
    "actions": "Handlinger",
    "status": "Status",
    "type": "Type",
    "model": "Modell",
    "models": "modeller",
    "provider": "Leverandør",
    "account": "Konto",
    "time": "Tid",
    "details": "Detaljer",
    "created": "Opprettet",
    "lastUsed": "Last Refreshed",
    "loadMore": "Last inn mer",
    "noResults": "Ingen resultater funnet",
    "reloadPage": "Last inn siden på nytt",
    "connected": "Tilkoblet",
    "disconnected": "Koblet fra",
    "notConfigured": "Ikke konfigurert",
    "testConnection": "Test tilkobling",
    "enable": "Aktiver",
    "disable": "Deaktiver",
    "columns": "Kolonner",
    "newest": "Nyeste",
    "oldest": "Eldst",
    "all": "Alle",
    "none": "Ingen",
    "yes": "Ja",
    "no": "Nei",
    "on": "__MISSING__:ON",
    "off": "__MISSING__:OFF",
    "warning": "Advarsel",
    "note": "Merk",
    "free": "Gratis",
    "skipToContent": "Gå til innhold",
    "maintenanceServerIssues": "Server is experiencing issues. Some features may be unavailable.",
    "maintenanceServerUnreachable": "Server is unreachable. Reconnecting...",
    "accept": "Godta",
    "accountId": "Konto-ID",
    "alias": "Alias",
    "apiKeyId": "API-nøkkel-ID",
    "apiKeyName": "API-nøkkelnavn",
    "apiKeySecret": "API-nøkkelhemmelighet",
    "authorization": "Autorisasjon",
    "content-type": "Innholdstype",
    "content-length": "Innholdslengde",
    "cookie": "Cookie",
    "file": "Fil",
    "host": "Vert",
    "id": "ID",
    "import": "Importer",
    "limit": "Begrens",
    "offset": "Offset",
    "open": "Åpne",
    "origin": "Opprinnelse",
    "promptTokens": "Spør Tokens",
    "completionTokens": "Fullføringssymboler",
    "totalTokens": "Totalt tokens",
    "rawModel": "Rå modell",
    "scope": "Omfang",
    "skill": "Ferdighet",
    "sortBy": "Sorter etter",
    "sortOrder": "Sorteringsrekkefølge",
    "tab": "Tab",
    "text": "Tekst",
    "textarea": "Tekstområde",
    "tool": "Verktøy",
    "toolId": "Verktøy-ID",
    "web": "Web",
    "whereUsed": "Hvor det brukes",
    "whitelist": "Hviteliste",
    "blacklist": "Svarteliste",
    "resolve": "Løs",
    "force": "Kraft",
    "base64url": "Base64 URL",
    "hex": "Hex",
    "range": "Rekkevidde",
    "component": "Komponent",
    "redirect_uri": "Omdiriger URI",
    "idempotency-key": "Idempotensnøkkel",
    "error_description": "Feilbeskrivelse",
    "code": "Kode",
    "compatible": "Kompatibel",
    "chat-completions": "Chatfullføringer",
    "oauth": "OAuth",
    "auth_token": "Auth Token",
    "crypto": "Krypto",
    "hours": "Timer",
    "selfsigned": "Selvsignert",
    "proxy_id": "Proxy ID",
    "proxyId": "Proxy ID",
    "connectionId": "Tilkoblings-ID",
    "resolveConnectionId": "Løs tilkoblings-ID",
    "resolve_connection_id": "Løs tilkoblings-ID",
    "scope_id": "Omfang ID",
    "scopeId": "Omfang ID",
    "jwtSecret": "JWT-hemmelighet",
    "keytar": "Keytar",
    "better-sqlite3": "bedre-sqlite3",
    "undici": "undici",
    "builder-id": "Byggherre-ID",
    "musicDesc": "Musikkbeskrivelse",
    "musicGeneration": "Musikkgenerasjon",
    "idc": "IDC",
    "cloud-status-changed": "Skystatus endret",
    "where_used": "Hvor det brukes",
    "windowMs": "Vindu (ms)",
    "social-github": "GitHub",
    "social-google": "Google",
    "TOOL_ALLOWLIST": "Verktøytillatelsesliste",
    "TOOL_DENYLIST": "Verktøyfornektelsesliste",
    "Failed to save pricing": "Kunne ikke lagre prisen",
    "Failed to reset pricing": "Kunne ikke tilbakestille priser",
    "apikey": "API-nøkkel",
    "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-leverandører",
    "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": "Bare gratis",
    "addFirstProvider": "Legg til din første leverandør",
    "addFirstProviderDesc": "Koble til en AI-leverandør for å starte ruting av forespørsler gjennom OmniRoute. Du kan bruke gratisleverandører, API-nøkler eller OAuth-kontoer.",
    "learnMore": "Lær mer",
    "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 Tier-leverandører",
    "freeTierLabel": "Gratis lag tilgjengelig",
    "freeTierProvidersDesc": "Leverandører med gratis nivåer - noen krever en API-nøkkelregistrering, andre trenger ingen legitimasjon i det hele tatt.",
    "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åk avvik og systemhelse",
    "flaggedAnomalies": "Merkede anomalier",
    "noAnomaliesDetected": "Ingen avvik oppdaget",
    "apiKey": "API-nøkkel",
    "xpLastHour": "XP (1t)",
    "zScore": "Z-score",
    "tokensCommunityServers": "Fellesskapsservere",
    "tokensServerNamePlaceholder": "Servernavn",
    "tokensApiKeyPlaceholder": "API-nøkkel",
    "tokensTokenBalance": "Tokensaldo",
    "tokensSendTokens": "Send tokens",
    "tokensRecipientApiKeyId": "API-nøkkel-ID for mottaker",
    "tokensRecipientApiKeyIdPlaceholder": "Skriv inn mottakerens API-nøkkel-ID",
    "tokensReasonOptional": "Årsak (valgfritt)",
    "tokensReasonPlaceholder": "f.eks. bonus, belønning",
    "tokensTransactionHistory": "Transaksjonshistorikk",
    "tokensNoTransactionsYet": "Ingen transaksjoner ennå",
    "tokensInviteCodes": "Invitasjonskoder",
    "tokensMaxUses": "Maks bruk",
    "tokensRedeemCode": "Løs inn kode",
    "tokensRedeemCodePlaceholder": "Skriv inn invitasjonskoden",
    "tokensYourActiveInvites": "Dine aktive invitasjoner",
    "tierCoverageTitle": "Nivådekning",
    "tierCoverageSubtitle": "Leverandører konfigurert per reservenivå",
    "batchDetailCopyId": "Kopier ID",
    "batchDetailClose": "Lukk",
    "batchDetailEndpoint": "Endepunkt",
    "batchDetailModel": "Modell",
    "batchDetailWindow": "Vindu",
    "batchDetailCreated": "Opprettet",
    "providerTopologyEmpty": "Ingen leverandører tilkoblet ennå",
    "badgeToastUnlocked": "Merket er låst opp!",
    "batchListSearchPlaceholder": "Søk etter ID, endepunkt, modell...",
    "batchListDeleteAllCompletedTitle": "Slett alle fullførte batcher",
    "batchListBatchesTable": "Batcher",
    "changelogViewerLoading": "Laster inn endringslogg fra GitHub...",
    "profileLoading": "Laster profil...",
    "profileHowToEarn": "Hvordan tjene",
    "bootstrapBannerDismiss": "Avvis",
    "batchListDeleteBatchTitle": "Slett batch og dens filer",
    "leaderboardYourRank": "Din rangering",
    "leaderboardLoading": "Laster inn ledertavlen ...",
    "batchFileDetailCopyId": "Kopier ID",
    "batchFileDetailClose": "Lukk",
    "batchFileDetailFailedToLoad": "Kunne ikke laste inn filinnholdet",
    "batchFilesListSearchPlaceholder": "Søk etter ID eller filnavn...",
    "batchFilesListFilesTable": "Filer",
    "batchPageLoadingMore": "Laster inn mer …",
    "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": "Dashbord",
    "providers": "Leverandører",
    "combos": "Combos",
    "usage": "Bruk",
    "analytics": "Analytics",
    "costs": "Kostnader",
    "health": "Helse",
    "proxy": "Proxy",
    "limits": "Grenser og kvoter",
    "cliTools": "CLI-verktøy",
    "media": "Medier",
    "settings": "Innstillinger",
    "translator": "Oversetter",
    "playground": "Lekeplass",
    "searchTools": "Search Tools",
    "agents": "Agenter",
    "cloudAgents": "Skyagenter",
    "memory": "Memory",
    "skills": "Skills",
    "omniSkills": "OmniSkills",
    "agentSkills": "Agentferdigheter",
    "docs": "Dokumenter",
    "issues": "Problemer",
    "endpoints": "Endepunkter",
    "endpointsSubtitle": "Dine AI-tilkoblings-URLer",
    "apiManager": "API-behandler",
    "apiManagerSubtitle": "Administrer API-nøkler og tilgang",
    "embeddedServices": "__MISSING__:Embedded Services",
    "embeddedServicesSubtitle": "__MISSING__:Manage local proxy services",
    "logs": "Logger",
    "webhooks": "Webhooks",
    "webhooksSubtitle": "Bli varslet om hendelser",
    "combosSubtitle": "Gruppeleverandører for failover",
    "batchSubtitle": "Behandle flere forespørsler",
    "contextCavemanSubtitle": "Rask komprimering",
    "contextRtkSubtitle": "Utgangsfiltrering",
    "auditLog": "Revisjonslogg",
    "shutdown": "Avslutning",
    "restart": "Start på nytt",
    "shutdownConfirm": "Slå av OmniRoute?",
    "restartConfirm": "Starte OmniRoute på nytt?",
    "version": "v{version}",
    "debug": "Feilsøk",
    "system": "System",
    "help": "Hjelp",
    "primarySection": "Main",
    "cliSection": "CLI",
    "debugSection": "Debug",
    "systemSection": "System",
    "helpSection": "Help",
    "serverDisconnected": "Server frakoblet",
    "serverDisconnectedMsg": "Proxy-serveren er stoppet eller starter på nytt.",
    "expandSidebar": "Utvid sidefeltet",
    "collapseSidebar": "Skjul sidefeltet",
    "themes": "Themes",
    "presetColors": "Popular colors",
    "createTheme": "Create theme",
    "chooseColor": "Pick one color",
    "themeCoral": "Coral",
    "themeBlue": "Blue",
    "themeRed": "Red",
    "themeGreen": "Green",
    "themeViolet": "Violet",
    "themeOrange": "Orange",
    "themeCyan": "Cyan",
    "cliToolsShort": "Verktøy",
    "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 revisjon",
    "settingsGeneral": "General",
    "settingsAppearance": "Appearance",
    "settingsAi": "AI Settings",
    "settingsSecurity": "Security",
    "settingsFeatureFlags": "Funksjonsflagg",
    "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": "Bytt systemfunksjoner",
    "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-tilbakekalling for systemhendelser.",
    "configuredWebhooks": "Konfigurerte Webhooks",
    "configuredWebhooksDesc": "Administrer leveringsendepunkter, abonnerte hendelser, status og testsendinger.",
    "addWebhook": "Legg til Webhook",
    "editWebhook": "Rediger Webhook",
    "name": "Navn",
    "namePlaceholder": "Produksjonsovervåking",
    "unnamedWebhook": "Unavngitt webhook",
    "url": "Endpoint URL",
    "events": "Hendelser",
    "allEvents": "Alle arrangementer",
    "secret": "Hemmelig",
    "secretPlaceholder": "La stå tomt for å automatisk generere en hemmelighet",
    "secretEditPlaceholder": "La stå tomt for å beholde den gjeldende hemmeligheten",
    "status": "Status",
    "active": "Aktiv",
    "inactive": "Inaktiv",
    "errored": "Feil",
    "total": "Totalt",
    "lastTriggered": "Sist utløst",
    "actions": "Handlinger",
    "enabled": "Aktivert",
    "enabledDesc": "Deaktiverte webhooks forblir lagret, men mottar ikke leveranser.",
    "refresh": "Oppdater",
    "loading": "Laster inn webhooks...",
    "never": "Aldri",
    "failureCount": "{count, plural, =0 {no failures} one {# failure} other {# failures}}",
    "testWebhook": "Send test",
    "testSuccess": "Test webhook sendt.",
    "testFailed": "Test webhook mislyktes.",
    "saveSuccess": "Webhook ble lagret.",
    "saveFailed": "Kunne ikke lagre webhook.",
    "loadFailed": "Kunne ikke laste inn webhooks.",
    "delete": "Slett",
    "deleteConfirm": "Er du sikker på at du vil slette denne webhooken?",
    "deleteSuccess": "Webhook ble slettet.",
    "deleteFailed": "Kunne ikke slette webhook.",
    "edit": "Rediger",
    "enable": "Aktiver",
    "disable": "Deaktiver",
    "noWebhooks": "Ingen webhooks er konfigurert ennå.",
    "signatureTitle": "Webhook signaturer",
    "signatureDescription": "Hver levering inkluderer en X-Webhook-Signature-header signert med HMAC-SHA256 ved bruk av webhook-hemmeligheten. Bekreft 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": "Revisjon",
    "auditDescription": "Gjennomgå samsvarshendelser og MCP-verktøyoppkall fra én operasjonell visning.",
    "complianceTab": "Overholdelse",
    "mcpTab": "MCP revisjon",
    "title": "Samsvarsrevisjon",
    "description": "Retningslinjer, tilgang, leverandør og sikkerhetshendelser registrert av overholdelsesrevisjonsloggen.",
    "eventType": "Hendelsestype",
    "eventTypePlaceholder": "Filtrer etter handling eller hendelsestype",
    "severity": "Alvorlighetsgrad",
    "allSeverities": "Alle alvorlighetsgrader",
    "info": "Info",
    "warning": "Advarsel",
    "critical": "Kritisk",
    "sourceIp": "Kilde IP",
    "userOrKey": "Bruker / nøkkel",
    "action": "Handling",
    "result": "Resultat",
    "details": "Detaljer",
    "timestamp": "Tidsstempel",
    "from": "Fra",
    "to": "Til",
    "refresh": "Oppdater",
    "export": "Eksporter",
    "clearFilters": "Tøm filtre",
    "loading": "Laster inn revisjonshendelser ...",
    "showing": "Viser {count} av {total} hendelser",
    "policyViolation": "Brudd på retningslinjene",
    "accessDenied": "Tilgang nektet",
    "injectionBlocked": "Injeksjon blokkert",
    "noEvents": "Ingen samsvarshendelser registrert.",
    "failedFetch": "Kunne ikke hente revisjonsloggen for samsvar.",
    "viewDetails": "Se detaljer",
    "closeDetails": "Lukk detaljer",
    "notAvailable": "—",
    "system": "systemet",
    "previous": "Forrige",
    "next": "Neste",
    "mcpAudit": "MCP revisjon",
    "mcpAuditDesc": "Verktøyoppringingsrevisjonsoppføringer registrert av MCP-serveren.",
    "failedFetchMcpAudit": "Kunne ikke hente MCP-revisjonsloggen.",
    "tool": "Verktøy",
    "toolPlaceholder": "Filtrer etter verktøynavn",
    "duration": "Varighet",
    "apiKey": "API-nøkkel",
    "output": "Utgang",
    "allResults": "Alle resultater",
    "success": "Suksess",
    "failure": "Feil",
    "noMcpEvents": "Ingen MCP-revisjonshendelser registrert.",
    "a2aAudit": "A2A revisjon",
    "a2aAuditDesc": "Revisjonsspor for oppgaveutførelse registrert av A2A-serveren.",
    "a2aShowingTasks": "Viser {count} av {total} oppgaver",
    "a2aSkill": "Ferdighet",
    "a2aSkillPlaceholder": "Filtrer etter ferdighetsnavn",
    "a2aState": "stat",
    "a2aAllStates": "Alle stater",
    "a2aStateSubmitted": "Sendt inn",
    "a2aStateWorking": "Arbeider",
    "a2aStateCompleted": "Fullført",
    "a2aStateFailed": "Mislyktes",
    "a2aStateCancelled": "Kansellert",
    "a2aTaskId": "Oppgave-ID",
    "a2aEvents": "Hendelser",
    "a2aArtifacts": "Artefakter",
    "a2aNoTasks": "Ingen A2A-oppgaver registrert.",
    "a2aLoadingTasks": "Laster inn A2A-oppgaver..."
  },
  "themesPage": {
    "title": "Themes",
    "description": "Choose a preset theme or create your own with a single color",
    "presetColors": "Popular colors",
    "customTheme": "Custom theme",
    "customThemeDesc": "Click create theme and pick one color",
    "createTheme": "Create theme",
    "activePreset": "Active theme"
  },
  "header": {
    "logout": "Logg ut",
    "language": "Språk",
    "providers": "Leverandører",
    "providerDescription": "Administrer AI-leverandørtilkoblingene dine",
    "combos": "Combos",
    "comboDescription": "Modellkombinasjoner med fallback",
    "usage": "Bruk og analyse",
    "usageDescription": "Overvåk API-bruken din, tokenforbruk og forespørselslogger",
    "analytics": "Analytics",
    "analyticsDescription": "Diagrammer, trender og evalueringsinnsikt",
    "cliTools": "CLI-verktøy",
    "cliToolsDescription": "Konfigurer CLI-verktøy",
    "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": "Innstillinger",
    "settingsDescription": "Administrer dine preferanser",
    "openaiCompatible": "OpenAI-kompatibel",
    "anthropicCompatible": "Antropisk kompatibel",
    "media": "Media",
    "mediaDescription": "Generate images, videos, and music",
    "themes": "Themes",
    "themesDescription": "Choose a color theme for the whole dashboard panel",
    "costsDescription": "Track spending, analyze trends, and manage your AI budget across all providers",
    "cacheDescription": "Monitor provider prompt cache efficiency and local semantic response reuse.",
    "limitsDescription": "Configure rate limits and quotas per API key and provider",
    "runtimeDescription": "Live runtime observability — circuit breakers, cooldowns, model lockouts, sessions and quota alerts",
    "apiManagerDescription": "Manage API keys and access control for your OmniRoute instance",
    "batchDescription": "Process large volumes of requests asynchronously with batched API calls",
    "contextCavemanDescription": "Rule-based message compression, language packs, analytics and output mode controls.",
    "contextRtkDescription": "Command-aware compression for tool output, terminal logs and build results.",
    "contextCombosDescription": "Define how engines are combined for different routing scenarios.",
    "changelogDescription": "Stay up to date with the latest platform features and announcements.",
    "agentsDescription": "Manage and configure AI agent tools: Codex, Devin, Jules, and custom agents",
    "cloudAgentsDescription": "Orchestrate cloud-based AI agents with live task tracking and plan approval",
    "memoryDescription": "Persistent conversational memory with semantic search and FTS5 full-text indexing",
    "skillsDescription": "Install and manage sandbox skills for automated prompt and tool execution",
    "agentSkillsDescription": "Agent-ready skills catalog with one-click URL copy for AI client integration",
    "translatorDescription": "Translate and test prompts across API formats: OpenAI ↔ Claude ↔ Gemini",
    "playgroundDescription": "Test prompts interactively with live provider responses and format inspection",
    "searchToolsDescription": "Search analytics, provider breakdown, cache hit rates, and cost tracking",
    "logsDescription": "Real-time request logs, error traces, and streaming event inspector",
    "auditDescription": "Compliance audit trail of API key usage, MCP tool calls, and policy events",
    "webhooksDescription": "Configure webhook endpoints to receive real-time event notifications",
    "healthDescription": "System health overview: providers, circuit breakers, rate limits, and database",
    "proxyDescription": "Configure upstream proxy settings for outbound provider connections",
    "apiEndpointsDescription": "Manage custom API endpoint configurations and routing overrides",
    "batchFilesDescription": "Browse and manage batch job output files and results",
    "analyticsEvalsDescription": "Model evaluation results and performance benchmarks",
    "analyticsSearchDescription": "Search query analytics, cache hit rates, and cost tracking",
    "analyticsUtilizationDescription": "Provider utilization metrics and capacity planning",
    "analyticsComboHealthDescription": "Real-time health and performance of combo routing configurations",
    "analyticsCompressionDescription": "Context compression analytics and token savings",
    "costsBudgetDescription": "Budget limits and spending alerts per API key and provider",
    "costsPricingDescription": "Custom pricing configuration for token cost calculations",
    "logsProxyDescription": "Upstream proxy request logs and traffic inspection",
    "logsConsoleDescription": "Application console output and debug logs",
    "logsActivityDescription": "Audit trail of user actions and system events",
    "auditMcpDescription": "MCP tool invocation audit trail and compliance records",
    "auditA2a": "A2A revisjon",
    "auditA2aDescription": "Revisjonsspor for A2A-oppgaveutførelse, tilstandsoverganger og registreringer av ferdighetsanrop",
    "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": "Funksjonsflagg",
    "featureFlagsDescription": "Kontrollsystemfunksjoner og eksperimentelle funksjoner",
    "featureFlagsActive": "{count} aktiv",
    "featureFlagsInactive": "{count} inaktiv",
    "featureFlagsOverrides": "{count} DB overstyringer",
    "featureFlagsSearch": "Søk etter flagg...",
    "featureFlagsCategoryAll": "Alle",
    "featureFlagsCategorySecurity": "Sikkerhet",
    "featureFlagsCategoryNetwork": "Nettverk",
    "featureFlagsCategoryPolicies": "Retningslinjer",
    "featureFlagsCategoryRuntime": "Kjøretid",
    "featureFlagsCategoryCli": "CLI",
    "featureFlagsCategoryHealth": "Helse",
    "featureFlagsSourceDb": "DB",
    "featureFlagsSourceEnv": "ENV",
    "featureFlagsSourceDefault": "DEF",
    "featureFlagsReset": "Tilbakestill",
    "featureFlagsResetAll": "Tilbakestill alle overstyringer",
    "featureFlagsResetAllConfirm": "Er du sikker på at du vil tilbakestille alle funksjonsflaggoverstyringer? Dette vil tilbakestille alle flagg til deres ENV- eller standardverdier.",
    "featureFlagsRestartRequired": "Omstart kreves for å søke",
    "featureFlagsNoResults": "Ingen flagg samsvarer med søket ditt",
    "featureFlagsSaved": "Flagget er oppdatert",
    "featureFlagsError": "Kunne ikke oppdatere flagget",
    "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": "Rask start",
    "quickStartDesc": "Kom i gang i 4 trinn. Koble til leverandører, rutemodeller, overvåk alt.",
    "fullDocs": "Fulle dokumenter",
    "step1Title": "1. Opprett API-nøkkel",
    "step1Desc": "Gå til <endpoint>Endpoint</endpoint> -> Registrerte nøkler. Generer én nøkkel per miljø.",
    "step2Title": "2. Koble til leverandører",
    "step2Desc": "Legg til kontoer i <providers>Providers</providers>. Støtter OAuth, API Key og gratis nivåer.",
    "step3Title": "3. Pek klienten din",
    "step3Desc": "Angi basis-URL til {url} i IDE- eller API-klienten.",
    "step4Title": "4. Overvåk og optimaliser",
    "step4Desc": "Spor tokens, kostnader og feil i <logs>Request Logs</logs> og <analytics>Analytics</analytics>.",
    "providersOverview": "Oversikt over leverandører",
    "configuredOf": "{configured} konfigurert av {total} tilgjengelige leverandører",
    "noModelsAvailable": "Ingen modeller tilgjengelig for denne leverandøren.",
    "noProvidersConfigured": "Ingen leverandører er konfigurert ennå",
    "addProvider": "Legg til en leverandør",
    "configureFirst": "Konfigurer en tilkobling først i {providers}",
    "configureProvider": "Konfigurer leverandør",
    "modelAvailable": "{count} modell tilgjengelig",
    "modelsAvailable": "{count} modeller tilgjengelig",
    "connectionsActive": "{count} tilkobling aktiv",
    "connectionsActivePlural": "{count} tilkoblinger aktive",
    "copyModelName": "Kopier modellnavnet",
    "documentation": "Dokumentasjon",
    "healthMonitor": "Helsemonitor",
    "reportIssue": "Rapporter problem",
    "activeError": "{active} aktiv · {errors} feil",
    "oauthLabel": "OAuth",
    "apiKeyLabel": "API-nøkkel",
    "requestsShort": "{count} req",
    "providerModelsTitle": "{provider} - Modeller",
    "copiedModel": "Kopiert: {model}",
    "aliasLabel": "alias",
    "updateNow": "Oppdater nå",
    "updating": "Oppdaterer...",
    "updateAvailableDesc": "En ny versjon er tilgjengelig. Klikk for å oppdatere.",
    "updateStarted": "Oppdatering startet...",
    "reloadingPageAutomatically": "Laster siden automatisk på nytt...",
    "providerTopology": "Leverandørtopologi"
  },
  "analytics": {
    "title": "Analytics",
    "usageAnalyticsTitle": "__MISSING__:Usage Analytics",
    "diversityScoreTitle": "Leverandørmangfold",
    "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åk API-bruksmønstre, tokenforbruk, kostnader og aktivitetstrender på tvers av alle leverandører og modeller.",
    "evalsDescription": "Kjør evalueringspakker for å teste og validere LLM-endepunktene dine. Sammenlign modellkvalitet, registrer regresjoner og benchmark latens.",
    "overview": "Oversikt",
    "evals": "Evals",
    "utilization": "Utnyttelse",
    "utilizationDescription": "Leverandørkvotebrukstrender og hastighetsgrensesporing",
    "modelStatus": "Modellstatus",
    "modelStatusCooldown": "Nedkjøling",
    "modelStatusUnavailable": "Utilgjengelig",
    "modelStatusError": "Feil",
    "comboHealth": "Kombohelse",
    "comboHealthDescription": "Kombonivåkvote, bruksfordeling og ytelsesmålinger",
    "compressionAnalyticsTitle": "Compression Analytics",
    "compressionAnalyticsDescription": "Compression analytics — token savings, mode breakdown, and provider stats.",
    "autoRoutingTotalAutoRequests": "Totalt antall automatiske forespørsler",
    "autoRoutingAvgSelectionScore": "Gjennomsnittlig utvalgspoeng",
    "autoRoutingExplorationRate": "Utforskningshastighet",
    "autoRoutingLkgpHitRate": "LKGP Trefffrekvens",
    "autoRoutingRequestsByVariant": "Forespørsler etter variant",
    "autoRoutingTopRoutedProviders": "Topp rutede leverandører",
    "comboHealthWorstQuotaLeft": "Dårligste kvote igjen",
    "comboHealthUsageSkew": "Bruksskjevhet",
    "comboHealthSuccessRate": "Suksessrate",
    "comboHealthQuotaHealth": "Kvote helse",
    "comboHealthRequests": "Forespørsler",
    "comboHealthTokens": "Tokens",
    "comboHealthAvgLatency": "Gjennomsnittlig ventetid",
    "comboHealthTotalRequests": "Totalt antall forespørsler",
    "comboHealthExecutionTargets": "Gjennomføringsmål",
    "comboHealthSuccess": "Suksess",
    "comboHealthLatency": "Latens",
    "comboHealthQuota": "Kvote",
    "comboHealthTitle": "Kombinert helse",
    "comboHealthUnableToLoad": "Kan ikke laste inn kombinasjonshelse",
    "comboHealthGettingStarted": "Komme i gang",
    "compressionAnalyticsTotalRequests": "Totalt antall forespørsler",
    "compressionAnalyticsTokensSaved": "Tokens lagret",
    "compressionAnalyticsAvgSavings": "Gj.sn. besparelser",
    "compressionAnalyticsAvgDuration": "Gjennomsnittlig varighet",
    "compressionAnalyticsReceipts": "Kvitteringer",
    "compressionAnalyticsFallbacks": "Tilbakeslag",
    "compressionAnalyticsPromptTokens": "Spør tokens",
    "compressionAnalyticsCompletionTokens": "Fullføringssymboler",
    "compressionAnalyticsTotalTokens": "Totalt tokens",
    "compressionAnalyticsCacheTokens": "Cache tokens",
    "compressionAnalyticsNoDataYet": "Ingen komprimeringsdata ennå",
    "searchAnalyticsTotalSearches": "Totalt antall søk",
    "searchAnalyticsCacheHitRate": "Hurtigbuffertrefffrekvens",
    "searchAnalyticsTotalCost": "Total kostnad",
    "searchAnalyticsAvgResponse": "Gj.sn. svar",
    "searchAnalyticsNoSearchesYet": "Ingen søk ennå",
    "providerUtilizationTitle": "Leverandørbruk",
    "providerUtilizationFailedToLoad": "Kunne ikke laste inn bruksdata",
    "providerUtilizationNoData": "Ingen bruksdata tilgjengelig",
    "providerUtilizationGettingStarted": "Komme i gang",
    "providerUtilizationLatestSnapshot": "Siste øyeblikksbilde av kvoten",
    "providerUtilizationRemainingCapacity": "Gjenværende kapasitet"
  },
  "apiManager": {
    "title": "API-nøkler",
    "createKey": "Opprett API-nøkkel",
    "key": "Nøkkel",
    "revokeKey": "Tilbakekall nøkkel",
    "revokeConfirm": "Er du sikker på at du vil tilbakekalle denne API-nøkkelen?",
    "noKeys": "Ingen API-nøkler ennå",
    "noKeysDesc": "Lag din første API-nøkkel for å autentisere forespørsler til endepunktet ditt",
    "keyLabel": "Nøkkeletikett",
    "permissions": "Tillatelser",
    "expiresAt": "Utløper",
    "never": "Aldri",
    "revoke": "Oppheve",
    "showKey": "Vis nøkkel",
    "hideKey": "Skjul nøkkel",
    "copyKey": "Kopier API-nøkkel",
    "allModels": "Alle modeller",
    "selectedModels": "Utvalgte modeller",
    "readOnly": "Kun lesetilgang",
    "fullAccess": "Full tilgang",
    "keyManagement": "API Key Management",
    "keyManagementDesc": "Opprett og administrer API-nøkler for autentisering av forespørsler til endepunktet ditt",
    "totalKeys": "Totalnøkler",
    "restricted": "Begrenset",
    "totalRequests": "Totalt antall forespørsler",
    "modelsAvailable": "Modeller tilgjengelig",
    "registeredKeys": "Registrerte nøkler",
    "keysRegistered": "{count} nøkler registrert",
    "keyRegistered": "{count} nøkkel registrert",
    "keysSecurityNote": "Hver nøkkel isolerer brukssporing og kan trekkes tilbake uavhengig. Nøkler er maskert etter opprettelse for sikkerhet.",
    "createFirstKey": "Lag din første nøkkel",
    "name": "Navn",
    "usage": "Bruk",
    "created": "Opprettet",
    "actions": "Handlinger",
    "reqs": "krav",
    "neverUsed": "Aldri brukt",
    "deleteConfirm": "Vil du slette denne API-nøkkelen?",
    "usageTips": "Brukstips",
    "tipAuth": "Bruk API-nøkler i autorisasjonsoverskriften som bærer DIN_KEY",
    "tipSecure": "Nøkler vises bare én gang under opprettelsen – oppbevar dem sikkert",
    "tipSeparate": "Lag separate nøkler for forskjellige klienter eller miljøer",
    "tipRestrict": "Begrens nøkler til spesifikke modeller for bedre sikkerhet og kostnadskontroll",
    "keyName": "Nøkkelnavn",
    "keyNamePlaceholder": "f.eks. produksjonsnøkkel, utviklingsnøkkel",
    "keyNameDesc": "Velg et beskrivende navn for å identifisere formålet med denne nøkkelen",
    "managementAccessDesc": "Tillat denne API-nøkkelen å administrere OmniRoute-konfigurasjonen.",
    "selfServiceVisibility": "Selvbetjeningssynlighet",
    "selfServiceVisibilityDesc": "Styr hva denne nøkkelen kan se om eget forbruk og delt upstream-kvote.",
    "ownUsageVisibility": "Egen kostnad og tokenbruk",
    "ownUsageVisibilityDesc": "Tillat denne nøkkelen å kalle sitt status-endepunkt for eget USD-forbruk, budsjettprosent og token-totaler.",
    "sharedAccountQuotaVisibility": "Delt kontokvote",
    "sharedAccountQuotaVisibilityDesc": "Tillat denne nøkkelen å se delt upstream-kontokvote når én eksplisitt tilkobling er konfigurert.",
    "keyCreated": "API-nøkkel opprettet",
    "keyCreatedSuccess": "Nøkkel ble opprettet!",
    "keyCreatedNote": "Kopier og lagre denne nøkkelen nå – den vises ikke igjen.",
    "done": "Ferdig",
    "savePermissions": "Lagre tillatelser",
    "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": "Tillat alle",
    "restrict": "Begrens",
    "allowAllInfo": "Denne nøkkelen har tilgang til alle tilgjengelige modeller.",
    "restrictInfo": "Denne nøkkelen har tilgang til {selected} av {total}-modeller.",
    "selected": "{count} valgt",
    "all": "Alle",
    "clear": "Klart",
    "searchModels": "Søk etter modeller etter navn eller leverandør...",
    "noModelsFound": "Ingen modeller funnet",
    "keyNameRequired": "Nøkkelnavn er påkrevd",
    "keyNameTooLong": "Nøkkelnavnet må være {max} tegn eller mindre",
    "keyNameInvalid": "Nøkkelnavn kan bare inneholde bokstaver, tall, mellomrom, bindestreker og understreker",
    "invalidKeyName": "Ugyldig nøkkelnavn",
    "failedCreateKey": "Kunne ikke opprette nøkkel",
    "failedCreateKeyRetry": "Kunne ikke opprette nøkkel. Vennligst prøv igjen.",
    "invalidKeyId": "Ugyldig nøkkel-ID",
    "failedDeleteKey": "Kunne ikke slette nøkkelen",
    "failedDeleteKeyRetry": "Kunne ikke slette nøkkelen. Vennligst prøv igjen.",
    "invalidModelsSelection": "Ugyldig modellvalg",
    "cannotSelectMoreThanModels": "Kan ikke velge mer enn {max} modeller",
    "failedUpdatePermissions": "Kunne ikke oppdatere tillatelser",
    "failedUpdatePermissionsRetry": "Kunne ikke oppdatere tillatelser. Vennligst prøv igjen.",
    "unknownProvider": "ukjent",
    "copyMaskedKey": "Kopier maskert nøkkel",
    "keyOnlyAvailableAtCreation": "Full key available only at creation time — copy it when you first create the key",
    "modelsCount": "{count, plural, one {# model} other {# models}}",
    "lastUsedOn": "Siste: {date}",
    "editPermissions": "Rediger tillatelser",
    "deleteKey": "Slett nøkkel",
    "regenerateKey": "Regenerer nøkkel",
    "regenerateConfirm": "Er du sikker på at du vil gjenskape denne API-nøkkelen? Den gamle nøkkelen vil umiddelbart bli ugyldig.",
    "failedRegenerateKey": "Kunne ikke regenerere API-nøkkelen",
    "failedRegenerateKeyRetry": "Kunne ikke regenerere API-nøkkelen. Vennligst prøv igjen.",
    "model": "{count} modell",
    "models": "{count} modeller",
    "permissionsTitle": "Tillatelser: {name}",
    "allowAllDesc": "Denne nøkkelen har tilgang til alle tilgjengelige modeller.",
    "restrictDesc": "Denne nøkkelen har tilgang til {selectedCount} av {totalModels}-modeller.",
    "selectedCount": "{count} valgt",
    "maxActiveSessions": "Maks aktive økter",
    "apiManagerCustomRateLimits": "Egendefinerte satsgrenser",
    "apiManagerCustomRateLimitsDesc": "Overstyr globale standardgrenser. La stå tomt for å bruke standardinnstillinger.",
    "apiManagerRateLimitRequestsPlaceholder": "Forespørsler",
    "apiManagerRateLimitReqPer": "req /",
    "apiManagerRateLimitSecondsPlaceholder": "Sekunder",
    "apiManagerRemoveLimitTitle": "Fjern grensen",
    "apiManagerTimezonePlaceholder": "Amerika/Sao_Paulo",
    "noLogPayloadPrivacy": "Personvern uten logg nyttelast",
    "bannedStatus": "Utestengt status",
    "managementApiAccess": "Management API-tilgang",
    "expirationDate": "Utløpsdato",
    "managementAccess": "Administrasjonstilgang",
    "allowedConnections": "Tillatte tilkoblinger",
    "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": "Revisjonslogg",
    "searchPlaceholder": "Søkehandlinger...",
    "action": "Handling",
    "actor": "Skuespiller",
    "target": "Mål",
    "ipAddress": "IP-adresse",
    "timestamp": "Tidsstempel",
    "noEntries": "Ingen revisjonsoppføringer funnet",
    "filterByAction": "Filtrer etter handling...",
    "filterByActor": "Filtrer etter skuespiller...",
    "filterEntriesAria": "Filtrer revisjonsloggoppføringer",
    "filterByActionTypeAria": "Filtrer etter handlingstype",
    "filterByActorAria": "Filtrer etter skuespiller",
    "refreshAuditLogAria": "Oppdater revisjonslogg",
    "tableAria": "Revisjonsloggoppføringer",
    "failedFetchAuditLog": "Kunne ikke hente revisjonsloggen",
    "notAvailable": "—",
    "description": "Administrative handlinger og sikkerhetshendelser",
    "showing": "Viser {count} oppføringer (offset {offset})",
    "previous": "Forrige"
  },
  "media": {
    "title": "Medialab",
    "subtitle": "Generer bilder, videoer og musikk",
    "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": "Kopier",
    "resetToDefault": "Tilbakestill 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-verktøy",
    "noActiveProviders": "Ingen aktive tilbydere",
    "noActiveProvidersDesc": "Vennligst legg til og koble til leverandører først for å konfigurere CLI-verktøy.",
    "mapModels": "Kartmodeller",
    "testConnection": "Test tilkobling",
    "connectionStatus": "Tilkoblingsstatus",
    "configureEndpoint": "Konfigurer endepunkt",
    "instructions": "Instruksjoner",
    "modelMapping": "Modellkartlegging",
    "baseUrl": "Base URL",
    "apiKey": "API-nøkkel",
    "configured": "Konfigurert",
    "notConfigured": "Ikke konfigurert",
    "notInstalled": "Ikke installert",
    "custom": "Egendefinert",
    "unknown": "Ukjent",
    "lastSavedAt": "Sist lagret: {date}",
    "never": "Aldri",
    "justNow": "akkurat nå",
    "minutesAgoShort": "{count}m siden",
    "hoursAgoShort": "{count}t siden",
    "daysAgoShort": "{count}d siden",
    "monthsAgoShort": "{count}mnd siden",
    "yearsAgoShort": "{count}y siden",
    "runtimeCheckFailed": "Kjøretidssjekk mislyktes",
    "yourApiKeyPlaceholder": "din-api-nøkkelen",
    "modelPlaceholder": "leverandør/modell-id",
    "configurationSaved": "Konfigurasjonen er lagret.",
    "failedToSave": "Kunne ikke lagre konfigurasjonen.",
    "noApiKeysCreateOne": "Ingen API-nøkler – Opprett en på Nøkler-siden",
    "defaultOmnirouteKey": "sk_omniroute (standard)",
    "selectModel": "Velg modell",
    "selectModelForAlias": "Velg modell for {alias}",
    "selectModelForTool": "Velg modell for {tool}",
    "select": "Velg",
    "clear": "Klart",
    "comingSoon": "Kommer snart",
    "checkingRuntime": "Sjekker kjøretidsstatus ...",
    "guideOnlyIntegration": "Integrasjon kun for guide (ingen lokal kjøretid kreves)",
    "cliRuntimeDetected": "CLI kjøretid oppdaget og klar",
    "cliFoundNotRunnable": "CLI funnet, men ikke kjørbar{reason}",
    "cliRuntimeNotDetected": "CLI kjøretid ikke oppdaget",
    "binary": "Binær",
    "configPath": "Konfigurasjonsbane",
    "configPathShort": "Konfig",
    "failedCheckRuntimeStatus": "Kunne ikke sjekke kjøretidsstatus.",
    "copy": "Kopier",
    "copied": "Kopiert",
    "copyConfig": "Kopier konfig",
    "saveConfig": "Lagre konfig",
    "selectionSaved": "Utvalget lagret",
    "guide": "Veiledning",
    "detected": "Oppdaget",
    "notReady": "Ikke klar",
    "active": "Aktiv",
    "inactive": "Inaktiv",
    "startMitm": "Start MITM",
    "stopMitm": "Stopp MITM",
    "mitmStarted": "MITM startet vellykket!",
    "mitmStopped": "MITM stoppet vellykket!",
    "failedStart": "Kunne ikke starte MITM",
    "failedStop": "Kunne ikke stoppe MITM",
    "saveMappings": "Lagre tilordninger",
    "mappingsSaved": "Kartene er lagret!",
    "failedSaveMappings": "Kunne ikke lagre tilordninger",
    "howItWorks": "Slik fungerer det:",
    "antigravityHowWorksDesc": "Antigravity sender forespørsler til Googles endepunkt. MITM avskjærer og omdirigerer dem til OmniRoute.",
    "antigravityStep1": "1. Start MITM for å rute forespørsler gjennom OmniRoute.",
    "antigravityStep2Prefix": "2. Legg til",
    "antigravityStep2Suffix": "til vertsfilen din som 127.0.0.1.",
    "antigravityStep3": "3. Åpne Antigravity og forespørsler vil bli fullfø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-passord kreves",
    "sudoPasswordHint": "Administratorpassord kreves for å endre vertsfil og systemproxyinnstillinger.",
    "enterSudoPassword": "Skriv inn sudo-passord",
    "sudoPasswordRequiredError": "Sudo-passord kreves.",
    "cancel": "Avbryt",
    "confirm": "Bekreft",
    "settingsApplied": "Innstillingene ble brukt!",
    "failedApplySettings": "Kunne ikke bruke innstillingene",
    "settingsReset": "Innstillinger tilbakestilt!",
    "failedResetSettings": "Kunne ikke tilbakestille innstillingene",
    "backupRestored": "Sikkerhetskopien gjenopprettet!",
    "failedRestore": "Kunne ikke gjenopprette",
    "checkingCli": "Sjekker {tool} CLI...",
    "cliNotRunnable": "{tool} CLI installert, men ikke kjørbar",
    "cliNotInstalled": "{tool} CLI ikke installert",
    "cliNotDetected": "{tool} CLI ikke oppdaget",
    "cliDetectedReady": "{tool} CLI oppdaget og klar",
    "cliFoundFailedHealthcheck": "{tool} CLI ble funnet, men mislyktes med kjøretidshelsesjekk{reason}.",
    "installCliPrompt": "Installer {tool} CLI for å bruke denne funksjonen.",
    "installCodexPrompt": "Installer Codex CLI for å bruke funksjonen for automatisk bruk.",
    "hide": "Skjul",
    "howToInstall": "Hvordan installere",
    "installationGuide": "Installasjonsveiledning",
    "platforms": "macOS / Linux / Windows:",
    "afterInstallationRun": "Etter installasjon, kjør",
    "toVerify": "å verifisere.",
    "current": "Gjeldende",
    "baseUrlPlaceholder": "https://.../v1",
    "resetToDefault": "Tilbakestill til standard",
    "providerModelPlaceholder": "leverandør/modell-id",
    "apply": "Søk",
    "reset": "Tilbakestill",
    "manualConfig": "Manuell konfig",
    "backups": "Sikkerhetskopier",
    "configBackups": "Konfigurer sikkerhetskopier",
    "noBackupsYet": "Ingen sikkerhetskopier ennå. Sikkerhetskopier opprettes automatisk før hver bruk eller tilbakestilling.",
    "restore": "Gjenopprett",
    "backupRestoredReloading": "Sikkerhetskopien gjenopprettet! Laster inn status på nytt ...",
    "failedRestoreBackup": "Kunne ikke gjenopprette sikkerhetskopien",
    "applied": "Søkt!",
    "failed": "Mislyktes",
    "resetDone": "Tilbakestill!",
    "omnirouteConfiguredOpenAiCompatible": "OmniRoute er konfigurert som OpenAI-kompatibel leverandør",
    "provider": "Leverandør",
    "model": "Modell",
    "providers": "Leverandører",
    "auth": "Auth",
    "noApiKeysAvailable": "Ingen API-nøkler tilgjengelig",
    "usingDefaultOmniroute": "Bruker standard: sk_omniroute",
    "updateConfig": "Oppdater konfig",
    "applyConfig": "Bruk Config",
    "noBackupsAvailable": "Ingen sikkerhetskopier tilgjengelig.",
    "profileSaved": "Profilen \"{name}\" er lagret!",
    "failedSaveProfile": "Kunne ikke lagre profilen",
    "profileActivated": "Profil aktivert!",
    "failedActivateProfile": "Kunne ikke aktivere profilen",
    "profiles": "Profiler",
    "savedProfiles": "Lagrede profiler",
    "noProfilesYet": "Ingen profiler er lagret ennå. Lagre gjeldende konfigurasjon som en profil nedenfor.",
    "activate": "Aktiver",
    "deleteProfile": "Slett profil",
    "profileNamePlaceholder": "Profilnavn (f.eks. personlig konto)",
    "saveCurrent": "Lagre gjeldende",
    "codexAuthNotePrefix": "Codex bruker",
    "codexAuthNoteMiddle": "med",
    "codexAuthNoteSuffix": "Klikk \"Bruk\" for å konfigurere automatisk.",
    "claudeManualConfiguration": "Claude CLI - Manuell konfigurasjon",
    "codexManualConfiguration": "Codex CLI - Manual Configuration",
    "droidManualConfiguration": "Factory Droid - Manuell konfigurasjon",
    "openClawManualConfiguration": "Åpne Claw - Manuell konfigurasjon",
    "clineManualConfiguration": "Cline manuell konfigurasjon",
    "kiloManualConfiguration": "Kilokode manuell konfigurasjon",
    "whenToUseLabel": "Når du skal bruke",
    "openToolDocs": "Åpne verktøydokumenter",
    "toolUseCases": {
      "claude": "Bruk når du vil ha sterke planleggingsarbeidsflyter og lange multifilrefaktorer med Claude Code.",
      "codex": "Bruk når teamet ditt er standardisert på OpenAI Codex CLI-flyter og profilbasert autentisering.",
      "droid": "Bruk når du trenger en lettvekts terminalagent fokusert på rask koding og løkker for kommandoutførelse.",
      "openclaw": "Bruk når du vil ha en Open Claw-kodingsagent, men rutet gjennom OmniRoute-policyer.",
      "cline": "Bruk når du konfigurerer kodeagenter inne i redaktører og ønsker veiledet oppsett med OmniRoute-modeller.",
      "kilo": "Bruk når arbeidsflyten din avhenger av Kilo Code-kommandoer og raske iterative redigeringer.",
      "cursor": "Bruk når du koder i Cursor og du trenger tilpassede OpenAI-kompatible modeller gjennom OmniRoute.",
      "continue": "Bruk når du kjører Continue i IDEer og du trenger bærbar JSON-basert leverandørkonfigurasjon.",
      "opencode": "Bruk når du foretrekker terminal-native agentkjøringer og skriptautomatisering via OpenCode.",
      "kiro": "Brukes når du integrerer Kiro og kontrollerer modellruting sentralt fra OmniRoute.",
      "windsurf": "Use when you want an AI-first IDE with Codeium/Windsurf models routed through OmniRoute.",
      "antigravity": "Brukes når Antigravity/Kiro-trafikk må avskjæres gjennom MITM og rutes til OmniRoute.",
      "copilot": "Bruk når du vil ha Copilot chat-stil UX mens du håndhever OmniRoute-nøkler og rutingsregler.",
      "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": "Bruk når du trenger en lett terminal-native AI-assistent for raske oppgaver.",
      "hermes-agent": "__MISSING__:Use when you need Hermes Agent (by Nousresearch) with default, delegation, vision and auxiliary models routed through OmniRoute.",
      "custom": "Bruk for tilpassede verktøyimplementeringer eller generiske OpenAI-kompatible konfigurasjoner."
    },
    "toolDescriptions": {
      "antigravity": "Google Antigravity IDE med MITM",
      "claude": "Antropisk Claude Code CLI",
      "codex": "OpenAI Codex CLI",
      "droid": "Factory Droid AI Assistant",
      "openclaw": "Åpne Claw AI Assistant",
      "cline": "Cline AI-kodingsassistent CLI",
      "kilo": "Kilokode AI Assistant CLI",
      "cursor": "Cursor AI Code Editor",
      "continue": "Fortsett 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-konfigurasjonsgenerator"
    },
    "guides": {
      "cursor": {
        "notes": {
          "0": "Krever Cursor Pro-konto for å bruke denne funksjonen.",
          "1": "Markøren ruter forespørsler gjennom sin egen server, så lokalt endepunkt støttes ikke. Aktiver Cloud Endpoint i Innstillinger."
        },
        "steps": {
          "1": {
            "title": "Åpne Innstillinger",
            "desc": "Gå til Innstillinger -> Modeller"
          },
          "2": {
            "title": "Aktiver OpenAI API",
            "desc": "Aktiver alternativet \"OpenAI API-nøkkel\"."
          },
          "3": {
            "title": "Base URL"
          },
          "4": {
            "title": "API-nøkkel"
          },
          "5": {
            "title": "Legg til egendefinert modell",
            "desc": "Klikk \"Vis alle modeller\" -> \"Legg til egendefinert modell\""
          },
          "6": {
            "title": "Velg modell"
          }
        }
      },
      "continue": {
        "steps": {
          "1": {
            "title": "Åpne Config",
            "desc": "Åpne Fortsett konfigurasjonsfil"
          },
          "2": {
            "title": "API-nøkkel"
          },
          "3": {
            "title": "Velg modell"
          },
          "4": {
            "title": "Legg til modellkonfig",
            "desc": "Legg til følgende konfigurasjon til modellarrayet ditt:"
          }
        },
        "notes": {
          "0": "Continue bruker JSON-konfigurasjonsfilen."
        }
      },
      "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 krever API-nøkkelkonfigurasjon.",
          "1": "Angi basis-URL til OmniRoute-endepunktet."
        }
      },
      "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 krever 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": "Egendefinert CLI",
    "toolCategories": "Tool Categories",
    "visibleToolsCount": "{count} verktøy tilgjengelig",
    "customCliBuilderTitle": "OpenAI-kompatibel CLI-bygger",
    "customCliBuilderDescription": "Generer env vars og JSON-kodebiter for en hvilken som helst CLI eller SDK som godtar en OpenAI-kompatibel basis-URL, API-nøkkel og modell-ID.",
    "customCliNoModels": "Koble til minst én leverandør for å fylle ut modellvelgerne.",
    "customCliNameLabel": "CLI navn",
    "customCliNamePlaceholder": "f.eks. Teamet mitt CLI",
    "customCliDefaultModelLabel": "Standardmodell",
    "customCliDefaultModelHelp": "Bruk hvilken som helst OmniRoute-modell-ID eller kombinasjon. De fleste OpenAI-kompatible CLI-er trenger bare /v1 base URL pluss en modellstreng.",
    "customCliKeyHelper": "For lokale installasjoner kan OmniRoute bruke sk_omniroute. I skymodus velger du en av administrasjons-API-nøklene dine.",
    "customCliAliasMappingsLabel": "Alias kartlegginger",
    "customCliAliasMappingsHelp": "Valgfrie hjelpealiaser for wrapper-skript eller konfigurasjonsfiler som ønsker stabile stenografinavn.",
    "customCliAddAlias": "Legg til alias",
    "customCliNoMappings": "Ingen alias-tilordninger ennå. Legg til en hvis wrapperen eller teamskriptene dine bruker stabile korte navn.",
    "customCliAliasPlaceholder": "f.eks. anmeldelse",
    "customCliTargetModelLabel": "Målmodell",
    "customCliEndpointHintLabel": "Hvordan koble endepunktet",
    "customCliEndpointHint": "Pek enhver OpenAI-kompatibel klient til OmniRoute /v1 base URL. Sluttpunktet for ubehandlet chatfullføring er {endpoint}. Bruk JSON-blokken når verktøyet vil ha et leverandørobjekt, eller env-skriptet når det leser OPENAI_*-variabler.",
    "customCliEnvBlockTitle": "Env / shell-snutt",
    "customCliJsonBlockTitle": "Leverandør JSON-blokk",
    "copilotConfigGenerator": "GitHub Copilot Config Generator",
    "copilotApiKey": "API-nøkkel",
    "copilotFilterModelsPlaceholder": "Filtermodeller...",
    "copilotMaxInputTokens": "Maks input-tokens",
    "copilotMaxOutputTokens": "Maks utgang-tokens",
    "copilotToolCalling": "Verktøyanrop",
    "copilotPasteInto": "Lim inn i: ",
    "wireApiChatCompletions": "Chatfullføringer (/chat/fullføringer)",
    "wireApiResponses": "Responses API (/responses)"
  },
  "combos": {
    "title": "Combos",
    "description": "Lag modellkombinasjoner med vektet ruting og reservestøtte",
    "autoCatalogTitle": "Automatisk rutekatalog",
    "autoCatalogTemplateCount": "{count} maler",
    "autoCatalogDescription": "Innebygde auto/*-kombinasjoner løst dynamisk fra tilkoblede leverandører. Bruk en av disse ID-ene som modellfelt – ingen oppsett er nødvendig.",
    "autoCatalogExpand": "Utvid katalogen for automatisk ruting",
    "autoCatalogCollapse": "Skjul katalogen for automatisk ruting",
    "createCombo": "Opprett kombinasjon",
    "editCombo": "Rediger kombinasjon",
    "deleteCombo": "Slett kombinasjon",
    "noModels": "Ingen modeller",
    "noModelsYet": "Ingen modeller lagt til ennå",
    "addModel": "Legg til modell",
    "addModelToCombo": "Legg til modell i kombinasjon",
    "routingStrategy": "Rutingstrategi",
    "maxRetries": "Max prøver på nytt",
    "timeout": "Tidsavbrudd (ms)",
    "healthcheck": "Helsesjekk",
    "priority": "Prioritet",
    "fallback": "Tilbakeslag",
    "roundRobin": "Round Robin",
    "random": "Tilfeldig",
    "leastLatency": "Minste ventetid",
    "comboName": "Kombinasjonsnavn",
    "comboNamePlaceholder": "min-kombo",
    "deleteConfirm": "Vil du slette denne kombinasjonen?",
    "noCombosYet": "Ingen kombinasjoner ennå",
    "comboCreated": "Kombinasjonen ble opprettet",
    "comboUpdated": "Kombinasjonen ble oppdatert",
    "comboDeleted": "Combo slettet",
    "failedCreate": "Kunne ikke opprette kombinasjon",
    "failedUpdate": "Kunne ikke oppdatere kombinasjonen",
    "errorCreating": "Feil ved opprettelse av kombinasjon",
    "errorUpdating": "Feil ved oppdatering av kombinasjon",
    "errorDeleting": "Feil ved sletting av kombinasjon",
    "testFailed": "Testforespørsel mislyktes",
    "failedToggle": "Kunne ikke bytte kombinasjon",
    "testResults": "Testresultater — {name}",
    "resolvedBy": "Løst av:",
    "more": "+{count} til",
    "reqs": "krav",
    "success": "suksess",
    "proxyConfigured": "Proxy konfigurert",
    "copyComboName": "Kopier kombinasjonsnavnet",
    "enableCombo": "Aktiver kombinasjon",
    "disableCombo": "Deaktiver kombinasjon",
    "testCombo": "Testkombo",
    "duplicate": "Duplikat",
    "proxyConfig": "Proxy-konfigurasjon",
    "nameRequired": "Navn er påkrevd",
    "nameInvalid": "Bare bokstaver, tall, -, _, / og . tillatt",
    "nameHint": "Bokstaver, tall, -, _, / og . tillatt",
    "priorityDesc": "Sekvensiell fallback: prøver modell 1 først, deretter 2 osv.",
    "weightedDesc": "Fordeler trafikk etter vektprosent med reserve",
    "roundRobinDesc": "Sirkulær fordeling: hver forespørsel går til neste modell i rotasjon",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Preserves session continuity with handoff summaries when accounts rotate",
    "randomDesc": "Ensartet tilfeldig valg, deretter fallback til gjenværende modeller",
    "leastUsedDesc": "Velger modellen med færrest forespørsler, og balanserer belastningen over tid",
    "costOptimizedDesc": "Ruter til den billigste modellen først basert på priser",
    "resetAware": "Reset-Aware RR",
    "resetAwareDesc": "Balanserer gjenværende kvote mot 5 timer og ukentlige tilbakestillinger, og runder deretter lignende resultater",
    "strictRandom": "Strict Random",
    "strictRandomDesc": "Shuffle deck — uses each model once before reshuffling",
    "models": "Modeller",
    "autoBalance": "Autobalanse",
    "advancedSettings": "Avanserte innstillinger",
    "retryDelay": "Forsinkelse på nytt (ms)",
    "concurrencyPerModel": "Samtidighet / modell",
    "queueTimeout": "Tidsavbrudd 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": "La stå tomt for å bruke globale standardinnstillinger. Disse overstyrer innstillingene per leverandør.",
    "failoverBeforeRetry": "Failover før forsøk på nytt",
    "maxSetRetries": "Maks innstilte forsøk på nytt",
    "setRetryDelayMs": "Angi forsinkelse på nytt forsøk (ms)",
    "moveUp": "Flytt opp",
    "moveDown": "Flytt ned",
    "removeModel": "Fjern",
    "saving": "Lagrer...",
    "weighted": "Vektet",
    "leastUsed": "Minst brukt",
    "costOpt": "Cost-Opt",
    "strategyGuideTitle": "How to use this strategy",
    "strategyGuideWhen": "When to use",
    "strategyGuideAvoid": "Avoid when",
    "strategyGuideExample": "Example",
    "strategyGuide": {
      "priority": {
        "when": "You have one preferred model and only want fallback on failure.",
        "avoid": "You need request distribution across models.",
        "example": "Primary coding model with cheaper backup for outages."
      },
      "weighted": {
        "when": "You need controlled traffic split across models.",
        "avoid": "You cannot maintain accurate weights over time.",
        "example": "80% stable model + 20% canary model rollout."
      },
      "round-robin": {
        "when": "You want predictable and even distribution.",
        "avoid": "Models differ too much in latency or cost.",
        "example": "Same model on multiple accounts to spread throughput."
      },
      "random": {
        "when": "You want simple distribution with minimal setup.",
        "avoid": "You need strict traffic guarantees.",
        "example": "Quick prototyping with equivalent models."
      },
      "least-used": {
        "when": "You want adaptive balancing based on live demand.",
        "avoid": "Traffic is too low to benefit from usage balancing.",
        "example": "Mixed workloads where one model often gets overloaded."
      },
      "cost-optimized": {
        "when": "Cost reduction is your top priority.",
        "avoid": "Pricing data is missing or outdated.",
        "example": "Background or batch jobs where lower cost is preferred."
      },
      "reset-aware": {
        "when": "Du ruter over flere kontoer med kvotetelemetri og forskjellige tilbakestillingsvinduer.",
        "avoid": "Kvotetelemetri er utilgjengelig for de fleste kontoer.",
        "example": "Foretrekk en 60 % ukentlig kontotilbakestilling i morgen fremfor en 80 % kontotilbakestilling 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": "Bruk når du ønsker å utnytte en leverandørs kvote fullt ut før du går til neste.",
        "avoid": "Unngå når du trenger belastningsbalansering på forespørselsnivå på tvers av leverandører.",
        "example": "Eksempel: Bruk alle $200 Deepgram-kredittene før du faller tilbake til Groq."
      },
      "auto": {
        "when": "Bruk når du trenger flerfaktorscoringsruting basert på kostnad, ventetid og kvalitet.",
        "avoid": "Unngå når du trenger streng prioriteringsbestilling eller historisk utholdenhet.",
        "example": "Eksempel: Balanse forespørsler på tvers av modeller med ulike styrker."
      },
      "lkgp": {
        "when": "Bruk når du ønsker å rute basert på historiske suksessrater og ytelse.",
        "avoid": "Unngå når historiske data er begrensede eller upålitelige.",
        "example": "Eksempel: Rute til modeller med god track record på spesifikke oppgaver."
      },
      "context-optimized": {
        "when": "Bruk når du trenger å optimalisere kontekstvindubruken på tvers av modeller.",
        "avoid": "Unngå når modeller har lignende kontekstlengder eller oppgavene er enkle.",
        "example": "Eksempel: Fordel lange samtaler på tvers av modeller med større kontekstvinduer."
      }
    },
    "advancedHelp": {
      "maxRetries": "How many retries are attempted before failing a request.",
      "retryDelay": "Initial wait between retries. Higher values reduce burst pressure.",
      "timeout": "Maximum request duration before aborting.",
      "healthcheck": "Skips unhealthy models/providers from routing decisions.",
      "concurrencyPerModel": "Max simultaneous requests allowed per model in round-robin.",
      "queueTimeout": "How long a request can wait in queue before timing out.",
      "failoverBeforeRetry": "Når den er aktivert, utløser enhver oppstrømsfeil umiddelbar failover til neste kombinasjonsmål, og hopper over alle gjenforsøk og reservenettadresser.",
      "maxSetRetries": "Antall ganger å prøve hele målet satt på nytt når hvert mål mislykkes. 0 = ingen forsøk på nytt på satt nivå.",
      "setRetryDelayMs": "Forsinkelse mellom gjenforsøk på sett-nivå, noe som gir forbigående problemer tid til å løse."
    },
    "templatesTitle": "Quick templates",
    "templatesDescription": "Apply a starting profile, then adjust models and config.",
    "templateApply": "Apply template",
    "templateHighAvailability": "High availability",
    "templateHighAvailabilityDesc": "Priority routing with health checks and safe retries.",
    "templateCostSaver": "Cost saver",
    "templateCostSaverDesc": "Cost-optimized routing for budget-first workloads.",
    "templateBalanced": "Balanced load",
    "templateBalancedDesc": "Least-used routing to spread demand over time.",
    "usageGuideHide": "Hide",
    "usageGuideDontShowAgain": "Don't show again",
    "usageGuideShow": "Show guide",
    "quickTestTitle": "Combo ready to validate",
    "quickTestDescription": "Run a test now to confirm fallback and latency behavior.",
    "testNow": "Test now",
    "pricingCoverage": "Pricing coverage",
    "pricingCoverageHint": "Cost-optimized works best when all combo models have pricing.",
    "pricingAvailable": "Pricing available",
    "pricingMissing": "No pricing",
    "pricingAvailableShort": "priced",
    "pricingMissingShort": "no-price",
    "warningRoundRobinSingleModel": "Round-robin is most useful with at least 2 models.",
    "warningCostOptimizedPartialPricing": "Only {priced} of {total} models have pricing. Routing may be partially cost-aware.",
    "warningCostOptimizedNoPricing": "No pricing data found for this combo. Cost-optimized may route unexpectedly.",
    "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 å spare?",
    "readinessDescription": "Se gjennom sjekklisten før du oppretter eller oppdaterer denne kombinasjonen.",
    "readinessCheckName": "Kombinasjonsnavnet er gyldig",
    "readinessCheckModels": "Minst én modell er valgt",
    "readinessCheckWeights": "Vektet total er 100 %",
    "readinessCheckWeightsOptional": "Vektregel er ikke nødvendig",
    "readinessCheckPricing": "Prisdata er tilgjengelig",
    "readinessCheckPricingOptional": "Prisregel er ikke nødvendig",
    "saveBlockedTitle": "Lagre er blokkert til følgende elementer er fikset:",
    "saveBlockName": "Definer et kombinasjonsnavn.",
    "saveBlockModels": "Legg til minst én modell.",
    "saveBlockWeighted": "Sett vekter til 100 % (gjeldende: {total}%).",
    "saveBlockPricing": "Legg til priser for minst én modell eller velg en annen 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": "Tilbakestillingsbevisst kontorotasjon",
        "description": "Balanserer gjenværende leverandørkvote mot tilbakestillingstidspunkt.",
        "tip1": "Bruk eksplisitte kontotrinn eller konto-tag-ruting for leverandører med kvotetelemetri.",
        "tip2": "Juster økten kontra ukentlige vekter når kortvarig utmattelse er mer risikabelt.",
        "tip3": "Hold båndet lite slik at tilsvarende kontoer fortsatt roterer ganske."
      },
      "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": "Eksosleverandørkvoter sekvensielt før de faller tilbake.",
        "tip1": "Bruk for kvotebasert ruting med tydelige reservekjeder.",
        "tip2": "Angi kvoter nøyaktig for å unngå for tidlig fallback.",
        "tip3": "Fungerer best med leverandører som tilbyr gratis nivåer eller kredittspann.",
        "title": "Kvoteutmattelse"
      },
      "auto": {
        "description": "Rute basert på sanntidsscoring for kostnad, ventetid, kvalitet og helse.",
        "tip1": "La motoren balansere flere faktorer automatisk.",
        "tip2": "Overvåk hvilke faktorer som styrer rutebeslutninger i logger.",
        "tip3": "Bruk for komplekse arbeidsmengder der ingen enkeltfaktor dominerer.",
        "title": "Multifaktoroptimalisering"
      },
      "lkgp": {
        "description": "Rute basert på historiske prestasjoner og suksessmønstre.",
        "tip1": "Krever tilstrekkelig forespørselshistorikk for nøyaktige spådommer.",
        "tip2": "Bra for arbeidsbelastninger med konsistente modellytelsesmønstre.",
        "tip3": "Overvåk prediksjonsnøyaktighet og juster vekter etter behov.",
        "title": "Historiebasert ruting"
      },
      "context-optimized": {
        "description": "Optimaliser ruting basert på kontekstvindubruk og tokeneffektivitet.",
        "tip1": "Rut lange samtaler til modeller med større kontekstvinduer.",
        "tip2": "Overvåk kontekstbruken for å unngå tokensløsing.",
        "tip3": "Best for konversasjons-AI som krever omfattende kontekstoppbevaring.",
        "title": "Kontekstoptimalisering"
      },
      "context-relay": {
        "description": "Best når kontorotasjon forventes og neste konto må arve et forenklet oppgavesammendrag.",
        "tip1": "Bruk med leverandører roterende kontoer for samme modellfamilie.",
        "tip2": "Sett overleveringsterskelen under harde kvotegrenser for oppsummeringstid.",
        "tip3": "Sett kun en dedikert oppsummeringsmodell hvis den primære er for dyr eller ustabil.",
        "title": "Øktkontinuitetsprioritet"
      },
      "p2c": {
        "description": "Rute til leverandøren med lavest gjeldende belastning basert på sanntidsmålinger.",
        "tip1": "Overvåk leverandørens helseberegninger for nøyaktig belastningsvurdering.",
        "tip2": "Fungerer best med homogene leverandørbassenger.",
        "tip3": "Juster følsomheten for å unngå svingninger under trafikktopper.",
        "title": "Kraften til to valg"
      }
    },
    "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 eksakte leverandør-/modell-/kontotrinnet er allerede i kombinasjonen.",
    "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": "Fullfør hvert trinn for å definere kombinasjoner, bygge trinn, velge rutingstrategi og gjennomgå resultater.",
    "builderStepsDescription": "Bygg hvert kombinasjonstrinn i rekkefølge: leverandør, modell og deretter konto. Dette gjør det mulig å gjenbruke samme leverandør og modell på tvers av forskjellige kontoer.",
    "selectProvider": "Velg Leverandør",
    "selectProviderPlaceholder": "Velg en leverandør",
    "selectModel": "Velg modell",
    "selectModelPlaceholder": "Velg en leverandør først",
    "selectAccount": "Velg Konto",
    "selectComboToReference": "Velg kombinasjon for å referere",
    "comboReference": "Kombinasjonsreferanse",
    "addComboReference": "Legg til kombinasjonsreferanse",
    "addStepBeforeContinue": "Legg til minst ett trinn før du fortsetter til neste trinn.",
    "previewNextStep": "Forhåndsvis neste trinn",
    "autoSelectAccount": "Velg konto automatisk ved kjøring",
    "modePackBalanced": "Balansert",
    "modePackBudget": "Budsjett",
    "modePackPerformance": "Ytelse",
    "modePackCustom": "Egendefinert",
    "browseLegacyCatalog": "Bla gjennom den eldre kombinasjonskatalogen",
    "agentFeaturesTitle": "Agentfunksjoner",
    "agentFeaturesDescription": "Aktiver avanserte funksjoner for agenter som bruker denne kombinasjonen",
    "agentFeaturesSystemMessageOverride": "Overstyr systemmelding",
    "agentFeaturesSystemMessagePlaceholder": "Du er en ekspertassistent...",
    "agentFeaturesSystemMessageHint": "Systemmeldingsoverstyring for agenter",
    "agentFeaturesToolFilterRegex": "/regex-pattern/",
    "agentFeaturesToolFilterHint": "Verktøyfilter regex for agenter",
    "agentFeaturesContextCacheHint": "Aktiver kontekstbuffer for agentverktøy",
    "agentFeaturesContextCacheProtection": "Beskytt cache fra agentverktøymutasjoner",
    "agentFeaturesContextLength": "Kontekstlengde",
    "agentFeaturesContextLengthPlaceholder": "f.eks. 128 000",
    "agentFeaturesContextLengthHint": "Definerer kontekstvinduet for denne kombinasjonen i /v1/modeller.",
    "agentFeaturesContextLengthErrorInteger": "Kontekstlengden må være et gyldig heltall",
    "agentFeaturesContextLengthErrorRange": "Kontekstlengden må være mellom 1000 og 2000000",
    "compressionOverride": "Komprimeringsoverstyring",
    "modePack": "Moduspakke"
  },
  "costs": {
    "title": "Kostnader",
    "pageDescription": "Spor utgifter, analyser trender og administrer AI-budsjettet ditt på tvers av alle leverandører",
    "overview": "Oversikt",
    "budget": "Budsjett",
    "totalCost": "Total kostnad",
    "breakdown": "Kostnadsfordeling",
    "noData": "Ingen kostnadsdata",
    "byModel": "Etter modell",
    "byProvider": "Av leverandør",
    "range7d": "7 dager",
    "range30d": "30 dager",
    "range90d": "90 dager",
    "rangeAll": "Hele tiden",
    "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": "Tokenbruk",
    "totalTokens": "Totalt tokens",
    "inputTokens": "Skriv inn tokens",
    "outputTokens": "Output tokens",
    "inputOutputRatio": "Input/output ratio",
    "tokens": "tokens",
    "routingEfficiency": "Ruting effektivitet",
    "fallbackCount": "Reserveforespørsler",
    "fallbackRate": "Fallback rate",
    "modelCoverage": "Modelldekning",
    "modelCoverageDesc": "% av forespørslene med eksplisitt modell",
    "outOfRequests": "ut av {total} forespørsler",
    "costByApiKey": "Kostnad etter API-nøkkel",
    "costByAccount": "Kostnad etter konto",
    "apiKeyName": "API-nøkkel",
    "account": "Konto",
    "requests": "Forespørsler",
    "cost": "Kostnad",
    "dayStreak": "dagsrekke",
    "weeklyUsagePattern": "Ukentlig bruksmønster",
    "activityHeatmap": "Aktivitet (365 dager)",
    "less": "Mindre",
    "more": "Mer",
    "monthlyForecast": "Månedlig prognose",
    "forecastBasis": "Basert på siste {days} dager",
    "avgDailyCost": "Gj.sn. daglig kostnad",
    "daysRemaining": "{days} dager igjen",
    "periodComparison": "Periode sammenligning",
    "previousPeriod": "Forrige halvdel",
    "currentPeriod": "Nåværende halvdel",
    "exportCSV": "Eksporter som CSV",
    "exportJSON": "Eksporter som JSON",
    "legacyFreeLabel": "__MISSING__:Legacy / Free",
    "costExplorerTitle": "Kostnadsutforsker",
    "costExplorerDescription": "Utforsk forbruk etter leverandør, modell, API-nøkkel, konto eller tjenestenivå.",
    "groupProvider": "Leverandør",
    "groupModel": "Modell",
    "groupApiKey": "API-nøkkel",
    "groupAccount": "Konto",
    "groupServiceTier": "Tjenestenivå",
    "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": "Dimensjon",
    "share": "Andel",
    "legacyOrFree": "Eldre / gratis",
    "filterRows": "Filtrer rader…",
    "filterCostExplorerRows": "Filtrer rader i kostnadsutforskeren",
    "noMatchingCostRows": "Ingen samsvarende kostnadsrader",
    "noMatchingCostRowsDescription": "Juster søketeksten, grupperingen eller valgt tidsvindu.",
    "showingCostRows": "Viser {shown} av {total} samsvarende rader.",
    "showingTopCostRows": "Viser {shown} av {total} samsvarende rader (topp 50)."
  },
  "endpoint": {
    "title": "API-endepunkt",
    "available": "Tilgjengelige endepunkter",
    "cloudProxy": "Cloud Proxy",
    "disableConfirm": "Er du sikker på at du vil deaktivere skyproxy?",
    "baseUrl": "Base URL",
    "apiKeyLabel": "API-nøkkel",
    "registeredKeys": "Registrerte nøkler",
    "chatCompletions": "Chatfullføringer",
    "responses": "Svar",
    "listModels": "Liste over modeller",
    "usingCloudProxy": "Bruker Cloud Proxy",
    "usingLocalServer": "Bruker lokal server",
    "machineId": "Maskin-ID: {id}...",
    "disableCloud": "Deaktiver Cloud",
    "enableCloud": "Aktiver Cloud",
    "modelsAcrossEndpoints": "{models} modeller på tvers av {endpoints} endepunkter",
    "loadingModels": "Loading available models...",
    "chatDesc": "Streaming og ikke-streaming chat med alle leverandører",
    "embeddings": "Innstøpinger",
    "embeddingsDesc": "Tekstinnbygging for søk og RAG-rørledninger",
    "imageGeneration": "Bildegenerering",
    "imageDesc": "Generer bilder fra tekstmeldinger",
    "rerank": "Ranger på nytt",
    "rerankDesc": "Ranger dokumenter på nytt etter relevans for en spørring",
    "audioTranscription": "Lydtranskripsjon",
    "audioTranscriptionDesc": "Transkribere lydfiler til tekst (Whisper)",
    "textToSpeech": "Tekst til tale",
    "textToSpeechDesc": "Konverter tekst til tale med naturlig lyd",
    "musicGeneration": "Music Generation",
    "musicDesc": "Generate music and audio tracks via ComfyUI (Stable Audio, MusicGen)",
    "moderations": "Moderasjoner",
    "moderationsDesc": "Innholdsmoderering og sikkerhetsklassifisering",
    "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": "Kjerne-API-er",
    "categoryMedia": "Media & Multi-Modal",
    "categorySearch": "Search & Discovery",
    "categoryUtility": "Verktøy & Administrasjon",
    "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": "Hva du vil få",
    "cloudBenefitAccess": "Få tilgang til API-en din fra hvor som helst i verden",
    "cloudBenefitShare": "Del enkelt endepunkt med teamet ditt",
    "cloudBenefitPorts": "Du trenger ikke å åpne porter eller konfigurere brannmur",
    "cloudBenefitEdge": "Rask globalt kantnettverk",
    "cloudSessionNote": "Cloud vil beholde godkjenningsøkten din i 1 dag. Hvis den ikke brukes, slettes den automatisk.",
    "cloudUnstableNote": "Cloud er for øyeblikket ustabil med Claude Code OAuth i noen tilfeller.",
    "cloudConnected": "Cloud Proxy tilkoblet!",
    "connectingToCloud": "Kobler til skyen ...",
    "verifyingConnection": "Bekrefter tilkoblingen …",
    "connecting": "Kobler til...",
    "verifying": "Bekrefter...",
    "connected": "Tilkoblet!",
    "disableCloudTitle": "Deaktiver Cloud Proxy",
    "disableWarning": "Alle autentiseringsøkter vil bli slettet fra skyen.",
    "syncingData": "Synkroniserer siste data ...",
    "disablingCloud": "Deaktiverer skyen …",
    "syncing": "Synkroniserer...",
    "disabling": "Deaktiverer...",
    "cloudConnectedVerified": "Cloud Proxy tilkoblet og bekreftet!",
    "connectedVerificationPending": "Tilkoblet — bekreftelse venter",
    "connectedVerificationPendingWithError": "Tilkoblet — bekreftelse venter: {error}",
    "cloudDisabledSuccess": "Cloud deaktivert",
    "syncedSuccess": "Synkronisert vellykket",
    "failedDisable": "Kunne ikke deaktivere skyen",
    "failedEnable": "Kunne ikke aktivere skyen",
    "cloudRequestTimeout": "Tidsavbrudd for skyforespørsel",
    "cloudRequestFailed": "Skyforespørsel mislyktes",
    "cloudWorkerUnreachable": "Kunne ikke nå skyarbeideren. Sørg for at skytjenesten kjører (npm kjør dev in /cloud).",
    "connectionFailed": "Tilkobling mislyktes",
    "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 modeller tilgjengelig for denne leverandøren.",
    "chat": "Chat",
    "embedding": "Innebygging",
    "image": "Bilde",
    "custom": "tilpasset",
    "modelsCount": "{count, plural, one {# model} other {# models}}",
    "sectionTitle": "Integration Surface",
    "sectionDescription": "OpenAI-compatible APIs and operational protocol endpoints",
    "tabApis": "OpenAI-compatible APIs",
    "tabProtocols": "Protocols",
    "tabsAria": "Endpoint sections",
    "protocolsTitle": "Protocols",
    "protocolsDescription": "MCP and A2A are first-class endpoints with dedicated observability and controls.",
    "mcpCardTitle": "MCP Server",
    "mcpCardDescription": "Model Context Protocol over stdio",
    "a2aCardTitle": "A2A Server",
    "a2aCardDescription": "Agent2Agent JSON-RPC endpoint",
    "protocolToolsLabel": "Tools",
    "protocolTasksLabel": "Tasks",
    "protocolActiveStreamsLabel": "Active streams",
    "protocolLastActivity": "Last activity",
    "quickStart": "Quick Start",
    "openMcpDashboard": "Open MCP management",
    "openA2aDashboard": "Open A2A management",
    "mcpQuickStartTitle": "MCP Quick Start",
    "mcpQuickStartStep1": "Run the MCP server via `omniroute --mcp`.",
    "mcpQuickStartStep2": "Configure your MCP client to connect over stdio transport.",
    "mcpQuickStartStep3": "Påkall verktøy som `omniroute_get_health` og `omniroute_list_combos`.",
    "a2aQuickStartTitle": "A2A hurtigstart",
    "a2aQuickStartStep1": "Oppdag agentkortet på `/.well-known/agent.json`.",
    "a2aQuickStartStep2": "Send JSON-RPC-forespørsler til `POST /a2a` ved å bruke `message/send` eller `message/stream`.",
    "a2aQuickStartStep3": "Spor og kontroller oppgaver ved å bruke `tasks/get` og `tasks/cancel`.",
    "completionsLegacy": "Completions (Legacy)",
    "completionsLegacyDesc": "Legacy OpenAI text completions — accepts both prompt string and messages array format",
    "messagesApi": "Meldinger",
    "messagesApiDesc": "Native Anthropic Messages API-format for Claude-kompatible leverandører",
    "imageEdits": "Bilderedigeringer",
    "imageEditsDesc": "Rediger og modifiser eksisterende bilder med AI (inpainting, outpainting, variasjoner)",
    "batchApi": "Batch API",
    "batchApiDesc": "Behandle store grupper med forespørsler asynkront (OpenAI-kompatibel)",
    "filesApi": "Files API",
    "filesApiDesc": "Last opp og administrer filer for 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-passord (påkrevd på macOS/Linux)",
    "ngrokTitle": "ngrok tunnel",
    "ngrokRunning": "Løper",
    "ngrokStarting": "Starter",
    "ngrokStoppedState": "Stoppet",
    "ngrokNeedsAuth": "Trenger Auth",
    "ngrokNotInstalled": "Ikke installert",
    "ngrokUnsupported": "Støttes ikke",
    "ngrokError": "Feil",
    "ngrokEnable": "Aktiver Tunnel",
    "ngrokDisable": "Stopp tunnelen",
    "ngrokUrlNotice": "Skaper en offentlig ngroktunnel.",
    "ngrokAuthTokenLabel": "Authtoken (påkrevd hvis NGROK_AUTHTOKEN ikke er angitt)",
    "ngrokAuthTokenPlaceholder": "Skriv inn ngrok-authorttokenet ditt",
    "ngrokLastError": "Siste feil: {error}",
    "ngrokStarted": "ngroktunnelen startet",
    "ngrokStopped": "ngroktunnelen stoppet",
    "ngrokRequestFailed": "Kunne ikke oppdatere ngroktunnelen",
    "tokenSaverSubtitle": "Bruk mindre tokens på hver forespørsel.",
    "tokenSaverToolOutput": "Verktøyutgang",
    "tokenSaverLlmOutput": "LLM-utgang",
    "tokenSaverInputCompression": "Inndatakomprimering",
    "apiEndpointsCatalogUnavailable": "API-katalog utilgjengelig",
    "apiEndpointsSearchPlaceholder": "Søk etter endepunkter...",
    "apiEndpointsRequiresAuth": "Krever autentisering",
    "apiEndpointsNoMatch": "Ingen endepunkter samsvarer med filteret ditt",
    "localServer": "Lokal server",
    "cloudOmniroute": "Cloud OmniRoute",
    "copyUrl": "Kopier 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": "Laster inn MCP-dashbordet ...",
    "activate": "aktivere",
    "deactivate": "deaktivere",
    "confirmSwitchCombo": "Bekreft {action} kombinasjonen \"{combo}\"?",
    "switchComboFailed": "Kunne ikke bytte kombinasjonstilstand.",
    "switchComboSuccess": "Combo \"{combo}\" updated.",
    "confirmApplyProfile": "Apply resilience profile \"{profile}\"?",
    "applyProfileFailed": "Failed to apply resilience profile.",
    "applyProfileSuccess": "Profile \"{profile}\" applied.",
    "confirmResetBreakers": "Reset all circuit breakers?",
    "resetBreakersFailed": "Failed to reset circuit breakers.",
    "resetBreakersSuccess": "Circuit breakers reset.",
    "processStatus": "Process status",
    "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": "Kopier 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": "PID",
    "sessionUptime": "Session uptime",
    "lastHeartbeat": "Last heartbeat",
    "activity24h": "Activity (24h)",
    "totalCalls": "Total calls",
    "successRate": "Success rate",
    "avgLatency": "Avg latency",
    "topTools": "Top tools",
    "noToolCalls24h": "No tool calls in the last 24 hours.",
    "runtimeDetails": "Runtime details",
    "transport": "Transport",
    "scopesEnforced": "Scopes enforced",
    "yes": "yes",
    "no": "no",
    "lastCall": "Last call",
    "heartbeatPath": "Heartbeat path",
    "operationalControls": "Operational controls",
    "switchCombo": "Switch combo",
    "inactive": "inactive",
    "active": "active",
    "activateCombo": "Activate combo",
    "deactivateCombo": "Deactivate combo",
    "applyResilienceProfile": "Apply resilience profile",
    "profileAggressive": "aggressive",
    "profileBalanced": "balanced",
    "profileConservative": "conservative",
    "applyProfile": "Apply profile",
    "resetCircuitBreakers": "Reset circuit breakers",
    "resetCircuitBreakersHelp": "Clears current breaker state and failure counters for providers.",
    "resetAllBreakers": "Reset all breakers",
    "toolsAndScopes": "Tools and scopes",
    "tableTool": "Tool",
    "tableScopes": "Scopes",
    "tablePhase": "Phase",
    "tableAudit": "Audit",
    "auditLog": "Audit log",
    "auditSummary": "Calls: {total} | page {page} of {totalPages}",
    "allTools": "All tools",
    "allResults": "All results",
    "success": "Success",
    "failure": "Failure",
    "apiKeyIdPlaceholder": "apiKeyId",
    "loadingAuditEntries": "Loading audit entries...",
    "noAuditEntriesForFilters": "No audit entries found for current filters.",
    "tableTimestamp": "Timestamp",
    "tableDuration": "Duration",
    "tableResult": "Result",
    "tableApiKey": "API key",
    "failed": "failed",
    "previous": "Previous",
    "next": "Next",
    "apiKeyId": "Api Key Id",
    "offset": "Offset",
    "limit": "Limit",
    "tool": "Tool"
  },
  "a2aDashboard": {
    "loading": "Loading A2A dashboard...",
    "confirmCancelTask": "Cancel task {taskId}?",
    "cancelTaskFailed": "Failed to cancel task.",
    "cancelTaskSuccess": "Task {taskId} cancelled.",
    "smokeSendFailed": "message/send smoke test failed.",
    "smokeSendSuccessWithTask": "message/send ok (task {taskId}).",
    "smokeSendSuccess": "message/send ok.",
    "smokeStreamFailed": "message/stream smoke test failed.",
    "smokeStreamSuccessWithTask": "message/stream ok (task {taskId}{stateSuffix}).",
    "smokeStreamNoTaskId": "message/stream finished without task id.",
    "health": "Health",
    "ok": "ok",
    "totalTasks": "Total tasks",
    "activeStreams": "Active streams",
    "lastTask": "Last task",
    "taskStateOverview": "Task state overview",
    "state": {
      "submitted": "submitted",
      "working": "working",
      "completed": "completed",
      "failed": "failed",
      "cancelled": "cancelled"
    },
    "agentCard": "Agent card",
    "agentCardPath": "__MISSING__:/.well-known/agent.json",
    "version": "Version",
    "url": "URL",
    "capabilities": "Capabilities",
    "agentCardNotAvailable": "Agent card not available.",
    "quickValidation": "Quick validation",
    "quickValidationDescription": "Executes smoke calls through the live `/a2a` endpoint.",
    "runMessageSend": "Run message/send",
    "runMessageStream": "Run message/stream",
    "taskManagement": "Task management",
    "taskSummary": "{total} tasks | page {page} of {totalPages}",
    "allStates": "all",
    "allSkills": "all skills",
    "loadingTasks": "Loading tasks...",
    "noTasksForFilters": "No tasks found for current filters.",
    "tableTask": "Task",
    "tableSkill": "Skill",
    "tableState": "State",
    "tableUpdated": "Updated",
    "tableActions": "Actions",
    "view": "View",
    "cancel": "Cancel",
    "previous": "Previous",
    "next": "Next",
    "taskDetail": "Task detail",
    "close": "Close",
    "metadata": "Metadata",
    "events": "Events",
    "artifacts": "Artifacts",
    "tablePhase": "Table Phase",
    "offset": "Offset",
    "limit": "Limit",
    "skill": "Skill",
    "rpcEndpoint": "POST /a2a",
    "rpcMethodSend": "melding/send",
    "rpcMethodStream": "melding/strøm",
    "rpcMethodGet": "oppgaver/få",
    "rpcMethodCancel": "oppgaver/avbryt",
    "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": "Rørledningsfeil",
    "healthUnknown": "Helse ukjent",
    "checkingHealth": "Sjekker …",
    "checkHealth": "Sjekk helsen",
    "pageInfo": "Side {page} av {totalPages} ({total} totalt)",
    "previous": "Forrige",
    "next": "Neste",
    "cancel": "Avbryt",
    "save": "Lagre",
    "keyPlaceholder": "f.eks. bruker.preferencer.tema",
    "contentPlaceholder": "Verdi eller JSON-innhold å 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 ferdigheter etter navn, beskrivelse eller tag",
    "allModes": "Alle moduser",
    "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": "Systemhelse",
    "description": "Sanntidsovervåking av din OmniRoute-forekomst",
    "healthy": "Sunn",
    "degraded": "Degradert",
    "down": "Ned",
    "uptime": "Oppetid",
    "memory": "Minne",
    "memoryRss": "Minne (RSS)",
    "heap": "Heap",
    "cpu": "CPU",
    "database": "Database",
    "version": "Versjon",
    "lastCheck": "Siste sjekk",
    "providerHealth": "Leverandørhelse",
    "systemMetrics": "Systemmålinger",
    "tokenHealth": "Token Health",
    "refreshAll": "Oppdater alle",
    "checkNow": "Sjekk nå",
    "loadingHealth": "Laster inn helsedata ...",
    "failedToLoad": "Kunne ikke laste inn helsedata: {error}",
    "retry": "Prøv på nytt",
    "allOperational": "Alle systemer i drift",
    "issuesDetected": "Systemproblemer oppdaget",
    "updatedAt": "Oppdatert {time}",
    "latency": "Latens",
    "latencyP50": "p50",
    "latencyP95": "s95",
    "latencyP99": "s99",
    "millisecondsShort": "{value}ms",
    "notAvailable": "—",
    "totalRequests": "Totalt antall forespørsler",
    "noDataYet": "Ingen data ennå",
    "promptCache": "Spør Cache",
    "entries": "Oppføringer",
    "hitRate": "Trefffrekvens",
    "hitsMisses": "Treffer / savner",
    "signatureCache": "Signaturbuffer",
    "signatureDefaults": "Standarder",
    "signatureTool": "Verktøy",
    "signatureFamily": "Familie",
    "signatureSession": "Sesjon",
    "recovering": "Gjenoppretter",
    "noCBData": "Ingen strømbryterdata tilgjengelig. Kom med noen forespørsler først.",
    "providerHealthStatusAria": "Leverandørens helsestatus",
    "issuesLabel": "Problemer oppdaget",
    "operational": "Operasjonell",
    "providers": "Leverandører",
    "configuredProvidersLabel": "Konfigurert i dashbordet",
    "configuredProvidersHint": "Leverandører med legitimasjon lagret i /dashboard/leverandører, uavhengig av kjøretidstilstand.",
    "activeProviders": "{count} active",
    "activeProvidersHint": "Konfigurerte leverandører er for øyeblikket aktivert for rutingforespørsler.",
    "monitoredProviders": "{count} monitored",
    "monitoredProvidersHint": "Leverandører spores for øyeblikket av strømbryterhelsemonitorer.",
    "healthyCount": "{count} sunn",
    "nodeVersion": "Node {version}",
    "failures": "{count} feil",
    "failuresPlural": "{count} feil",
    "lastFailure": "Sist",
    "rateLimitStatus": "Takstgrensestatus",
    "activeLimiters": "{count} aktiv begrenser",
    "activeLimitersPlural": "{count} aktive begrensere",
    "queued": "I kø",
    "queuedCount": "{count} i kø",
    "running": "løping",
    "runningCount": "{count} kjører",
    "ok": "OK",
    "activeLockouts": "Aktive lockouter",
    "resetConfirm": "Tilbakestille alle effektbrytere til sunn tilstand? Dette vil slette alle feiltellinger og gjenopprette alle leverandører til driftsstatus.",
    "resetAllTitle": "Tilbakestill alle effektbrytere til sunn tilstand",
    "resetting": "Tilbakestiller...",
    "resetAll": "Tilbakestill alle",
    "until": "Inntil {time}",
    "limitExhausted": "Exhausted",
    "learnedFromHeaders": "Learned from headers",
    "remainingOfLimit": "{remaining}/{limit} remaining",
    "throttleStatus": "Throttle: {value}",
    "lastHeaderUpdate": "Header update: {age}",
    "databaseHealth": "Database helse",
    "stickyBoundSessions": "Klistrete økter",
    "sessionsByApiKey": "Økter etter API-nøkkel",
    "noActiveSessionsTracked": "Ingen aktive økter sporet ennå.",
    "noSessionQuotaMonitorsActive": "Ingen øktkvotemonitorer er aktive.",
    "gracefulDegradationStatus": "Grasiøs nedbrytningsstatus",
    "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": "Systemtelemetri",
    "description": "Rullende forespørsel, kjøretid, økt og minnesignaler fra denne OmniRoute-prosessen.",
    "uptime": "Oppetid",
    "totalRequests": "Totalt antall forespørsler",
    "avgLatency": "Gj.sn. ventetid",
    "errorRate": "Feilfrekvens",
    "activeConnections": "Aktive tilkoblinger",
    "memoryUsage": "Minnebruk",
    "latencyTrend": "Latency trend",
    "throughputTrend": "Gjennomstrømningstrend",
    "memoryTrend": "Minnetrenden",
    "refresh": "Oppdater",
    "updatedAt": "Oppdatert {time}",
    "loadFailed": "Kunne ikke laste inn telemetri.",
    "partialData": "Telemetri er delvis tilgjengelig: {error}"
  },
  "mitm": {
    "title": "MITM proxy",
    "description": "Transparent proxy for avskjæring og ruting av klientforespørsler.",
    "enable": "Aktiver MITM Proxy",
    "enableDesc": "Start eller stopp den lokale avlyttingsprosessen og DNS-overstyring.",
    "status": "Status",
    "running": "Løper",
    "stopped": "Stoppet",
    "start": "Start",
    "stop": "Stopp",
    "refresh": "Oppdater",
    "port": "Proxy-port",
    "apiKey": "Ruter API-nøkkel",
    "apiKeyPlaceholder": "Valgfritt; faller tilbake til en lokal nøkkel",
    "sudoPassword": "Sudo passord",
    "cachedPassword": "Bufret for denne prosessen",
    "saveSettings": "Lagre innstillinger",
    "settingsSaved": "MITM-innstillinger lagret.",
    "startedSuccess": "MITM proxy startet.",
    "stoppedSuccess": "MITM-proxy stoppet.",
    "saveFailed": "Kunne ikke oppdatere MITM-innstillingene.",
    "loadFailed": "Kunne ikke laste inn MITM-innstillinger.",
    "invalidPort": "Transparent MITM-avskjæring krever for øyeblikket port 443.",
    "certificate": "CA-sertifikat",
    "certificateReady": "Sertifikatet er tilgjengelig for klienttillitinstallasjon.",
    "certificateMissing": "Sertifikatet er ikke generert ennå.",
    "available": "Tilgjengelig",
    "missing": "Mangler",
    "downloadCert": "Last ned CA-sertifikat",
    "regenerateCert": "Regenerer sertifikat",
    "regenerateConfirm": "Dette vil ugyldiggjøre eksisterende kundetillit. Fortsette?",
    "regenerateSuccess": "MITM-sertifikat regenerert.",
    "regenerateFailed": "Kunne ikke regenerere MITM-sertifikatet.",
    "targetRoutes": "Målruter",
    "interceptedRequests": "Avlyttede forespørsler",
    "activeConnections": "Aktive tilkoblinger",
    "dnsConfigured": "DNS konfigurert",
    "pid": "PID",
    "lastIntercept": "Siste avskjæring",
    "target": "Mål",
    "host": "Vert",
    "localPort": "Lokal havn",
    "endpoints": "Endepunkter",
    "enabled": "Aktivert",
    "configured": "Konfigurert",
    "yes": "Ja",
    "no": "Nei",
    "noTargets": "Ingen målruter konfigurert."
  },
  "limits": {
    "title": "Grenser og kvoter",
    "rateLimit": "Satsgrense",
    "remaining": "Gjenværende",
    "requestsPerMinute": "Forespørsler/min",
    "tokensPerMinute": "Poletter/min",
    "dailyLimit": "Daglig grense"
  },
  "logs": {
    "title": "Logger",
    "requestLogs": "Be om logger",
    "proxyLogs": "Proxy-logger",
    "auditLog": "Revisjonslogg",
    "console": "Konsoll",
    "auditLogDesc": "Administrative handlinger og sikkerhetshendelser",
    "loading": "Laster inn...",
    "refresh": "Oppdater",
    "filterByAction": "Filtrer etter handling...",
    "filterByActor": "Filtrer etter skuespiller...",
    "filterEntriesAria": "Filtrer revisjonsloggoppføringer",
    "filterByActionTypeAria": "Filtrer etter handlingstype",
    "filterByActorAria": "Filtrer etter skuespiller",
    "refreshAuditLogAria": "Oppdater revisjonslogg",
    "tableAria": "Revisjonsloggoppføringer",
    "failedFetchAuditLog": "Kunne ikke hente revisjonsloggen",
    "showing": "Viser {count} oppføringer (offset {offset})",
    "search": "Søk",
    "timestamp": "Tidsstempel",
    "action": "Handling",
    "actor": "Skuespiller",
    "target": "Mål",
    "details": "Detaljer",
    "ipAddress": "IP-adresse",
    "notAvailable": "—",
    "noEntries": "Ingen revisjonsloggoppføringer funnet",
    "previous": "Forrige",
    "next": "Neste",
    "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": "Fjern alle",
    "confirmClearActiveRequests": "Vil du fjerne alle aktive forespørsler?",
    "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": "Sikkerhet",
    "test": "Test",
    "ready": "Klar!",
    "setPassword": "Angi passord",
    "addProvider": "Legg til din første leverandør",
    "getStarted": "Kom i gang",
    "skip": "Hopp over",
    "skipWizard": "Hopp over veiviseren helt",
    "skipPassword": "Hopp over passordoppsett",
    "skipAndContinue": "Hopp over og fortsett",
    "passwordLabel": "Passord",
    "confirmPassword": "Bekreft passord",
    "enterPassword": "Skriv inn passord",
    "confirmPasswordPlaceholder": "Bekreft passord",
    "passwordsMismatch": "Passord stemmer ikke",
    "setupComplete": "Oppsettet er fullført!",
    "goToDashboard": "Gå til Dashboard →",
    "welcomeDesc": "OmniRoute er din lokale AI API-proxy. Den ruter forespørsler til flere AI-leverandører med lastbalansering, failover og brukssporing.",
    "multiProvider": "Multileverandør",
    "usageTracking": "Brukssporing",
    "securityDesc": "Angi et passord for å beskytte dashbordet ditt, eller hopp over nå.",
    "providerDesc": "Koble til din første AI-leverandør. Du kan legge til flere senere.",
    "apiKeyRequired": "API-nøkkel (påkrevd)",
    "customUrlOptional": "Egendefinert URL (valgfritt)",
    "testDesc": "La oss kontrollere at leverandørtilkoblingen din fungerer.",
    "runTest": "Kjør tilkoblingstest",
    "testingConnection": "Tester tilkoblingen...",
    "connectionSuccessful": "Tilkoblingen var vellykket! Leverandøren din er klar.",
    "noProviderFound": "Ingen leverandør funnet. Du kan legge til en fra dashbordet senere.",
    "testFailed": "Testen mislyktes, men du kan konfigurere dette senere.",
    "couldNotTest": "Kunne ikke teste akkurat nå. Du kan teste fra dashbordet.",
    "doneDesc": "Du er klar! OmniRoute-forekomsten din er konfigurert og klar til å fullføre AI-forespørsler.",
    "yourEndpoint": "Ditt endepunkt:",
    "continue": "Fortsett",
    "retry": "Prøv på nytt",
    "failedSetPassword": "Kunne ikke angi passord. Prøv igjen.",
    "failedAddProvider": "Kunne ikke legge til leverandør. Prøv igjen.",
    "connectionError": "Tilkoblingsfeil. Vennligst prøv igjen.",
    "provider": "Leverandør",
    "apiKeyHelp": "En API-nøkkel er et passord for AI-tjenester. Få en fra leverandørens nettsted (f.eks. platform.openai.com, console.anthropic.com).",
    "tier": {
      "subtitle": "OmniRoute organiserer leverandørene i tre nivåer, så ruting foretrekker den mest pålitelige banen med lavest pris først.",
      "tier1": {
        "label": "Premium-kunder",
        "description": "Førsteklasses CLI-er med native auth-flyter og resonneringsmodeller."
      },
      "tier2": {
        "label": "Kostnadsoptimalisert",
        "description": "Billige tilbydere med høy gjennomstrømning som brukes til daglig trafikk."
      },
      "tier3": {
        "label": "Tilbakeslag og spesialitet",
        "description": "Lokalt vert eller spesialitetsendepunkter som brukes som reserver."
      },
      "configure": "Konfigurer leverandører"
    },
    "tierFlowDiagramAlt": "OmniRoute 3-lags reservediagram",
    "apiKeyMgmt": "API Key Mgmt"
  },
  "providers": {
    "title": "Leverandører",
    "allProviders": "Alle leverandører",
    "audioProviders": "Lydleverandører",
    "showFreeOnly": "Bare gratis",
    "addProvider": "Legg til leverandør",
    "addFirstProvider": "Legg til din første leverandør",
    "addFirstProviderDesc": "Koble til en AI-leverandør for å starte ruting av forespørsler gjennom OmniRoute. Du kan bruke gratisleverandører, API-nøkler eller OAuth-kontoer.",
    "learnMore": "Lær mer",
    "editProvider": "Rediger leverandør",
    "deleteProvider": "Slett leverandør",
    "noProviders": "Ingen leverandører er konfigurert",
    "modelAvailability": "Modelltilgjengelighet",
    "accounts": "Kontoer",
    "newAccount": "Ny konto",
    "deleteConfirm": "Er du sikker på at du vil slette denne leverandøren?",
    "testing": "Tester...",
    "testConnection": "Test tilkobling",
    "testSuccess": "Tilkoblingen var vellykket",
    "testFailed": "Tilkobling mislyktes",
    "available": "Tilgjengelig",
    "cooldown": "Nedkjøling",
    "unavailable": "Utilgjengelig",
    "unknown": "Ukjent",
    "oauthLabel": "OAuth",
    "compatibleLabel": "Kompatibel",
    "chat": "Chat",
    "responses": "Svar",
    "messages": "Meldinger",
    "oauthProviders": "OAuth-leverandører",
    "freeProviders": "Gratis leverandører",
    "apiKeyProviders": "API-nøkkelleverandører",
    "compatibleProviders": "API-nøkkel-kompatible leverandører",
    "testAll": "Test alle",
    "testAllOAuth": "Test alle OAuth-tilkoblinger",
    "testAllFree": "Test alle gratis tilkoblinger",
    "testAllApiKey": "Test alle API-nøkkeltilkoblinger",
    "testAllCompatible": "Test alle kompatible tilkoblinger",
    "connected": "{count} Tilkoblet",
    "errorCount": "{count} Feil ({code})",
    "errorCountNoCode": "{count} Feil",
    "warningCount": "{count} Advarsel",
    "noConnections": "Ingen tilkoblinger",
    "expiredBadge": "Expired",
    "expiringSoonBadge": "Expiring Soon",
    "freeTier": "Gratis lag",
    "freeTierAvailable": "Gratis lag tilgjengelig",
    "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": "Avviklet",
    "deprecatedProvider": "Denne leverandøren er avviklet",
    "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": "Deaktivert",
    "enableProvider": "Aktiver leverandør",
    "disableProvider": "Deaktiver leverandør",
    "testResults": "Testresultater",
    "noCompatibleYet": "Ingen kompatible leverandører lagt til ennå",
    "compatibleHint": "Bruk knappene ovenfor for å legge til OpenAI eller Anthropic-kompatible endepunkter",
    "addOpenAICompatible": "Legg til OpenAI-kompatibel",
    "addAnthropicCompatible": "Legg til Antropisk kompatibel",
    "addNewProvider": "Legg til ny leverandør",
    "backToProviders": "Tilbake til Leverandører",
    "configureNewProvider": "Konfigurer en ny AI-leverandør som skal brukes med applikasjonene dine.",
    "providerLabel": "Leverandør",
    "selectProvider": "Velg en leverandør",
    "selectedProvider": "Valgt leverandør",
    "authMethod": "Autentiseringsmetode",
    "apiKeyLabel": "API-nøkkel",
    "apiKeyRequired": "API-nøkkel kreves",
    "selectProviderRequired": "Velg en leverandør",
    "enterApiKey": "Skriv inn API-nøkkelen din",
    "apiKeySecure": "API-nøkkelen din vil bli kryptert og lagret sikkert.",
    "oauth2Connect": "Koble til OAuth2",
    "oauth2Label": "OAuth2",
    "oauth2Desc": "Koble til kontoen din med OAuth2-autentisering.",
    "displayName": "Vist navn",
    "displayNamePlaceholder": "f.eks. Production API, Dev Environment",
    "displayNameHint": "Valgfritt. Et vennlig navn for å identifisere denne konfigurasjonen.",
    "active": "Aktiv",
    "activeDescription": "Aktiver denne leverandøren for bruk i appene dine",
    "cancel": "Avbryt",
    "createProvider": "Opprett leverandør",
    "failedCreate": "Kunne ikke opprette leverandør",
    "errorOccurred": "Det oppsto en feil. Vennligst prøv igjen.",
    "modelStatus": "Modellstatus",
    "showConfiguredOnly": "Configured only",
    "allModelsOperational": "Alle modeller i drift",
    "modelsWithIssues": "{count} modell(er) med problemer",
    "allModelsNormal": "Alle modellene reagerer normalt.",
    "cooldownCleared": "Nedkjøling ryddet for {model}",
    "failedClearCooldown": "Kunne ikke fjerne nedkjøling",
    "loadingAvailability": "Laster modelltilgjengelighet ...",
    "clearCooldown": "Klart",
    "clearing": "Rydder...",
    "until": "Inntil {time}",
    "providerTestFailed": "Providertesten mislyktes",
    "providerTestTimeout": "Provider test timed out — too many connections to test at once",
    "modeTest": "{mode} Test",
    "passedCount": "{count} bestått",
    "failedCount": "{count} mislyktes",
    "testedCount": "{count} testet",
    "millisecondsAbbr": "{value}ms",
    "okShort": "OK",
    "errorShort": "FEIL",
    "noActiveConnectionsInGroup": "Fant ingen aktive tilkoblinger for denne gruppen.",
    "allTestsPassed": "Alle {total} tester bestått",
    "testSummary": "{passed}/{total} bestått, {failed} mislyktes",
    "nameLabel": "Navn",
    "prefixLabel": "Prefiks",
    "baseUrlLabel": "Base URL",
    "apiTypeLabel": "API-type",
    "prefixHint": "Obligatorisk. Unikt prefiks for modellnavn.",
    "nameHint": "Obligatorisk. En vennlig etikett for denne noden.",
    "baseUrlHint": "Obligatorisk.  Leverandørens API-base-URL.",
    "anthropicPrefixPlaceholder": "ac-prod",
    "openaiPrefixPlaceholder": "oc-prod",
    "anthropicBaseUrlPlaceholder": "https://api.anthropic.com/v1",
    "openaiBaseUrlPlaceholder": "https://api.openai.com/v1",
    "validateConnection": "Bekreft tilkoblingen",
    "validating": "Validerer...",
    "connectionValid": "Tilkoblingen er gyldig!",
    "connectionFailed": "Tilkobling mislyktes. Sjekk URL og nøkkel.",
    "testKeyLabel": "Test API-nøkkel",
    "testKeyPlaceholder": "sk-... (kun for validering)",
    "providerNotFound": "Finner ikke leverandør",
    "deleteConnectionConfirm": "Vil du slette denne tilkoblingen?",
    "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": "Kunne ikke angi alias",
    "failedSaveConnection": "Kunne ikke lagre tilkoblingen",
    "failedSaveConnectionRetry": "Kunne ikke lagre tilkoblingen. Vennligst prøv igjen.",
    "failedRetestConnection": "Kunne ikke teste tilkoblingen på nytt",
    "deleteCompatibleNodeConfirm": "Vil du slette denne {type}-kompatible noden?",
    "anthropicCompatibleDetails": "Antropisk kompatible detaljer",
    "openaiCompatibleDetails": "OpenAI-kompatible detaljer",
    "messagesApi": "Messages API",
    "responsesApi": "Responses API",
    "embeddings": "Embeddings",
    "audioTranscriptions": "Audio Transcriptions",
    "audioSpeech": "Audio Speech",
    "imagesGenerations": "Images Generations",
    "chatCompletions": "Chatfullføringer",
    "importingModels": "Importerer...",
    "importFromModels": "Importer fra /models",
    "modelsImported": "{count} models imported",
    "allModelsAlreadyImported": "Alle modeller er allerede importert",
    "noNewModelsToImport": "Ingen nye modeller å importere — alle modeller finnes allerede i registeret eller listen over egendefinerte modeller",
    "skippingExistingModels": "Hopper over {count} eksisterende modeller",
    "autoSync": "Auto-synkronisering",
    "autoSyncTooltip": "Oppdater modelllisten automatisk hver 24. time (kan konfigureres via MODEL_SYNC_INTERVAL_HOURS)",
    "autoSyncEnabled": "Automatisk synkronisering aktivert – modellene oppdateres med jevne mellomrom",
    "autoSyncDisabled": "Automatisk synkronisering er deaktivert",
    "autoSyncToggleFailed": "Kunne ikke slå på automatisk synkronisering",
    "clearAllModels": "Fjern alle modeller",
    "clearAllModelsConfirm": "Er du sikker på at du vil fjerne alle modellene for denne leverandøren? Dette kan ikke angres.",
    "clearAllModelsSuccess": "Alle modeller ryddet",
    "clearAllModelsFailed": "Kunne ikke slette modeller",
    "addConnectionToImport": "Legg til en tilkobling for å aktivere import.",
    "noModelsConfigured": "Ingen modeller er konfigurert",
    "connectionCount": "{count} tilkobling(er)",
    "fetchingModels": "Henter tilgjengelige modeller...",
    "failedFetchModels": "Kunne ikke hente modellene",
    "noModelsFound": "Ingen modeller funnet",
    "importFailed": "Import mislyktes",
    "noNewModelsAdded": "Ingen nye modeller ble lagt til.",
    "adding": "Legger til...",
    "close": "Close",
    "importingModelsTitle": "Importere modeller",
    "copyModel": "Kopier modell",
    "filterModels": "Filtrer modeller…",
    "modelsActive": "aktive",
    "showModel": "Vis modell",
    "hideModel": "Skjul modell",
    "removeModel": "Fjern modellen",
    "rateLimitProtected": "Beskyttet",
    "rateLimitUnprotected": "Ubeskyttet",
    "enableRateLimitProtection": "Klikk for å aktivere satsgrensebeskyttelse",
    "disableRateLimitProtection": "Klikk for å deaktivere satsgrensebeskyttelse",
    "productionKey": "Produksjonsnøkkel",
    "enterNewApiKey": "Skriv inn ny API-nøkkel",
    "codexApplyModalTitle": "Søk på Local Codex",
    "codexApplyTargetLabel": "Målvei",
    "codexApplyBackupLabel": "Sikkerhetskopier",
    "codexApplyWarning": "Dette vil erstatte den eksisterende auth.json. Fortsette?",
    "codexApplyConfirmCheckbox": "Jeg bekrefter at jeg vil erstatte den eksisterende auth.json",
    "codexApply": "Søk",
    "bulkTabSingle": "Singel",
    "bulkTabBulkAdd": "Bulk Legg til",
    "bulkAddFormatHint": "En nøkkel per linje. Format: navn|apiKey eller bare apiKey (automatisk navngitt av indeks).",
    "bulkValidateKeys": "Valider hver nøkkel før du lagrer (tregere)",
    "bulkAddAllKeys": "Legg til alle nøkler",
    "bulkAddedCount": "{count, plural, one {# key added} other {# keys added}}",
    "bulkFailedCount": "{count, plural, one {# failed} other {# failed}}",
    "optional": "Valgfritt",
    "anthropicCompatibleName": "Antropisk kompatibel",
    "openaiCompatibleName": "OpenAI-kompatibel",
    "failedImportModels": "Kunne ikke importere modeller",
    "noModelsReturnedFromEndpoint": "Ingen modeller returnert fra /models endepunkt.",
    "importingModelsProgress": "Importerer {current} av {total} modeller ...",
    "foundModelsStartingImport": "Fant {count} modeller. Starter import...",
    "importingModelById": "Importerer {modelId}...",
    "importSuccessCount": "Vellykket importert {count, plural, one {# model} other {# models}}!",
    "noNewModelsAddedExisting": "Ingen nye modeller ble lagt til (alle finnes allerede).",
    "importDoneCount": "✓ Ferdig! {count, plural, one {# model imported.} other {# models imported.}}",
    "unexpectedErrorOccurred": "Det oppstod en uventet feil",
    "connectionCountLabel": "{count, plural, one {# connection} other {# connections}}",
    "messagesPath": "meldinger",
    "responsesPath": "svar",
    "chatCompletionsPath": "chat/fullføringer",
    "add": "Legg til",
    "edit": "Rediger",
    "delete": "Slett",
    "anthropic": "Antropisk",
    "openai": "OpenAI",
    "singleConnectionPerCompatible": "Bare én tilkobling er tillatt per kompatibel node. Legg til en annen node hvis du trenger flere tilkoblinger.",
    "connections": "Tilkoblinger",
    "providerProxyTitleConfigured": "Leverandørproxy: {host}",
    "configured": "konfigurert",
    "providerProxyConfigureHint": "Konfigurer proxy for alle tilkoblinger til denne leverandøren",
    "providerProxy": "Leverandørfullmakt",
    "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 tilkoblinger ennå",
    "addFirstConnectionHint": "Legg til din første tilkobling for å komme i gang",
    "addConnection": "Legg til tilkobling",
    "availableModels": "Tilgjengelige modeller",
    "builtInModels": "Built-in models",
    "builtInModelsHint": "Registry models for this provider. Use the pencil to set compatibility options.",
    "pageAutoRefresh": "Siden oppdateres automatisk...",
    "statusDisabled": "deaktivert",
    "statusConnected": "tilkoblet",
    "statusRuntimeIssue": "kjøretidsproblem",
    "statusAuthFailed": "auth mislyktes",
    "statusRateLimited": "sats begrenset",
    "statusNetworkIssue": "nettverksproblem",
    "statusTestUnsupported": "test støttes ikke",
    "statusUnavailable": "utilgjengelig",
    "statusFailed": "mislyktes",
    "statusError": "feil",
    "oauthAccount": "OAuth-konto",
    "errorTypeRuntime": "Lokal kjøretid",
    "errorTypeUpstreamAuth": "Oppstrøms auth",
    "errorTypeMissingCredential": "Mangler legitimasjon",
    "errorTypeRefreshFailed": "Oppdatering mislyktes",
    "errorTypeTokenExpired": "Token utløpt",
    "errorTypeRateLimited": "Begrenset pris",
    "errorTypeUpstreamUnavailable": "Oppstrøms utilgjengelig",
    "errorTypeNetworkError": "Nettverksfeil",
    "errorTypeTestUnsupported": "Testen støttes ikke",
    "errorTypeUpstreamError": "Oppstrøms feil",
    "proxySourceGlobal": "Globalt",
    "proxySourceProvider": "Leverandør",
    "proxySourceKey": "Nøkkel",
    "proxyConfiguredBySource": "Fullmakt ({source}): {host}",
    "autoPriority": "Auto: {priority}",
    "proxy": "Fullmakt",
    "retestAuthentication": "Test autentisering på nytt",
    "retest": "Test på nytt",
    "disableConnection": "Deaktiver tilkobling",
    "enableConnection": "Aktiver tilkobling",
    "reauthenticateConnection": "Autentiser denne tilkoblingen på nytt",
    "proxyConfig": "Proxy konfig",
    "aliasExistsAlert": "Aliaset \"{alias}\" eksisterer allerede. Bruk en annen modell eller rediger eksisterende alias.",
    "openRouterAnyModelHint": "OpenRouter støtter alle modeller. Legg til modeller og lag aliaser for rask tilgang.",
    "modelIdFromOpenRouter": "Modell-ID (fra OpenRouter)",
    "openRouterModelPlaceholder": "antropisk/claude-3-opus",
    "customModels": "Egendefinerte modeller",
    "customModelsHint": "Legg til modell-ID-er som ikke er i standardlisten. Disse vil være tilgjengelige for ruting.",
    "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": "Veksle mellom kvote per modell",
    "modelId": "Modell-ID",
    "customModelPlaceholder": "f.eks. gpt-4.5-turbo",
    "loading": "Laster inn...",
    "removeCustomModel": "Fjern tilpasset modell",
    "noCustomModels": "Ingen tilpassede modeller lagt til ennå.",
    "allSuggestedAliasesExist": "Alle foreslåtte aliaser finnes allerede. Velg en annen modell eller fjern motstridende aliaser.",
    "failedSaveCustomModel": "Kunne ikke lagre egendefinert modell",
    "modelAddedSuccess": "Modell {modelId} ble lagt til",
    "failedAddModelTryAgain": "Kunne ikke legge til modell. Vennligst prøv igjen.",
    "failedSaveImportedModel": "Kunne ikke lagre importert modell til egendefinert database",
    "failedImportModelsTryAgain": "Kunne ikke importere modeller. Vennligst prøv igjen.",
    "failedRemoveModelFromDatabase": "Kunne ikke fjerne modellen fra databasen",
    "modelRemovedSuccess": "Modellen ble fjernet",
    "failedDeleteModelTryAgain": "Kunne ikke slette modellen. Vennligst prøv igjen.",
    "compatibleModelsDescription": "Legg til {type}-kompatible modeller manuelt eller importer dem fra /models-endepunktet.",
    "anthropicCompatibleModelPlaceholder": "claude-3-opus-20240229",
    "openaiCompatibleModelPlaceholder": "gpt-4o",
    "apiKeyValidationFailed": "API-nøkkelvalidering mislyktes. Sjekk nøkkelen din og prøv igjen.",
    "addProviderApiKeyTitle": "Legg til {provider} API-nøkkel",
    "checking": "Sjekker...",
    "check": "Sjekk",
    "valid": "Gyldig",
    "invalid": "Ugyldig",
    "creating": "Oppretter...",
    "validationChecksAnthropicCompatible": "Valideringssjekker {provider} ved å bekrefte API-nøkkelen.",
    "validationChecksOpenAiCompatible": "Valideringssjekker {provider} via /models på din basis-URL.",
    "priorityLabel": "Prioritet",
    "saving": "Lagrer...",
    "save": "Lagre",
    "editConnection": "Rediger tilkobling",
    "accountName": "Kontonavn",
    "email": "E-post",
    "healthCheckMinutes": "Helsesjekk (min)",
    "healthCheckHint": "Proaktivt token-oppdateringsintervall. 0 = deaktivert.",
    "selectAllModels": "Select all",
    "deselectAllModels": "Deselect all",
    "modelsActiveCount": "{active}/{total} active",
    "noModelsMatch": "No models match \"{filter}\"",
    "groupLabel": "Environment",
    "groupPlaceholder": "e.g. eKaizen, Personal",
    "failedTestConnection": "Kunne ikke teste tilkoblingen",
    "failed": "Mislyktes",
    "leaveBlankKeepCurrentApiKey": "La stå tomt for å beholde gjeldende API-nøkkel.",
    "editCompatibleTitle": "Rediger {type} Kompatibel",
    "compatibleBaseUrlHint": "Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.",
    "apiKeyForCheck": "API-nøkkel (for sjekk)",
    "compatibleProdPlaceholder": "{type} Kompatibel (Prod)",
    "tokenRefreshed": "Token refreshed successfully",
    "tokenRefreshFailed": "Token refresh failed",
    "applyCodexAuthLocal": "Apply auth",
    "exportCodexAuthFile": "Export auth",
    "applyClaudeAuthLocal": "Bruk autentisering",
    "exportClaudeAuthFile": "Eksporter auth",
    "importClaudeAuth": "Importer auth",
    "claudeApplyModalTitle": "Søk på den lokale Claude-koden",
    "claudeApplyTargetLabel": "Målvei",
    "claudeApplyBackupLabel": "Sikkerhetskopier",
    "claudeApplyMcpHint": "Eksisterende MCP OAuth-tilstand vil bli bevart.",
    "claudeApplyWarning": "Dette vil erstatte den eksisterende claudeAiOauth-delen. Fortsette?",
    "claudeApplyConfirmCheckbox": "Jeg bekrefter at jeg ønsker å erstatte den eksisterende claudeAiOauth-delen",
    "claudeApply": "Søk",
    "claudeAuthAppliedLocal": "Claude auth søkte lokalt",
    "claudeAuthApplyFailed": "Kunne ikke bruke Claude auth lokalt",
    "claudeAuthExported": "Claude auth-fil eksportert",
    "claudeAuthExportFailed": "Kunne ikke eksportere Claude auth-fil",
    "claudeImportModalTitle": "Importer Claude Auth",
    "claudeImportTabSingle": "Singel",
    "claudeImportTabBulk": "Bulk",
    "claudeImportTabUpload": "Last opp fil",
    "claudeImportTabPaste": "Lim inn JSON",
    "claudeImportFileLabel": "Velg .credentials.json",
    "claudeImportPasteLabel": "Lim inn JSON-innholdet",
    "claudeImportEmailLabel": "Kontoens e-postadresse",
    "claudeImportNameLabel": "Tilkoblingsnavn (valgfritt)",
    "claudeImportOverwriteLabel": "Erstatt eksisterende tilkobling hvis kontoen allerede eksisterer",
    "claudeImportSubmit": "Importer",
    "claudeImportSuccess": "Claude-tilkoblingen ble importert",
    "claudeImportInvalidJson": "Kunne ikke analysere filen som JSON",
    "claudeImportInvalidShape": "Filen er ikke en gyldig .credentials.json",
    "claudeImportDuplicate": "Kontoen eksisterer allerede – aktiver \"Erstatt eksisterende\" for å overskrive",
    "claudeImportIdentityUnverified": "Bootstrap kunne ikke bekrefte kontoen. Aktiver «Erstatt eksisterende» eller oppgi en e-post.",
    "claudeImportFailed": "Kunne ikke importere Claude auth",
    "claudeImportBulkModeUpload": "Last opp filer",
    "claudeImportBulkModePaste": "Lim inn JSON-array",
    "claudeImportBulkModeZip": "Last opp ZIP",
    "claudeImportBulkUploadHint": "Slipp eller hent opptil 50 .credentials.json-filer (256 KB hver, totalt 10 MB).",
    "claudeImportBulkPasteHint": "Lim inn en rekke objekter: [{ json, name?, email? }, ...]",
    "claudeImportBulkZipHint": "ZIP som inneholder .json-oppføringer. Maks 50 oppføringer, 10MB utpakket.",
    "claudeImportBulkSubmit": "Importer alle",
    "claudeImportBulkSuccess": "Importerte {count} Claude-forbindelser",
    "claudeImportBulkFailed": "Noen oppføringer kunne ikke importeres",
    "claudeImportBulkZipExtracting": "Trekker ut ZIP …",
    "claudeImportBulkZipError": "Kunne ikke pakke ut ZIP",
    "applyGeminiAuthLocal": "Bruk autentisering",
    "exportGeminiAuthFile": "Eksporter auth",
    "importGeminiAuth": "Importer auth",
    "geminiApplyModalTitle": "Søk på Local Gemini CLI",
    "geminiApplyTargetLabel": "Målvei",
    "geminiApplyBackupLabel": "Sikkerhetskopier",
    "geminiApplyAccountsHint": "Den aktive google_accounts.json-kontoen vil bli oppdatert for å matche denne tilkoblingen.",
    "geminiApplyWarning": "Dette vil erstatte den eksisterende oauth_creds.json og oppdatere google_accounts.json. Fortsette?",
    "geminiApplyConfirmCheckbox": "Jeg bekrefter at jeg vil erstatte den eksisterende oauth_creds.json",
    "geminiApply": "Søk",
    "geminiAuthAppliedLocal": "Gemini-autentisering brukt lokalt",
    "geminiAuthApplyFailed": "Kunne ikke bruke Gemini-autentisering lokalt",
    "geminiAuthExported": "Gemini auth-fil eksportert",
    "geminiAuthExportFailed": "Kunne ikke eksportere Gemini auth-fil",
    "geminiImportModalTitle": "Importer Gemini Auth",
    "geminiImportTabSingle": "Singel",
    "geminiImportTabBulk": "Bulk",
    "geminiImportTabUpload": "Last opp fil",
    "geminiImportTabPaste": "Lim inn JSON",
    "geminiImportFileLabel": "Velg oauth_creds.json",
    "geminiImportPasteLabel": "Lim inn JSON-innholdet",
    "geminiImportEmailLabel": "Kontoens e-postadresse",
    "geminiImportNameLabel": "Tilkoblingsnavn (valgfritt)",
    "geminiImportOverwriteLabel": "Erstatt eksisterende tilkobling hvis kontoen allerede eksisterer",
    "geminiImportSubmit": "Importer",
    "geminiImportSuccess": "Gemini-tilkoblingen ble importert",
    "geminiImportInvalidJson": "Kunne ikke analysere filen som JSON",
    "geminiImportInvalidShape": "Filen er ikke en gyldig oauth_creds.json",
    "geminiImportDuplicate": "Kontoen eksisterer allerede – aktiver \"Erstatt eksisterende\" for å overskrive",
    "geminiImportIdentityUnverified": "Kunne ikke bekrefte identitet fra id_token. Aktiver «Erstatt eksisterende» eller oppgi en e-post.",
    "geminiImportFailed": "Kunne ikke importere Gemini auth",
    "geminiImportBulkModeUpload": "Last opp filer",
    "geminiImportBulkModePaste": "Lim inn JSON-array",
    "geminiImportBulkModeZip": "Last opp ZIP",
    "geminiImportBulkUploadHint": "Slipp eller hent opptil 50 oauth_creds.json-filer (256 KB hver, totalt 10 MB).",
    "geminiImportBulkPasteHint": "Lim inn en rekke objekter: [{ json, name?, email? }, ...]",
    "geminiImportBulkZipHint": "ZIP som inneholder oauth_creds.json-oppføringer. Maks 50 oppføringer, 10MB utpakket.",
    "geminiImportBulkSubmit": "Importer alle",
    "geminiImportBulkSuccess": "Importerte {count} Gemini-tilkoblinger",
    "geminiImportBulkFailed": "Noen oppføringer kunne ikke importeres",
    "geminiImportBulkZipExtracting": "Trekker ut ZIP …",
    "geminiImportBulkZipError": "Kunne ikke pakke ut 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": "Singel",
    "codexImportTabBulk": "Bulk",
    "codexImportTabUpload": "Last opp fil",
    "codexImportTabPaste": "Lim inn JSON",
    "codexImportFileLabel": "Velg auth.json",
    "codexImportFileHint": "Velg auth.json-filen eksportert fra Codex eller fra OmniRoute.",
    "codexImportPasteLabel": "Lim inn JSON-innholdet",
    "codexImportEmailLabel": "Kontoens e-postadresse",
    "codexImportEmailHint": "Automatisk oppdaget fra filen; rediger om nødvendig.",
    "codexImportNameLabel": "Tilkoblingsnavn (valgfritt)",
    "codexImportOverwriteLabel": "Erstatt eksisterende tilkobling hvis kontoen allerede eksisterer",
    "codexImportSubmit": "Importer",
    "codexImportSuccess": "Codex-tilkobling ble importert",
    "codexImportInvalidJson": "Kunne ikke analysere filen som JSON",
    "codexImportInvalidShape": "Filen er ikke en gyldig Codex auth.json",
    "codexImportDuplicate": "Kontoen eksisterer allerede – aktiver \"Erstatt eksisterende\" for å overskrive",
    "codexImportFailed": "Kunne ikke importere Codex-aut",
    "codexImportDetectedEmail": "Oppdaget: {email}",
    "codexImportNoEmailDetected": "Ingen e-post oppdaget i filen",
    "codexImportBulkModeUpload": "Last opp filer",
    "codexImportBulkModePaste": "Lim inn liste",
    "codexImportBulkModeZip": "ZIP-arkiv",
    "codexImportBulkUploadHint": "Velg flere .json-filer eller dra og slipp",
    "codexImportBulkPasteHint": "JSON-matrise [ {...}, {...} ] eller flere JSON-er atskilt med --- på sin egen linje",
    "codexImportBulkZipHint": "Last opp en .zip som inneholder auth.json-filer (maks. 50 filer, 10 MB)",
    "codexImportBulkSubmit": "Importer {count} kontoer",
    "codexImportBulkLimit": "Maks 50 filer per import",
    "codexImportBulkSuccess": "{count} importert",
    "codexImportBulkFailed": "{count} mislyktes",
    "codexImportBulkZipExtracting": "Trekker ut ZIP …",
    "codexImportBulkZipError": "Kunne ikke pakke ut 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-leverandører",
    "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": "Åpne t3.chat → DevTools → Applikasjon → Lokal lagring → https://t3.chat, kopier 'convex-session-id'. Åpne deretter DevTools → Nettverk, kopier hele informasjonskapseloverskriften fra enhver chat-forespørsel. Lim inn begge verdiene i feltene 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": "Din Google Cloud Project ID. Påkrevd for kontoer med unntak. Skriv inn GCP-prosjekt-ID-en din som skal brukes med Gemini CLI.",
    "geminiCliProjectIdLabel": "Google Cloud Project ID",
    "geminiCliProjectIdPlaceholder": "min-gcp-prosjekt-ID",
    "antigravityProjectIdHint": "Valgfri overstyring for Antigravity Cloud Code-forespørsler. La feltet stå tomt for å bruke prosjektet som ble oppdaget 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 Project ID",
    "antigravityProjectIdPlaceholder": "min-gcp-prosjekt-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": "Innebygging 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øk etter leverandører...",
    "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 Tier-leverandører",
    "freeTierLabel": "Gratis lag tilgjengelig",
    "freeTierProvidersDesc": "Leverandører med gratis nivåer - noen krever en API-nøkkelregistrering, andre trenger ingen legitimasjon i det hele tatt.",
    "providerSummaryAll": "Totalt",
    "ideProviders": "IDE-leverandører",
    "ideProvidersDesc": "Redaktører med innebygd AI-abonnement. Bruk leverandørsiden til å importere legitimasjon direkte fra IDE-nøkkelringen.",
    "noIdeProviders": "Ingen IDE-leverandører samsvarer med gjeldende filtre.",
    "providerDetailFastTierTooltip": "Bruk Codex Fast tier på alle Codex-tilkoblinger som standard",
    "providerDetailFastDefaultLabel": "Rask standard",
    "providerDetailBrowserManualConnect": "Nettleser/manuell tilkobling",
    "providerDetailAuthUrl": "Auth URL",
    "providerDetailCallbackUrl": "Tilbakeringings-URL",
    "providerDetailValidClaudeCredentialsFile": "Gyldig Claude-legitimasjonsfil",
    "providerDetailPathAutoDetectedAllOs": "Banen oppdages automatisk per OS (Linux/Mac/Windows).",
    "providerDetailMyClaudeAccountPlaceholder": "Min Claude-konto",
    "providerDetailPathAutoDetected": "Banen oppdages automatisk per 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 leverandørene bruker nettleserøkter, informasjonskapsler eller netttokens i stedet for API-nøkler. Åpne en leverandør for å legge til den nødvendige sesjonslegitimasjonen.",
    "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": "Veiviser for onboarding av leverandør",
    "onboardingWizardShort": "Onboarding Wizard",
    "onboardingWizardDescription": "Koble API-nøkkel, tilpasset kompatible og OAuth-leverandører med validering, utholdenhet og en umiddelbar tilkoblingstest.",
    "onboardingStepType": "Type",
    "onboardingStepProvider": "Leverandør",
    "onboardingStepCredentials": "Legitimasjon",
    "onboardingStepResult": "Resultat",
    "onboardingTypeApiKeyTitle": "API-nøkkelleverandør",
    "onboardingTypeApiKeyText": "Bruk innebygde leverandører som OpenAI, Anthropic, Gemini, Groq, Azure og mer.",
    "onboardingTypeCustomTitle": "Tilpasset kompatibel leverandør",
    "onboardingTypeCustomText": "Lag et OpenAI-, Anthropic- eller Claude Code-kompatibelt endepunkt og legg til nøkkelen.",
    "onboardingTypeOAuthTitle": "OAuth-leverandør",
    "onboardingTypeOAuthText": "Gjenbruk eksisterende OAuth, enhetskode eller lokale importflyter for kodingsleverandører.",
    "onboardingChooseOAuthProvider": "Velg en OAuth-leverandør",
    "onboardingChooseApiKeyProvider": "Velg en API-nøkkelleverandør",
    "onboardingChooseProviderDescription": "Velg en leverandør, så vil veiviseren veilede deg gjennom legitimasjon og testing.",
    "onboardingChangeType": "Endre type",
    "onboardingChangeProvider": "Bytt leverandør",
    "onboardingSearchProviders": "Søkeleverandører...",
    "onboardingApiKeyOptional": "API-nøkkel valgfri",
    "onboardingProviderConnected": "Leverandør tilkoblet",
    "onboardingProviderSavedWithWarnings": "Leverandør lagret med advarsler",
    "onboardingProviderFinished": "Innføring av leverandør er ferdig",
    "onboardingYourProviderConnection": "Din leverandørforbindelse",
    "onboardingTestPassed": "Test bestått",
    "onboardingTestFailed": "Testen mislyktes",
    "onboardingOpenProviderDetails": "Åpne leverandørdetaljer",
    "onboardingTryInPlayground": "Prøv på lekeplassen",
    "onboardingDefaultConnectionName": "{provider} Primær",
    "onboardingTestingConnection": "Tester leverandørtilkobling …",
    "onboardingValidatingCredentials": "Validerer legitimasjon …",
    "onboardingSavingConnection": "Lagrer leverandørtilkobling …",
    "onboardingProviderFailed": "Innføring av leverandør mislyktes",
    "onboardingCreatingCompatibleProvider": "Oppretter en kompatibel leverandør …",
    "onboardingSavingCompatibleConnection": "Lagrer kompatibel leverandørtilkobling …",
    "onboardingCustomProviderFallbackName": "Tilpasset leverandør",
    "onboardingCustomProviderFailed": "Onboarding av tilpasset leverandør mislyktes",
    "onboardingLoadingOAuthConnection": "Laster inn OAuth-tilkobling …",
    "onboardingOAuthNoConnectionFound": "OAuth fullført, men ingen leverandørforbindelse ble funnet.",
    "onboardingOAuthFailed": "OAuth-onboarding mislyktes",
    "onboardingAddProvider": "Legg til {provider}",
    "onboardingConnectionName": "Tilkoblingsnavn",
    "onboardingApiKeyOptionalLabel": "API-nøkkel (valgfritt)",
    "onboardingBaseUrlOverride": "Overstyring av basis-URL",
    "onboardingBaseUrlOverrideHint": "Valgfritt. Lagret som providerSpecificData.baseUrl.",
    "onboardingRegion": "Region",
    "onboardingSearchCx": "Søk CX / motor-ID",
    "onboardingProviderSpecificIdPlaceholder": "Valgfri leverandørspesifikk ID",
    "onboardingCustomUserAgent": "Egendefinert brukeragent",
    "onboardingWorking": "Jobber …",
    "onboardingValidateSaveTest": "Valider, lagre og test",
    "onboardingBack": "Tilbake",
    "onboardingCreateCustomCompatibleProvider": "Opprett tilpasset kompatibel leverandør",
    "onboardingCreateCustomCompatibleDescription": "Veiviseren oppretter først en leverandørnode, og lagrer og tester deretter API-nøkkelforbindelsen.",
    "onboardingProtocol": "Protokoll",
    "onboardingOpenAiCompatible": "OpenAI-kompatibel",
    "onboardingAnthropicCompatible": "Antropisk-kompatibel",
    "onboardingClaudeCodeCompatible": "Claude Code-kompatibel",
    "onboardingProviderPrefix": "Leverandørprefiks",
    "onboardingProviderPrefixHint": "Brukes til å generere den administrerte leverandør-IDen.",
    "onboardingChatPath": "Chatbane",
    "onboardingModelsPath": "Modeller vei",
    "onboardingCreateSaveTest": "Opprett, lagre og test",
    "onboardingConnectProvider": "Koble til {provider}",
    "onboardingOAuthFlowDescription": "OmniRoute vil åpne den eksisterende OAuth-flyten for denne leverandøren. Etter pålogging laster veiviseren den lagrede tilkoblingen på nytt og kjører den samme tilkoblingstesten som leverandørsiden.",
    "onboardingStartOAuthFlow": "Start OAuth-flyt",
    "passthroughModelsDescription": "{provider} godtar leverandør-native modell-ID-er. Importer fra /models eller legg til egendefinerte ID-er for ruting.",
    "bedrockModelsDescription": "Amazon Bedrock-modeller er omfattet av AWS-regionen. Importer fra /models eller legg til berggrunnsmodell-IDer aktivert i den valgte regionen.",
    "bedrockModelPlaceholder": "antropisk.claude-sonnett-4-6",
    "addProviderSessionCookieTitle": "Legg til {provider} øktinformasjonskapsel",
    "addProviderWebTokenTitle": "Legg til {provider} netttoken",
    "addProviderConnectionTitle": "Legg til {provider}-tilkobling",
    "webTokenCredentialLabel": "Nettøktstoken",
    "webNoAuthCredentialLabel": "Ingen legitimasjon kreves",
    "webCookieCredentialHint": "Nødvendig informasjonskapsel: {credential}. Lim inn informasjonskapseloverskriften fra din egen påloggede {provider} nettøkt. Ikke ta med prefikset Cookie:.",
    "webTokenCredentialHint": "Påloggingsinformasjon: {credential}. Lim inn tokenverdien fra din egen påloggede {provider} nettøkt, eller en DevTools HAR-eksport hvis leverandøren støtter det.",
    "webCookieEditHint": "La stå tomt for å beholde den gjeldende øktinformasjonskapselen. Nødvendig informasjonskapsel: {credential}.",
    "webTokenEditHint": "La stå tomt for å beholde gjeldende nettøktstoken. Påloggingsinformasjon: {credential}.",
    "webSessionGuideTitle": "Slik får du sesjonslegitimasjonen",
    "webSessionGuideIntro": "{provider} bruker en nettleserøkt i stedet for en API-nøkkel.",
    "webCookieRequiredCredential": "Nødvendig informasjonskapsel: {credential}",
    "webTokenRequiredCredential": "Nødvendig token: {credential}",
    "webSessionGuideStep1": "Logg på {provider} i nettleseren din.",
    "webSessionGuideStep2": "Åpne nettleserutviklerverktøyene og inspiser en forespørsel fra nettappen.",
    "webSessionGuideStep3": "Kopier den nødvendige legitimasjonen fra leverandørens eget domene. For informasjonskapsler kopierer du bare informasjonskapseloverskriften og utelat informasjonskapsel:.",
    "webSessionGuideStep4": "Lim den inn her og kontroller tilkoblingen. Hvis den slutter å fungere, logger du på igjen og erstatter den med en ny verdi.",
    "webSessionSecurityHint": "Behandle dette som et passord: det kan få tilgang til den påloggede nettkontoen din til den utløper eller blir opphevet.",
    "webNoAuthGuideTitle": "Ingen legitimasjon kreves",
    "webNoAuthGuideBody": "{provider} trenger ikke en API-nøkkel eller informasjonskapsel. Lagre tilkoblingen for å bruke dets gratis webendepunkt.",
    "webSessionCredentialValidationFailed": "Validering av øktlegitimasjon mislyktes. Logg på igjen, kopier en ny legitimasjon og prøv igjen.",
    "checkCookie": "Sjekk informasjonskapsel",
    "checkWebToken": "Sjekk token"
  },
  "settings": {
    "title": "Innstillinger",
    "general": "Generelt",
    "security": "Sikkerhet",
    "appearance": "Utseende",
    "routing": "Ruting",
    "cache": "Cache",
    "resilience": "Spenst",
    "routingSettingsIntro": "Kontrollerer hvordan forespørslene dine rutes, transformeres og sendes til AI-leverandører.",
    "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 nytt forsøk, nedkjøling og fallback når leverandørene mislykkes.",
    "aiSettingsIntro": "AI-spesifikke innstillinger for å tenke budsjett, modellatferd og komprimering.",
    "systemPrompt": "Systemmelding",
    "thinkingBudget": "Tenker budsjett",
    "proxy": "Fullmakt",
    "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": "Prissetting",
    "storage": "Oppbevaring",
    "policies": "Retningslinjer",
    "ipFilter": "IP-filter",
    "comboDefaults": "Combo standarder",
    "fallbackChains": "Reservekjeder",
    "changePassword": "Endre passord",
    "enablePassword": "Aktiver passord",
    "darkMode": "Mørk modus",
    "lightMode": "Lysmodus",
    "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": "akkurat nå",
    "modelsDevStats": "Sync Statistics",
    "modelsDevStatsDesc": "Current models.dev data coverage",
    "providers": "Leverandører",
    "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": "Systemtema",
    "debugToggle": "Enable Debug Mode",
    "sidebarVisibilityToggle": "Show Sidebar Items",
    "enableCache": "Aktiver cache",
    "cacheTTL": "Cache TTL",
    "maxCacheSize": "Maks cachestørrelse",
    "clearCache": "Tøm buffer",
    "cacheCleared": "Cache cleared successfully",
    "clearCacheFailed": "Failed to clear cache",
    "cacheHits": "Cache-treff",
    "cacheMisses": "Cache Misses",
    "hitRate": "Trefffrekvens",
    "cacheEntries": "Bufferoppføringer",
    "cacheSettings": "Cache Settings",
    "semanticCache": "Semantic Cache",
    "maxEntries": "Max Entries",
    "ttlMinutes": "TTL (minutes)",
    "promptCache": "Spør Cache",
    "strategy": "Strategy",
    "preserveClientCache": "Preserve Client Cache",
    "enabled": "Enabled",
    "loading": "Loading...",
    "saving": "Lagrer...",
    "save": "Save",
    "circuitBreaker": "Strømbryter",
    "retryPolicy": "Retningslinjer for forsøk",
    "maxRetries": "Max prøver på nytt",
    "retryDelay": "Forsinkelse på nytt",
    "timeoutMs": "Tidsavbrudd (ms)",
    "enableSystemPrompt": "Aktiver systemforespørsel",
    "systemPromptText": "Systemmeldingstekst",
    "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 siden konfigurerer bare atferd. Live breaker-tilstand vises på helsesiden. Kombinasjonsspesifikk gjenforsøk og round-robin sporkontroll forblir på kombinasjonsinnstillinger.",
    "enableThinking": "Aktiver tenkning",
    "maxThinkingTokens": "Max Thinking Tokens",
    "enableProxy": "Aktiver proxy",
    "proxyUrl": "Proxy URL",
    "pricingRates": "Prisformat",
    "currentPricing": "Gjeldende prisoversikt",
    "loadingPricing": "Laster inn prisdata ...",
    "noPricing": "Ingen prisdata tilgjengelig",
    "input": "Inndata",
    "output": "Utgang",
    "cached": "Bufret",
    "reasoning": "Resonnement",
    "cacheCreation": "Oppretting av cache",
    "customPricing": "Egendefinerte priser",
    "databaseSize": "Databasestørrelse",
    "backupDb": "Sikkerhetskopier database",
    "restoreDb": "Gjenopprett database",
    "exportData": "Eksporter data",
    "importData": "Importer data",
    "clearData": "Fjern alle data",
    "clearDataConfirm": "Dette vil slette alle data permanent. Er du sikker?",
    "enableRequestLogs": "Aktiver forespørselslogger",
    "logRetention": "Loggoppbevaring",
    "ipWhitelist": "IP-hviteliste",
    "ipBlacklist": "IP svarteliste",
    "addIP": "Legg til IP",
    "savedSuccessfully": "Innstillingene er lagret",
    "ai": "AI",
    "advanced": "Avansert",
    "localMode": "Lokal modus — Alle data som er lagret på maskinen din",
    "settingsSectionsAria": "Innstillinger-seksjoner",
    "switchThemes": "Bytt mellom lyse og mørke temaer",
    "themeSelectionAria": "Temavalg",
    "themeLight": "Lys",
    "themeDark": "Mørkt",
    "themeSystem": "System",
    "endpointTunnelVisibility": "Synlighet for endepunkttunnel",
    "endpointTunnelVisibilityDesc": "Skjul tunnelkontroller fra endepunktsiden uten å endre tunneltilstand.",
    "showCloudflareTunnel": "Cloudflare Quick Tunnel",
    "showCloudflareTunnelDesc": "Vis Cloudflare Quick Tunnel-kontroller på endepunktsiden.",
    "showTailscaleFunnel": "Halescale trakt",
    "showTailscaleFunnelDesc": "Vis Tailscale traktkontroller på Endpoint-siden.",
    "showNgrokTunnel": "ngrok tunnel",
    "showNgrokTunnelDesc": "Vis ngrok-tunnelkontroller på endepunktsiden.",
    "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 helsesjekklogger",
    "hideHealthLogsDesc": "Når PÅ, undertrykk [HealthCheck]-meldinger i serverkonsollen",
    "themeAccent": "Temafarge",
    "themeAccentDesc": "Velg en forhåndsinnstilt farge eller lag ditt eget tema med én farge",
    "themeCreate": "Opprett tema",
    "themeCustom": "Egendefinert tema",
    "themeBlue": "Blå",
    "themeRed": "Rød",
    "themeGreen": "Grønn",
    "themeViolet": "Fiolett",
    "themeOrange": "Oransje",
    "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": "Skyll cache",
    "flushing": "Skyller …",
    "size": "Størrelse",
    "hits": "Treffer",
    "evictions": "Utkastelser",
    "loadingCacheStats": "Laster cachestatistikk …",
    "globalProxy": "Global proxy",
    "globalProxyDesc": "Konfigurer en global utgående proxy for alle API-kall. Individuelle leverandører, kombinasjoner og nøkler kan overstyre dette.",
    "noGlobalProxy": "Ingen global proxy er konfigurert",
    "globalLabel": "Globalt",
    "configure": "Konfigurer",
    "globalSystemPrompt": "Global systemforespørsel",
    "saved": "Lagret",
    "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": "Tenker budsjett",
    "thinkingBudgetDesc": "Kontroller bruk av AI-resonnementstoken på tvers av alle forespørsler",
    "passthrough": "Gjennomgang",
    "passthroughDesc": "Ingen endringer – klienten kontrollerer tenkebudsjettet",
    "auto": "Auto",
    "autoDesc": "Fjern all tenkekonfigurasjon – la leverandøren bestemme",
    "custom": "Egendefinert",
    "customDesc": "Angi et fast tokenbudsjett for alle forespørsler",
    "adaptive": "Adaptiv",
    "adaptiveDesc": "Skaler budsjett basert på forespørselskompleksitet",
    "effortNone": "Ingen (0 tokens)",
    "effortLow": "Lav (1K tokens)",
    "effortMedium": "Medium (10 000 tokens)",
    "effortHigh": "Høy (128 000 tokens)",
    "tokenBudget": "Tokenbudsjett",
    "tokens": "tokens",
    "baseEffortLevel": "Grunninnsatsnivå",
    "adaptiveHint": "Adaptiv modus skalerer fra dette basisnivået basert på antall meldinger, verktøybruk og forespørselslengde.",
    "requireLogin": "Krev innlogging",
    "requireLoginDesc": "Når PÅ, krever dashbordet passord. Når AV, tilgang uten pålogging.",
    "currentPassword": "Gjeldende passord",
    "enterCurrentPassword": "Skriv inn gjeldende passord",
    "newPassword": "Nytt passord",
    "enterNewPassword": "Skriv inn nytt passord",
    "confirmPassword": "Bekreft nytt passord",
    "confirmPasswordPlaceholder": "Bekreft nytt passord",
    "passwordsNoMatch": "Passord stemmer ikke",
    "passwordUpdated": "Passordet ble oppdatert",
    "failedUpdatePassword": "Kunne ikke oppdatere passordet",
    "errorOccurred": "Det oppsto en feil",
    "updatePassword": "Oppdater passord",
    "setPassword": "Angi passord",
    "apiEndpointProtection": "API-endepunktbeskyttelse",
    "requireAuthModels": "Krev API-nøkkel for /modeller",
    "requireAuthModelsDesc": "Når PÅ, returnerer /v1/models-endepunktet 404 for uautentiserte forespørsler. Forhindrer modelloppdagelse av uautoriserte brukere.",
    "authModelHeading": "Aktiv autorisasjonsmodell",
    "authModelClient": "Klient-API-endepunkter (/v1/*, /chat/*, /responses/*, /codex/*, /messages/*) krever en Bearer API-nøkkel.",
    "authModelManagement": "Administrasjonsendepunkter (/dashboard, /api/*) krever en dashbordøkt eller administrasjonslegitimasjon.",
    "authModelPublic": "Bare påloggings-, helse- og bootstrap-ruter er offentlige.",
    "bruteForceProtection": "Logg på brute-force-beskyttelse",
    "bruteForceProtectionDesc": "Gass og lås /api/auth/login etter gjentatte feil fra samme IP.",
    "corsAllowedOrigins": "CORS tillatt opprinnelse",
    "corsAllowedOriginsDesc": "Kommaseparert liste over nettleseropprinnelser som er tillatt å ringe denne serveren. Tom liste = ingen nettleser CORS-tilgang (server-til-server fungerer fortsatt). Bruk CORS_ALLOW_ALL=true env var kun for utvikling.",
    "blockedProviders": "Blokkerte leverandører",
    "blockedProvidersDesc": "Skjul spesifikke leverandører fra /v1/models-svaret. Blokkerte leverandører vil ikke vises i modelloppføringer.",
    "providersBlocked": "{count} leverandør(er) blokkert fra /modeller",
    "blockProviderTitle": "Blokkér {provider}",
    "unblockProviderTitle": "Fjern blokkering av {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": "Systemblokk Transform Pipeline",
    "systemTransformsDesc": "Per leverandør bestilt pipeline med transformasjoner brukt på forespørselsteksten før videresending. Støtter enhver leverandør-ID.",
    "systemTransformsAddProvider": "Legg til leverandør",
    "systemTransformsAddProviderPlaceholder": "Velg en leverandør...",
    "systemTransformsAddProviderAllConfigured": "Alle leverandører er allerede konfigurert",
    "systemTransformsRemoveProvider": "Fjern leverandøren",
    "systemTransformsNoProviders": "Ingen leverandører er konfigurert. Legg til en leverandør for å komme i gang.",
    "systemTransformsOpMoveUp": "Flytt opp",
    "systemTransformsOpMoveDown": "Flytt ned",
    "systemTransformsOpDelete": "Slett op",
    "routingStrategy": "Rutingstrategi",
    "routingAdvancedGuideTitle": "Avansert ruteveiledning",
    "routingAdvancedGuideHint1": "Bruk Fill First for forutsigbar prioritet, Round Robin for rettferdighet og P2C for latensmotstandskraft.",
    "routingAdvancedGuideHint2": "Hvis leverandørene varierer i kvalitet/kostnad, start med Cost Opt for bakgrunnsarbeid og Minst brukt for balansert slitasje.",
    "fillFirst": "Fyll først",
    "fillFirstDesc": "Bruk kontoer i prioritert rekkefølge",
    "roundRobin": "Round Robin",
    "roundRobinDesc": "Bla gjennom alle kontoer",
    "p2c": "P2C",
    "p2cDesc": "Velg 2 tilfeldig, bruk den sunnere",
    "random": "Tilfeldig",
    "randomDesc": "Tilfeldig konto hver forespørsel",
    "leastUsed": "Minst brukt",
    "leastUsedDesc": "Velg minst nylig brukte konto",
    "costOpt": "Kostnad Opt",
    "costOptDesc": "Foretrekker den billigste tilgjengelige kontoen",
    "resetAware": "Reset-Aware RR",
    "resetAwareDesc": "Foretrekk kontoer med sunn gjenværende kvote og nærmere tilbakestillinger",
    "strictRandom": "Strict Random",
    "strictRandomDesc": "Shuffle deck — uses each account once before reshuffling",
    "stickyLimit": "Sticky Limit",
    "stickyLimitDesc": "Anrop per konto før bytte",
    "modelAliases": "Modellaliaser",
    "modelAliasesTitle": "Modellaliaser",
    "modelAliasesDesc": "Remap model names using exact matches or wildcard patterns.",
    "addCustomAlias": "Legg til Tilpasset Alias",
    "deprecatedModelId": "Utdatert modell-ID",
    "newModelId": "Ny modell-ID",
    "customAliases": "Tilpassede Aliaser",
    "builtInAliases": "Innebygde Aliaser",
    "backgroundDegradationTitle": "Bakgrunnsoppgave Degradering",
    "backgroundDegradationDesc": "Oppdager automatisk bakgrunnsoppgaver (titler, sammendrag) og ruter til billigere modeller",
    "enableDegradation": "Aktiver Bakgrunnsdegradation",
    "enableDegradationHint": "Når aktivert, rutes bakgrunnsoppgaver som tittelegenerering og sammendrag automatisk til billigere modeller",
    "tasksDetected": "Oppgaver oppdaget",
    "degradationMap": "Modelldegraderingsschema",
    "premiumModel": "Premiummodell",
    "cheapModel": "Billig modell",
    "detectionPatterns": "Deteksjonsmønstre",
    "newPattern": "f.eks. \"generer en tittel\"",
    "aliasPatternPlaceholder": "claude-sonnett-*",
    "aliasTargetPlaceholder": "claude-sonnett-4-20250514",
    "pattern": "Mønster",
    "targetModel": "Målmodell",
    "add": "+ Legg til",
    "session": "Sesjon",
    "sessionDetailsAria": "Sesjonsdetaljer",
    "status": "Status",
    "authenticated": "Autentisert",
    "guest": "Gjest",
    "loginTime": "Påloggingstid",
    "sessionAge": "Sesjonsalder",
    "browser": "Nettleser",
    "clearLocalData": "Fjern lokale data",
    "logout": "Logg ut",
    "clearLocalDataConfirm": "Vil du slette alle lokale data? Dette vil tilbakestille innstillingene dine.",
    "unknown": "Ukjent",
    "systemActor": "systemet",
    "ipAccessControl": "IP-tilgangskontroll",
    "ipAccessControlDesc": "Blokker eller tillat bestemte IP-adresser",
    "ipModeDisabled": "Deaktivert",
    "ipModeBlacklist": "Svarteliste",
    "ipModeWhitelist": "Hviteliste",
    "ipModeWhitelistPriority": "WL prioritet",
    "addIpAddress": "Legg til IP-adresse",
    "ipAddressPlaceholder": "192.168.1.0/24 eller 10.0.*.*",
    "block": "+ Blokker",
    "allow": "+ Tillat",
    "blocked": "Blokkert ({count})",
    "allowed": "Tillatt ({count})",
    "temporaryBans": "Midlertidig utestengelse ({count})",
    "minLeft": "{min}m igjen",
    "auditLog": "Revisjonslogg",
    "searchAuditLogs": "Søk i revisjonslogger...",
    "failedLoadAuditLog": "Kunne ikke laste inn revisjonsloggen",
    "noAuditEvents": "Ingen revisjonshendelser funnet",
    "action": "Handling",
    "actor": "Skuespiller",
    "details": "Detaljer",
    "time": "Tid",
    "fallbackChainsTitle": "Reservekjeder",
    "fallbackChainsDesc": "Definer leverandørens reserveordre per modell",
    "addChain": "+ Legg til kjede",
    "modelName": "Modellnavn",
    "modelNamePlaceholder": "claude-sonnett-4-20250514",
    "providersCommaSeparated": "Leverandører (kommaseparert, i prioritert rekkefølge)",
    "providersCommaSeparatedPlaceholder": "antropisk, openai, gemini",
    "createChain": "Lag kjede",
    "noFallbackChains": "Ingen reservekjeder",
    "noFallbackChainsDesc": "Opprett en kjede for å definere leverandørens reserveordre for en modell.",
    "loadingFallbackChains": "Laster inn reservekjeder...",
    "deleteChainConfirm": "Vil du slette reservekjeden for «{model}»?",
    "chainCreated": "Kjede opprettet for {model}",
    "chainDeleted": "Kjede slettet for {model}",
    "failedCreateChain": "Kunne ikke opprette kjede",
    "failedDeleteChain": "Kunne ikke slette kjeden",
    "deleteChain": "Slett kjede",
    "fillModelAndProviders": "Fyll ut modellnavn og leverandører",
    "addAtLeastOneProvider": "Legg til minst én leverandør",
    "comboDefaultsTitle": "Combo standarder",
    "comboDefaultsGuideTitle": "Hvordan justere kombinasjonsstandarder",
    "comboDefaultsGuideHint1": "Hold lave gjenforsøk i flyter med lav latens; øke tidsavbruddet bare for langgenerasjonsoppgaver.",
    "comboDefaultsGuideHint2": "Bruk leverandøroverstyringer når en leverandør trenger annen tidsavbrudd/forsøk på nytt enn globale standardinnstillinger.",
    "globalComboConfig": "Global kombinasjonskonfigurasjon",
    "defaultStrategy": "Standardstrategi",
    "defaultStrategyDesc": "Brukes på nye kombinasjoner uten eksplisitt strategi",
    "comboStrategyAria": "Kombinasjonsstrategi",
    "priority": "Prioritet",
    "weighted": "Vektet",
    "contextRelay": "Context Relay",
    "contextRelayDesc": "Hands off context between providers with automatic summarization",
    "maxRetriesLabel": "Max prøver på nytt",
    "retryDelayLabel": "Forsinkelse på nytt (ms)",
    "timeoutLabel": "Tidsavbrudd (ms)",
    "healthCheck": "Helsesjekk",
    "healthCheckDesc": "Forhåndssjekk leverandørens tilgjengelighet",
    "trackMetrics": "Spor beregninger",
    "trackMetricsDesc": "Registrer beregninger for forespørsel per kombinasjon",
    "providerOverrides": "Leverandøroverstyringer",
    "providerOverridesDesc": "Overstyr tidsavbrudd og forsøk på nytt per leverandør. Leverandørinnstillinger overstyrer globale standardinnstillinger.",
    "providerMaxRetriesAria": "{provider} maksimalt forsøk",
    "providerTimeoutAria": "{provider} tidsavbrudd ms",
    "removeProviderOverrideAria": "Fjern {provider} overstyring",
    "newProviderNamePlaceholder": "f.eks. google, åpne...",
    "newProviderNameAria": "Nytt leverandørnavn",
    "retries": "prøver på nytt",
    "ms": "ms",
    "saveComboDefaults": "Lagre Combo-standarder",
    "maxNestingDepth": "Maks hekkedybde",
    "concurrencyPerModel": "Samtidighet / modell",
    "queueTimeout": "Tidsavbrudd 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": "Leverandørprofiler",
    "providerProfilesDesc": "Separate innstillinger for motstandskraft for OAuth (øktbasert) og API Key (målt) leverandører. OAuth-leverandører har strengere terskler på grunn av lavere takstgrenser.",
    "oauthProviders": "OAuth-leverandører",
    "apiKeyProviders": "API-nøkkelleverandører",
    "transientCooldown": "Forbigående nedkjøling",
    "rateLimitCooldown": "Rate Limit Cooldown",
    "maxBackoffLevel": "Maks Backoff Level",
    "cbThreshold": "CB-terskel",
    "cbResetTime": "CB-tilbakestillingstid",
    "rateLimiting": "Satsbegrensende",
    "rateLimitingDesc": "API-nøkkelleverandører er automatisk hastighetsbegrenset med sikre standardinnstillinger. Grenser læres fra responsoverskrifter og tilpasses over tid.",
    "defaultSafetyNet": "Standard sikkerhetsnett",
    "rpm": "RPM",
    "minGap": "Min Gap",
    "maxConcurrent": "Maks samtidig",
    "activeLimiters": "Aktive begrensere",
    "noActiveLimiters": "Ingen aktive ratebegrensere ennå.",
    "reservoir": "Reservoar",
    "running": "Løper",
    "queued": "I kø",
    "circuitBreakers": "Strømbrytere",
    "breakerStateClosed": "Stengt",
    "breakerStateOpen": "Åpne",
    "breakerStateHalfOpen": "Halvåpent",
    "tripped": "{count} utløste",
    "healthy": "{count} sunn",
    "resetAll": "Tilbakestill alle",
    "noCircuitBreakers": "Ingen effektbrytere aktive ennå. De opprettes automatisk når forespørsler strømmer gjennom kombinasjonsrørledningen.",
    "failures": "{count} feil(er)",
    "policiesLocked": "Retningslinjer og låste identifikatorer",
    "allOperational": "Alle systemer er i drift - ingen sperringer eller utløste brytere",
    "loadingPolicies": "Laster inn retningslinjer ...",
    "lockedIdentifiers": "Låste identifikatorer",
    "unlockedIdentifier": "Ulåst: {identifier}",
    "sinceDate": "siden {date}",
    "forceUnlock": "Tving opplåsing",
    "unlocking": "Låser opp ...",
    "failedUnlock": "Kunne ikke låse opp",
    "failedLoadWithStatus": "Kunne ikke laste inn: {status}",
    "failedLoadResilience": "Kunne ikke laste inn resiliensstatus",
    "saveFailed": "Lagring mislyktes",
    "resetFailed": "Tilbakestilling mislyktes",
    "loadingResilience": "Laster motstandsstatus ...",
    "retry": "Prøv på nytt",
    "systemStorage": "System og lagring",
    "allDataLocal": "Alle data lagret lokalt på maskinen din",
    "databasePath": "Databasebane",
    "exportDatabase": "Eksporter database",
    "exportAll": "Eksporter alle (.tar.gz)",
    "importDatabase": "Importer database",
    "confirmDbImport": "Bekreft databaseimport",
    "confirmDbImportDesc": "Dette vil erstatte alle gjeldende data med innholdet fra {file}. En sikkerhetskopi opprettes automatisk før importen.",
    "yesImport": "Ja, import",
    "lastBackup": "Siste sikkerhetskopi",
    "noBackupYet": "Ingen sikkerhetskopi ennå",
    "backupNow": "Sikkerhetskopier nå",
    "backupRestore": "Sikkerhetskopiering og gjenoppretting",
    "viewBackups": "Se sikkerhetskopier",
    "hide": "Skjul",
    "backupRetentionDesc": "Database-øyeblikksbilder opprettes automatisk før gjenoppretting og hvert 15. minutt når data endres. Oppbevaring: 24 timer i timen + 30 daglige sikkerhetskopier med smart rotasjon.",
    "loadingBackups": "Laster inn sikkerhetskopier...",
    "noBackupsYet": "Ingen sikkerhetskopier tilgjengelig ennå. Sikkerhetskopier opprettes automatisk når data endres.",
    "backupsAvailable": "{count} sikkerhetskopi(er) tilgjengelig",
    "refresh": "Oppdater",
    "confirm": "Bekrefte?",
    "yes": "Ja",
    "no": "Nei",
    "restore": "Gjenopprett",
    "invalidFileType": "Ugyldig filtype. Bare .sqlite-filer godtas.",
    "exportFailed": "Eksporten mislyktes",
    "exportFailedWithError": "Eksport mislyktes: {error}",
    "fullExportFailedWithError": "Full eksport mislyktes: {error}",
    "backupCreated": "Sikkerhetskopi opprettet: {file}",
    "restoreSuccess": "Gjenopprettet! {connections} tilkoblinger, {nodes} noder, {combos} kombinasjoner, {apiKeys} API-nøkler.",
    "importSuccess": "Database importert! {connections} tilkoblinger, {nodes} noder, {combos} kombinasjoner, {apiKeys} API-nøkler.",
    "minutesAgo": "{count}m siden",
    "hoursAgo": "{count}t siden",
    "daysAgo": "{count}d siden",
    "backupReasonManual": "manuell",
    "backupReasonPreRestore": "forhåndsgjenoppretting",
    "connectionsCount": "{count, plural, one {# connection} other {# connections}}",
    "noChangesSinceBackup": "Ingen endringer siden siste sikkerhetskopiering",
    "backupFailed": "Sikkerhetskopiering mislyktes",
    "restoreFailed": "Gjenoppretting mislyktes",
    "importFailed": "Import mislyktes",
    "errorDuringRestore": "Det oppstod en feil under gjenoppretting",
    "errorDuringImport": "Det oppstod en feil under import",
    "modelPricing": "Modellprising",
    "modelPricingDesc": "Konfigurer kostnadssatser per modell • Alle priser i $/1M tokens",
    "registry": "Register",
    "priced": "Priset",
    "searchProvidersModels": "Søk etter leverandører eller modeller...",
    "showAll": "Vis alle",
    "noProvidersMatch": "Ingen leverandører samsvarer med søket ditt.",
    "howPricingWorks": "Hvordan prissetting fungerer",
    "cacheWrite": "Cache-skriving",
    "unsaved": "ikke lagret",
    "resetDefaults": "Tilbakestill standarder",
    "saveProvider": "Lagre leverandør",
    "model": "Modell",
    "models": "modeller",
    "moreProviders": "{count} flere leverandører",
    "withPricing": "med konfigurert pris",
    "policiesCircuitBreakers": "Retningslinjer og effektbrytere",
    "activeIssuesDetected": "Aktive problemer oppdaget",
    "off": "Av",
    "resetPricingConfirm": "Vil du tilbakestille all prissetting for {provider} til standardverdiene?",
    "pricingDescInput": "Inndata: tokens sendt til modellen",
    "pricingDescOutput": "Utgang: tokens generert",
    "pricingDescCached": "Bufret: gjenbrukt inndata (~50 % av inndatahastigheten)",
    "pricingDescReasoning": "Begrunnelse: tenketegn (faller tilbake til utgang)",
    "pricingDescCacheWrite": "Cache Write: lage cache-oppføringer (faller tilbake til Input)",
    "pricingDescFormula": "Kostnad = (input × input_rate) + (output × output_rate) + (cached × cached_rate) per million tokens.",
    "pricingSettingsTitle": "Prisinnstillinger",
    "totalModels": "Totalt antall modeller",
    "active": "Aktiv",
    "costCalculation": "Kostnadsberegning",
    "costCalculationDesc": "Kostnadene beregnes basert på tokenbruk og prissatser som er konfigurert for hver modell.",
    "pricingFormat": "Prisformat",
    "pricingFormatDesc": "Alle priser er i $/1M tokens (dollar per million tokens).",
    "tokenTypes": "Tokentyper",
    "inputTokenDesc": "Standard prompt-tokens",
    "outputTokenDesc": "Fullførings-/svarbrikke",
    "cachedTokenDesc": "Bufret inndatatoken (vanligvis 50 % av inndatahastigheten)",
    "reasoningTokenDesc": "Spesielle resonnement-/tenkesymboler (tilbakeslag til produksjonshastighet)",
    "cacheCreationTokenDesc": "Tokens som brukes til å lage cache-oppføringer (tilbake til inngangshastighet)",
    "customPricingNote": "Du kan overstyre standardpriser for spesifikke modeller. Egendefinerte overstyringer prioriteres fremfor automatisk oppdagede priser.",
    "editPricing": "Rediger priser",
    "viewFullDetails": "Se alle detaljer",
    "themeCoral": "Korall",
    "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": "Kunne ikke slette priser: {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": "Kunne ikke tilbakestille prisen: {reason}",
    "tab": "Tab",
    "pricingSavedProvider": "Priser lagret for {provider}",
    "pricingSyncFailed": "Pricing Sync Failed",
    "pricingSaveFailedWithReason": "Kunne ikke lagre pris: {reason}",
    "pricingResetProvider": "Pristilbakestilling for {provider}",
    "nextSync": "Next Sync",
    "pricingSyncFailedWithReason": "Prissynkronisering mislyktes: {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 motorkonfigurasjon",
    "compressionAggressiveConfigDesc": "Finjuster oppsummering, verktøykomprimering og aldringsterskler",
    "compressionUltraConfig": "Ultra Engine Configuration",
    "compressionUltraConfigDesc": "Finjuster heuristisk beskjæring, SLM-reservering og terskler per melding",
    "compressionUltraRate": "Behold sats",
    "compressionUltraMinScore": "Minimum poenggrense",
    "compressionUltraSlmFallback": "Tilbakeslag til aggressiv",
    "compressionUltraModelPath": "SLM modellbane",
    "compressionSummarizerEnabled": "Aktiver Summarizer",
    "compressionMaxTokensPerMessage": "Maks tokens per melding",
    "compressionMinSavings": "Min spareterskel",
    "compressionAgingThresholds": "Aldringsterskler",
    "compressionAgingThresholdsDesc": "Antall nylige meldinger holdt på hvert aldringsnivå (høyere = mer bevart)",
    "compressionToolStrategies": "Verktøyresultatstrategier",
    "compressionToolStrategiesDesc": "Veksle komprimeringsstrategier for ulike verktøyresultattyper",
    "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": "Valgfritt",
    "current": "Gjeldende",
    "remove": "Fjern",
    "search": "Søk",
    "oneproxyTitle": "1proxy gratis proxy-markedsplass",
    "oneproxyTotalProxies": "Totale fullmakter",
    "oneproxyAvgQuality": "Gj.sn. kvalitet",
    "resilienceScope": "Omfang:",
    "resilienceTrigger": "Utlø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 oppføring",
    "routingNeedlesSubstrings": "Nåler (understrenger for å matche)",
    "routingCaseSensitive": "Skiller mellom store og små bokstaver",
    "routingPrefixes": "Prefikser",
    "routingMatch": "Match",
    "routingReplacement": "Utskifting",
    "routingReplaceAllOccurrences": "Erstatt alle forekomster",
    "routingPatternRegex": "Mønster (regex)",
    "routingFlags": "Flagg",
    "routingNeedles": "Nåler",
    "routingBlockText": "Blokker tekst",
    "routingIdempotencyKey": "Idempotensnøkkel",
    "routingEntrypoint": "Inngangspunkt",
    "routingVersionFormat": "Versjonsformat",
    "routingCchAlgorithm": "CCH-algoritme",
    "routingWordsToObfuscate": "Ord som skal tilsløres (ZWJ satt inn etter første tegn)",
    "logsSettingsTitle": "Logginnstillinger",
    "detailedLogsLabel": "Detaljerte logger aktivert",
    "detailedLogsDesc": "Aktiver detaljert logging av forespørsel/svar",
    "callLogPipelineLabel": "Ring Log Pipeline",
    "callLogPipelineDesc": "Aktiver pipeline for samtaleloggbehandling",
    "maxDetailSizeLabel": "Maks detaljstørrelse (KB)",
    "maxDetailSizeDesc": "Maksimal størrelse for detaljerte loggoppføringer",
    "ringBufferSizeLabel": "Ringbufferstørrelse",
    "ringBufferSizeDesc": "Størrelse på ringbuffer for vedkubber",
    "semanticCacheEnabledLabel": "Semantisk buffer aktivert",
    "semanticCacheMaxSizeLabel": "Semantisk cache Maks størrelse",
    "semanticCacheMaxSizeDesc": "Maksimalt antall semantiske cache-oppføringer",
    "semanticCacheTTLLabel": "Semantisk cache TTL",
    "promptCacheEnabledLabel": "Spørrebuffer aktivert",
    "promptCacheEnabledDesc": "Aktiver hurtigbufring",
    "promptCacheStrategyLabel": "Spør Cache-strategi",
    "promptCacheStrategyDesc": "Strategi for hurtigbufring",
    "alwaysPreserveClientCacheLabel": "Bevar alltid klientbuffer",
    "alwaysPreserveClientCacheDesc": "Retningslinjer for bevaring av klientbuffer",
    "logRetentionPolicyTitle": "Retningslinjer for oppbevaring av logg",
    "resilienceUseUpstream429HintsForBreaker": "Bruk oppstrøms 429 hint (breaker)",
    "appearanceLogoPreviewAlt": "Forhåndsvisning av logo",
    "appearanceFaviconPreviewAlt": "Forhåndsvisning av favorittikonet",
    "oneproxyLastSync": "Siste synkronisering",
    "oneproxyAllProtocols": "Alle protokoller",
    "oneproxyCountryCodePlaceholder": "Landskode (f.eks. USA)",
    "oneproxyMinQualityPlaceholder": "Min kvalitet",
    "oneproxyLoadingProxies": "Laster inn proxyer...",
    "oneproxyLastSyncLabel": "Siste synkronisering:",
    "oneproxyProxiesFetched": "Fullmakter hentet:",
    "oneproxyConsecutiveFailures": "Påfølgende feil:",
    "oneproxyErrorLabel": "Feil:",
    "oneproxyNever": "Aldri",
    "oneproxySyncStatusTitle": "Synkroniseringsstatus",
    "oneproxySuccess": "Suksess",
    "oneproxyFailed": "Mislyktes",
    "routingAntigravitySignatureTitle": "Antigravity Signatur Cache-modus",
    "routingAntigravitySignatureDesc": "__MISSING__:Control whether OmniRoute reuses only stored Gemini thought signatures or accepts validated client-provided signatures in Antigravity-compatible tool-call flows.",
    "routingAntigravitySignatureEnabledLabel": "__MISSING__:Enabled",
    "routingAntigravitySignatureEnabledDesc": "__MISSING__:Current behavior. Ignore client-provided signatures and keep using the stored OmniRoute flow.",
    "routingAntigravitySignatureBypassLabel": "__MISSING__:Bypass",
    "routingAntigravitySignatureBypassDesc": "__MISSING__:Accept client-provided signatures after lightweight validation and fall back to the stored signature when invalid.",
    "routingAntigravitySignatureBypassStrictLabel": "__MISSING__:Bypass Strict",
    "routingAntigravitySignatureBypassStrictDesc": "__MISSING__:Require full protobuf validation before accepting a client-provided signature.",
    "routingHeaderFingerprintTitle": "Overskriftsfingeravtrykk (per leverandør)",
    "routingServerRejectedSave": "⚠ Server avvist lagre:",
    "routingAddTransformOp": "Legg til en transformeringsoperasjon",
    "routingClientCacheControlTitle": "Klientbufferkontroll",
    "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": "Visjonsbro",
    "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": "Bromodell",
    "visionBridgeModelPlaceholder": "openai/gpt-4o-mini",
    "visionBridgeModelHint": "__MISSING__:Any OmniRoute model ID that supports vision can be used here.",
    "visionBridgePrompt": "Bromelding",
    "visionBridgePromptPlaceholder": "Beskriv dette bildet kortfattet.",
    "visionBridgePromptHint": "__MISSING__:Sent to the vision model before the extracted description is injected back into the original request.",
    "visionBridgeTimeoutMs": "Tidsavbrudd (ms)",
    "visionBridgeMaxImagesPerRequest": "Maks bilder per forespørsel",
    "resilienceMaxBackoffSteps": "Max backoff steps",
    "resilienceProviderBreakerTitle": "Circuit Breaker per Provider",
    "resilienceFailureThreshold": "Failure threshold",
    "resilienceResetTimeout": "Tilbakestill tidsavbrudd",
    "resilienceFailureThresholdLabel": "Feilterskel",
    "resilienceResetTimeoutLabel": "Tilbakestill tidsavbrudd",
    "resilienceConnectionCooldownTitle": "Connection Cooldown",
    "resilienceUseUpstreamRetryHintsLabel": "Bruk oppstrøms tips om nytt forsøk",
    "resilienceUseUpstream429BreakerLabel": "Bruk oppstrøms 429 hint (breaker)",
    "resilienceMaxBackoffStepsLabel": "Maks tilbakeslagstrinn",
    "resilienceYes": "Ja",
    "resilienceNo": "Nei",
    "resilienceDefault": "Default",
    "storageDatabaseBackupRetention": "Oppbevaring av sikkerhetskopiering av database",
    "storagePurgeData": "Tøm data",
    "retentionQuotaSnapshots": "Kvoteøyeblikksbilder (dager)",
    "retentionMcpAudit": "MCP-revisjon (dager)",
    "retentionA2aEvents": "A2A-hendelser (dager)",
    "retentionCallLogs": "Samtalelogger (dager)",
    "retentionUsageHistory": "Brukshistorikk (dager)",
    "retentionMemoryEntries": "Minneoppføringer (dager)",
    "storageAutoVacuumMode": "Autovakuummodus",
    "storageScheduledVacuum": "Planlagt vakuum",
    "storageVacuumHour": "Vakuumtime (0-23)",
    "storagePageSize": "Sidestørrelse (byte)",
    "storageDatabaseSize": "Databasestørrelse",
    "storagePageCount": "Antall sider",
    "storageFreelistCount": "Antall gratislister",
    "storageLastVacuum": "Siste vakuum",
    "storageLastOptimization": "Siste optimalisering",
    "storageIntegrityCheck": "Integritetssjekk",
    "storageIntegrityOk": "✓ OK",
    "storageIntegrityError": "✗ Feil",
    "storageUsageTokenBuffer": "Bruk Token Buffer",
    "compressionSettingsAutoTriggerMode": "Auto trigger-modus",
    "compressionSettingsMcpDescriptionCompression": "MCP-beskrivelseskomprimering",
    "compressionSettingsCavemanIntensity": "Caveman intensitet",
    "compressionSettingsCavemanOutputMode": "Caveman utgangsmodus",
    "compressionSettingsOutputIntensity": "Utgangsintensitet",
    "compressionSettingsAutoClarityBypass": "Automatisk klarhetsbypass",
    "resilienceWaitForCooldown": "Vent på nedkjøling",
    "resilienceEnableServerSideWait": "Aktiver venting på serversiden",
    "resilienceMaximumRetries": "Maksimalt antall forsøk igjen",
    "resilienceMaximumWaitPerRetry": "Maksimal venting per nytt forsøk",
    "memorySkillsSkillsmpMarketplace": "SkillsMP Marketplace",
    "memorySkillsFailedToSave": "Kunne ikke lagre",
    "memorySkillsApiKey": "API-nøkkel",
    "memorySkillsActiveSkillsProvider": "Aktiv ferdighetsleverandør",
    "cliproxyapiFallback": "CLIProxyAPI Fallback",
    "cliproxyapiEnableFallback": "Aktiver CLIProxyAPI Fallback",
    "cliproxyapiUrl": "CLIProxyAPI URL",
    "cliproxyapiStatus": "CLIProxyAPI-status",
    "cliproxyapiNotDetected": "Ikke oppdaget",
    "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 nedkjøling",
    "modelCooldownsEmpty": "Ingen modeller i nedkjøling akkurat nå.",
    "codexFastTierTitle": "Codex Fast Tier",
    "codexFastTierDesc": "Globalt inject service_tier=prioritet for OpenAI Codex-forespørsler.",
    "codexFastTierHint": "Når aktivert, legger OmniRoute service_tier=prioritet til utgående Codex-forespørsler for tilkoblinger som ikke allerede spesifiserer et nivå. Prioritetsnivået krever en OpenAI Enterprise API-nøkkel eller ChatGPT-auth Codex-banen; andre nøkkeltyper vil motta en nivårelatert feil fra OpenAI. Innstillinger per tilkobling på Codex-leverandørsiden har forrang.",
    "codexFastTierSaveError": "Kunne ikke oppdatere Codex Fast Tier-innstillingen",
    "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": "Velg utvalgte Claude-forespørsler til Antropisk hurtigmodus (hastighet: \"rask\").",
    "claudeFastModeHint": "Anthropic støtter ikke offisielt Fast Mode for klienter i SDK-stil. Når den er aktivert, videresender OmniRoute en X-CPA-Force-Fast-Mode-overskrift slik at en sammenkoblet CLIProxyAPI-bygning kan velge å forfalske inngangspunktet. Bare de listede Opus-modellene er lukket av Anthropics klientsidesjekk. Abonnementsnivå, Max-plan og Fast Mode-kredittsaldo er fortsatt håndhevet på serversiden – Anthropic kan returnere out_of_credits selv når bryteren er på.",
    "claudeFastModeModelsLabel": "Gjelder modeller ({count})",
    "claudeFastModeModelCheckbox": "Aktiver hurtigmodus for {model}",
    "claudeFastModeSaveError": "Kunne ikke oppdatere Claude Fast Mode-innstillingen",
    "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": "Base nedkjøling",
    "scopeLabel": "Omfang",
    "triggerLabel": "Utløser",
    "effectLabel": "Effekt",
    "statusEnabled": "Aktivert",
    "statusDisabled": "Deaktivert",
    "resilienceRequestQueueScope": "Per forespørselskø",
    "resilienceRequestQueueTrigger": "Før du sender til oppstrøms",
    "resilienceRequestQueueEffect": "Setter forespørsler i kø, begrenser samtidighet og gir rom for samtaler",
    "resilienceRequestQueueDesc": "Dette laget kontrollerer kun kø og pacing. Den lagrer ikke nedkjøling eller åpne kretsbrytere.",
    "resilienceAutoEnableApiKeyProvidersDesc": "Aktiverer købeskyttelse som standard for aktive API-nøkkeltilkoblinger.",
    "resilienceMaxQueueWait": "Maksimal ventetid i kø",
    "resilienceConnectionCooldownScope": "Individuell tilknytning",
    "resilienceConnectionCooldownTrigger": "Når en tilkobling returnerer en forbigående oppstrømsfeil",
    "resilienceConnectionCooldownEffect": "Hopper midlertidig over den tilkoblingen og øker backoff for gjentatte feil",
    "resilienceConnectionCooldownDesc": "Basisnedkjølingen dekker forbigående tilkoblingsfeil. Når oppstrøms tips om gjenforsøk er aktivert, overstyrer leverandørens eksplisitte vindu den lokale nedkjølingen.",
    "resilienceUseUpstreamRetryHintsDesc": "Bruker nytt forsøk etter/tilbakestill verdier fra oppstrømsleverandøren når tilgjengelig.",
    "resilienceUseUpstream429BreakerHints": "Bruk oppstrøms 429 hint for breaker cooldown",
    "resilienceUseUpstream429BreakerHintsShort": "Bruk oppstrøms 429 hint",
    "resilienceUseUpstream429BreakerHintsDesc": "Bruk Retry-After / kvote-oppbrukte signaler fra 429 svar på effektbryterens nedkjølingsperiode. Standard bruker en policy per leverandør: direkte skyleverandører er standard på; Omvendt proxy, selvvertsbaserte og CLI-støttede leverandører er standard av. Uavhengig av \"Bruk oppstrøms tips om forsøk på nytt\".",
    "resilienceProviderBreakerScope": "Hele leverandøren",
    "resilienceProviderBreakerTrigger": "Endelig transport/serverfeil etter at tilkoblingen er oppbrukt",
    "resilienceProviderBreakerEffect": "Blokkerer den leverandøren midlertidig inntil tilbakestillingstiden utløper",
    "resilienceProviderBreakerDesc": "Live breaker-tilstand vises bare på Helse-siden. Tilkoblingsdekkede 429-takstgrenser forblir i Connection Cooldown og utløser ikke leverandørbryteren.",
    "resilienceResetTime": "Tilbakestill tid",
    "resilienceWaitForCooldownTitle": "Vent på nedkjøling",
    "resilienceWaitForCooldownScope": "Gjeldende kundeforespørsel",
    "resilienceWaitForCooldownTrigger": "Når alle kandidatforbindelser allerede kjøles ned",
    "resilienceWaitForCooldownEffect": "Venter på serveren og prøver på nytt når den første nedkjølingen utløper",
    "resilienceWaitForCooldownDesc": "Dette påvirker kun gjeldende forespørsel. Den lagrer ikke tilkobling eller leverandørstatus.",
    "resilienceEnableServerWait": "Aktiver venting på serversiden",
    "resilienceEnableServerWaitDesc": "Når den er aktivert, venter OmniRoute på at den første nedkjølingen utløper og prøver automatisk på nytt.",
    "resilienceMaxAttempts": "Maksimalt antall forsøk",
    "resilienceMaxWaitPerAttempt": "Maksimal venting per forsøk",
    "forcedFingerprintTitle": "Always enabled for {provider} — required for OAuth account safety; cannot be turned off.",
    "forcedFingerprintBadge": "Required",
    "codexSessionAffinityTitle": "Codex-økttilhørighet",
    "codexSessionAffinityDesc": "Holder én Codex-samtale på samme konto i så mange sekunder. 0 deaktiverer den.",
    "codexSessionAffinityTtl": "Affinitets-TTL (sekunder)",
    "resetAwareQuotaCacheTitle": "Tilbakestill-bevisst kvotebuffer",
    "resetAwareQuotaCacheDesc": "Buffer kun kvotetelemetri for tilbakestillingsbevisst bestilling. Forhåndskontroll av kvoter beskytter fortsatt forespørsler. 0/0 fortsetter å hente.",
    "resetAwareQuotaCacheTtl": "Fersk TTL (sekunder)",
    "resetAwareQuotaCacheMaxStale": "Maks foreldet (sekunder)",
    "qdrantCleanupSuccess": "OK: fjernet {count} poeng(er) (oppbevaring: {days} dager)",
    "qdrantCleanupFailed": "Opprydding mislyktes",
    "qdrantCleanupError": "Feil: {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": "Tilgjengelige utgangsfiltre etter kategori",
    "guidedConfig": "Konfigurasjon",
    "guidedConfigDesc": "Juster hvordan RTK filtrerer terminalutgangen din",
    "maxLines": "Max lines",
    "maxChars": "Max chars",
    "deduplicateThreshold": "Deduplikatterskel",
    "customFilters": "Egendefinerte filtre",
    "detectedType": "Oppdaget type",
    "confidence": "Selvtillit",
    "beforeAfter": "Før / Etter",
    "trustProjectFilters": "Stol på prosjektfiltre",
    "rawOutputRetention": "Bevaring av rå utgang",
    "rawOutputNever": "Aldri",
    "rawOutputFailures": "Feil",
    "rawOutputAlways": "Alltid",
    "rawOutputMaxBytes": "Raw output maks byte",
    "filterTesting": "Filter Testing",
    "pasteOutput": "Paste tool output to test filtering...",
    "presetHigh": "Aggressiv",
    "presetLow": "Lys",
    "presetMaxChars": "Maks utdatategn",
    "presetMaxLines": "Maks utgangslinjer",
    "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": "Enkelt",
    "advancedMode": "Avansert",
    "searchFilters": "Søkefiltre...",
    "tooltipDedup": "Hvor aggressivt å fjerne gjentatte linjer.",
    "tooltipMaxChars": "Maksimalt antall tegn per utdatablokk.",
    "tooltipMaxLines": "Maksimalt antall linjer å holde fra kommandoutgang. Overskudd avkortes."
  },
  "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": "Avansert konfigurasjon",
    "advancedConfigDesc": "Finjuster kompresjonsadferd",
    "aggressiveSettings": "Aggressive innstillinger",
    "aggressiveSettingsDesc": "Maksimal komprimering med potensielle kvalitetsavveininger",
    "requests": "Requests",
    "tokensSaved": "Tokens saved",
    "savingsPercent": "Savings %",
    "avgLatency": "Avg latency",
    "languagePacks": "Language Packs",
    "languagePacksDesc": "Enable compression rules for specific languages.",
    "labelAutoTrigger": "Autokomprimer når konteksten overskrider",
    "labelCompressionRate": "Kompresjonsstyrke",
    "labelMaxTokens": "Mål tokens per melding",
    "labelMinLength": "Minimum meldingslengde",
    "labelMinSavings": "Minimum tokens å lagre",
    "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": "Utgangsmodus",
    "outputModeDesc": "Instructs the LLM to respond in a terse, compact format.",
    "outputModeTitle": "Output Mode",
    "quickSettings": "Hurtiginnstillinger",
    "quickSettingsDesc": "Grunnleggende komprimeringsinnstillinger for å komme i gang",
    "autoClarity": "Auto-Clarity Bypass",
    "bypassConditions": "Bypass conditions",
    "bypassConditionsList": "sikkerhet, irreversibel, avklaring, ordresensitiv",
    "simpleMode": "Enkelt",
    "advancedMode": "Avansert",
    "tooltipAutoTrigger": "Komprimer automatisk når konteksten overskrider denne størrelsen.",
    "tooltipCompressionRate": "0,0 = ingen, 1,0 = maksimum. 0,5 = balansert.",
    "tooltipMaxTokens": "Mål tokenantall etter komprimering. Lavere = mer aggressiv.",
    "tooltipMinLength": "Meldinger som er kortere enn dette, komprimeres ikke. Lavere = mer kompresjon.",
    "tooltipMinSavings": "Komprimer bare hvis det sparer minst så mange tokens.",
    "ultraSettings": "Ultra-innstillinger",
    "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": "Oversetter",
    "metaTitle": "Oversetter Lekeplass | OmniRoute",
    "metaDescription": "Feilsøk, test og visualiser API-formatoversettelser mellom leverandører",
    "playgroundTitle": "Oversetter Lekeplass",
    "playground": "Lekeplass",
    "realtime": "Oversettelsesaktivitet i sanntid",
    "chatTester": "Chat Tester",
    "testBench": "Testbenk",
    "liveMonitor": "Live Monitor",
    "modeDescriptionPlayground": "Lim inn en hvilken som helst API-forespørselstekst og se hvordan OmniRoute oversetter den mellom leverandørformater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)",
    "modeDescriptionChatTester": "Send ekte chatteforespørsler gjennom OmniRoute og inspiser hele rundturen: inndata, oversatt forespørsel, leverandørsvar og oversatt utdata.",
    "modeDescriptionTestBench": "Kjør forhåndsdefinerte scenarier og sammenlign kompatibilitet på tvers av leverandører og modeller.",
    "modeDescriptionLiveMonitor": "Se oversettelsesbegivenheter i sanntid mens forespørsler strømmer gjennom OmniRoute.",
    "modeDescriptionFallback": "Feilsøk, test og visualiser hvordan OmniRoute oversetter API-forespørsler mellom leverandører.",
    "recentTranslations": "Nylige oversettelser",
    "noTranslations": "Ingen oversettelser ennå",
    "source": "Kilde",
    "target": "Mål",
    "time": "Tid",
    "model": "Modell",
    "status": "Status",
    "latency": "Latens",
    "totalTranslations": "Totale oversettelser",
    "successful": "Vellykket",
    "errors": "Feil",
    "avgLatency": "Gj.sn. ventetid",
    "millisecondsShort": "{value}ms",
    "notAvailableSymbol": "—",
    "liveAutoRefreshing": "Live — Automatisk oppdatering",
    "paused": "Pause",
    "eventsAppearHint": "Oversettelseshendelser vises her når forespørsler strømmer gjennom OmniRoute. Bruk en av disse metodene for å generere hendelser:",
    "chatTesterTab": "Chat Tester-fanen",
    "testBenchTab": "Testbenk-fanen",
    "externalApiCalls": "Eksterne API-anrop",
    "ideCliIntegrations": "IDE/CLI-integrasjoner",
    "inMemoryNote": "Merk: Hendelser lagres i minnet og tilbakestilles når serveren starter på nytt.",
    "ok": "OK",
    "errorShort": "FEIL",
    "formatConverter": "Formatkonvertering",
    "formatConverterDescription": "Lim inn eller skriv inn en JSON-forespørselstekst. Oversetteren vil automatisk oppdage kildeformatet og konvertere det til målformatet. Bruk denne til å feilsøke hvordan OmniRoute oversetter forespørsler mellom formater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).",
    "translationPathHubSpoke": "{source} → OpenAI (mellomliggende) → {target}",
    "translationPathDirect": "{source} → {target} (direkte oversetter)",
    "translationPathPassthrough": "Samme format - ingen oversettelse nødvendig",
    "openaiIntermediatePanel": "OpenAI Intermediate",
    "autoFeaturesTitle": "Hva OmniRoute gjør automatisk",
    "autoFeaturesCount": "8 funksjoner",
    "featureReasoningCache": "Begrunnelse Cache",
    "featureReasoningCacheDesc": "Re-injiserer bufret reasoning_content for tenkemodusmodeller (DeepSeek V4, Kimi K2, Qwen) når klienter utelater det fra samtalehistorikken.",
    "featureSchemaCoercion": "Skjematvang",
    "featureSchemaCoercionDesc": "Retter ødelagte verktøyskjemaer: legger til manglende tilleggsegenskaper, renser lange beskrivelser, normaliserer nestede objekter.",
    "featureRoleNormalization": "Rollenormalisering",
    "featureRoleNormalizationDesc": "Kartutvikler→system for ikke-OpenAI-mål. Kartsystem→bruker for modeller som ikke støtter systemrollen.",
    "featureToolCallIds": "Verktøy Call ID Normalization",
    "featureToolCallIdsDesc": "Genererer unike tool_call ID-er når de mangler. Normaliserer til 9-tegnsformat for leverandører som Mistral.",
    "featureMissingToolResponse": "Tool Response Injection",
    "featureMissingToolResponseDesc": "Injiserer tomme tool_result-meldinger når klienter sender tool_calls uten tilsvarende svar.",
    "featureThinkingBudget": "Tenker budsjett",
    "featureThinkingBudgetDesc": "Administrerer automatisk tenkekonfigurasjon. Fjerner tenkeparametere når den siste meldingen ikke er fra brukeren.",
    "featureDirectPaths": "Direkte oversettelsesveier",
    "featureDirectPathsDesc": "Noen formatpar (Claude → Gemini) har direkte oversettere som omgår OpenAI-huben, og produserer mer nøyaktig utdata.",
    "featureImageMapping": "Kartlegging av bildestørrelse",
    "featureImageMappingDesc": "Oversetter bildedimensjonskonvensjoner mellom API-formater (f.eks. OpenAI-detaljnivåer → Gemini-dimensjoner).",
    "input": "Inndata",
    "output": "Utgang",
    "auto": "Auto",
    "swapFormats": "Bytt formater",
    "translateAction": "Oversett",
    "clear": "Klart",
    "inputPlaceholder": "Lim inn en forespørselstekst her eller velg en mal nedenfor...",
    "exampleTemplates": "Eksempelmaler",
    "exampleTemplatesHint": "— Klikk for å laste",
    "templateLoadHint": "Malen laster forespørselen i {format}-format. Endre kildeformat for å laste inn i et annet format.",
    "compatibilityTester": "Kompatibilitetstester",
    "compatibilityReport": "Kompatibilitetsrapport",
    "testBenchDescription": "Kjør forhåndsdefinerte scenarier (Simple Chat, Tool Calling, etc.) for å bekrefte oversettelse og leverandørkompatibilitet. Velg et kildeformat og målleverandør, og kjør deretter alle testene for å se en kompatibilitetsprosent. Bruk denne for å finne hvilke funksjoner som fungerer på tvers av leverandører.",
    "targetProvider": "Målleverandør",
    "runAllTests": "Kjør alle tester",
    "runTest": "Kjør test",
    "reRun": "Kjør på nytt",
    "running": "Kjører...",
    "passed": "bestått",
    "failed": "mislyktes",
    "passedIconLabel": "✅ Bestått",
    "chunks": "biter",
    "scenarioSimpleChat": "Enkel chat",
    "scenarioToolCalling": "Verktøyanrop",
    "scenarioMultiTurn": "Multisving",
    "scenarioThinking": "Tenker",
    "scenarioSystemPrompt": "Systemmelding",
    "scenarioStreaming": "Streaming",
    "templateNames": {
      "simple-chat": "Enkel chat",
      "tool-calling": "Verktøyanrop",
      "multi-turn": "Multisving",
      "thinking": "Tenker",
      "system-prompt": "Systemmelding",
      "streaming": "Streaming",
      "vision": "Visjon",
      "schema-coercion": "Skjematvang"
    },
    "templateDescriptions": {
      "simple-chat": "Grunnleggende tekstmelding",
      "tool-calling": "Funksjon/verktøy-påkalling",
      "multi-turn": "Samtale med historien",
      "thinking": "Utvidet tenkning / resonnement",
      "system-prompt": "Komplekse systeminstruksjoner",
      "streaming": "SSE-strømforespørsel",
      "vision": "Multimodal forespørsel med bildeinngang",
      "schema-coercion": "Håndheving av strukturert utgang / JSON-skjema"
    },
    "templatePayloads": {
      "simpleChat": {
        "system": "Du er en hjelpsom assistent.",
        "userGreeting": "Hei! Hvordan har du det i dag?"
      },
      "toolCalling": {
        "userWeather": "Hvordan er været i São Paulo?",
        "toolDescription": "Få gjeldende vær for et sted",
        "cityNameDescription": "Bynavn"
      },
      "multiTurn": {
        "system": "Du er en kodeassistent.",
        "userInitial": "Skriv en funksjon for å sortere en matrise i Python.",
        "assistantExample": "Her er en enkel sorteringsfunksjon:\n\n``` python\ndef sort_array(arr):\n    return sortert(arr)\n```",
        "userFollowUp": "Gjør det nå sortert i synkende rekkefølge."
      },
      "thinking": {
        "question": "Hva er summen av de første 100 primtallene?"
      },
      "systemPrompt": {
        "systemInstruction": "Du er en senior programvareingeniør med spesialisering i distribuerte systemer. Svar konsist på spørsmål ved å bruke bransjens beste praksis. Gi alltid kodeeksempler når det er relevant. Formater svarene dine med markdown.",
        "question": "Hvordan implementerer jeg et strømbrytermønster?"
      },
      "streaming": {
        "prompt": "Fortell meg en kort historie om en robot som lærer å male."
      },
      "vision": {
        "system": "Du er en assistent som beskriver bilder nøyaktig.",
        "userPrompt": "Hva vises på dette bildet?",
        "imageUrl": "https://upload.wikimedia.org/wikipedia/commons/thumb/4/47/PNG_transparency_demonstration_1.png/600px-PNG_transparency_demonstration_1.png"
      },
      "schemaCoercion": {
        "userPrompt": "Slå opp været for Tokyo ved å bruke metriske enheter og ta med timeoversikten.",
        "toolDescription": "Hent vær for en by med strukturerte alternativer.",
        "cityDescription": "Byen for å spørre, f.eks. \"Tokyo\" eller \"New York\"."
      }
    },
    "openaiCompatibleLabel": "OpenAI-kompatibel",
    "anthropicCompatibleLabel": "Antropisk kompatibel",
    "noTemplateForFormat": "Ingen mal for dette formatet",
    "translationFailed": "Oversettelse mislyktes: {error}",
    "pipelineDebugger": "Pipeline Debugger",
    "translationPipeline": "Oversettelsesrørledning",
    "pipelineVisualization": "Visualisering av pipeline",
    "pipelineVisualizationHint": "Send en melding for å se hvordan forespørselen din flyter gjennom gjenkjenning → oversettelse → leverandøranrop.",
    "chatTesterDescription": "Send meldinger som et spesifikt klientformat og inspiser hvert trinn i oversettelsespipelinen.",
    "chatTesterFlow": "Klientforespørsel → Formatdeteksjon → OpenAI Intermediate → Leverandørformat → Svar",
    "clickStepToInspect": "Klikk på et hvilket som helst trinn for å inspisere dataene på det stadiet.",
    "clientFormat": "Klientformat",
    "provider": "Leverandør",
    "modelPlaceholder": "Velg eller skriv inn et modellnavn...",
    "sendMessageToSeePipeline": "Send en melding for å se oversettelsespipeline",
    "chatMessageHintPrefix": "Meldingen din vil bli formatert som en",
    "chatMessageHintSuffix": "forespørsel, oversatt gjennom rørledningen og sendt til den valgte leverandøren.",
    "youWithFormat": "Du ({format})",
    "assistant": "Assistent",
    "typeMessage": "Skriv inn en melding...",
    "send": "Send",
    "clientRequest": "Kundeforespørsel",
    "clientRequestDescription": "Forespørselsteksten slik klienten din ville sende den",
    "formatDetected": "Format oppdaget",
    "formatDetectedDescription": "OmniRoute oppdager automatisk API-formatet fra forespørselsstrukturen",
    "openaiIntermediate": "OpenAI Intermediate",
    "openaiIntermediateDescription": "Alle formater normaliseres først til OpenAI-format (den universelle broen)",
    "providerFormat": "Leverandørformat",
    "providerFormatDescription": "OpenAI-formatet er oversatt til leverandørens opprinnelige format",
    "providerResponse": "Leverandørens svar",
    "providerResponseRawDescription": "Råsvaret fra leverandørens API",
    "providerResponseSseDescription": "Den rå SSE-strømmen fra leverandørens API",
    "unexpectedError": "Det oppstod en uventet feil",
    "error": "Feil",
    "errorMessage": "Feil: {message}",
    "requestFailed": "Forespørselen mislyktes",
    "noTextExtracted": "(Ingen tekst er trukket ut)",
    "liveMonitorMemoryNote": "Hendelser lagres i minnet og går tapt ved omstart.",
    "liveMonitorMemoryCapNote": "Maks 200 arrangementer beholdt.",
    "eventSourcesLabel": "Eventkilder:",
    "eventSourceTranslatorPage": "• Oversetterside (chattester, testbenk)",
    "eventSourceMainPipeline": "• Hovedforespørselspipeline (CLI/IDE/API-trafikk)",
    "liveMonitorDescriptionPrefix": "Viser oversettelseshendelser når API-anrop flyter gjennom OmniRoute. Hendelser kommer fra bufferen i minnet (tilbakestilles ved omstart). Bruk",
    "liveMonitorDescriptionSuffix": ", eller eksterne API-kall for å generere hendelser.",
    "streamTransformer": "Stream Transformer",
    "modeDescriptionStreamTransformer": "Kjør chatfullføringer SSE-strømmer gjennom Responses-transformatoren.",
    "streamTransformerTitle": "Svar Stream Transformer",
    "streamTransformerDescription": "Lim inn en SSE-strøm for chatfullføringer, kjør den gjennom OmniRoutes Responses-transformator, og inspiser de utsendte responsen.*-hendelsene før du kobler en klient.",
    "loadTextSample": "Last inn teksteksempel",
    "loadToolSample": "Last verktøy-anrop prøve",
    "transformToResponses": "Transformer til svar",
    "rawChatSseInput": "Rå chat fullføringer SSE",
    "transformedResponsesSse": "Transformed Responses API SSE",
    "noResultsYet": "Ingen resultater ennå",
    "transformedEvents": "Forvandlede hendelser",
    "uniqueEventTypes": "Unike hendelsestyper",
    "inputLines": "Inngangslinjer",
    "outputLines": "Utgangslinjer",
    "transformedEventTimeline": "Forvandlet hendelsestidslinje",
    "transformerTimelineHint": "Kjør transformatoren for å inspisere utsendte respons.output_*-hendelser i rekkefølge.",
    "eventType": "Hendelsestype",
    "eventPreview": "Forhåndsvisning",
    "comboRouted": "Combo rutet",
    "uniqueEndpoints": "Unike endepunkter",
    "routeDetails": "Rutedetaljer",
    "comboBadge": "Combo",
    "routeEndpointLabel": "Endepunkt",
    "routeConnectionLabel": "Tilkobling",
    "scenarioVision": "Visjon (bildeforståelse)",
    "scenarioSchemaCoercion": "Skjematvang (strukturert utgang)",
    "techniques": "Teknikker:"
  },
  "usage": {
    "title": "Bruk",
    "loggerTab": "Logger",
    "proxyTab": "Fullmakt",
    "budgetManagement": "Budsjettstyring",
    "budgetSaved": "Budsjettgrenser lagret",
    "budgetSaveFailed": "Kunne ikke lagre budsjettet",
    "loadingBudgetData": "Laster inn budsjettdata ...",
    "noApiKeysTitle": "Ingen API-nøkler",
    "noApiKeysDescription": "Legg til API-nøkler først for å sette opp budsjettgrenser.",
    "apiKey": "API-nøkkel",
    "todaysSpend": "Dagens forbruk",
    "thisMonth": "Denne måneden",
    "setLimits": "Sett grenser",
    "dailyLimitUsd": "Daglig grense (USD)",
    "monthlyLimitUsd": "Månedlig grense (USD)",
    "warningThresholdPercent": "Advarselsterskel (%)",
    "dailyLimitPlaceholder": "f.eks. 5.00",
    "monthlyLimitPlaceholder": "f.eks. 50,00",
    "warningThresholdPlaceholder": "80",
    "saveLimits": "Lagre grenser",
    "budgetOk": "Budsjett OK — {remaining} gjenstår",
    "budgetExceeded": "Budsjettet overskredet – forespørsler kan bli blokkert",
    "totalRequests": "Totalt antall forespørsler",
    "noDataYet": "Ingen data ennå",
    "latency": "Latens",
    "latencyP50": "p50",
    "latencyP95": "s95",
    "latencyP99": "s99",
    "promptCache": "Spør Cache",
    "systemHealth": "Systemhelse",
    "entries": "Oppføringer",
    "activeCount": "{count} aktiv",
    "openCircuitBreakersDetected": "Åpne strømbrytere oppdaget",
    "hitRate": "Trefffrekvens",
    "hitsMisses": "Treffer / savner",
    "circuitBreakers": "Strømbrytere",
    "lockedIPs": "Låste IP-er",
    "lockoutsAutoRefreshHint": "Per-modell hastighetsgrense låser • Auto-refresh 10s",
    "lockedCount": "{count, plural, one {# locked} other {# locked}}",
    "timeLeft": "{time} igjen",
    "howItWorks": "Hvordan det fungerer",
    "howItWorksSubtitle": "Finn ut hvordan evalueringer validerer LLM-svarene dine",
    "define": "Definer",
    "defineStepDescription": "Opprett testtilfeller med inndatameldinger og forventede utdatakriterier ved å bruke strategier som inneholder, regulært uttrykk eller eksakt samsvar.",
    "run": "Løp",
    "runStepDescription": "Utfør testsaker mot LLM-endepunktene dine gjennom OmniRoute. Hver sak sendes som en ekte API-forespørsel.",
    "evaluate": "Vurder",
    "evaluateStepDescription": "Svar sammenlignes mot forventede kriterier. Se bestått/ikke bestått for hver sak med ventetid og detaljert tilbakemelding.",
    "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": "Klikk på en suite for å se testtilfeller, og kjør deretter for å evaluere LLM-endepunktene dine",
    "evalsLoading": "Laster inn eval suiter...",
    "noEvalSuitesFound": "Ingen Eval-suiter funnet",
    "noEvalSuitesDescription": "Eval-suiter kan defineres via API eller i kode. De tester modellutdata mot forventede resultater ved å bruke strategier som inneholder, regulært uttrykk, eksakt samsvar og tilpassede funksjoner.",
    "columnCase": "Sak",
    "columnStatus": "Status",
    "columnLatency": "Latens",
    "columnDetails": "Detaljer",
    "columnModel": "Modell",
    "columnStrategy": "Strategi",
    "columnExpected": "Forventet",
    "statsSuites": "Suiter",
    "statsTestCases": "Testtilfeller",
    "statsModels": "Modeller",
    "statsCoverage": "Dekning",
    "statsStrategiesCount": "{count} strategier",
    "evaluationStrategies": "Evalueringsstrategier",
    "modelsUnderTest": "Modeller under test",
    "searchSuitesPlaceholder": "Søk etter suiter...",
    "passSuffix": "pass",
    "casesCount": "{count, plural, one {# case} other {# cases}}",
    "runEval": "Kjør Eval",
    "runAllSuites": "Kjør alle",
    "runAllRunning": "Kjører alle...",
    "runAllProgress": "Kjører {current}/{total}: {name}",
    "runAllFailedSuites": "{count, plural, one {# suite failed} other {# suites failed}}",
    "runAllCompleted": "Kjørte {suites} suiter — {passed} bestått, {failed} mislyktes",
    "runAllCompletedWithFailures": "Kjørte {completed} suiter; {failedSuites} kunne ikke fullføres",
    "runningProgress": "Kjører {current}/{total}...",
    "passRate": "bestått rate",
    "summaryBreakdown": "{passed} bestått · {failed} mislyktes · {total} totalt",
    "passedIconLabel": "✅ Bestått",
    "failedIconLabel": "❌ Mislyktes",
    "resultPassed": "Bestått",
    "resultFailed": "Mislyktes",
    "expandResult": "Utvid resultatdetaljer",
    "collapseResult": "Skjul resultatdetaljer",
    "detailsContains": "Inneholder: \"{term}\"",
    "detailsRegex": "Regex: {pattern}",
    "detailsExpected": "Forventet: \"{expected}\"",
    "expectedOutputLabel": "Forventet utgang",
    "noResultsYet": "Ingen resultater ennå",
    "testCasesCount": "Testtilfeller ({count})",
    "noTestCasesDefined": "Ingen testtilfeller definert",
    "runEvalHint": "Klikk \"Run Eval\" for å utføre alle saker mot ditt LLM-endepunkt. Hver test sender en reell forespørsel gjennom OmniRoute.",
    "notifyNoTestCases": "Ingen testtilfeller definert for denne suiten",
    "notifyAllCasesPassed": "Alle {total} saker bestått ✅",
    "notifySomeCasesFailed": "{passed}/{total} bestått, {failed} mislyktes",
    "notifyEvalRunFailed": "Evalkjøring mislyktes",
    "notifyEvalTitle": "Eval: {name}",
    "modelEvals": "Modellvurderinger",
    "evalsHeroDescription": "Test og valider LLM-endepunktene dine ved å kjøre forhåndsdefinerte evalueringspakker. Hver suite inneholder testtilfeller som sender reelle spørsmål gjennom OmniRoute og sammenligner svar med forventede kriterier – som hjelper deg med å oppdage regresjoner, sammenligne modeller og sikre svarkvalitet på tvers av leverandører.",
    "qualityValidation": "Kvalitetsvalidering",
    "modelComparison": "Modellsammenligning",
    "regressionDetection": "Regresjonsdeteksjon",
    "latencyBenchmarks": "Latency Benchmarks",
    "modelLockouts": "Modellsperringer",
    "noLockouts": "Ingen modeller er for øyeblikket låst",
    "activeSessions": "Aktive økter",
    "noSessions": "Ingen aktive økter",
    "sessionsHint": "Økter vises når forespørsler flyter gjennom proxyen",
    "sessionsTrackedHint": "Spores via forespørsel om fingeravtrykk • Auto-refresh 5s",
    "session": "Sesjon",
    "age": "Alder",
    "requests": "Forespørsler",
    "connection": "Tilkobling",
    "durationMillisecondsShort": "{value}ms",
    "durationSecondsShort": "{value}s",
    "durationMinutesShort": "{value}m",
    "durationHoursShort": "{value}t",
    "reasonSeparator": " - ",
    "notAvailableSymbol": "-",
    "providerLimits": "Leverandørgrenser",
    "noProviders": "Ingen leverandører tilkoblet",
    "connectProvidersForQuota": "Koble til leverandører med OAuth for å spore API-kvotegrenser og bruk.",
    "accountsCount": "{count, plural, one {# account} other {# accounts}}",
    "filteredFromCount": "(filtrert fra {count})",
    "autoRefresh": "Automatisk oppdatering",
    "refreshAll": "Oppdater alle",
    "loadingQuotas": "Laster inn...",
    "account": "Konto",
    "modelQuotas": "Modellkvoter",
    "lastUsed": "Last Refreshed",
    "actions": "Handlinger",
    "refreshQuota": "Oppdater kvote",
    "today": "I dag",
    "tomorrow": "I morgen",
    "dayTimeFormat": "{day}, {time}",
    "inDuration": "i {duration}",
    "notApplicable": "N/A",
    "rawPlanWithValue": "Rå plan: {plan}",
    "noPlanFromProvider": "Ingen plan fra leverandøren",
    "noQuotaData": "Ingen kvotedata",
    "cardExpand": "__MISSING__:Expand",
    "cardCollapse": "__MISSING__:Collapse",
    "moreQuotas": "__MISSING__:+{count} more",
    "ungrouped": "Ungrouped",
    "viewFlat": "Flat",
    "viewByEnvironment": "By Environment",
    "noQuotaDataAvailable": "Ingen kvotedata tilgjengelig",
    "noAccountsForTierFilter": "Fant ingen kontoer for nivåfilter",
    "tierAll": "Alle",
    "tierEnterprise": "Enterprise",
    "tierTeam": "Team",
    "tierBusiness": "Business",
    "tierUltra": "Ultra",
    "tierPro": "Pro",
    "tierPlus": "Pluss",
    "tierFree": "Gratis",
    "tierLite": "__MISSING__:Lite",
    "tierUnknown": "Ukjent",
    "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": "Oppdater nå",
    "suiteBuilderSaveFailed": "Failed to save suite",
    "clone": "Klone",
    "exportSuite": "Eksporter",
    "importSuite": "Importer",
    "suiteExported": "Suite eksportert",
    "suiteExportFailed": "Kunne ikke eksportere pakken",
    "suiteImportReady": "Suiteimport lastet inn for gjennomgang",
    "suiteImportFailed": "Kunne ikke importere suite",
    "suiteImportInvalid": "Ugyldig eval suite JSON",
    "suiteBuilderCloneSuffix": "kopi",
    "suiteBuilderImportedSuite": "Importert 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": "Lim inn nøyaktig forventet svar",
    "suiteBuilderCaseExpectedPlaceholderRegex": "f.eks. ^\\\\s*\\\\{.*\\\\}\\\\s*$",
    "suiteBuilderCaseExpectedHintRegex": "Bruk et regulært JavaScript uten å pakke skråstreker.",
    "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 igjen",
    "quotaCutoffsColumnHelp": "Stopp forespørsler når gjenværende kvote faller til denne prosentandelen eller lavere.",
    "quotaCutoffsButtonDefault": "Standard",
    "quotaCutoffsButtonHelp": "Rediger minimum gjenværende kvoteavskjæringer for denne kontoen.",
    "quotaCutoffsButtonDisabled": "Ingen kvotevinduer er tilgjengelige for denne kontoen ennå.",
    "quotaCutoffsTitle": "Kvoteavskjæringer for {name} ({provider})",
    "quotaCutoffsExplainer": "Overstyr minimum gjenværende kvoteprosent der denne kontoen slutter å velges for hvert kvotevindu. La stå tomt for å arve standardleverandøren.",
    "quotaCutoffsDefaultHint": "Standard gjenværende minimum: {default}%",
    "quotaCutoffsResetAll": "Tilbakestill alle",
    "quotaCutoffsNoWindows": "Ingen kvotevinduer er tilgjengelige for denne kontoen ennå.",
    "quotaThresholdInvalid": "Skriv inn et helt tall fra 0 til 100.",
    "budgetKpiToday": "I dag",
    "budgetKpiThisMonth": "Denne måneden",
    "budgetKpiProjEom": "Proj EOM",
    "budgetKpiBlocked": "Blokkert",
    "budgetKpiAtRisk": "I faresonen",
    "budgetKpiActiveKeys": "Aktive nøkler",
    "budgetSearchKeysPlaceholder": "Søk nøkler...",
    "budgetSortPctUsed": "Sorter: % Brukt ↓",
    "budgetSortTodayDollar": "Sorter: I dag $ ↓",
    "budgetSortMonthDollar": "Sorter: Måned $ ↓",
    "budgetSortNameAZ": "Sorter: Navn (A–Å)",
    "budgetColDailyLim": "Daglig lim",
    "budgetColMonthlyLim": "Månedlig lim",
    "budgetColUsedPct": "Brukt %",
    "budgetLoading": "Laster inn …",
    "budgetNoKeysMatch": "Ingen nøkler samsvarer med filtre",
    "budgetLinearExtrapolation": "lineær ekstrapolering",
    "budgetThisMonthSoFar": "Denne måneden så langt",
    "budgetProjectedEndOfMonth": "Anslått slutten av måneden",
    "budgetByProvider": "etter leverandør",
    "budgetDailyDollar": "Daglig $",
    "budgetWeeklyDollar": "Ukentlig $",
    "budgetMonthlyDollar": "Månedlig $",
    "budgetWarnAtPct": "Advarsel ved %",
    "quotaAlerts": "Kvotevarsler",
    "quotaTableRefreshing": "⟳ Forfriskende...",
    "noSpendLast30Days": "Ingen forbruk de siste 30 dagene",
    "updatedShort": "__MISSING__:Updated",
    "lastRefreshed": "__MISSING__:Last refreshed",
    "providerQuota": "__MISSING__:Provider Quota",
    "providerQuotaHomeHint": "__MISSING__:Live status across connected accounts"
  },
  "modals": {
    "waitingAuth": "Venter på autorisasjon",
    "verificationUrl": "Verifiserings-URL",
    "yourCode": "Din kode",
    "remoteAccess": "Fjerntilgang:",
    "connectedSuccess": "Tilkoblet vellykket!",
    "connectionFailed": "Tilkobling mislyktes",
    "chooseAuthMethod": "Velg autentiseringsmetode:",
    "awsBuilderId": "AWS Builder ID",
    "awsIamIdentity": "AWS IAM Identity Center",
    "googleAccount": "Google-konto",
    "githubAccount": "GitHub-konto",
    "importToken": "Importer token",
    "pasteToken": "Lim inn oppdateringstoken fra Kiro IDE.",
    "awsRegion": "AWS-regionen",
    "autoDetecting": "Automatisk oppdager tokens...",
    "readingFromCache": "Leser fra AWS SSO-cache",
    "readingFromCursor": "Leser fra Cursor IDE-databasen",
    "initializing": "Initialiserer...",
    "pricingConfig": "Priskonfigurasjon",
    "loadingPricing": "Laster inn prisdata ...",
    "pricingRatesFormat": "Prisformat",
    "noPricingData": "Ingen prisdata tilgjengelig",
    "noModelsFound": "Ingen modeller funnet"
  },
  "loggers": {
    "allProviders": "Alle leverandører",
    "allModels": "Alle modeller",
    "allAccounts": "Alle kontoer",
    "allApiKeys": "Alle API-nøkler",
    "allTypes": "Alle typer",
    "allLevels": "Alle nivåer",
    "modelAZ": "Modell A-Z",
    "modelZA": "Modell Z-A",
    "loadingLogs": "Laster inn logger...",
    "loadingProxyLogs": "Laster inn proxy-logger ...",
    "noLogEntries": "Ingen loggoppføringer funnet",
    "noPayloadData": "Ingen nyttelastdata tilgjengelig for denne loggoppføringen.",
    "proxyEvent": "Proxy-hendelse",
    "proxy": "Fullmakt",
    "level": "Nivå",
    "directNative": "Direkte (innfødt)",
    "combo": "Combo",
    "inputTokens": "jeg:",
    "outputTokens": "O:"
  },
  "stats": {
    "usageOverview": "Bruksoversikt",
    "outputTokens": "Output tokens",
    "totalCost": "Total kostnad",
    "usageByModel": "Bruk etter modell",
    "usageByAccount": "Bruk etter konto",
    "failedToLoad": "Kunne ikke laste inn bruksstatistikk.",
    "tokenHealth": "Token Health",
    "totalOAuth": "Totalt OAuth",
    "healthy": "Sunn",
    "warning": "Advarsel",
    "errored": "Feil",
    "lastCheck": "Siste sjekk",
    "noData": "Ingen data",
    "share": "Del",
    "unableToLoad": "Kan ikke laste inn systemberegninger",
    "product": "Produkt",
    "resources": "Ressurser",
    "company": "Selskapet"
  },
  "auth": {
    "welcome": "Velkommen",
    "signIn": "Logg på",
    "enterPassword": "Skriv inn passordet ditt for å fortsette",
    "password": "Passord",
    "unifiedProxy": "Unified AI API Proxy",
    "unifiedAiApiProxy": "Unified AI API Proxy",
    "unifiedAiApiProxyDesc": "Rut forespørsler til flere AI-leverandører gjennom ett enkelt endepunkt. Lastbalansering, failover og brukssporing innebygd.",
    "passwordNotEnabled": "Passordbeskyttelse er ikke aktivert",
    "loading": "Laster inn...",
    "invalidPassword": "Ugyldig passord",
    "errorOccurredRetry": "Det oppsto en feil. Vennligst prøv igjen.",
    "configureInstance": "La oss få konfigurert OmniRoute-forekomsten",
    "runOnboardingWizard": "Kjør onboarding-veiviseren for å sette opp passordet ditt og koble til din første AI-leverandør.",
    "startOnboarding": "Start onboarding",
    "secureYourInstance": "Sikre din forekomst",
    "setPasswordDescription": "Angi et passord for å beskytte dashbordet og sikre API-endepunktene dine mot uautorisert tilgang.",
    "configurePassword": "Konfigurer passord",
    "continue": "Fortsett",
    "windowWillClose": "Dette vinduet lukkes automatisk...",
    "closeTabNow": "Du kan lukke denne fanen nå.",
    "copyUrlManual": "Vennligst kopier URL-en fra adressefeltet og lim den inn i applikasjonen.",
    "accessDeniedDescription": "Du har ikke tillatelse til å få tilgang til denne ressursen. Sjekk API-nøkkelen din eller kontakt administratoren.",
    "goToDashboard": "Gå til Dashboard",
    "featureMultiProviderTitle": "Multileverandør",
    "featureMultiProviderDesc": "OpenAI, Anthropic, Google og mer",
    "featureLoadBalancingTitle": "Lastbalansering",
    "featureLoadBalancingDesc": "Distribuer forespørsler intelligent",
    "featureUsageTrackingTitle": "Brukssporing",
    "featureUsageTrackingDesc": "Overvåk kostnader og tokens",
    "resetPassword": "Tilbakestill passord",
    "resetDescription": "Velg en metode for å gjenopprette tilgangen til dashbordet",
    "stopServer": "Stopp OmniRoute-serveren",
    "processing": "Behandler...",
    "pleaseWait": "Vennligst vent mens vi fullfører autorisasjonen.",
    "authSuccess": "Godkjenning vellykket!",
    "copyUrl": "Kopier denne nettadressen",
    "accessDenied": "Tilgang nektet",
    "methodCliTitle": "Metode 1: CLI-tilbakestilling",
    "methodCliDescription": "Kjør følgende kommando på serveren der OmniRoute kjører:",
    "methodCliHint": "Dette vil be deg om å angi et nytt passord. Serveren må stoppes først.",
    "methodManualTitle": "Metode 2: Manuell tilbakestilling",
    "methodManualDescription": "Slett passordet fra databasen og sett et nytt ved oppstart:",
    "setPasswordInYour": "Sett et nytt passord i din",
    "fileLabelSuffix": "fil:",
    "newPasswordPlaceholder": "ditt_nye_passord",
    "deleteSettingsFile": "Slett",
    "orRemovePasswordHashField": "eller fjern passordHash-feltet",
    "restartServerWithNewPassword": "Start serveren på nytt - den vil bruke det nye passordet",
    "backToLogin": "Tilbake til pålogging",
    "forgotPassword": "Glemt passord?",
    "defaultPasswordHint": "Default password: CHANGEME (unless INITIAL_PASSWORD was set)",
    "Authorization": "Autorisasjon",
    "Content-Disposition": "Innhold-Disposisjon",
    "waitingForAuthorization": "Venter på autorisasjon...",
    "waitingForGoogleAuthorization": "Venter på Google-autorisasjon...",
    "waitingForOpenAIAuthorization": "Venter på OpenAI-godkjenning...",
    "waitingForAntigravityAuthorization": "Venter på antigravity-autorisasjon...",
    "waitingForQoderAuthorization": "Venter på Qoder-autorisasjon...",
    "exchangingCodeForTokens": "Utveksler kode for 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": "Bytt meny",
    "featuresLink": "Funksjoner",
    "docsLink": "Dokumenter",
    "github": "GitHub",
    "versionLive": "v1.0 er nå live",
    "oneEndpoint": "Ett endepunkt for",
    "allProviders": "Alle AI-leverandører",
    "heroDescription": "AI-endepunktproxy med web-dashboard - En JavaScript-port av CLIProxyAPI. Fungerer sømløst med Claude Code, OpenAI Codex, Cline, RooCode og andre CLI-verktøy.",
    "getStarted": "Kom i gang",
    "viewOnGithub": "Se på GitHub",
    "powerfulFeatures": "Kraftige funksjoner",
    "featuresSubtitle": "Alt du trenger for å administrere AI-infrastrukturen din på ett sted, bygget for skala.",
    "featureUnifiedEndpointTitle": "Samlet endepunkt",
    "featureUnifiedEndpointDesc": "Få tilgang til alle leverandører via en enkelt standard API-URL.",
    "featureEasySetupTitle": "Enkelt oppsett",
    "featureEasySetupDesc": "Kom i gang på få minutter med npx-kommandoen.",
    "featureModelFallbackTitle": "Modell Fallback",
    "featureModelFallbackDesc": "Bytt leverandør automatisk ved feil eller høy ventetid.",
    "featureUsageTrackingTitle": "Brukssporing",
    "featureUsageTrackingDesc": "Detaljert analyse og kostnadsovervåking på tvers av alle modeller.",
    "featureOAuthApiKeysTitle": "OAuth- og API-nøkler",
    "featureOAuthApiKeysDesc": "Administrer legitimasjon på en sikker måte i ett hvelv.",
    "featureCloudSyncTitle": "Cloud Sync",
    "featureCloudSyncDesc": "Synkroniser konfigurasjonene dine på tvers av enheter umiddelbart.",
    "featureCliSupportTitle": "CLI-støtte",
    "featureCliSupportDesc": "Fungerer med Claude Code, Codex, Cline, Cursor og mer.",
    "featureDashboardTitle": "Dashbord",
    "featureDashboardDesc": "Visuelt dashbord for trafikkanalyse i sanntid.",
    "howItWorks": "Hvordan OmniRoute fungerer",
    "howItWorksDescription": "Data flyter sømløst fra applikasjonen din gjennom vårt intelligente rutinglag til den beste leverandøren for jobben.",
    "howItWorksStep1Title": "1. CLI og SDK-er",
    "howItWorksStep1Description": "Forespørslene dine starter fra favorittverktøyene dine eller vår enhetlige SDK. Bare endre basis-URLen.",
    "howItWorksStep2Title": "2. OmniRoute Hub",
    "howItWorksStep2Description": "Motoren vår analyserer forespørselen, sjekker leverandørens helse og ruter for lavest ventetid eller kostnad.",
    "howItWorksStep3Title": "3. AI-leverandører",
    "howItWorksStep3Description": "Forespørselen oppfylles av OpenAI, Anthropic, Gemini eller andre umiddelbart.",
    "getStartedIn30Seconds": "Kom i gang på 30 sekunder",
    "getStartedDescription": "Installer OmniRoute, konfigurer leverandørene dine via nettdashbordet, og begynn å rute AI-forespørsler.",
    "installOmniRoute": "Installer OmniRoute",
    "installStepDescription": "Kjør npx-kommandoen for å starte serveren umiddelbart",
    "openDashboard": "Åpne Dashboard",
    "openDashboardStepDescription": "Konfigurer leverandører og API-nøkler via webgrensesnitt",
    "routeRequests": "Ruteforespørsler",
    "routeRequestsStepDescription": "Pek CLI-verktøyene dine til {endpoint}",
    "terminal": "terminal",
    "copy": "Kopier",
    "copied": "✓ Kopiert",
    "startingOmniRoute": "Starter OmniRoute...",
    "serverRunningOnLabel": "Server kjører på",
    "dashboardLabel": "Dashbord",
    "readyToRoute": "Klar til rute! ✓",
    "configureProvidersNote": "📝 Konfigurer leverandører i dashbordet eller bruk miljøvariabler",
    "dataLocation": "Dataplassering:",
    "dataLocationMacLinux": " macOS/Linux:",
    "dataLocationWindows": " Windows:",
    "product": "Produkt",
    "dashboardLink": "Dashbord",
    "changelog": "Endringslogg",
    "resources": "Ressurser",
    "documentation": "Dokumentasjon",
    "npm": "NPM",
    "legal": "Lovlig",
    "mitLicense": "MIT-lisens",
    "footerTagline": "Det enhetlige endepunktet for AI-generering. Koble til, rute og administrer AI-leverandørene dine på en enkel måte.",
    "copyright": "© {year} OmniRoute. Alle rettigheter forbeholdt.",
    "flowToolClaudeCode": "Claude Code",
    "flowToolOpenAICodex": "OpenAI Codex",
    "flowToolCline": "Cline",
    "flowToolCursor": "Markør",
    "flowProviderOpenAI": "OpenAI",
    "flowProviderAnthropic": "Antropisk",
    "flowProviderGemini": "Tvillingene",
    "flowProviderGithubCopilot": "GitHub Copilot",
    "interactiveDiagram": "Interaktivt diagram synlig på skrivebordet",
    "ctaTitle": "Klar til å forenkle AI-infrastrukturen din?",
    "ctaDescription": "Bli med utviklere som strømlinjeformer AI-integrasjonene sine med OmniRoute. Åpen kildekode og gratis å starte.",
    "startFree": "Start gratis",
    "readDocumentation": "Les dokumentasjon"
  },
  "docs": {
    "title": "Dokumentasjon",
    "quickStart": "Rask start",
    "deploymentGuides": "Implementeringsveiledninger",
    "features": "Funksjoner",
    "supportedProviders": "Støttede leverandører",
    "supportedProvidersToc": "Leverandører",
    "commonUseCases": "Vanlige brukstilfeller",
    "clientCompatibility": "Klientkompatibilitet",
    "protocolsToc": "Protocols",
    "apiReference": "API-referanse",
    "managementApiReference": "Management API Reference",
    "managementApiDescription": "Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.",
    "method": "Metode",
    "path": "Sti",
    "notes": "Notater",
    "modelPrefixes": "Modellprefikser",
    "prefix": "Prefiks",
    "troubleshooting": "Feilsøking",
    "supportsChat": "Støtter både chat- og svarendepunkter.",
    "oauthAutoRefresh": "OAuth-tilkobling med automatisk tokenoppdatering.",
    "fullStreaming": "Full streamingstøtte for alle modeller.",
    "docsLabel": "Dokumenter",
    "docsHeroDescription": "AI-gateway for LLM-er med flere leverandører. Ett endepunkt for OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor og mer enn 20 leverandører.",
    "openDashboard": "Åpne Dashboard",
    "endpointPage": "Sluttpunktside",
    "github": "GitHub",
    "reportIssue": "Rapporter problem",
    "onThisPage": "På denne siden",
    "documentationVersion": "Dokumentasjon - v{version}",
    "quickStartStep1Title": "1. Installer og kjør",
    "quickStartStep1Prefix": "Løp",
    "quickStartStep1Middle": "eller klone fra GitHub og kjøre",
    "quickStartStep2Title": "2. Opprett API-nøkkel",
    "quickStartStep2Text": "Gå til endepunkt -> Registrerte nøkler. Generer én nøkkel per miljø.",
    "quickStartStep3Title": "3. Koble til leverandører",
    "quickStartStep3Text": "Legg til leverandørkontoer via OAuth-pålogging, API-nøkkel eller gratis-lags automatisk tilkobling.",
    "quickStartStep4Title": "4. Angi klientbase-URL",
    "quickStartStep4Prefix": "Pek IDE- eller API-klienten din til",
    "quickStartStep4Suffix": "Bruk for eksempel leverandørprefiks",
    "deploySetupTitle": "Oppsettveiledning",
    "deploySetupText": "Trinn-for-trinn-installasjon, miljøkonfigurasjon og førstegangsgjennomgang for OmniRoute.",
    "deployElectronTitle": "Electron Desktop",
    "deployElectronText": "Kjør OmniRoute som et innebygd skrivebordsprogram på Windows, macOS og Linux.",
    "deployDockerTitle": "Docker",
    "deployDockerText": "Containerisert distribusjon med Docker Compose; klar for produksjonsstabler og Kubernetes.",
    "deployVmTitle": "Virtuell maskin",
    "deployVmText": "Selvvert på hvilken som helst Linux VM. Inkluderer systemenhet, loggrotasjon og backupverktøy.",
    "deployFlyTitle": "Fly.io",
    "deployFlyText": "Distribuer til Fly.io edge runtime med én fly.toml og en enkelt distribusjonskommando.",
    "deployPwaTitle": "PWA",
    "deployPwaText": "Installer OmniRoute som en progressiv nettapp på Android-, iOS- og stasjonære nettlesere.",
    "deployTermuxTitle": "Termux (Android)",
    "deployTermuxText": "Run OmniRoute headless on Android via Termux. Access the dashboard from your mobile browser.",
    "featureRoutingTitle": "Ruting for flere leverandører",
    "featureRoutingText": "Rut forespørsler til 30+ AI-leverandører gjennom ett enkelt OpenAI-kompatibelt endepunkt. Støtter chat, svar, lyd og bilde-APIer.",
    "featureCombosTitle": "Kombinasjoner og balansering",
    "featureCombosText": "Lag modellkombinasjoner med reservekjeder og balanseringsstrategier: round-robin, prioritet, tilfeldig, minst brukt og kostnadsoptimalisert.",
    "featureUsageTitle": "Bruk og kostnadssporing",
    "featureUsageText": "Sanntids-tokentelling, kostnadsberegning per leverandør/modell og detaljert bruksoppdeling etter API-nøkkel og konto.",
    "featureAnalyticsTitle": "Analytics Dashboard",
    "featureAnalyticsText": "Visuell analyse med diagrammer for forespørsler, tokens, feil, ventetid, kostnader og modellpopularitet over tid.",
    "featureHealthTitle": "Helseovervåking",
    "featureHealthText": "Live helsesjekker, leverandørstatus, strømbrytertilstander og automatisk hastighetsgrensedeteksjon med eksponentiell tilbakekobling.",
    "featureCliTitle": "CLI-verktøy",
    "featureCliText": "Administrer IDE-konfigurasjoner, eksporter/importer sikkerhetskopier, oppdag kodex-profiler og konfigurer innstillinger fra dashbordet.",
    "featureSecurityTitle": "Sikkerhet og retningslinjer",
    "featureSecurityText": "API-nøkkelautentisering, IP-filtrering, prompt-injeksjonsvakt, domenepolicyer, øktadministrasjon og revisjonslogging.",
    "featureCloudSyncTitle": "Cloud Sync",
    "featureCloudSyncText": "Synkroniser konfigurasjonen din med Cloudflare Workers for ekstern tilgang med kryptert legitimasjon og automatisk failover.",
    "providersAcrossConnectionTypes": "{count}-leverandører på tvers av tre tilkoblingstyper.",
    "manageProviders": "Administrer leverandører",
    "providersCount": "{count} leverandører",
    "providerTypeFree": "Gratis lag",
    "providerTypeOAuth": "OAuth",
    "providerTypeApiKey": "API-nøkkel",
    "useCaseSingleEndpointTitle": "Enkelt endepunkt for mange leverandører",
    "useCaseSingleEndpointText": "Pek klienter til én basis-URL og rute etter modellprefiks (for eksempel: gh/, cc/, kr/, openai/).",
    "useCaseFallbackTitle": "Fallback og modellbytte med kombinasjoner",
    "useCaseFallbackText": "Lag kombinasjonsmodeller i Dashboard og hold klientkonfigurasjonen stabil mens leverandørene roterer internt.",
    "useCaseUsageVisibilityTitle": "Bruk, kostnader og feilsøkingssynlighet",
    "useCaseUsageVisibilityText": "Spor tokens og kostnader etter leverandør, konto og API-nøkkel i fanene Bruk og Analytics.",
    "clientCherryStudioTitle": "Cherry Studio",
    "baseUrlLabel": "Base URL",
    "chatEndpointLabel": "Chat-endepunkt",
    "modelRecommendationLabel": "Modellanbefaling: eksplisitt prefiks",
    "clientCodexTitle": "Codex / GitHub Copilot-modeller",
    "clientCodexBullet1": "Bruk modell-ID-er med",
    "clientCodexBullet2": "Codex-familiemodeller rutes automatisk til",
    "clientCodexBullet3": "Ikke-Codex-modeller fortsetter",
    "clientCursorTitle": "Markør IDE",
    "clientCursorBullet1": "Bruk",
    "clientCursorBullet1Suffix": "prefiks for Cursor-modeller.",
    "clientCursorBullet2": "OAuth-tilkobling - logg på fra siden Leverandører.",
    "clientClaudeTitle": "Claude Code / Antigravity",
    "clientClaudeBullet1Prefix": "Bruk",
    "clientClaudeBullet1Middle": "(Claude) eller",
    "clientClaudeBullet1Suffix": "(Antigravity) prefiks.",
    "clientWindsurfTitle": "Vindsurfing",
    "clientWindsurfBullet1": "Bruk OmniRoute som en OpenAI-kompatibel basis-URL og behold eksplisitte leverandørprefikser for deterministisk ruting.",
    "clientWindsurfBullet2": "Pek modeller til `/v1/chat/completions` for generell trafikk og bevar `/v1/responses` for flyter i Codex-stil.",
    "clientWindsurfBullet3": "Bruk Dashboard -> CLI Tools for en ferdig konfigurasjonsguide for Windsurf.",
    "clientClineTitle": "Cline",
    "clientClineBullet1": "Cline fungerer best med eksplisitte leverandør-/modellprefikser, slik at ruteren aldri trenger å gjette backend.",
    "clientClineBullet2": "Bruk `/v1/chat/completions` for generelle modeller og gjenbruk den samme OmniRoute-grunnadressen på tvers av forskjellige kontoer.",
    "clientClineBullet3": "Bruk Providers-dashbordet til å validere OAuth/API-nøkkel før du feilsøker Cline-kjøretidsproblemer.",
    "clientKimiTitle": "Kimi koding",
    "clientKimiBullet1": "Bruk OmniRoute som en stabil basis-URL mens du roterer kontoer eller leverandørkombinasjoner under.",
    "clientKimiBullet2": "Foretrekk prefiksmodeller i kodingsflyter, slik at reserve- og revisjonsspor forblir eksplisitte.",
    "clientKimiBullet3": "Bruk `/v1/responses` når du vil ha native Responses-stil ruting for verktøybrukende klienter.",
    "protocolsTitle": "Protocols: MCP & A2A",
    "protocolsDescription": "OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.",
    "protocolMcpTitle": "MCP (Model Context Protocol)",
    "protocolMcpDesc": "Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.",
    "protocolMcpStep1": "Start MCP transport with `omniroute --mcp`.",
    "protocolMcpStep2": "Point your MCP client to stdio transport.",
    "protocolMcpStep3": "Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.",
    "protocolA2aTitle": "A2A (Agent2Agent)",
    "protocolA2aDesc": "Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.",
    "protocolA2aStep1": "Read `/.well-known/agent.json` for agent discovery.",
    "protocolA2aStep2": "Send `message/send` or `message/stream` requests to `POST /a2a`.",
    "protocolA2aStep3": "Manage task lifecycle with `tasks/get` and `tasks/cancel`.",
    "protocolTroubleshootingTitle": "Protocol Troubleshooting",
    "protocolTroubleshooting1": "If MCP status is offline, verify the stdio process is running and heartbeat file is updating.",
    "protocolTroubleshooting2": "If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.",
    "protocolTroubleshooting3": "Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.",
    "endpointChatNote": "OpenAI-kompatibelt chat-endepunkt (standard).",
    "endpointResponsesNote": "Responses API-endepunkt (Codex, o-serien).",
    "endpointModelsNote": "Modellkatalog for alle tilkoblede leverandører.",
    "endpointAudioNote": "Lydtranskripsjon (Deepgram, AssemblyAI).",
    "endpointSpeechNote": "Tekst-til-tale generering (ElevenLabs, OpenAI TTS).",
    "endpointEmbeddingsNote": "Generering av tekstinnbygging (OpenAI, Cohere, Voyage).",
    "endpointImagesNote": "Bildegenerering (NanoBanana).",
    "endpointRewriteChatNote": "Omskrivehjelper for klienter uten /v1.",
    "endpointRewriteResponsesNote": "Omskriv hjelper for svar uten /v1.",
    "endpointRewriteModelsNote": "Omskrivehjelper for modelloppdagelse uten /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": "Bruk leverandørprefikset før modellnavnet for å rute til en bestemt leverandør. Eksempel:",
    "modelPrefixesDescriptionEnd": "ruter til GitHub Copilot.",
    "provider": "Leverandør",
    "type": "Type",
    "troubleshootingModelRouting": "Hvis klienten mislykkes med modellruting, bruk eksplisitt leverandør/modell (for eksempel: gh/gpt-5.1-codex).",
    "troubleshootingAmbiguousModels": "Hvis du får tvetydige modellfeil, velger du et leverandørprefiks i stedet for en bare modell-ID.",
    "troubleshootingCodexFamily": "For GitHub Codex-familiemodeller, behold modellen som gh/codex-model; ruteren velger /responser automatisk.",
    "troubleshootingTestConnection": "Bruk Dashboard > Leverandører > Test tilkobling før du tester fra IDE-er eller eksterne klienter.",
    "troubleshootingCircuitBreaker": "Hvis en leverandør viser at strømbryteren er åpen, vent på nedkjøling eller sjekk helsesiden for detaljer.",
    "troubleshootingOAuth": "For OAuth-leverandører, autentiser på nytt hvis tokens utløper. Sjekk leverandørkortets statusindikator.",
    "endpointCompletionsNote": "Eldre fullføringsendepunkt for tekstgenerering.",
    "endpointModerationsNote": "Moderering av innhold og sikkerhetsklassifisering.",
    "endpointRerankNote": "Rerangering av dokument for gjenvinningsutvidet generasjon (Cohere, Jina).",
    "endpointSearchNote": "Nettsøk med 5 leverandører (Serper, Brave, Exa, Tavily, Perplexity).",
    "endpointSearchAnalyticsNote": "Analytics og beregninger for søkeforespørsler.",
    "endpointVideoNote": "Videogenerering (arbeidsflyter for ComfyUI, SD WebUI).",
    "endpointMusicNote": "Musikkgenerering via ComfyUI-arbeidsflyter.",
    "endpointMessagesNote": "Antropisk-native meldinger endepunkt.",
    "endpointCountTokensNote": "Telle tokens for en gitt meldingsnyttelast.",
    "endpointFilesNote": "Filopplasting for multimodale innganger.",
    "endpointBatchesNote": "Batchbehandling for bulk API-forespørsler.",
    "endpointWsNote": "WebSocket-endepunkt for sanntidsstrømming.",
    "mgmtProvidersListNote": "Liste over alle registrerte leverandørforbindelser.",
    "mgmtProvidersCreateNote": "Opprett en ny leverandørforbindelse.",
    "mgmtProvidersUpdateNote": "Oppdater en eksisterende leverandørtilkobling.",
    "mgmtProvidersDeleteNote": "Slett en leverandørtilkobling.",
    "mgmtProvidersTestNote": "Test tilkobling og autentisering for en leverandør.",
    "mgmtProvidersModelsNote": "Liste over tilgjengelige modeller for en spesifikk leverandør.",
    "mgmtSettingsGetNote": "Hent gjeldende programinnstillinger.",
    "mgmtSettingsUpdateNote": "Oppdater applikasjonsinnstillinger.",
    "mgmtPayloadRulesGetNote": "Få regler for transformasjon av nyttelast.",
    "mgmtPayloadRulesUpdateNote": "Oppdater reglene for transformasjon av nyttelast.",
    "mcpToolsTitle": "MCP-verktøy",
    "mcpToolsDescription": "OmniRoute viser {count} verktøy via Model Context Protocol for agentorkestrering.",
    "mcpToolsCount": "{count} verktøy",
    "mcpToolsToc": "MCP-verktøy",
    "mcpToolsRoutingTitle": "Ruting og oppdagelse",
    "mcpToolsRoutingDesc": "Helsesjekker, kombinasjonsadministrasjon, kvoteovervåking, kostnadsrapportering og modellkatalogtilgang.",
    "mcpToolsOperationsTitle": "Drift og strategi",
    "mcpToolsOperationsDesc": "Rutesimulering, budsjettvakter, strategibytte, motstandsdyktighetsprofiler og leverandørberegninger.",
    "mcpToolsCacheTitle": "Bufferbehandling",
    "mcpToolsCacheDesc": "Se cache-statistikk og tøm semantiske eller signatur-cacher.",
    "mcpToolsCompressionTitle": "Kompresjonsmotorer",
    "mcpToolsCompressionDesc": "Konfigurer RTK/Brotli-komprimering, bytt motorer og inspiser kompresjonsanalyse etter kombinasjon.",
    "mcpToolsOneProxyTitle": "1 Proxy / Tunneler",
    "mcpToolsOneProxyDesc": "Administrer utgående proxyer, roter bolig-IP-er og inspiser proxy-helsen.",
    "mcpToolsMemoryTitle": "Minne",
    "mcpToolsMemoryDesc": "Søk, legg til og slett vedvarende konversasjonsminneoppføringer.",
    "mcpToolsSkillsTitle": "Ferdigheter",
    "mcpToolsSkillsDesc": "List, aktiver, utfør og overvåk egendefinerte ferdighetsutførelser.",
    "featureAutoComboTitle": "Auto-kombo",
    "featureAutoComboText": "Lag automatisk optimaliserte kombinasjoner basert på tilkoblede leverandører, bruksmønstre og modellegenskaper.",
    "featureSearchTitle": "Nettsøk",
    "featureSearchText": "Integrert nettsøk med 5 leverandører (Serper, Brave, Exa, Tavily, Perplexity) inkludert analyser og kostnadssporing.",
    "featureMemoryTitle": "Minnesystem",
    "featureMemoryText": "Vedvarende samtaleminne med ekstraksjon, injeksjon, gjenfinning og oppsummering på tvers av økter.",
    "featureSkillsTitle": "Ferdighetsrammeverk",
    "featureSkillsText": "Utvidbart ferdighetssystem med innebygde og tilpassede ferdigheter, sandkasseutførelse, forespørselsavskjæring og kontekstinjeksjon.",
    "featureAcpTitle": "Agentkommunikasjon",
    "featureAcpText": "Agent Communication Protocol (ACP)-register for administrasjon av agent-til-agent arbeidsflyter og verktøyorkestrering.",
    "protocolAcpTitle": "ACP (agentkommunikasjon)",
    "protocolAcpDesc": "Registrer og administrer agenter via ACP-registeret for kommunikasjon mellom agenter og deling av verktøy.",
    "protocolAcpStep1": "Naviger til Dashboard → Agenter for å se registrerte ACP-agenter.",
    "protocolAcpStep2": "Registrer nye agenter med muligheter og endepunktkonfigurasjon.",
    "protocolAcpStep3": "Bruk CLI-verktøy for å konfigurere agentkommunikasjonskanaler."
  },
  "legal": {
    "privacyPolicy": "Personvernerklæring",
    "termsOfService": "Vilkår for bruk",
    "providerConfigurations": "Leverandørkonfigurasjoner",
    "apiKeys": "API-nøkler",
    "usageLogs": "Brukslogger",
    "applicationSettings": "Applikasjonsinnstillinger",
    "viewExportAnalytics": "Se og eksporter bruksanalyse",
    "clearHistory": "Tøm brukshistorikken når som helst",
    "configureRetention": "Konfigurer retningslinjer for loggoppbevaring",
    "backupRestore": "Sikkerhetskopier og gjenopprett databasen",
    "privacyMetadataTitle": "Personvernerklæring | OmniRoute",
    "privacyMetadataDescription": "Personvernregler for OmniRoute AI API-proxy-ruteren.",
    "termsMetadataTitle": "Vilkår for bruk | OmniRoute",
    "termsMetadataDescription": "Vilkår for bruk for OmniRoute AI API-proxy-ruteren.",
    "backToHome": "Tilbake til hjemmet",
    "lastUpdated": "Sist oppdatert: {date}",
    "policyLastUpdatedDate": "13. februar 2026",
    "listSeparator": "-",
    "questionsVisit": "Spørsmål? Besøk vår",
    "githubRepository": "GitHub-depot",
    "privacySection1Title": "1. Lokal-først arkitektur",
    "privacySection1Text": "OmniRoute er designet som en lokal først-applikasjon. All databehandling og lagring skjer utelukkende på maskinen din. Det er ingen sentralisert server som samler inn informasjonen din.",
    "privacySection2Title": "2. Data vi lagrer",
    "privacyDataStoredIn": "Følgende data lagres lokalt i",
    "privacyDataProviderConfigurationsDesc": "tilkoblings-URLer, leverandørtyper og prioritetsinnstillinger",
    "privacyDataApiKeysDesc": "kryptert og lagret lokalt for autentisering med AI-leverandører",
    "privacyDataUsageLogsDesc": "antall forespørsler, tokenbruk, modellnavn, tidsstempler og responstider",
    "privacyDataApplicationSettingsDesc": "temapreferanser, rutingstrategi og kombinasjonskonfigurasjoner",
    "privacySection3Title": "3. Ingen telemetri",
    "privacySection3Text": "OmniRoute samler ikke inn telemetri, analyser eller krasjrapporter. Ingen data sendes til oss eller noen tredjepart. Dine bruksmønstre, API-kall og konfigurasjoner forblir helt private.",
    "privacySection4Title": "4. Tredjeparts AI-leverandører",
    "privacySection4Text": "Når du foretar API-anrop gjennom OmniRoute, blir forespørslene dine videresendt til AI-leverandørene du har konfigurert (for eksempel: OpenAI, Anthropic, Google). Disse leverandørene har sine egne retningslinjer for personvern som styrer hvordan de håndterer dataene dine. Vennligst se gjennom:",
    "privacyOpenAiPolicy": "OpenAI personvernerklæring",
    "privacyAnthropicPolicy": "Antropiske retningslinjer for personvern",
    "privacyGooglePolicy": "Googles personvernregler",
    "privacySection5Title": "5. Cloud Sync (valgfritt)",
    "privacySection5Text": "Hvis du aktiverer den valgfrie skysynkroniseringsfunksjonen, kan leverandørkonfigurasjoner og API-nøkler overføres til et konfigurert skyendepunkt. Denne funksjonen er deaktivert som standard og krever eksplisitt opt-in.",
    "privacySection6Title": "6. Logging",
    "privacyLoggingIntro": "Forespørselslogger kan konfigureres gjennom dashbordinnstillingene. Du kan:",
    "privacySection7Title": "7. Dine rettigheter",
    "privacySection7TextStart": "Siden all data er lagret lokalt, har du full kontroll. Du kan slette dataene dine når som helst ved å fjerne",
    "privacySection7TextEnd": "katalogen eller bruke funksjonene for sikkerhetskopiering og gjenoppretting av databasen i dashbordet.",
    "termsSection1Title": "1. Oversikt",
    "termsSection1Text": "OmniRoute er en lokal-første AI API-proxy-ruter som fungerer utelukkende på maskinen din. Den ruter forespørsler til flere AI-leverandører med lastbalansering, failover og brukssporing.",
    "termsSection2Title": "2. Brukeransvar",
    "termsResponsibilityApiKeys": "Du er alene ansvarlig for å administrere dine egne API-nøkler og legitimasjon for tredjeparts AI-leverandører (OpenAI, Anthropic, Google, etc.).",
    "termsResponsibilityCompliance": "Du må overholde vilkårene for bruk for hver AI-leverandør hvis API du får tilgang til gjennom OmniRoute.",
    "termsResponsibilitySecurity": "Du er ansvarlig for sikkerheten til din lokale OmniRoute-installasjon, inkludert å angi et passord og begrense nettverkstilgang.",
    "termsSection3Title": "3. Hvordan det fungerer",
    "termsSection3Text": "OmniRoute fungerer som en mellomfullmektig. API-anrop som sendes til OmniRoute, oversettes og videresendes til dine konfigurerte AI-leverandører. OmniRoute endrer ikke innholdet i dine forespørsler eller svar utover den nødvendige protokolloversettelsen.",
    "termsSection4Title": "4. Datahåndtering",
    "termsDataStoredLocally": "Alle data lagres lokalt på din maskin i en SQLite-database.",
    "termsNoTransmission": "OmniRoute overfører ingen data til eksterne servere med mindre du eksplisitt aktiverer skysynkroniseringsfunksjoner.",
    "termsDataLocationText": "Brukslogger, API-nøkler og konfigurasjon lagres i",
    "termsSection5Title": "5. Ansvarsfraskrivelse",
    "termsSection5Text": "OmniRoute leveres \"som den er\" uten garanti av noe slag. Vi er ikke ansvarlige for kostnader som påløper gjennom API-bruk, tjenesteavbrudd eller tap av data. Oppretthold alltid sikkerhetskopier av konfigurasjonen din.",
    "termsSection6Title": "6. Åpen kildekode",
    "termsSection6Text": "OmniRoute er åpen kildekode-programvare. Du står fritt til å inspisere, modifisere og distribuere den under lisensvilkårene."
  },
  "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 - Hva er forskjellen?",
    "comparisonCliToolsLabel": "CLI Tools-siden",
    "comparisonCliToolsTitle": "Din IDE sender forespørsler gjennom OmniRoute",
    "comparisonCliToolsDesc": "Konfigurer Claude Code, Codex, Cursor og andre IDE-er for å bruke OmniRoute som deres API-base-URL. OmniRoute fungerer som en proxy, og dirigerer forespørsler til dine konfigurerte leverandører.",
    "comparisonAgentsLabel": "Denne siden (agentmål)",
    "comparisonAgentsTitle": "OmniRoute sender forespørsler til lokale CLI-verktøy",
    "comparisonAgentsDesc": "OmniRoute kan skape lokale CLI-binærfiler (claude, codex, goose) som eksekveringsbackends. CLI-verktøyet behandler forespørselen ved å bruke sin egen autentisering og returnerer resultatet.",
    "comparisonSummary": "Kort sagt: CLI Tools = du konfigurerer verktøy til å peke på OmniRoute. Agentmål = OmniRoute bruker verktøy som endepunkter.",
    "agentUseCaseHint": "Kan brukes som et utførelsesmål via ACP-protokoll",
    "flowDiagramClient": "Klient-app",
    "flowDiagramClientDesc": "SDK, API eller oppstrømstjeneste",
    "flowDiagramOmniRoute": "OmniRoute",
    "flowDiagramOmniRouteDesc": "Mottar forespørsel og velger mål",
    "flowDiagramSpawn": "Spawn-prosess",
    "flowDiagramSpawnDesc": "Lanserer CLI binær via stdio",
    "flowDiagramCli": "CLI-agent",
    "flowDiagramCliDesc": "Prosesser med egen auth/modell",
    "fingerprintSettingsHint": "CLI-fingeravtrykktilpasning (forkledningsforespørsler som spesifikke CLI-verktøy) kan konfigureres i",
    "settingsRoutingLink": "Innstillinger/Routing",
    "openSettings": "Innstillinger",
    "copyRawUrlTitle": "Kopier rå URL til utklippstavlen",
    "copied": "Kopiert!",
    "copyUrl": "Kopier URL",
    "startHere": "Start her",
    "badgeNew": "Nytt",
    "viewOnGithub": "Se på GitHub",
    "howToUse": "Hvordan bruke",
    "browseAllSkillsOnGithub": "Bla gjennom alle ferdighetene på GitHub",
    "apiSkills": "API-ferdigheter",
    "cliSkills": "CLI-ferdigheter",
    "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": "Skyagenter",
    "description": "Administrer autonome kodeagenter (Jules, Devin, Codex Cloud)",
    "loading": "Laster inn oppgaver ...",
    "aboutTitle": "Om Cloud Agents",
    "aboutDescription": "Skyagenter er eksterne AI-kodingsassistenter som kan utføre oppgaver autonomt. De fungerer annerledes enn lokale CLI-agenter - du samhandler med dem gjennom OmniRoutes API.",
    "howItWorksTitle": "Slik fungerer det:",
    "howItWorksDesc": "Opprett en oppgave → Agent analyserer og foreslår en plan → Du godkjenner → Agent utfører → Resultater returnert",
    "newTaskTitle": "Opprett ny oppgave",
    "newTaskDescription": "Start en ny oppgave med en skyagent",
    "selectAgent": "Velg Agent",
    "taskDescription": "Oppgavebeskrivelse",
    "taskDescriptionPlaceholder": "Beskriv hva du vil at agenten skal gjøre...",
    "startTask": "Start oppgave",
    "tasks": "Oppgaver",
    "taskDetail": "Oppgavedetalj",
    "noTasks": "Ingen oppgaver ennå. Opprett en for å 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": "Oppgave uten navn",
    "created": "Opprettet",
    "conversation": "Samtale",
    "result": "Resultat",
    "error": "Feil",
    "planReady": "Plan klar for godkjenning",
    "approvePlan": "Godkjenn plan",
    "rejectPlan": "Avvis og avbryt",
    "sendMessagePlaceholder": "Send en melding til agenten...",
    "cancel": "Avbryt",
    "delete": "Slett",
    "selectTaskPrompt": "Velg en oppgave for å se detaljer",
    "statusPending": "Venter",
    "statusRunning": "Løper",
    "statusWaitingApproval": "Venter på godkjenning",
    "statusCompleted": "Fullført",
    "statusFailed": "Mislyktes",
    "statusCancelled": "Kansellert",
    "repositoryName": "Depotnavn",
    "repositoryUrl": "Repository URL",
    "branch": "gren"
  },
  "templateNames": {
    "simple-chat": "Enkel chat",
    "streaming": "Streaming",
    "system-prompt": "Systemmelding",
    "thinking": "Tenker",
    "tool-calling": "Verktøyanrop",
    "multi-turn": "Multisving",
    "vision": "Visjon",
    "schema-coercion": "Skjematvang"
  },
  "templateDescriptions": {
    "simple-chat": "Grunnleggende chatmal med systemmelding",
    "streaming": "Mal for strømmesvar",
    "system-prompt": "Mal med tilpasset systemforespørsel",
    "thinking": "Mal med resonnement/tenkebudsjett",
    "tool-calling": "Mal for verktøy/funksjonskall",
    "multi-turn": "Mal for samtaler med flere svinger",
    "vision": "Multimodal mal med bildeinngang",
    "schema-coercion": "Håndheving av strukturert utgang / JSON-skjema"
  },
  "templatePayloads": {
    "simpleChat": {
      "system": "Du er en hjelpsom AI-assistent.",
      "userGreeting": "Hei! Hvordan kan jeg hjelpe deg i dag?"
    },
    "streaming": {
      "prompt": "Skriv en historie om"
    },
    "systemPrompt": {
      "question": "Hva er meningen med livet?",
      "systemInstruction": "Gi et gjennomtenkt, filosofisk svar."
    },
    "thinking": {
      "question": "Forklar kvanteberegning"
    },
    "toolCalling": {
      "cityNameDescription": "Navnet på byen å få vær for",
      "toolDescription": "Få gjeldende vær for et sted",
      "userWeather": "Hvordan er været i Tokyo?"
    },
    "multiTurn": {
      "system": "Du er en hjelpsom assistent.",
      "assistantExample": "Jeg hjelper deg gjerne med det.",
      "userInitial": "Jeg trenger hjelp med",
      "userFollowUp": "Kan du utdype 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": "Resonnement Replay",
    "reasoningCacheDesc": "Bevarer modelltenkning for multi-sving verktøyoppkallingsflyter",
    "reasoningEntries": "Aktive oppføringer",
    "reasoningReplayRate": "Replay rate",
    "reasoningReplays": "Totale repriser",
    "reasoningCharsCached": "Karakterer bufret",
    "reasoningMisses": "Cache Misses",
    "reasoningByProvider": "Av leverandør",
    "reasoningByModel": "Etter modell",
    "reasoningRecentEntries": "Nylige oppføringer",
    "reasoningToolCallId": "Verktøyanrops-ID",
    "reasoningChars": "Karakterer",
    "reasoningAge": "Alder",
    "reasoningView": "Visning",
    "reasoningDetail": "Begrunnelse innhold",
    "reasoningBehavior": "Atferd",
    "reasoningBehaviorCapture": "Fanger resonnement_innhold fra strømmesvar",
    "reasoningBehaviorReplay": "Injiserer på nytt ved neste sving når klienten utelater den",
    "reasoningBehaviorFallback": "Minne-først med SQLite reserve for krasjgjenoppretting",
    "reasoningBehaviorTtl": "TTL: 2 timer | Maks. oppføringer: 2000 (minne)",
    "reasoningBehaviorModels": "Støttet: DeepSeek, Kimi, Qwen-Thinking, GLM",
    "reasoningClearAll": "Tøm Reasoning Cache",
    "reasoningClearSuccess": "Tømte {count} resonnementbufferoppføringer",
    "reasoningClearError": "Kunne ikke tømme resonnementbufferen",
    "reasoningNoData": "Ingen begrunnelsesoppføringer er bufret ennå. Oppføringer vises når tenkende modeller bruker verktøykalling.",
    "cachePerformanceRetry": "Prøv på nytt",
    "cachePerformanceHitRate": "Trefffrekvens",
    "cachePerformanceAvgLatency": "Gjennomsnittlig ventetid (ms)",
    "cachePerformanceP95Latency": "p95 latens (ms)",
    "retry": "Prøv på nytt",
    "reasoningAvgChars": "Gj.sn. 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": "Leverandør",
    "levelCombo": "Combo",
    "levelKey": "Nøkkel",
    "levelDirect": "Direkte (ingen proxy)",
    "titleGlobal": "Global proxy-konfigurasjon",
    "titleLevel": "{level} Proxy — {label}",
    "loading": "Laster proxy-konfigurasjon ...",
    "inheritingFrom": "Arver fra",
    "source": "Kilde",
    "savedProxy": "Lagret proxy",
    "custom": "Egendefinert",
    "selectSavedProxyPlaceholder": "Velg lagret proxy...",
    "proxyType": "Proxy Type",
    "host": "Vert",
    "hostPlaceholder": "1.2.3.4 eller proxy.example.com",
    "port": "Port",
    "authOptional": "Autentisering (valgfritt)",
    "username": "Brukernavn",
    "usernamePlaceholder": "Brukernavn",
    "password": "Passord",
    "passwordPlaceholder": "Passord",
    "connected": "Tilkoblet",
    "ip": "IP:",
    "connectionFailed": "Tilkobling mislyktes",
    "testConnection": "Test tilkobling",
    "clear": "Tøm",
    "cancel": "Avbryt",
    "save": "Lagre",
    "errorSelectSavedProxy": "Velg en lagret proxy først.",
    "errorSelectProxyFirst": "Velg en proxy først.",
    "errorProxyNotFound": "Den valgte proxy-tjeneren ble ikke funnet.",
    "errorClearSavedProxy": "Kunne ikke slette lagret proxy",
    "errorSaveProxy": "Kunne ikke lagre proxy-konfigurasjonen",
    "errorClearProxy": "Kunne ikke tømme proxy-konfigurasjonen",
    "errorSocks5Hidden": "SOCKS5 er konfigurert, men skjult fordi NEXT_PUBLIC_ENABLE_SOCKS5_PROXY=false."
  },
  "oauthModal": {
    "title": "Koble til {providerName}",
    "waiting": "Venter på autorisasjon",
    "completeAuthInPopup": "Fullfør autorisasjonen i popup.",
    "popupClosedHint": "Hvis popup-vinduet lukkes uten å omdirigere tilbake (f.eks. Qoder), vil denne dialogboksen automatisk bytte til manuell URL-inntastingsmodus.",
    "popupBlocked": "Popup blokkert? Skriv inn URL manuelt",
    "deviceCodeVisitUrl": "Besøk nettadressen nedenfor og skriv inn koden:",
    "deviceCodeVerificationUrl": "Verifiserings-URL",
    "deviceCodeYourCode": "Din kode",
    "deviceCodeWaiting": "Venter på autorisasjon...",
    "googleOAuthWarning": "Fjerntilgang + Google OAuth: Standardlegitimasjon godtar bare viderekoblinger til <code>localhost</code>. Etter autorisering vil nettleseren din prøve å åpne <code>localhost</code> — kopier den fullstendige nettadressen og lim den inn nedenfor. For fullstendig fjernbruk uten dette manuelle trinnet, <a>konfigurer din egen OAuth-legitimasjon</a>.",
    "remoteAccessInfo": "Ekstern tilgang: Siden du har ekstern tilgang til OmniRoute, vil du etter godkjenning se en feilside (lokalvert ikke funnet). Dette er normalt - bare kopier hele URL-en fra nettleserens adresselinje og lim den inn nedenfor.",
    "step1OpenUrl": "Trinn 1: Åpne denne URL-en i nettleseren din",
    "copy": "Kopier",
    "step2PasteCallback": "Trinn 2: Lim inn tilbakeringings-URL eller autorisasjonskode her",
    "step2Hint": "Etter autorisasjon limer du inn hele tilbakeringings-URLen. For Claude Code og Cline kan du også lime inn autentiseringskoden direkte, f.eks. <code>kode#state</code>.",
    "connect": "Koble til",
    "cancel": "Avbryt",
    "success": "Tilkoblingen var vellykket!",
    "successMessage": "Din {providerName}-konto er tilkoblet.",
    "done": "Ferdig",
    "error": "Tilkobling mislyktes",
    "tryAgain": "Prøv igjen"
  },
  "cursorAuthModal": {
    "title": "Koble til markør-IDE",
    "autoDetecting": "Automatisk oppdager tokens...",
    "readingFromCursor": "Leser fra Cursor IDE eller cursor-agent",
    "tokensAutoDetected": "Tokens ble automatisk oppdaget fra Cursor IDE!",
    "cursorNotDetected": "Markør-IDE ble ikke oppdaget. Vennligst lim inn tokenet ditt manuelt.",
    "accessToken": "Tilgangstoken",
    "required": "*",
    "accessTokenPlaceholder": "Tilgangstoken fylles ut automatisk...",
    "machineId": "Maskin-ID",
    "optional": "(valgfritt)",
    "machineIdPlaceholder": "Maskin-ID fylles ut automatisk...",
    "importing": "Importerer...",
    "importToken": "Importer token",
    "cancel": "Avbryt",
    "errorAutoDetect": "Kan ikke oppdage tokens automatisk",
    "errorAutoDetectFailed": "Automatisk gjenkjenning av tokens mislyktes",
    "errorEnterToken": "Vennligst skriv inn tilgangstoken",
    "errorImportFailed": "Import mislyktes"
  },
  "pricingModal": {
    "title": "Priskonfigurasjon",
    "loading": "Laster inn prisdata ...",
    "pricingRatesFormat": "Prisformat",
    "ratesDescription": "Alle priser er i <strong>dollar per million tokens</strong> ($/1M tokens). Eksempel: Inndatahastighet på 2,50 betyr $2,50 per 1 000 000 input-tokens.",
    "model": "Modell",
    "input": "Inndata",
    "output": "Utgang",
    "cached": "Bufret",
    "reasoning": "Resonnement",
    "cacheCreation": "Oppretting av cache",
    "noPricingData": "Ingen prisdata tilgjengelig",
    "resetToDefaults": "Tilbakestill til standardinnstillinger",
    "cancel": "Avbryt",
    "saving": "Lagrer...",
    "saveChanges": "Lagre endringer",
    "resetConfirm": "Vil du tilbakestille alle priser til standard? Dette kan ikke angres.",
    "errorSaveFailed": "Kunne ikke lagre prisen",
    "errorResetFailed": "Kunne ikke tilbakestille priser"
  },
  "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": "Vert",
    "labelPort": "Port",
    "labelUsername": "Brukernavn",
    "labelPassword": "Passord",
    "labelRegion": "Region",
    "labelStatus": "Status",
    "labelNotes": "Notater",
    "usernamePlaceholderEdit": "La stå tomt for å beholde gjeldende brukernavn",
    "passwordPlaceholderEdit": "La feltet stå tomt for å beholde gjeldende passord",
    "statusActive": "Aktiv",
    "statusInactive": "Inaktiv",
    "cancel": "Avbryt",
    "save": "Lagre",
    "bulkModalTitle": "Bulk proxy-tildeling",
    "bulkLabelScope": "Omfang",
    "bulkLabelProxy": "Fullmakt",
    "bulkClearAssignment": "(Tøm oppdrag)",
    "bulkLabelScopeIds": "Omfangs-ID-er (komma eller linjeadskilt)",
    "bulkScopeIdsPlaceholder": "leverandør-openai, leverandør-antropisk",
    "bulkApply": "Søk",
    "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 (må være 1-65535)",
    "bulkImportErrorInvalidType": "Ugyldig TYPE (bruk http, https eller socks5)",
    "bulkImportErrorInvalidStatus": "Ugyldig STATUS (bruk 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} % suksess",
    "avgLatency": "{latency} ms i gjennomsnitt",
    "assignmentsCount": "{count} oppgaver",
    "noData": "No Data",
    "testSuccess": "✓ {ip}",
    "testLatency": "{latency}ms",
    "testFailure": "✗ {error}",
    "bulkImport": "Bulk import",
    "bulkImportTitle": "Bulk import proxyer",
    "bulkImportDescription": "Lim inn proxy-profiler ved å bruke rørdelt format. Én proxy per linje. Eksisterende proxyer (samme vert + port) vil bli oppdatert.",
    "bulkImportParse": "Parse",
    "bulkImportImport": "Importer {count} proxyer",
    "bulkImportImporting": "Importerer...",
    "bulkImportParsed": "{count} proxyer analysert",
    "bulkImportSkipped": "{count} linjer hoppet over",
    "bulkImportParseErrors": "{count} feil",
    "bulkImportNoValidEntries": "Ingen gyldige oppføringer funnet. Sjekk formatet og prøv igjen.",
    "bulkImportSuccess": "Import fullført: {created} opprettet, {updated} oppdatert, {failed} mislyktes",
    "bulkImportErrorLine": "Linje {line}: {reason}",
    "bulkImportMaxExceeded": "Maksimalt 100 fullmakter per import",
    "bulkImportPreview": "Forhåndsvisning",
    "clearAssignment": "(klar oppdrag)",
    "bulkProxyAssignment": "Bulk proxy-tildeling"
  },
  "playground": {
    "title": "Title",
    "description": "Description",
    "endpoint": "Endpoint",
    "provider": "Provider",
    "model": "Model",
    "accountKey": "Account Key",
    "autoAccounts": "Auto ({count} kontoer)",
    "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": "Genererte {count} bilder",
    "generatedImage": "Generert bilde {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": "Tøm chat",
    "typeMessagePlaceholder": "Skriv inn en melding... (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": "Komprimering",
      "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 forhåndsvisning.",
    "betaConfigSavedPrefix": "Konfigurasjonen er lagret i",
    "betaConfigSavedSuffix": "(ikke vedvart på serveren ennå). Håndhevelse av grense per forespørsel er ennå ikke koblet til proxy-pipelinen. Denne skjermen lar deg designe og visualisere kvotefordelingen; reell håndhevelse vil lande i en fremtidig iterasjon med DB-persistens og oppstrøms samtaleavlytting.",
    "policyLabel": "Retningslinjer:",
    "resetIn": "tilbakestille inn",
    "quotaTotal": "totalt"
  },
  "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"
  }
}
