omniroute 3.3.6 → 3.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__7ace0fcd._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__950558b8._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__9698d25e._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__a32d3818._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__bc251fbe._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__d5a064d5._.js +1 -1
- package/app/.next/server/chunks/_05c48915._.js +1 -1
- package/app/.next/server/chunks/_06515a8a._.js +1 -1
- package/app/.next/server/chunks/_2115d8de._.js +1 -1
- package/app/.next/server/chunks/_3ac953eb._.js +1 -1
- package/app/.next/server/chunks/_4b8fd853._.js +1 -1
- package/app/.next/server/chunks/_68683848._.js +1 -1
- package/app/.next/server/chunks/_ee9b677b._.js +1 -1
- package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
- package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_ar_json_e1d5145b._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_bg_json_34495a0f._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_cs_json_db6f9ebc._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_da_json_7500ed02._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_de_json_b2a40318._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_es_json_82775c4a._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_fi_json_dcc6745e._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_fr_json_fe904570._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_he_json_3e3c1e1b._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_hi_json_83a0b9e5._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_hu_json_651e00d3._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_id_json_725d4a34._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_in_json_2d7cd177._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_it_json_e23882ae._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_ja_json_fc6af4d8._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_ko_json_0ffdbdc6._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_ms_json_610df819._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_nl_json_55ad1507._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_no_json_9f484a8c._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_phi_json_871ece45._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_pl_json_79d0be4b._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_pt-BR_json_e7b9e8db._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_pt_json_2fc13a82._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_ro_json_d1a5f5ee._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_ru_json_9d7a9dfe._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_sk_json_1c5bff4a._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_sv_json_e8ae9f28._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_th_json_6ed546bd._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_tr_json_c8d78b01._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_uk-UA_json_c72cdf08._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_vi_json_03ec9dfd._.js +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/{b9999bd9d2b99bf6.js → d3c3a9266158d9b0.js} +1 -1
- package/app/CHANGELOG.md +19 -1
- package/app/docs/openapi.yaml +1 -1
- package/app/open-sse/handlers/responseTranslator.ts +1 -1
- package/app/open-sse/package.json +1 -1
- package/app/package-lock.json +3 -3
- package/app/package.json +1 -1
- package/app/src/i18n/messages/ar.json +2 -1
- package/app/src/i18n/messages/bg.json +2 -1
- package/app/src/i18n/messages/cs.json +2 -1
- package/app/src/i18n/messages/da.json +2 -1
- package/app/src/i18n/messages/de.json +2 -1
- package/app/src/i18n/messages/es.json +2 -1
- package/app/src/i18n/messages/fi.json +2 -1
- package/app/src/i18n/messages/fr.json +2 -1
- package/app/src/i18n/messages/he.json +2 -1
- package/app/src/i18n/messages/hi.json +2 -1
- package/app/src/i18n/messages/hu.json +2 -1
- package/app/src/i18n/messages/id.json +2 -1
- package/app/src/i18n/messages/in.json +2 -1
- package/app/src/i18n/messages/it.json +2 -1
- package/app/src/i18n/messages/ja.json +2 -1
- package/app/src/i18n/messages/ko.json +2 -1
- package/app/src/i18n/messages/ms.json +2 -1
- package/app/src/i18n/messages/nl.json +2 -1
- package/app/src/i18n/messages/no.json +2 -1
- package/app/src/i18n/messages/phi.json +2 -1
- package/app/src/i18n/messages/pl.json +2 -1
- package/app/src/i18n/messages/pt-BR.json +2 -1
- package/app/src/i18n/messages/pt.json +2 -1
- package/app/src/i18n/messages/ro.json +2 -1
- package/app/src/i18n/messages/ru.json +2 -1
- package/app/src/i18n/messages/sk.json +2 -1
- package/app/src/i18n/messages/sv.json +2 -1
- package/app/src/i18n/messages/th.json +2 -1
- package/app/src/i18n/messages/tr.json +2 -1
- package/app/src/i18n/messages/uk-UA.json +2 -1
- package/app/src/i18n/messages/vi.json +2 -1
- package/app/src/shared/services/opencodeConfig.ts +14 -13
- package/app/tests/unit/t40-opencode-cli-tools-integration.test.mjs +5 -5
- package/package.json +1 -1
- /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_buildManifest.js +0 -0
- /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_clientMiddlewareManifest.json +0 -0
- /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[502805,a=>{a.v(JSON.parse('{"common":{"save":"Gem","cancel":"Annuller","delete":"Slet","loading":"Indlæser...","error":"Der opstod en fejl","success":"Succes","confirm":"Er du sikker?","refresh":"Opdater","close":"Luk","add":"Tilføj","edit":"Rediger","search":"Søg","back":"Tilbage","next":"Næste","submit":"Indsend","reset":"Nulstil","copy":"Kopiér","copied":"Kopieret!","enabled":"Aktiveret","disabled":"Deaktiveret","active":"Aktiv","inactive":"Inaktiv","noData":"Ingen tilgængelige data","configure":"Konfigurer","manage":"Administrer","name":"Navn","actions":"Handlinger","status":"Status","type":"Type","model":"Model","models":"modeller","provider":"Udbyder","account":"Konto","time":"Tid","details":"Detaljer","created":"Oprettet","lastUsed":"Sidst brugt","loadMore":"Indlæs mere","noResults":"Ingen resultater fundet","reloadPage":"Genindlæs siden","connected":"Forbundet","disconnected":"Afbrudt","notConfigured":"Ikke konfigureret","testConnection":"Test forbindelse","enable":"Aktiver","disable":"Deaktiver","columns":"Kolonner","newest":"Nyeste","oldest":"Ældste","all":"Alle","none":"Ingen","yes":"Ja","no":"Nej","warning":"Advarsel","note":"Bemærk","free":"Gratis","skipToContent":"Gå til indhold","maintenanceServerIssues":"Server is experiencing issues. Some features may be unavailable.","maintenanceServerUnreachable":"Server is unreachable. Reconnecting...","accept":"Accepter","accountId":"Konto-id","alias":"Alias","apiKeyId":"API-nøgle-id","apiKeyName":"API-nøglenavn","apiKeySecret":"API-nøglehemmelighed","authorization":"Autorisation","content-type":"Indholdstype","content-length":"Indholdslængde","cookie":"Cookie","file":"Fil","host":"vært","id":"ID","import":"Importer","limit":"Grænse","offset":"Offset","open":"Åbn","origin":"Oprindelse","promptTokens":"Spørg tokens","completionTokens":"Fuldførelsestokens","totalTokens":"Samlede tokens","rawModel":"Rå model","scope":"Omfang","skill":"Færdighed","sortBy":"Sorter efter","sortOrder":"Sorteringsrækkefølge","tab":"Tab","text":"Tekst","textarea":"Tekstområde","tool":"Værktøj","toolId":"Værktøjs-id","web":"Web","whereUsed":"Hvor brugt","whitelist":"Hvidliste","blacklist":"Sortliste","resolve":"Løs","force":"Kraft","base64url":"Base64 URL","hex":"Hex","range":"Rækkevidde","component":"Komponent","redirect_uri":"Omdiriger URI","idempotency-key":"Idempotens nøgle","error_description":"Fejlbeskrivelse","code":"Kode","compatible":"Kompatibel","chat-completions":"Chatafslutninger","oauth":"OAuth","auth_token":"Auth Token","crypto":"Krypto","hours":"Timer","selfsigned":"Selvsigneret","proxy_id":"Proxy ID","proxyId":"Proxy ID","connectionId":"Forbindelses-id","resolveConnectionId":"Løs forbindelses-id","resolve_connection_id":"Løs forbindelses-id","scope_id":"Omfang ID","scopeId":"Omfang ID","jwtSecret":"JWT-hemmelighed","keytar":"Keytar","better-sqlite3":"bedre-sqlite3","undici":"undici","builder-id":"Bygherre-id","musicDesc":"Musikbeskrivelse","musicGeneration":"Musik Generation","idc":"IDC","cloud-status-changed":"Cloud-status ændret","where_used":"Hvor brugt","windowMs":"Vindue (ms)","social-github":"GitHub","social-google":"Google","TOOL_ALLOWLIST":"Værktøjstilladelsesliste","TOOL_DENYLIST":"Værktøj Denylist","Failed to save pricing":"Kunne ikke gemme prisen","Failed to reset pricing":"Failed to reset pricing","apikey":"API nøgle","http":"HTTP"},"sidebar":{"home":"Hjem","dashboard":"Dashboard","providers":"Udbydere","combos":"Combos","usage":"Brug","analytics":"Analytics","costs":"Omkostninger","health":"Sundhed","limits":"Grænser og kvoter","cliTools":"CLI værktøjer","media":"Medier","settings":"Indstillinger","translator":"Oversætter","docs":"Dokumenter","issues":"Problemer","apiManager":"API Manager","logs":"Logs","auditLog":"Revisionslog","shutdown":"Nedlukning","restart":"Genstart","shutdownConfirm":"Vil du lukke OmniRoute ned?","restartConfirm":"Genstart OmniRoute?","version":"v{version}","debug":"Debug","system":"System","help":"Hjælp","serverDisconnected":"Server afbrudt","serverDisconnectedMsg":"Proxyserveren er blevet stoppet eller genstarter.","expandSidebar":"Udvid sidebjælken","collapseSidebar":"Skjul sidebjælken","themes":"Temaer","presetColors":"Populære farver","createTheme":"Opret nyt tema...","chooseColor":"Vælg én farve","themeCoral":"Coral","themeBlue":"Blå","themeRed":"Rød","themeGreen":"Grøn","themeViolet":"Violet","themeOrange":"Orange","themeCyan":"Turkis","endpoints":"Endpoints","playground":"Legeplads","agents":"Agenter","cliToolsShort":"Værktøjer","autoCombo":"Auto Combo","searchTools":"Search Tools","cache":"Cache","cacheShort":"Cache"},"themesPage":{"title":"Temaer","description":"Vælg et forudindstillet tema, eller opret dit eget med en enkelt farve","presetColors":"Populære farver","customTheme":"Brugerdefineret tema","customThemeDesc":"Klik på Opret tema, og vælg en farve","createTheme":"Opret nyt tema...","activePreset":"Aktiv theme"},"header":{"logout":"Log ud","language":"Sprog","providers":"Udbydere","providerDescription":"Administrer dine AI-udbyderforbindelser","combos":"Combos","comboDescription":"Modelkombinationer med fallback","usage":"Brug & Analytics","usageDescription":"Overvåg dit API-brug, tokenforbrug og anmodningslogfiler","analytics":"Analytics","analyticsDescription":"Diagrammer, tendenser og evalueringsindsigter","cliTools":"CLI værktøjer","cliToolsDescription":"Konfigurer CLI-værktøjer","home":"Hjem","homeDescription":"Velkommen til OmniRoute","endpoint":"Endpoints","endpointDescription":"Manage proxy endpoints, MCP, A2A, and API endpoints","settings":"Indstillinger","settingsDescription":"Administrer dine præferencer","openaiCompatible":"OpenAI-kompatibel","anthropicCompatible":"Antropisk kompatibel","media":"Medie","mediaDescription":"Generer billeder, videoer og musik","themes":"Temaer","themesDescription":"Vælg et farvetema til hele dashboardpanelet","mcp":"MCP","mcpDescription":"Model Context Protocol server management and tools","a2a":"A2A","a2aDescription":"Agent-to-Agent protocol tasks and observability"},"home":{"quickStart":"Hurtig start","quickStartDesc":"Kom i gang i 4 trin. Tilslut udbydere, rutemodeller, overvåg alt.","fullDocs":"Fuld dokumenter","step1Title":"1. Opret API-nøgle","step1Desc":"Gå til <endpoint>Endpoint</endpoint> -> Registrerede nøgler. Generer én nøgle pr. miljø.","step2Title":"2. Tilslut udbydere","step2Desc":"Tilføj konti i <providers>Providers</providers>. Understøtter OAuth, API Key og gratis niveauer.","step3Title":"3. Peg din klient","step3Desc":"Indstil basis-URL til {url} i din IDE- eller API-klient.","step4Title":"4. Overvåg & optimer","step4Desc":"Spor tokens, omkostninger og fejl i <logs>Request Logs</logs> og <analytics>Analytics</analytics>.","providersOverview":"Oversigt over udbydere","configuredOf":"{configured} konfigureret af {total} tilgængelige udbydere","noModelsAvailable":"Ingen tilgængelige modeller for denne udbyder.","configureFirst":"Konfigurer en forbindelse først i {providers}","configureProvider":"Konfigurer udbyder","modelAvailable":"{count} model tilgængelig","modelsAvailable":"{count} modeller tilgængelige","connectionsActive":"{count} forbindelse aktiv","connectionsActivePlural":"{count} forbindelser aktive","copyModelName":"Kopiér modelnavnet","documentation":"Dokumentation","healthMonitor":"Sundhedsmonitor","reportIssue":"Rapportér problem","activeError":"{active} aktiv · {errors} fejl","oauthLabel":"OAuth","apiKeyLabel":"API nøgle","requestsShort":"{count} req","providerModelsTitle":"{provider} - Modeller","copiedModel":"Kopieret: {model}","aliasLabel":"alias","updateNow":"Opdater nu","updating":"Opdaterer...","updateAvailableDesc":"En ny version er tilgængelig. Klik for at opdatere.","updateStarted":"Opdatering startet..."},"analytics":{"title":"Analytics","overviewDescription":"Overvåg dine API-brugsmønstre, tokenforbrug, omkostninger og aktivitetstendenser på tværs af alle udbydere og modeller.","evalsDescription":"Kør evalueringspakker for at teste og validere dine LLM-endepunkter. Sammenlign modelkvalitet, detekter regressioner og benchmark-forsinkelse.","overview":"Oversigt","evals":"Evals"},"apiManager":{"title":"API nøgler","createKey":"Opret API-nøgle","key":"Nøgle","revokeKey":"Tilbagekald nøgle","revokeConfirm":"Er du sikker på, at du vil tilbagekalde denne API-nøgle?","noKeys":"Ingen API-nøgler endnu","noKeysDesc":"Opret din første API-nøgle til at godkende anmodninger til dit slutpunkt","keyLabel":"Nøglemærke","permissions":"Tilladelser","expiresAt":"Udløber","never":"Aldrig","revoke":"Tilbagekald","showKey":"Vis nøgle","hideKey":"Skjul nøgle","copyKey":"Kopiér API-nøgle","allModels":"Alle modeller","selectedModels":"Udvalgte modeller","readOnly":"Kun læse","fullAccess":"Fuld adgang","keyManagement":"API nøglestyring","keyManagementDesc":"Opret og administrer API-nøgler til godkendelse af anmodninger til dit slutpunkt","totalKeys":"Totalnøgler","restricted":"Begrænset","totalRequests":"Samlet antal anmodninger","modelsAvailable":"Modeller tilgængelige","registeredKeys":"Registrerede nøgler","keysRegistered":"{count} nøgler registreret","keyRegistered":"{count} nøgle registreret","keysSecurityNote":"Hver nøgle isolerer brugssporing og kan tilbagekaldes uafhængigt. Nøgler er maskeret efter oprettelse for sikkerhed.","createFirstKey":"Opret din første nøgle","name":"Navn","usage":"Brug","created":"Oprettet","actions":"Handlinger","reqs":"req","neverUsed":"Aldrig brugt","deleteConfirm":"Vil du slette denne API-nøgle?","usageTips":"Brugstips","tipAuth":"Brug API-nøgler i autorisationsoverskriften som bærer DIN_KEY","tipSecure":"Nøgler vises kun én gang under oprettelsen - gem dem sikkert","tipSeparate":"Opret separate nøgler til forskellige klienter eller miljøer","tipRestrict":"Begræns nøgler til specifikke modeller for bedre sikkerhed og omkostningskontrol","keyName":"Nøglenavn","keyNamePlaceholder":"f.eks. Produktionsnøgle, Udviklingsnøgle","keyNameDesc":"Vælg et beskrivende navn for at identificere denne nøgles formål","keyCreated":"API-nøgle oprettet","keyCreatedSuccess":"Nøglen blev oprettet!","keyCreatedNote":"Kopiér og gem denne nøgle nu – den vises ikke igen.","done":"Færdig","savePermissions":"Gem tilladelser","allowAll":"Tillad alle","restrict":"Begræns","allowAllInfo":"Denne nøgle kan få adgang til alle tilgængelige modeller.","restrictInfo":"Denne nøgle kan få adgang til {selected} af {total} modeller.","selected":"{count} valgt","all":"Alle","clear":"Ryd","searchModels":"Søg efter modeller efter navn eller udbyder...","noModelsFound":"Ingen modeller fundet","keyNameRequired":"Nøglenavn er påkrævet","keyNameTooLong":"Nøglenavnet skal være på højst {max} tegn","keyNameInvalid":"Nøglenavn kan kun indeholde bogstaver, tal, mellemrum, bindestreger og understregninger","invalidKeyName":"Ugyldigt nøglenavn","failedCreateKey":"Kunne ikke oprette nøgle","failedCreateKeyRetry":"Kunne ikke oprette nøgle. Prøv venligst igen.","invalidKeyId":"Ugyldigt nøgle-id","failedDeleteKey":"Nøglen kunne ikke slettes","failedDeleteKeyRetry":"Nøglen kunne ikke slettes. Prøv venligst igen.","invalidModelsSelection":"Ugyldigt valg af modeller","cannotSelectMoreThanModels":"Kan ikke vælge mere end {max} modeller","failedUpdatePermissions":"Kunne ikke opdatere tilladelser","failedUpdatePermissionsRetry":"Kunne ikke opdatere tilladelser. Prøv venligst igen.","unknownProvider":"ukendt","copyMaskedKey":"Kopiér maskeret nøgle","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Sidste: {date}","editPermissions":"Rediger tilladelser","deleteKey":"Slet nøgle","model":"{count} model","models":"{count} modeller","permissionsTitle":"Tilladelser: {name}","allowAllDesc":"Denne nøgle kan få adgang til alle tilgængelige modeller.","restrictDesc":"Denne nøgle kan få adgang til {selectedCount} af {totalModels} modeller.","selectedCount":"{count} valgt","autoResolve":"Auto-Resolve","autoResolveDesc":"Auto-resolve ambiguous model names to native provider for this API key.","keyActive":"Key Active","keyActiveDesc":"Enable or disable this API key. Disabled keys are immediately rejected with 403.","accessSchedule":"Access Schedule","accessScheduleDesc":"Restrict access to specific hours and days of the week.","scheduleFrom":"From","scheduleUntil":"Until","scheduleDays":"Days","scheduleTimezone":"Timezone","scheduleTimezoneHint":"Use IANA timezone names, e.g. America/New_York, Europe/Berlin","scheduleActive":"Schedule","disabled":"Disabled","daySun":"Sun","dayMon":"Mon","dayTue":"Tue","dayWed":"Wed","dayThu":"Thu","dayFri":"Fri","daySat":"Sat","keyOnlyAvailableAtCreation":"Full key available only at creation time — copy it when you first create the key"},"auditLog":{"title":"Revisionslog","searchPlaceholder":"Søgehandlinger...","action":"Handling","actor":"Skuespiller","target":"Mål","ipAddress":"IP-adresse","timestamp":"Tidsstempel","noEntries":"Ingen revisionsposter fundet","filterByAction":"Filtrer efter handling...","filterByActor":"Filtrer efter skuespiller...","filterEntriesAria":"Filtrer revisionslogposter","filterByActionTypeAria":"Filtrer efter handlingstype","filterByActorAria":"Filtrer efter skuespiller","refreshAuditLogAria":"Opdater revisionslog","tableAria":"Revisionslogposter","failedFetchAuditLog":"Kunne ikke hente revisionslog","notAvailable":"—","description":"Administrative handlinger og sikkerhedshændelser","showing":"Viser {count} poster (offset {offset})","previous":"Forrige"},"media":{"title":"Medieværksted","subtitle":"Generér billeder, videoer og musik","model":"Model","prompt":"Prompt","generate":"Generer","generating":"Generating...","loadingModels":"Loading available models...","noModels":"No models available. Configure providers with media capabilities first.","error":"Generation Failed","result":"Result","imageDescription":"Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.","videoDescription":"Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.","musicDescription":"Compose music using Stable Audio Open or MusicGen via ComfyUI."},"cliTools":{"title":"CLI værktøjer","noActiveProviders":"Ingen aktive udbydere","noActiveProvidersDesc":"Tilføj og tilslut udbydere først for at konfigurere CLI-værktøjer.","mapModels":"Kortmodeller","testConnection":"Test forbindelse","connectionStatus":"Forbindelsesstatus","configureEndpoint":"Konfigurer slutpunkt","instructions":"Instruktioner","modelMapping":"Modelkortlægning","baseUrl":"Basis URL","apiKey":"API nøgle","configured":"Konfigureret","notConfigured":"Ikke konfigureret","notInstalled":"Ikke installeret","custom":"Brugerdefineret","unknown":"Ukendt","lastSavedAt":"Sidst gemt: {date}","never":"Aldrig","justNow":"lige nu","minutesAgoShort":"{count}m siden","hoursAgoShort":"{count}t siden","daysAgoShort":"{count}d siden","monthsAgoShort":"{count}måned siden","yearsAgoShort":"{count}år siden","runtimeCheckFailed":"Kørselskontrol mislykkedes","yourApiKeyPlaceholder":"din-api-nøgle","modelPlaceholder":"udbyder/model-id","configurationSaved":"Konfigurationen blev gemt.","failedToSave":"Konfigurationen kunne ikke gemmes.","noApiKeysCreateOne":"Ingen API-nøgler - Opret en på Nøgler-siden","defaultOmnirouteKey":"sk_omniroute (standard)","selectModel":"Vælg Model","selectModelForAlias":"Vælg model til {alias}","selectModelForTool":"Vælg model til {tool}","select":"Vælg","clear":"Ryd","comingSoon":"Kommer snart","checkingRuntime":"Kontrollerer køretidsstatus...","guideOnlyIntegration":"Integration kun til guide (ingen lokal kørselstid påkrævet)","cliRuntimeDetected":"CLI runtime registreret og klar","cliFoundNotRunnable":"CLI fundet, men kan ikke køres{reason}","cliRuntimeNotDetected":"CLI runtime ikke fundet","binary":"Binær","configPath":"Konfigurationssti","configPathShort":"Konfig","failedCheckRuntimeStatus":"Kørselsstatus kunne ikke kontrolleres.","copy":"Kopiér","copied":"Kopieret","copyConfig":"Kopiér Config","saveConfig":"Gem konfiguration","selectionSaved":"Valget er gemt","guide":"Vejledning","detected":"Opdaget","notReady":"Ikke klar","active":"Aktiv","inactive":"Inaktiv","startMitm":"Start MITM","stopMitm":"Stop MITM","mitmStarted":"MITM startede med succes!","mitmStopped":"MITM stoppede med succes!","failedStart":"Kunne ikke starte MITM","failedStop":"Kunne ikke stoppe MITM","saveMappings":"Gem kortlægninger","mappingsSaved":"Kortlægninger gemt!","failedSaveMappings":"Tilknytningerne kunne ikke gemmes","howItWorks":"Sådan fungerer det:","antigravityHowWorksDesc":"Antigravity sender anmodninger til Googles slutpunkt. MITM opsnapper og omdirigerer dem til OmniRoute.","antigravityStep1":"1. Start MITM for at dirigere anmodninger gennem OmniRoute.","antigravityStep2Prefix":"2. Tilføj","antigravityStep2Suffix":"til din hosts-fil som 127.0.0.1.","antigravityStep3":"3. Åbn Antigravity og anmodninger vil blive fuldført.","sudoPasswordRequiredTitle":"Sudo-adgangskode påkrævet","sudoPasswordHint":"Administratoradgangskode er påkrævet for at ændre værtsfil- og systemproxyindstillinger.","enterSudoPassword":"Indtast sudo adgangskode","sudoPasswordRequiredError":"Sudo-adgangskode er påkrævet.","cancel":"Annuller","confirm":"Bekræft","settingsApplied":"Indstillinger blev anvendt!","failedApplySettings":"Indstillingerne kunne ikke anvendes","settingsReset":"Indstillinger blev nulstillet!","failedResetSettings":"Indstillingerne kunne ikke nulstilles","backupRestored":"Backup gendannet!","failedRestore":"Kunne ikke gendanne","checkingCli":"Kontrollerer {tool} CLI...","cliNotRunnable":"{tool} CLI installeret, men kan ikke køres","cliNotInstalled":"{tool} CLI ikke installeret","cliNotDetected":"{tool} CLI ikke fundet","cliDetectedReady":"{tool} CLI fundet og klar","cliFoundFailedHealthcheck":"{tool} CLI blev fundet, men kørselssundhedstjek mislykkedes{reason}.","installCliPrompt":"Installer venligst {tool} CLI for at bruge denne funktion.","installCodexPrompt":"Installer venligst Codex CLI for at bruge auto-apply-funktionen.","hide":"Skjul","howToInstall":"Sådan installeres","installationGuide":"Installationsvejledning","platforms":"macOS / Linux / Windows:","afterInstallationRun":"Kør efter installationen","toVerify":"at verificere.","current":"Nuværende","baseUrlPlaceholder":"https://.../v1","resetToDefault":"Nulstil til standard","providerModelPlaceholder":"udbyder/model-id","apply":"Ansøg","reset":"Nulstil","manualConfig":"Manuel konfiguration","backups":"Sikkerhedskopier","configBackups":"Konfigurer sikkerhedskopier","noBackupsYet":"Ingen sikkerhedskopier endnu. Sikkerhedskopier oprettes automatisk før hver anvendelse eller nulstilling.","restore":"Gendan","backupRestoredReloading":"Backup gendannet! Genindlæser status...","failedRestoreBackup":"Kunne ikke gendanne backup","applied":"Anvendt!","failed":"Mislykkedes","resetDone":"Nulstil!","omnirouteConfiguredOpenAiCompatible":"OmniRoute er konfigureret som OpenAI-kompatibel udbyder","provider":"Udbyder","model":"Model","providers":"Udbydere","auth":"Auth","noApiKeysAvailable":"Ingen tilgængelige API-nøgler","usingDefaultOmniroute":"Bruger standard: sk_omniroute","updateConfig":"Opdater konfiguration","applyConfig":"Anvend Config","noBackupsAvailable":"Ingen tilgængelige sikkerhedskopier.","profileSaved":"Profilen \\"{name}\\" er gemt!","failedSaveProfile":"Profilen kunne ikke gemmes","profileActivated":"Profil aktiveret!","failedActivateProfile":"Profilen kunne ikke aktiveres","profiles":"Profiler","savedProfiles":"Gemte profiler","noProfilesYet":"Ingen profiler gemt endnu. Gem den aktuelle konfiguration som en profil nedenfor.","activate":"Aktiver","deleteProfile":"Slet profil","profileNamePlaceholder":"Profilnavn (f.eks. personlig konto)","saveCurrent":"Gem nuværende","codexAuthNotePrefix":"Codex bruger","codexAuthNoteMiddle":"med","codexAuthNoteSuffix":"Klik på \\"Anvend\\" for at konfigurere automatisk.","claudeManualConfiguration":"Claude CLI - Manuel konfiguration","codexManualConfiguration":"Codex CLI - Manuel konfiguration","droidManualConfiguration":"Factory Droid - Manuel konfiguration","openClawManualConfiguration":"Åbn Claw - Manuel konfiguration","clineManualConfiguration":"Cline manuel konfiguration","kiloManualConfiguration":"Kilokode manuel konfiguration","toolDescriptions":{"antigravity":"Google Antigravity IDE med MITM","claude":"Antropisk Claude Code CLI","codex":"OpenAI Codex CLI","droid":"Factory Droid AI Assistant","openclaw":"Åbn Claw AI Assistant","cline":"Cline AI Coding Assistant CLI","kilo":"Kilokode AI Assistant CLI","cursor":"Cursor AI Code Editor","continue":"Fortsæt AI Assistant","opencode":"OpenCode AI coding agent (Terminal)","kiro":"Amazon Kiro — AI-powered IDE","windsurf":"Windsurf AI Code Editor","copilot":"GitHub Copilot AI Assistant"},"guides":{"cursor":{"notes":{"0":"Kræver Cursor Pro-konto for at bruge denne funktion.","1":"Markøren dirigerer anmodninger gennem sin egen server, så lokalt slutpunkt understøttes ikke. Aktiver venligst Cloud Endpoint i Indstillinger."},"steps":{"1":{"title":"Åbn Indstillinger","desc":"Gå til Indstillinger -> Modeller"},"2":{"title":"Aktiver OpenAI API","desc":"Aktiver muligheden \\"OpenAI API-nøgle\\"."},"3":{"title":"Basis URL"},"4":{"title":"API nøgle"},"5":{"title":"Tilføj brugerdefineret model","desc":"Klik på \\"Vis alle modeller\\" -> \\"Tilføj brugerdefineret model\\""},"6":{"title":"Vælg Model"}}},"continue":{"steps":{"1":{"title":"Åbn Config","desc":"Åbn Fortsæt konfigurationsfil"},"2":{"title":"API nøgle"},"3":{"title":"Vælg Model"},"4":{"title":"Tilføj Model Config","desc":"Tilføj følgende konfiguration til dit modelarray:"}},"notes":{"0":"Continue bruger JSON-konfigurationsfil."}},"opencode":{"steps":{"1":{"title":"Install OpenCode","desc":"Install via npm: npm install -g opencode-ai"},"2":{"title":"API Key"},"3":{"title":"Set Base URL","desc":"opencode config set baseUrl {{baseUrl}}"},"4":{"title":"Select Model"}},"notes":{"0":"OpenCode kræver API-nøglekonfiguration.","1":"Indstil basis-URL\'en til dit OmniRoute-slutpunkt."}},"kiro":{"steps":{"1":{"title":"Open Kiro Settings","desc":"Go to Settings → AI Provider"},"2":{"title":"Base URL","desc":"Paste your OmniRoute endpoint URL"},"3":{"title":"API Key"},"4":{"title":"Select Model"}},"notes":{"0":"Kiro kræver en Amazon-konto."}}},"mitmHowWorksDesc":"{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.","mitmStep1":"1. Start MITM to route requests through OmniRoute.","mitmStep2Prefix":"2. Add","mitmStep2Suffix":"to your hosts file as 127.0.0.1.","mitmStep3":"3. Open {toolName} and requests will be proxied.","whenToUseLabel":"Hvornår skal bruges","openToolDocs":"Åbn værktøjsdokumenter","toolUseCases":{"claude":"Brug, når du ønsker stærke planlægnings-arbejdsgange og lange multi-fil-refaktorer med Claude Code.","codex":"Bruges, når dit team er standardiseret på OpenAI Codex CLI-flows og profilbaseret godkendelse.","droid":"Brug, når du har brug for en letvægtsterminalagent med fokus på hurtig kodning og kommandoudførelsesløkker.","openclaw":"Brug, når du vil have en Open Claw-stil-kodningsagent, men dirigeret gennem OmniRoute-politikker.","cline":"Bruges, når du konfigurerer kodningsagenter i editorer og ønsker guidet opsætning med OmniRoute-modeller.","kilo":"Brug, når dit arbejdsflow afhænger af Kilo Code-kommandoer og hurtige iterative redigeringer.","cursor":"Brug, når du koder i Cursor, og du har brug for brugerdefinerede OpenAI-kompatible modeller gennem OmniRoute.","continue":"Brug, når du kører Continue i IDE\'er, og du har brug for bærbar JSON-baseret udbyderkonfiguration.","opencode":"Brug, når du foretrækker terminal-native agentkørsler og scriptet automatisering via OpenCode.","kiro":"Bruges ved integration af Kiro og styring af modelrouting centralt fra OmniRoute.","antigravity":"Bruges, når Antigravity/Kiro-trafik skal opsnappes gennem MITM og dirigeres til OmniRoute.","copilot":"Brug, når du ønsker Copilot-chatstil UX, mens du håndhæver OmniRoute-nøgler og routingregler."}},"combos":{"title":"Combos","description":"Skab modelkombinationer med vægtet routing og fallback-understøttelse","createCombo":"Opret Combo","editCombo":"Rediger kombination","deleteCombo":"Slet Combo","noModels":"Ingen modeller","noModelsYet":"Ingen modeller tilføjet endnu","addModel":"Tilføj model","addModelToCombo":"Tilføj Model til Combo","routingStrategy":"Rutestrategi","maxRetries":"Max forsøger igen","timeout":"Timeout (ms)","healthcheck":"Sundhedstjek","priority":"Prioritet","fallback":"Fallback","roundRobin":"Round Robin","random":"Tilfældig","leastLatency":"Mindst latenstid","comboName":"Combo navn","comboNamePlaceholder":"min-kombi","deleteConfirm":"Vil du slette denne kombination?","noCombosYet":"Ingen kombinationer endnu","comboCreated":"Kombinationen blev oprettet","comboUpdated":"Kombinationen blev opdateret","comboDeleted":"Combo slettet","failedCreate":"Kunne ikke oprette kombination","failedUpdate":"Kunne ikke opdatere kombinationen","errorCreating":"Fejl ved oprettelse af kombination","errorUpdating":"Fejl ved opdatering af kombination","errorDeleting":"Fejl ved sletning af kombination","testFailed":"Testanmodning mislykkedes","failedToggle":"Kombinationen kunne ikke skiftes","testResults":"Testresultater — {name}","resolvedBy":"Løst af:","more":"+{count} mere","reqs":"req","success":"succes","proxyConfigured":"Proxy konfigureret","copyComboName":"Kopiér kombinationsnavnet","enableCombo":"Aktiver kombination","disableCombo":"Deaktiver kombination","testCombo":"Test combo","duplicate":"Duplikat","proxyConfig":"Proxy konfiguration","nameRequired":"Navn er påkrævet","nameInvalid":"Kun bogstaver, tal, -, _, / og . tilladt","nameHint":"Bogstaver, tal, -, _, / og . tilladt","priorityDesc":"Sekventiel fallback: prøver model 1 først, derefter 2 osv.","weightedDesc":"Fordeler trafik efter vægtprocent med fallback","roundRobinDesc":"Cirkulær fordeling: hver anmodning går til den næste model i rotation","randomDesc":"Ensartet tilfældig udvælgelse, derefter tilbagevenden til de resterende modeller","leastUsedDesc":"Vælger modellen med færrest anmodninger, balancerer belastningen over tid","costOptimizedDesc":"Ruter til den billigste model først baseret på priser","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each model once before reshuffling","models":"Modeller","autoBalance":"Auto-balance","advancedSettings":"Avancerede indstillinger","retryDelay":"Forsinkelse af forsøg igen (ms)","concurrencyPerModel":"Samtidighed / Model","queueTimeout":"Timeout for kø (ms)","advancedHint":"Lad være tom for at bruge globale standardindstillinger. Disse tilsidesætter indstillinger for hver udbyder.","moveUp":"Flyt op","moveDown":"Flyt ned","removeModel":"Fjern","saving":"Gemmer...","weighted":"Vægtet","leastUsed":"Mindst brugt","costOpt":"Cost-Opt","strategyGuideTitle":"Sådan bruger du denne strategi","strategyGuideWhen":"ANVENDELSE","strategyGuideAvoid":"Undgå når","strategyGuideExample":"Eksempel","strategyGuide":{"priority":{"when":"Du har én foretrukken model og ønsker kun at falde tilbage på fejl.","avoid":"Du skal anmode om fordeling på tværs af modeller.","example":"Primær kodningsmodel med billigere backup for nedbrud."},"weighted":{"when":"Du har brug for kontrolleret trafik fordelt på modeller.","avoid":"Du kan ikke opretholde nøjagtige vægte over tid.","example":"80% stabil model + 20% kanariefugl model udrulning."},"round-robin":{"when":"Du ønsker forudsigelig og jævn fordeling.","avoid":"Modeller afviger for meget i latens eller omkostninger.","example":"Samme model på flere konti for at sprede gennemløb."},"random":{"when":"Du ønsker enkel distribution med minimal opsætning.","avoid":"Du har brug for strenge trafikgarantier.","example":"Hurtig prototyping med ækvivalente modeller."},"least-used":{"when":"Du vil have adaptiv balancering baseret på live-efterspørgsel.","avoid":"Trafikken er for lav til at drage fordel af brugsbalancering.","example":"Blandede arbejdsbelastninger, hvor en model ofte bliver overbelastet."},"cost-optimized":{"when":"Omkostningsreduktion er din højeste prioritet.","avoid":"Prissætningsdata mangler eller er forældede.","example":"Baggrunds- eller batchjob, hvor lavere omkostninger foretrækkes."}},"advancedHelp":{"maxRetries":"Hvor mange forsøg der forsøges igen, før en anmodning mislykkes.","retryDelay":"Indledende ventetid mellem genforsøg. Højere værdier reducerer sprængningstrykket.","timeout":"Maksimal anmodningsvarighed før afbrydelse.","healthcheck":"Skipper usunde modeller/udbydere fra dirigeringsbeslutninger.","concurrencyPerModel":"Maks. tilladte samtidige anmodninger pr. model i round-robin.","queueTimeout":"Hvor længe en anmodning kan vente i kø, før den udløber."},"templatesTitle":"Hurtige skabeloner","templatesDescription":"Anvend en startprofil, og juster derefter modeller og konfiguration.","templateApply":"Anvend skabelon","templateHighAvailability":"Høj tilgængelighed","templateHighAvailabilityDesc":"Prioriteret routing med sundhedstjek og sikre forsøg.","templateCostSaver":"Omkostningsbesparende","templateCostSaverDesc":"Omkostningsoptimeret routing til budget-første arbejdsbelastning.","templateBalanced":"symmetrisk belastning","templateBalancedDesc":"Minst anvendte routing for at sprede efterspørgslen over tid.","usageGuideHide":"Skjul","usageGuideDontShowAgain":"Vis ikke dette igen","usageGuideShow":"Vis guide","quickTestTitle":"Kombination klar til validering","quickTestDescription":"Kør en test nu for at bekræfte fallback og latensadfærd.","testNow":"Test Nu","pricingCoverage":"Prisdækning","pricingCoverageHint":"Omkostningsoptimeret fungerer bedst, når alle kombinationsmodeller har priser.","pricingAvailable":"Prissætning tilgængelig","pricingMissing":"Ingen prissætning","pricingAvailableShort":"Det er mere forankret i den reelle situati","pricingMissingShort":"ingen pris","warningRoundRobinSingleModel":"Round-robin er mest nyttig med mindst 2 modeller.","warningCostOptimizedPartialPricing":"Kun {priced} af {total}-modeller har priser. Routing kan være delvist omkostningsbevidst.","warningCostOptimizedNoPricing":"Der blev ikke fundet nogen prisdata for denne kombination. Omkostningsoptimeret kan rute uventet.","readinessTitle":"Klar til at spare?","readinessDescription":"Gennemgå tjeklisten, før du opretter eller opdaterer denne kombination.","readinessCheckName":"Kombinationsnavnet er gyldigt","readinessCheckModels":"Der er valgt mindst én model","readinessCheckWeights":"Vægtet total er 100 %","readinessCheckWeightsOptional":"Vægtregel ikke påkrævet","readinessCheckPricing":"Prisdata er tilgængelige","readinessCheckPricingOptional":"Reglen om prissætning er ikke påkrævet","saveBlockedTitle":"Gem er blokeret, indtil følgende elementer er rettet:","saveBlockName":"Definer et kombinationsnavn.","saveBlockModels":"Tilføj mindst én model.","saveBlockWeighted":"Indstil vægte til 100 % (aktuelt: {total}%).","saveBlockPricing":"Tilføj priser for mindst én model, eller vælg en anden strategi.","recommendationsLabel":"Recommended setup","applyRecommendations":"Apply recommendations","recommendationsUpdated":"Recommendations updated for {strategy}.","recommendationsApplied":"Recommendations applied to this combo.","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."}},"templateFreeStack":"Free Stack ($0)","templateFreeStackDesc":"Round-robin across all free providers: Kiro (Claude), iFlow (5 models), Qwen (4 models), Gemini CLI. Zero cost, never stops coding."},"costs":{"title":"Omkostninger","budget":"Budget","totalCost":"Samlede omkostninger","breakdown":"Omkostningsfordeling","noData":"Ingen omkostningsdata","byModel":"Efter model","byProvider":"Af udbyder"},"endpoint":{"title":"API-endepunkt","available":"Tilgængelige endepunkter","cloudProxy":"Cloud proxy","disableConfirm":"Er du sikker på, at du vil deaktivere cloud-proxy?","baseUrl":"Basis URL","apiKeyLabel":"API nøgle","registeredKeys":"Registrerede nøgler","chatCompletions":"Chatafslutninger","responses":"Svar","listModels":"Liste over modeller","usingCloudProxy":"Brug af Cloud Proxy","usingLocalServer":"Brug af lokal server","machineId":"Maskin-id: {id}...","disableCloud":"Deaktiver Cloud","enableCloud":"Aktiver Cloud","modelsAcrossEndpoints":"{models} modeller på tværs af {endpoints} slutpunkter","chatDesc":"Streaming og ikke-streaming chat med alle udbydere","embeddings":"Indlejringer","embeddingsDesc":"Tekstindlejringer til søge- og RAG-pipelines","imageGeneration":"Billedgenerering","imageDesc":"Generer billeder fra tekstprompter","rerank":"Genranger","rerankDesc":"Genranger dokumenter efter relevans for en forespørgsel","audioTranscription":"Lydtransskription","audioTranscriptionDesc":"Transskriber lydfiler til tekst (Whisper)","textToSpeech":"Tekst til tale","textToSpeechDesc":"Konverter tekst til naturligt klingende tale","moderations":"Moderationer","moderationsDesc":"Indholdsmoderering og sikkerhedsklassificering","responsesDesc":"OpenAI Responses API for Codex and advanced agentic workflows","listModelsDesc":"List all available models across all connected providers","settingsApiDesc":"Read and modify OmniRoute configuration via API","settingsApi":"Settings API","categoryCore":"Kerne-API\'er","categoryMedia":"Medier & Multi-Modal","categoryUtility":"Værktøjer & Administration","enableCloudTitle":"Aktiver Cloud Proxy","whatYouGet":"Hvad du får","cloudBenefitAccess":"Få adgang til din API fra hvor som helst i verden","cloudBenefitShare":"Del nemt slutpunkt med dit team","cloudBenefitPorts":"Ingen grund til at åbne porte eller konfigurere firewall","cloudBenefitEdge":"Hurtigt globalt kantnetværk","cloudSessionNote":"Cloud beholder din godkendelsessession i 1 dag. Hvis den ikke bruges, slettes den automatisk.","cloudUnstableNote":"Cloud er i øjeblikket ustabil med Claude Code OAuth i nogle tilfælde.","cloudConnected":"Cloud Proxy tilsluttet!","connectingToCloud":"Opretter forbindelse til skyen...","verifyingConnection":"Bekræfter forbindelse...","connecting":"Opretter forbindelse...","verifying":"Bekræfter...","connected":"Forbundet!","disableCloudTitle":"Deaktiver Cloud Proxy","disableWarning":"Alle godkendelsessessioner vil blive slettet fra skyen.","syncingData":"Synkroniserer seneste data...","disablingCloud":"Deaktiverer skyen...","syncing":"Synkroniserer...","disabling":"Deaktiverer...","cloudConnectedVerified":"Cloud Proxy tilsluttet og verificeret!","connectedVerificationPending":"Forbundet — bekræftelse afventer","connectedVerificationPendingWithError":"Forbundet — bekræftelse afventer: {error}","cloudDisabledSuccess":"Cloud deaktiveret","syncedSuccess":"Synkroniseret med succes","failedDisable":"Skyen kunne ikke deaktiveres","failedEnable":"Skyen kunne ikke aktiveres","cloudRequestTimeout":"Timeout for skyanmodning","cloudRequestFailed":"Cloud-anmodning mislykkedes","cloudWorkerUnreachable":"Kunne ikke nå cloud worker. Sørg for, at skytjenesten kører (npm kør dev i /cloud).","connectionFailed":"Forbindelsen mislykkedes","syncFailed":"Kunne ikke synkronisere skydata","providerModelsTitle":"{provider} — Modeller","noModelsForProvider":"Ingen tilgængelige modeller for denne udbyder.","chat":"Chat","embedding":"Indlejring","image":"Billede","custom":"skik","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Integrationsoverflade","sectionDescription":"OpenAI-kompatible API\'er og operationelle protokolendepunkter","tabApis":"OpenAI-kompatible API\'er","tabProtocols":"Protokoller","tabsAria":"Endepunktsafsnit","protocolsTitle":"Protokoller","protocolsDescription":"MCP og A2A er førsteklasses endepunkter med dedikeret observerbarhed og kontroller.","mcpCardTitle":"MCP-server","mcpCardDescription":"Modelkontekstprotokol over stdio","a2aCardTitle":"A2A-server","a2aCardDescription":"Agent2Agent JSON-RPC-endepunkt","protocolToolsLabel":"Værktøjer","protocolTasksLabel":"Opgaver","protocolActiveStreamsLabel":"Aktive streams","protocolLastActivity":"Seneste aktivitet","quickStart":"Kom hurtigt i gang","openMcpDashboard":"Åbn MCP-administration","openA2aDashboard":"Åbn A2A-administration","mcpQuickStartTitle":"Hurtig start","mcpQuickStartStep1":"Kør MCP-serveren via`omniroute --mcp`.","mcpQuickStartStep2":"Konfigurer din MCP-klient til at forbinde over stdio-transport.","mcpQuickStartStep3":"Påkald værktøjer som `omniroute_get_health` og `omniroute_list_combos`.","a2aQuickStartTitle":"Hurtig start","a2aQuickStartStep1":"Find agentkortet på`/.well-known/agent.json`.","a2aQuickStartStep2":"Send JSON-RPC-anmodninger til`POST /a2a`vedhjælp af `message/send` eller `message/stream`.","a2aQuickStartStep3":"Spor og kontroller opgaver ved hjælp af `tasks/get` og `tasks/cancel`.","completionsLegacy":"Completions (Legacy)","completionsLegacyDesc":"Legacy OpenAI text completions — accepts both prompt string and messages array format","categorySearch":"Search & Discovery","webSearch":"Web Search","webSearchDesc":"Unified web search across multiple providers with automatic failover and caching","searchProvider":"Search Provider","searchProviderDesc":"This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected."},"mcpDashboard":{"loading":"Indlæser MCP-dashboard...","activate":"aktivér","deactivate":"deaktiver","confirmSwitchCombo":"Bekræft {action} combo \\"{combo}\\"?","switchComboFailed":"Kunne ikke skifte kombinationstilstand.","switchComboSuccess":"Kombinationen \\"{combo}\\" er opdateret.","confirmApplyProfile":"Vil du anvende modstandsdygtighedsprofilen \\"{profile}\\"?","applyProfileFailed":"Kunne ikke anvende modstandsdygtighedsprofil.","applyProfileSuccess":"Profil \\"{profile}\\" er anvendt.","confirmResetBreakers":"Nulstil alle afbrydere?","resetBreakersFailed":"Kunne ikke nulstille afbrydere.","resetBreakersSuccess":"Afbrydere nulstilles.","processStatus":"Processtatus.","online":"Online","offline":"Offline","pid":"Underlivsbetaendelse","sessionUptime":"Sessionens oppetid","lastHeartbeat":"Sidste hjerteslag","activity24h":"Aktivitet (24 timer)","totalCalls":"Samlede kald","successRate":"54 IE/kg)","avgLatency":"Gns. ventetid","topTools":"Topværktøjer","noToolCalls24h":"Ingen værktøjsopkald inden for de sidste 24 timer.","runtimeDetails":"Kørselsoplysninger","transport":"Transport","scopesEnforced":"Omfang håndhævet","yes":"ja","no":"nej","lastCall":"Sidste opkald","heartbeatPath":"Hjerteslagssti","operationalControls":"Driftskontrol","switchCombo":"Skift combo","inactive":"inaktiv","active":"aktiv","activateCombo":"Aktiver combo","deactivateCombo":"Deaktiver combo","applyResilienceProfile":"Anvend modstandsdygtighedsprofil","profileAggressive":"aggressive","profileBalanced":"afbalanceret","profileConservative":"konservative","applyProfile":"Anvend profil","resetCircuitBreakers":"Nulstil afbrydere","resetCircuitBreakersHelp":"Rydder den aktuelle afbrydertilstand og fejltællere for udbydere.","resetAllBreakers":"Nulstil alle afbrydere","toolsAndScopes":"Værktøjer og scopes","tableTool":"Værktøj","tableScopes":"Omfang","tablePhase":"Fase","tableAudit":"Revision","auditLog":"Revisionslog","auditSummary":"Opkald: {total} | side {page} af {totalPages}","allTools":"Alle værktøjer","allResults":"Alle resultater","success":"Succes","failure":"Fejl","apiKeyIdPlaceholder":"apiKeyId","loadingAuditEntries":"Indlæser revisionsposter...","noAuditEntriesForFilters":"Ingen revisionsposter fundet for aktuelle filtre.","tableTimestamp":"Tidsstempel","tableDuration":"Varighed","tableResult":"Resultat","tableApiKey":"API nøgle","failed":"mislykkedes","previous":"Forrige","next":"Næste"},"a2aDashboard":{"loading":"Indlæser A2A-dashboard...","confirmCancelTask":"Vil du annullere opgave {taskId}?","cancelTaskFailed":"Opgaven kunne ikke annulleres.","cancelTaskSuccess":"Opgave {taskId} annulleret.","smokeSendFailed":"message/send smoke test failed.","smokeSendSuccessWithTask":"message/send ok (task {taskId}).","smokeSendSuccess":"message/send ok.","smokeStreamFailed":"message/stream smoke test failed.","smokeStreamSuccessWithTask":"message/stream ok (task {taskId}{stateSuffix}).","smokeStreamNoTaskId":"message/stream finished without task id.","health":"Health","ok":"ok","totalTasks":"Total tasks","activeStreams":"Aktive streams","lastTask":"Last task","taskStateOverview":"Task state overview","state":{"submitted":"submitted","working":"working","completed":"afsluttet","failed":"mislykkedes","cancelled":"annulleret"},"agentCard":"Agentkort","version":"Version","url":"URL","capabilities":"Evner","agentCardNotAvailable":"Agentkort er ikke tilgængeligt.","quickValidation":"Hurtig validering","quickValidationDescription":"Udfører røgopkald gennem live `/a2a` slutpunktet.","runMessageSend":"Run message/send","runMessageStream":"Run message/stream","taskManagement":"Task management","taskSummary":"{total} tasks | page {page} of {totalPages}","allStates":"all","allSkills":"all skills","loadingTasks":"Loading tasks...","noTasksForFilters":"No tasks found for current filters.","tableTask":"Task","tableSkill":"Skill","tableState":"State","tableUpdated":"Updated","tableActions":"Handlinger","view":"Udsigt","cancel":"Ophæve","previous":"Forrige","next":"Næste","taskDetail":"Opgavedetaljer","close":"Tæt","metadata":"Metadata","events":"Begivenheder","artifacts":"Artefakter"},"health":{"title":"Systemsundhed","description":"Realtidsovervågning af din OmniRoute-instans","healthy":"Sundt","degraded":"Nedbrudt","down":"Ned","uptime":"Oppetid","memory":"Hukommelse","memoryRss":"Hukommelse (RSS)","heap":"Dynge","cpu":"CPU","database":"Database","version":"version","lastCheck":"Sidste kontrol","providerHealth":"Udbyder sundhed","systemMetrics":"System Metrics","tokenHealth":"Token Health","refreshAll":"Opdater alle","checkNow":"Tjek nu","loadingHealth":"Indlæser sundhedsdata...","failedToLoad":"Kunne ikke indlæse sundhedsdata: {error}","retry":"Prøv igen","allOperational":"Alle systemer i drift","issuesDetected":"Systemproblemer opdaget","updatedAt":"Opdateret {time}","latency":"Latency","latencyP50":"p50","latencyP95":"s95","latencyP99":"s99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Samlet antal anmodninger","noDataYet":"Ingen data endnu","promptCache":"Spørg cache","entries":"Indgange","hitRate":"Hitrate","hitsMisses":"Hits / Misses","signatureCache":"Signatur cache","signatureDefaults":"Standarder","signatureTool":"Værktøj","signatureFamily":"Familie","signatureSession":"Session","recovering":"Gendannelse","noCBData":"Ingen strømafbryderdata tilgængelige. Kom med nogle anmodninger først.","providerHealthStatusAria":"Udbyder sundhedsstatus","issuesLabel":"Problemer opdaget","operational":"Operationel","providers":"Udbydere","healthyCount":"{count} sund","nodeVersion":"Node {version}","failures":"{count} fejl","failuresPlural":"{count} fejl","lastFailure":"Sidst","rateLimitStatus":"Prisgrænsestatus","activeLimiters":"{count} aktiv begrænser","activeLimitersPlural":"{count} aktive begrænsere","queued":"I kø","queuedCount":"{count} i kø","running":"løb","runningCount":"{count} kører","ok":"OK","activeLockouts":"Aktive lockouts","resetConfirm":"Nulstille alle afbrydere til sund tilstand? Dette vil rydde alle fejloptællinger og gendanne alle udbydere til driftsstatus.","resetAllTitle":"Nulstil alle afbrydere til sund tilstand","resetting":"Nulstiller...","resetAll":"Nulstil alle","until":"Indtil {time}","activeProviders":"{count} active","monitoredProviders":"{count} monitored","configuredProvidersLabel":"Konfigureret i dashboard","configuredProvidersHint":"Udbydere med legitimationsoplysninger gemt i /dashboard/udbydere, uanset køretidstilstand.","activeProvidersHint":"Konfigurerede udbydere, der i øjeblikket er aktiveret for routinganmodninger.","monitoredProvidersHint":"Udbydere, der i øjeblikket spores af strømafbryderens sundhedsmonitorer."},"limits":{"title":"Grænser og kvoter","rateLimit":"Satsgrænse","remaining":"Tilbage","requestsPerMinute":"Forespørgsler/min","tokensPerMinute":"Poletter/min","dailyLimit":"Daglig grænse"},"logs":{"title":"Logs","requestLogs":"Anmod om logs","proxyLogs":"Proxy logs","auditLog":"Revisionslog","console":"Konsol","auditLogDesc":"Administrative handlinger og sikkerhedshændelser","loading":"Indlæser...","refresh":"Opdater","filterByAction":"Filtrer efter handling...","filterByActor":"Filtrer efter skuespiller...","filterEntriesAria":"Filtrer revisionslogposter","filterByActionTypeAria":"Filtrer efter handlingstype","filterByActorAria":"Filtrer efter skuespiller","refreshAuditLogAria":"Opdater revisionslog","tableAria":"Revisionslogposter","failedFetchAuditLog":"Kunne ikke hente revisionslog","showing":"Viser {count} poster (offset {offset})","search":"Søg","timestamp":"Tidsstempel","action":"Handling","actor":"Skuespiller","target":"Mål","details":"Detaljer","ipAddress":"IP-adresse","notAvailable":"—","noEntries":"Ingen revisionslogposter fundet","previous":"Forrige","next":"Næste"},"onboarding":{"welcome":"Velkommen","security":"Sikkerhed","test":"Test","ready":"Klar!","setPassword":"Indstil adgangskode","addProvider":"Tilføj din første udbyder","getStarted":"Kom i gang","skip":"Spring over","skipWizard":"Spring guiden helt over","skipPassword":"Spring adgangskodeopsætning over","skipAndContinue":"Spring over og fortsæt","passwordLabel":"Adgangskode","confirmPassword":"Bekræft adgangskode","enterPassword":"Indtast adgangskode","confirmPasswordPlaceholder":"Bekræft adgangskode","passwordsMismatch":"Adgangskoder stemmer ikke overens","setupComplete":"Opsætning fuldført!","goToDashboard":"Gå til Dashboard →","welcomeDesc":"OmniRoute er din lokale AI API-proxy. Det dirigerer anmodninger til flere AI-udbydere med belastningsbalancering, failover og brugssporing.","multiProvider":"Multi-udbyder","usageTracking":"Brugssporing","apiKeyMgmt":"API Key Mgmt","securityDesc":"Indstil en adgangskode for at beskytte dit dashboard, eller spring over indtil videre.","providerDesc":"Tilslut din første AI-udbyder. Du kan tilføje flere senere.","apiKeyRequired":"API-nøgle (påkrævet)","customUrlOptional":"Tilpasset webadresse (valgfrit)","testDesc":"Lad os kontrollere, at din udbyderforbindelse fungerer.","runTest":"Kør forbindelsestest","testingConnection":"Tester forbindelse...","connectionSuccessful":"Forbindelsen lykkedes! Din udbyder er klar.","noProviderFound":"Ingen udbyder fundet. Du kan tilføje en fra dashboardet senere.","testFailed":"Test mislykkedes, men du kan konfigurere dette senere.","couldNotTest":"Kunne ikke teste lige nu. Du kan teste fra dashboardet.","doneDesc":"Du er klar! Din OmniRoute-instans er konfigureret og klar til proxy AI-anmodninger.","yourEndpoint":"Dit slutpunkt:","continue":"Fortsæt","retry":"Prøv igen","failedSetPassword":"Kunne ikke indstille adgangskoden. Prøv igen.","failedAddProvider":"Kunne ikke tilføje udbyder. Prøv igen.","connectionError":"Forbindelsesfejl. Prøv venligst igen.","provider":"Udbyder"},"providers":{"title":"Udbydere","addProvider":"Tilføj udbyder","editProvider":"Rediger udbyder","deleteProvider":"Slet udbyder","noProviders":"Ingen udbydere er konfigureret","modelAvailability":"Modeltilgængelighed","accounts":"Regnskaber","newAccount":"Ny konto","deleteConfirm":"Er du sikker på, at du vil slette denne udbyder?","testing":"Tester...","testConnection":"Test forbindelse","testSuccess":"Forbindelsen lykkedes","testFailed":"Forbindelsen mislykkedes","available":"Tilgængelig","cooldown":"Nedkøling","unavailable":"Ikke tilgængelig","unknown":"Ukendt","oauthLabel":"OAuth","compatibleLabel":"Kompatibel","chat":"Chat","responses":"Svar","messages":"Beskeder","oauthProviders":"OAuth-udbydere","freeProviders":"Gratis udbydere","apiKeyProviders":"API-nøgleudbydere","compatibleProviders":"API Key-kompatible udbydere","testAll":"Test alle","testAllOAuth":"Test alle OAuth-forbindelser","testAllFree":"Test alle gratis forbindelser","testAllApiKey":"Test alle API-nøgleforbindelser","testAllCompatible":"Test alle kompatible forbindelser","connected":"{count} Forbundet","errorCount":"{count} Fejl ({code})","errorCountNoCode":"{count} Fejl","noConnections":"Ingen forbindelser","disabled":"Deaktiveret","enableProvider":"Aktiver udbyder","disableProvider":"Deaktiver udbyder","testResults":"Testresultater","noCompatibleYet":"Ingen kompatible udbydere tilføjet endnu","compatibleHint":"Brug knapperne ovenfor til at tilføje OpenAI- eller Anthropic-kompatible slutpunkter","addOpenAICompatible":"Tilføj OpenAI-kompatibel","addAnthropicCompatible":"Tilføj Antropisk kompatibel","addNewProvider":"Tilføj ny udbyder","backToProviders":"Tilbage til Udbydere","configureNewProvider":"Konfigurer en ny AI-udbyder til brug med dine applikationer.","providerLabel":"Udbyder","selectProvider":"Vælg en udbyder","selectedProvider":"Udvalgt udbyder","authMethod":"Autentificeringsmetode","apiKeyLabel":"API nøgle","apiKeyRequired":"API-nøgle er påkrævet","selectProviderRequired":"Vælg venligst en udbyder","enterApiKey":"Indtast din API-nøgle","apiKeySecure":"Din API-nøgle vil blive krypteret og opbevaret sikkert.","oauth2Connect":"Opret forbindelse til OAuth2","oauth2Label":"OAuth2","oauth2Desc":"Tilslut din konto ved hjælp af OAuth2-godkendelse.","displayName":"Vist navn","displayNamePlaceholder":"f.eks. Production API, Dev Environment","displayNameHint":"Valgfrit. Et venligt navn til at identificere denne konfiguration.","active":"Aktiv","activeDescription":"Aktiver denne udbyder til brug i dine applikationer","cancel":"Annuller","createProvider":"Opret udbyder","failedCreate":"Kunne ikke oprette udbyder","errorOccurred":"Der opstod en fejl. Prøv venligst igen.","modelStatus":"Modelstatus","allModelsOperational":"Alle modeller i drift","modelsWithIssues":"{count} model(er) med problemer","allModelsNormal":"Alle modeller reagerer normalt.","cooldownCleared":"Nedkøling ryddet for {model}","failedClearCooldown":"Kunne ikke rydde nedkøling","loadingAvailability":"Indlæser modeltilgængelighed...","clearCooldown":"Ryd","clearing":"Rydder...","until":"Indtil {time}","providerTestFailed":"Providertest mislykkedes","modeTest":"{mode} Test","passedCount":"{count} bestået","failedCount":"{count} mislykkedes","testedCount":"{count} testet","millisecondsAbbr":"{value}ms","okShort":"OK","errorShort":"FEJL","noActiveConnectionsInGroup":"Der blev ikke fundet nogen aktive forbindelser til denne gruppe.","allTestsPassed":"Alle {total} tests bestået","testSummary":"{passed}/{total} bestået, {failed} mislykkedes","nameLabel":"Navn","prefixLabel":"Præfiks","baseUrlLabel":"Basis URL","apiTypeLabel":"API type","prefixHint":"Påkrævet. Unikt præfiks for modelnavne.","nameHint":"Påkrævet. En venlig etiket til denne node.","baseUrlHint":"Påkrævet. Udbyder API base URL.","anthropicPrefixPlaceholder":"ac-prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Bekræft forbindelsen","validating":"Validerer...","connectionValid":"Forbindelsen er gyldig!","connectionFailed":"Forbindelsen mislykkedes. Tjek URL og nøgle.","testKeyLabel":"Test API-nøgle","testKeyPlaceholder":"sk-... (kun til validering)","providerNotFound":"Udbyder blev ikke fundet","deleteConnectionConfirm":"Vil du slette denne forbindelse?","failedSetAlias":"Aliaset kunne ikke indstilles","failedSaveConnection":"Forbindelsen kunne ikke gemmes","failedSaveConnectionRetry":"Forbindelsen kunne ikke gemmes. Prøv venligst igen.","failedRetestConnection":"Forbindelsen kunne ikke gentestes","deleteCompatibleNodeConfirm":"Vil du slette denne {type}-kompatible node?","anthropicCompatibleDetails":"Antropiske kompatible detaljer","openaiCompatibleDetails":"OpenAI-kompatible detaljer","messagesApi":"Beskeder API","responsesApi":"Responses API","chatCompletions":"Chatafslutninger","importingModels":"Importerer...","importFromModels":"Importer fra /models","clearAllModels":"Ryd alle modeller","clearAllModelsConfirm":"Er du sikker på, at du vil fjerne alle modeller for denne udbyder? Dette kan ikke fortrydes.","clearAllModelsSuccess":"Alle modeller ryddet","clearAllModelsFailed":"Det lykkedes ikke at rydde modeller","addConnectionToImport":"Tilføj en forbindelse for at aktivere import.","noModelsConfigured":"Ingen modeller konfigureret","connectionCount":"{count} forbindelse(r)","fetchingModels":"Henter tilgængelige modeller...","failedFetchModels":"Kunne ikke hente modeller","noModelsFound":"Ingen modeller fundet","importFailed":"Import mislykkedes","noNewModelsAdded":"Der blev ikke tilføjet nye modeller.","adding":"Tilføjer...","importingModelsTitle":"Import af modeller","copyModel":"Kopi model","removeModel":"Fjern modellen","rateLimitProtected":"Beskyttet","rateLimitUnprotected":"Ubeskyttet","enableRateLimitProtection":"Klik for at aktivere hastighedsgrænsebeskyttelse","disableRateLimitProtection":"Klik for at deaktivere satsgrænsebeskyttelse","productionKey":"Produktionsnøgle","enterNewApiKey":"Indtast ny API-nøgle","optional":"Valgfrit","anthropicCompatibleName":"Antropisk kompatibel","openaiCompatibleName":"OpenAI-kompatibel","failedImportModels":"Kunne ikke importere modeller","noModelsReturnedFromEndpoint":"Ingen modeller returneret fra /models slutpunkt.","importingModelsProgress":"Importerer {current} af {total} modeller...","foundModelsStartingImport":"Fundet {count} modeller. Starter import...","importingModelById":"Importerer {modelId}...","importSuccessCount":"{count, plural, one {# model} other {# models}} blev importeret med succes!","noNewModelsAddedExisting":"Ingen nye modeller blev tilføjet (alle findes allerede).","importDoneCount":"✓ Færdig! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Der opstod en uventet fejl","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"beskeder","responsesPath":"svar","chatCompletionsPath":"chat/afslutninger","add":"Tilføj","edit":"Rediger","delete":"Slet","anthropic":"Antropisk","openai":"OpenAI","singleConnectionPerCompatible":"Kun én forbindelse er tilladt pr. kompatibel node. Tilføj en anden node, hvis du har brug for flere forbindelser.","connections":"Forbindelser","providerProxyTitleConfigured":"Udbyder proxy: {host}","configured":"konfigureret","providerProxyConfigureHint":"Konfigurer proxy for alle forbindelser fra denne udbyder","providerProxy":"Udbyder proxy","noConnectionsYet":"Ingen forbindelser endnu","addFirstConnectionHint":"Tilføj din første forbindelse for at komme i gang","addConnection":"Tilføj forbindelse","availableModels":"Tilgængelige modeller","pageAutoRefresh":"Siden opdateres automatisk...","statusDisabled":"deaktiveret","statusConnected":"tilsluttet","statusRuntimeIssue":"runtime problem","statusAuthFailed":"godkendelse mislykkedes","statusRateLimited":"sats begrænset","statusNetworkIssue":"netværksproblem","statusTestUnsupported":"test ikke understøttet","statusUnavailable":"ikke tilgængelig","statusFailed":"mislykkedes","statusError":"fejl","oauthAccount":"OAuth-konto","errorTypeRuntime":"Lokal køretid","errorTypeUpstreamAuth":"Opstrøms auth","errorTypeMissingCredential":"Manglende legitimationsoplysninger","errorTypeRefreshFailed":"Opdatering mislykkedes","errorTypeTokenExpired":"Token er udløbet","errorTypeRateLimited":"Sats begrænset","errorTypeUpstreamUnavailable":"Upstream ikke tilgængelig","errorTypeNetworkError":"Netværksfejl","errorTypeTestUnsupported":"Test understøttes ikke","errorTypeUpstreamError":"Opstrøms fejl","proxySourceGlobal":"Globalt","proxySourceProvider":"Udbyder","proxySourceKey":"Nøgle","proxyConfiguredBySource":"Proxy ({source}): {host}","autoPriority":"Auto: {priority}","proxy":"Fuldmagt","retestAuthentication":"Gentest godkendelse","retest":"Gentest","disableConnection":"Deaktiver forbindelse","enableConnection":"Aktiver forbindelse","reauthenticateConnection":"Genautentificer denne forbindelse","proxyConfig":"Proxy konfiguration","aliasExistsAlert":"Aliaset \\"{alias}\\" findes allerede. Brug venligst en anden model, eller rediger eksisterende alias.","openRouterAnyModelHint":"OpenRouter understøtter enhver model. Tilføj modeller og opret aliaser for hurtig adgang.","modelIdFromOpenRouter":"Model ID (fra OpenRouter)","openRouterModelPlaceholder":"antropisk/claude-3-opus","customModels":"Brugerdefinerede modeller","customModelsHint":"Tilføj model-id\'er, der ikke er på standardlisten. Disse vil være tilgængelige for routing.","modelId":"Model ID","customModelPlaceholder":"f.eks. gpt-4.5-turbo","loading":"Indlæser...","removeCustomModel":"Fjern brugerdefineret model","noCustomModels":"Ingen brugerdefinerede modeller tilføjet endnu.","allSuggestedAliasesExist":"Alle foreslåede aliasser findes allerede. Vælg venligst en anden model, eller fjern modstridende aliasser.","failedSaveCustomModel":"Kunne ikke gemme den tilpassede model","modelAddedSuccess":"Model {modelId} blev tilføjet","failedAddModelTryAgain":"Kunne ikke tilføje model. Prøv venligst igen.","failedSaveImportedModel":"Kunne ikke gemme importeret model til brugerdefineret database","failedImportModelsTryAgain":"Kunne ikke importere modeller. Prøv venligst igen.","failedRemoveModelFromDatabase":"Kunne ikke fjerne modellen fra databasen","modelRemovedSuccess":"Modellen blev fjernet","failedDeleteModelTryAgain":"Modellen kunne ikke slettes. Prøv venligst igen.","compatibleModelsDescription":"Tilføj {type}-kompatible modeller manuelt eller importer dem fra /models-slutpunktet.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"API-nøglevalidering mislykkedes. Tjek venligst din nøgle og prøv igen.","addProviderApiKeyTitle":"Tilføj {provider} API-nøgle","checking":"Tjekker...","check":"Tjek","valid":"Gyldig","invalid":"Ugyldig","creating":"Opretter...","validationChecksAnthropicCompatible":"Validering kontrollerer {provider} ved at bekræfte API-nøglen.","validationChecksOpenAiCompatible":"Valideringstjek {provider} via /models på din basis-URL.","priorityLabel":"Prioritet","saving":"Gemmer...","save":"Gem","editConnection":"Rediger forbindelse","accountName":"Kontonavn","email":"E-mail","healthCheckMinutes":"Sundhedstjek (min)","healthCheckHint":"Proaktivt token-opdateringsinterval. 0 = deaktiveret.","groupLabel":"Environment","groupPlaceholder":"e.g. eKaizen, Personal","failedTestConnection":"Forbindelsen kunne ikke testes","failed":"Mislykkedes","leaveBlankKeepCurrentApiKey":"Lad stå tomt for at beholde den aktuelle API-nøgle.","editCompatibleTitle":"Rediger {type} Kompatibel","compatibleBaseUrlHint":"Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.","apiKeyForCheck":"API-nøgle (til check)","compatibleProdPlaceholder":"{type} Kompatibel (Prod)","providerTestTimeout":"Provider test timed out — too many connections to test at once","advancedSettings":"Advanced Settings","chatPathLabel":"Chat Endpoint Path","chatPathPlaceholder":"/chat/completions","chatPathHint":"Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)","modelsPathLabel":"Models Endpoint Path","modelsPathPlaceholder":"/models","modelsPathHint":"Custom models path for validation (e.g. /v4/models)","builtInModels":"Built-in models","builtInModelsHint":"Registry models for this provider. Use the pencil to set compatibility options.","normalizeToolCallIdLabel":"Normalize tool call IDs to 9 characters (e.g. Mistral)","preserveDeveloperRoleLabel":"Keep OpenAI Responses developer role (do not map to system)","compatAdjustmentsTitle":"Compatibility","compatButtonLabel":"Compatibility","compatToolIdShort":"Tool ID 9","compatDeveloperShort":"Developer role","compatDoNotPreserveDeveloper":"Do not preserve developer role","compatBadgeNoPreserve":"No preserve","compatProtocolLabel":"Client request protocol","compatProtocolHint":"These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).","compatProtocolOpenAI":"OpenAI Chat Completions","compatProtocolOpenAIResponses":"OpenAI Responses API","compatProtocolClaude":"Anthropic Messages","tokenRefreshed":"Token refreshed successfully","tokenRefreshFailed":"Token refresh failed","compatBadgeUpstreamHeaders":"Headers","compatUpstreamAddRow":"Add header","compatUpstreamHeaderName":"Header name","compatUpstreamHeaderValue":"Value","compatUpstreamHeadersHint":"High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.","compatUpstreamHeadersLabel":"Extra upstream headers","compatUpstreamRemoveRow":"Remove row","autoSync":"Auto-synkronisering","autoSyncTooltip":"Opdater modellisten automatisk hver 24. time (kan konfigureres via MODEL_SYNC_INTERVAL_HOURS)","autoSyncEnabled":"Automatisk synkronisering aktiveret - modellerne opdateres med jævne mellemrum","autoSyncDisabled":"Automatisk synkronisering deaktiveret","autoSyncToggleFailed":"Automatisk synkronisering kunne ikke slås til eller fra","allModelsAlreadyImported":"Alle modeller er allerede importeret","noNewModelsToImport":"Ingen nye modeller at importere — alle modeller findes allerede i registreret eller brugerdefineret liste","skippingExistingModels":"Springer {count} eksisterende modeller over"},"settings":{"title":"Indstillinger","general":"Generelt","security":"Sikkerhed","appearance":"Udseende","routing":"Routing","cache":"Cache","resilience":"Modstandsdygtighed","systemPrompt":"Systemprompt","thinkingBudget":"Tænke budget","proxy":"Fuldmagt","pricing":"Prissætning","storage":"Opbevaring","policies":"Politikker","ipFilter":"IP-filter","comboDefaults":"Combo standarder","fallbackChains":"Fallback kæder","changePassword":"Skift adgangskode","enablePassword":"Aktiver adgangskode","darkMode":"Mørk tilstand","lightMode":"Lys tilstand","systemTheme":"System tema","enableCache":"Aktiver cache","cacheTTL":"Cache TTL","maxCacheSize":"Max cachestørrelse","clearCache":"Ryd cache","cacheHits":"Cache hits","cacheMisses":"Cache misses","hitRate":"Hitrate","cacheEntries":"Cache-indtastninger","circuitBreaker":"Strømafbryder","retryPolicy":"Politik for forsøg igen","maxRetries":"Max forsøger igen","retryDelay":"Forsink igen","timeoutMs":"Timeout (ms)","enableSystemPrompt":"Aktiver systemprompt","systemPromptText":"Systemprompttekst","enableThinking":"Aktiver tænkning","maxThinkingTokens":"Max Thinking Tokens","enableProxy":"Aktiver proxy","proxyUrl":"Proxy-URL","pricingRates":"Prisformat","currentPricing":"Aktuel prisoversigt","loadingPricing":"Indlæser prisdata...","noPricing":"Ingen tilgængelige prisdata","input":"Input","output":"Output","cached":"Cachelagret","reasoning":"Ræsonnement","cacheCreation":"Oprettelse af cache","customPricing":"Tilpasset prisfastsættelse","databaseSize":"Database størrelse","backupDb":"Backup database","restoreDb":"Gendan database","exportData":"Eksporter data","importData":"Importer data","clearData":"Ryd alle data","clearDataConfirm":"Dette vil permanent slette alle data. Er du sikker?","enableRequestLogs":"Aktiver anmodningslogfiler","logRetention":"Logopbevaring","ipWhitelist":"IP hvidliste","ipBlacklist":"IP sortliste","addIP":"Tilføj IP","savedSuccessfully":"Indstillinger blev gemt","ai":"AI","advanced":"Avanceret","localMode":"Lokal tilstand — Alle data gemt på din maskine","settingsSectionsAria":"Indstillinger sektioner","switchThemes":"Skift mellem lyse og mørke temaer","themeSelectionAria":"Valg af tema","themeLight":"Lys","themeDark":"Mørk","themeSystem":"System","hideHealthLogs":"Skjul logs til sundhedstjek","hideHealthLogsDesc":"Når ON, skal du undertrykke [HealthCheck]-meddelelser i serverkonsollen","themeAccent":"Temafarve","themeAccentDesc":"Vælg en forudindstillet farve eller opret dit eget tema med én farve","themeCreate":"Opret tema","themeCustom":"Brugerdefineret tema","themeBlue":"Blå","themeRed":"Rød","themeGreen":"Grøn","themeViolet":"Lilla","themeOrange":"Orange","themeCyan":"Cyan","promptCache":"Spørg cache","flushCache":"Skyl cache","flushing":"Skyller...","size":"Størrelse","hits":"Hits","evictions":"Udsættelser","loadingCacheStats":"Indlæser cachestatistik...","globalProxy":"Global proxy","globalProxyDesc":"Konfigurer en global udgående proxy for alle API-kald. Individuelle udbydere, kombinationer og nøgler kan tilsidesætte dette.","noGlobalProxy":"Ingen global proxy konfigureret","globalLabel":"Globalt","configure":"Konfigurer","globalSystemPrompt":"Global System Prompt","systemPromptDesc":"Injiceret i alle anmodninger på proxy-niveau","saved":"Gemt","systemPromptPlaceholder":"Indtast systemprompt for at injicere i alle anmodninger...","systemPromptHint":"Denne prompt er sat foran systemmeddelelsen for hver anmodning. Bruges til globale instruktioner, sikkerhedsretningslinjer eller regler for svarformatering.","chars":"{count} tegn","thinkingBudgetTitle":"Tænke budget","thinkingBudgetDesc":"Kontroller brugen af AI-ræsonnementstoken på tværs af alle anmodninger","passthrough":"Gennemløb","passthroughDesc":"Ingen ændringer - klienten styrer tænkebudgettet","auto":"Auto","autoDesc":"Fjern al tænkekonfig - lad udbyderen bestemme","custom":"Brugerdefineret","customDesc":"Indstil et fast token-budget for alle anmodninger","adaptive":"Adaptiv","adaptiveDesc":"Skaler budget baseret på anmodningens kompleksitet","effortNone":"Ingen (0 tokens)","effortLow":"Lav (1K tokens)","effortMedium":"Medium (10.000 tokens)","effortHigh":"Høj (128K tokens)","tokenBudget":"Token budget","tokens":"tokens","baseEffortLevel":"Basisindsatsniveau","adaptiveHint":"Adaptiv tilstand skaleres fra dette basisniveau baseret på antal meddelelser, værktøjsbrug og promptlængde.","requireLogin":"Kræv login","requireLoginDesc":"Når ON, kræver dashboard adgangskode. Når OFF, adgang uden login.","currentPassword":"Nuværende adgangskode","enterCurrentPassword":"Indtast den aktuelle adgangskode","newPassword":"Ny adgangskode","enterNewPassword":"Indtast ny adgangskode","confirmPassword":"Bekræft ny adgangskode","confirmPasswordPlaceholder":"Bekræft ny adgangskode","passwordsNoMatch":"Adgangskoder stemmer ikke overens","passwordUpdated":"Adgangskoden blev opdateret","failedUpdatePassword":"Kunne ikke opdatere adgangskoden","errorOccurred":"Der opstod en fejl","updatePassword":"Opdater adgangskode","setPassword":"Indstil adgangskode","apiEndpointProtection":"API-endepunktsbeskyttelse","requireAuthModels":"Kræv API-nøgle til /models","requireAuthModelsDesc":"Når ON, returnerer /v1/models-slutpunktet 404 for ikke-godkendte anmodninger. Forhindrer modelopdagelse af uautoriserede brugere.","blockedProviders":"Blokerede udbydere","blockedProvidersDesc":"Skjul specifikke udbydere fra /v1/models-svaret. Blokerede udbydere vises ikke i modellister.","providersBlocked":"{count} udbyder(e) blokeret fra /modeller","blockProviderTitle":"Bloker {provider}","unblockProviderTitle":"Fjern blokering af {provider}","routingStrategy":"Rutestrategi","fillFirst":"Fyld først","fillFirstDesc":"Brug konti i prioriteret rækkefølge","roundRobin":"Round Robin","roundRobinDesc":"Gennemgå alle konti","p2c":"P2C","p2cDesc":"Vælg 2 tilfældige, brug den sundere","random":"Tilfældig","randomDesc":"Tilfældig konto hver anmodning","leastUsed":"Mindst brugt","leastUsedDesc":"Vælg den mindst brugte konto","costOpt":"Omkostningsopt","costOptDesc":"Foretrækker den billigste tilgængelige konto","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each account once before reshuffling","stickyLimit":"Sticky Limit","stickyLimitDesc":"Opkald pr. konto før skift","modelAliases":"Model aliaser","modelAliasesTitle":"Model Aliaser","modelAliasesDesc":"Wildcard-mønstre til omlægning af modelnavne • Brug * og ?","addCustomAlias":"Tilføj Tilpasset Alias","deprecatedModelId":"Forældet model-ID","newModelId":"Nyt model-ID","customAliases":"Tilpassede Aliaser","builtInAliases":"Indbyggede Aliaser","backgroundDegradationTitle":"Baggrundsopgave Degradering","backgroundDegradationDesc":"Opdager automatisk baggrundsopgaver (titler, resuméer) og dirigerer til billigere modeller","enableDegradation":"Aktiver Baggrundsdegradation","enableDegradationHint":"Når aktiveret, dirigeres baggrundsopgaver som titelgenerering og resuméer automatisk til billigere modeller","tasksDetected":"Opgaver opdaget","degradationMap":"Modeldegraderingsschema","premiumModel":"Premium model","cheapModel":"Billig model","detectionPatterns":"Detektionsmønstre","newPattern":"f.eks. \\"generer en titel\\"","aliasPatternPlaceholder":"claude-sonnet-*","aliasTargetPlaceholder":"claude-sonnet-4-20250514","pattern":"Mønster","targetModel":"Målmodel","add":"+ Tilføj","session":"Session","sessionDetailsAria":"Session detaljer","status":"Status","authenticated":"Autentificeret","guest":"Gæst","loginTime":"Login tid","sessionAge":"Session Alder","browser":"Browser","clearLocalData":"Ryd lokale data","logout":"Log ud","clearLocalDataConfirm":"Vil du rydde alle lokale data? Dette vil nulstille dine præferencer.","unknown":"Ukendt","systemActor":"system","ipAccessControl":"IP adgangskontrol","ipAccessControlDesc":"Bloker eller tillad specifikke IP-adresser","ipModeDisabled":"Deaktiveret","ipModeBlacklist":"Sortliste","ipModeWhitelist":"Hvidliste","ipModeWhitelistPriority":"WL prioritet","addIpAddress":"Tilføj IP-adresse","ipAddressPlaceholder":"192.168.1.0/24 eller 10.0.*.*","block":"+ Bloker","allow":"+ Tillad","blocked":"Blokeret ({count})","allowed":"Tilladt ({count})","temporaryBans":"Midlertidige forbud ({count})","minLeft":"{min}m tilbage","auditLog":"Revisionslog","searchAuditLogs":"Søg i revisionslogfiler...","failedLoadAuditLog":"Kunne ikke indlæse revisionslog","noAuditEvents":"Ingen revisionsbegivenheder fundet","action":"Handling","actor":"Skuespiller","details":"Detaljer","time":"Tid","fallbackChainsTitle":"Fallback kæder","fallbackChainsDesc":"Definer udbyderens reserveordre pr. model","addChain":"+ Tilføj kæde","modelName":"Model navn","modelNamePlaceholder":"claude-sonnet-4-20250514","providersCommaSeparated":"Udbydere (kommasepareret, i prioriteret rækkefølge)","providersCommaSeparatedPlaceholder":"antropisk, openai, gemini","createChain":"Opret kæde","noFallbackChains":"Ingen Fallback-kæder","noFallbackChainsDesc":"Opret en kæde for at definere udbyderens reserveordre for en model.","loadingFallbackChains":"Indlæser reservekæder...","deleteChainConfirm":"Vil du slette reservekæden for \\"{model}\\"?","chainCreated":"Kæde oprettet til {model}","chainDeleted":"Kæde slettet for {model}","failedCreateChain":"Kunne ikke oprette kæde","failedDeleteChain":"Kæden kunne ikke slettes","deleteChain":"Slet kæde","fillModelAndProviders":"Udfyld venligst modelnavn og udbydere","addAtLeastOneProvider":"Tilføj mindst én udbyder","comboDefaultsTitle":"Combo standarder","globalComboConfig":"Global combo-konfiguration","defaultStrategy":"Standardstrategi","defaultStrategyDesc":"Anvendt på nye kombinationer uden eksplicit strategi","comboStrategyAria":"Kombinationsstrategi","priority":"Prioritet","weighted":"Vægtet","maxRetriesLabel":"Max forsøger igen","retryDelayLabel":"Forsinkelse af forsøg igen (ms)","timeoutLabel":"Timeout (ms)","healthCheck":"Sundhedstjek","healthCheckDesc":"Forhåndstjek udbyderens tilgængelighed","trackMetrics":"Spor metrics","trackMetricsDesc":"Optag pr-kombinationsanmodningsmetrics","providerOverrides":"Udbydertilsidesættelser","providerOverridesDesc":"Tilsidesæt timeout og genforsøg pr. udbyder. Udbyderindstillinger tilsidesætter globale standardindstillinger.","providerMaxRetriesAria":"{provider} maks. genforsøg","providerTimeoutAria":"{provider} timeout ms","removeProviderOverrideAria":"Fjern {provider} tilsidesættelse","newProviderNamePlaceholder":"f.eks. google, åben...","newProviderNameAria":"Nyt udbydernavn","retries":"forsøger igen","ms":"ms","saveComboDefaults":"Gem Combo-standarder","maxNestingDepth":"Maks. rededybde","concurrencyPerModel":"Samtidighed / Model","queueTimeout":"Timeout for kø (ms)","providerProfiles":"Udbyder profiler","providerProfilesDesc":"Separate indstillinger for modstandsdygtighed for OAuth (session-baserede) og API Key (målte) udbydere. OAuth-udbydere har strengere tærskler på grund af lavere takstgrænser.","oauthProviders":"OAuth-udbydere","apiKeyProviders":"API-nøgleudbydere","transientCooldown":"Forbigående nedkøling","rateLimitCooldown":"Rate Limit Cooldown","maxBackoffLevel":"Max Backoff Level","cbThreshold":"CB-tærskel","cbResetTime":"CB-nulstillingstid","rateLimiting":"Satsbegrænsende","rateLimitingDesc":"API-nøgleudbydere er automatisk hastighedsbegrænsede med sikre standardindstillinger. Grænser læres fra svaroverskrifter og tilpasses over tid.","defaultSafetyNet":"Standard sikkerhedsnet","rpm":"RPM","minGap":"Min Gap","maxConcurrent":"Max samtidig","activeLimiters":"Aktive begrænsere","noActiveLimiters":"Ingen aktive hastighedsbegrænsere endnu.","reservoir":"Reservoir","running":"Løb","queued":"I kø","circuitBreakers":"Strømafbrydere","breakerStateClosed":"Lukket","breakerStateOpen":"Åbn","breakerStateHalfOpen":"Halvåbent","tripped":"{count} udløste","healthy":"{count} sund","resetAll":"Nulstil alle","noCircuitBreakers":"Ingen afbrydere aktive endnu. De oprettes automatisk, når anmodninger strømmer gennem den kombinerede pipeline.","failures":"{count} fejl(er)","policiesLocked":"Politikker og låste identifikatorer","allOperational":"Alle systemer fungerer - ingen lockouts eller udløste afbrydere","loadingPolicies":"Indlæser politikker...","lockedIdentifiers":"Låste identifikatorer","unlockedIdentifier":"Ulåst: {identifier}","sinceDate":"siden {date}","forceUnlock":"Tving oplåsning","unlocking":"Låser op...","failedUnlock":"Kunne ikke låse op","failedLoadWithStatus":"Kunne ikke indlæse: {status}","failedLoadResilience":"Kunne ikke indlæse modstandsdygtighedsstatus","saveFailed":"Gem mislykkedes","resetFailed":"Nulstilling mislykkedes","loadingResilience":"Indlæser modstandsdygtighedsstatus...","retry":"Prøv igen","systemStorage":"System & Opbevaring","allDataLocal":"Alle data gemt lokalt på din maskine","databasePath":"Databasesti","exportDatabase":"Eksporter database","exportAll":"Eksporter alle (.tar.gz)","importDatabase":"Importer database","confirmDbImport":"Bekræft databaseimport","confirmDbImportDesc":"Dette vil erstatte alle aktuelle data med indholdet fra {file}. Der oprettes automatisk en sikkerhedskopi før importen.","yesImport":"Ja, import","lastBackup":"Sidste backup","noBackupYet":"Ingen backup endnu","backupNow":"Sikkerhedskopier nu","backupRestore":"Sikkerhedskopiering og gendannelse","viewBackups":"Se sikkerhedskopier","hide":"Skjul","backupRetentionDesc":"Database-snapshots oprettes automatisk før gendannelse og hvert 15. minut, når data ændres. Retention: 24 timer i timen + 30 daglige backups med smart rotation.","loadingBackups":"Indlæser sikkerhedskopier...","noBackupsYet":"Ingen tilgængelige sikkerhedskopier endnu. Sikkerhedskopier oprettes automatisk, når data ændres.","backupsAvailable":"{count} backup(r) tilgængelige","refresh":"Opdater","confirm":"bekræfte?","yes":"Ja","no":"Nej","restore":"Gendan","invalidFileType":"Ugyldig filtype. Kun .sqlite-filer accepteres.","exportFailed":"Eksporten mislykkedes","exportFailedWithError":"Eksport mislykkedes: {error}","fullExportFailedWithError":"Fuld eksport mislykkedes: {error}","backupCreated":"Sikkerhedskopiering oprettet: {file}","restoreSuccess":"Gendannet! {connections} forbindelser, {nodes} noder, {combos} kombinationer, {apiKeys} API nøgler.","importSuccess":"Database importeret! {connections} forbindelser, {nodes} noder, {combos} kombinationer, {apiKeys} API nøgler.","justNow":"lige nu","minutesAgo":"{count}m siden","hoursAgo":"{count}t siden","daysAgo":"{count}d siden","backupReasonManual":"manual","backupReasonPreRestore":"for-gendannelse","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Ingen ændringer siden sidste backup","backupFailed":"Sikkerhedskopiering mislykkedes","restoreFailed":"Gendannelse mislykkedes","importFailed":"Import mislykkedes","errorDuringRestore":"Der opstod en fejl under gendannelse","errorDuringImport":"Der opstod en fejl under importen","modelPricing":"Modelpriser","modelPricingDesc":"Konfigurer omkostningssatser pr. model • Alle satser i $/1M tokens","providers":"Udbydere","registry":"Register","priced":"Prissat","searchProvidersModels":"Søg efter udbydere eller modeller...","showAll":"Vis alle","noProvidersMatch":"Ingen udbydere matcher din søgning.","howPricingWorks":"Hvordan prissætning fungerer","cacheWrite":"Cache skriv","unsaved":"ikke gemt","resetDefaults":"Nulstil standarder","saveProvider":"Gem udbyder","saving":"Gemmer...","model":"Model","models":"modeller","moreProviders":"{count} flere udbydere","withPricing":"med konfigureret prissætning","policiesCircuitBreakers":"Politikker og strømafbrydere","activeIssuesDetected":"Aktive problemer registreret","off":"Fra","resetPricingConfirm":"Vil du nulstille alle priser for {provider} til standardindstillingerne?","pricingDescInput":"Input: tokens sendt til modellen","pricingDescOutput":"Output: tokens genereret","pricingDescCached":"Cachelagret: genbrugt input (~50 % af inputhastigheden)","pricingDescReasoning":"Begrundelse: Tænketegn (falder tilbage til output)","pricingDescCacheWrite":"Cacheskrivning: oprettelse af cacheposter (falder tilbage til input)","pricingDescFormula":"Omkostninger = (input × input_rate) + (output × output_rate) + (cached × cached_rate) pr. million tokens.","pricingSettingsTitle":"Prisindstillinger","totalModels":"Totale modeller","active":"Aktiv","costCalculation":"Omkostningsberegning","costCalculationDesc":"Omkostninger beregnes baseret på token-forbrug og prissætningssatser, der er konfigureret for hver model.","pricingFormat":"Prisformat","pricingFormatDesc":"Alle priser er i $/1M tokens (dollars per million tokens).","tokenTypes":"Token typer","inputTokenDesc":"Standard prompt-tokens","outputTokenDesc":"Fuldførelse/svar-tokens","cachedTokenDesc":"Cachelagrede inputtokens (typisk 50 % af inputhastigheden)","reasoningTokenDesc":"Særlige ræsonnement/tænke-tokens (tilbagefald til outputhastighed)","cacheCreationTokenDesc":"Tokens, der bruges til at oprette cacheposter (tilbage til inputhastighed)","customPricingNote":"Du kan tilsidesætte standardpriser for specifikke modeller. Tilpassede tilsidesættelser har prioritet frem for automatisk registrerede priser.","editPricing":"Rediger prissætning","viewFullDetails":"Se alle detaljer","themeCoral":"Koral","cliFingerprint":"CLI Fingerprint Matching","cliFingerprintDesc":"Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.","cliFingerprintEnabled":"{count} provider(s) with CLI fingerprint active","enableFingerprintTitle":"Enable fingerprint for {provider}","disableFingerprintTitle":"Disable fingerprint for {provider}","routingAdvancedGuideTitle":"Avanceret rutevejledning","routingAdvancedGuideHint1":"Brug Fill First for forudsigelig prioritet, Round Robin for retfærdighed og P2C for latensmodstandsdygtighed.","routingAdvancedGuideHint2":"Hvis udbydere varierer i kvalitet/omkostninger, start med Cost Opt for baggrundsarbejde og Mindst brugt for balanceret slid.","comboDefaultsGuideTitle":"Sådan indstiller du combo-standarder","comboDefaultsGuideHint1":"Hold lave genforsøg i flows med lav latens; øg kun timeout for lange generationsopgaver.","comboDefaultsGuideHint2":"Brug udbydertilsidesættelser, når en udbyder har brug for en anden timeout-/genforsøgsadfærd end globale standardindstillinger."},"translator":{"title":"Oversætter","metaTitle":"Oversætter Legeplads | OmniRoute","metaDescription":"Debug, test og visualiser API-formatoversættelser mellem udbydere","playgroundTitle":"Oversætter legeplads","playground":"Legeplads","realtime":"Oversættelsesaktivitet i realtid","chatTester":"Chat tester","testBench":"Test bænk","liveMonitor":"Live Monitor","modeDescriptionPlayground":"Indsæt enhver API-anmodningstekst og se, hvordan OmniRoute oversætter den mellem udbyderformater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","modeDescriptionChatTester":"Send rigtige chatanmodninger gennem OmniRoute og inspicer hele rundrejsen: input, oversat anmodning, udbydersvar og oversat output.","modeDescriptionTestBench":"Kør foruddefinerede scenarier og sammenlign kompatibilitet på tværs af udbydere og modeller.","modeDescriptionLiveMonitor":"Se oversættelsesbegivenheder i realtid, mens anmodninger flyder gennem OmniRoute.","modeDescriptionFallback":"Debug, test og visualiser, hvordan OmniRoute oversætter API-anmodninger mellem udbydere.","recentTranslations":"Nylige oversættelser","noTranslations":"Ingen oversættelser endnu","source":"Kilde","target":"Mål","time":"Tid","model":"Model","status":"Status","latency":"Latency","totalTranslations":"Samlede oversættelser","successful":"Vellykket","errors":"Fejl","avgLatency":"Gns. latens","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"Live — Automatisk opdatering","paused":"Pause","eventsAppearHint":"Oversættelsesbegivenheder vises her, når anmodninger flyder gennem OmniRoute. Brug en af disse metoder til at generere begivenheder:","chatTesterTab":"Fanen Chat Tester","testBenchTab":"Fanen Testbænk","externalApiCalls":"Eksterne API-kald","ideCliIntegrations":"IDE/CLI integrationer","inMemoryNote":"Bemærk: Hændelser gemmes i hukommelsen og nulstilles, når serveren genstarter.","ok":"OK","errorShort":"ERR","formatConverter":"Formatkonverter","formatConverterDescription":"Indsæt eller skriv en JSON-anmodningstekst. Oversætteren vil automatisk registrere kildeformatet og konvertere det til målformatet. Brug dette til at fejlsøge, hvordan OmniRoute oversætter anmodninger mellem formater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).","input":"Input","output":"Output","auto":"Auto","swapFormats":"Skift formater","translateAction":"Oversæt","clear":"Ryd","inputPlaceholder":"Indsæt en anmodningstekst her eller vælg en skabelon nedenfor...","exampleTemplates":"Eksempel skabeloner","exampleTemplatesHint":"— Klik for at indlæse","templateLoadHint":"Skabelonen indlæser anmodningen i formatet {format}. Skift kildeformat for at indlæse i et andet format.","compatibilityTester":"Kompatibilitetstester","compatibilityReport":"Kompatibilitetsrapport","testBenchDescription":"Kør foruddefinerede scenarier (simpel chat, værktøjsopkald osv.) for at bekræfte oversættelse og udbyderkompatibilitet. Vælg et kildeformat og måludbyder, og kør derefter alle test for at se en kompatibilitetsprocent. Brug dette til at finde ud af, hvilke funktioner der fungerer på tværs af udbydere.","targetProvider":"Måludbyder","runAllTests":"Kør alle tests","runTest":"Kør test","reRun":"Kør igen","running":"Kører...","passed":"bestået","failed":"mislykkedes","passedIconLabel":"✅ Bestået","chunks":"bidder","scenarioSimpleChat":"Simpel chat","scenarioToolCalling":"Værktøjsopkald","scenarioMultiTurn":"Multivending","scenarioThinking":"Tænker","scenarioSystemPrompt":"Systemprompt","scenarioStreaming":"Streaming","templateNames":{"simple-chat":"Simpel chat","tool-calling":"Værktøjsopkald","multi-turn":"Multivending","thinking":"Tænker","system-prompt":"Systemprompt","streaming":"Streaming"},"templateDescriptions":{"simple-chat":"Grundlæggende tekstbesked","tool-calling":"Funktion/værktøjskald","multi-turn":"Samtale med historien","thinking":"Udvidet tænkning/ræsonnement","system-prompt":"Komplekse systeminstruktioner","streaming":"SSE streaming anmodning"},"templatePayloads":{"simpleChat":{"system":"Du er en hjælpsom assistent.","userGreeting":"Hej! Hvordan har du det i dag?"},"toolCalling":{"userWeather":"Hvordan er vejret i São Paulo?","toolDescription":"Få det aktuelle vejr for en placering","cityNameDescription":"Byens navn"},"multiTurn":{"system":"Du er kodningsassistent.","userInitial":"Skriv en funktion til at sortere et array i Python.","assistantExample":"Her er en simpel sorteringsfunktion:\\n\\n``` python\\ndef sort_array(arr):\\n returner sorteret(arr)\\n```","userFollowUp":"Gør det nu sorteret i faldende rækkefølge."},"thinking":{"question":"Hvad er summen af de første 100 primtal?"},"systemPrompt":{"systemInstruction":"Du er senior softwareingeniør med speciale i distribuerede systemer. Besvar spørgsmål kortfattet ved at bruge industriens bedste praksis. Angiv altid kodeeksempler, når det er relevant. Formater dine svar ved hjælp af markdown.","question":"Hvordan implementerer jeg et afbrydermønster?"},"streaming":{"prompt":"Fortæl mig en kort historie om en robot, der lærer at male."}},"openaiCompatibleLabel":"OpenAI-kompatibel","anthropicCompatibleLabel":"Antropisk kompatibel","noTemplateForFormat":"Ingen skabelon til dette format","translationFailed":"Oversættelse mislykkedes: {error}","pipelineDebugger":"Pipeline Debugger","translationPipeline":"Oversættelsesrørledning","pipelineVisualization":"Pipeline visualisering","pipelineVisualizationHint":"Send en besked for at se, hvordan din anmodning flyder gennem registrering → oversættelse → udbyderopkald.","chatTesterDescription":"Send beskeder som et specifikt klientformat og inspicér hvert trin i oversættelsespipelinen.","chatTesterFlow":"Client Request → Format Detection → OpenAI Intermediate → Provider Format → Response","clickStepToInspect":"Klik på et trin for at inspicere dataene på det tidspunkt.","clientFormat":"Klientformat","provider":"Udbyder","modelPlaceholder":"Vælg eller skriv et modelnavn...","sendMessageToSeePipeline":"Send en besked for at se oversættelsespipeline","chatMessageHintPrefix":"Din besked vil blive formateret som en","chatMessageHintSuffix":"anmodning, oversat gennem pipelinen og sendt til den valgte udbyder.","youWithFormat":"Dig ({format})","assistant":"Assistent","typeMessage":"Skriv en besked...","send":"Send","clientRequest":"Kundeanmodning","clientRequestDescription":"Anmodningslegemet, som din klient ville sende det","formatDetected":"Format fundet","formatDetectedDescription":"OmniRoute registrerer automatisk API-formatet fra anmodningsstrukturen","openaiIntermediate":"OpenAI Intermediate","openaiIntermediateDescription":"Alle formater normaliseres først til OpenAI-format (den universelle bro)","providerFormat":"Udbyder format","providerFormatDescription":"OpenAI-formatet er oversat til udbyderens oprindelige format","providerResponse":"Udbyder svar","providerResponseRawDescription":"Det rå svar fra udbyderens API","providerResponseSseDescription":"Den rå SSE-stream fra udbyderens API","unexpectedError":"Der opstod en uventet fejl","error":"Fejl","errorMessage":"Fejl: {message}","requestFailed":"Anmodningen mislykkedes","noTextExtracted":"(Ingen tekst udtrukket)","liveMonitorDescriptionPrefix":"Viser oversættelsesbegivenheder, mens API-kald flyder gennem OmniRoute. Hændelser kommer fra bufferen i hukommelsen (nulstilles ved genstart). Brug","liveMonitorDescriptionSuffix":", eller eksterne API-kald for at generere hændelser."},"usage":{"title":"Brug","loggerTab":"Logger","proxyTab":"Fuldmagt","budgetManagement":"Budgetstyring","budgetSaved":"Budgetgrænser gemt","budgetSaveFailed":"Budgettet kunne ikke gemmes","loadingBudgetData":"Indlæser budgetdata...","noApiKeysTitle":"Ingen API-nøgler","noApiKeysDescription":"Tilføj API-nøgler først for at opsætte budgetgrænser.","apiKey":"API nøgle","todaysSpend":"Dagens forbrug","thisMonth":"Denne måned","setLimits":"Sæt grænser","dailyLimitUsd":"Daglig grænse (USD)","monthlyLimitUsd":"Månedlig grænse (USD)","warningThresholdPercent":"Advarselstærskel (%)","dailyLimitPlaceholder":"f.eks. 5.00","monthlyLimitPlaceholder":"f.eks. 50,00","warningThresholdPlaceholder":"80","saveLimits":"Gem grænser","budgetOk":"Budget OK — {remaining} tilbage","budgetExceeded":"Budget overskredet — anmodninger kan blive blokeret","totalRequests":"Samlet antal anmodninger","noDataYet":"Ingen data endnu","latency":"Latency","latencyP50":"p50","latencyP95":"s95","latencyP99":"s99","promptCache":"Spørg cache","systemHealth":"Systemsundhed","entries":"Indgange","activeCount":"{count} aktiv","openCircuitBreakersDetected":"Åbne afbrydere registreret","hitRate":"Hitrate","hitsMisses":"Hits / Misses","circuitBreakers":"Strømafbrydere","lockedIPs":"Låste IP\'er","lockoutsAutoRefreshHint":"Låse for hastighedsbegrænsning pr. model • Automatisk opdatering 10s","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} tilbage","howItWorks":"Hvordan det virker","howItWorksSubtitle":"Lær, hvordan evalueringer validerer dine LLM-svar","define":"Definer","defineStepDescription":"Opret testcases med inputprompter og forventede outputkriterier ved hjælp af strategier som indeholder, regex eller eksakt match.","run":"Løb","runStepDescription":"Udfør testsager mod dine LLM-endepunkter gennem OmniRoute. Hver sag sendes som en ægte API-anmodning.","evaluate":"Evaluer","evaluateStepDescription":"Svar sammenlignes med forventede kriterier. Se bestået/ikke bestået for hver sag med latency-metrics og detaljeret feedback.","evalSuites":"Evalueringssuiter","evalSuitesHint":"Klik på en suite for at se testcases, og kør derefter for at evaluere dine LLM-endepunkter","evalsLoading":"Indlæser eval suiter...","noEvalSuitesFound":"Ingen Eval-suiter fundet","noEvalSuitesDescription":"Eval-suiter kan defineres via API\'et eller i kode. De tester modeloutput mod forventede resultater ved hjælp af strategier som indeholder, regex, eksakt match og brugerdefinerede funktioner.","columnCase":"Sag","columnStatus":"Status","columnLatency":"Latency","columnDetails":"Detaljer","columnModel":"Model","columnStrategy":"Strategi","columnExpected":"Forventet","statsSuites":"Suiter","statsTestCases":"Test Cases","statsModels":"Modeller","statsCoverage":"Dækning","statsStrategiesCount":"{count} strategier","evaluationStrategies":"Evalueringsstrategier","modelsUnderTest":"Modeller under test","searchSuitesPlaceholder":"Søg suiter...","passSuffix":"bestå","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Kør Eval","runningProgress":"Kører {current}/{total}...","passRate":"beståelsesprocent","summaryBreakdown":"{passed} bestået · {failed} mislykkedes · {total} i alt","passedIconLabel":"✅ Bestået","failedIconLabel":"❌ Mislykkedes","detailsContains":"Indeholder: \\"{term}\\"","detailsRegex":"Regex: {pattern}","detailsExpected":"Forventet: \\"{expected}\\"","noResultsYet":"Ingen resultater endnu","testCasesCount":"Testcases ({count})","noTestCasesDefined":"Ingen testcases defineret","runEvalHint":"Klik på \\"Run Eval\\" for at udføre alle sager mod dit LLM-slutpunkt. Hver test sender en reel anmodning gennem OmniRoute.","notifyNoTestCases":"Ingen testcases defineret for denne suite","notifyAllCasesPassed":"Alle {total} sager bestået ✅","notifySomeCasesFailed":"{passed}/{total} bestået, {failed} mislykkedes","notifyEvalRunFailed":"Evalkørsel mislykkedes","notifyEvalTitle":"Eval: {name}","modelEvals":"Modelvurderinger","evalsHeroDescription":"Test og valider dine LLM-endepunkter ved at køre foruddefinerede evalueringspakker. Hver suite indeholder testcases, der sender reelle prompter gennem OmniRoute og sammenligner svar med forventede kriterier - hjælper dig med at opdage regression, sammenligne modeller og sikre svarkvalitet på tværs af udbydere.","qualityValidation":"Kvalitetsvalidering","modelComparison":"Model sammenligning","regressionDetection":"Regression detektion","latencyBenchmarks":"Latency Benchmarks","modelLockouts":"Model Lockouts","noLockouts":"Ingen modeller er låst i øjeblikket","activeSessions":"Aktive sessioner","noSessions":"Ingen aktive sessioner","sessionsHint":"Sessioner vises, når anmodninger strømmer gennem proxyen","sessionsTrackedHint":"Spores via anmodning om fingeraftryk • Automatisk opdatering 5s","session":"Session","age":"Alder","requests":"Forespørgsler","connection":"Forbindelse","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Udbydergrænser","noProviders":"Ingen udbydere tilsluttet","connectProvidersForQuota":"Opret forbindelse til udbydere med OAuth for at spore dine API-kvotegrænser og brug.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(filtreret fra {count})","autoRefresh":"Automatisk opdatering","refreshAll":"Opdater alle","loadingQuotas":"Indlæser...","account":"Konto","modelQuotas":"Modelkvoter","lastUsed":"Sidst brugt","actions":"Handlinger","refreshQuota":"Opdater kvote","today":"I dag","tomorrow":"I morgen","dayTimeFormat":"{day}, {time}","inDuration":"i {duration}","notApplicable":"N/A","rawPlanWithValue":"Rå plan: {plan}","noPlanFromProvider":"Ingen plan fra udbyderen","noQuotaData":"Ingen kvotedata","ungrouped":"Ungrouped","viewFlat":"Flat","viewByEnvironment":"By Environment","noQuotaDataAvailable":"Ingen tilgængelige kvotedata","noAccountsForTierFilter":"Der blev ikke fundet nogen konti til niveaufilter","tierAll":"Alle","tierEnterprise":"Enterprise","tierTeam":"Team","tierBusiness":"Forretning","tierUltra":"Ultra","tierPro":"Pro","tierPlus":"Plus","tierFree":"Gratis","tierUnknown":"Ukendt"},"modals":{"waitingAuth":"Venter på autorisation","verificationUrl":"Bekræftelses-URL","yourCode":"Din kode","remoteAccess":"Fjernadgang:","connectedSuccess":"Forbundet med succes!","connectionFailed":"Forbindelse mislykkedes","chooseAuthMethod":"Vælg din godkendelsesmetode:","awsBuilderId":"AWS Builder ID","awsIamIdentity":"AWS IAM Identity Center","googleAccount":"Google-konto","githubAccount":"GitHub-konto","importToken":"Importer token","pasteToken":"Indsæt opdateringstoken fra Kiro IDE.","awsRegion":"AWS-regionen","autoDetecting":"Automatisk registrering af tokens...","readingFromCache":"Læser fra AWS SSO-cache","readingFromCursor":"Læsning fra Cursor IDE-database","initializing":"Initialiserer...","pricingConfig":"Priskonfiguration","loadingPricing":"Indlæser prisdata...","pricingRatesFormat":"Prisformat","noPricingData":"Ingen tilgængelige prisdata","noModelsFound":"Ingen modeller fundet"},"loggers":{"allProviders":"Alle udbydere","allModels":"Alle modeller","allAccounts":"Alle konti","allApiKeys":"Alle API-nøgler","allTypes":"Alle typer","allLevels":"Alle niveauer","modelAZ":"Model A-Z","modelZA":"Model Z-A","loadingLogs":"Indlæser logfiler...","loadingProxyLogs":"Indlæser proxylogfiler...","noLogEntries":"Ingen logposter fundet","noPayloadData":"Ingen nyttelastdata tilgængelige for denne logpost.","proxyEvent":"Proxy begivenhed","proxy":"Fuldmagt","level":"Niveau","directNative":"Direkte (native)","combo":"Combo","inputTokens":"jeg:","outputTokens":"O:"},"stats":{"usageOverview":"Brugsoversigt","outputTokens":"Output tokens","totalCost":"Samlede omkostninger","usageByModel":"Brug efter model","usageByAccount":"Brug efter konto","failedToLoad":"Kunne ikke indlæse brugsstatistikker.","tokenHealth":"Token Health","totalOAuth":"Samlet OAuth","healthy":"Sundt","warning":"Advarsel","errored":"Fejl","lastCheck":"Sidste kontrol","noData":"Ingen data","share":"Del","unableToLoad":"Systemmetrics kunne ikke indlæses","product":"Produkt","resources":"Ressourcer","company":"Selskab"},"auth":{"welcome":"Velkommen","signIn":"Log ind","enterPassword":"Indtast din adgangskode for at fortsætte","password":"Adgangskode","unifiedProxy":"Unified AI API Proxy","unifiedAiApiProxy":"Unified AI API Proxy","unifiedAiApiProxyDesc":"Rut anmodninger til flere AI-udbydere gennem et enkelt slutpunkt. Belastningsbalancering, failover og brugssporing indbygget.","passwordNotEnabled":"Adgangskodebeskyttelse er ikke aktiveret","loading":"Indlæser...","invalidPassword":"Ugyldig adgangskode","errorOccurredRetry":"Der opstod en fejl. Prøv venligst igen.","configureInstance":"Lad os få konfigureret din OmniRoute-instans","runOnboardingWizard":"Kør onboarding-guiden for at konfigurere din adgangskode og oprette forbindelse til din første AI-udbyder.","startOnboarding":"Start Onboarding","secureYourInstance":"Sikre din instans","setPasswordDescription":"Indstil en adgangskode for at beskytte dit dashboard og sikre dine API-endepunkter mod uautoriseret adgang.","configurePassword":"Konfigurer adgangskode","continue":"Fortsæt","windowWillClose":"Dette vindue lukkes automatisk...","closeTabNow":"Du kan lukke denne fane nu.","copyUrlManual":"Kopier venligst URL\'en fra adresselinjen og indsæt den i applikationen.","accessDeniedDescription":"Du har ikke tilladelse til at få adgang til denne ressource. Tjek din API-nøgle, eller kontakt administratoren.","goToDashboard":"Gå til Dashboard","featureMultiProviderTitle":"Multi-udbyder","featureMultiProviderDesc":"OpenAI, Anthropic, Google og mere","featureLoadBalancingTitle":"Lastbalancering","featureLoadBalancingDesc":"Fordel anmodninger intelligent","featureUsageTrackingTitle":"Brugssporing","featureUsageTrackingDesc":"Overvåg omkostninger og tokens","resetPassword":"Nulstil adgangskode","resetDescription":"Vælg en metode til at gendanne adgangen til dit dashboard","stopServer":"Stop OmniRoute-serveren","processing":"Behandler...","pleaseWait":"Vent venligst, mens vi fuldfører godkendelsen.","authSuccess":"Godkendelse lykkedes!","copyUrl":"Kopiér denne URL","accessDenied":"Adgang nægtet","methodCliTitle":"Metode 1: CLI-nulstilling","methodCliDescription":"Kør følgende kommando på serveren, hvor OmniRoute kører:","methodCliHint":"Dette vil bede dig om at indstille en ny adgangskode. Serveren skal stoppes først.","methodManualTitle":"Metode 2: Manuel nulstilling","methodManualDescription":"Slet adgangskoden fra databasen og indstil en ny ved opstart:","setPasswordInYour":"Indstil en ny adgangskode i din","fileLabelSuffix":"fil:","newPasswordPlaceholder":"dit_nye_adgangskode","deleteSettingsFile":"Slet","orRemovePasswordHashField":"eller fjern feltet passwordHash","restartServerWithNewPassword":"Genstart serveren - den vil bruge den nye adgangskode","backToLogin":"Tilbage til Login","forgotPassword":"Glemt adgangskode?","defaultPasswordHint":"Default password: 123456 (unless INITIAL_PASSWORD was set)","Authorization":"Autorisation","Content-Disposition":"Indhold-Disposition","waitingForAuthorization":"Venter på godkendelse...","waitingForGoogleAuthorization":"Venter på Google-godkendelse...","waitingForOpenAIAuthorization":"Venter på OpenAI-godkendelse...","waitingForAntigravityAuthorization":"Venter på antigravity-autorisation...","waitingForIFlowAuthorization":"Venter på iFlow-godkendelse...","exchangingCodeForTokens":"Udveksler kode til tokens..."},"landing":{"brandName":"OmniRoute","navigateHome":"Naviger til hjem","toggleMenu":"Skift menu","featuresLink":"Funktioner","docsLink":"Dokumenter","github":"GitHub","versionLive":"v1.0 er nu live","oneEndpoint":"Et slutpunkt til","allProviders":"Alle AI-udbydere","heroDescription":"AI-slutpunktsproxy med web-dashboard - En JavaScript-port af CLIProxyAPI. Fungerer problemfrit med Claude Code, OpenAI Codex, Cline, RooCode og andre CLI-værktøjer.","getStarted":"Kom i gang","viewOnGithub":"Se på GitHub","powerfulFeatures":"Kraftige funktioner","featuresSubtitle":"Alt hvad du behøver for at administrere din AI-infrastruktur på ét sted, bygget til skala.","featureUnifiedEndpointTitle":"Unified Endpoint","featureUnifiedEndpointDesc":"Få adgang til alle udbydere via en enkelt standard API-URL.","featureEasySetupTitle":"Nem opsætning","featureEasySetupDesc":"Kom i gang på få minutter med npx-kommandoen.","featureModelFallbackTitle":"Model Fallback","featureModelFallbackDesc":"Skift automatisk udbyder ved fejl eller høj latenstid.","featureUsageTrackingTitle":"Brugssporing","featureUsageTrackingDesc":"Detaljerede analyser og omkostningsovervågning på tværs af alle modeller.","featureOAuthApiKeysTitle":"OAuth- og API-nøgler","featureOAuthApiKeysDesc":"Administrer legitimationsoplysninger sikkert i én boks.","featureCloudSyncTitle":"Cloud Sync","featureCloudSyncDesc":"Synkroniser dine konfigurationer på tværs af enheder med det samme.","featureCliSupportTitle":"CLI support","featureCliSupportDesc":"Fungerer med Claude Code, Codex, Cline, Cursor og mere.","featureDashboardTitle":"Dashboard","featureDashboardDesc":"Visuelt dashboard til trafikanalyse i realtid.","howItWorks":"Sådan fungerer OmniRoute","howItWorksDescription":"Data flyder problemfrit fra din applikation gennem vores intelligente routing-lag til den bedste udbyder til jobbet.","howItWorksStep1Title":"1. CLI & SDK\'er","howItWorksStep1Description":"Dine anmodninger starter fra dine yndlingsværktøjer eller vores forenede SDK. Skift blot den grundlæggende URL.","howItWorksStep2Title":"2. OmniRoute Hub","howItWorksStep2Description":"Vores motor analyserer prompten, tjekker udbyderens helbred og ruter for laveste latenstid eller omkostninger.","howItWorksStep3Title":"3. AI-udbydere","howItWorksStep3Description":"Anmodningen opfyldes af OpenAI, Anthropic, Gemini eller andre øjeblikkeligt.","getStartedIn30Seconds":"Kom i gang på 30 sekunder","getStartedDescription":"Installer OmniRoute, konfigurer dine udbydere via web-dashboard, og begynd at dirigere AI-anmodninger.","installOmniRoute":"Installer OmniRoute","installStepDescription":"Kør npx-kommandoen for at starte serveren med det samme","openDashboard":"Åbn Dashboard","openDashboardStepDescription":"Konfigurer udbydere og API-nøgler via webgrænseflade","routeRequests":"Ruteanmodninger","routeRequestsStepDescription":"Ret dine CLI-værktøjer til {endpoint}","terminal":"terminal","copy":"Kopiér","copied":"✓ Kopieret","startingOmniRoute":"Starter OmniRoute...","serverRunningOnLabel":"Server kører på","dashboardLabel":"Dashboard","readyToRoute":"Klar til rute! ✓","configureProvidersNote":"📝 Konfigurer udbydere i dashboard eller brug miljøvariabler","dataLocation":"Dataplacering:","dataLocationMacLinux":" macOS/Linux:","dataLocationWindows":" Windows:","product":"Produkt","dashboardLink":"Dashboard","changelog":"Ændringslog","resources":"Ressourcer","documentation":"Dokumentation","npm":"NPM","legal":"Juridisk","mitLicense":"MIT-licens","footerTagline":"Det forenede slutpunkt for AI-generering. Forbind, diriger og administrer dine AI-udbydere med lethed.","copyright":"© {year} OmniRoute. Alle rettigheder forbeholdes.","flowToolClaudeCode":"Claude kode","flowToolOpenAICodex":"OpenAI Codex","flowToolCline":"Cline","flowToolCursor":"Markør","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Antropisk","flowProviderGemini":"Tvillingerne","flowProviderGithubCopilot":"GitHub Copilot","interactiveDiagram":"Interaktivt diagram synligt på skrivebordet","ctaTitle":"Klar til at forenkle din AI-infrastruktur?","ctaDescription":"Slut dig til udviklere, der strømliner deres AI-integrationer med OmniRoute. Open source og gratis at starte.","startFree":"Start gratis","readDocumentation":"Læs dokumentation"},"docs":{"title":"Dokumentation","quickStart":"Hurtig start","features":"Funktioner","supportedProviders":"Understøttede udbydere","supportedProvidersToc":"Udbydere","commonUseCases":"Almindelige anvendelsestilfælde","clientCompatibility":"Klientkompatibilitet","protocolsToc":"Protokoller","apiReference":"API-reference","method":"Metode","path":"Sti","notes":"Noter","modelPrefixes":"Modelpræfikser","prefix":"Præfiks","troubleshooting":"Fejlfinding","supportsChat":"Understøtter både chat- og svarendepunkter.","oauthAutoRefresh":"OAuth-forbindelse med automatisk token-opdatering.","fullStreaming":"Fuld streaming support til alle modeller.","docsLabel":"Dokumenter","docsHeroDescription":"AI-gateway til LLM\'er med flere udbydere. Ét endepunkt for OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor og mere end 20 udbydere.","openDashboard":"Åbn Dashboard","endpointPage":"Slutpunktside","github":"GitHub","reportIssue":"Rapportér problem","onThisPage":"På denne side","documentationVersion":"Dokumentation - v{version}","quickStartStep1Title":"1. Installer og kør","quickStartStep1Prefix":"Løb","quickStartStep1Middle":"eller klon fra GitHub og kør","quickStartStep2Title":"2. Opret API-nøgle","quickStartStep2Text":"Gå til Slutpunkt -> Registrerede nøgler. Generer én nøgle pr. miljø.","quickStartStep3Title":"3. Tilslut udbydere","quickStartStep3Text":"Tilføj udbyderkonti via OAuth-login, API-nøgle eller automatisk forbindelse med frit niveau.","quickStartStep4Title":"4. Indstil klientbase-URL","quickStartStep4Prefix":"Peg din IDE- eller API-klient til","quickStartStep4Suffix":"Brug for eksempel udbyderpræfiks","featureRoutingTitle":"Multi-Provider Routing","featureRoutingText":"Rut anmodninger til 30+ AI-udbydere gennem et enkelt OpenAI-kompatibelt slutpunkt. Understøtter chat, svar, lyd og billed-API\'er.","featureCombosTitle":"Kombinationer og balancering","featureCombosText":"Opret modelkombinationer med fallback-kæder og balanceringsstrategier: round-robin, prioritet, tilfældig, mindst brugt og omkostningsoptimeret.","featureUsageTitle":"Brug og omkostningssporing","featureUsageText":"Tokenoptælling i realtid, omkostningsberegning pr. udbyder/model og detaljeret forbrugsopdeling efter API-nøgle og konto.","featureAnalyticsTitle":"Analytics Dashboard","featureAnalyticsText":"Visuel analyse med diagrammer for anmodninger, tokens, fejl, latens, omkostninger og modelpopularitet over tid.","featureHealthTitle":"Sundhedsovervågning","featureHealthText":"Live-sundhedstjek, udbyderstatus, strømafbrydertilstande og automatisk hastighedsgrænsedetektering med eksponentiel backoff.","featureCliTitle":"CLI værktøjer","featureCliText":"Administrer IDE-konfigurationer, eksporter/importér sikkerhedskopier, find codex-profiler og konfigurer indstillinger fra dashboardet.","featureSecurityTitle":"Sikkerhed og politikker","featureSecurityText":"API-nøglegodkendelse, IP-filtrering, promptindsprøjtningsbeskyttelse, domænepolitikker, sessionsstyring og revisionslogning.","featureCloudSyncTitle":"Cloud Sync","featureCloudSyncText":"Synkroniser din konfiguration med Cloudflare Workers for fjernadgang med krypterede legitimationsoplysninger og automatisk failover.","providersAcrossConnectionTypes":"{count} udbydere på tværs af tre forbindelsestyper.","manageProviders":"Administrer udbydere","providersCount":"{count} udbydere","providerTypeFree":"Gratis niveau","providerTypeOAuth":"OAuth","providerTypeApiKey":"API nøgle","useCaseSingleEndpointTitle":"Enkelt slutpunkt for mange udbydere","useCaseSingleEndpointText":"Peg klienter til én basis-URL og rute efter modelpræfiks (for eksempel: gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Fallback og modelskift med kombinationer","useCaseFallbackText":"Opret kombinationsmodeller i Dashboard, og hold klientkonfigurationen stabil, mens udbyderne roterer internt.","useCaseUsageVisibilityTitle":"Brug, omkostninger og fejlfindingssynlighed","useCaseUsageVisibilityText":"Spor tokens og omkostninger efter udbyder, konto og API-nøgle på fanerne Brug og Analytics.","clientCherryStudioTitle":"Cherry Studio","baseUrlLabel":"Basis URL","chatEndpointLabel":"Chat slutpunkt","modelRecommendationLabel":"Modelanbefaling: eksplicit præfiks","clientCodexTitle":"Codex / GitHub Copilot-modeller","clientCodexBullet1":"Brug model-id\'er med","clientCodexBullet2":"Codex-familiemodeller dirigeres automatisk til","clientCodexBullet3":"Ikke-Codex-modeller fortsætter","clientCursorTitle":"Markør IDE","clientCursorBullet1":"Brug","clientCursorBullet1Suffix":"præfiks for Cursor-modeller.","clientCursorBullet2":"OAuth-forbindelse - log på fra siden Udbydere.","clientClaudeTitle":"Claude Code / Antigravity","clientClaudeBullet1Prefix":"Brug","clientClaudeBullet1Middle":"(Claude) eller","clientClaudeBullet1Suffix":"(antityngdekraft) præfiks.","protocolsTitle":"Protokoller: MCP & A2A","protocolsDescription":"OmniRoute afslører to operationelle protokoller ud over OpenAI-kompatible API\'er: MCP til værktøjsudførelse og A2A til agent-til-agent arbejdsgange.","protocolMcpTitle":"MCP (Model Context Protocol)","protocolMcpDesc":"Brug MCP over stdio til at lade klienter opdage og kalde OmniRoute-værktøjer med revisionssynlighed.","protocolMcpStep1":"Start MCP-transport med `omniroute --mcp`.","protocolMcpStep2":"Ret din MCP-klient til stdio-transport.","protocolMcpStep3":"Ring til `omniroute_get_health` og `omniroute_list_combos` for at validere forbindelsen.","protocolA2aTitle":"A2A (Agent2Agent)","protocolA2aDesc":"Brug A2A JSON-RPC til at sende opgaver synkront eller via SSE-streaming.","protocolA2aStep1":"Læs `/.well-known/agent.json` for at finde agenter.","protocolA2aStep2":"Send `message/send` eller `message/stream` anmodninger til `POST /a2a`.","protocolA2aStep3":"Administrer opgavens livscyklus med `tasks/get` og `tasks/cancel`.","protocolTroubleshootingTitle":"Protokol fejlfinding","protocolTroubleshooting1":"Hvis MCP-status er offline, skal du kontrollere, at stdio-processen kører, og heartbeat-filen opdateres.","protocolTroubleshooting2":"Hvis A2A-opgaver forbliver i `working`, inspicer `/api/a2a/tasks/:id` og stream hændelser for terminaltilstand.","protocolTroubleshooting3":"Brug `/dashboard/mcp` og `/dashboard/a2a` til operationelle kontroller og revisionssynlighed.","endpointChatNote":"OpenAI-kompatibelt chatslutpunkt (standard).","endpointResponsesNote":"Responses API-endepunkt (Codex, o-serien).","endpointModelsNote":"Modelkatalog for alle tilsluttede udbydere.","endpointAudioNote":"Lydtransskription (Deepgram, AssemblyAI).","endpointImagesNote":"Billedgenerering (NanoBanana).","endpointRewriteChatNote":"Omskrivehjælper til klienter uden /v1.","endpointRewriteResponsesNote":"Omskriv hjælper til svar uden /v1.","endpointRewriteModelsNote":"Omskrivningshjælper til modelopdagelse uden /v1.","modelPrefixesDescriptionStart":"Brug udbyderpræfikset før modelnavnet for at rute til en bestemt udbyder. Eksempel:","modelPrefixesDescriptionEnd":"ruter til GitHub Copilot.","provider":"Udbyder","type":"Type","troubleshootingModelRouting":"Hvis klienten fejler med modelrouting, skal du bruge eksplicit udbyder/model (for eksempel: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Hvis du modtager tvetydige modelfejl, skal du vælge et udbyderpræfiks i stedet for et blottet model-id.","troubleshootingCodexFamily":"For GitHub Codex-familiemodeller skal du beholde modellen som gh/codex-model; routeren vælger /svar automatisk.","troubleshootingTestConnection":"Brug Dashboard > Udbydere > Test forbindelse, før du tester fra IDE\'er eller eksterne klienter.","troubleshootingCircuitBreaker":"Hvis en udbyder viser en afbryder åben, skal du vente på nedkøling eller tjekke Health-siden for detaljer.","troubleshootingOAuth":"For OAuth-udbydere skal du godkende igen, hvis tokens udløber. Tjek udbyderkortets statusindikator.","managementApiReference":"Management API Reference","managementApiDescription":"Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.","mgmtProxiesListNote":"List saved proxy registry items (supports pagination).","mgmtProxiesCreateNote":"Create a reusable proxy item in the registry.","mgmtProxiesHealthNote":"Get 24h/rolling health metrics per saved proxy from proxy logs.","mgmtProxiesBulkAssignNote":"Assign or clear one proxy across many scope IDs in one request.","mgmtAssignmentsListNote":"List proxy assignments by scope, scope_id, or proxy_id.","mgmtAssignmentsUpdateNote":"Assign or clear proxy for global/provider/account/combo scope.","mgmtLegacyMigrationNote":"Import legacy proxyConfig maps into registry assignments.","endpointSpeechNote":"Tekst-til-tale generation (ElevenLabs, OpenAI TTS).","endpointEmbeddingsNote":"Generering af tekstindlejring (OpenAI, Cohere, Voyage)."},"legal":{"privacyPolicy":"Privatlivspolitik","termsOfService":"Servicevilkår","providerConfigurations":"Udbyder konfigurationer","apiKeys":"API nøgler","usageLogs":"Brugslogs","applicationSettings":"Applikationsindstillinger","viewExportAnalytics":"Se og eksporter brugsanalyse","clearHistory":"Ryd brugshistorik til enhver tid","configureRetention":"Konfigurer logopbevaringspolitikker","backupRestore":"Sikkerhedskopier og gendan din database","privacyMetadataTitle":"Privatlivspolitik | OmniRoute","privacyMetadataDescription":"Privatlivspolitik for OmniRoute AI API proxy-routeren.","termsMetadataTitle":"Servicevilkår | OmniRoute","termsMetadataDescription":"Servicevilkår for OmniRoute AI API proxy-routeren.","backToHome":"Tilbage til hjemmet","lastUpdated":"Sidst opdateret: {date}","policyLastUpdatedDate":"13. februar 2026","listSeparator":"-","questionsVisit":"Spørgsmål? Besøg vores","githubRepository":"GitHub-depot","privacySection1Title":"1. Lokal-første arkitektur","privacySection1Text":"OmniRoute er designet som en lokal-først-applikation. Al databehandling og lagring foregår udelukkende på din maskine. Der er ingen centraliseret server, der indsamler dine oplysninger.","privacySection2Title":"2. Data vi gemmer","privacyDataStoredIn":"Følgende data gemmes lokalt i","privacyDataProviderConfigurationsDesc":"forbindelses-URL\'er, udbydertyper og prioritetsindstillinger","privacyDataApiKeysDesc":"krypteret og gemt lokalt til godkendelse hos AI-udbydere","privacyDataUsageLogsDesc":"antal anmodninger, tokenbrug, modelnavne, tidsstempler og svartider","privacyDataApplicationSettingsDesc":"temapræferencer, routingstrategi og kombinationskonfigurationer","privacySection3Title":"3. Ingen telemetri","privacySection3Text":"OmniRoute indsamler ikke telemetri, analyser eller nedbrudsrapporter. Der sendes ingen data til os eller nogen tredjepart. Dine brugsmønstre, API-kald og konfigurationer forbliver helt private.","privacySection4Title":"4. Tredjeparts AI-udbydere","privacySection4Text":"Når du foretager API-kald gennem OmniRoute, videresendes dine anmodninger til de AI-udbydere, du har konfigureret (for eksempel: OpenAI, Anthropic, Google). Disse udbydere har deres egne privatlivspolitikker, der styrer, hvordan de håndterer dine data. Gennemgå venligst:","privacyOpenAiPolicy":"OpenAI Privatlivspolitik","privacyAnthropicPolicy":"Antropisk privatlivspolitik","privacyGooglePolicy":"Googles privatlivspolitik","privacySection5Title":"5. Cloud Sync (valgfrit)","privacySection5Text":"Hvis du aktiverer den valgfri cloud-synkroniseringsfunktion, kan udbyderkonfigurationer og API-nøgler overføres til et konfigureret cloud-slutpunkt. Denne funktion er deaktiveret som standard og kræver eksplicit opt-in.","privacySection6Title":"6. Logning","privacyLoggingIntro":"Anmodningslogfiler kan konfigureres via dashboardindstillingerne. Du kan:","privacySection7Title":"7. Dine rettigheder","privacySection7TextStart":"Da alle data er gemt lokalt, har du fuld kontrol. Du kan til enhver tid slette dine data ved at fjerne","privacySection7TextEnd":"bibliotek eller ved hjælp af databasesikkerhedskopierings- og gendannelsesfunktionerne i dashboardet.","termsSection1Title":"1. Oversigt","termsSection1Text":"OmniRoute er en lokal-første AI API proxy-router, der fungerer udelukkende på din maskine. Det dirigerer anmodninger til flere AI-udbydere med belastningsbalancering, failover og brugssporing.","termsSection2Title":"2. Brugeransvar","termsResponsibilityApiKeys":"Du er alene ansvarlig for at administrere dine egne API-nøgler og legitimationsoplysninger for tredjeparts AI-udbydere (OpenAI, Anthropic, Google osv.).","termsResponsibilityCompliance":"Du skal overholde servicevilkårene for hver AI-udbyder, hvis API du tilgår via OmniRoute.","termsResponsibilitySecurity":"Du er ansvarlig for sikkerheden af din lokale OmniRoute-installation, herunder indstilling af en adgangskode og begrænsning af netværksadgang.","termsSection3Title":"3. Hvordan det virker","termsSection3Text":"OmniRoute fungerer som en mellemmand. API-kald, der sendes til OmniRoute, oversættes og videresendes til dine konfigurerede AI-udbydere. OmniRoute ændrer ikke indholdet af dine anmodninger eller svar ud over den nødvendige protokoloversættelse.","termsSection4Title":"4. Datahåndtering","termsDataStoredLocally":"Alle data gemmes lokalt på din maskine i en SQLite-database.","termsNoTransmission":"OmniRoute transmitterer ingen data til eksterne servere, medmindre du udtrykkeligt aktiverer skysynkroniseringsfunktioner.","termsDataLocationText":"Brugslogfiler, API-nøgler og konfiguration gemmes i","termsSection5Title":"5. Ansvarsfraskrivelse","termsSection5Text":"OmniRoute leveres \\"som den er\\" uden garanti af nogen art. Vi er ikke ansvarlige for omkostninger, der påløber som følge af API-brug, serviceforstyrrelser eller tab af data. Vedligehold altid sikkerhedskopier af din konfiguration.","termsSection6Title":"6. Open Source","termsSection6Text":"OmniRoute er open source-software. Du kan frit inspicere, ændre og distribuere den i henhold til licensbetingelserne."},"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"},"agents":{"title":"CLI Agents","description":"Discover installed CLI agents on your system. Add custom agents for auto-detection.","refresh":"Refresh","installed":"Installed","notFound":"Not Found","builtIn":"Built-in","custom":"Custom","remove":"Remove","addCustomAgent":"Add Custom Agent","addCustomAgentDesc":"Register any CLI tool for detection. It will be scanned automatically on refresh.","agentName":"Agent Name","binaryName":"Binary Name","versionCommand":"Version Command","spawnArgs":"Spawn Args","addAgent":"Add Agent","scanning":"Scanning system for CLI agents...","opencodeIntegration":"OpenCode Integration","opencodeDetected":"opencode {version} detected","opencodeDesc":"Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.","downloadConfig":"Download {file}","downloaded":"Downloaded!","setupGuideTitle":"Setup guide","openCliTools":"Open CLI Tools","setupGuideDetectCliTitle":"Detect installed CLIs","setupGuideDetectCliDesc":"Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.","setupGuideCustomAgentTitle":"Register custom binary","setupGuideCustomAgentDesc":"Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.","setupGuideCommandMissingTitle":"Fix \'command not found\'","setupGuideCommandMissingDesc":"Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh."},"autoCombo":{"title":"Auto-Combo Engine","statusNormal":"Normal","statusIncident":"Incident Mode","modePack":"Mode Pack","providerScores":"Provider Scores","noAutoCombo":"No auto-combo configured.","excludedProviders":"Excluded Providers","noExclusions":"No providers currently excluded.","factorQuota":"Quota","factorHealth":"Health","factorCost":"Cost","factorLatency":"Latency","factorTaskFit":"Task Fit","factorStability":"Stability","factorTierPriority":"Tier Priority","factorTierPriorityDesc":"Prefers accounts with higher quota tiers (Ultra/Pro over Free)","scoreFactorBreakdown":"Scoring Factors","modePackShipFast":"Ship Fast","modePackCostSaver":"Cost Saver","modePackQualityFirst":"Quality First","modePackOfflineFriendly":"Offline Friendly"},"search":{"searchQuery":"Search Query","searchResults":"Search Results","cachedResult":"Cached","searchCost":"Cost","searchTools":"Search Tools","searchToolsDesc":"Advanced search testing with provider comparison","compareProviders":"Compare Providers","rerankResults":"Rerank Results","searchHistory":"Search History","urlOverlap":"URL Overlap","noSearchProviders":"No search providers configured. Add providers in Settings.","noRerankModels":"No rerank model available","webSearch":"Web Search","provider":"Provider","searchType":"Search Type","maxResults":"Max Results","filters":"Filters","country":"Country","language":"Language","timeRange":"Time Range","includeDomains":"Include Domains","excludeDomains":"Exclude Domains","safeSearch":"Safe Search","formatted":"Formatted","rawJson":"JSON","cacheMiss":"cache miss","cacheHit":"cache hit","latency":"Latency","cost":"Cost","results":"Results","rerank":"Rerank","rerankModel":"Rerank Model","positionDelta":"Position Change","emptyState":"Send a search query to see results","safeSearchOff":"Off","safeSearchModerate":"Moderate","safeSearchStrict":"Strict","queryPlaceholder":"Enter search query...","providerAuto":"auto (cheapest)","searchTypeWeb":"web","searchTypeNews":"news","optionAny":"any","timeRangeDay":"Past day","timeRangeWeek":"Past week","timeRangeMonth":"Past month","timeRangeYear":"Past year","domainPlaceholder":"example.com","requestTimedOut":"Request timed out ({seconds}s)","networkError":"Network error"},"templateNames":{"simple-chat":"Simpel chat","streaming":"Streaming","system-prompt":"Systemprompt","thinking":"Tænker","tool-calling":"Værktøjsopkald","multi-turn":"Multivending"},"templateDescriptions":{"simple-chat":"Grundlæggende chatskabelon med systembesked","streaming":"Skabelon til streaming svar","system-prompt":"Skabelon med brugerdefineret systemprompt","thinking":"Skabelon med ræsonnement/tænkebudget","tool-calling":"Skabelon til værktøj/funktionskald","multi-turn":"Skabelon til samtaler med flere sving"},"templatePayloads":{"simpleChat":{"system":"Du er en hjælpsom AI-assistent.","userGreeting":"Hej! Hvordan kan jeg hjælpe dig i dag?"},"streaming":{"prompt":"Skriv en historie om"},"systemPrompt":{"question":"Hvad er meningen med livet?","systemInstruction":"Giv et tankevækkende, filosofisk svar."},"thinking":{"question":"Forklar kvanteberegning"},"toolCalling":{"cityNameDescription":"Navnet på byen for at få vejr til","toolDescription":"Få det aktuelle vejr for en placering","userWeather":"Hvordan er vejret i Tokyo?"},"multiTurn":{"system":"Du er en hjælpsom assistent.","assistantExample":"Det hjælper jeg dig gerne med.","userInitial":"Jeg har brug for hjælp til","userFollowUp":"Kan du uddybe det?"}},"cache":{"title":"Cache Management","description":"Monitor and manage semantic response cache, hit rates, and token savings.","refresh":"Refresh","clearAll":"Clear All","memoryEntries":"Memory Entries","dbEntries":"DB Entries","cacheHits":"Cache Hits","tokensSaved":"Tokens Saved","hitRate":"Hit Rate","performance":"Cache Performance","behavior":"Cache Behavior","idempotency":"Idempotency Layer","clearSuccess":"Cache cleared. {count} expired entries removed.","clearError":"Failed to clear cache.","unavailable":"Cache unavailable","unavailableDesc":"Could not fetch cache statistics. Make sure the server is running.","memoryEntriesSub":"In-memory LRU","dbEntriesSub":"Persisted (SQLite)","cacheHitsSub":"of {total} total","tokensSavedSub":"Estimated from hits","autoRefresh":"Auto-refreshes every {seconds}s","hits":"Hits","misses":"Misses","total":"Total","behaviorDeterministic":"Only non-streaming requests with temperature=0 are cached.","behaviorBypass":"Bypass with header {header}.","behaviorTwoTier":"Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).","behaviorTtl":"Default TTL: 30 minutes. Configure via {envVar}.","activeDedupKeys":"Active Dedup Keys","dedupWindow":"Dedup Window"}}'))}];
|
|
1
|
+
module.exports=[502805,a=>{a.v(JSON.parse('{"common":{"save":"Gem","cancel":"Annuller","delete":"Slet","loading":"Indlæser...","error":"Der opstod en fejl","success":"Succes","confirm":"Er du sikker?","refresh":"Opdater","close":"Luk","add":"Tilføj","edit":"Rediger","search":"Søg","back":"Tilbage","next":"Næste","submit":"Indsend","reset":"Nulstil","copy":"Kopiér","copied":"Kopieret!","enabled":"Aktiveret","disabled":"Deaktiveret","active":"Aktiv","inactive":"Inaktiv","noData":"Ingen tilgængelige data","configure":"Konfigurer","manage":"Administrer","name":"Navn","actions":"Handlinger","status":"Status","type":"Type","model":"Model","models":"modeller","provider":"Udbyder","account":"Konto","time":"Tid","details":"Detaljer","created":"Oprettet","lastUsed":"Sidst brugt","loadMore":"Indlæs mere","noResults":"Ingen resultater fundet","reloadPage":"Genindlæs siden","connected":"Forbundet","disconnected":"Afbrudt","notConfigured":"Ikke konfigureret","testConnection":"Test forbindelse","enable":"Aktiver","disable":"Deaktiver","columns":"Kolonner","newest":"Nyeste","oldest":"Ældste","all":"Alle","none":"Ingen","yes":"Ja","no":"Nej","warning":"Advarsel","note":"Bemærk","free":"Gratis","skipToContent":"Gå til indhold","maintenanceServerIssues":"Server is experiencing issues. Some features may be unavailable.","maintenanceServerUnreachable":"Server is unreachable. Reconnecting...","accept":"Accepter","accountId":"Konto-id","alias":"Alias","apiKeyId":"API-nøgle-id","apiKeyName":"API-nøglenavn","apiKeySecret":"API-nøglehemmelighed","authorization":"Autorisation","content-type":"Indholdstype","content-length":"Indholdslængde","cookie":"Cookie","file":"Fil","host":"vært","id":"ID","import":"Importer","limit":"Grænse","offset":"Offset","open":"Åbn","origin":"Oprindelse","promptTokens":"Spørg tokens","completionTokens":"Fuldførelsestokens","totalTokens":"Samlede tokens","rawModel":"Rå model","scope":"Omfang","skill":"Færdighed","sortBy":"Sorter efter","sortOrder":"Sorteringsrækkefølge","tab":"Tab","text":"Tekst","textarea":"Tekstområde","tool":"Værktøj","toolId":"Værktøjs-id","web":"Web","whereUsed":"Hvor brugt","whitelist":"Hvidliste","blacklist":"Sortliste","resolve":"Løs","force":"Kraft","base64url":"Base64 URL","hex":"Hex","range":"Rækkevidde","component":"Komponent","redirect_uri":"Omdiriger URI","idempotency-key":"Idempotens nøgle","error_description":"Fejlbeskrivelse","code":"Kode","compatible":"Kompatibel","chat-completions":"Chatafslutninger","oauth":"OAuth","auth_token":"Auth Token","crypto":"Krypto","hours":"Timer","selfsigned":"Selvsigneret","proxy_id":"Proxy ID","proxyId":"Proxy ID","connectionId":"Forbindelses-id","resolveConnectionId":"Løs forbindelses-id","resolve_connection_id":"Løs forbindelses-id","scope_id":"Omfang ID","scopeId":"Omfang ID","jwtSecret":"JWT-hemmelighed","keytar":"Keytar","better-sqlite3":"bedre-sqlite3","undici":"undici","builder-id":"Bygherre-id","musicDesc":"Musikbeskrivelse","musicGeneration":"Musik Generation","idc":"IDC","cloud-status-changed":"Cloud-status ændret","where_used":"Hvor brugt","windowMs":"Vindue (ms)","social-github":"GitHub","social-google":"Google","TOOL_ALLOWLIST":"Værktøjstilladelsesliste","TOOL_DENYLIST":"Værktøj Denylist","Failed to save pricing":"Kunne ikke gemme prisen","Failed to reset pricing":"Failed to reset pricing","apikey":"API nøgle","http":"HTTP"},"sidebar":{"home":"Hjem","dashboard":"Dashboard","providers":"Udbydere","combos":"Combos","usage":"Brug","analytics":"Analytics","costs":"Omkostninger","health":"Sundhed","limits":"Grænser og kvoter","cliTools":"CLI værktøjer","media":"Medier","settings":"Indstillinger","translator":"Oversætter","docs":"Dokumenter","issues":"Problemer","apiManager":"API Manager","logs":"Logs","auditLog":"Revisionslog","shutdown":"Nedlukning","restart":"Genstart","shutdownConfirm":"Vil du lukke OmniRoute ned?","restartConfirm":"Genstart OmniRoute?","version":"v{version}","debug":"Debug","system":"System","help":"Hjælp","serverDisconnected":"Server afbrudt","serverDisconnectedMsg":"Proxyserveren er blevet stoppet eller genstarter.","expandSidebar":"Udvid sidebjælken","collapseSidebar":"Skjul sidebjælken","themes":"Temaer","presetColors":"Populære farver","createTheme":"Opret nyt tema...","chooseColor":"Vælg én farve","themeCoral":"Coral","themeBlue":"Blå","themeRed":"Rød","themeGreen":"Grøn","themeViolet":"Violet","themeOrange":"Orange","themeCyan":"Turkis","endpoints":"Endpoints","playground":"Legeplads","agents":"Agenter","cliToolsShort":"Værktøjer","autoCombo":"Auto Combo","searchTools":"Search Tools","cache":"Cache","cacheShort":"Cache"},"themesPage":{"title":"Temaer","description":"Vælg et forudindstillet tema, eller opret dit eget med en enkelt farve","presetColors":"Populære farver","customTheme":"Brugerdefineret tema","customThemeDesc":"Klik på Opret tema, og vælg en farve","createTheme":"Opret nyt tema...","activePreset":"Aktiv theme"},"header":{"logout":"Log ud","language":"Sprog","providers":"Udbydere","providerDescription":"Administrer dine AI-udbyderforbindelser","combos":"Combos","comboDescription":"Modelkombinationer med fallback","usage":"Brug & Analytics","usageDescription":"Overvåg dit API-brug, tokenforbrug og anmodningslogfiler","analytics":"Analytics","analyticsDescription":"Diagrammer, tendenser og evalueringsindsigter","cliTools":"CLI værktøjer","cliToolsDescription":"Konfigurer CLI-værktøjer","home":"Hjem","homeDescription":"Velkommen til OmniRoute","endpoint":"Endpoints","endpointDescription":"Manage proxy endpoints, MCP, A2A, and API endpoints","settings":"Indstillinger","settingsDescription":"Administrer dine præferencer","openaiCompatible":"OpenAI-kompatibel","anthropicCompatible":"Antropisk kompatibel","media":"Medie","mediaDescription":"Generer billeder, videoer og musik","themes":"Temaer","themesDescription":"Vælg et farvetema til hele dashboardpanelet","mcp":"MCP","mcpDescription":"Model Context Protocol server management and tools","a2a":"A2A","a2aDescription":"Agent-to-Agent protocol tasks and observability"},"home":{"quickStart":"Hurtig start","quickStartDesc":"Kom i gang i 4 trin. Tilslut udbydere, rutemodeller, overvåg alt.","fullDocs":"Fuld dokumenter","step1Title":"1. Opret API-nøgle","step1Desc":"Gå til <endpoint>Endpoint</endpoint> -> Registrerede nøgler. Generer én nøgle pr. miljø.","step2Title":"2. Tilslut udbydere","step2Desc":"Tilføj konti i <providers>Providers</providers>. Understøtter OAuth, API Key og gratis niveauer.","step3Title":"3. Peg din klient","step3Desc":"Indstil basis-URL til {url} i din IDE- eller API-klient.","step4Title":"4. Overvåg & optimer","step4Desc":"Spor tokens, omkostninger og fejl i <logs>Request Logs</logs> og <analytics>Analytics</analytics>.","providersOverview":"Oversigt over udbydere","configuredOf":"{configured} konfigureret af {total} tilgængelige udbydere","noModelsAvailable":"Ingen tilgængelige modeller for denne udbyder.","configureFirst":"Konfigurer en forbindelse først i {providers}","configureProvider":"Konfigurer udbyder","modelAvailable":"{count} model tilgængelig","modelsAvailable":"{count} modeller tilgængelige","connectionsActive":"{count} forbindelse aktiv","connectionsActivePlural":"{count} forbindelser aktive","copyModelName":"Kopiér modelnavnet","documentation":"Dokumentation","healthMonitor":"Sundhedsmonitor","reportIssue":"Rapportér problem","activeError":"{active} aktiv · {errors} fejl","oauthLabel":"OAuth","apiKeyLabel":"API nøgle","requestsShort":"{count} req","providerModelsTitle":"{provider} - Modeller","copiedModel":"Kopieret: {model}","aliasLabel":"alias","updateNow":"Opdater nu","updating":"Opdaterer...","updateAvailableDesc":"En ny version er tilgængelig. Klik for at opdatere.","updateStarted":"Opdatering startet..."},"analytics":{"title":"Analytics","overviewDescription":"Overvåg dine API-brugsmønstre, tokenforbrug, omkostninger og aktivitetstendenser på tværs af alle udbydere og modeller.","evalsDescription":"Kør evalueringspakker for at teste og validere dine LLM-endepunkter. Sammenlign modelkvalitet, detekter regressioner og benchmark-forsinkelse.","overview":"Oversigt","evals":"Evals"},"apiManager":{"title":"API nøgler","createKey":"Opret API-nøgle","key":"Nøgle","revokeKey":"Tilbagekald nøgle","revokeConfirm":"Er du sikker på, at du vil tilbagekalde denne API-nøgle?","noKeys":"Ingen API-nøgler endnu","noKeysDesc":"Opret din første API-nøgle til at godkende anmodninger til dit slutpunkt","keyLabel":"Nøglemærke","permissions":"Tilladelser","expiresAt":"Udløber","never":"Aldrig","revoke":"Tilbagekald","showKey":"Vis nøgle","hideKey":"Skjul nøgle","copyKey":"Kopiér API-nøgle","allModels":"Alle modeller","selectedModels":"Udvalgte modeller","readOnly":"Kun læse","fullAccess":"Fuld adgang","keyManagement":"API nøglestyring","keyManagementDesc":"Opret og administrer API-nøgler til godkendelse af anmodninger til dit slutpunkt","totalKeys":"Totalnøgler","restricted":"Begrænset","totalRequests":"Samlet antal anmodninger","modelsAvailable":"Modeller tilgængelige","registeredKeys":"Registrerede nøgler","keysRegistered":"{count} nøgler registreret","keyRegistered":"{count} nøgle registreret","keysSecurityNote":"Hver nøgle isolerer brugssporing og kan tilbagekaldes uafhængigt. Nøgler er maskeret efter oprettelse for sikkerhed.","createFirstKey":"Opret din første nøgle","name":"Navn","usage":"Brug","created":"Oprettet","actions":"Handlinger","reqs":"req","neverUsed":"Aldrig brugt","deleteConfirm":"Vil du slette denne API-nøgle?","usageTips":"Brugstips","tipAuth":"Brug API-nøgler i autorisationsoverskriften som bærer DIN_KEY","tipSecure":"Nøgler vises kun én gang under oprettelsen - gem dem sikkert","tipSeparate":"Opret separate nøgler til forskellige klienter eller miljøer","tipRestrict":"Begræns nøgler til specifikke modeller for bedre sikkerhed og omkostningskontrol","keyName":"Nøglenavn","keyNamePlaceholder":"f.eks. Produktionsnøgle, Udviklingsnøgle","keyNameDesc":"Vælg et beskrivende navn for at identificere denne nøgles formål","keyCreated":"API-nøgle oprettet","keyCreatedSuccess":"Nøglen blev oprettet!","keyCreatedNote":"Kopiér og gem denne nøgle nu – den vises ikke igen.","done":"Færdig","savePermissions":"Gem tilladelser","allowAll":"Tillad alle","restrict":"Begræns","allowAllInfo":"Denne nøgle kan få adgang til alle tilgængelige modeller.","restrictInfo":"Denne nøgle kan få adgang til {selected} af {total} modeller.","selected":"{count} valgt","all":"Alle","clear":"Ryd","searchModels":"Søg efter modeller efter navn eller udbyder...","noModelsFound":"Ingen modeller fundet","keyNameRequired":"Nøglenavn er påkrævet","keyNameTooLong":"Nøglenavnet skal være på højst {max} tegn","keyNameInvalid":"Nøglenavn kan kun indeholde bogstaver, tal, mellemrum, bindestreger og understregninger","invalidKeyName":"Ugyldigt nøglenavn","failedCreateKey":"Kunne ikke oprette nøgle","failedCreateKeyRetry":"Kunne ikke oprette nøgle. Prøv venligst igen.","invalidKeyId":"Ugyldigt nøgle-id","failedDeleteKey":"Nøglen kunne ikke slettes","failedDeleteKeyRetry":"Nøglen kunne ikke slettes. Prøv venligst igen.","invalidModelsSelection":"Ugyldigt valg af modeller","cannotSelectMoreThanModels":"Kan ikke vælge mere end {max} modeller","failedUpdatePermissions":"Kunne ikke opdatere tilladelser","failedUpdatePermissionsRetry":"Kunne ikke opdatere tilladelser. Prøv venligst igen.","unknownProvider":"ukendt","copyMaskedKey":"Kopiér maskeret nøgle","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Sidste: {date}","editPermissions":"Rediger tilladelser","deleteKey":"Slet nøgle","model":"{count} model","models":"{count} modeller","permissionsTitle":"Tilladelser: {name}","allowAllDesc":"Denne nøgle kan få adgang til alle tilgængelige modeller.","restrictDesc":"Denne nøgle kan få adgang til {selectedCount} af {totalModels} modeller.","selectedCount":"{count} valgt","autoResolve":"Auto-Resolve","autoResolveDesc":"Auto-resolve ambiguous model names to native provider for this API key.","keyActive":"Key Active","keyActiveDesc":"Enable or disable this API key. Disabled keys are immediately rejected with 403.","accessSchedule":"Access Schedule","accessScheduleDesc":"Restrict access to specific hours and days of the week.","scheduleFrom":"From","scheduleUntil":"Until","scheduleDays":"Days","scheduleTimezone":"Timezone","scheduleTimezoneHint":"Use IANA timezone names, e.g. America/New_York, Europe/Berlin","scheduleActive":"Schedule","disabled":"Disabled","daySun":"Sun","dayMon":"Mon","dayTue":"Tue","dayWed":"Wed","dayThu":"Thu","dayFri":"Fri","daySat":"Sat","keyOnlyAvailableAtCreation":"Full key available only at creation time — copy it when you first create the key"},"auditLog":{"title":"Revisionslog","searchPlaceholder":"Søgehandlinger...","action":"Handling","actor":"Skuespiller","target":"Mål","ipAddress":"IP-adresse","timestamp":"Tidsstempel","noEntries":"Ingen revisionsposter fundet","filterByAction":"Filtrer efter handling...","filterByActor":"Filtrer efter skuespiller...","filterEntriesAria":"Filtrer revisionslogposter","filterByActionTypeAria":"Filtrer efter handlingstype","filterByActorAria":"Filtrer efter skuespiller","refreshAuditLogAria":"Opdater revisionslog","tableAria":"Revisionslogposter","failedFetchAuditLog":"Kunne ikke hente revisionslog","notAvailable":"—","description":"Administrative handlinger og sikkerhedshændelser","showing":"Viser {count} poster (offset {offset})","previous":"Forrige"},"media":{"title":"Medieværksted","subtitle":"Generér billeder, videoer og musik","model":"Model","prompt":"Prompt","generate":"Generer","generating":"Generating...","loadingModels":"Loading available models...","noModels":"No models available. Configure providers with media capabilities first.","error":"Generation Failed","result":"Result","imageDescription":"Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.","videoDescription":"Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.","musicDescription":"Compose music using Stable Audio Open or MusicGen via ComfyUI."},"cliTools":{"title":"CLI værktøjer","noActiveProviders":"Ingen aktive udbydere","noActiveProvidersDesc":"Tilføj og tilslut udbydere først for at konfigurere CLI-værktøjer.","mapModels":"Kortmodeller","testConnection":"Test forbindelse","connectionStatus":"Forbindelsesstatus","configureEndpoint":"Konfigurer slutpunkt","instructions":"Instruktioner","modelMapping":"Modelkortlægning","baseUrl":"Basis URL","apiKey":"API nøgle","configured":"Konfigureret","notConfigured":"Ikke konfigureret","notInstalled":"Ikke installeret","custom":"Brugerdefineret","unknown":"Ukendt","lastSavedAt":"Sidst gemt: {date}","never":"Aldrig","justNow":"lige nu","minutesAgoShort":"{count}m siden","hoursAgoShort":"{count}t siden","daysAgoShort":"{count}d siden","monthsAgoShort":"{count}måned siden","yearsAgoShort":"{count}år siden","runtimeCheckFailed":"Kørselskontrol mislykkedes","yourApiKeyPlaceholder":"din-api-nøgle","modelPlaceholder":"udbyder/model-id","configurationSaved":"Konfigurationen blev gemt.","failedToSave":"Konfigurationen kunne ikke gemmes.","noApiKeysCreateOne":"Ingen API-nøgler - Opret en på Nøgler-siden","defaultOmnirouteKey":"sk_omniroute (standard)","selectModel":"Vælg Model","selectModelForAlias":"Vælg model til {alias}","selectModelForTool":"Vælg model til {tool}","select":"Vælg","clear":"Ryd","comingSoon":"Kommer snart","checkingRuntime":"Kontrollerer køretidsstatus...","guideOnlyIntegration":"Integration kun til guide (ingen lokal kørselstid påkrævet)","cliRuntimeDetected":"CLI runtime registreret og klar","cliFoundNotRunnable":"CLI fundet, men kan ikke køres{reason}","cliRuntimeNotDetected":"CLI runtime ikke fundet","binary":"Binær","configPath":"Konfigurationssti","configPathShort":"Konfig","failedCheckRuntimeStatus":"Kørselsstatus kunne ikke kontrolleres.","copy":"Kopiér","copied":"Kopieret","copyConfig":"Kopiér Config","saveConfig":"Gem konfiguration","selectionSaved":"Valget er gemt","guide":"Vejledning","detected":"Opdaget","notReady":"Ikke klar","active":"Aktiv","inactive":"Inaktiv","startMitm":"Start MITM","stopMitm":"Stop MITM","mitmStarted":"MITM startede med succes!","mitmStopped":"MITM stoppede med succes!","failedStart":"Kunne ikke starte MITM","failedStop":"Kunne ikke stoppe MITM","saveMappings":"Gem kortlægninger","mappingsSaved":"Kortlægninger gemt!","failedSaveMappings":"Tilknytningerne kunne ikke gemmes","howItWorks":"Sådan fungerer det:","antigravityHowWorksDesc":"Antigravity sender anmodninger til Googles slutpunkt. MITM opsnapper og omdirigerer dem til OmniRoute.","antigravityStep1":"1. Start MITM for at dirigere anmodninger gennem OmniRoute.","antigravityStep2Prefix":"2. Tilføj","antigravityStep2Suffix":"til din hosts-fil som 127.0.0.1.","antigravityStep3":"3. Åbn Antigravity og anmodninger vil blive fuldført.","sudoPasswordRequiredTitle":"Sudo-adgangskode påkrævet","sudoPasswordHint":"Administratoradgangskode er påkrævet for at ændre værtsfil- og systemproxyindstillinger.","enterSudoPassword":"Indtast sudo adgangskode","sudoPasswordRequiredError":"Sudo-adgangskode er påkrævet.","cancel":"Annuller","confirm":"Bekræft","settingsApplied":"Indstillinger blev anvendt!","failedApplySettings":"Indstillingerne kunne ikke anvendes","settingsReset":"Indstillinger blev nulstillet!","failedResetSettings":"Indstillingerne kunne ikke nulstilles","backupRestored":"Backup gendannet!","failedRestore":"Kunne ikke gendanne","checkingCli":"Kontrollerer {tool} CLI...","cliNotRunnable":"{tool} CLI installeret, men kan ikke køres","cliNotInstalled":"{tool} CLI ikke installeret","cliNotDetected":"{tool} CLI ikke fundet","cliDetectedReady":"{tool} CLI fundet og klar","cliFoundFailedHealthcheck":"{tool} CLI blev fundet, men kørselssundhedstjek mislykkedes{reason}.","installCliPrompt":"Installer venligst {tool} CLI for at bruge denne funktion.","installCodexPrompt":"Installer venligst Codex CLI for at bruge auto-apply-funktionen.","hide":"Skjul","howToInstall":"Sådan installeres","installationGuide":"Installationsvejledning","platforms":"macOS / Linux / Windows:","afterInstallationRun":"Kør efter installationen","toVerify":"at verificere.","current":"Nuværende","baseUrlPlaceholder":"https://.../v1","resetToDefault":"Nulstil til standard","providerModelPlaceholder":"udbyder/model-id","apply":"Ansøg","reset":"Nulstil","manualConfig":"Manuel konfiguration","backups":"Sikkerhedskopier","configBackups":"Konfigurer sikkerhedskopier","noBackupsYet":"Ingen sikkerhedskopier endnu. Sikkerhedskopier oprettes automatisk før hver anvendelse eller nulstilling.","restore":"Gendan","backupRestoredReloading":"Backup gendannet! Genindlæser status...","failedRestoreBackup":"Kunne ikke gendanne backup","applied":"Anvendt!","failed":"Mislykkedes","resetDone":"Nulstil!","omnirouteConfiguredOpenAiCompatible":"OmniRoute er konfigureret som OpenAI-kompatibel udbyder","provider":"Udbyder","model":"Model","providers":"Udbydere","auth":"Auth","noApiKeysAvailable":"Ingen tilgængelige API-nøgler","usingDefaultOmniroute":"Bruger standard: sk_omniroute","updateConfig":"Opdater konfiguration","applyConfig":"Anvend Config","noBackupsAvailable":"Ingen tilgængelige sikkerhedskopier.","profileSaved":"Profilen \\"{name}\\" er gemt!","failedSaveProfile":"Profilen kunne ikke gemmes","profileActivated":"Profil aktiveret!","failedActivateProfile":"Profilen kunne ikke aktiveres","profiles":"Profiler","savedProfiles":"Gemte profiler","noProfilesYet":"Ingen profiler gemt endnu. Gem den aktuelle konfiguration som en profil nedenfor.","activate":"Aktiver","deleteProfile":"Slet profil","profileNamePlaceholder":"Profilnavn (f.eks. personlig konto)","saveCurrent":"Gem nuværende","codexAuthNotePrefix":"Codex bruger","codexAuthNoteMiddle":"med","codexAuthNoteSuffix":"Klik på \\"Anvend\\" for at konfigurere automatisk.","claudeManualConfiguration":"Claude CLI - Manuel konfiguration","codexManualConfiguration":"Codex CLI - Manuel konfiguration","droidManualConfiguration":"Factory Droid - Manuel konfiguration","openClawManualConfiguration":"Åbn Claw - Manuel konfiguration","clineManualConfiguration":"Cline manuel konfiguration","kiloManualConfiguration":"Kilokode manuel konfiguration","toolDescriptions":{"antigravity":"Google Antigravity IDE med MITM","claude":"Antropisk Claude Code CLI","codex":"OpenAI Codex CLI","droid":"Factory Droid AI Assistant","openclaw":"Åbn Claw AI Assistant","cline":"Cline AI Coding Assistant CLI","kilo":"Kilokode AI Assistant CLI","cursor":"Cursor AI Code Editor","continue":"Fortsæt AI Assistant","opencode":"OpenCode AI coding agent (Terminal)","kiro":"Amazon Kiro — AI-powered IDE","windsurf":"Windsurf AI Code Editor","copilot":"GitHub Copilot AI Assistant"},"guides":{"cursor":{"notes":{"0":"Kræver Cursor Pro-konto for at bruge denne funktion.","1":"Markøren dirigerer anmodninger gennem sin egen server, så lokalt slutpunkt understøttes ikke. Aktiver venligst Cloud Endpoint i Indstillinger."},"steps":{"1":{"title":"Åbn Indstillinger","desc":"Gå til Indstillinger -> Modeller"},"2":{"title":"Aktiver OpenAI API","desc":"Aktiver muligheden \\"OpenAI API-nøgle\\"."},"3":{"title":"Basis URL"},"4":{"title":"API nøgle"},"5":{"title":"Tilføj brugerdefineret model","desc":"Klik på \\"Vis alle modeller\\" -> \\"Tilføj brugerdefineret model\\""},"6":{"title":"Vælg Model"}}},"continue":{"steps":{"1":{"title":"Åbn Config","desc":"Åbn Fortsæt konfigurationsfil"},"2":{"title":"API nøgle"},"3":{"title":"Vælg Model"},"4":{"title":"Tilføj Model Config","desc":"Tilføj følgende konfiguration til dit modelarray:"}},"notes":{"0":"Continue bruger JSON-konfigurationsfil."}},"opencode":{"steps":{"1":{"title":"Install OpenCode","desc":"Install via npm: npm install -g opencode-ai"},"2":{"title":"API Key"},"3":{"title":"Set Base URL","desc":"opencode config set baseUrl {{baseUrl}}"},"4":{"title":"Select Model"}},"notes":{"0":"OpenCode kræver API-nøglekonfiguration.","1":"Indstil basis-URL\'en til dit OmniRoute-slutpunkt."}},"kiro":{"steps":{"1":{"title":"Open Kiro Settings","desc":"Go to Settings → AI Provider"},"2":{"title":"Base URL","desc":"Paste your OmniRoute endpoint URL"},"3":{"title":"API Key"},"4":{"title":"Select Model"}},"notes":{"0":"Kiro kræver en Amazon-konto."}}},"mitmHowWorksDesc":"{toolName} sends requests to its provider endpoint. MITM intercepts and redirects them to OmniRoute.","mitmStep1":"1. Start MITM to route requests through OmniRoute.","mitmStep2Prefix":"2. Add","mitmStep2Suffix":"to your hosts file as 127.0.0.1.","mitmStep3":"3. Open {toolName} and requests will be proxied.","whenToUseLabel":"Hvornår skal bruges","openToolDocs":"Åbn værktøjsdokumenter","toolUseCases":{"claude":"Brug, når du ønsker stærke planlægnings-arbejdsgange og lange multi-fil-refaktorer med Claude Code.","codex":"Bruges, når dit team er standardiseret på OpenAI Codex CLI-flows og profilbaseret godkendelse.","droid":"Brug, når du har brug for en letvægtsterminalagent med fokus på hurtig kodning og kommandoudførelsesløkker.","openclaw":"Brug, når du vil have en Open Claw-stil-kodningsagent, men dirigeret gennem OmniRoute-politikker.","cline":"Bruges, når du konfigurerer kodningsagenter i editorer og ønsker guidet opsætning med OmniRoute-modeller.","kilo":"Brug, når dit arbejdsflow afhænger af Kilo Code-kommandoer og hurtige iterative redigeringer.","cursor":"Brug, når du koder i Cursor, og du har brug for brugerdefinerede OpenAI-kompatible modeller gennem OmniRoute.","continue":"Brug, når du kører Continue i IDE\'er, og du har brug for bærbar JSON-baseret udbyderkonfiguration.","opencode":"Brug, når du foretrækker terminal-native agentkørsler og scriptet automatisering via OpenCode.","kiro":"Bruges ved integration af Kiro og styring af modelrouting centralt fra OmniRoute.","antigravity":"Bruges, når Antigravity/Kiro-trafik skal opsnappes gennem MITM og dirigeres til OmniRoute.","copilot":"Brug, når du ønsker Copilot-chatstil UX, mens du håndhæver OmniRoute-nøgler og routingregler."}},"combos":{"title":"Combos","description":"Skab modelkombinationer med vægtet routing og fallback-understøttelse","createCombo":"Opret Combo","editCombo":"Rediger kombination","deleteCombo":"Slet Combo","noModels":"Ingen modeller","noModelsYet":"Ingen modeller tilføjet endnu","addModel":"Tilføj model","addModelToCombo":"Tilføj Model til Combo","routingStrategy":"Rutestrategi","maxRetries":"Max forsøger igen","timeout":"Timeout (ms)","healthcheck":"Sundhedstjek","priority":"Prioritet","fallback":"Fallback","roundRobin":"Round Robin","random":"Tilfældig","leastLatency":"Mindst latenstid","comboName":"Combo navn","comboNamePlaceholder":"min-kombi","deleteConfirm":"Vil du slette denne kombination?","noCombosYet":"Ingen kombinationer endnu","comboCreated":"Kombinationen blev oprettet","comboUpdated":"Kombinationen blev opdateret","comboDeleted":"Combo slettet","failedCreate":"Kunne ikke oprette kombination","failedUpdate":"Kunne ikke opdatere kombinationen","errorCreating":"Fejl ved oprettelse af kombination","errorUpdating":"Fejl ved opdatering af kombination","errorDeleting":"Fejl ved sletning af kombination","testFailed":"Testanmodning mislykkedes","failedToggle":"Kombinationen kunne ikke skiftes","testResults":"Testresultater — {name}","resolvedBy":"Løst af:","more":"+{count} mere","reqs":"req","success":"succes","proxyConfigured":"Proxy konfigureret","copyComboName":"Kopiér kombinationsnavnet","enableCombo":"Aktiver kombination","disableCombo":"Deaktiver kombination","testCombo":"Test combo","duplicate":"Duplikat","proxyConfig":"Proxy konfiguration","nameRequired":"Navn er påkrævet","nameInvalid":"Kun bogstaver, tal, -, _, / og . tilladt","nameHint":"Bogstaver, tal, -, _, / og . tilladt","priorityDesc":"Sekventiel fallback: prøver model 1 først, derefter 2 osv.","weightedDesc":"Fordeler trafik efter vægtprocent med fallback","roundRobinDesc":"Cirkulær fordeling: hver anmodning går til den næste model i rotation","randomDesc":"Ensartet tilfældig udvælgelse, derefter tilbagevenden til de resterende modeller","leastUsedDesc":"Vælger modellen med færrest anmodninger, balancerer belastningen over tid","costOptimizedDesc":"Ruter til den billigste model først baseret på priser","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each model once before reshuffling","models":"Modeller","autoBalance":"Auto-balance","advancedSettings":"Avancerede indstillinger","retryDelay":"Forsinkelse af forsøg igen (ms)","concurrencyPerModel":"Samtidighed / Model","queueTimeout":"Timeout for kø (ms)","advancedHint":"Lad være tom for at bruge globale standardindstillinger. Disse tilsidesætter indstillinger for hver udbyder.","moveUp":"Flyt op","moveDown":"Flyt ned","removeModel":"Fjern","saving":"Gemmer...","weighted":"Vægtet","leastUsed":"Mindst brugt","costOpt":"Cost-Opt","strategyGuideTitle":"Sådan bruger du denne strategi","strategyGuideWhen":"ANVENDELSE","strategyGuideAvoid":"Undgå når","strategyGuideExample":"Eksempel","strategyGuide":{"priority":{"when":"Du har én foretrukken model og ønsker kun at falde tilbage på fejl.","avoid":"Du skal anmode om fordeling på tværs af modeller.","example":"Primær kodningsmodel med billigere backup for nedbrud."},"weighted":{"when":"Du har brug for kontrolleret trafik fordelt på modeller.","avoid":"Du kan ikke opretholde nøjagtige vægte over tid.","example":"80% stabil model + 20% kanariefugl model udrulning."},"round-robin":{"when":"Du ønsker forudsigelig og jævn fordeling.","avoid":"Modeller afviger for meget i latens eller omkostninger.","example":"Samme model på flere konti for at sprede gennemløb."},"random":{"when":"Du ønsker enkel distribution med minimal opsætning.","avoid":"Du har brug for strenge trafikgarantier.","example":"Hurtig prototyping med ækvivalente modeller."},"least-used":{"when":"Du vil have adaptiv balancering baseret på live-efterspørgsel.","avoid":"Trafikken er for lav til at drage fordel af brugsbalancering.","example":"Blandede arbejdsbelastninger, hvor en model ofte bliver overbelastet."},"cost-optimized":{"when":"Omkostningsreduktion er din højeste prioritet.","avoid":"Prissætningsdata mangler eller er forældede.","example":"Baggrunds- eller batchjob, hvor lavere omkostninger foretrækkes."}},"advancedHelp":{"maxRetries":"Hvor mange forsøg der forsøges igen, før en anmodning mislykkes.","retryDelay":"Indledende ventetid mellem genforsøg. Højere værdier reducerer sprængningstrykket.","timeout":"Maksimal anmodningsvarighed før afbrydelse.","healthcheck":"Skipper usunde modeller/udbydere fra dirigeringsbeslutninger.","concurrencyPerModel":"Maks. tilladte samtidige anmodninger pr. model i round-robin.","queueTimeout":"Hvor længe en anmodning kan vente i kø, før den udløber."},"templatesTitle":"Hurtige skabeloner","templatesDescription":"Anvend en startprofil, og juster derefter modeller og konfiguration.","templateApply":"Anvend skabelon","templateHighAvailability":"Høj tilgængelighed","templateHighAvailabilityDesc":"Prioriteret routing med sundhedstjek og sikre forsøg.","templateCostSaver":"Omkostningsbesparende","templateCostSaverDesc":"Omkostningsoptimeret routing til budget-første arbejdsbelastning.","templateBalanced":"symmetrisk belastning","templateBalancedDesc":"Minst anvendte routing for at sprede efterspørgslen over tid.","usageGuideHide":"Skjul","usageGuideDontShowAgain":"Vis ikke dette igen","usageGuideShow":"Vis guide","quickTestTitle":"Kombination klar til validering","quickTestDescription":"Kør en test nu for at bekræfte fallback og latensadfærd.","testNow":"Test Nu","pricingCoverage":"Prisdækning","pricingCoverageHint":"Omkostningsoptimeret fungerer bedst, når alle kombinationsmodeller har priser.","pricingAvailable":"Prissætning tilgængelig","pricingMissing":"Ingen prissætning","pricingAvailableShort":"Det er mere forankret i den reelle situati","pricingMissingShort":"ingen pris","warningRoundRobinSingleModel":"Round-robin er mest nyttig med mindst 2 modeller.","warningCostOptimizedPartialPricing":"Kun {priced} af {total}-modeller har priser. Routing kan være delvist omkostningsbevidst.","warningCostOptimizedNoPricing":"Der blev ikke fundet nogen prisdata for denne kombination. Omkostningsoptimeret kan rute uventet.","readinessTitle":"Klar til at spare?","readinessDescription":"Gennemgå tjeklisten, før du opretter eller opdaterer denne kombination.","readinessCheckName":"Kombinationsnavnet er gyldigt","readinessCheckModels":"Der er valgt mindst én model","readinessCheckWeights":"Vægtet total er 100 %","readinessCheckWeightsOptional":"Vægtregel ikke påkrævet","readinessCheckPricing":"Prisdata er tilgængelige","readinessCheckPricingOptional":"Reglen om prissætning er ikke påkrævet","saveBlockedTitle":"Gem er blokeret, indtil følgende elementer er rettet:","saveBlockName":"Definer et kombinationsnavn.","saveBlockModels":"Tilføj mindst én model.","saveBlockWeighted":"Indstil vægte til 100 % (aktuelt: {total}%).","saveBlockPricing":"Tilføj priser for mindst én model, eller vælg en anden strategi.","recommendationsLabel":"Recommended setup","applyRecommendations":"Apply recommendations","recommendationsUpdated":"Recommendations updated for {strategy}.","recommendationsApplied":"Recommendations applied to this combo.","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."}},"templateFreeStack":"Free Stack ($0)","templateFreeStackDesc":"Round-robin across all free providers: Kiro (Claude), iFlow (5 models), Qwen (4 models), Gemini CLI. Zero cost, never stops coding."},"costs":{"title":"Omkostninger","budget":"Budget","totalCost":"Samlede omkostninger","breakdown":"Omkostningsfordeling","noData":"Ingen omkostningsdata","byModel":"Efter model","byProvider":"Af udbyder"},"endpoint":{"title":"API-endepunkt","available":"Tilgængelige endepunkter","cloudProxy":"Cloud proxy","disableConfirm":"Er du sikker på, at du vil deaktivere cloud-proxy?","baseUrl":"Basis URL","apiKeyLabel":"API nøgle","registeredKeys":"Registrerede nøgler","chatCompletions":"Chatafslutninger","responses":"Svar","listModels":"Liste over modeller","usingCloudProxy":"Brug af Cloud Proxy","usingLocalServer":"Brug af lokal server","machineId":"Maskin-id: {id}...","disableCloud":"Deaktiver Cloud","enableCloud":"Aktiver Cloud","modelsAcrossEndpoints":"{models} modeller på tværs af {endpoints} slutpunkter","chatDesc":"Streaming og ikke-streaming chat med alle udbydere","embeddings":"Indlejringer","embeddingsDesc":"Tekstindlejringer til søge- og RAG-pipelines","imageGeneration":"Billedgenerering","imageDesc":"Generer billeder fra tekstprompter","rerank":"Genranger","rerankDesc":"Genranger dokumenter efter relevans for en forespørgsel","audioTranscription":"Lydtransskription","audioTranscriptionDesc":"Transskriber lydfiler til tekst (Whisper)","textToSpeech":"Tekst til tale","textToSpeechDesc":"Konverter tekst til naturligt klingende tale","moderations":"Moderationer","moderationsDesc":"Indholdsmoderering og sikkerhedsklassificering","responsesDesc":"OpenAI Responses API for Codex and advanced agentic workflows","listModelsDesc":"List all available models across all connected providers","settingsApiDesc":"Read and modify OmniRoute configuration via API","settingsApi":"Settings API","categoryCore":"Kerne-API\'er","categoryMedia":"Medier & Multi-Modal","categoryUtility":"Værktøjer & Administration","enableCloudTitle":"Aktiver Cloud Proxy","whatYouGet":"Hvad du får","cloudBenefitAccess":"Få adgang til din API fra hvor som helst i verden","cloudBenefitShare":"Del nemt slutpunkt med dit team","cloudBenefitPorts":"Ingen grund til at åbne porte eller konfigurere firewall","cloudBenefitEdge":"Hurtigt globalt kantnetværk","cloudSessionNote":"Cloud beholder din godkendelsessession i 1 dag. Hvis den ikke bruges, slettes den automatisk.","cloudUnstableNote":"Cloud er i øjeblikket ustabil med Claude Code OAuth i nogle tilfælde.","cloudConnected":"Cloud Proxy tilsluttet!","connectingToCloud":"Opretter forbindelse til skyen...","verifyingConnection":"Bekræfter forbindelse...","connecting":"Opretter forbindelse...","verifying":"Bekræfter...","connected":"Forbundet!","disableCloudTitle":"Deaktiver Cloud Proxy","disableWarning":"Alle godkendelsessessioner vil blive slettet fra skyen.","syncingData":"Synkroniserer seneste data...","disablingCloud":"Deaktiverer skyen...","syncing":"Synkroniserer...","disabling":"Deaktiverer...","cloudConnectedVerified":"Cloud Proxy tilsluttet og verificeret!","connectedVerificationPending":"Forbundet — bekræftelse afventer","connectedVerificationPendingWithError":"Forbundet — bekræftelse afventer: {error}","cloudDisabledSuccess":"Cloud deaktiveret","syncedSuccess":"Synkroniseret med succes","failedDisable":"Skyen kunne ikke deaktiveres","failedEnable":"Skyen kunne ikke aktiveres","cloudRequestTimeout":"Timeout for skyanmodning","cloudRequestFailed":"Cloud-anmodning mislykkedes","cloudWorkerUnreachable":"Kunne ikke nå cloud worker. Sørg for, at skytjenesten kører (npm kør dev i /cloud).","connectionFailed":"Forbindelsen mislykkedes","syncFailed":"Kunne ikke synkronisere skydata","providerModelsTitle":"{provider} — Modeller","noModelsForProvider":"Ingen tilgængelige modeller for denne udbyder.","chat":"Chat","embedding":"Indlejring","image":"Billede","custom":"skik","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Integrationsoverflade","sectionDescription":"OpenAI-kompatible API\'er og operationelle protokolendepunkter","tabApis":"OpenAI-kompatible API\'er","tabProtocols":"Protokoller","tabsAria":"Endepunktsafsnit","protocolsTitle":"Protokoller","protocolsDescription":"MCP og A2A er førsteklasses endepunkter med dedikeret observerbarhed og kontroller.","mcpCardTitle":"MCP-server","mcpCardDescription":"Modelkontekstprotokol over stdio","a2aCardTitle":"A2A-server","a2aCardDescription":"Agent2Agent JSON-RPC-endepunkt","protocolToolsLabel":"Værktøjer","protocolTasksLabel":"Opgaver","protocolActiveStreamsLabel":"Aktive streams","protocolLastActivity":"Seneste aktivitet","quickStart":"Kom hurtigt i gang","openMcpDashboard":"Åbn MCP-administration","openA2aDashboard":"Åbn A2A-administration","mcpQuickStartTitle":"Hurtig start","mcpQuickStartStep1":"Kør MCP-serveren via`omniroute --mcp`.","mcpQuickStartStep2":"Konfigurer din MCP-klient til at forbinde over stdio-transport.","mcpQuickStartStep3":"Påkald værktøjer som `omniroute_get_health` og `omniroute_list_combos`.","a2aQuickStartTitle":"Hurtig start","a2aQuickStartStep1":"Find agentkortet på`/.well-known/agent.json`.","a2aQuickStartStep2":"Send JSON-RPC-anmodninger til`POST /a2a`vedhjælp af `message/send` eller `message/stream`.","a2aQuickStartStep3":"Spor og kontroller opgaver ved hjælp af `tasks/get` og `tasks/cancel`.","completionsLegacy":"Completions (Legacy)","completionsLegacyDesc":"Legacy OpenAI text completions — accepts both prompt string and messages array format","categorySearch":"Search & Discovery","webSearch":"Web Search","webSearchDesc":"Unified web search across multiple providers with automatic failover and caching","searchProvider":"Search Provider","searchProviderDesc":"This provider is used for web search via POST /v1/search. No model configuration needed — search providers are ready to use once an API key is connected.","cloudflaredUrlNotice":"Creates a temporary Cloudflare Quick Tunnel. The URL changes after every restart."},"mcpDashboard":{"loading":"Indlæser MCP-dashboard...","activate":"aktivér","deactivate":"deaktiver","confirmSwitchCombo":"Bekræft {action} combo \\"{combo}\\"?","switchComboFailed":"Kunne ikke skifte kombinationstilstand.","switchComboSuccess":"Kombinationen \\"{combo}\\" er opdateret.","confirmApplyProfile":"Vil du anvende modstandsdygtighedsprofilen \\"{profile}\\"?","applyProfileFailed":"Kunne ikke anvende modstandsdygtighedsprofil.","applyProfileSuccess":"Profil \\"{profile}\\" er anvendt.","confirmResetBreakers":"Nulstil alle afbrydere?","resetBreakersFailed":"Kunne ikke nulstille afbrydere.","resetBreakersSuccess":"Afbrydere nulstilles.","processStatus":"Processtatus.","online":"Online","offline":"Offline","pid":"Underlivsbetaendelse","sessionUptime":"Sessionens oppetid","lastHeartbeat":"Sidste hjerteslag","activity24h":"Aktivitet (24 timer)","totalCalls":"Samlede kald","successRate":"54 IE/kg)","avgLatency":"Gns. ventetid","topTools":"Topværktøjer","noToolCalls24h":"Ingen værktøjsopkald inden for de sidste 24 timer.","runtimeDetails":"Kørselsoplysninger","transport":"Transport","scopesEnforced":"Omfang håndhævet","yes":"ja","no":"nej","lastCall":"Sidste opkald","heartbeatPath":"Hjerteslagssti","operationalControls":"Driftskontrol","switchCombo":"Skift combo","inactive":"inaktiv","active":"aktiv","activateCombo":"Aktiver combo","deactivateCombo":"Deaktiver combo","applyResilienceProfile":"Anvend modstandsdygtighedsprofil","profileAggressive":"aggressive","profileBalanced":"afbalanceret","profileConservative":"konservative","applyProfile":"Anvend profil","resetCircuitBreakers":"Nulstil afbrydere","resetCircuitBreakersHelp":"Rydder den aktuelle afbrydertilstand og fejltællere for udbydere.","resetAllBreakers":"Nulstil alle afbrydere","toolsAndScopes":"Værktøjer og scopes","tableTool":"Værktøj","tableScopes":"Omfang","tablePhase":"Fase","tableAudit":"Revision","auditLog":"Revisionslog","auditSummary":"Opkald: {total} | side {page} af {totalPages}","allTools":"Alle værktøjer","allResults":"Alle resultater","success":"Succes","failure":"Fejl","apiKeyIdPlaceholder":"apiKeyId","loadingAuditEntries":"Indlæser revisionsposter...","noAuditEntriesForFilters":"Ingen revisionsposter fundet for aktuelle filtre.","tableTimestamp":"Tidsstempel","tableDuration":"Varighed","tableResult":"Resultat","tableApiKey":"API nøgle","failed":"mislykkedes","previous":"Forrige","next":"Næste"},"a2aDashboard":{"loading":"Indlæser A2A-dashboard...","confirmCancelTask":"Vil du annullere opgave {taskId}?","cancelTaskFailed":"Opgaven kunne ikke annulleres.","cancelTaskSuccess":"Opgave {taskId} annulleret.","smokeSendFailed":"message/send smoke test failed.","smokeSendSuccessWithTask":"message/send ok (task {taskId}).","smokeSendSuccess":"message/send ok.","smokeStreamFailed":"message/stream smoke test failed.","smokeStreamSuccessWithTask":"message/stream ok (task {taskId}{stateSuffix}).","smokeStreamNoTaskId":"message/stream finished without task id.","health":"Health","ok":"ok","totalTasks":"Total tasks","activeStreams":"Aktive streams","lastTask":"Last task","taskStateOverview":"Task state overview","state":{"submitted":"submitted","working":"working","completed":"afsluttet","failed":"mislykkedes","cancelled":"annulleret"},"agentCard":"Agentkort","version":"Version","url":"URL","capabilities":"Evner","agentCardNotAvailable":"Agentkort er ikke tilgængeligt.","quickValidation":"Hurtig validering","quickValidationDescription":"Udfører røgopkald gennem live `/a2a` slutpunktet.","runMessageSend":"Run message/send","runMessageStream":"Run message/stream","taskManagement":"Task management","taskSummary":"{total} tasks | page {page} of {totalPages}","allStates":"all","allSkills":"all skills","loadingTasks":"Loading tasks...","noTasksForFilters":"No tasks found for current filters.","tableTask":"Task","tableSkill":"Skill","tableState":"State","tableUpdated":"Updated","tableActions":"Handlinger","view":"Udsigt","cancel":"Ophæve","previous":"Forrige","next":"Næste","taskDetail":"Opgavedetaljer","close":"Tæt","metadata":"Metadata","events":"Begivenheder","artifacts":"Artefakter"},"health":{"title":"Systemsundhed","description":"Realtidsovervågning af din OmniRoute-instans","healthy":"Sundt","degraded":"Nedbrudt","down":"Ned","uptime":"Oppetid","memory":"Hukommelse","memoryRss":"Hukommelse (RSS)","heap":"Dynge","cpu":"CPU","database":"Database","version":"version","lastCheck":"Sidste kontrol","providerHealth":"Udbyder sundhed","systemMetrics":"System Metrics","tokenHealth":"Token Health","refreshAll":"Opdater alle","checkNow":"Tjek nu","loadingHealth":"Indlæser sundhedsdata...","failedToLoad":"Kunne ikke indlæse sundhedsdata: {error}","retry":"Prøv igen","allOperational":"Alle systemer i drift","issuesDetected":"Systemproblemer opdaget","updatedAt":"Opdateret {time}","latency":"Latency","latencyP50":"p50","latencyP95":"s95","latencyP99":"s99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Samlet antal anmodninger","noDataYet":"Ingen data endnu","promptCache":"Spørg cache","entries":"Indgange","hitRate":"Hitrate","hitsMisses":"Hits / Misses","signatureCache":"Signatur cache","signatureDefaults":"Standarder","signatureTool":"Værktøj","signatureFamily":"Familie","signatureSession":"Session","recovering":"Gendannelse","noCBData":"Ingen strømafbryderdata tilgængelige. Kom med nogle anmodninger først.","providerHealthStatusAria":"Udbyder sundhedsstatus","issuesLabel":"Problemer opdaget","operational":"Operationel","providers":"Udbydere","healthyCount":"{count} sund","nodeVersion":"Node {version}","failures":"{count} fejl","failuresPlural":"{count} fejl","lastFailure":"Sidst","rateLimitStatus":"Prisgrænsestatus","activeLimiters":"{count} aktiv begrænser","activeLimitersPlural":"{count} aktive begrænsere","queued":"I kø","queuedCount":"{count} i kø","running":"løb","runningCount":"{count} kører","ok":"OK","activeLockouts":"Aktive lockouts","resetConfirm":"Nulstille alle afbrydere til sund tilstand? Dette vil rydde alle fejloptællinger og gendanne alle udbydere til driftsstatus.","resetAllTitle":"Nulstil alle afbrydere til sund tilstand","resetting":"Nulstiller...","resetAll":"Nulstil alle","until":"Indtil {time}","activeProviders":"{count} active","monitoredProviders":"{count} monitored","configuredProvidersLabel":"Konfigureret i dashboard","configuredProvidersHint":"Udbydere med legitimationsoplysninger gemt i /dashboard/udbydere, uanset køretidstilstand.","activeProvidersHint":"Konfigurerede udbydere, der i øjeblikket er aktiveret for routinganmodninger.","monitoredProvidersHint":"Udbydere, der i øjeblikket spores af strømafbryderens sundhedsmonitorer."},"limits":{"title":"Grænser og kvoter","rateLimit":"Satsgrænse","remaining":"Tilbage","requestsPerMinute":"Forespørgsler/min","tokensPerMinute":"Poletter/min","dailyLimit":"Daglig grænse"},"logs":{"title":"Logs","requestLogs":"Anmod om logs","proxyLogs":"Proxy logs","auditLog":"Revisionslog","console":"Konsol","auditLogDesc":"Administrative handlinger og sikkerhedshændelser","loading":"Indlæser...","refresh":"Opdater","filterByAction":"Filtrer efter handling...","filterByActor":"Filtrer efter skuespiller...","filterEntriesAria":"Filtrer revisionslogposter","filterByActionTypeAria":"Filtrer efter handlingstype","filterByActorAria":"Filtrer efter skuespiller","refreshAuditLogAria":"Opdater revisionslog","tableAria":"Revisionslogposter","failedFetchAuditLog":"Kunne ikke hente revisionslog","showing":"Viser {count} poster (offset {offset})","search":"Søg","timestamp":"Tidsstempel","action":"Handling","actor":"Skuespiller","target":"Mål","details":"Detaljer","ipAddress":"IP-adresse","notAvailable":"—","noEntries":"Ingen revisionslogposter fundet","previous":"Forrige","next":"Næste"},"onboarding":{"welcome":"Velkommen","security":"Sikkerhed","test":"Test","ready":"Klar!","setPassword":"Indstil adgangskode","addProvider":"Tilføj din første udbyder","getStarted":"Kom i gang","skip":"Spring over","skipWizard":"Spring guiden helt over","skipPassword":"Spring adgangskodeopsætning over","skipAndContinue":"Spring over og fortsæt","passwordLabel":"Adgangskode","confirmPassword":"Bekræft adgangskode","enterPassword":"Indtast adgangskode","confirmPasswordPlaceholder":"Bekræft adgangskode","passwordsMismatch":"Adgangskoder stemmer ikke overens","setupComplete":"Opsætning fuldført!","goToDashboard":"Gå til Dashboard →","welcomeDesc":"OmniRoute er din lokale AI API-proxy. Det dirigerer anmodninger til flere AI-udbydere med belastningsbalancering, failover og brugssporing.","multiProvider":"Multi-udbyder","usageTracking":"Brugssporing","apiKeyMgmt":"API Key Mgmt","securityDesc":"Indstil en adgangskode for at beskytte dit dashboard, eller spring over indtil videre.","providerDesc":"Tilslut din første AI-udbyder. Du kan tilføje flere senere.","apiKeyRequired":"API-nøgle (påkrævet)","customUrlOptional":"Tilpasset webadresse (valgfrit)","testDesc":"Lad os kontrollere, at din udbyderforbindelse fungerer.","runTest":"Kør forbindelsestest","testingConnection":"Tester forbindelse...","connectionSuccessful":"Forbindelsen lykkedes! Din udbyder er klar.","noProviderFound":"Ingen udbyder fundet. Du kan tilføje en fra dashboardet senere.","testFailed":"Test mislykkedes, men du kan konfigurere dette senere.","couldNotTest":"Kunne ikke teste lige nu. Du kan teste fra dashboardet.","doneDesc":"Du er klar! Din OmniRoute-instans er konfigureret og klar til proxy AI-anmodninger.","yourEndpoint":"Dit slutpunkt:","continue":"Fortsæt","retry":"Prøv igen","failedSetPassword":"Kunne ikke indstille adgangskoden. Prøv igen.","failedAddProvider":"Kunne ikke tilføje udbyder. Prøv igen.","connectionError":"Forbindelsesfejl. Prøv venligst igen.","provider":"Udbyder"},"providers":{"title":"Udbydere","addProvider":"Tilføj udbyder","editProvider":"Rediger udbyder","deleteProvider":"Slet udbyder","noProviders":"Ingen udbydere er konfigureret","modelAvailability":"Modeltilgængelighed","accounts":"Regnskaber","newAccount":"Ny konto","deleteConfirm":"Er du sikker på, at du vil slette denne udbyder?","testing":"Tester...","testConnection":"Test forbindelse","testSuccess":"Forbindelsen lykkedes","testFailed":"Forbindelsen mislykkedes","available":"Tilgængelig","cooldown":"Nedkøling","unavailable":"Ikke tilgængelig","unknown":"Ukendt","oauthLabel":"OAuth","compatibleLabel":"Kompatibel","chat":"Chat","responses":"Svar","messages":"Beskeder","oauthProviders":"OAuth-udbydere","freeProviders":"Gratis udbydere","apiKeyProviders":"API-nøgleudbydere","compatibleProviders":"API Key-kompatible udbydere","testAll":"Test alle","testAllOAuth":"Test alle OAuth-forbindelser","testAllFree":"Test alle gratis forbindelser","testAllApiKey":"Test alle API-nøgleforbindelser","testAllCompatible":"Test alle kompatible forbindelser","connected":"{count} Forbundet","errorCount":"{count} Fejl ({code})","errorCountNoCode":"{count} Fejl","noConnections":"Ingen forbindelser","disabled":"Deaktiveret","enableProvider":"Aktiver udbyder","disableProvider":"Deaktiver udbyder","testResults":"Testresultater","noCompatibleYet":"Ingen kompatible udbydere tilføjet endnu","compatibleHint":"Brug knapperne ovenfor til at tilføje OpenAI- eller Anthropic-kompatible slutpunkter","addOpenAICompatible":"Tilføj OpenAI-kompatibel","addAnthropicCompatible":"Tilføj Antropisk kompatibel","addNewProvider":"Tilføj ny udbyder","backToProviders":"Tilbage til Udbydere","configureNewProvider":"Konfigurer en ny AI-udbyder til brug med dine applikationer.","providerLabel":"Udbyder","selectProvider":"Vælg en udbyder","selectedProvider":"Udvalgt udbyder","authMethod":"Autentificeringsmetode","apiKeyLabel":"API nøgle","apiKeyRequired":"API-nøgle er påkrævet","selectProviderRequired":"Vælg venligst en udbyder","enterApiKey":"Indtast din API-nøgle","apiKeySecure":"Din API-nøgle vil blive krypteret og opbevaret sikkert.","oauth2Connect":"Opret forbindelse til OAuth2","oauth2Label":"OAuth2","oauth2Desc":"Tilslut din konto ved hjælp af OAuth2-godkendelse.","displayName":"Vist navn","displayNamePlaceholder":"f.eks. Production API, Dev Environment","displayNameHint":"Valgfrit. Et venligt navn til at identificere denne konfiguration.","active":"Aktiv","activeDescription":"Aktiver denne udbyder til brug i dine applikationer","cancel":"Annuller","createProvider":"Opret udbyder","failedCreate":"Kunne ikke oprette udbyder","errorOccurred":"Der opstod en fejl. Prøv venligst igen.","modelStatus":"Modelstatus","allModelsOperational":"Alle modeller i drift","modelsWithIssues":"{count} model(er) med problemer","allModelsNormal":"Alle modeller reagerer normalt.","cooldownCleared":"Nedkøling ryddet for {model}","failedClearCooldown":"Kunne ikke rydde nedkøling","loadingAvailability":"Indlæser modeltilgængelighed...","clearCooldown":"Ryd","clearing":"Rydder...","until":"Indtil {time}","providerTestFailed":"Providertest mislykkedes","modeTest":"{mode} Test","passedCount":"{count} bestået","failedCount":"{count} mislykkedes","testedCount":"{count} testet","millisecondsAbbr":"{value}ms","okShort":"OK","errorShort":"FEJL","noActiveConnectionsInGroup":"Der blev ikke fundet nogen aktive forbindelser til denne gruppe.","allTestsPassed":"Alle {total} tests bestået","testSummary":"{passed}/{total} bestået, {failed} mislykkedes","nameLabel":"Navn","prefixLabel":"Præfiks","baseUrlLabel":"Basis URL","apiTypeLabel":"API type","prefixHint":"Påkrævet. Unikt præfiks for modelnavne.","nameHint":"Påkrævet. En venlig etiket til denne node.","baseUrlHint":"Påkrævet. Udbyder API base URL.","anthropicPrefixPlaceholder":"ac-prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Bekræft forbindelsen","validating":"Validerer...","connectionValid":"Forbindelsen er gyldig!","connectionFailed":"Forbindelsen mislykkedes. Tjek URL og nøgle.","testKeyLabel":"Test API-nøgle","testKeyPlaceholder":"sk-... (kun til validering)","providerNotFound":"Udbyder blev ikke fundet","deleteConnectionConfirm":"Vil du slette denne forbindelse?","failedSetAlias":"Aliaset kunne ikke indstilles","failedSaveConnection":"Forbindelsen kunne ikke gemmes","failedSaveConnectionRetry":"Forbindelsen kunne ikke gemmes. Prøv venligst igen.","failedRetestConnection":"Forbindelsen kunne ikke gentestes","deleteCompatibleNodeConfirm":"Vil du slette denne {type}-kompatible node?","anthropicCompatibleDetails":"Antropiske kompatible detaljer","openaiCompatibleDetails":"OpenAI-kompatible detaljer","messagesApi":"Beskeder API","responsesApi":"Responses API","chatCompletions":"Chatafslutninger","importingModels":"Importerer...","importFromModels":"Importer fra /models","clearAllModels":"Ryd alle modeller","clearAllModelsConfirm":"Er du sikker på, at du vil fjerne alle modeller for denne udbyder? Dette kan ikke fortrydes.","clearAllModelsSuccess":"Alle modeller ryddet","clearAllModelsFailed":"Det lykkedes ikke at rydde modeller","addConnectionToImport":"Tilføj en forbindelse for at aktivere import.","noModelsConfigured":"Ingen modeller konfigureret","connectionCount":"{count} forbindelse(r)","fetchingModels":"Henter tilgængelige modeller...","failedFetchModels":"Kunne ikke hente modeller","noModelsFound":"Ingen modeller fundet","importFailed":"Import mislykkedes","noNewModelsAdded":"Der blev ikke tilføjet nye modeller.","adding":"Tilføjer...","importingModelsTitle":"Import af modeller","copyModel":"Kopi model","removeModel":"Fjern modellen","rateLimitProtected":"Beskyttet","rateLimitUnprotected":"Ubeskyttet","enableRateLimitProtection":"Klik for at aktivere hastighedsgrænsebeskyttelse","disableRateLimitProtection":"Klik for at deaktivere satsgrænsebeskyttelse","productionKey":"Produktionsnøgle","enterNewApiKey":"Indtast ny API-nøgle","optional":"Valgfrit","anthropicCompatibleName":"Antropisk kompatibel","openaiCompatibleName":"OpenAI-kompatibel","failedImportModels":"Kunne ikke importere modeller","noModelsReturnedFromEndpoint":"Ingen modeller returneret fra /models slutpunkt.","importingModelsProgress":"Importerer {current} af {total} modeller...","foundModelsStartingImport":"Fundet {count} modeller. Starter import...","importingModelById":"Importerer {modelId}...","importSuccessCount":"{count, plural, one {# model} other {# models}} blev importeret med succes!","noNewModelsAddedExisting":"Ingen nye modeller blev tilføjet (alle findes allerede).","importDoneCount":"✓ Færdig! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Der opstod en uventet fejl","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"beskeder","responsesPath":"svar","chatCompletionsPath":"chat/afslutninger","add":"Tilføj","edit":"Rediger","delete":"Slet","anthropic":"Antropisk","openai":"OpenAI","singleConnectionPerCompatible":"Kun én forbindelse er tilladt pr. kompatibel node. Tilføj en anden node, hvis du har brug for flere forbindelser.","connections":"Forbindelser","providerProxyTitleConfigured":"Udbyder proxy: {host}","configured":"konfigureret","providerProxyConfigureHint":"Konfigurer proxy for alle forbindelser fra denne udbyder","providerProxy":"Udbyder proxy","noConnectionsYet":"Ingen forbindelser endnu","addFirstConnectionHint":"Tilføj din første forbindelse for at komme i gang","addConnection":"Tilføj forbindelse","availableModels":"Tilgængelige modeller","pageAutoRefresh":"Siden opdateres automatisk...","statusDisabled":"deaktiveret","statusConnected":"tilsluttet","statusRuntimeIssue":"runtime problem","statusAuthFailed":"godkendelse mislykkedes","statusRateLimited":"sats begrænset","statusNetworkIssue":"netværksproblem","statusTestUnsupported":"test ikke understøttet","statusUnavailable":"ikke tilgængelig","statusFailed":"mislykkedes","statusError":"fejl","oauthAccount":"OAuth-konto","errorTypeRuntime":"Lokal køretid","errorTypeUpstreamAuth":"Opstrøms auth","errorTypeMissingCredential":"Manglende legitimationsoplysninger","errorTypeRefreshFailed":"Opdatering mislykkedes","errorTypeTokenExpired":"Token er udløbet","errorTypeRateLimited":"Sats begrænset","errorTypeUpstreamUnavailable":"Upstream ikke tilgængelig","errorTypeNetworkError":"Netværksfejl","errorTypeTestUnsupported":"Test understøttes ikke","errorTypeUpstreamError":"Opstrøms fejl","proxySourceGlobal":"Globalt","proxySourceProvider":"Udbyder","proxySourceKey":"Nøgle","proxyConfiguredBySource":"Proxy ({source}): {host}","autoPriority":"Auto: {priority}","proxy":"Fuldmagt","retestAuthentication":"Gentest godkendelse","retest":"Gentest","disableConnection":"Deaktiver forbindelse","enableConnection":"Aktiver forbindelse","reauthenticateConnection":"Genautentificer denne forbindelse","proxyConfig":"Proxy konfiguration","aliasExistsAlert":"Aliaset \\"{alias}\\" findes allerede. Brug venligst en anden model, eller rediger eksisterende alias.","openRouterAnyModelHint":"OpenRouter understøtter enhver model. Tilføj modeller og opret aliaser for hurtig adgang.","modelIdFromOpenRouter":"Model ID (fra OpenRouter)","openRouterModelPlaceholder":"antropisk/claude-3-opus","customModels":"Brugerdefinerede modeller","customModelsHint":"Tilføj model-id\'er, der ikke er på standardlisten. Disse vil være tilgængelige for routing.","modelId":"Model ID","customModelPlaceholder":"f.eks. gpt-4.5-turbo","loading":"Indlæser...","removeCustomModel":"Fjern brugerdefineret model","noCustomModels":"Ingen brugerdefinerede modeller tilføjet endnu.","allSuggestedAliasesExist":"Alle foreslåede aliasser findes allerede. Vælg venligst en anden model, eller fjern modstridende aliasser.","failedSaveCustomModel":"Kunne ikke gemme den tilpassede model","modelAddedSuccess":"Model {modelId} blev tilføjet","failedAddModelTryAgain":"Kunne ikke tilføje model. Prøv venligst igen.","failedSaveImportedModel":"Kunne ikke gemme importeret model til brugerdefineret database","failedImportModelsTryAgain":"Kunne ikke importere modeller. Prøv venligst igen.","failedRemoveModelFromDatabase":"Kunne ikke fjerne modellen fra databasen","modelRemovedSuccess":"Modellen blev fjernet","failedDeleteModelTryAgain":"Modellen kunne ikke slettes. Prøv venligst igen.","compatibleModelsDescription":"Tilføj {type}-kompatible modeller manuelt eller importer dem fra /models-slutpunktet.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"API-nøglevalidering mislykkedes. Tjek venligst din nøgle og prøv igen.","addProviderApiKeyTitle":"Tilføj {provider} API-nøgle","checking":"Tjekker...","check":"Tjek","valid":"Gyldig","invalid":"Ugyldig","creating":"Opretter...","validationChecksAnthropicCompatible":"Validering kontrollerer {provider} ved at bekræfte API-nøglen.","validationChecksOpenAiCompatible":"Valideringstjek {provider} via /models på din basis-URL.","priorityLabel":"Prioritet","saving":"Gemmer...","save":"Gem","editConnection":"Rediger forbindelse","accountName":"Kontonavn","email":"E-mail","healthCheckMinutes":"Sundhedstjek (min)","healthCheckHint":"Proaktivt token-opdateringsinterval. 0 = deaktiveret.","groupLabel":"Environment","groupPlaceholder":"e.g. eKaizen, Personal","failedTestConnection":"Forbindelsen kunne ikke testes","failed":"Mislykkedes","leaveBlankKeepCurrentApiKey":"Lad stå tomt for at beholde den aktuelle API-nøgle.","editCompatibleTitle":"Rediger {type} Kompatibel","compatibleBaseUrlHint":"Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.","apiKeyForCheck":"API-nøgle (til check)","compatibleProdPlaceholder":"{type} Kompatibel (Prod)","providerTestTimeout":"Provider test timed out — too many connections to test at once","advancedSettings":"Advanced Settings","chatPathLabel":"Chat Endpoint Path","chatPathPlaceholder":"/chat/completions","chatPathHint":"Custom chat path for providers with non-standard APIs (e.g. /v4/chat/completions)","modelsPathLabel":"Models Endpoint Path","modelsPathPlaceholder":"/models","modelsPathHint":"Custom models path for validation (e.g. /v4/models)","builtInModels":"Built-in models","builtInModelsHint":"Registry models for this provider. Use the pencil to set compatibility options.","normalizeToolCallIdLabel":"Normalize tool call IDs to 9 characters (e.g. Mistral)","preserveDeveloperRoleLabel":"Keep OpenAI Responses developer role (do not map to system)","compatAdjustmentsTitle":"Compatibility","compatButtonLabel":"Compatibility","compatToolIdShort":"Tool ID 9","compatDeveloperShort":"Developer role","compatDoNotPreserveDeveloper":"Do not preserve developer role","compatBadgeNoPreserve":"No preserve","compatProtocolLabel":"Client request protocol","compatProtocolHint":"These options apply when OmniRoute detects this request shape (OpenAI Chat, Responses API, or Anthropic Messages).","compatProtocolOpenAI":"OpenAI Chat Completions","compatProtocolOpenAIResponses":"OpenAI Responses API","compatProtocolClaude":"Anthropic Messages","tokenRefreshed":"Token refreshed successfully","tokenRefreshFailed":"Token refresh failed","compatBadgeUpstreamHeaders":"Headers","compatUpstreamAddRow":"Add header","compatUpstreamHeaderName":"Header name","compatUpstreamHeaderValue":"Value","compatUpstreamHeadersHint":"High-privilege setting — same trust level as editing provider API credentials; only trusted admins should use it. Merged after OmniRoute adds auth from the provider API key. If a custom header uses the same name as an existing one (e.g. Authorization), your value fully replaces the auto-generated header (including the Bearer token) — the upstream only sees what you typed, not the key from settings. Misconfiguration can cause 401 or broken upstream auth. One row per header (e.g. extra Authentication for some gateways). Hover or focus the value to preview. Saves on blur, outside click, or closing this panel.","compatUpstreamHeadersLabel":"Extra upstream headers","compatUpstreamRemoveRow":"Remove row","autoSync":"Auto-synkronisering","autoSyncTooltip":"Opdater modellisten automatisk hver 24. time (kan konfigureres via MODEL_SYNC_INTERVAL_HOURS)","autoSyncEnabled":"Automatisk synkronisering aktiveret - modellerne opdateres med jævne mellemrum","autoSyncDisabled":"Automatisk synkronisering deaktiveret","autoSyncToggleFailed":"Automatisk synkronisering kunne ikke slås til eller fra","allModelsAlreadyImported":"Alle modeller er allerede importeret","noNewModelsToImport":"Ingen nye modeller at importere — alle modeller findes allerede i registreret eller brugerdefineret liste","skippingExistingModels":"Springer {count} eksisterende modeller over"},"settings":{"title":"Indstillinger","general":"Generelt","security":"Sikkerhed","appearance":"Udseende","routing":"Routing","cache":"Cache","resilience":"Modstandsdygtighed","systemPrompt":"Systemprompt","thinkingBudget":"Tænke budget","proxy":"Fuldmagt","pricing":"Prissætning","storage":"Opbevaring","policies":"Politikker","ipFilter":"IP-filter","comboDefaults":"Combo standarder","fallbackChains":"Fallback kæder","changePassword":"Skift adgangskode","enablePassword":"Aktiver adgangskode","darkMode":"Mørk tilstand","lightMode":"Lys tilstand","systemTheme":"System tema","enableCache":"Aktiver cache","cacheTTL":"Cache TTL","maxCacheSize":"Max cachestørrelse","clearCache":"Ryd cache","cacheHits":"Cache hits","cacheMisses":"Cache misses","hitRate":"Hitrate","cacheEntries":"Cache-indtastninger","circuitBreaker":"Strømafbryder","retryPolicy":"Politik for forsøg igen","maxRetries":"Max forsøger igen","retryDelay":"Forsink igen","timeoutMs":"Timeout (ms)","enableSystemPrompt":"Aktiver systemprompt","systemPromptText":"Systemprompttekst","enableThinking":"Aktiver tænkning","maxThinkingTokens":"Max Thinking Tokens","enableProxy":"Aktiver proxy","proxyUrl":"Proxy-URL","pricingRates":"Prisformat","currentPricing":"Aktuel prisoversigt","loadingPricing":"Indlæser prisdata...","noPricing":"Ingen tilgængelige prisdata","input":"Input","output":"Output","cached":"Cachelagret","reasoning":"Ræsonnement","cacheCreation":"Oprettelse af cache","customPricing":"Tilpasset prisfastsættelse","databaseSize":"Database størrelse","backupDb":"Backup database","restoreDb":"Gendan database","exportData":"Eksporter data","importData":"Importer data","clearData":"Ryd alle data","clearDataConfirm":"Dette vil permanent slette alle data. Er du sikker?","enableRequestLogs":"Aktiver anmodningslogfiler","logRetention":"Logopbevaring","ipWhitelist":"IP hvidliste","ipBlacklist":"IP sortliste","addIP":"Tilføj IP","savedSuccessfully":"Indstillinger blev gemt","ai":"AI","advanced":"Avanceret","localMode":"Lokal tilstand — Alle data gemt på din maskine","settingsSectionsAria":"Indstillinger sektioner","switchThemes":"Skift mellem lyse og mørke temaer","themeSelectionAria":"Valg af tema","themeLight":"Lys","themeDark":"Mørk","themeSystem":"System","hideHealthLogs":"Skjul logs til sundhedstjek","hideHealthLogsDesc":"Når ON, skal du undertrykke [HealthCheck]-meddelelser i serverkonsollen","themeAccent":"Temafarve","themeAccentDesc":"Vælg en forudindstillet farve eller opret dit eget tema med én farve","themeCreate":"Opret tema","themeCustom":"Brugerdefineret tema","themeBlue":"Blå","themeRed":"Rød","themeGreen":"Grøn","themeViolet":"Lilla","themeOrange":"Orange","themeCyan":"Cyan","promptCache":"Spørg cache","flushCache":"Skyl cache","flushing":"Skyller...","size":"Størrelse","hits":"Hits","evictions":"Udsættelser","loadingCacheStats":"Indlæser cachestatistik...","globalProxy":"Global proxy","globalProxyDesc":"Konfigurer en global udgående proxy for alle API-kald. Individuelle udbydere, kombinationer og nøgler kan tilsidesætte dette.","noGlobalProxy":"Ingen global proxy konfigureret","globalLabel":"Globalt","configure":"Konfigurer","globalSystemPrompt":"Global System Prompt","systemPromptDesc":"Injiceret i alle anmodninger på proxy-niveau","saved":"Gemt","systemPromptPlaceholder":"Indtast systemprompt for at injicere i alle anmodninger...","systemPromptHint":"Denne prompt er sat foran systemmeddelelsen for hver anmodning. Bruges til globale instruktioner, sikkerhedsretningslinjer eller regler for svarformatering.","chars":"{count} tegn","thinkingBudgetTitle":"Tænke budget","thinkingBudgetDesc":"Kontroller brugen af AI-ræsonnementstoken på tværs af alle anmodninger","passthrough":"Gennemløb","passthroughDesc":"Ingen ændringer - klienten styrer tænkebudgettet","auto":"Auto","autoDesc":"Fjern al tænkekonfig - lad udbyderen bestemme","custom":"Brugerdefineret","customDesc":"Indstil et fast token-budget for alle anmodninger","adaptive":"Adaptiv","adaptiveDesc":"Skaler budget baseret på anmodningens kompleksitet","effortNone":"Ingen (0 tokens)","effortLow":"Lav (1K tokens)","effortMedium":"Medium (10.000 tokens)","effortHigh":"Høj (128K tokens)","tokenBudget":"Token budget","tokens":"tokens","baseEffortLevel":"Basisindsatsniveau","adaptiveHint":"Adaptiv tilstand skaleres fra dette basisniveau baseret på antal meddelelser, værktøjsbrug og promptlængde.","requireLogin":"Kræv login","requireLoginDesc":"Når ON, kræver dashboard adgangskode. Når OFF, adgang uden login.","currentPassword":"Nuværende adgangskode","enterCurrentPassword":"Indtast den aktuelle adgangskode","newPassword":"Ny adgangskode","enterNewPassword":"Indtast ny adgangskode","confirmPassword":"Bekræft ny adgangskode","confirmPasswordPlaceholder":"Bekræft ny adgangskode","passwordsNoMatch":"Adgangskoder stemmer ikke overens","passwordUpdated":"Adgangskoden blev opdateret","failedUpdatePassword":"Kunne ikke opdatere adgangskoden","errorOccurred":"Der opstod en fejl","updatePassword":"Opdater adgangskode","setPassword":"Indstil adgangskode","apiEndpointProtection":"API-endepunktsbeskyttelse","requireAuthModels":"Kræv API-nøgle til /models","requireAuthModelsDesc":"Når ON, returnerer /v1/models-slutpunktet 404 for ikke-godkendte anmodninger. Forhindrer modelopdagelse af uautoriserede brugere.","blockedProviders":"Blokerede udbydere","blockedProvidersDesc":"Skjul specifikke udbydere fra /v1/models-svaret. Blokerede udbydere vises ikke i modellister.","providersBlocked":"{count} udbyder(e) blokeret fra /modeller","blockProviderTitle":"Bloker {provider}","unblockProviderTitle":"Fjern blokering af {provider}","routingStrategy":"Rutestrategi","fillFirst":"Fyld først","fillFirstDesc":"Brug konti i prioriteret rækkefølge","roundRobin":"Round Robin","roundRobinDesc":"Gennemgå alle konti","p2c":"P2C","p2cDesc":"Vælg 2 tilfældige, brug den sundere","random":"Tilfældig","randomDesc":"Tilfældig konto hver anmodning","leastUsed":"Mindst brugt","leastUsedDesc":"Vælg den mindst brugte konto","costOpt":"Omkostningsopt","costOptDesc":"Foretrækker den billigste tilgængelige konto","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each account once before reshuffling","stickyLimit":"Sticky Limit","stickyLimitDesc":"Opkald pr. konto før skift","modelAliases":"Model aliaser","modelAliasesTitle":"Model Aliaser","modelAliasesDesc":"Wildcard-mønstre til omlægning af modelnavne • Brug * og ?","addCustomAlias":"Tilføj Tilpasset Alias","deprecatedModelId":"Forældet model-ID","newModelId":"Nyt model-ID","customAliases":"Tilpassede Aliaser","builtInAliases":"Indbyggede Aliaser","backgroundDegradationTitle":"Baggrundsopgave Degradering","backgroundDegradationDesc":"Opdager automatisk baggrundsopgaver (titler, resuméer) og dirigerer til billigere modeller","enableDegradation":"Aktiver Baggrundsdegradation","enableDegradationHint":"Når aktiveret, dirigeres baggrundsopgaver som titelgenerering og resuméer automatisk til billigere modeller","tasksDetected":"Opgaver opdaget","degradationMap":"Modeldegraderingsschema","premiumModel":"Premium model","cheapModel":"Billig model","detectionPatterns":"Detektionsmønstre","newPattern":"f.eks. \\"generer en titel\\"","aliasPatternPlaceholder":"claude-sonnet-*","aliasTargetPlaceholder":"claude-sonnet-4-20250514","pattern":"Mønster","targetModel":"Målmodel","add":"+ Tilføj","session":"Session","sessionDetailsAria":"Session detaljer","status":"Status","authenticated":"Autentificeret","guest":"Gæst","loginTime":"Login tid","sessionAge":"Session Alder","browser":"Browser","clearLocalData":"Ryd lokale data","logout":"Log ud","clearLocalDataConfirm":"Vil du rydde alle lokale data? Dette vil nulstille dine præferencer.","unknown":"Ukendt","systemActor":"system","ipAccessControl":"IP adgangskontrol","ipAccessControlDesc":"Bloker eller tillad specifikke IP-adresser","ipModeDisabled":"Deaktiveret","ipModeBlacklist":"Sortliste","ipModeWhitelist":"Hvidliste","ipModeWhitelistPriority":"WL prioritet","addIpAddress":"Tilføj IP-adresse","ipAddressPlaceholder":"192.168.1.0/24 eller 10.0.*.*","block":"+ Bloker","allow":"+ Tillad","blocked":"Blokeret ({count})","allowed":"Tilladt ({count})","temporaryBans":"Midlertidige forbud ({count})","minLeft":"{min}m tilbage","auditLog":"Revisionslog","searchAuditLogs":"Søg i revisionslogfiler...","failedLoadAuditLog":"Kunne ikke indlæse revisionslog","noAuditEvents":"Ingen revisionsbegivenheder fundet","action":"Handling","actor":"Skuespiller","details":"Detaljer","time":"Tid","fallbackChainsTitle":"Fallback kæder","fallbackChainsDesc":"Definer udbyderens reserveordre pr. model","addChain":"+ Tilføj kæde","modelName":"Model navn","modelNamePlaceholder":"claude-sonnet-4-20250514","providersCommaSeparated":"Udbydere (kommasepareret, i prioriteret rækkefølge)","providersCommaSeparatedPlaceholder":"antropisk, openai, gemini","createChain":"Opret kæde","noFallbackChains":"Ingen Fallback-kæder","noFallbackChainsDesc":"Opret en kæde for at definere udbyderens reserveordre for en model.","loadingFallbackChains":"Indlæser reservekæder...","deleteChainConfirm":"Vil du slette reservekæden for \\"{model}\\"?","chainCreated":"Kæde oprettet til {model}","chainDeleted":"Kæde slettet for {model}","failedCreateChain":"Kunne ikke oprette kæde","failedDeleteChain":"Kæden kunne ikke slettes","deleteChain":"Slet kæde","fillModelAndProviders":"Udfyld venligst modelnavn og udbydere","addAtLeastOneProvider":"Tilføj mindst én udbyder","comboDefaultsTitle":"Combo standarder","globalComboConfig":"Global combo-konfiguration","defaultStrategy":"Standardstrategi","defaultStrategyDesc":"Anvendt på nye kombinationer uden eksplicit strategi","comboStrategyAria":"Kombinationsstrategi","priority":"Prioritet","weighted":"Vægtet","maxRetriesLabel":"Max forsøger igen","retryDelayLabel":"Forsinkelse af forsøg igen (ms)","timeoutLabel":"Timeout (ms)","healthCheck":"Sundhedstjek","healthCheckDesc":"Forhåndstjek udbyderens tilgængelighed","trackMetrics":"Spor metrics","trackMetricsDesc":"Optag pr-kombinationsanmodningsmetrics","providerOverrides":"Udbydertilsidesættelser","providerOverridesDesc":"Tilsidesæt timeout og genforsøg pr. udbyder. Udbyderindstillinger tilsidesætter globale standardindstillinger.","providerMaxRetriesAria":"{provider} maks. genforsøg","providerTimeoutAria":"{provider} timeout ms","removeProviderOverrideAria":"Fjern {provider} tilsidesættelse","newProviderNamePlaceholder":"f.eks. google, åben...","newProviderNameAria":"Nyt udbydernavn","retries":"forsøger igen","ms":"ms","saveComboDefaults":"Gem Combo-standarder","maxNestingDepth":"Maks. rededybde","concurrencyPerModel":"Samtidighed / Model","queueTimeout":"Timeout for kø (ms)","providerProfiles":"Udbyder profiler","providerProfilesDesc":"Separate indstillinger for modstandsdygtighed for OAuth (session-baserede) og API Key (målte) udbydere. OAuth-udbydere har strengere tærskler på grund af lavere takstgrænser.","oauthProviders":"OAuth-udbydere","apiKeyProviders":"API-nøgleudbydere","transientCooldown":"Forbigående nedkøling","rateLimitCooldown":"Rate Limit Cooldown","maxBackoffLevel":"Max Backoff Level","cbThreshold":"CB-tærskel","cbResetTime":"CB-nulstillingstid","rateLimiting":"Satsbegrænsende","rateLimitingDesc":"API-nøgleudbydere er automatisk hastighedsbegrænsede med sikre standardindstillinger. Grænser læres fra svaroverskrifter og tilpasses over tid.","defaultSafetyNet":"Standard sikkerhedsnet","rpm":"RPM","minGap":"Min Gap","maxConcurrent":"Max samtidig","activeLimiters":"Aktive begrænsere","noActiveLimiters":"Ingen aktive hastighedsbegrænsere endnu.","reservoir":"Reservoir","running":"Løb","queued":"I kø","circuitBreakers":"Strømafbrydere","breakerStateClosed":"Lukket","breakerStateOpen":"Åbn","breakerStateHalfOpen":"Halvåbent","tripped":"{count} udløste","healthy":"{count} sund","resetAll":"Nulstil alle","noCircuitBreakers":"Ingen afbrydere aktive endnu. De oprettes automatisk, når anmodninger strømmer gennem den kombinerede pipeline.","failures":"{count} fejl(er)","policiesLocked":"Politikker og låste identifikatorer","allOperational":"Alle systemer fungerer - ingen lockouts eller udløste afbrydere","loadingPolicies":"Indlæser politikker...","lockedIdentifiers":"Låste identifikatorer","unlockedIdentifier":"Ulåst: {identifier}","sinceDate":"siden {date}","forceUnlock":"Tving oplåsning","unlocking":"Låser op...","failedUnlock":"Kunne ikke låse op","failedLoadWithStatus":"Kunne ikke indlæse: {status}","failedLoadResilience":"Kunne ikke indlæse modstandsdygtighedsstatus","saveFailed":"Gem mislykkedes","resetFailed":"Nulstilling mislykkedes","loadingResilience":"Indlæser modstandsdygtighedsstatus...","retry":"Prøv igen","systemStorage":"System & Opbevaring","allDataLocal":"Alle data gemt lokalt på din maskine","databasePath":"Databasesti","exportDatabase":"Eksporter database","exportAll":"Eksporter alle (.tar.gz)","importDatabase":"Importer database","confirmDbImport":"Bekræft databaseimport","confirmDbImportDesc":"Dette vil erstatte alle aktuelle data med indholdet fra {file}. Der oprettes automatisk en sikkerhedskopi før importen.","yesImport":"Ja, import","lastBackup":"Sidste backup","noBackupYet":"Ingen backup endnu","backupNow":"Sikkerhedskopier nu","backupRestore":"Sikkerhedskopiering og gendannelse","viewBackups":"Se sikkerhedskopier","hide":"Skjul","backupRetentionDesc":"Database-snapshots oprettes automatisk før gendannelse og hvert 15. minut, når data ændres. Retention: 24 timer i timen + 30 daglige backups med smart rotation.","loadingBackups":"Indlæser sikkerhedskopier...","noBackupsYet":"Ingen tilgængelige sikkerhedskopier endnu. Sikkerhedskopier oprettes automatisk, når data ændres.","backupsAvailable":"{count} backup(r) tilgængelige","refresh":"Opdater","confirm":"bekræfte?","yes":"Ja","no":"Nej","restore":"Gendan","invalidFileType":"Ugyldig filtype. Kun .sqlite-filer accepteres.","exportFailed":"Eksporten mislykkedes","exportFailedWithError":"Eksport mislykkedes: {error}","fullExportFailedWithError":"Fuld eksport mislykkedes: {error}","backupCreated":"Sikkerhedskopiering oprettet: {file}","restoreSuccess":"Gendannet! {connections} forbindelser, {nodes} noder, {combos} kombinationer, {apiKeys} API nøgler.","importSuccess":"Database importeret! {connections} forbindelser, {nodes} noder, {combos} kombinationer, {apiKeys} API nøgler.","justNow":"lige nu","minutesAgo":"{count}m siden","hoursAgo":"{count}t siden","daysAgo":"{count}d siden","backupReasonManual":"manual","backupReasonPreRestore":"for-gendannelse","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Ingen ændringer siden sidste backup","backupFailed":"Sikkerhedskopiering mislykkedes","restoreFailed":"Gendannelse mislykkedes","importFailed":"Import mislykkedes","errorDuringRestore":"Der opstod en fejl under gendannelse","errorDuringImport":"Der opstod en fejl under importen","modelPricing":"Modelpriser","modelPricingDesc":"Konfigurer omkostningssatser pr. model • Alle satser i $/1M tokens","providers":"Udbydere","registry":"Register","priced":"Prissat","searchProvidersModels":"Søg efter udbydere eller modeller...","showAll":"Vis alle","noProvidersMatch":"Ingen udbydere matcher din søgning.","howPricingWorks":"Hvordan prissætning fungerer","cacheWrite":"Cache skriv","unsaved":"ikke gemt","resetDefaults":"Nulstil standarder","saveProvider":"Gem udbyder","saving":"Gemmer...","model":"Model","models":"modeller","moreProviders":"{count} flere udbydere","withPricing":"med konfigureret prissætning","policiesCircuitBreakers":"Politikker og strømafbrydere","activeIssuesDetected":"Aktive problemer registreret","off":"Fra","resetPricingConfirm":"Vil du nulstille alle priser for {provider} til standardindstillingerne?","pricingDescInput":"Input: tokens sendt til modellen","pricingDescOutput":"Output: tokens genereret","pricingDescCached":"Cachelagret: genbrugt input (~50 % af inputhastigheden)","pricingDescReasoning":"Begrundelse: Tænketegn (falder tilbage til output)","pricingDescCacheWrite":"Cacheskrivning: oprettelse af cacheposter (falder tilbage til input)","pricingDescFormula":"Omkostninger = (input × input_rate) + (output × output_rate) + (cached × cached_rate) pr. million tokens.","pricingSettingsTitle":"Prisindstillinger","totalModels":"Totale modeller","active":"Aktiv","costCalculation":"Omkostningsberegning","costCalculationDesc":"Omkostninger beregnes baseret på token-forbrug og prissætningssatser, der er konfigureret for hver model.","pricingFormat":"Prisformat","pricingFormatDesc":"Alle priser er i $/1M tokens (dollars per million tokens).","tokenTypes":"Token typer","inputTokenDesc":"Standard prompt-tokens","outputTokenDesc":"Fuldførelse/svar-tokens","cachedTokenDesc":"Cachelagrede inputtokens (typisk 50 % af inputhastigheden)","reasoningTokenDesc":"Særlige ræsonnement/tænke-tokens (tilbagefald til outputhastighed)","cacheCreationTokenDesc":"Tokens, der bruges til at oprette cacheposter (tilbage til inputhastighed)","customPricingNote":"Du kan tilsidesætte standardpriser for specifikke modeller. Tilpassede tilsidesættelser har prioritet frem for automatisk registrerede priser.","editPricing":"Rediger prissætning","viewFullDetails":"Se alle detaljer","themeCoral":"Koral","cliFingerprint":"CLI Fingerprint Matching","cliFingerprintDesc":"Match native CLI binary signatures when proxying requests. Reorders headers and body fields to look identical to the official CLI tools. Your proxy IP is preserved.","cliFingerprintEnabled":"{count} provider(s) with CLI fingerprint active","enableFingerprintTitle":"Enable fingerprint for {provider}","disableFingerprintTitle":"Disable fingerprint for {provider}","routingAdvancedGuideTitle":"Avanceret rutevejledning","routingAdvancedGuideHint1":"Brug Fill First for forudsigelig prioritet, Round Robin for retfærdighed og P2C for latensmodstandsdygtighed.","routingAdvancedGuideHint2":"Hvis udbydere varierer i kvalitet/omkostninger, start med Cost Opt for baggrundsarbejde og Mindst brugt for balanceret slid.","comboDefaultsGuideTitle":"Sådan indstiller du combo-standarder","comboDefaultsGuideHint1":"Hold lave genforsøg i flows med lav latens; øg kun timeout for lange generationsopgaver.","comboDefaultsGuideHint2":"Brug udbydertilsidesættelser, når en udbyder har brug for en anden timeout-/genforsøgsadfærd end globale standardindstillinger."},"translator":{"title":"Oversætter","metaTitle":"Oversætter Legeplads | OmniRoute","metaDescription":"Debug, test og visualiser API-formatoversættelser mellem udbydere","playgroundTitle":"Oversætter legeplads","playground":"Legeplads","realtime":"Oversættelsesaktivitet i realtid","chatTester":"Chat tester","testBench":"Test bænk","liveMonitor":"Live Monitor","modeDescriptionPlayground":"Indsæt enhver API-anmodningstekst og se, hvordan OmniRoute oversætter den mellem udbyderformater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","modeDescriptionChatTester":"Send rigtige chatanmodninger gennem OmniRoute og inspicer hele rundrejsen: input, oversat anmodning, udbydersvar og oversat output.","modeDescriptionTestBench":"Kør foruddefinerede scenarier og sammenlign kompatibilitet på tværs af udbydere og modeller.","modeDescriptionLiveMonitor":"Se oversættelsesbegivenheder i realtid, mens anmodninger flyder gennem OmniRoute.","modeDescriptionFallback":"Debug, test og visualiser, hvordan OmniRoute oversætter API-anmodninger mellem udbydere.","recentTranslations":"Nylige oversættelser","noTranslations":"Ingen oversættelser endnu","source":"Kilde","target":"Mål","time":"Tid","model":"Model","status":"Status","latency":"Latency","totalTranslations":"Samlede oversættelser","successful":"Vellykket","errors":"Fejl","avgLatency":"Gns. latens","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"Live — Automatisk opdatering","paused":"Pause","eventsAppearHint":"Oversættelsesbegivenheder vises her, når anmodninger flyder gennem OmniRoute. Brug en af disse metoder til at generere begivenheder:","chatTesterTab":"Fanen Chat Tester","testBenchTab":"Fanen Testbænk","externalApiCalls":"Eksterne API-kald","ideCliIntegrations":"IDE/CLI integrationer","inMemoryNote":"Bemærk: Hændelser gemmes i hukommelsen og nulstilles, når serveren genstarter.","ok":"OK","errorShort":"ERR","formatConverter":"Formatkonverter","formatConverterDescription":"Indsæt eller skriv en JSON-anmodningstekst. Oversætteren vil automatisk registrere kildeformatet og konvertere det til målformatet. Brug dette til at fejlsøge, hvordan OmniRoute oversætter anmodninger mellem formater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).","input":"Input","output":"Output","auto":"Auto","swapFormats":"Skift formater","translateAction":"Oversæt","clear":"Ryd","inputPlaceholder":"Indsæt en anmodningstekst her eller vælg en skabelon nedenfor...","exampleTemplates":"Eksempel skabeloner","exampleTemplatesHint":"— Klik for at indlæse","templateLoadHint":"Skabelonen indlæser anmodningen i formatet {format}. Skift kildeformat for at indlæse i et andet format.","compatibilityTester":"Kompatibilitetstester","compatibilityReport":"Kompatibilitetsrapport","testBenchDescription":"Kør foruddefinerede scenarier (simpel chat, værktøjsopkald osv.) for at bekræfte oversættelse og udbyderkompatibilitet. Vælg et kildeformat og måludbyder, og kør derefter alle test for at se en kompatibilitetsprocent. Brug dette til at finde ud af, hvilke funktioner der fungerer på tværs af udbydere.","targetProvider":"Måludbyder","runAllTests":"Kør alle tests","runTest":"Kør test","reRun":"Kør igen","running":"Kører...","passed":"bestået","failed":"mislykkedes","passedIconLabel":"✅ Bestået","chunks":"bidder","scenarioSimpleChat":"Simpel chat","scenarioToolCalling":"Værktøjsopkald","scenarioMultiTurn":"Multivending","scenarioThinking":"Tænker","scenarioSystemPrompt":"Systemprompt","scenarioStreaming":"Streaming","templateNames":{"simple-chat":"Simpel chat","tool-calling":"Værktøjsopkald","multi-turn":"Multivending","thinking":"Tænker","system-prompt":"Systemprompt","streaming":"Streaming"},"templateDescriptions":{"simple-chat":"Grundlæggende tekstbesked","tool-calling":"Funktion/værktøjskald","multi-turn":"Samtale med historien","thinking":"Udvidet tænkning/ræsonnement","system-prompt":"Komplekse systeminstruktioner","streaming":"SSE streaming anmodning"},"templatePayloads":{"simpleChat":{"system":"Du er en hjælpsom assistent.","userGreeting":"Hej! Hvordan har du det i dag?"},"toolCalling":{"userWeather":"Hvordan er vejret i São Paulo?","toolDescription":"Få det aktuelle vejr for en placering","cityNameDescription":"Byens navn"},"multiTurn":{"system":"Du er kodningsassistent.","userInitial":"Skriv en funktion til at sortere et array i Python.","assistantExample":"Her er en simpel sorteringsfunktion:\\n\\n``` python\\ndef sort_array(arr):\\n returner sorteret(arr)\\n```","userFollowUp":"Gør det nu sorteret i faldende rækkefølge."},"thinking":{"question":"Hvad er summen af de første 100 primtal?"},"systemPrompt":{"systemInstruction":"Du er senior softwareingeniør med speciale i distribuerede systemer. Besvar spørgsmål kortfattet ved at bruge industriens bedste praksis. Angiv altid kodeeksempler, når det er relevant. Formater dine svar ved hjælp af markdown.","question":"Hvordan implementerer jeg et afbrydermønster?"},"streaming":{"prompt":"Fortæl mig en kort historie om en robot, der lærer at male."}},"openaiCompatibleLabel":"OpenAI-kompatibel","anthropicCompatibleLabel":"Antropisk kompatibel","noTemplateForFormat":"Ingen skabelon til dette format","translationFailed":"Oversættelse mislykkedes: {error}","pipelineDebugger":"Pipeline Debugger","translationPipeline":"Oversættelsesrørledning","pipelineVisualization":"Pipeline visualisering","pipelineVisualizationHint":"Send en besked for at se, hvordan din anmodning flyder gennem registrering → oversættelse → udbyderopkald.","chatTesterDescription":"Send beskeder som et specifikt klientformat og inspicér hvert trin i oversættelsespipelinen.","chatTesterFlow":"Client Request → Format Detection → OpenAI Intermediate → Provider Format → Response","clickStepToInspect":"Klik på et trin for at inspicere dataene på det tidspunkt.","clientFormat":"Klientformat","provider":"Udbyder","modelPlaceholder":"Vælg eller skriv et modelnavn...","sendMessageToSeePipeline":"Send en besked for at se oversættelsespipeline","chatMessageHintPrefix":"Din besked vil blive formateret som en","chatMessageHintSuffix":"anmodning, oversat gennem pipelinen og sendt til den valgte udbyder.","youWithFormat":"Dig ({format})","assistant":"Assistent","typeMessage":"Skriv en besked...","send":"Send","clientRequest":"Kundeanmodning","clientRequestDescription":"Anmodningslegemet, som din klient ville sende det","formatDetected":"Format fundet","formatDetectedDescription":"OmniRoute registrerer automatisk API-formatet fra anmodningsstrukturen","openaiIntermediate":"OpenAI Intermediate","openaiIntermediateDescription":"Alle formater normaliseres først til OpenAI-format (den universelle bro)","providerFormat":"Udbyder format","providerFormatDescription":"OpenAI-formatet er oversat til udbyderens oprindelige format","providerResponse":"Udbyder svar","providerResponseRawDescription":"Det rå svar fra udbyderens API","providerResponseSseDescription":"Den rå SSE-stream fra udbyderens API","unexpectedError":"Der opstod en uventet fejl","error":"Fejl","errorMessage":"Fejl: {message}","requestFailed":"Anmodningen mislykkedes","noTextExtracted":"(Ingen tekst udtrukket)","liveMonitorDescriptionPrefix":"Viser oversættelsesbegivenheder, mens API-kald flyder gennem OmniRoute. Hændelser kommer fra bufferen i hukommelsen (nulstilles ved genstart). Brug","liveMonitorDescriptionSuffix":", eller eksterne API-kald for at generere hændelser."},"usage":{"title":"Brug","loggerTab":"Logger","proxyTab":"Fuldmagt","budgetManagement":"Budgetstyring","budgetSaved":"Budgetgrænser gemt","budgetSaveFailed":"Budgettet kunne ikke gemmes","loadingBudgetData":"Indlæser budgetdata...","noApiKeysTitle":"Ingen API-nøgler","noApiKeysDescription":"Tilføj API-nøgler først for at opsætte budgetgrænser.","apiKey":"API nøgle","todaysSpend":"Dagens forbrug","thisMonth":"Denne måned","setLimits":"Sæt grænser","dailyLimitUsd":"Daglig grænse (USD)","monthlyLimitUsd":"Månedlig grænse (USD)","warningThresholdPercent":"Advarselstærskel (%)","dailyLimitPlaceholder":"f.eks. 5.00","monthlyLimitPlaceholder":"f.eks. 50,00","warningThresholdPlaceholder":"80","saveLimits":"Gem grænser","budgetOk":"Budget OK — {remaining} tilbage","budgetExceeded":"Budget overskredet — anmodninger kan blive blokeret","totalRequests":"Samlet antal anmodninger","noDataYet":"Ingen data endnu","latency":"Latency","latencyP50":"p50","latencyP95":"s95","latencyP99":"s99","promptCache":"Spørg cache","systemHealth":"Systemsundhed","entries":"Indgange","activeCount":"{count} aktiv","openCircuitBreakersDetected":"Åbne afbrydere registreret","hitRate":"Hitrate","hitsMisses":"Hits / Misses","circuitBreakers":"Strømafbrydere","lockedIPs":"Låste IP\'er","lockoutsAutoRefreshHint":"Låse for hastighedsbegrænsning pr. model • Automatisk opdatering 10s","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} tilbage","howItWorks":"Hvordan det virker","howItWorksSubtitle":"Lær, hvordan evalueringer validerer dine LLM-svar","define":"Definer","defineStepDescription":"Opret testcases med inputprompter og forventede outputkriterier ved hjælp af strategier som indeholder, regex eller eksakt match.","run":"Løb","runStepDescription":"Udfør testsager mod dine LLM-endepunkter gennem OmniRoute. Hver sag sendes som en ægte API-anmodning.","evaluate":"Evaluer","evaluateStepDescription":"Svar sammenlignes med forventede kriterier. Se bestået/ikke bestået for hver sag med latency-metrics og detaljeret feedback.","evalSuites":"Evalueringssuiter","evalSuitesHint":"Klik på en suite for at se testcases, og kør derefter for at evaluere dine LLM-endepunkter","evalsLoading":"Indlæser eval suiter...","noEvalSuitesFound":"Ingen Eval-suiter fundet","noEvalSuitesDescription":"Eval-suiter kan defineres via API\'et eller i kode. De tester modeloutput mod forventede resultater ved hjælp af strategier som indeholder, regex, eksakt match og brugerdefinerede funktioner.","columnCase":"Sag","columnStatus":"Status","columnLatency":"Latency","columnDetails":"Detaljer","columnModel":"Model","columnStrategy":"Strategi","columnExpected":"Forventet","statsSuites":"Suiter","statsTestCases":"Test Cases","statsModels":"Modeller","statsCoverage":"Dækning","statsStrategiesCount":"{count} strategier","evaluationStrategies":"Evalueringsstrategier","modelsUnderTest":"Modeller under test","searchSuitesPlaceholder":"Søg suiter...","passSuffix":"bestå","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Kør Eval","runningProgress":"Kører {current}/{total}...","passRate":"beståelsesprocent","summaryBreakdown":"{passed} bestået · {failed} mislykkedes · {total} i alt","passedIconLabel":"✅ Bestået","failedIconLabel":"❌ Mislykkedes","detailsContains":"Indeholder: \\"{term}\\"","detailsRegex":"Regex: {pattern}","detailsExpected":"Forventet: \\"{expected}\\"","noResultsYet":"Ingen resultater endnu","testCasesCount":"Testcases ({count})","noTestCasesDefined":"Ingen testcases defineret","runEvalHint":"Klik på \\"Run Eval\\" for at udføre alle sager mod dit LLM-slutpunkt. Hver test sender en reel anmodning gennem OmniRoute.","notifyNoTestCases":"Ingen testcases defineret for denne suite","notifyAllCasesPassed":"Alle {total} sager bestået ✅","notifySomeCasesFailed":"{passed}/{total} bestået, {failed} mislykkedes","notifyEvalRunFailed":"Evalkørsel mislykkedes","notifyEvalTitle":"Eval: {name}","modelEvals":"Modelvurderinger","evalsHeroDescription":"Test og valider dine LLM-endepunkter ved at køre foruddefinerede evalueringspakker. Hver suite indeholder testcases, der sender reelle prompter gennem OmniRoute og sammenligner svar med forventede kriterier - hjælper dig med at opdage regression, sammenligne modeller og sikre svarkvalitet på tværs af udbydere.","qualityValidation":"Kvalitetsvalidering","modelComparison":"Model sammenligning","regressionDetection":"Regression detektion","latencyBenchmarks":"Latency Benchmarks","modelLockouts":"Model Lockouts","noLockouts":"Ingen modeller er låst i øjeblikket","activeSessions":"Aktive sessioner","noSessions":"Ingen aktive sessioner","sessionsHint":"Sessioner vises, når anmodninger strømmer gennem proxyen","sessionsTrackedHint":"Spores via anmodning om fingeraftryk • Automatisk opdatering 5s","session":"Session","age":"Alder","requests":"Forespørgsler","connection":"Forbindelse","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Udbydergrænser","noProviders":"Ingen udbydere tilsluttet","connectProvidersForQuota":"Opret forbindelse til udbydere med OAuth for at spore dine API-kvotegrænser og brug.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(filtreret fra {count})","autoRefresh":"Automatisk opdatering","refreshAll":"Opdater alle","loadingQuotas":"Indlæser...","account":"Konto","modelQuotas":"Modelkvoter","lastUsed":"Sidst brugt","actions":"Handlinger","refreshQuota":"Opdater kvote","today":"I dag","tomorrow":"I morgen","dayTimeFormat":"{day}, {time}","inDuration":"i {duration}","notApplicable":"N/A","rawPlanWithValue":"Rå plan: {plan}","noPlanFromProvider":"Ingen plan fra udbyderen","noQuotaData":"Ingen kvotedata","ungrouped":"Ungrouped","viewFlat":"Flat","viewByEnvironment":"By Environment","noQuotaDataAvailable":"Ingen tilgængelige kvotedata","noAccountsForTierFilter":"Der blev ikke fundet nogen konti til niveaufilter","tierAll":"Alle","tierEnterprise":"Enterprise","tierTeam":"Team","tierBusiness":"Forretning","tierUltra":"Ultra","tierPro":"Pro","tierPlus":"Plus","tierFree":"Gratis","tierUnknown":"Ukendt"},"modals":{"waitingAuth":"Venter på autorisation","verificationUrl":"Bekræftelses-URL","yourCode":"Din kode","remoteAccess":"Fjernadgang:","connectedSuccess":"Forbundet med succes!","connectionFailed":"Forbindelse mislykkedes","chooseAuthMethod":"Vælg din godkendelsesmetode:","awsBuilderId":"AWS Builder ID","awsIamIdentity":"AWS IAM Identity Center","googleAccount":"Google-konto","githubAccount":"GitHub-konto","importToken":"Importer token","pasteToken":"Indsæt opdateringstoken fra Kiro IDE.","awsRegion":"AWS-regionen","autoDetecting":"Automatisk registrering af tokens...","readingFromCache":"Læser fra AWS SSO-cache","readingFromCursor":"Læsning fra Cursor IDE-database","initializing":"Initialiserer...","pricingConfig":"Priskonfiguration","loadingPricing":"Indlæser prisdata...","pricingRatesFormat":"Prisformat","noPricingData":"Ingen tilgængelige prisdata","noModelsFound":"Ingen modeller fundet"},"loggers":{"allProviders":"Alle udbydere","allModels":"Alle modeller","allAccounts":"Alle konti","allApiKeys":"Alle API-nøgler","allTypes":"Alle typer","allLevels":"Alle niveauer","modelAZ":"Model A-Z","modelZA":"Model Z-A","loadingLogs":"Indlæser logfiler...","loadingProxyLogs":"Indlæser proxylogfiler...","noLogEntries":"Ingen logposter fundet","noPayloadData":"Ingen nyttelastdata tilgængelige for denne logpost.","proxyEvent":"Proxy begivenhed","proxy":"Fuldmagt","level":"Niveau","directNative":"Direkte (native)","combo":"Combo","inputTokens":"jeg:","outputTokens":"O:"},"stats":{"usageOverview":"Brugsoversigt","outputTokens":"Output tokens","totalCost":"Samlede omkostninger","usageByModel":"Brug efter model","usageByAccount":"Brug efter konto","failedToLoad":"Kunne ikke indlæse brugsstatistikker.","tokenHealth":"Token Health","totalOAuth":"Samlet OAuth","healthy":"Sundt","warning":"Advarsel","errored":"Fejl","lastCheck":"Sidste kontrol","noData":"Ingen data","share":"Del","unableToLoad":"Systemmetrics kunne ikke indlæses","product":"Produkt","resources":"Ressourcer","company":"Selskab"},"auth":{"welcome":"Velkommen","signIn":"Log ind","enterPassword":"Indtast din adgangskode for at fortsætte","password":"Adgangskode","unifiedProxy":"Unified AI API Proxy","unifiedAiApiProxy":"Unified AI API Proxy","unifiedAiApiProxyDesc":"Rut anmodninger til flere AI-udbydere gennem et enkelt slutpunkt. Belastningsbalancering, failover og brugssporing indbygget.","passwordNotEnabled":"Adgangskodebeskyttelse er ikke aktiveret","loading":"Indlæser...","invalidPassword":"Ugyldig adgangskode","errorOccurredRetry":"Der opstod en fejl. Prøv venligst igen.","configureInstance":"Lad os få konfigureret din OmniRoute-instans","runOnboardingWizard":"Kør onboarding-guiden for at konfigurere din adgangskode og oprette forbindelse til din første AI-udbyder.","startOnboarding":"Start Onboarding","secureYourInstance":"Sikre din instans","setPasswordDescription":"Indstil en adgangskode for at beskytte dit dashboard og sikre dine API-endepunkter mod uautoriseret adgang.","configurePassword":"Konfigurer adgangskode","continue":"Fortsæt","windowWillClose":"Dette vindue lukkes automatisk...","closeTabNow":"Du kan lukke denne fane nu.","copyUrlManual":"Kopier venligst URL\'en fra adresselinjen og indsæt den i applikationen.","accessDeniedDescription":"Du har ikke tilladelse til at få adgang til denne ressource. Tjek din API-nøgle, eller kontakt administratoren.","goToDashboard":"Gå til Dashboard","featureMultiProviderTitle":"Multi-udbyder","featureMultiProviderDesc":"OpenAI, Anthropic, Google og mere","featureLoadBalancingTitle":"Lastbalancering","featureLoadBalancingDesc":"Fordel anmodninger intelligent","featureUsageTrackingTitle":"Brugssporing","featureUsageTrackingDesc":"Overvåg omkostninger og tokens","resetPassword":"Nulstil adgangskode","resetDescription":"Vælg en metode til at gendanne adgangen til dit dashboard","stopServer":"Stop OmniRoute-serveren","processing":"Behandler...","pleaseWait":"Vent venligst, mens vi fuldfører godkendelsen.","authSuccess":"Godkendelse lykkedes!","copyUrl":"Kopiér denne URL","accessDenied":"Adgang nægtet","methodCliTitle":"Metode 1: CLI-nulstilling","methodCliDescription":"Kør følgende kommando på serveren, hvor OmniRoute kører:","methodCliHint":"Dette vil bede dig om at indstille en ny adgangskode. Serveren skal stoppes først.","methodManualTitle":"Metode 2: Manuel nulstilling","methodManualDescription":"Slet adgangskoden fra databasen og indstil en ny ved opstart:","setPasswordInYour":"Indstil en ny adgangskode i din","fileLabelSuffix":"fil:","newPasswordPlaceholder":"dit_nye_adgangskode","deleteSettingsFile":"Slet","orRemovePasswordHashField":"eller fjern feltet passwordHash","restartServerWithNewPassword":"Genstart serveren - den vil bruge den nye adgangskode","backToLogin":"Tilbage til Login","forgotPassword":"Glemt adgangskode?","defaultPasswordHint":"Default password: 123456 (unless INITIAL_PASSWORD was set)","Authorization":"Autorisation","Content-Disposition":"Indhold-Disposition","waitingForAuthorization":"Venter på godkendelse...","waitingForGoogleAuthorization":"Venter på Google-godkendelse...","waitingForOpenAIAuthorization":"Venter på OpenAI-godkendelse...","waitingForAntigravityAuthorization":"Venter på antigravity-autorisation...","waitingForIFlowAuthorization":"Venter på iFlow-godkendelse...","exchangingCodeForTokens":"Udveksler kode til tokens..."},"landing":{"brandName":"OmniRoute","navigateHome":"Naviger til hjem","toggleMenu":"Skift menu","featuresLink":"Funktioner","docsLink":"Dokumenter","github":"GitHub","versionLive":"v1.0 er nu live","oneEndpoint":"Et slutpunkt til","allProviders":"Alle AI-udbydere","heroDescription":"AI-slutpunktsproxy med web-dashboard - En JavaScript-port af CLIProxyAPI. Fungerer problemfrit med Claude Code, OpenAI Codex, Cline, RooCode og andre CLI-værktøjer.","getStarted":"Kom i gang","viewOnGithub":"Se på GitHub","powerfulFeatures":"Kraftige funktioner","featuresSubtitle":"Alt hvad du behøver for at administrere din AI-infrastruktur på ét sted, bygget til skala.","featureUnifiedEndpointTitle":"Unified Endpoint","featureUnifiedEndpointDesc":"Få adgang til alle udbydere via en enkelt standard API-URL.","featureEasySetupTitle":"Nem opsætning","featureEasySetupDesc":"Kom i gang på få minutter med npx-kommandoen.","featureModelFallbackTitle":"Model Fallback","featureModelFallbackDesc":"Skift automatisk udbyder ved fejl eller høj latenstid.","featureUsageTrackingTitle":"Brugssporing","featureUsageTrackingDesc":"Detaljerede analyser og omkostningsovervågning på tværs af alle modeller.","featureOAuthApiKeysTitle":"OAuth- og API-nøgler","featureOAuthApiKeysDesc":"Administrer legitimationsoplysninger sikkert i én boks.","featureCloudSyncTitle":"Cloud Sync","featureCloudSyncDesc":"Synkroniser dine konfigurationer på tværs af enheder med det samme.","featureCliSupportTitle":"CLI support","featureCliSupportDesc":"Fungerer med Claude Code, Codex, Cline, Cursor og mere.","featureDashboardTitle":"Dashboard","featureDashboardDesc":"Visuelt dashboard til trafikanalyse i realtid.","howItWorks":"Sådan fungerer OmniRoute","howItWorksDescription":"Data flyder problemfrit fra din applikation gennem vores intelligente routing-lag til den bedste udbyder til jobbet.","howItWorksStep1Title":"1. CLI & SDK\'er","howItWorksStep1Description":"Dine anmodninger starter fra dine yndlingsværktøjer eller vores forenede SDK. Skift blot den grundlæggende URL.","howItWorksStep2Title":"2. OmniRoute Hub","howItWorksStep2Description":"Vores motor analyserer prompten, tjekker udbyderens helbred og ruter for laveste latenstid eller omkostninger.","howItWorksStep3Title":"3. AI-udbydere","howItWorksStep3Description":"Anmodningen opfyldes af OpenAI, Anthropic, Gemini eller andre øjeblikkeligt.","getStartedIn30Seconds":"Kom i gang på 30 sekunder","getStartedDescription":"Installer OmniRoute, konfigurer dine udbydere via web-dashboard, og begynd at dirigere AI-anmodninger.","installOmniRoute":"Installer OmniRoute","installStepDescription":"Kør npx-kommandoen for at starte serveren med det samme","openDashboard":"Åbn Dashboard","openDashboardStepDescription":"Konfigurer udbydere og API-nøgler via webgrænseflade","routeRequests":"Ruteanmodninger","routeRequestsStepDescription":"Ret dine CLI-værktøjer til {endpoint}","terminal":"terminal","copy":"Kopiér","copied":"✓ Kopieret","startingOmniRoute":"Starter OmniRoute...","serverRunningOnLabel":"Server kører på","dashboardLabel":"Dashboard","readyToRoute":"Klar til rute! ✓","configureProvidersNote":"📝 Konfigurer udbydere i dashboard eller brug miljøvariabler","dataLocation":"Dataplacering:","dataLocationMacLinux":" macOS/Linux:","dataLocationWindows":" Windows:","product":"Produkt","dashboardLink":"Dashboard","changelog":"Ændringslog","resources":"Ressourcer","documentation":"Dokumentation","npm":"NPM","legal":"Juridisk","mitLicense":"MIT-licens","footerTagline":"Det forenede slutpunkt for AI-generering. Forbind, diriger og administrer dine AI-udbydere med lethed.","copyright":"© {year} OmniRoute. Alle rettigheder forbeholdes.","flowToolClaudeCode":"Claude kode","flowToolOpenAICodex":"OpenAI Codex","flowToolCline":"Cline","flowToolCursor":"Markør","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Antropisk","flowProviderGemini":"Tvillingerne","flowProviderGithubCopilot":"GitHub Copilot","interactiveDiagram":"Interaktivt diagram synligt på skrivebordet","ctaTitle":"Klar til at forenkle din AI-infrastruktur?","ctaDescription":"Slut dig til udviklere, der strømliner deres AI-integrationer med OmniRoute. Open source og gratis at starte.","startFree":"Start gratis","readDocumentation":"Læs dokumentation"},"docs":{"title":"Dokumentation","quickStart":"Hurtig start","features":"Funktioner","supportedProviders":"Understøttede udbydere","supportedProvidersToc":"Udbydere","commonUseCases":"Almindelige anvendelsestilfælde","clientCompatibility":"Klientkompatibilitet","protocolsToc":"Protokoller","apiReference":"API-reference","method":"Metode","path":"Sti","notes":"Noter","modelPrefixes":"Modelpræfikser","prefix":"Præfiks","troubleshooting":"Fejlfinding","supportsChat":"Understøtter både chat- og svarendepunkter.","oauthAutoRefresh":"OAuth-forbindelse med automatisk token-opdatering.","fullStreaming":"Fuld streaming support til alle modeller.","docsLabel":"Dokumenter","docsHeroDescription":"AI-gateway til LLM\'er med flere udbydere. Ét endepunkt for OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor og mere end 20 udbydere.","openDashboard":"Åbn Dashboard","endpointPage":"Slutpunktside","github":"GitHub","reportIssue":"Rapportér problem","onThisPage":"På denne side","documentationVersion":"Dokumentation - v{version}","quickStartStep1Title":"1. Installer og kør","quickStartStep1Prefix":"Løb","quickStartStep1Middle":"eller klon fra GitHub og kør","quickStartStep2Title":"2. Opret API-nøgle","quickStartStep2Text":"Gå til Slutpunkt -> Registrerede nøgler. Generer én nøgle pr. miljø.","quickStartStep3Title":"3. Tilslut udbydere","quickStartStep3Text":"Tilføj udbyderkonti via OAuth-login, API-nøgle eller automatisk forbindelse med frit niveau.","quickStartStep4Title":"4. Indstil klientbase-URL","quickStartStep4Prefix":"Peg din IDE- eller API-klient til","quickStartStep4Suffix":"Brug for eksempel udbyderpræfiks","featureRoutingTitle":"Multi-Provider Routing","featureRoutingText":"Rut anmodninger til 30+ AI-udbydere gennem et enkelt OpenAI-kompatibelt slutpunkt. Understøtter chat, svar, lyd og billed-API\'er.","featureCombosTitle":"Kombinationer og balancering","featureCombosText":"Opret modelkombinationer med fallback-kæder og balanceringsstrategier: round-robin, prioritet, tilfældig, mindst brugt og omkostningsoptimeret.","featureUsageTitle":"Brug og omkostningssporing","featureUsageText":"Tokenoptælling i realtid, omkostningsberegning pr. udbyder/model og detaljeret forbrugsopdeling efter API-nøgle og konto.","featureAnalyticsTitle":"Analytics Dashboard","featureAnalyticsText":"Visuel analyse med diagrammer for anmodninger, tokens, fejl, latens, omkostninger og modelpopularitet over tid.","featureHealthTitle":"Sundhedsovervågning","featureHealthText":"Live-sundhedstjek, udbyderstatus, strømafbrydertilstande og automatisk hastighedsgrænsedetektering med eksponentiel backoff.","featureCliTitle":"CLI værktøjer","featureCliText":"Administrer IDE-konfigurationer, eksporter/importér sikkerhedskopier, find codex-profiler og konfigurer indstillinger fra dashboardet.","featureSecurityTitle":"Sikkerhed og politikker","featureSecurityText":"API-nøglegodkendelse, IP-filtrering, promptindsprøjtningsbeskyttelse, domænepolitikker, sessionsstyring og revisionslogning.","featureCloudSyncTitle":"Cloud Sync","featureCloudSyncText":"Synkroniser din konfiguration med Cloudflare Workers for fjernadgang med krypterede legitimationsoplysninger og automatisk failover.","providersAcrossConnectionTypes":"{count} udbydere på tværs af tre forbindelsestyper.","manageProviders":"Administrer udbydere","providersCount":"{count} udbydere","providerTypeFree":"Gratis niveau","providerTypeOAuth":"OAuth","providerTypeApiKey":"API nøgle","useCaseSingleEndpointTitle":"Enkelt slutpunkt for mange udbydere","useCaseSingleEndpointText":"Peg klienter til én basis-URL og rute efter modelpræfiks (for eksempel: gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Fallback og modelskift med kombinationer","useCaseFallbackText":"Opret kombinationsmodeller i Dashboard, og hold klientkonfigurationen stabil, mens udbyderne roterer internt.","useCaseUsageVisibilityTitle":"Brug, omkostninger og fejlfindingssynlighed","useCaseUsageVisibilityText":"Spor tokens og omkostninger efter udbyder, konto og API-nøgle på fanerne Brug og Analytics.","clientCherryStudioTitle":"Cherry Studio","baseUrlLabel":"Basis URL","chatEndpointLabel":"Chat slutpunkt","modelRecommendationLabel":"Modelanbefaling: eksplicit præfiks","clientCodexTitle":"Codex / GitHub Copilot-modeller","clientCodexBullet1":"Brug model-id\'er med","clientCodexBullet2":"Codex-familiemodeller dirigeres automatisk til","clientCodexBullet3":"Ikke-Codex-modeller fortsætter","clientCursorTitle":"Markør IDE","clientCursorBullet1":"Brug","clientCursorBullet1Suffix":"præfiks for Cursor-modeller.","clientCursorBullet2":"OAuth-forbindelse - log på fra siden Udbydere.","clientClaudeTitle":"Claude Code / Antigravity","clientClaudeBullet1Prefix":"Brug","clientClaudeBullet1Middle":"(Claude) eller","clientClaudeBullet1Suffix":"(antityngdekraft) præfiks.","protocolsTitle":"Protokoller: MCP & A2A","protocolsDescription":"OmniRoute afslører to operationelle protokoller ud over OpenAI-kompatible API\'er: MCP til værktøjsudførelse og A2A til agent-til-agent arbejdsgange.","protocolMcpTitle":"MCP (Model Context Protocol)","protocolMcpDesc":"Brug MCP over stdio til at lade klienter opdage og kalde OmniRoute-værktøjer med revisionssynlighed.","protocolMcpStep1":"Start MCP-transport med `omniroute --mcp`.","protocolMcpStep2":"Ret din MCP-klient til stdio-transport.","protocolMcpStep3":"Ring til `omniroute_get_health` og `omniroute_list_combos` for at validere forbindelsen.","protocolA2aTitle":"A2A (Agent2Agent)","protocolA2aDesc":"Brug A2A JSON-RPC til at sende opgaver synkront eller via SSE-streaming.","protocolA2aStep1":"Læs `/.well-known/agent.json` for at finde agenter.","protocolA2aStep2":"Send `message/send` eller `message/stream` anmodninger til `POST /a2a`.","protocolA2aStep3":"Administrer opgavens livscyklus med `tasks/get` og `tasks/cancel`.","protocolTroubleshootingTitle":"Protokol fejlfinding","protocolTroubleshooting1":"Hvis MCP-status er offline, skal du kontrollere, at stdio-processen kører, og heartbeat-filen opdateres.","protocolTroubleshooting2":"Hvis A2A-opgaver forbliver i `working`, inspicer `/api/a2a/tasks/:id` og stream hændelser for terminaltilstand.","protocolTroubleshooting3":"Brug `/dashboard/mcp` og `/dashboard/a2a` til operationelle kontroller og revisionssynlighed.","endpointChatNote":"OpenAI-kompatibelt chatslutpunkt (standard).","endpointResponsesNote":"Responses API-endepunkt (Codex, o-serien).","endpointModelsNote":"Modelkatalog for alle tilsluttede udbydere.","endpointAudioNote":"Lydtransskription (Deepgram, AssemblyAI).","endpointImagesNote":"Billedgenerering (NanoBanana).","endpointRewriteChatNote":"Omskrivehjælper til klienter uden /v1.","endpointRewriteResponsesNote":"Omskriv hjælper til svar uden /v1.","endpointRewriteModelsNote":"Omskrivningshjælper til modelopdagelse uden /v1.","modelPrefixesDescriptionStart":"Brug udbyderpræfikset før modelnavnet for at rute til en bestemt udbyder. Eksempel:","modelPrefixesDescriptionEnd":"ruter til GitHub Copilot.","provider":"Udbyder","type":"Type","troubleshootingModelRouting":"Hvis klienten fejler med modelrouting, skal du bruge eksplicit udbyder/model (for eksempel: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Hvis du modtager tvetydige modelfejl, skal du vælge et udbyderpræfiks i stedet for et blottet model-id.","troubleshootingCodexFamily":"For GitHub Codex-familiemodeller skal du beholde modellen som gh/codex-model; routeren vælger /svar automatisk.","troubleshootingTestConnection":"Brug Dashboard > Udbydere > Test forbindelse, før du tester fra IDE\'er eller eksterne klienter.","troubleshootingCircuitBreaker":"Hvis en udbyder viser en afbryder åben, skal du vente på nedkøling eller tjekke Health-siden for detaljer.","troubleshootingOAuth":"For OAuth-udbydere skal du godkende igen, hvis tokens udløber. Tjek udbyderkortets statusindikator.","managementApiReference":"Management API Reference","managementApiDescription":"Automation endpoints for proxy registry, scope assignments, and legacy proxy migration.","mgmtProxiesListNote":"List saved proxy registry items (supports pagination).","mgmtProxiesCreateNote":"Create a reusable proxy item in the registry.","mgmtProxiesHealthNote":"Get 24h/rolling health metrics per saved proxy from proxy logs.","mgmtProxiesBulkAssignNote":"Assign or clear one proxy across many scope IDs in one request.","mgmtAssignmentsListNote":"List proxy assignments by scope, scope_id, or proxy_id.","mgmtAssignmentsUpdateNote":"Assign or clear proxy for global/provider/account/combo scope.","mgmtLegacyMigrationNote":"Import legacy proxyConfig maps into registry assignments.","endpointSpeechNote":"Tekst-til-tale generation (ElevenLabs, OpenAI TTS).","endpointEmbeddingsNote":"Generering af tekstindlejring (OpenAI, Cohere, Voyage)."},"legal":{"privacyPolicy":"Privatlivspolitik","termsOfService":"Servicevilkår","providerConfigurations":"Udbyder konfigurationer","apiKeys":"API nøgler","usageLogs":"Brugslogs","applicationSettings":"Applikationsindstillinger","viewExportAnalytics":"Se og eksporter brugsanalyse","clearHistory":"Ryd brugshistorik til enhver tid","configureRetention":"Konfigurer logopbevaringspolitikker","backupRestore":"Sikkerhedskopier og gendan din database","privacyMetadataTitle":"Privatlivspolitik | OmniRoute","privacyMetadataDescription":"Privatlivspolitik for OmniRoute AI API proxy-routeren.","termsMetadataTitle":"Servicevilkår | OmniRoute","termsMetadataDescription":"Servicevilkår for OmniRoute AI API proxy-routeren.","backToHome":"Tilbage til hjemmet","lastUpdated":"Sidst opdateret: {date}","policyLastUpdatedDate":"13. februar 2026","listSeparator":"-","questionsVisit":"Spørgsmål? Besøg vores","githubRepository":"GitHub-depot","privacySection1Title":"1. Lokal-første arkitektur","privacySection1Text":"OmniRoute er designet som en lokal-først-applikation. Al databehandling og lagring foregår udelukkende på din maskine. Der er ingen centraliseret server, der indsamler dine oplysninger.","privacySection2Title":"2. Data vi gemmer","privacyDataStoredIn":"Følgende data gemmes lokalt i","privacyDataProviderConfigurationsDesc":"forbindelses-URL\'er, udbydertyper og prioritetsindstillinger","privacyDataApiKeysDesc":"krypteret og gemt lokalt til godkendelse hos AI-udbydere","privacyDataUsageLogsDesc":"antal anmodninger, tokenbrug, modelnavne, tidsstempler og svartider","privacyDataApplicationSettingsDesc":"temapræferencer, routingstrategi og kombinationskonfigurationer","privacySection3Title":"3. Ingen telemetri","privacySection3Text":"OmniRoute indsamler ikke telemetri, analyser eller nedbrudsrapporter. Der sendes ingen data til os eller nogen tredjepart. Dine brugsmønstre, API-kald og konfigurationer forbliver helt private.","privacySection4Title":"4. Tredjeparts AI-udbydere","privacySection4Text":"Når du foretager API-kald gennem OmniRoute, videresendes dine anmodninger til de AI-udbydere, du har konfigureret (for eksempel: OpenAI, Anthropic, Google). Disse udbydere har deres egne privatlivspolitikker, der styrer, hvordan de håndterer dine data. Gennemgå venligst:","privacyOpenAiPolicy":"OpenAI Privatlivspolitik","privacyAnthropicPolicy":"Antropisk privatlivspolitik","privacyGooglePolicy":"Googles privatlivspolitik","privacySection5Title":"5. Cloud Sync (valgfrit)","privacySection5Text":"Hvis du aktiverer den valgfri cloud-synkroniseringsfunktion, kan udbyderkonfigurationer og API-nøgler overføres til et konfigureret cloud-slutpunkt. Denne funktion er deaktiveret som standard og kræver eksplicit opt-in.","privacySection6Title":"6. Logning","privacyLoggingIntro":"Anmodningslogfiler kan konfigureres via dashboardindstillingerne. Du kan:","privacySection7Title":"7. Dine rettigheder","privacySection7TextStart":"Da alle data er gemt lokalt, har du fuld kontrol. Du kan til enhver tid slette dine data ved at fjerne","privacySection7TextEnd":"bibliotek eller ved hjælp af databasesikkerhedskopierings- og gendannelsesfunktionerne i dashboardet.","termsSection1Title":"1. Oversigt","termsSection1Text":"OmniRoute er en lokal-første AI API proxy-router, der fungerer udelukkende på din maskine. Det dirigerer anmodninger til flere AI-udbydere med belastningsbalancering, failover og brugssporing.","termsSection2Title":"2. Brugeransvar","termsResponsibilityApiKeys":"Du er alene ansvarlig for at administrere dine egne API-nøgler og legitimationsoplysninger for tredjeparts AI-udbydere (OpenAI, Anthropic, Google osv.).","termsResponsibilityCompliance":"Du skal overholde servicevilkårene for hver AI-udbyder, hvis API du tilgår via OmniRoute.","termsResponsibilitySecurity":"Du er ansvarlig for sikkerheden af din lokale OmniRoute-installation, herunder indstilling af en adgangskode og begrænsning af netværksadgang.","termsSection3Title":"3. Hvordan det virker","termsSection3Text":"OmniRoute fungerer som en mellemmand. API-kald, der sendes til OmniRoute, oversættes og videresendes til dine konfigurerede AI-udbydere. OmniRoute ændrer ikke indholdet af dine anmodninger eller svar ud over den nødvendige protokoloversættelse.","termsSection4Title":"4. Datahåndtering","termsDataStoredLocally":"Alle data gemmes lokalt på din maskine i en SQLite-database.","termsNoTransmission":"OmniRoute transmitterer ingen data til eksterne servere, medmindre du udtrykkeligt aktiverer skysynkroniseringsfunktioner.","termsDataLocationText":"Brugslogfiler, API-nøgler og konfiguration gemmes i","termsSection5Title":"5. Ansvarsfraskrivelse","termsSection5Text":"OmniRoute leveres \\"som den er\\" uden garanti af nogen art. Vi er ikke ansvarlige for omkostninger, der påløber som følge af API-brug, serviceforstyrrelser eller tab af data. Vedligehold altid sikkerhedskopier af din konfiguration.","termsSection6Title":"6. Open Source","termsSection6Text":"OmniRoute er open source-software. Du kan frit inspicere, ændre og distribuere den i henhold til licensbetingelserne."},"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"},"agents":{"title":"CLI Agents","description":"Discover installed CLI agents on your system. Add custom agents for auto-detection.","refresh":"Refresh","installed":"Installed","notFound":"Not Found","builtIn":"Built-in","custom":"Custom","remove":"Remove","addCustomAgent":"Add Custom Agent","addCustomAgentDesc":"Register any CLI tool for detection. It will be scanned automatically on refresh.","agentName":"Agent Name","binaryName":"Binary Name","versionCommand":"Version Command","spawnArgs":"Spawn Args","addAgent":"Add Agent","scanning":"Scanning system for CLI agents...","opencodeIntegration":"OpenCode Integration","opencodeDetected":"opencode {version} detected","opencodeDesc":"Generate a ready-to-use {configFile} with your OmniRoute base URL and all available models — drop it in your project root and run {command}.","downloadConfig":"Download {file}","downloaded":"Downloaded!","setupGuideTitle":"Setup guide","openCliTools":"Open CLI Tools","setupGuideDetectCliTitle":"Detect installed CLIs","setupGuideDetectCliDesc":"Click Refresh after installing or updating a CLI so OmniRoute can rescan binaries and versions.","setupGuideCustomAgentTitle":"Register custom binary","setupGuideCustomAgentDesc":"Use Add Custom Agent when your CLI is not in the built-in list. Provide binary name and version command.","setupGuideCommandMissingTitle":"Fix \'command not found\'","setupGuideCommandMissingDesc":"Ensure the CLI command exists in PATH, open a new terminal session, and rerun Refresh."},"autoCombo":{"title":"Auto-Combo Engine","statusNormal":"Normal","statusIncident":"Incident Mode","modePack":"Mode Pack","providerScores":"Provider Scores","noAutoCombo":"No auto-combo configured.","excludedProviders":"Excluded Providers","noExclusions":"No providers currently excluded.","factorQuota":"Quota","factorHealth":"Health","factorCost":"Cost","factorLatency":"Latency","factorTaskFit":"Task Fit","factorStability":"Stability","factorTierPriority":"Tier Priority","factorTierPriorityDesc":"Prefers accounts with higher quota tiers (Ultra/Pro over Free)","scoreFactorBreakdown":"Scoring Factors","modePackShipFast":"Ship Fast","modePackCostSaver":"Cost Saver","modePackQualityFirst":"Quality First","modePackOfflineFriendly":"Offline Friendly"},"search":{"searchQuery":"Search Query","searchResults":"Search Results","cachedResult":"Cached","searchCost":"Cost","searchTools":"Search Tools","searchToolsDesc":"Advanced search testing with provider comparison","compareProviders":"Compare Providers","rerankResults":"Rerank Results","searchHistory":"Search History","urlOverlap":"URL Overlap","noSearchProviders":"No search providers configured. Add providers in Settings.","noRerankModels":"No rerank model available","webSearch":"Web Search","provider":"Provider","searchType":"Search Type","maxResults":"Max Results","filters":"Filters","country":"Country","language":"Language","timeRange":"Time Range","includeDomains":"Include Domains","excludeDomains":"Exclude Domains","safeSearch":"Safe Search","formatted":"Formatted","rawJson":"JSON","cacheMiss":"cache miss","cacheHit":"cache hit","latency":"Latency","cost":"Cost","results":"Results","rerank":"Rerank","rerankModel":"Rerank Model","positionDelta":"Position Change","emptyState":"Send a search query to see results","safeSearchOff":"Off","safeSearchModerate":"Moderate","safeSearchStrict":"Strict","queryPlaceholder":"Enter search query...","providerAuto":"auto (cheapest)","searchTypeWeb":"web","searchTypeNews":"news","optionAny":"any","timeRangeDay":"Past day","timeRangeWeek":"Past week","timeRangeMonth":"Past month","timeRangeYear":"Past year","domainPlaceholder":"example.com","requestTimedOut":"Request timed out ({seconds}s)","networkError":"Network error"},"templateNames":{"simple-chat":"Simpel chat","streaming":"Streaming","system-prompt":"Systemprompt","thinking":"Tænker","tool-calling":"Værktøjsopkald","multi-turn":"Multivending"},"templateDescriptions":{"simple-chat":"Grundlæggende chatskabelon med systembesked","streaming":"Skabelon til streaming svar","system-prompt":"Skabelon med brugerdefineret systemprompt","thinking":"Skabelon med ræsonnement/tænkebudget","tool-calling":"Skabelon til værktøj/funktionskald","multi-turn":"Skabelon til samtaler med flere sving"},"templatePayloads":{"simpleChat":{"system":"Du er en hjælpsom AI-assistent.","userGreeting":"Hej! Hvordan kan jeg hjælpe dig i dag?"},"streaming":{"prompt":"Skriv en historie om"},"systemPrompt":{"question":"Hvad er meningen med livet?","systemInstruction":"Giv et tankevækkende, filosofisk svar."},"thinking":{"question":"Forklar kvanteberegning"},"toolCalling":{"cityNameDescription":"Navnet på byen for at få vejr til","toolDescription":"Få det aktuelle vejr for en placering","userWeather":"Hvordan er vejret i Tokyo?"},"multiTurn":{"system":"Du er en hjælpsom assistent.","assistantExample":"Det hjælper jeg dig gerne med.","userInitial":"Jeg har brug for hjælp til","userFollowUp":"Kan du uddybe det?"}},"cache":{"title":"Cache Management","description":"Monitor and manage semantic response cache, hit rates, and token savings.","refresh":"Refresh","clearAll":"Clear All","memoryEntries":"Memory Entries","dbEntries":"DB Entries","cacheHits":"Cache Hits","tokensSaved":"Tokens Saved","hitRate":"Hit Rate","performance":"Cache Performance","behavior":"Cache Behavior","idempotency":"Idempotency Layer","clearSuccess":"Cache cleared. {count} expired entries removed.","clearError":"Failed to clear cache.","unavailable":"Cache unavailable","unavailableDesc":"Could not fetch cache statistics. Make sure the server is running.","memoryEntriesSub":"In-memory LRU","dbEntriesSub":"Persisted (SQLite)","cacheHitsSub":"of {total} total","tokensSavedSub":"Estimated from hits","autoRefresh":"Auto-refreshes every {seconds}s","hits":"Hits","misses":"Misses","total":"Total","behaviorDeterministic":"Only non-streaming requests with temperature=0 are cached.","behaviorBypass":"Bypass with header {header}.","behaviorTwoTier":"Two-tier storage: in-memory LRU (fast) + SQLite (persistent across restarts).","behaviorTtl":"Default TTL: 30 minutes. Configure via {envVar}.","activeDedupKeys":"Active Dedup Keys","dedupWindow":"Dedup Window"}}'))}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=src_i18n_messages_da_json_7500ed02._.js.map
|