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=[506194,a=>{a.v(JSON.parse('{"common":{"save":"Lagre","cancel":"Avbryt","delete":"Slett","loading":"Laster inn...","error":"Det oppsto en feil","success":"Suksess","confirm":"Er du sikker?","refresh":"Oppdater","close":"Lukk","add":"Legg til","edit":"Rediger","search":"Søk","back":"Tilbake","next":"Neste","submit":"Send inn","reset":"Tilbakestill","copy":"Kopier","copied":"Kopiert!","enabled":"Aktivert","disabled":"Deaktivert","active":"Aktiv","inactive":"Inaktiv","noData":"Ingen data tilgjengelig","configure":"Konfigurer","manage":"Administrer","name":"Navn","actions":"Handlinger","status":"Status","type":"Type","model":"Modell","models":"modeller","provider":"Leverandør","account":"Konto","time":"Tid","details":"Detaljer","created":"Opprettet","lastUsed":"Sist brukt","loadMore":"Last inn mer","noResults":"Ingen resultater funnet","reloadPage":"Last inn siden på nytt","connected":"Tilkoblet","disconnected":"Koblet fra","notConfigured":"Ikke konfigurert","testConnection":"Test tilkobling","enable":"Aktiver","disable":"Deaktiver","columns":"Kolonner","newest":"Nyeste","oldest":"Eldst","all":"Alle","none":"Ingen","yes":"Ja","no":"Nei","warning":"Advarsel","note":"Merk","free":"Gratis","skipToContent":"Gå til innhold","maintenanceServerIssues":"Server is experiencing issues. Some features may be unavailable.","maintenanceServerUnreachable":"Server is unreachable. Reconnecting...","accept":"Godta","accountId":"Konto-ID","alias":"Alias","apiKeyId":"API-nøkkel-ID","apiKeyName":"API-nøkkelnavn","apiKeySecret":"API-nøkkelhemmelighet","authorization":"Autorisasjon","content-type":"Innholdstype","content-length":"Innholdslengde","cookie":"Cookie","file":"Fil","host":"Vert","id":"ID","import":"Importer","limit":"Begrens","offset":"Offset","open":"Åpne","origin":"Opprinnelse","promptTokens":"Spør Tokens","completionTokens":"Fullføringssymboler","totalTokens":"Totalt tokens","rawModel":"Rå modell","scope":"Omfang","skill":"Ferdighet","sortBy":"Sorter etter","sortOrder":"Sorteringsrekkefølge","tab":"Tab","text":"Tekst","textarea":"Tekstområde","tool":"Verktøy","toolId":"Verktøy-ID","web":"Web","whereUsed":"Hvor det brukes","whitelist":"Hviteliste","blacklist":"Svarteliste","resolve":"Løs","force":"Kraft","base64url":"Base64 URL","hex":"Hex","range":"Rekkevidde","component":"Komponent","redirect_uri":"Omdiriger URI","idempotency-key":"Idempotensnøkkel","error_description":"Feilbeskrivelse","code":"Kode","compatible":"Kompatibel","chat-completions":"Chatfullføringer","oauth":"OAuth","auth_token":"Auth Token","crypto":"Krypto","hours":"Timer","selfsigned":"Selvsignert","proxy_id":"Proxy ID","proxyId":"Proxy ID","connectionId":"Tilkoblings-ID","resolveConnectionId":"Løs tilkoblings-ID","resolve_connection_id":"Løs tilkoblings-ID","scope_id":"Omfang ID","scopeId":"Omfang ID","jwtSecret":"JWT-hemmelighet","keytar":"Keytar","better-sqlite3":"bedre-sqlite3","undici":"undici","builder-id":"Byggherre-ID","musicDesc":"Musikkbeskrivelse","musicGeneration":"Musikkgenerasjon","idc":"IDC","cloud-status-changed":"Skystatus endret","where_used":"Hvor det brukes","windowMs":"Vindu (ms)","social-github":"GitHub","social-google":"Google","TOOL_ALLOWLIST":"Verktøytillatelsesliste","TOOL_DENYLIST":"Verktøyfornektelsesliste","Failed to save pricing":"Kunne ikke lagre prisen","Failed to reset pricing":"Kunne ikke tilbakestille priser","apikey":"API-nøkkel","http":"HTTP"},"sidebar":{"home":"Hjem","dashboard":"Dashbord","providers":"Leverandører","combos":"Combos","usage":"Bruk","analytics":"Analytics","costs":"Kostnader","health":"Helse","limits":"Grenser og kvoter","cliTools":"CLI-verktøy","media":"Medier","settings":"Innstillinger","translator":"Oversetter","docs":"Dokumenter","issues":"Problemer","apiManager":"API-behandler","logs":"Logger","auditLog":"Revisjonslogg","shutdown":"Avslutning","restart":"Start på nytt","shutdownConfirm":"Slå av OmniRoute?","restartConfirm":"Starte OmniRoute på nytt?","version":"v{version}","debug":"Feilsøk","system":"System","help":"Hjelp","serverDisconnected":"Server frakoblet","serverDisconnectedMsg":"Proxy-serveren er stoppet eller starter på nytt.","expandSidebar":"Utvid sidefeltet","collapseSidebar":"Skjul sidefeltet","themes":"Themes","presetColors":"Popular colors","createTheme":"Create theme","chooseColor":"Pick one color","themeCoral":"Coral","themeBlue":"Blue","themeRed":"Red","themeGreen":"Green","themeViolet":"Violet","themeOrange":"Orange","themeCyan":"Cyan","endpoints":"Endepunkter","playground":"Lekeplass","agents":"Agenter","cliToolsShort":"Verktøy","autoCombo":"Auto Combo","searchTools":"Search Tools","cache":"Cache","cacheShort":"Cache"},"themesPage":{"title":"Themes","description":"Choose a preset theme or create your own with a single color","presetColors":"Popular colors","customTheme":"Custom theme","customThemeDesc":"Click create theme and pick one color","createTheme":"Create theme","activePreset":"Active theme"},"header":{"logout":"Logg ut","language":"Språk","providers":"Leverandører","providerDescription":"Administrer AI-leverandørtilkoblingene dine","combos":"Combos","comboDescription":"Modellkombinasjoner med fallback","usage":"Bruk og analyse","usageDescription":"Overvåk API-bruken din, tokenforbruk og forespørselslogger","analytics":"Analytics","analyticsDescription":"Diagrammer, trender og evalueringsinnsikt","cliTools":"CLI-verktøy","cliToolsDescription":"Konfigurer CLI-verktøy","home":"Hjem","homeDescription":"Velkommen til OmniRoute","endpoint":"Endpoints","endpointDescription":"Manage proxy endpoints, MCP, A2A, and API endpoints","settings":"Innstillinger","settingsDescription":"Administrer dine preferanser","openaiCompatible":"OpenAI-kompatibel","anthropicCompatible":"Antropisk kompatibel","media":"Media","mediaDescription":"Generate images, videos, and music","themes":"Themes","themesDescription":"Choose a color theme for the whole dashboard panel","mcp":"MCP","mcpDescription":"Model Context Protocol server management and tools","a2a":"A2A","a2aDescription":"Agent-to-Agent protocol tasks and observability"},"home":{"quickStart":"Rask start","quickStartDesc":"Kom i gang i 4 trinn. Koble til leverandører, rutemodeller, overvåk alt.","fullDocs":"Fulle dokumenter","step1Title":"1. Opprett API-nøkkel","step1Desc":"Gå til <endpoint>Endpoint</endpoint> -> Registrerte nøkler. Generer én nøkkel per miljø.","step2Title":"2. Koble til leverandører","step2Desc":"Legg til kontoer i <providers>Providers</providers>. Støtter OAuth, API Key og gratis nivåer.","step3Title":"3. Pek klienten din","step3Desc":"Angi basis-URL til {url} i IDE- eller API-klienten.","step4Title":"4. Overvåk og optimaliser","step4Desc":"Spor tokens, kostnader og feil i <logs>Request Logs</logs> og <analytics>Analytics</analytics>.","providersOverview":"Oversikt over leverandører","configuredOf":"{configured} konfigurert av {total} tilgjengelige leverandører","noModelsAvailable":"Ingen modeller tilgjengelig for denne leverandøren.","configureFirst":"Konfigurer en tilkobling først i {providers}","configureProvider":"Konfigurer leverandør","modelAvailable":"{count} modell tilgjengelig","modelsAvailable":"{count} modeller tilgjengelig","connectionsActive":"{count} tilkobling aktiv","connectionsActivePlural":"{count} tilkoblinger aktive","copyModelName":"Kopier modellnavnet","documentation":"Dokumentasjon","healthMonitor":"Helsemonitor","reportIssue":"Rapporter problem","activeError":"{active} aktiv · {errors} feil","oauthLabel":"OAuth","apiKeyLabel":"API-nøkkel","requestsShort":"{count} req","providerModelsTitle":"{provider} - Modeller","copiedModel":"Kopiert: {model}","aliasLabel":"alias","updateNow":"Oppdater nå","updating":"Oppdaterer...","updateAvailableDesc":"En ny versjon er tilgjengelig. Klikk for å oppdatere.","updateStarted":"Oppdatering startet..."},"analytics":{"title":"Analytics","overviewDescription":"Overvåk API-bruksmønstre, tokenforbruk, kostnader og aktivitetstrender på tvers av alle leverandører og modeller.","evalsDescription":"Kjør evalueringspakker for å teste og validere LLM-endepunktene dine. Sammenlign modellkvalitet, registrer regresjoner og benchmark latens.","overview":"Oversikt","evals":"Evals"},"apiManager":{"title":"API-nøkler","createKey":"Opprett API-nøkkel","key":"Nøkkel","revokeKey":"Tilbakekall nøkkel","revokeConfirm":"Er du sikker på at du vil tilbakekalle denne API-nøkkelen?","noKeys":"Ingen API-nøkler ennå","noKeysDesc":"Lag din første API-nøkkel for å autentisere forespørsler til endepunktet ditt","keyLabel":"Nøkkeletikett","permissions":"Tillatelser","expiresAt":"Utløper","never":"Aldri","revoke":"Oppheve","showKey":"Vis nøkkel","hideKey":"Skjul nøkkel","copyKey":"Kopier API-nøkkel","allModels":"Alle modeller","selectedModels":"Utvalgte modeller","readOnly":"Kun lesetilgang","fullAccess":"Full tilgang","keyManagement":"API Key Management","keyManagementDesc":"Opprett og administrer API-nøkler for autentisering av forespørsler til endepunktet ditt","totalKeys":"Totalnøkler","restricted":"Begrenset","totalRequests":"Totalt antall forespørsler","modelsAvailable":"Modeller tilgjengelig","registeredKeys":"Registrerte nøkler","keysRegistered":"{count} nøkler registrert","keyRegistered":"{count} nøkkel registrert","keysSecurityNote":"Hver nøkkel isolerer brukssporing og kan trekkes tilbake uavhengig. Nøkler er maskert etter opprettelse for sikkerhet.","createFirstKey":"Lag din første nøkkel","name":"Navn","usage":"Bruk","created":"Opprettet","actions":"Handlinger","reqs":"krav","neverUsed":"Aldri brukt","deleteConfirm":"Vil du slette denne API-nøkkelen?","usageTips":"Brukstips","tipAuth":"Bruk API-nøkler i autorisasjonsoverskriften som bærer DIN_KEY","tipSecure":"Nøkler vises bare én gang under opprettelsen – oppbevar dem sikkert","tipSeparate":"Lag separate nøkler for forskjellige klienter eller miljøer","tipRestrict":"Begrens nøkler til spesifikke modeller for bedre sikkerhet og kostnadskontroll","keyName":"Nøkkelnavn","keyNamePlaceholder":"f.eks. produksjonsnøkkel, utviklingsnøkkel","keyNameDesc":"Velg et beskrivende navn for å identifisere formålet med denne nøkkelen","keyCreated":"API-nøkkel opprettet","keyCreatedSuccess":"Nøkkel ble opprettet!","keyCreatedNote":"Kopier og lagre denne nøkkelen nå – den vises ikke igjen.","done":"Ferdig","savePermissions":"Lagre tillatelser","allowAll":"Tillat alle","restrict":"Begrens","allowAllInfo":"Denne nøkkelen har tilgang til alle tilgjengelige modeller.","restrictInfo":"Denne nøkkelen har tilgang til {selected} av {total}-modeller.","selected":"{count} valgt","all":"Alle","clear":"Klart","searchModels":"Søk etter modeller etter navn eller leverandør...","noModelsFound":"Ingen modeller funnet","keyNameRequired":"Nøkkelnavn er påkrevd","keyNameTooLong":"Nøkkelnavnet må være {max} tegn eller mindre","keyNameInvalid":"Nøkkelnavn kan bare inneholde bokstaver, tall, mellomrom, bindestreker og understreker","invalidKeyName":"Ugyldig nøkkelnavn","failedCreateKey":"Kunne ikke opprette nøkkel","failedCreateKeyRetry":"Kunne ikke opprette nøkkel. Vennligst prøv igjen.","invalidKeyId":"Ugyldig nøkkel-ID","failedDeleteKey":"Kunne ikke slette nøkkelen","failedDeleteKeyRetry":"Kunne ikke slette nøkkelen. Vennligst prøv igjen.","invalidModelsSelection":"Ugyldig modellvalg","cannotSelectMoreThanModels":"Kan ikke velge mer enn {max} modeller","failedUpdatePermissions":"Kunne ikke oppdatere tillatelser","failedUpdatePermissionsRetry":"Kunne ikke oppdatere tillatelser. Vennligst prøv igjen.","unknownProvider":"ukjent","copyMaskedKey":"Kopier maskert nøkkel","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Siste: {date}","editPermissions":"Rediger tillatelser","deleteKey":"Slett nøkkel","model":"{count} modell","models":"{count} modeller","permissionsTitle":"Tillatelser: {name}","allowAllDesc":"Denne nøkkelen har tilgang til alle tilgjengelige modeller.","restrictDesc":"Denne nøkkelen har tilgang til {selectedCount} av {totalModels}-modeller.","selectedCount":"{count} valgt","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":"Revisjonslogg","searchPlaceholder":"Søkehandlinger...","action":"Handling","actor":"Skuespiller","target":"Mål","ipAddress":"IP-adresse","timestamp":"Tidsstempel","noEntries":"Ingen revisjonsoppføringer funnet","filterByAction":"Filtrer etter handling...","filterByActor":"Filtrer etter skuespiller...","filterEntriesAria":"Filtrer revisjonsloggoppføringer","filterByActionTypeAria":"Filtrer etter handlingstype","filterByActorAria":"Filtrer etter skuespiller","refreshAuditLogAria":"Oppdater revisjonslogg","tableAria":"Revisjonsloggoppføringer","failedFetchAuditLog":"Kunne ikke hente revisjonsloggen","notAvailable":"—","description":"Administrative handlinger og sikkerhetshendelser","showing":"Viser {count} oppføringer (offset {offset})","previous":"Forrige"},"media":{"title":"Medialab","subtitle":"Generer bilder, videoer og musikk","model":"Model","prompt":"Prompt","generate":"Generer","generating":"Generating...","loadingModels":"Loading available models...","noModels":"No models available. Configure providers with media capabilities first.","error":"Generation Failed","result":"Result","imageDescription":"Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.","videoDescription":"Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.","musicDescription":"Compose music using Stable Audio Open or MusicGen via ComfyUI."},"cliTools":{"title":"CLI-verktøy","noActiveProviders":"Ingen aktive tilbydere","noActiveProvidersDesc":"Vennligst legg til og koble til leverandører først for å konfigurere CLI-verktøy.","mapModels":"Kartmodeller","testConnection":"Test tilkobling","connectionStatus":"Tilkoblingsstatus","configureEndpoint":"Konfigurer endepunkt","instructions":"Instruksjoner","modelMapping":"Modellkartlegging","baseUrl":"Base URL","apiKey":"API-nøkkel","configured":"Konfigurert","notConfigured":"Ikke konfigurert","notInstalled":"Ikke installert","custom":"Egendefinert","unknown":"Ukjent","lastSavedAt":"Sist lagret: {date}","never":"Aldri","justNow":"akkurat nå","minutesAgoShort":"{count}m siden","hoursAgoShort":"{count}t siden","daysAgoShort":"{count}d siden","monthsAgoShort":"{count}mnd siden","yearsAgoShort":"{count}y siden","runtimeCheckFailed":"Kjøretidssjekk mislyktes","yourApiKeyPlaceholder":"din-api-nøkkelen","modelPlaceholder":"leverandør/modell-id","configurationSaved":"Konfigurasjonen er lagret.","failedToSave":"Kunne ikke lagre konfigurasjonen.","noApiKeysCreateOne":"Ingen API-nøkler – Opprett en på Nøkler-siden","defaultOmnirouteKey":"sk_omniroute (standard)","selectModel":"Velg modell","selectModelForAlias":"Velg modell for {alias}","selectModelForTool":"Velg modell for {tool}","select":"Velg","clear":"Klart","comingSoon":"Kommer snart","checkingRuntime":"Sjekker kjøretidsstatus ...","guideOnlyIntegration":"Integrasjon kun for guide (ingen lokal kjøretid kreves)","cliRuntimeDetected":"CLI kjøretid oppdaget og klar","cliFoundNotRunnable":"CLI funnet, men ikke kjørbar{reason}","cliRuntimeNotDetected":"CLI kjøretid ikke oppdaget","binary":"Binær","configPath":"Konfigurasjonsbane","configPathShort":"Konfig","failedCheckRuntimeStatus":"Kunne ikke sjekke kjøretidsstatus.","copy":"Kopier","copied":"Kopiert","copyConfig":"Kopier konfig","saveConfig":"Lagre konfig","selectionSaved":"Utvalget lagret","guide":"Veiledning","detected":"Oppdaget","notReady":"Ikke klar","active":"Aktiv","inactive":"Inaktiv","startMitm":"Start MITM","stopMitm":"Stopp MITM","mitmStarted":"MITM startet vellykket!","mitmStopped":"MITM stoppet vellykket!","failedStart":"Kunne ikke starte MITM","failedStop":"Kunne ikke stoppe MITM","saveMappings":"Lagre tilordninger","mappingsSaved":"Kartene er lagret!","failedSaveMappings":"Kunne ikke lagre tilordninger","howItWorks":"Slik fungerer det:","antigravityHowWorksDesc":"Antigravity sender forespørsler til Googles endepunkt. MITM avskjærer og omdirigerer dem til OmniRoute.","antigravityStep1":"1. Start MITM for å rute forespørsler gjennom OmniRoute.","antigravityStep2Prefix":"2. Legg til","antigravityStep2Suffix":"til vertsfilen din som 127.0.0.1.","antigravityStep3":"3. Åpne Antigravity og forespørsler vil bli fullført.","sudoPasswordRequiredTitle":"Sudo-passord kreves","sudoPasswordHint":"Administratorpassord kreves for å endre vertsfil og systemproxyinnstillinger.","enterSudoPassword":"Skriv inn sudo-passord","sudoPasswordRequiredError":"Sudo-passord kreves.","cancel":"Avbryt","confirm":"Bekreft","settingsApplied":"Innstillingene ble brukt!","failedApplySettings":"Kunne ikke bruke innstillingene","settingsReset":"Innstillinger tilbakestilt!","failedResetSettings":"Kunne ikke tilbakestille innstillingene","backupRestored":"Sikkerhetskopien gjenopprettet!","failedRestore":"Kunne ikke gjenopprette","checkingCli":"Sjekker {tool} CLI...","cliNotRunnable":"{tool} CLI installert, men ikke kjørbar","cliNotInstalled":"{tool} CLI ikke installert","cliNotDetected":"{tool} CLI ikke oppdaget","cliDetectedReady":"{tool} CLI oppdaget og klar","cliFoundFailedHealthcheck":"{tool} CLI ble funnet, men mislyktes med kjøretidshelsesjekk{reason}.","installCliPrompt":"Installer {tool} CLI for å bruke denne funksjonen.","installCodexPrompt":"Installer Codex CLI for å bruke funksjonen for automatisk bruk.","hide":"Skjul","howToInstall":"Hvordan installere","installationGuide":"Installasjonsveiledning","platforms":"macOS / Linux / Windows:","afterInstallationRun":"Etter installasjon, kjør","toVerify":"å verifisere.","current":"Gjeldende","baseUrlPlaceholder":"https://.../v1","resetToDefault":"Tilbakestill til standard","providerModelPlaceholder":"leverandør/modell-id","apply":"Søk","reset":"Tilbakestill","manualConfig":"Manuell konfig","backups":"Sikkerhetskopier","configBackups":"Konfigurer sikkerhetskopier","noBackupsYet":"Ingen sikkerhetskopier ennå. Sikkerhetskopier opprettes automatisk før hver bruk eller tilbakestilling.","restore":"Gjenopprett","backupRestoredReloading":"Sikkerhetskopien gjenopprettet! Laster inn status på nytt ...","failedRestoreBackup":"Kunne ikke gjenopprette sikkerhetskopien","applied":"Søkt!","failed":"Mislyktes","resetDone":"Tilbakestill!","omnirouteConfiguredOpenAiCompatible":"OmniRoute er konfigurert som OpenAI-kompatibel leverandør","provider":"Leverandør","model":"Modell","providers":"Leverandører","auth":"Auth","noApiKeysAvailable":"Ingen API-nøkler tilgjengelig","usingDefaultOmniroute":"Bruker standard: sk_omniroute","updateConfig":"Oppdater konfig","applyConfig":"Bruk Config","noBackupsAvailable":"Ingen sikkerhetskopier tilgjengelig.","profileSaved":"Profilen \\"{name}\\" er lagret!","failedSaveProfile":"Kunne ikke lagre profilen","profileActivated":"Profil aktivert!","failedActivateProfile":"Kunne ikke aktivere profilen","profiles":"Profiler","savedProfiles":"Lagrede profiler","noProfilesYet":"Ingen profiler er lagret ennå. Lagre gjeldende konfigurasjon som en profil nedenfor.","activate":"Aktiver","deleteProfile":"Slett profil","profileNamePlaceholder":"Profilnavn (f.eks. personlig konto)","saveCurrent":"Lagre gjeldende","codexAuthNotePrefix":"Codex bruker","codexAuthNoteMiddle":"med","codexAuthNoteSuffix":"Klikk \\"Bruk\\" for å konfigurere automatisk.","claudeManualConfiguration":"Claude CLI - Manuell konfigurasjon","codexManualConfiguration":"Codex CLI - Manual Configuration","droidManualConfiguration":"Factory Droid - Manuell konfigurasjon","openClawManualConfiguration":"Åpne Claw - Manuell konfigurasjon","clineManualConfiguration":"Cline manuell konfigurasjon","kiloManualConfiguration":"Kilokode manuell konfigurasjon","toolDescriptions":{"antigravity":"Google Antigravity IDE med MITM","claude":"Antropisk Claude Code CLI","codex":"OpenAI Codex CLI","droid":"Factory Droid AI Assistant","openclaw":"Åpne Claw AI Assistant","cline":"Cline AI-kodingsassistent CLI","kilo":"Kilokode AI Assistant CLI","cursor":"Cursor AI Code Editor","continue":"Fortsett AI Assistant","opencode":"OpenCode AI coding agent (Terminal)","kiro":"Amazon Kiro — AI-powered IDE","windsurf":"Windsurf AI Code Editor","copilot":"GitHub Copilot AI Assistant"},"guides":{"cursor":{"notes":{"0":"Krever Cursor Pro-konto for å bruke denne funksjonen.","1":"Markøren ruter forespørsler gjennom sin egen server, så lokalt endepunkt støttes ikke. Aktiver Cloud Endpoint i Innstillinger."},"steps":{"1":{"title":"Åpne Innstillinger","desc":"Gå til Innstillinger -> Modeller"},"2":{"title":"Aktiver OpenAI API","desc":"Aktiver alternativet \\"OpenAI API-nøkkel\\"."},"3":{"title":"Base URL"},"4":{"title":"API-nøkkel"},"5":{"title":"Legg til egendefinert modell","desc":"Klikk \\"Vis alle modeller\\" -> \\"Legg til egendefinert modell\\""},"6":{"title":"Velg modell"}}},"continue":{"steps":{"1":{"title":"Åpne Config","desc":"Åpne Fortsett konfigurasjonsfil"},"2":{"title":"API-nøkkel"},"3":{"title":"Velg modell"},"4":{"title":"Legg til modellkonfig","desc":"Legg til følgende konfigurasjon til modellarrayet ditt:"}},"notes":{"0":"Continue bruker JSON-konfigurasjonsfilen."}},"opencode":{"steps":{"1":{"title":"Install OpenCode","desc":"Install via npm: npm install -g opencode-ai"},"2":{"title":"API Key"},"3":{"title":"Set Base URL","desc":"opencode config set baseUrl {{baseUrl}}"},"4":{"title":"Select Model"}},"notes":{"0":"OpenCode krever API-nøkkelkonfigurasjon.","1":"Angi basis-URL til OmniRoute-endepunktet."}},"kiro":{"steps":{"1":{"title":"Open Kiro Settings","desc":"Go to Settings → AI Provider"},"2":{"title":"Base URL","desc":"Paste your OmniRoute endpoint URL"},"3":{"title":"API Key"},"4":{"title":"Select Model"}},"notes":{"0":"Kiro krever Amazon-konto."}}},"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":"Når du skal bruke","openToolDocs":"Åpne verktøydokumenter","toolUseCases":{"claude":"Bruk når du vil ha sterke planleggingsarbeidsflyter og lange multifilrefaktorer med Claude Code.","codex":"Bruk når teamet ditt er standardisert på OpenAI Codex CLI-flyter og profilbasert autentisering.","droid":"Bruk når du trenger en lettvekts terminalagent fokusert på rask koding og løkker for kommandoutførelse.","openclaw":"Bruk når du vil ha en Open Claw-kodingsagent, men rutet gjennom OmniRoute-policyer.","cline":"Bruk når du konfigurerer kodeagenter inne i redaktører og ønsker veiledet oppsett med OmniRoute-modeller.","kilo":"Bruk når arbeidsflyten din avhenger av Kilo Code-kommandoer og raske iterative redigeringer.","cursor":"Bruk når du koder i Cursor og du trenger tilpassede OpenAI-kompatible modeller gjennom OmniRoute.","continue":"Bruk når du kjører Continue i IDEer og du trenger bærbar JSON-basert leverandørkonfigurasjon.","opencode":"Bruk når du foretrekker terminal-native agentkjøringer og skriptautomatisering via OpenCode.","kiro":"Brukes når du integrerer Kiro og kontrollerer modellruting sentralt fra OmniRoute.","antigravity":"Brukes når Antigravity/Kiro-trafikk må avskjæres gjennom MITM og rutes til OmniRoute.","copilot":"Bruk når du vil ha Copilot chat-stil UX mens du håndhever OmniRoute-nøkler og rutingsregler."}},"combos":{"title":"Combos","description":"Lag modellkombinasjoner med vektet ruting og reservestøtte","createCombo":"Opprett kombinasjon","editCombo":"Rediger kombinasjon","deleteCombo":"Slett kombinasjon","noModels":"Ingen modeller","noModelsYet":"Ingen modeller lagt til ennå","addModel":"Legg til modell","addModelToCombo":"Legg til modell i kombinasjon","routingStrategy":"Rutingstrategi","maxRetries":"Max prøver på nytt","timeout":"Tidsavbrudd (ms)","healthcheck":"Helsesjekk","priority":"Prioritet","fallback":"Tilbakeslag","roundRobin":"Round Robin","random":"Tilfeldig","leastLatency":"Minste ventetid","comboName":"Kombinasjonsnavn","comboNamePlaceholder":"min-kombo","deleteConfirm":"Vil du slette denne kombinasjonen?","noCombosYet":"Ingen kombinasjoner ennå","comboCreated":"Kombinasjonen ble opprettet","comboUpdated":"Kombinasjonen ble oppdatert","comboDeleted":"Combo slettet","failedCreate":"Kunne ikke opprette kombinasjon","failedUpdate":"Kunne ikke oppdatere kombinasjonen","errorCreating":"Feil ved opprettelse av kombinasjon","errorUpdating":"Feil ved oppdatering av kombinasjon","errorDeleting":"Feil ved sletting av kombinasjon","testFailed":"Testforespørsel mislyktes","failedToggle":"Kunne ikke bytte kombinasjon","testResults":"Testresultater — {name}","resolvedBy":"Løst av:","more":"+{count} til","reqs":"krav","success":"suksess","proxyConfigured":"Proxy konfigurert","copyComboName":"Kopier kombinasjonsnavnet","enableCombo":"Aktiver kombinasjon","disableCombo":"Deaktiver kombinasjon","testCombo":"Testkombo","duplicate":"Duplikat","proxyConfig":"Proxy-konfigurasjon","nameRequired":"Navn er påkrevd","nameInvalid":"Bare bokstaver, tall, -, _, / og . tillatt","nameHint":"Bokstaver, tall, -, _, / og . tillatt","priorityDesc":"Sekvensiell fallback: prøver modell 1 først, deretter 2 osv.","weightedDesc":"Fordeler trafikk etter vektprosent med reserve","roundRobinDesc":"Sirkulær fordeling: hver forespørsel går til neste modell i rotasjon","randomDesc":"Ensartet tilfeldig valg, deretter fallback til gjenværende modeller","leastUsedDesc":"Velger modellen med færrest forespørsler, og balanserer belastningen over tid","costOptimizedDesc":"Ruter til den billigste modellen først basert på priser","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each model once before reshuffling","models":"Modeller","autoBalance":"Autobalanse","advancedSettings":"Avanserte innstillinger","retryDelay":"Forsinkelse på nytt (ms)","concurrencyPerModel":"Samtidighet / modell","queueTimeout":"Tidsavbrudd for kø (ms)","advancedHint":"La stå tomt for å bruke globale standardinnstillinger. Disse overstyrer innstillingene per leverandør.","moveUp":"Flytt opp","moveDown":"Flytt ned","removeModel":"Fjern","saving":"Lagrer...","weighted":"Vektet","leastUsed":"Minst brukt","costOpt":"Cost-Opt","strategyGuideTitle":"How to use this strategy","strategyGuideWhen":"When to use","strategyGuideAvoid":"Avoid when","strategyGuideExample":"Example","strategyGuide":{"priority":{"when":"You have one preferred model and only want fallback on failure.","avoid":"You need request distribution across models.","example":"Primary coding model with cheaper backup for outages."},"weighted":{"when":"You need controlled traffic split across models.","avoid":"You cannot maintain accurate weights over time.","example":"80% stable model + 20% canary model rollout."},"round-robin":{"when":"You want predictable and even distribution.","avoid":"Models differ too much in latency or cost.","example":"Same model on multiple accounts to spread throughput."},"random":{"when":"You want simple distribution with minimal setup.","avoid":"You need strict traffic guarantees.","example":"Quick prototyping with equivalent models."},"least-used":{"when":"You want adaptive balancing based on live demand.","avoid":"Traffic is too low to benefit from usage balancing.","example":"Mixed workloads where one model often gets overloaded."},"cost-optimized":{"when":"Cost reduction is your top priority.","avoid":"Pricing data is missing or outdated.","example":"Background or batch jobs where lower cost is preferred."}},"advancedHelp":{"maxRetries":"How many retries are attempted before failing a request.","retryDelay":"Initial wait between retries. Higher values reduce burst pressure.","timeout":"Maximum request duration before aborting.","healthcheck":"Skips unhealthy models/providers from routing decisions.","concurrencyPerModel":"Max simultaneous requests allowed per model in round-robin.","queueTimeout":"How long a request can wait in queue before timing out."},"templatesTitle":"Quick templates","templatesDescription":"Apply a starting profile, then adjust models and config.","templateApply":"Apply template","templateHighAvailability":"High availability","templateHighAvailabilityDesc":"Priority routing with health checks and safe retries.","templateCostSaver":"Cost saver","templateCostSaverDesc":"Cost-optimized routing for budget-first workloads.","templateBalanced":"Balanced load","templateBalancedDesc":"Least-used routing to spread demand over time.","usageGuideHide":"Hide","usageGuideDontShowAgain":"Don\'t show again","usageGuideShow":"Show guide","quickTestTitle":"Combo ready to validate","quickTestDescription":"Run a test now to confirm fallback and latency behavior.","testNow":"Test now","pricingCoverage":"Pricing coverage","pricingCoverageHint":"Cost-optimized works best when all combo models have pricing.","pricingAvailable":"Pricing available","pricingMissing":"No pricing","pricingAvailableShort":"priced","pricingMissingShort":"no-price","warningRoundRobinSingleModel":"Round-robin is most useful with at least 2 models.","warningCostOptimizedPartialPricing":"Only {priced} of {total} models have pricing. Routing may be partially cost-aware.","warningCostOptimizedNoPricing":"No pricing data found for this combo. Cost-optimized may route unexpectedly.","readinessTitle":"Klar til å spare?","readinessDescription":"Se gjennom sjekklisten før du oppretter eller oppdaterer denne kombinasjonen.","readinessCheckName":"Kombinasjonsnavnet er gyldig","readinessCheckModels":"Minst én modell er valgt","readinessCheckWeights":"Vektet total er 100 %","readinessCheckWeightsOptional":"Vektregel er ikke nødvendig","readinessCheckPricing":"Prisdata er tilgjengelig","readinessCheckPricingOptional":"Prisregel er ikke nødvendig","saveBlockedTitle":"Lagre er blokkert til følgende elementer er fikset:","saveBlockName":"Definer et kombinasjonsnavn.","saveBlockModels":"Legg til minst én modell.","saveBlockWeighted":"Sett vekter til 100 % (gjeldende: {total}%).","saveBlockPricing":"Legg til priser for minst én modell eller velg en annen strategi.","recommendationsLabel":"Recommended setup","applyRecommendations":"Apply recommendations","recommendationsUpdated":"Recommendations updated for {strategy}.","recommendationsApplied":"Recommendations applied to this combo.","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":"Kostnader","budget":"Budsjett","totalCost":"Total kostnad","breakdown":"Kostnadsfordeling","noData":"Ingen kostnadsdata","byModel":"Etter modell","byProvider":"Av leverandør"},"endpoint":{"title":"API-endepunkt","available":"Tilgjengelige endepunkter","cloudProxy":"Cloud Proxy","disableConfirm":"Er du sikker på at du vil deaktivere skyproxy?","baseUrl":"Base URL","apiKeyLabel":"API-nøkkel","registeredKeys":"Registrerte nøkler","chatCompletions":"Chatfullføringer","responses":"Svar","listModels":"Liste over modeller","usingCloudProxy":"Bruker Cloud Proxy","usingLocalServer":"Bruker lokal server","machineId":"Maskin-ID: {id}...","disableCloud":"Deaktiver Cloud","enableCloud":"Aktiver Cloud","modelsAcrossEndpoints":"{models} modeller på tvers av {endpoints} endepunkter","chatDesc":"Streaming og ikke-streaming chat med alle leverandører","embeddings":"Innstøpinger","embeddingsDesc":"Tekstinnbygging for søk og RAG-rørledninger","imageGeneration":"Bildegenerering","imageDesc":"Generer bilder fra tekstmeldinger","rerank":"Ranger på nytt","rerankDesc":"Ranger dokumenter på nytt etter relevans for en spørring","audioTranscription":"Lydtranskripsjon","audioTranscriptionDesc":"Transkribere lydfiler til tekst (Whisper)","textToSpeech":"Tekst til tale","textToSpeechDesc":"Konverter tekst til tale med naturlig lyd","moderations":"Moderasjoner","moderationsDesc":"Innholdsmoderering og sikkerhetsklassifisering","responsesDesc":"OpenAI Responses API for Codex and advanced agentic workflows","listModelsDesc":"List all available models across all connected providers","settingsApiDesc":"Read and modify OmniRoute configuration via API","settingsApi":"Settings API","categoryCore":"Kjerne-API-er","categoryMedia":"Media & Multi-Modal","categoryUtility":"Verktøy & Administrasjon","enableCloudTitle":"Aktiver Cloud Proxy","whatYouGet":"Hva du vil få","cloudBenefitAccess":"Få tilgang til API-en din fra hvor som helst i verden","cloudBenefitShare":"Del enkelt endepunkt med teamet ditt","cloudBenefitPorts":"Du trenger ikke å åpne porter eller konfigurere brannmur","cloudBenefitEdge":"Rask globalt kantnettverk","cloudSessionNote":"Cloud vil beholde godkjenningsøkten din i 1 dag. Hvis den ikke brukes, slettes den automatisk.","cloudUnstableNote":"Cloud er for øyeblikket ustabil med Claude Code OAuth i noen tilfeller.","cloudConnected":"Cloud Proxy tilkoblet!","connectingToCloud":"Kobler til skyen ...","verifyingConnection":"Bekrefter tilkoblingen …","connecting":"Kobler til...","verifying":"Bekrefter...","connected":"Tilkoblet!","disableCloudTitle":"Deaktiver Cloud Proxy","disableWarning":"Alle autentiseringsøkter vil bli slettet fra skyen.","syncingData":"Synkroniserer siste data ...","disablingCloud":"Deaktiverer skyen …","syncing":"Synkroniserer...","disabling":"Deaktiverer...","cloudConnectedVerified":"Cloud Proxy tilkoblet og bekreftet!","connectedVerificationPending":"Tilkoblet — bekreftelse venter","connectedVerificationPendingWithError":"Tilkoblet — bekreftelse venter: {error}","cloudDisabledSuccess":"Cloud deaktivert","syncedSuccess":"Synkronisert vellykket","failedDisable":"Kunne ikke deaktivere skyen","failedEnable":"Kunne ikke aktivere skyen","cloudRequestTimeout":"Tidsavbrudd for skyforespørsel","cloudRequestFailed":"Skyforespørsel mislyktes","cloudWorkerUnreachable":"Kunne ikke nå skyarbeideren. Sørg for at skytjenesten kjører (npm kjør dev in /cloud).","connectionFailed":"Tilkobling mislyktes","syncFailed":"Kunne ikke synkronisere skydata","providerModelsTitle":"{provider} — Modeller","noModelsForProvider":"Ingen modeller tilgjengelig for denne leverandøren.","chat":"Chat","embedding":"Innebygging","image":"Bilde","custom":"tilpasset","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Integration Surface","sectionDescription":"OpenAI-compatible APIs and operational protocol endpoints","tabApis":"OpenAI-compatible APIs","tabProtocols":"Protocols","tabsAria":"Endpoint sections","protocolsTitle":"Protocols","protocolsDescription":"MCP and A2A are first-class endpoints with dedicated observability and controls.","mcpCardTitle":"MCP Server","mcpCardDescription":"Model Context Protocol over stdio","a2aCardTitle":"A2A Server","a2aCardDescription":"Agent2Agent JSON-RPC endpoint","protocolToolsLabel":"Tools","protocolTasksLabel":"Tasks","protocolActiveStreamsLabel":"Active streams","protocolLastActivity":"Last activity","quickStart":"Quick Start","openMcpDashboard":"Open MCP management","openA2aDashboard":"Open A2A management","mcpQuickStartTitle":"MCP Quick Start","mcpQuickStartStep1":"Run the MCP server via `omniroute --mcp`.","mcpQuickStartStep2":"Configure your MCP client to connect over stdio transport.","mcpQuickStartStep3":"Påkall verktøy som `omniroute_get_health` og `omniroute_list_combos`.","a2aQuickStartTitle":"A2A hurtigstart","a2aQuickStartStep1":"Oppdag agentkortet på `/.well-known/agent.json`.","a2aQuickStartStep2":"Send JSON-RPC-forespørsler til `POST /a2a` ved å bruke `message/send` eller `message/stream`.","a2aQuickStartStep3":"Spor og kontroller oppgaver ved å bruke `tasks/get` og `tasks/cancel`.","completionsLegacy":"Completions (Legacy)","completionsLegacyDesc":"Legacy OpenAI text completions — accepts both prompt string and messages array format","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":"Laster inn MCP-dashbordet ...","activate":"aktivere","deactivate":"deaktivere","confirmSwitchCombo":"Bekreft {action} kombinasjonen \\"{combo}\\"?","switchComboFailed":"Kunne ikke bytte kombinasjonstilstand.","switchComboSuccess":"Combo \\"{combo}\\" updated.","confirmApplyProfile":"Apply resilience profile \\"{profile}\\"?","applyProfileFailed":"Failed to apply resilience profile.","applyProfileSuccess":"Profile \\"{profile}\\" applied.","confirmResetBreakers":"Reset all circuit breakers?","resetBreakersFailed":"Failed to reset circuit breakers.","resetBreakersSuccess":"Circuit breakers reset.","processStatus":"Process status","online":"Online","offline":"Offline","pid":"PID","sessionUptime":"Session uptime","lastHeartbeat":"Last heartbeat","activity24h":"Activity (24h)","totalCalls":"Total calls","successRate":"Success rate","avgLatency":"Avg latency","topTools":"Top tools","noToolCalls24h":"No tool calls in the last 24 hours.","runtimeDetails":"Runtime details","transport":"Transport","scopesEnforced":"Scopes enforced","yes":"yes","no":"no","lastCall":"Last call","heartbeatPath":"Heartbeat path","operationalControls":"Operational controls","switchCombo":"Switch combo","inactive":"inactive","active":"active","activateCombo":"Activate combo","deactivateCombo":"Deactivate combo","applyResilienceProfile":"Apply resilience profile","profileAggressive":"aggressive","profileBalanced":"balanced","profileConservative":"conservative","applyProfile":"Apply profile","resetCircuitBreakers":"Reset circuit breakers","resetCircuitBreakersHelp":"Clears current breaker state and failure counters for providers.","resetAllBreakers":"Reset all breakers","toolsAndScopes":"Tools and scopes","tableTool":"Tool","tableScopes":"Scopes","tablePhase":"Phase","tableAudit":"Audit","auditLog":"Audit log","auditSummary":"Calls: {total} | page {page} of {totalPages}","allTools":"All tools","allResults":"All results","success":"Success","failure":"Failure","apiKeyIdPlaceholder":"apiKeyId","loadingAuditEntries":"Loading audit entries...","noAuditEntriesForFilters":"No audit entries found for current filters.","tableTimestamp":"Timestamp","tableDuration":"Duration","tableResult":"Result","tableApiKey":"API key","failed":"failed","previous":"Previous","next":"Next"},"a2aDashboard":{"loading":"Loading A2A dashboard...","confirmCancelTask":"Cancel task {taskId}?","cancelTaskFailed":"Failed to cancel task.","cancelTaskSuccess":"Task {taskId} cancelled.","smokeSendFailed":"message/send smoke test failed.","smokeSendSuccessWithTask":"message/send ok (task {taskId}).","smokeSendSuccess":"message/send ok.","smokeStreamFailed":"message/stream smoke test failed.","smokeStreamSuccessWithTask":"message/stream ok (task {taskId}{stateSuffix}).","smokeStreamNoTaskId":"message/stream finished without task id.","health":"Health","ok":"ok","totalTasks":"Total tasks","activeStreams":"Active streams","lastTask":"Last task","taskStateOverview":"Task state overview","state":{"submitted":"submitted","working":"working","completed":"completed","failed":"failed","cancelled":"cancelled"},"agentCard":"Agent card","version":"Version","url":"URL","capabilities":"Capabilities","agentCardNotAvailable":"Agent card not available.","quickValidation":"Quick validation","quickValidationDescription":"Executes smoke calls through the live `/a2a` endpoint.","runMessageSend":"Run message/send","runMessageStream":"Run message/stream","taskManagement":"Task management","taskSummary":"{total} tasks | page {page} of {totalPages}","allStates":"all","allSkills":"all skills","loadingTasks":"Loading tasks...","noTasksForFilters":"No tasks found for current filters.","tableTask":"Task","tableSkill":"Skill","tableState":"State","tableUpdated":"Updated","tableActions":"Actions","view":"View","cancel":"Cancel","previous":"Previous","next":"Next","taskDetail":"Task detail","close":"Close","metadata":"Metadata","events":"Events","artifacts":"Artifacts"},"health":{"title":"Systemhelse","description":"Sanntidsovervåking av din OmniRoute-forekomst","healthy":"Sunn","degraded":"Degradert","down":"Ned","uptime":"Oppetid","memory":"Minne","memoryRss":"Minne (RSS)","heap":"Heap","cpu":"CPU","database":"Database","version":"Versjon","lastCheck":"Siste sjekk","providerHealth":"Leverandørhelse","systemMetrics":"Systemmålinger","tokenHealth":"Token Health","refreshAll":"Oppdater alle","checkNow":"Sjekk nå","loadingHealth":"Laster inn helsedata ...","failedToLoad":"Kunne ikke laste inn helsedata: {error}","retry":"Prøv på nytt","allOperational":"Alle systemer i drift","issuesDetected":"Systemproblemer oppdaget","updatedAt":"Oppdatert {time}","latency":"Latens","latencyP50":"p50","latencyP95":"s95","latencyP99":"s99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Totalt antall forespørsler","noDataYet":"Ingen data ennå","promptCache":"Spør Cache","entries":"Oppføringer","hitRate":"Trefffrekvens","hitsMisses":"Treffer / savner","signatureCache":"Signaturbuffer","signatureDefaults":"Standarder","signatureTool":"Verktøy","signatureFamily":"Familie","signatureSession":"Sesjon","recovering":"Gjenoppretter","noCBData":"Ingen strømbryterdata tilgjengelig. Kom med noen forespørsler først.","providerHealthStatusAria":"Leverandørens helsestatus","issuesLabel":"Problemer oppdaget","operational":"Operasjonell","providers":"Leverandører","healthyCount":"{count} sunn","nodeVersion":"Node {version}","failures":"{count} feil","failuresPlural":"{count} feil","lastFailure":"Sist","rateLimitStatus":"Takstgrensestatus","activeLimiters":"{count} aktiv begrenser","activeLimitersPlural":"{count} aktive begrensere","queued":"I kø","queuedCount":"{count} i kø","running":"løping","runningCount":"{count} kjører","ok":"OK","activeLockouts":"Aktive lockouter","resetConfirm":"Tilbakestille alle effektbrytere til sunn tilstand? Dette vil slette alle feiltellinger og gjenopprette alle leverandører til driftsstatus.","resetAllTitle":"Tilbakestill alle effektbrytere til sunn tilstand","resetting":"Tilbakestiller...","resetAll":"Tilbakestill alle","until":"Inntil {time}","activeProviders":"{count} active","monitoredProviders":"{count} monitored","configuredProvidersLabel":"Konfigurert i dashbordet","configuredProvidersHint":"Leverandører med legitimasjon lagret i /dashboard/leverandører, uavhengig av kjøretidstilstand.","activeProvidersHint":"Konfigurerte leverandører er for øyeblikket aktivert for rutingforespørsler.","monitoredProvidersHint":"Leverandører spores for øyeblikket av strømbryterhelsemonitorer."},"limits":{"title":"Grenser og kvoter","rateLimit":"Satsgrense","remaining":"Gjenværende","requestsPerMinute":"Forespørsler/min","tokensPerMinute":"Poletter/min","dailyLimit":"Daglig grense"},"logs":{"title":"Logger","requestLogs":"Be om logger","proxyLogs":"Proxy-logger","auditLog":"Revisjonslogg","console":"Konsoll","auditLogDesc":"Administrative handlinger og sikkerhetshendelser","loading":"Laster inn...","refresh":"Oppdater","filterByAction":"Filtrer etter handling...","filterByActor":"Filtrer etter skuespiller...","filterEntriesAria":"Filtrer revisjonsloggoppføringer","filterByActionTypeAria":"Filtrer etter handlingstype","filterByActorAria":"Filtrer etter skuespiller","refreshAuditLogAria":"Oppdater revisjonslogg","tableAria":"Revisjonsloggoppføringer","failedFetchAuditLog":"Kunne ikke hente revisjonsloggen","showing":"Viser {count} oppføringer (offset {offset})","search":"Søk","timestamp":"Tidsstempel","action":"Handling","actor":"Skuespiller","target":"Mål","details":"Detaljer","ipAddress":"IP-adresse","notAvailable":"—","noEntries":"Ingen revisjonsloggoppføringer funnet","previous":"Forrige","next":"Neste"},"onboarding":{"welcome":"Velkommen","security":"Sikkerhet","test":"Test","ready":"Klar!","setPassword":"Angi passord","addProvider":"Legg til din første leverandør","getStarted":"Kom i gang","skip":"Hopp over","skipWizard":"Hopp over veiviseren helt","skipPassword":"Hopp over passordoppsett","skipAndContinue":"Hopp over og fortsett","passwordLabel":"Passord","confirmPassword":"Bekreft passord","enterPassword":"Skriv inn passord","confirmPasswordPlaceholder":"Bekreft passord","passwordsMismatch":"Passord stemmer ikke","setupComplete":"Oppsettet er fullført!","goToDashboard":"Gå til Dashboard →","welcomeDesc":"OmniRoute er din lokale AI API-proxy. Den ruter forespørsler til flere AI-leverandører med lastbalansering, failover og brukssporing.","multiProvider":"Multileverandør","usageTracking":"Brukssporing","apiKeyMgmt":"API Key Mgmt","securityDesc":"Angi et passord for å beskytte dashbordet ditt, eller hopp over nå.","providerDesc":"Koble til din første AI-leverandør. Du kan legge til flere senere.","apiKeyRequired":"API-nøkkel (påkrevd)","customUrlOptional":"Egendefinert URL (valgfritt)","testDesc":"La oss kontrollere at leverandørtilkoblingen din fungerer.","runTest":"Kjør tilkoblingstest","testingConnection":"Tester tilkoblingen...","connectionSuccessful":"Tilkoblingen var vellykket! Leverandøren din er klar.","noProviderFound":"Ingen leverandør funnet. Du kan legge til en fra dashbordet senere.","testFailed":"Testen mislyktes, men du kan konfigurere dette senere.","couldNotTest":"Kunne ikke teste akkurat nå. Du kan teste fra dashbordet.","doneDesc":"Du er klar! OmniRoute-forekomsten din er konfigurert og klar til å fullføre AI-forespørsler.","yourEndpoint":"Ditt endepunkt:","continue":"Fortsett","retry":"Prøv på nytt","failedSetPassword":"Kunne ikke angi passord. Prøv igjen.","failedAddProvider":"Kunne ikke legge til leverandør. Prøv igjen.","connectionError":"Tilkoblingsfeil. Vennligst prøv igjen.","provider":"Leverandør"},"providers":{"title":"Leverandører","addProvider":"Legg til leverandør","editProvider":"Rediger leverandør","deleteProvider":"Slett leverandør","noProviders":"Ingen leverandører er konfigurert","modelAvailability":"Modelltilgjengelighet","accounts":"Kontoer","newAccount":"Ny konto","deleteConfirm":"Er du sikker på at du vil slette denne leverandøren?","testing":"Tester...","testConnection":"Test tilkobling","testSuccess":"Tilkoblingen var vellykket","testFailed":"Tilkobling mislyktes","available":"Tilgjengelig","cooldown":"Nedkjøling","unavailable":"Utilgjengelig","unknown":"Ukjent","oauthLabel":"OAuth","compatibleLabel":"Kompatibel","chat":"Chat","responses":"Svar","messages":"Meldinger","oauthProviders":"OAuth-leverandører","freeProviders":"Gratis leverandører","apiKeyProviders":"API-nøkkelleverandører","compatibleProviders":"API-nøkkel-kompatible leverandører","testAll":"Test alle","testAllOAuth":"Test alle OAuth-tilkoblinger","testAllFree":"Test alle gratis tilkoblinger","testAllApiKey":"Test alle API-nøkkeltilkoblinger","testAllCompatible":"Test alle kompatible tilkoblinger","connected":"{count} Tilkoblet","errorCount":"{count} Feil ({code})","errorCountNoCode":"{count} Feil","noConnections":"Ingen tilkoblinger","disabled":"Deaktivert","enableProvider":"Aktiver leverandør","disableProvider":"Deaktiver leverandør","testResults":"Testresultater","noCompatibleYet":"Ingen kompatible leverandører lagt til ennå","compatibleHint":"Bruk knappene ovenfor for å legge til OpenAI eller Anthropic-kompatible endepunkter","addOpenAICompatible":"Legg til OpenAI-kompatibel","addAnthropicCompatible":"Legg til Antropisk kompatibel","addNewProvider":"Legg til ny leverandør","backToProviders":"Tilbake til Leverandører","configureNewProvider":"Konfigurer en ny AI-leverandør som skal brukes med applikasjonene dine.","providerLabel":"Leverandør","selectProvider":"Velg en leverandør","selectedProvider":"Valgt leverandør","authMethod":"Autentiseringsmetode","apiKeyLabel":"API-nøkkel","apiKeyRequired":"API-nøkkel kreves","selectProviderRequired":"Velg en leverandør","enterApiKey":"Skriv inn API-nøkkelen din","apiKeySecure":"API-nøkkelen din vil bli kryptert og lagret sikkert.","oauth2Connect":"Koble til OAuth2","oauth2Label":"OAuth2","oauth2Desc":"Koble til kontoen din med OAuth2-autentisering.","displayName":"Vist navn","displayNamePlaceholder":"f.eks. Production API, Dev Environment","displayNameHint":"Valgfritt. Et vennlig navn for å identifisere denne konfigurasjonen.","active":"Aktiv","activeDescription":"Aktiver denne leverandøren for bruk i appene dine","cancel":"Avbryt","createProvider":"Opprett leverandør","failedCreate":"Kunne ikke opprette leverandør","errorOccurred":"Det oppsto en feil. Vennligst prøv igjen.","modelStatus":"Modellstatus","allModelsOperational":"Alle modeller i drift","modelsWithIssues":"{count} modell(er) med problemer","allModelsNormal":"Alle modellene reagerer normalt.","cooldownCleared":"Nedkjøling ryddet for {model}","failedClearCooldown":"Kunne ikke fjerne nedkjøling","loadingAvailability":"Laster modelltilgjengelighet ...","clearCooldown":"Klart","clearing":"Rydder...","until":"Inntil {time}","providerTestFailed":"Providertesten mislyktes","modeTest":"{mode} Test","passedCount":"{count} bestått","failedCount":"{count} mislyktes","testedCount":"{count} testet","millisecondsAbbr":"{value}ms","okShort":"OK","errorShort":"FEIL","noActiveConnectionsInGroup":"Fant ingen aktive tilkoblinger for denne gruppen.","allTestsPassed":"Alle {total} tester bestått","testSummary":"{passed}/{total} bestått, {failed} mislyktes","nameLabel":"Navn","prefixLabel":"Prefiks","baseUrlLabel":"Base URL","apiTypeLabel":"API-type","prefixHint":"Obligatorisk. Unikt prefiks for modellnavn.","nameHint":"Obligatorisk. En vennlig etikett for denne noden.","baseUrlHint":"Obligatorisk. Leverandørens API-base-URL.","anthropicPrefixPlaceholder":"ac-prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Bekreft tilkoblingen","validating":"Validerer...","connectionValid":"Tilkoblingen er gyldig!","connectionFailed":"Tilkobling mislyktes. Sjekk URL og nøkkel.","testKeyLabel":"Test API-nøkkel","testKeyPlaceholder":"sk-... (kun for validering)","providerNotFound":"Finner ikke leverandør","deleteConnectionConfirm":"Vil du slette denne tilkoblingen?","failedSetAlias":"Kunne ikke angi alias","failedSaveConnection":"Kunne ikke lagre tilkoblingen","failedSaveConnectionRetry":"Kunne ikke lagre tilkoblingen. Vennligst prøv igjen.","failedRetestConnection":"Kunne ikke teste tilkoblingen på nytt","deleteCompatibleNodeConfirm":"Vil du slette denne {type}-kompatible noden?","anthropicCompatibleDetails":"Antropisk kompatible detaljer","openaiCompatibleDetails":"OpenAI-kompatible detaljer","messagesApi":"Messages API","responsesApi":"Responses API","chatCompletions":"Chatfullføringer","importingModels":"Importerer...","importFromModels":"Importer fra /models","clearAllModels":"Fjern alle modeller","clearAllModelsConfirm":"Er du sikker på at du vil fjerne alle modellene for denne leverandøren? Dette kan ikke angres.","clearAllModelsSuccess":"Alle modeller ryddet","clearAllModelsFailed":"Kunne ikke slette modeller","addConnectionToImport":"Legg til en tilkobling for å aktivere import.","noModelsConfigured":"Ingen modeller er konfigurert","connectionCount":"{count} tilkobling(er)","fetchingModels":"Henter tilgjengelige modeller...","failedFetchModels":"Kunne ikke hente modellene","noModelsFound":"Ingen modeller funnet","importFailed":"Import mislyktes","noNewModelsAdded":"Ingen nye modeller ble lagt til.","adding":"Legger til...","importingModelsTitle":"Importere modeller","copyModel":"Kopier modell","removeModel":"Fjern modellen","rateLimitProtected":"Beskyttet","rateLimitUnprotected":"Ubeskyttet","enableRateLimitProtection":"Klikk for å aktivere satsgrensebeskyttelse","disableRateLimitProtection":"Klikk for å deaktivere satsgrensebeskyttelse","productionKey":"Produksjonsnøkkel","enterNewApiKey":"Skriv inn ny API-nøkkel","optional":"Valgfritt","anthropicCompatibleName":"Antropisk kompatibel","openaiCompatibleName":"OpenAI-kompatibel","failedImportModels":"Kunne ikke importere modeller","noModelsReturnedFromEndpoint":"Ingen modeller returnert fra /models endepunkt.","importingModelsProgress":"Importerer {current} av {total} modeller ...","foundModelsStartingImport":"Fant {count} modeller. Starter import...","importingModelById":"Importerer {modelId}...","importSuccessCount":"Vellykket importert {count, plural, one {# model} other {# models}}!","noNewModelsAddedExisting":"Ingen nye modeller ble lagt til (alle finnes allerede).","importDoneCount":"✓ Ferdig! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Det oppstod en uventet feil","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"meldinger","responsesPath":"svar","chatCompletionsPath":"chat/fullføringer","add":"Legg til","edit":"Rediger","delete":"Slett","anthropic":"Antropisk","openai":"OpenAI","singleConnectionPerCompatible":"Bare én tilkobling er tillatt per kompatibel node. Legg til en annen node hvis du trenger flere tilkoblinger.","connections":"Tilkoblinger","providerProxyTitleConfigured":"Leverandørproxy: {host}","configured":"konfigurert","providerProxyConfigureHint":"Konfigurer proxy for alle tilkoblinger til denne leverandøren","providerProxy":"Leverandørfullmakt","noConnectionsYet":"Ingen tilkoblinger ennå","addFirstConnectionHint":"Legg til din første tilkobling for å komme i gang","addConnection":"Legg til tilkobling","availableModels":"Tilgjengelige modeller","pageAutoRefresh":"Siden oppdateres automatisk...","statusDisabled":"deaktivert","statusConnected":"tilkoblet","statusRuntimeIssue":"kjøretidsproblem","statusAuthFailed":"auth mislyktes","statusRateLimited":"sats begrenset","statusNetworkIssue":"nettverksproblem","statusTestUnsupported":"test støttes ikke","statusUnavailable":"utilgjengelig","statusFailed":"mislyktes","statusError":"feil","oauthAccount":"OAuth-konto","errorTypeRuntime":"Lokal kjøretid","errorTypeUpstreamAuth":"Oppstrøms auth","errorTypeMissingCredential":"Mangler legitimasjon","errorTypeRefreshFailed":"Oppdatering mislyktes","errorTypeTokenExpired":"Token utløpt","errorTypeRateLimited":"Begrenset pris","errorTypeUpstreamUnavailable":"Oppstrøms utilgjengelig","errorTypeNetworkError":"Nettverksfeil","errorTypeTestUnsupported":"Testen støttes ikke","errorTypeUpstreamError":"Oppstrøms feil","proxySourceGlobal":"Globalt","proxySourceProvider":"Leverandør","proxySourceKey":"Nøkkel","proxyConfiguredBySource":"Fullmakt ({source}): {host}","autoPriority":"Auto: {priority}","proxy":"Fullmakt","retestAuthentication":"Test autentisering på nytt","retest":"Test på nytt","disableConnection":"Deaktiver tilkobling","enableConnection":"Aktiver tilkobling","reauthenticateConnection":"Autentiser denne tilkoblingen på nytt","proxyConfig":"Proxy konfig","aliasExistsAlert":"Aliaset \\"{alias}\\" eksisterer allerede. Bruk en annen modell eller rediger eksisterende alias.","openRouterAnyModelHint":"OpenRouter støtter alle modeller. Legg til modeller og lag aliaser for rask tilgang.","modelIdFromOpenRouter":"Modell-ID (fra OpenRouter)","openRouterModelPlaceholder":"antropisk/claude-3-opus","customModels":"Egendefinerte modeller","customModelsHint":"Legg til modell-ID-er som ikke er i standardlisten. Disse vil være tilgjengelige for ruting.","modelId":"Modell-ID","customModelPlaceholder":"f.eks. gpt-4.5-turbo","loading":"Laster inn...","removeCustomModel":"Fjern tilpasset modell","noCustomModels":"Ingen tilpassede modeller lagt til ennå.","allSuggestedAliasesExist":"Alle foreslåtte aliaser finnes allerede. Velg en annen modell eller fjern motstridende aliaser.","failedSaveCustomModel":"Kunne ikke lagre egendefinert modell","modelAddedSuccess":"Modell {modelId} ble lagt til","failedAddModelTryAgain":"Kunne ikke legge til modell. Vennligst prøv igjen.","failedSaveImportedModel":"Kunne ikke lagre importert modell til egendefinert database","failedImportModelsTryAgain":"Kunne ikke importere modeller. Vennligst prøv igjen.","failedRemoveModelFromDatabase":"Kunne ikke fjerne modellen fra databasen","modelRemovedSuccess":"Modellen ble fjernet","failedDeleteModelTryAgain":"Kunne ikke slette modellen. Vennligst prøv igjen.","compatibleModelsDescription":"Legg til {type}-kompatible modeller manuelt eller importer dem fra /models-endepunktet.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"API-nøkkelvalidering mislyktes. Sjekk nøkkelen din og prøv igjen.","addProviderApiKeyTitle":"Legg til {provider} API-nøkkel","checking":"Sjekker...","check":"Sjekk","valid":"Gyldig","invalid":"Ugyldig","creating":"Oppretter...","validationChecksAnthropicCompatible":"Valideringssjekker {provider} ved å bekrefte API-nøkkelen.","validationChecksOpenAiCompatible":"Valideringssjekker {provider} via /models på din basis-URL.","priorityLabel":"Prioritet","saving":"Lagrer...","save":"Lagre","editConnection":"Rediger tilkobling","accountName":"Kontonavn","email":"E-post","healthCheckMinutes":"Helsesjekk (min)","healthCheckHint":"Proaktivt token-oppdateringsintervall. 0 = deaktivert.","groupLabel":"Environment","groupPlaceholder":"e.g. eKaizen, Personal","failedTestConnection":"Kunne ikke teste tilkoblingen","failed":"Mislyktes","leaveBlankKeepCurrentApiKey":"La stå tomt for å beholde gjeldende API-nøkkel.","editCompatibleTitle":"Rediger {type} Kompatibel","compatibleBaseUrlHint":"Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.","apiKeyForCheck":"API-nøkkel (for sjekk)","compatibleProdPlaceholder":"{type} Kompatibel (Prod)","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":"Oppdater modelllisten automatisk hver 24. time (kan konfigureres via MODEL_SYNC_INTERVAL_HOURS)","autoSyncEnabled":"Automatisk synkronisering aktivert – modellene oppdateres med jevne mellomrom","autoSyncDisabled":"Automatisk synkronisering er deaktivert","autoSyncToggleFailed":"Kunne ikke slå på automatisk synkronisering","allModelsAlreadyImported":"Alle modeller er allerede importert","noNewModelsToImport":"Ingen nye modeller å importere — alle modeller finnes allerede i registeret eller listen over egendefinerte modeller","skippingExistingModels":"Hopper over {count} eksisterende modeller"},"settings":{"title":"Innstillinger","general":"Generelt","security":"Sikkerhet","appearance":"Utseende","routing":"Ruting","cache":"Cache","resilience":"Spenst","systemPrompt":"Systemmelding","thinkingBudget":"Tenker budsjett","proxy":"Fullmakt","pricing":"Prissetting","storage":"Oppbevaring","policies":"Retningslinjer","ipFilter":"IP-filter","comboDefaults":"Combo standarder","fallbackChains":"Reservekjeder","changePassword":"Endre passord","enablePassword":"Aktiver passord","darkMode":"Mørk modus","lightMode":"Lysmodus","systemTheme":"Systemtema","enableCache":"Aktiver cache","cacheTTL":"Cache TTL","maxCacheSize":"Maks cachestørrelse","clearCache":"Tøm buffer","cacheHits":"Cache-treff","cacheMisses":"Cache Misses","hitRate":"Trefffrekvens","cacheEntries":"Bufferoppføringer","circuitBreaker":"Strømbryter","retryPolicy":"Retningslinjer for forsøk","maxRetries":"Max prøver på nytt","retryDelay":"Forsinkelse på nytt","timeoutMs":"Tidsavbrudd (ms)","enableSystemPrompt":"Aktiver systemforespørsel","systemPromptText":"Systemmeldingstekst","enableThinking":"Aktiver tenkning","maxThinkingTokens":"Max Thinking Tokens","enableProxy":"Aktiver proxy","proxyUrl":"Proxy URL","pricingRates":"Prisformat","currentPricing":"Gjeldende prisoversikt","loadingPricing":"Laster inn prisdata ...","noPricing":"Ingen prisdata tilgjengelig","input":"Inndata","output":"Utgang","cached":"Bufret","reasoning":"Resonnement","cacheCreation":"Oppretting av cache","customPricing":"Egendefinerte priser","databaseSize":"Databasestørrelse","backupDb":"Sikkerhetskopier database","restoreDb":"Gjenopprett database","exportData":"Eksporter data","importData":"Importer data","clearData":"Fjern alle data","clearDataConfirm":"Dette vil slette alle data permanent. Er du sikker?","enableRequestLogs":"Aktiver forespørselslogger","logRetention":"Loggoppbevaring","ipWhitelist":"IP-hviteliste","ipBlacklist":"IP svarteliste","addIP":"Legg til IP","savedSuccessfully":"Innstillingene er lagret","ai":"AI","advanced":"Avansert","localMode":"Lokal modus — Alle data som er lagret på maskinen din","settingsSectionsAria":"Innstillinger-seksjoner","switchThemes":"Bytt mellom lyse og mørke temaer","themeSelectionAria":"Temavalg","themeLight":"Lys","themeDark":"Mørkt","themeSystem":"System","hideHealthLogs":"Skjul helsesjekklogger","hideHealthLogsDesc":"Når PÅ, undertrykk [HealthCheck]-meldinger i serverkonsollen","themeAccent":"Temafarge","themeAccentDesc":"Velg en forhåndsinnstilt farge eller lag ditt eget tema med én farge","themeCreate":"Opprett tema","themeCustom":"Egendefinert tema","themeBlue":"Blå","themeRed":"Rød","themeGreen":"Grønn","themeViolet":"Fiolett","themeOrange":"Oransje","themeCyan":"Cyan","promptCache":"Spør Cache","flushCache":"Skyll cache","flushing":"Skyller …","size":"Størrelse","hits":"Treffer","evictions":"Utkastelser","loadingCacheStats":"Laster cachestatistikk …","globalProxy":"Global proxy","globalProxyDesc":"Konfigurer en global utgående proxy for alle API-kall. Individuelle leverandører, kombinasjoner og nøkler kan overstyre dette.","noGlobalProxy":"Ingen global proxy er konfigurert","globalLabel":"Globalt","configure":"Konfigurer","globalSystemPrompt":"Global systemforespørsel","systemPromptDesc":"Injisert i alle forespørsler på proxy-nivå","saved":"Lagret","systemPromptPlaceholder":"Skriv inn systemforespørselen for å injisere i alle forespørsler...","systemPromptHint":"Denne ledeteksten vises foran systemmeldingen for hver forespørsel. Bruk for globale instruksjoner, sikkerhetsretningslinjer eller regler for responsformatering.","chars":"{count} tegn","thinkingBudgetTitle":"Tenker budsjett","thinkingBudgetDesc":"Kontroller bruk av AI-resonnementstoken på tvers av alle forespørsler","passthrough":"Gjennomgang","passthroughDesc":"Ingen endringer – klienten kontrollerer tenkebudsjettet","auto":"Auto","autoDesc":"Fjern all tenkekonfigurasjon – la leverandøren bestemme","custom":"Egendefinert","customDesc":"Angi et fast tokenbudsjett for alle forespørsler","adaptive":"Adaptiv","adaptiveDesc":"Skaler budsjett basert på forespørselskompleksitet","effortNone":"Ingen (0 tokens)","effortLow":"Lav (1K tokens)","effortMedium":"Medium (10 000 tokens)","effortHigh":"Høy (128 000 tokens)","tokenBudget":"Tokenbudsjett","tokens":"tokens","baseEffortLevel":"Grunninnsatsnivå","adaptiveHint":"Adaptiv modus skalerer fra dette basisnivået basert på antall meldinger, verktøybruk og forespørselslengde.","requireLogin":"Krev innlogging","requireLoginDesc":"Når PÅ, krever dashbordet passord. Når AV, tilgang uten pålogging.","currentPassword":"Gjeldende passord","enterCurrentPassword":"Skriv inn gjeldende passord","newPassword":"Nytt passord","enterNewPassword":"Skriv inn nytt passord","confirmPassword":"Bekreft nytt passord","confirmPasswordPlaceholder":"Bekreft nytt passord","passwordsNoMatch":"Passord stemmer ikke","passwordUpdated":"Passordet ble oppdatert","failedUpdatePassword":"Kunne ikke oppdatere passordet","errorOccurred":"Det oppsto en feil","updatePassword":"Oppdater passord","setPassword":"Angi passord","apiEndpointProtection":"API-endepunktbeskyttelse","requireAuthModels":"Krev API-nøkkel for /modeller","requireAuthModelsDesc":"Når PÅ, returnerer /v1/models-endepunktet 404 for uautentiserte forespørsler. Forhindrer modelloppdagelse av uautoriserte brukere.","blockedProviders":"Blokkerte leverandører","blockedProvidersDesc":"Skjul spesifikke leverandører fra /v1/models-svaret. Blokkerte leverandører vil ikke vises i modelloppføringer.","providersBlocked":"{count} leverandør(er) blokkert fra /modeller","blockProviderTitle":"Blokkér {provider}","unblockProviderTitle":"Fjern blokkering av {provider}","routingStrategy":"Rutingstrategi","fillFirst":"Fyll først","fillFirstDesc":"Bruk kontoer i prioritert rekkefølge","roundRobin":"Round Robin","roundRobinDesc":"Bla gjennom alle kontoer","p2c":"P2C","p2cDesc":"Velg 2 tilfeldig, bruk den sunnere","random":"Tilfeldig","randomDesc":"Tilfeldig konto hver forespørsel","leastUsed":"Minst brukt","leastUsedDesc":"Velg minst nylig brukte konto","costOpt":"Kostnad Opt","costOptDesc":"Foretrekker den billigste tilgjengelige kontoen","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each account once before reshuffling","stickyLimit":"Sticky Limit","stickyLimitDesc":"Anrop per konto før bytte","modelAliases":"Modellaliaser","modelAliasesTitle":"Modellaliaser","modelAliasesDesc":"Jokertegnmønstre for å tilordne modellnavn på nytt • Bruk * og ?","addCustomAlias":"Legg til Tilpasset Alias","deprecatedModelId":"Utdatert modell-ID","newModelId":"Ny modell-ID","customAliases":"Tilpassede Aliaser","builtInAliases":"Innebygde Aliaser","backgroundDegradationTitle":"Bakgrunnsoppgave Degradering","backgroundDegradationDesc":"Oppdager automatisk bakgrunnsoppgaver (titler, sammendrag) og ruter til billigere modeller","enableDegradation":"Aktiver Bakgrunnsdegradation","enableDegradationHint":"Når aktivert, rutes bakgrunnsoppgaver som tittelegenerering og sammendrag automatisk til billigere modeller","tasksDetected":"Oppgaver oppdaget","degradationMap":"Modelldegraderingsschema","premiumModel":"Premiummodell","cheapModel":"Billig modell","detectionPatterns":"Deteksjonsmønstre","newPattern":"f.eks. \\"generer en tittel\\"","aliasPatternPlaceholder":"claude-sonnett-*","aliasTargetPlaceholder":"claude-sonnett-4-20250514","pattern":"Mønster","targetModel":"Målmodell","add":"+ Legg til","session":"Sesjon","sessionDetailsAria":"Sesjonsdetaljer","status":"Status","authenticated":"Autentisert","guest":"Gjest","loginTime":"Påloggingstid","sessionAge":"Sesjonsalder","browser":"Nettleser","clearLocalData":"Fjern lokale data","logout":"Logg ut","clearLocalDataConfirm":"Vil du slette alle lokale data? Dette vil tilbakestille innstillingene dine.","unknown":"Ukjent","systemActor":"systemet","ipAccessControl":"IP-tilgangskontroll","ipAccessControlDesc":"Blokker eller tillat bestemte IP-adresser","ipModeDisabled":"Deaktivert","ipModeBlacklist":"Svarteliste","ipModeWhitelist":"Hviteliste","ipModeWhitelistPriority":"WL prioritet","addIpAddress":"Legg til IP-adresse","ipAddressPlaceholder":"192.168.1.0/24 eller 10.0.*.*","block":"+ Blokker","allow":"+ Tillat","blocked":"Blokkert ({count})","allowed":"Tillatt ({count})","temporaryBans":"Midlertidig utestengelse ({count})","minLeft":"{min}m igjen","auditLog":"Revisjonslogg","searchAuditLogs":"Søk i revisjonslogger...","failedLoadAuditLog":"Kunne ikke laste inn revisjonsloggen","noAuditEvents":"Ingen revisjonshendelser funnet","action":"Handling","actor":"Skuespiller","details":"Detaljer","time":"Tid","fallbackChainsTitle":"Reservekjeder","fallbackChainsDesc":"Definer leverandørens reserveordre per modell","addChain":"+ Legg til kjede","modelName":"Modellnavn","modelNamePlaceholder":"claude-sonnett-4-20250514","providersCommaSeparated":"Leverandører (kommaseparert, i prioritert rekkefølge)","providersCommaSeparatedPlaceholder":"antropisk, openai, gemini","createChain":"Lag kjede","noFallbackChains":"Ingen reservekjeder","noFallbackChainsDesc":"Opprett en kjede for å definere leverandørens reserveordre for en modell.","loadingFallbackChains":"Laster inn reservekjeder...","deleteChainConfirm":"Vil du slette reservekjeden for «{model}»?","chainCreated":"Kjede opprettet for {model}","chainDeleted":"Kjede slettet for {model}","failedCreateChain":"Kunne ikke opprette kjede","failedDeleteChain":"Kunne ikke slette kjeden","deleteChain":"Slett kjede","fillModelAndProviders":"Fyll ut modellnavn og leverandører","addAtLeastOneProvider":"Legg til minst én leverandør","comboDefaultsTitle":"Combo standarder","globalComboConfig":"Global kombinasjonskonfigurasjon","defaultStrategy":"Standardstrategi","defaultStrategyDesc":"Brukes på nye kombinasjoner uten eksplisitt strategi","comboStrategyAria":"Kombinasjonsstrategi","priority":"Prioritet","weighted":"Vektet","maxRetriesLabel":"Max prøver på nytt","retryDelayLabel":"Forsinkelse på nytt (ms)","timeoutLabel":"Tidsavbrudd (ms)","healthCheck":"Helsesjekk","healthCheckDesc":"Forhåndssjekk leverandørens tilgjengelighet","trackMetrics":"Spor beregninger","trackMetricsDesc":"Registrer beregninger for forespørsel per kombinasjon","providerOverrides":"Leverandøroverstyringer","providerOverridesDesc":"Overstyr tidsavbrudd og forsøk på nytt per leverandør. Leverandørinnstillinger overstyrer globale standardinnstillinger.","providerMaxRetriesAria":"{provider} maksimalt forsøk","providerTimeoutAria":"{provider} tidsavbrudd ms","removeProviderOverrideAria":"Fjern {provider} overstyring","newProviderNamePlaceholder":"f.eks. google, åpne...","newProviderNameAria":"Nytt leverandørnavn","retries":"prøver på nytt","ms":"ms","saveComboDefaults":"Lagre Combo-standarder","maxNestingDepth":"Maks hekkedybde","concurrencyPerModel":"Samtidighet / modell","queueTimeout":"Tidsavbrudd for kø (ms)","providerProfiles":"Leverandørprofiler","providerProfilesDesc":"Separate innstillinger for motstandskraft for OAuth (øktbasert) og API Key (målt) leverandører. OAuth-leverandører har strengere terskler på grunn av lavere takstgrenser.","oauthProviders":"OAuth-leverandører","apiKeyProviders":"API-nøkkelleverandører","transientCooldown":"Forbigående nedkjøling","rateLimitCooldown":"Rate Limit Cooldown","maxBackoffLevel":"Maks Backoff Level","cbThreshold":"CB-terskel","cbResetTime":"CB-tilbakestillingstid","rateLimiting":"Satsbegrensende","rateLimitingDesc":"API-nøkkelleverandører er automatisk hastighetsbegrenset med sikre standardinnstillinger. Grenser læres fra responsoverskrifter og tilpasses over tid.","defaultSafetyNet":"Standard sikkerhetsnett","rpm":"RPM","minGap":"Min Gap","maxConcurrent":"Maks samtidig","activeLimiters":"Aktive begrensere","noActiveLimiters":"Ingen aktive ratebegrensere ennå.","reservoir":"Reservoar","running":"Løper","queued":"I kø","circuitBreakers":"Strømbrytere","breakerStateClosed":"Stengt","breakerStateOpen":"Åpne","breakerStateHalfOpen":"Halvåpent","tripped":"{count} utløste","healthy":"{count} sunn","resetAll":"Tilbakestill alle","noCircuitBreakers":"Ingen effektbrytere aktive ennå. De opprettes automatisk når forespørsler strømmer gjennom kombinasjonsrørledningen.","failures":"{count} feil(er)","policiesLocked":"Retningslinjer og låste identifikatorer","allOperational":"Alle systemer er i drift - ingen sperringer eller utløste brytere","loadingPolicies":"Laster inn retningslinjer ...","lockedIdentifiers":"Låste identifikatorer","unlockedIdentifier":"Ulåst: {identifier}","sinceDate":"siden {date}","forceUnlock":"Tving opplåsing","unlocking":"Låser opp ...","failedUnlock":"Kunne ikke låse opp","failedLoadWithStatus":"Kunne ikke laste inn: {status}","failedLoadResilience":"Kunne ikke laste inn resiliensstatus","saveFailed":"Lagring mislyktes","resetFailed":"Tilbakestilling mislyktes","loadingResilience":"Laster motstandsstatus ...","retry":"Prøv på nytt","systemStorage":"System og lagring","allDataLocal":"Alle data lagret lokalt på maskinen din","databasePath":"Databasebane","exportDatabase":"Eksporter database","exportAll":"Eksporter alle (.tar.gz)","importDatabase":"Importer database","confirmDbImport":"Bekreft databaseimport","confirmDbImportDesc":"Dette vil erstatte alle gjeldende data med innholdet fra {file}. En sikkerhetskopi opprettes automatisk før importen.","yesImport":"Ja, import","lastBackup":"Siste sikkerhetskopi","noBackupYet":"Ingen sikkerhetskopi ennå","backupNow":"Sikkerhetskopier nå","backupRestore":"Sikkerhetskopiering og gjenoppretting","viewBackups":"Se sikkerhetskopier","hide":"Skjul","backupRetentionDesc":"Database-øyeblikksbilder opprettes automatisk før gjenoppretting og hvert 15. minutt når data endres. Oppbevaring: 24 timer i timen + 30 daglige sikkerhetskopier med smart rotasjon.","loadingBackups":"Laster inn sikkerhetskopier...","noBackupsYet":"Ingen sikkerhetskopier tilgjengelig ennå. Sikkerhetskopier opprettes automatisk når data endres.","backupsAvailable":"{count} sikkerhetskopi(er) tilgjengelig","refresh":"Oppdater","confirm":"Bekrefte?","yes":"Ja","no":"Nei","restore":"Gjenopprett","invalidFileType":"Ugyldig filtype. Bare .sqlite-filer godtas.","exportFailed":"Eksporten mislyktes","exportFailedWithError":"Eksport mislyktes: {error}","fullExportFailedWithError":"Full eksport mislyktes: {error}","backupCreated":"Sikkerhetskopi opprettet: {file}","restoreSuccess":"Gjenopprettet! {connections} tilkoblinger, {nodes} noder, {combos} kombinasjoner, {apiKeys} API-nøkler.","importSuccess":"Database importert! {connections} tilkoblinger, {nodes} noder, {combos} kombinasjoner, {apiKeys} API-nøkler.","justNow":"akkurat nå","minutesAgo":"{count}m siden","hoursAgo":"{count}t siden","daysAgo":"{count}d siden","backupReasonManual":"manuell","backupReasonPreRestore":"forhåndsgjenoppretting","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Ingen endringer siden siste sikkerhetskopiering","backupFailed":"Sikkerhetskopiering mislyktes","restoreFailed":"Gjenoppretting mislyktes","importFailed":"Import mislyktes","errorDuringRestore":"Det oppstod en feil under gjenoppretting","errorDuringImport":"Det oppstod en feil under import","modelPricing":"Modellprising","modelPricingDesc":"Konfigurer kostnadssatser per modell • Alle priser i $/1M tokens","providers":"Leverandører","registry":"Register","priced":"Priset","searchProvidersModels":"Søk etter leverandører eller modeller...","showAll":"Vis alle","noProvidersMatch":"Ingen leverandører samsvarer med søket ditt.","howPricingWorks":"Hvordan prissetting fungerer","cacheWrite":"Cache-skriving","unsaved":"ikke lagret","resetDefaults":"Tilbakestill standarder","saveProvider":"Lagre leverandør","saving":"Lagrer...","model":"Modell","models":"modeller","moreProviders":"{count} flere leverandører","withPricing":"med konfigurert pris","policiesCircuitBreakers":"Retningslinjer og effektbrytere","activeIssuesDetected":"Aktive problemer oppdaget","off":"Av","resetPricingConfirm":"Vil du tilbakestille all prissetting for {provider} til standardverdiene?","pricingDescInput":"Inndata: tokens sendt til modellen","pricingDescOutput":"Utgang: tokens generert","pricingDescCached":"Bufret: gjenbrukt inndata (~50 % av inndatahastigheten)","pricingDescReasoning":"Begrunnelse: tenketegn (faller tilbake til utgang)","pricingDescCacheWrite":"Cache Write: lage cache-oppføringer (faller tilbake til Input)","pricingDescFormula":"Kostnad = (input × input_rate) + (output × output_rate) + (cached × cached_rate) per million tokens.","pricingSettingsTitle":"Prisinnstillinger","totalModels":"Totalt antall modeller","active":"Aktiv","costCalculation":"Kostnadsberegning","costCalculationDesc":"Kostnadene beregnes basert på tokenbruk og prissatser som er konfigurert for hver modell.","pricingFormat":"Prisformat","pricingFormatDesc":"Alle priser er i $/1M tokens (dollar per million tokens).","tokenTypes":"Tokentyper","inputTokenDesc":"Standard prompt-tokens","outputTokenDesc":"Fullførings-/svarbrikke","cachedTokenDesc":"Bufret inndatatoken (vanligvis 50 % av inndatahastigheten)","reasoningTokenDesc":"Spesielle resonnement-/tenkesymboler (tilbakeslag til produksjonshastighet)","cacheCreationTokenDesc":"Tokens som brukes til å lage cache-oppføringer (tilbake til inngangshastighet)","customPricingNote":"Du kan overstyre standardpriser for spesifikke modeller. Egendefinerte overstyringer prioriteres fremfor automatisk oppdagede priser.","editPricing":"Rediger priser","viewFullDetails":"Se alle detaljer","themeCoral":"Korall","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":"Avansert ruteveiledning","routingAdvancedGuideHint1":"Bruk Fill First for forutsigbar prioritet, Round Robin for rettferdighet og P2C for latensmotstandskraft.","routingAdvancedGuideHint2":"Hvis leverandørene varierer i kvalitet/kostnad, start med Cost Opt for bakgrunnsarbeid og Minst brukt for balansert slitasje.","comboDefaultsGuideTitle":"Hvordan justere kombinasjonsstandarder","comboDefaultsGuideHint1":"Hold lave gjenforsøk i flyter med lav latens; øke tidsavbruddet bare for langgenerasjonsoppgaver.","comboDefaultsGuideHint2":"Bruk leverandøroverstyringer når en leverandør trenger annen tidsavbrudd/forsøk på nytt enn globale standardinnstillinger."},"translator":{"title":"Oversetter","metaTitle":"Oversetter Lekeplass | OmniRoute","metaDescription":"Feilsøk, test og visualiser API-formatoversettelser mellom leverandører","playgroundTitle":"Oversetter Lekeplass","playground":"Lekeplass","realtime":"Oversettelsesaktivitet i sanntid","chatTester":"Chat Tester","testBench":"Testbenk","liveMonitor":"Live Monitor","modeDescriptionPlayground":"Lim inn en hvilken som helst API-forespørselstekst og se hvordan OmniRoute oversetter den mellom leverandørformater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","modeDescriptionChatTester":"Send ekte chatteforespørsler gjennom OmniRoute og inspiser hele rundturen: inndata, oversatt forespørsel, leverandørsvar og oversatt utdata.","modeDescriptionTestBench":"Kjør forhåndsdefinerte scenarier og sammenlign kompatibilitet på tvers av leverandører og modeller.","modeDescriptionLiveMonitor":"Se oversettelsesbegivenheter i sanntid mens forespørsler strømmer gjennom OmniRoute.","modeDescriptionFallback":"Feilsøk, test og visualiser hvordan OmniRoute oversetter API-forespørsler mellom leverandører.","recentTranslations":"Nylige oversettelser","noTranslations":"Ingen oversettelser ennå","source":"Kilde","target":"Mål","time":"Tid","model":"Modell","status":"Status","latency":"Latens","totalTranslations":"Totale oversettelser","successful":"Vellykket","errors":"Feil","avgLatency":"Gj.sn. ventetid","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"Live — Automatisk oppdatering","paused":"Pause","eventsAppearHint":"Oversettelseshendelser vises her når forespørsler strømmer gjennom OmniRoute. Bruk en av disse metodene for å generere hendelser:","chatTesterTab":"Chat Tester-fanen","testBenchTab":"Testbenk-fanen","externalApiCalls":"Eksterne API-anrop","ideCliIntegrations":"IDE/CLI-integrasjoner","inMemoryNote":"Merk: Hendelser lagres i minnet og tilbakestilles når serveren starter på nytt.","ok":"OK","errorShort":"FEIL","formatConverter":"Formatkonvertering","formatConverterDescription":"Lim inn eller skriv inn en JSON-forespørselstekst. Oversetteren vil automatisk oppdage kildeformatet og konvertere det til målformatet. Bruk denne til å feilsøke hvordan OmniRoute oversetter forespørsler mellom formater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).","input":"Inndata","output":"Utgang","auto":"Auto","swapFormats":"Bytt formater","translateAction":"Oversett","clear":"Klart","inputPlaceholder":"Lim inn en forespørselstekst her eller velg en mal nedenfor...","exampleTemplates":"Eksempelmaler","exampleTemplatesHint":"— Klikk for å laste","templateLoadHint":"Malen laster forespørselen i {format}-format. Endre kildeformat for å laste inn i et annet format.","compatibilityTester":"Kompatibilitetstester","compatibilityReport":"Kompatibilitetsrapport","testBenchDescription":"Kjør forhåndsdefinerte scenarier (Simple Chat, Tool Calling, etc.) for å bekrefte oversettelse og leverandørkompatibilitet. Velg et kildeformat og målleverandør, og kjør deretter alle testene for å se en kompatibilitetsprosent. Bruk denne for å finne hvilke funksjoner som fungerer på tvers av leverandører.","targetProvider":"Målleverandør","runAllTests":"Kjør alle tester","runTest":"Kjør test","reRun":"Kjør på nytt","running":"Kjører...","passed":"bestått","failed":"mislyktes","passedIconLabel":"✅ Bestått","chunks":"biter","scenarioSimpleChat":"Enkel chat","scenarioToolCalling":"Verktøyanrop","scenarioMultiTurn":"Multisving","scenarioThinking":"Tenker","scenarioSystemPrompt":"Systemmelding","scenarioStreaming":"Streaming","templateNames":{"simple-chat":"Enkel chat","tool-calling":"Verktøyanrop","multi-turn":"Multisving","thinking":"Tenker","system-prompt":"Systemmelding","streaming":"Streaming"},"templateDescriptions":{"simple-chat":"Grunnleggende tekstmelding","tool-calling":"Funksjon/verktøy-påkalling","multi-turn":"Samtale med historien","thinking":"Utvidet tenkning / resonnement","system-prompt":"Komplekse systeminstruksjoner","streaming":"SSE-strømforespørsel"},"templatePayloads":{"simpleChat":{"system":"Du er en hjelpsom assistent.","userGreeting":"Hei! Hvordan har du det i dag?"},"toolCalling":{"userWeather":"Hvordan er været i São Paulo?","toolDescription":"Få gjeldende vær for et sted","cityNameDescription":"Bynavn"},"multiTurn":{"system":"Du er en kodeassistent.","userInitial":"Skriv en funksjon for å sortere en matrise i Python.","assistantExample":"Her er en enkel sorteringsfunksjon:\\n\\n``` python\\ndef sort_array(arr):\\n return sortert(arr)\\n```","userFollowUp":"Gjør det nå sortert i synkende rekkefølge."},"thinking":{"question":"Hva er summen av de første 100 primtallene?"},"systemPrompt":{"systemInstruction":"Du er en senior programvareingeniør med spesialisering i distribuerte systemer. Svar konsist på spørsmål ved å bruke bransjens beste praksis. Gi alltid kodeeksempler når det er relevant. Formater svarene dine med markdown.","question":"Hvordan implementerer jeg et strømbrytermønster?"},"streaming":{"prompt":"Fortell meg en kort historie om en robot som lærer å male."}},"openaiCompatibleLabel":"OpenAI-kompatibel","anthropicCompatibleLabel":"Antropisk kompatibel","noTemplateForFormat":"Ingen mal for dette formatet","translationFailed":"Oversettelse mislyktes: {error}","pipelineDebugger":"Pipeline Debugger","translationPipeline":"Oversettelsesrørledning","pipelineVisualization":"Visualisering av pipeline","pipelineVisualizationHint":"Send en melding for å se hvordan forespørselen din flyter gjennom gjenkjenning → oversettelse → leverandøranrop.","chatTesterDescription":"Send meldinger som et spesifikt klientformat og inspiser hvert trinn i oversettelsespipelinen.","chatTesterFlow":"Klientforespørsel → Formatdeteksjon → OpenAI Intermediate → Leverandørformat → Svar","clickStepToInspect":"Klikk på et hvilket som helst trinn for å inspisere dataene på det stadiet.","clientFormat":"Klientformat","provider":"Leverandør","modelPlaceholder":"Velg eller skriv inn et modellnavn...","sendMessageToSeePipeline":"Send en melding for å se oversettelsespipeline","chatMessageHintPrefix":"Meldingen din vil bli formatert som en","chatMessageHintSuffix":"forespørsel, oversatt gjennom rørledningen og sendt til den valgte leverandøren.","youWithFormat":"Du ({format})","assistant":"Assistent","typeMessage":"Skriv inn en melding...","send":"Send","clientRequest":"Kundeforespørsel","clientRequestDescription":"Forespørselsteksten slik klienten din ville sende den","formatDetected":"Format oppdaget","formatDetectedDescription":"OmniRoute oppdager automatisk API-formatet fra forespørselsstrukturen","openaiIntermediate":"OpenAI Intermediate","openaiIntermediateDescription":"Alle formater normaliseres først til OpenAI-format (den universelle broen)","providerFormat":"Leverandørformat","providerFormatDescription":"OpenAI-formatet er oversatt til leverandørens opprinnelige format","providerResponse":"Leverandørens svar","providerResponseRawDescription":"Råsvaret fra leverandørens API","providerResponseSseDescription":"Den rå SSE-strømmen fra leverandørens API","unexpectedError":"Det oppstod en uventet feil","error":"Feil","errorMessage":"Feil: {message}","requestFailed":"Forespørselen mislyktes","noTextExtracted":"(Ingen tekst er trukket ut)","liveMonitorDescriptionPrefix":"Viser oversettelseshendelser når API-anrop flyter gjennom OmniRoute. Hendelser kommer fra bufferen i minnet (tilbakestilles ved omstart). Bruk","liveMonitorDescriptionSuffix":", eller eksterne API-kall for å generere hendelser."},"usage":{"title":"Bruk","loggerTab":"Logger","proxyTab":"Fullmakt","budgetManagement":"Budsjettstyring","budgetSaved":"Budsjettgrenser lagret","budgetSaveFailed":"Kunne ikke lagre budsjettet","loadingBudgetData":"Laster inn budsjettdata ...","noApiKeysTitle":"Ingen API-nøkler","noApiKeysDescription":"Legg til API-nøkler først for å sette opp budsjettgrenser.","apiKey":"API-nøkkel","todaysSpend":"Dagens forbruk","thisMonth":"Denne måneden","setLimits":"Sett grenser","dailyLimitUsd":"Daglig grense (USD)","monthlyLimitUsd":"Månedlig grense (USD)","warningThresholdPercent":"Advarselsterskel (%)","dailyLimitPlaceholder":"f.eks. 5.00","monthlyLimitPlaceholder":"f.eks. 50,00","warningThresholdPlaceholder":"80","saveLimits":"Lagre grenser","budgetOk":"Budsjett OK — {remaining} gjenstår","budgetExceeded":"Budsjettet overskredet – forespørsler kan bli blokkert","totalRequests":"Totalt antall forespørsler","noDataYet":"Ingen data ennå","latency":"Latens","latencyP50":"p50","latencyP95":"s95","latencyP99":"s99","promptCache":"Spør Cache","systemHealth":"Systemhelse","entries":"Oppføringer","activeCount":"{count} aktiv","openCircuitBreakersDetected":"Åpne strømbrytere oppdaget","hitRate":"Trefffrekvens","hitsMisses":"Treffer / savner","circuitBreakers":"Strømbrytere","lockedIPs":"Låste IP-er","lockoutsAutoRefreshHint":"Per-modell hastighetsgrense låser • Auto-refresh 10s","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} igjen","howItWorks":"Hvordan det fungerer","howItWorksSubtitle":"Finn ut hvordan evalueringer validerer LLM-svarene dine","define":"Definer","defineStepDescription":"Opprett testtilfeller med inndatameldinger og forventede utdatakriterier ved å bruke strategier som inneholder, regulært uttrykk eller eksakt samsvar.","run":"Løp","runStepDescription":"Utfør testsaker mot LLM-endepunktene dine gjennom OmniRoute. Hver sak sendes som en ekte API-forespørsel.","evaluate":"Vurder","evaluateStepDescription":"Svar sammenlignes mot forventede kriterier. Se bestått/ikke bestått for hver sak med ventetid og detaljert tilbakemelding.","evalSuites":"Evalueringssuiter","evalSuitesHint":"Klikk på en suite for å se testtilfeller, og kjør deretter for å evaluere LLM-endepunktene dine","evalsLoading":"Laster inn eval suiter...","noEvalSuitesFound":"Ingen Eval-suiter funnet","noEvalSuitesDescription":"Eval-suiter kan defineres via API eller i kode. De tester modellutdata mot forventede resultater ved å bruke strategier som inneholder, regulært uttrykk, eksakt samsvar og tilpassede funksjoner.","columnCase":"Sak","columnStatus":"Status","columnLatency":"Latens","columnDetails":"Detaljer","columnModel":"Modell","columnStrategy":"Strategi","columnExpected":"Forventet","statsSuites":"Suiter","statsTestCases":"Testtilfeller","statsModels":"Modeller","statsCoverage":"Dekning","statsStrategiesCount":"{count} strategier","evaluationStrategies":"Evalueringsstrategier","modelsUnderTest":"Modeller under test","searchSuitesPlaceholder":"Søk etter suiter...","passSuffix":"pass","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Kjør Eval","runningProgress":"Kjører {current}/{total}...","passRate":"bestått rate","summaryBreakdown":"{passed} bestått · {failed} mislyktes · {total} totalt","passedIconLabel":"✅ Bestått","failedIconLabel":"❌ Mislyktes","detailsContains":"Inneholder: \\"{term}\\"","detailsRegex":"Regex: {pattern}","detailsExpected":"Forventet: \\"{expected}\\"","noResultsYet":"Ingen resultater ennå","testCasesCount":"Testtilfeller ({count})","noTestCasesDefined":"Ingen testtilfeller definert","runEvalHint":"Klikk \\"Run Eval\\" for å utføre alle saker mot ditt LLM-endepunkt. Hver test sender en reell forespørsel gjennom OmniRoute.","notifyNoTestCases":"Ingen testtilfeller definert for denne suiten","notifyAllCasesPassed":"Alle {total} saker bestått ✅","notifySomeCasesFailed":"{passed}/{total} bestått, {failed} mislyktes","notifyEvalRunFailed":"Evalkjøring mislyktes","notifyEvalTitle":"Eval: {name}","modelEvals":"Modellvurderinger","evalsHeroDescription":"Test og valider LLM-endepunktene dine ved å kjøre forhåndsdefinerte evalueringspakker. Hver suite inneholder testtilfeller som sender reelle spørsmål gjennom OmniRoute og sammenligner svar med forventede kriterier – som hjelper deg med å oppdage regresjoner, sammenligne modeller og sikre svarkvalitet på tvers av leverandører.","qualityValidation":"Kvalitetsvalidering","modelComparison":"Modellsammenligning","regressionDetection":"Regresjonsdeteksjon","latencyBenchmarks":"Latency Benchmarks","modelLockouts":"Modellsperringer","noLockouts":"Ingen modeller er for øyeblikket låst","activeSessions":"Aktive økter","noSessions":"Ingen aktive økter","sessionsHint":"Økter vises når forespørsler flyter gjennom proxyen","sessionsTrackedHint":"Spores via forespørsel om fingeravtrykk • Auto-refresh 5s","session":"Sesjon","age":"Alder","requests":"Forespørsler","connection":"Tilkobling","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}t","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Leverandørgrenser","noProviders":"Ingen leverandører tilkoblet","connectProvidersForQuota":"Koble til leverandører med OAuth for å spore API-kvotegrenser og bruk.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(filtrert fra {count})","autoRefresh":"Automatisk oppdatering","refreshAll":"Oppdater alle","loadingQuotas":"Laster inn...","account":"Konto","modelQuotas":"Modellkvoter","lastUsed":"Sist brukt","actions":"Handlinger","refreshQuota":"Oppdater kvote","today":"I dag","tomorrow":"I morgen","dayTimeFormat":"{day}, {time}","inDuration":"i {duration}","notApplicable":"N/A","rawPlanWithValue":"Rå plan: {plan}","noPlanFromProvider":"Ingen plan fra leverandøren","noQuotaData":"Ingen kvotedata","ungrouped":"Ungrouped","viewFlat":"Flat","viewByEnvironment":"By Environment","noQuotaDataAvailable":"Ingen kvotedata tilgjengelig","noAccountsForTierFilter":"Fant ingen kontoer for nivåfilter","tierAll":"Alle","tierEnterprise":"Enterprise","tierTeam":"Team","tierBusiness":"Business","tierUltra":"Ultra","tierPro":"Pro","tierPlus":"Pluss","tierFree":"Gratis","tierUnknown":"Ukjent"},"modals":{"waitingAuth":"Venter på autorisasjon","verificationUrl":"Verifiserings-URL","yourCode":"Din kode","remoteAccess":"Fjerntilgang:","connectedSuccess":"Tilkoblet vellykket!","connectionFailed":"Tilkobling mislyktes","chooseAuthMethod":"Velg autentiseringsmetode:","awsBuilderId":"AWS Builder ID","awsIamIdentity":"AWS IAM Identity Center","googleAccount":"Google-konto","githubAccount":"GitHub-konto","importToken":"Importer token","pasteToken":"Lim inn oppdateringstoken fra Kiro IDE.","awsRegion":"AWS-regionen","autoDetecting":"Automatisk oppdager tokens...","readingFromCache":"Leser fra AWS SSO-cache","readingFromCursor":"Leser fra Cursor IDE-databasen","initializing":"Initialiserer...","pricingConfig":"Priskonfigurasjon","loadingPricing":"Laster inn prisdata ...","pricingRatesFormat":"Prisformat","noPricingData":"Ingen prisdata tilgjengelig","noModelsFound":"Ingen modeller funnet"},"loggers":{"allProviders":"Alle leverandører","allModels":"Alle modeller","allAccounts":"Alle kontoer","allApiKeys":"Alle API-nøkler","allTypes":"Alle typer","allLevels":"Alle nivåer","modelAZ":"Modell A-Z","modelZA":"Modell Z-A","loadingLogs":"Laster inn logger...","loadingProxyLogs":"Laster inn proxy-logger ...","noLogEntries":"Ingen loggoppføringer funnet","noPayloadData":"Ingen nyttelastdata tilgjengelig for denne loggoppføringen.","proxyEvent":"Proxy-hendelse","proxy":"Fullmakt","level":"Nivå","directNative":"Direkte (innfødt)","combo":"Combo","inputTokens":"jeg:","outputTokens":"O:"},"stats":{"usageOverview":"Bruksoversikt","outputTokens":"Output tokens","totalCost":"Total kostnad","usageByModel":"Bruk etter modell","usageByAccount":"Bruk etter konto","failedToLoad":"Kunne ikke laste inn bruksstatistikk.","tokenHealth":"Token Health","totalOAuth":"Totalt OAuth","healthy":"Sunn","warning":"Advarsel","errored":"Feil","lastCheck":"Siste sjekk","noData":"Ingen data","share":"Del","unableToLoad":"Kan ikke laste inn systemberegninger","product":"Produkt","resources":"Ressurser","company":"Selskapet"},"auth":{"welcome":"Velkommen","signIn":"Logg på","enterPassword":"Skriv inn passordet ditt for å fortsette","password":"Passord","unifiedProxy":"Unified AI API Proxy","unifiedAiApiProxy":"Unified AI API Proxy","unifiedAiApiProxyDesc":"Rut forespørsler til flere AI-leverandører gjennom ett enkelt endepunkt. Lastbalansering, failover og brukssporing innebygd.","passwordNotEnabled":"Passordbeskyttelse er ikke aktivert","loading":"Laster inn...","invalidPassword":"Ugyldig passord","errorOccurredRetry":"Det oppsto en feil. Vennligst prøv igjen.","configureInstance":"La oss få konfigurert OmniRoute-forekomsten","runOnboardingWizard":"Kjør onboarding-veiviseren for å sette opp passordet ditt og koble til din første AI-leverandør.","startOnboarding":"Start onboarding","secureYourInstance":"Sikre din forekomst","setPasswordDescription":"Angi et passord for å beskytte dashbordet og sikre API-endepunktene dine mot uautorisert tilgang.","configurePassword":"Konfigurer passord","continue":"Fortsett","windowWillClose":"Dette vinduet lukkes automatisk...","closeTabNow":"Du kan lukke denne fanen nå.","copyUrlManual":"Vennligst kopier URL-en fra adressefeltet og lim den inn i applikasjonen.","accessDeniedDescription":"Du har ikke tillatelse til å få tilgang til denne ressursen. Sjekk API-nøkkelen din eller kontakt administratoren.","goToDashboard":"Gå til Dashboard","featureMultiProviderTitle":"Multileverandør","featureMultiProviderDesc":"OpenAI, Anthropic, Google og mer","featureLoadBalancingTitle":"Lastbalansering","featureLoadBalancingDesc":"Distribuer forespørsler intelligent","featureUsageTrackingTitle":"Brukssporing","featureUsageTrackingDesc":"Overvåk kostnader og tokens","resetPassword":"Tilbakestill passord","resetDescription":"Velg en metode for å gjenopprette tilgangen til dashbordet","stopServer":"Stopp OmniRoute-serveren","processing":"Behandler...","pleaseWait":"Vennligst vent mens vi fullfører autorisasjonen.","authSuccess":"Godkjenning vellykket!","copyUrl":"Kopier denne nettadressen","accessDenied":"Tilgang nektet","methodCliTitle":"Metode 1: CLI-tilbakestilling","methodCliDescription":"Kjør følgende kommando på serveren der OmniRoute kjører:","methodCliHint":"Dette vil be deg om å angi et nytt passord. Serveren må stoppes først.","methodManualTitle":"Metode 2: Manuell tilbakestilling","methodManualDescription":"Slett passordet fra databasen og sett et nytt ved oppstart:","setPasswordInYour":"Sett et nytt passord i din","fileLabelSuffix":"fil:","newPasswordPlaceholder":"ditt_nye_passord","deleteSettingsFile":"Slett","orRemovePasswordHashField":"eller fjern passordHash-feltet","restartServerWithNewPassword":"Start serveren på nytt - den vil bruke det nye passordet","backToLogin":"Tilbake til pålogging","forgotPassword":"Glemt passord?","defaultPasswordHint":"Default password: 123456 (unless INITIAL_PASSWORD was set)","Authorization":"Autorisasjon","Content-Disposition":"Innhold-Disposisjon","waitingForAuthorization":"Venter på autorisasjon...","waitingForGoogleAuthorization":"Venter på Google-autorisasjon...","waitingForOpenAIAuthorization":"Venter på OpenAI-godkjenning...","waitingForAntigravityAuthorization":"Venter på antigravity-autorisasjon...","waitingForIFlowAuthorization":"Venter på iFlow-autorisasjon...","exchangingCodeForTokens":"Utveksler kode for tokens..."},"landing":{"brandName":"OmniRoute","navigateHome":"Naviger til hjem","toggleMenu":"Bytt meny","featuresLink":"Funksjoner","docsLink":"Dokumenter","github":"GitHub","versionLive":"v1.0 er nå live","oneEndpoint":"Ett endepunkt for","allProviders":"Alle AI-leverandører","heroDescription":"AI-endepunktproxy med web-dashboard - En JavaScript-port av CLIProxyAPI. Fungerer sømløst med Claude Code, OpenAI Codex, Cline, RooCode og andre CLI-verktøy.","getStarted":"Kom i gang","viewOnGithub":"Se på GitHub","powerfulFeatures":"Kraftige funksjoner","featuresSubtitle":"Alt du trenger for å administrere AI-infrastrukturen din på ett sted, bygget for skala.","featureUnifiedEndpointTitle":"Samlet endepunkt","featureUnifiedEndpointDesc":"Få tilgang til alle leverandører via en enkelt standard API-URL.","featureEasySetupTitle":"Enkelt oppsett","featureEasySetupDesc":"Kom i gang på få minutter med npx-kommandoen.","featureModelFallbackTitle":"Modell Fallback","featureModelFallbackDesc":"Bytt leverandør automatisk ved feil eller høy ventetid.","featureUsageTrackingTitle":"Brukssporing","featureUsageTrackingDesc":"Detaljert analyse og kostnadsovervåking på tvers av alle modeller.","featureOAuthApiKeysTitle":"OAuth- og API-nøkler","featureOAuthApiKeysDesc":"Administrer legitimasjon på en sikker måte i ett hvelv.","featureCloudSyncTitle":"Cloud Sync","featureCloudSyncDesc":"Synkroniser konfigurasjonene dine på tvers av enheter umiddelbart.","featureCliSupportTitle":"CLI-støtte","featureCliSupportDesc":"Fungerer med Claude Code, Codex, Cline, Cursor og mer.","featureDashboardTitle":"Dashbord","featureDashboardDesc":"Visuelt dashbord for trafikkanalyse i sanntid.","howItWorks":"Hvordan OmniRoute fungerer","howItWorksDescription":"Data flyter sømløst fra applikasjonen din gjennom vårt intelligente rutinglag til den beste leverandøren for jobben.","howItWorksStep1Title":"1. CLI og SDK-er","howItWorksStep1Description":"Forespørslene dine starter fra favorittverktøyene dine eller vår enhetlige SDK. Bare endre basis-URLen.","howItWorksStep2Title":"2. OmniRoute Hub","howItWorksStep2Description":"Motoren vår analyserer forespørselen, sjekker leverandørens helse og ruter for lavest ventetid eller kostnad.","howItWorksStep3Title":"3. AI-leverandører","howItWorksStep3Description":"Forespørselen oppfylles av OpenAI, Anthropic, Gemini eller andre umiddelbart.","getStartedIn30Seconds":"Kom i gang på 30 sekunder","getStartedDescription":"Installer OmniRoute, konfigurer leverandørene dine via nettdashbordet, og begynn å rute AI-forespørsler.","installOmniRoute":"Installer OmniRoute","installStepDescription":"Kjør npx-kommandoen for å starte serveren umiddelbart","openDashboard":"Åpne Dashboard","openDashboardStepDescription":"Konfigurer leverandører og API-nøkler via webgrensesnitt","routeRequests":"Ruteforespørsler","routeRequestsStepDescription":"Pek CLI-verktøyene dine til {endpoint}","terminal":"terminal","copy":"Kopier","copied":"✓ Kopiert","startingOmniRoute":"Starter OmniRoute...","serverRunningOnLabel":"Server kjører på","dashboardLabel":"Dashbord","readyToRoute":"Klar til rute! ✓","configureProvidersNote":"📝 Konfigurer leverandører i dashbordet eller bruk miljøvariabler","dataLocation":"Dataplassering:","dataLocationMacLinux":" macOS/Linux:","dataLocationWindows":" Windows:","product":"Produkt","dashboardLink":"Dashbord","changelog":"Endringslogg","resources":"Ressurser","documentation":"Dokumentasjon","npm":"NPM","legal":"Lovlig","mitLicense":"MIT-lisens","footerTagline":"Det enhetlige endepunktet for AI-generering. Koble til, rute og administrer AI-leverandørene dine på en enkel måte.","copyright":"© {year} OmniRoute. Alle rettigheter forbeholdt.","flowToolClaudeCode":"Claude Code","flowToolOpenAICodex":"OpenAI Codex","flowToolCline":"Cline","flowToolCursor":"Markør","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Antropisk","flowProviderGemini":"Tvillingene","flowProviderGithubCopilot":"GitHub Copilot","interactiveDiagram":"Interaktivt diagram synlig på skrivebordet","ctaTitle":"Klar til å forenkle AI-infrastrukturen din?","ctaDescription":"Bli med utviklere som strømlinjeformer AI-integrasjonene sine med OmniRoute. Åpen kildekode og gratis å starte.","startFree":"Start gratis","readDocumentation":"Les dokumentasjon"},"docs":{"title":"Dokumentasjon","quickStart":"Rask start","features":"Funksjoner","supportedProviders":"Støttede leverandører","supportedProvidersToc":"Leverandører","commonUseCases":"Vanlige brukstilfeller","clientCompatibility":"Klientkompatibilitet","protocolsToc":"Protocols","apiReference":"API-referanse","method":"Metode","path":"Sti","notes":"Notater","modelPrefixes":"Modellprefikser","prefix":"Prefiks","troubleshooting":"Feilsøking","supportsChat":"Støtter både chat- og svarendepunkter.","oauthAutoRefresh":"OAuth-tilkobling med automatisk tokenoppdatering.","fullStreaming":"Full streamingstøtte for alle modeller.","docsLabel":"Dokumenter","docsHeroDescription":"AI-gateway for LLM-er med flere leverandører. Ett endepunkt for OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor og mer enn 20 leverandører.","openDashboard":"Åpne Dashboard","endpointPage":"Sluttpunktside","github":"GitHub","reportIssue":"Rapporter problem","onThisPage":"På denne siden","documentationVersion":"Dokumentasjon - v{version}","quickStartStep1Title":"1. Installer og kjør","quickStartStep1Prefix":"Løp","quickStartStep1Middle":"eller klone fra GitHub og kjøre","quickStartStep2Title":"2. Opprett API-nøkkel","quickStartStep2Text":"Gå til endepunkt -> Registrerte nøkler. Generer én nøkkel per miljø.","quickStartStep3Title":"3. Koble til leverandører","quickStartStep3Text":"Legg til leverandørkontoer via OAuth-pålogging, API-nøkkel eller gratis-lags automatisk tilkobling.","quickStartStep4Title":"4. Angi klientbase-URL","quickStartStep4Prefix":"Pek IDE- eller API-klienten din til","quickStartStep4Suffix":"Bruk for eksempel leverandørprefiks","featureRoutingTitle":"Ruting for flere leverandører","featureRoutingText":"Rut forespørsler til 30+ AI-leverandører gjennom ett enkelt OpenAI-kompatibelt endepunkt. Støtter chat, svar, lyd og bilde-APIer.","featureCombosTitle":"Kombinasjoner og balansering","featureCombosText":"Lag modellkombinasjoner med reservekjeder og balanseringsstrategier: round-robin, prioritet, tilfeldig, minst brukt og kostnadsoptimalisert.","featureUsageTitle":"Bruk og kostnadssporing","featureUsageText":"Sanntids-tokentelling, kostnadsberegning per leverandør/modell og detaljert bruksoppdeling etter API-nøkkel og konto.","featureAnalyticsTitle":"Analytics Dashboard","featureAnalyticsText":"Visuell analyse med diagrammer for forespørsler, tokens, feil, ventetid, kostnader og modellpopularitet over tid.","featureHealthTitle":"Helseovervåking","featureHealthText":"Live helsesjekker, leverandørstatus, strømbrytertilstander og automatisk hastighetsgrensedeteksjon med eksponentiell tilbakekobling.","featureCliTitle":"CLI-verktøy","featureCliText":"Administrer IDE-konfigurasjoner, eksporter/importer sikkerhetskopier, oppdag kodex-profiler og konfigurer innstillinger fra dashbordet.","featureSecurityTitle":"Sikkerhet og retningslinjer","featureSecurityText":"API-nøkkelautentisering, IP-filtrering, prompt-injeksjonsvakt, domenepolicyer, øktadministrasjon og revisjonslogging.","featureCloudSyncTitle":"Cloud Sync","featureCloudSyncText":"Synkroniser konfigurasjonen din med Cloudflare Workers for ekstern tilgang med kryptert legitimasjon og automatisk failover.","providersAcrossConnectionTypes":"{count}-leverandører på tvers av tre tilkoblingstyper.","manageProviders":"Administrer leverandører","providersCount":"{count} leverandører","providerTypeFree":"Gratis lag","providerTypeOAuth":"OAuth","providerTypeApiKey":"API-nøkkel","useCaseSingleEndpointTitle":"Enkelt endepunkt for mange leverandører","useCaseSingleEndpointText":"Pek klienter til én basis-URL og rute etter modellprefiks (for eksempel: gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Fallback og modellbytte med kombinasjoner","useCaseFallbackText":"Lag kombinasjonsmodeller i Dashboard og hold klientkonfigurasjonen stabil mens leverandørene roterer internt.","useCaseUsageVisibilityTitle":"Bruk, kostnader og feilsøkingssynlighet","useCaseUsageVisibilityText":"Spor tokens og kostnader etter leverandør, konto og API-nøkkel i fanene Bruk og Analytics.","clientCherryStudioTitle":"Cherry Studio","baseUrlLabel":"Base URL","chatEndpointLabel":"Chat-endepunkt","modelRecommendationLabel":"Modellanbefaling: eksplisitt prefiks","clientCodexTitle":"Codex / GitHub Copilot-modeller","clientCodexBullet1":"Bruk modell-ID-er med","clientCodexBullet2":"Codex-familiemodeller rutes automatisk til","clientCodexBullet3":"Ikke-Codex-modeller fortsetter","clientCursorTitle":"Markør IDE","clientCursorBullet1":"Bruk","clientCursorBullet1Suffix":"prefiks for Cursor-modeller.","clientCursorBullet2":"OAuth-tilkobling - logg på fra siden Leverandører.","clientClaudeTitle":"Claude Code / Antigravity","clientClaudeBullet1Prefix":"Bruk","clientClaudeBullet1Middle":"(Claude) eller","clientClaudeBullet1Suffix":"(Antigravity) prefiks.","protocolsTitle":"Protocols: MCP & A2A","protocolsDescription":"OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.","protocolMcpTitle":"MCP (Model Context Protocol)","protocolMcpDesc":"Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.","protocolMcpStep1":"Start MCP transport with `omniroute --mcp`.","protocolMcpStep2":"Point your MCP client to stdio transport.","protocolMcpStep3":"Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.","protocolA2aTitle":"A2A (Agent2Agent)","protocolA2aDesc":"Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.","protocolA2aStep1":"Read `/.well-known/agent.json` for agent discovery.","protocolA2aStep2":"Send `message/send` or `message/stream` requests to `POST /a2a`.","protocolA2aStep3":"Manage task lifecycle with `tasks/get` and `tasks/cancel`.","protocolTroubleshootingTitle":"Protocol Troubleshooting","protocolTroubleshooting1":"If MCP status is offline, verify the stdio process is running and heartbeat file is updating.","protocolTroubleshooting2":"If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.","protocolTroubleshooting3":"Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.","endpointChatNote":"OpenAI-kompatibelt chat-endepunkt (standard).","endpointResponsesNote":"Responses API-endepunkt (Codex, o-serien).","endpointModelsNote":"Modellkatalog for alle tilkoblede leverandører.","endpointAudioNote":"Lydtranskripsjon (Deepgram, AssemblyAI).","endpointImagesNote":"Bildegenerering (NanoBanana).","endpointRewriteChatNote":"Omskrivehjelper for klienter uten /v1.","endpointRewriteResponsesNote":"Omskriv hjelper for svar uten /v1.","endpointRewriteModelsNote":"Omskrivehjelper for modelloppdagelse uten /v1.","modelPrefixesDescriptionStart":"Bruk leverandørprefikset før modellnavnet for å rute til en bestemt leverandør. Eksempel:","modelPrefixesDescriptionEnd":"ruter til GitHub Copilot.","provider":"Leverandør","type":"Type","troubleshootingModelRouting":"Hvis klienten mislykkes med modellruting, bruk eksplisitt leverandør/modell (for eksempel: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Hvis du får tvetydige modellfeil, velger du et leverandørprefiks i stedet for en bare modell-ID.","troubleshootingCodexFamily":"For GitHub Codex-familiemodeller, behold modellen som gh/codex-model; ruteren velger /responser automatisk.","troubleshootingTestConnection":"Bruk Dashboard > Leverandører > Test tilkobling før du tester fra IDE-er eller eksterne klienter.","troubleshootingCircuitBreaker":"Hvis en leverandør viser at strømbryteren er åpen, vent på nedkjøling eller sjekk helsesiden for detaljer.","troubleshootingOAuth":"For OAuth-leverandører, autentiser på nytt hvis tokens utløper. Sjekk leverandørkortets statusindikator.","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 generering (ElevenLabs, OpenAI TTS).","endpointEmbeddingsNote":"Generering av tekstinnbygging (OpenAI, Cohere, Voyage)."},"legal":{"privacyPolicy":"Personvernerklæring","termsOfService":"Vilkår for bruk","providerConfigurations":"Leverandørkonfigurasjoner","apiKeys":"API-nøkler","usageLogs":"Brukslogger","applicationSettings":"Applikasjonsinnstillinger","viewExportAnalytics":"Se og eksporter bruksanalyse","clearHistory":"Tøm brukshistorikken når som helst","configureRetention":"Konfigurer retningslinjer for loggoppbevaring","backupRestore":"Sikkerhetskopier og gjenopprett databasen","privacyMetadataTitle":"Personvernerklæring | OmniRoute","privacyMetadataDescription":"Personvernregler for OmniRoute AI API-proxy-ruteren.","termsMetadataTitle":"Vilkår for bruk | OmniRoute","termsMetadataDescription":"Vilkår for bruk for OmniRoute AI API-proxy-ruteren.","backToHome":"Tilbake til hjemmet","lastUpdated":"Sist oppdatert: {date}","policyLastUpdatedDate":"13. februar 2026","listSeparator":"-","questionsVisit":"Spørsmål? Besøk vår","githubRepository":"GitHub-depot","privacySection1Title":"1. Lokal-først arkitektur","privacySection1Text":"OmniRoute er designet som en lokal først-applikasjon. All databehandling og lagring skjer utelukkende på maskinen din. Det er ingen sentralisert server som samler inn informasjonen din.","privacySection2Title":"2. Data vi lagrer","privacyDataStoredIn":"Følgende data lagres lokalt i","privacyDataProviderConfigurationsDesc":"tilkoblings-URLer, leverandørtyper og prioritetsinnstillinger","privacyDataApiKeysDesc":"kryptert og lagret lokalt for autentisering med AI-leverandører","privacyDataUsageLogsDesc":"antall forespørsler, tokenbruk, modellnavn, tidsstempler og responstider","privacyDataApplicationSettingsDesc":"temapreferanser, rutingstrategi og kombinasjonskonfigurasjoner","privacySection3Title":"3. Ingen telemetri","privacySection3Text":"OmniRoute samler ikke inn telemetri, analyser eller krasjrapporter. Ingen data sendes til oss eller noen tredjepart. Dine bruksmønstre, API-kall og konfigurasjoner forblir helt private.","privacySection4Title":"4. Tredjeparts AI-leverandører","privacySection4Text":"Når du foretar API-anrop gjennom OmniRoute, blir forespørslene dine videresendt til AI-leverandørene du har konfigurert (for eksempel: OpenAI, Anthropic, Google). Disse leverandørene har sine egne retningslinjer for personvern som styrer hvordan de håndterer dataene dine. Vennligst se gjennom:","privacyOpenAiPolicy":"OpenAI personvernerklæring","privacyAnthropicPolicy":"Antropiske retningslinjer for personvern","privacyGooglePolicy":"Googles personvernregler","privacySection5Title":"5. Cloud Sync (valgfritt)","privacySection5Text":"Hvis du aktiverer den valgfrie skysynkroniseringsfunksjonen, kan leverandørkonfigurasjoner og API-nøkler overføres til et konfigurert skyendepunkt. Denne funksjonen er deaktivert som standard og krever eksplisitt opt-in.","privacySection6Title":"6. Logging","privacyLoggingIntro":"Forespørselslogger kan konfigureres gjennom dashbordinnstillingene. Du kan:","privacySection7Title":"7. Dine rettigheter","privacySection7TextStart":"Siden all data er lagret lokalt, har du full kontroll. Du kan slette dataene dine når som helst ved å fjerne","privacySection7TextEnd":"katalogen eller bruke funksjonene for sikkerhetskopiering og gjenoppretting av databasen i dashbordet.","termsSection1Title":"1. Oversikt","termsSection1Text":"OmniRoute er en lokal-første AI API-proxy-ruter som fungerer utelukkende på maskinen din. Den ruter forespørsler til flere AI-leverandører med lastbalansering, failover og brukssporing.","termsSection2Title":"2. Brukeransvar","termsResponsibilityApiKeys":"Du er alene ansvarlig for å administrere dine egne API-nøkler og legitimasjon for tredjeparts AI-leverandører (OpenAI, Anthropic, Google, etc.).","termsResponsibilityCompliance":"Du må overholde vilkårene for bruk for hver AI-leverandør hvis API du får tilgang til gjennom OmniRoute.","termsResponsibilitySecurity":"Du er ansvarlig for sikkerheten til din lokale OmniRoute-installasjon, inkludert å angi et passord og begrense nettverkstilgang.","termsSection3Title":"3. Hvordan det fungerer","termsSection3Text":"OmniRoute fungerer som en mellomfullmektig. API-anrop som sendes til OmniRoute, oversettes og videresendes til dine konfigurerte AI-leverandører. OmniRoute endrer ikke innholdet i dine forespørsler eller svar utover den nødvendige protokolloversettelsen.","termsSection4Title":"4. Datahåndtering","termsDataStoredLocally":"Alle data lagres lokalt på din maskin i en SQLite-database.","termsNoTransmission":"OmniRoute overfører ingen data til eksterne servere med mindre du eksplisitt aktiverer skysynkroniseringsfunksjoner.","termsDataLocationText":"Brukslogger, API-nøkler og konfigurasjon lagres i","termsSection5Title":"5. Ansvarsfraskrivelse","termsSection5Text":"OmniRoute leveres \\"som den er\\" uten garanti av noe slag. Vi er ikke ansvarlige for kostnader som påløper gjennom API-bruk, tjenesteavbrudd eller tap av data. Oppretthold alltid sikkerhetskopier av konfigurasjonen din.","termsSection6Title":"6. Åpen kildekode","termsSection6Text":"OmniRoute er åpen kildekode-programvare. Du står fritt til å inspisere, modifisere og distribuere den under lisensvilkårene."},"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":"Enkel chat","streaming":"Streaming","system-prompt":"Systemmelding","thinking":"Tenker","tool-calling":"Verktøyanrop","multi-turn":"Multisving"},"templateDescriptions":{"simple-chat":"Grunnleggende chatmal med systemmelding","streaming":"Mal for strømmesvar","system-prompt":"Mal med tilpasset systemforespørsel","thinking":"Mal med resonnement/tenkebudsjett","tool-calling":"Mal for verktøy/funksjonskall","multi-turn":"Mal for samtaler med flere svinger"},"templatePayloads":{"simpleChat":{"system":"Du er en hjelpsom AI-assistent.","userGreeting":"Hei! Hvordan kan jeg hjelpe deg i dag?"},"streaming":{"prompt":"Skriv en historie om"},"systemPrompt":{"question":"Hva er meningen med livet?","systemInstruction":"Gi et gjennomtenkt, filosofisk svar."},"thinking":{"question":"Forklar kvanteberegning"},"toolCalling":{"cityNameDescription":"Navnet på byen å få vær for","toolDescription":"Få gjeldende vær for et sted","userWeather":"Hvordan er været i Tokyo?"},"multiTurn":{"system":"Du er en hjelpsom assistent.","assistantExample":"Jeg hjelper deg gjerne med det.","userInitial":"Jeg trenger hjelp med","userFollowUp":"Kan du utdype det?"}},"cache":{"title":"Cache Management","description":"Monitor and manage semantic response cache, hit rates, and token savings.","refresh":"Refresh","clearAll":"Clear All","memoryEntries":"Memory Entries","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=[506194,a=>{a.v(JSON.parse('{"common":{"save":"Lagre","cancel":"Avbryt","delete":"Slett","loading":"Laster inn...","error":"Det oppsto en feil","success":"Suksess","confirm":"Er du sikker?","refresh":"Oppdater","close":"Lukk","add":"Legg til","edit":"Rediger","search":"Søk","back":"Tilbake","next":"Neste","submit":"Send inn","reset":"Tilbakestill","copy":"Kopier","copied":"Kopiert!","enabled":"Aktivert","disabled":"Deaktivert","active":"Aktiv","inactive":"Inaktiv","noData":"Ingen data tilgjengelig","configure":"Konfigurer","manage":"Administrer","name":"Navn","actions":"Handlinger","status":"Status","type":"Type","model":"Modell","models":"modeller","provider":"Leverandør","account":"Konto","time":"Tid","details":"Detaljer","created":"Opprettet","lastUsed":"Sist brukt","loadMore":"Last inn mer","noResults":"Ingen resultater funnet","reloadPage":"Last inn siden på nytt","connected":"Tilkoblet","disconnected":"Koblet fra","notConfigured":"Ikke konfigurert","testConnection":"Test tilkobling","enable":"Aktiver","disable":"Deaktiver","columns":"Kolonner","newest":"Nyeste","oldest":"Eldst","all":"Alle","none":"Ingen","yes":"Ja","no":"Nei","warning":"Advarsel","note":"Merk","free":"Gratis","skipToContent":"Gå til innhold","maintenanceServerIssues":"Server is experiencing issues. Some features may be unavailable.","maintenanceServerUnreachable":"Server is unreachable. Reconnecting...","accept":"Godta","accountId":"Konto-ID","alias":"Alias","apiKeyId":"API-nøkkel-ID","apiKeyName":"API-nøkkelnavn","apiKeySecret":"API-nøkkelhemmelighet","authorization":"Autorisasjon","content-type":"Innholdstype","content-length":"Innholdslengde","cookie":"Cookie","file":"Fil","host":"Vert","id":"ID","import":"Importer","limit":"Begrens","offset":"Offset","open":"Åpne","origin":"Opprinnelse","promptTokens":"Spør Tokens","completionTokens":"Fullføringssymboler","totalTokens":"Totalt tokens","rawModel":"Rå modell","scope":"Omfang","skill":"Ferdighet","sortBy":"Sorter etter","sortOrder":"Sorteringsrekkefølge","tab":"Tab","text":"Tekst","textarea":"Tekstområde","tool":"Verktøy","toolId":"Verktøy-ID","web":"Web","whereUsed":"Hvor det brukes","whitelist":"Hviteliste","blacklist":"Svarteliste","resolve":"Løs","force":"Kraft","base64url":"Base64 URL","hex":"Hex","range":"Rekkevidde","component":"Komponent","redirect_uri":"Omdiriger URI","idempotency-key":"Idempotensnøkkel","error_description":"Feilbeskrivelse","code":"Kode","compatible":"Kompatibel","chat-completions":"Chatfullføringer","oauth":"OAuth","auth_token":"Auth Token","crypto":"Krypto","hours":"Timer","selfsigned":"Selvsignert","proxy_id":"Proxy ID","proxyId":"Proxy ID","connectionId":"Tilkoblings-ID","resolveConnectionId":"Løs tilkoblings-ID","resolve_connection_id":"Løs tilkoblings-ID","scope_id":"Omfang ID","scopeId":"Omfang ID","jwtSecret":"JWT-hemmelighet","keytar":"Keytar","better-sqlite3":"bedre-sqlite3","undici":"undici","builder-id":"Byggherre-ID","musicDesc":"Musikkbeskrivelse","musicGeneration":"Musikkgenerasjon","idc":"IDC","cloud-status-changed":"Skystatus endret","where_used":"Hvor det brukes","windowMs":"Vindu (ms)","social-github":"GitHub","social-google":"Google","TOOL_ALLOWLIST":"Verktøytillatelsesliste","TOOL_DENYLIST":"Verktøyfornektelsesliste","Failed to save pricing":"Kunne ikke lagre prisen","Failed to reset pricing":"Kunne ikke tilbakestille priser","apikey":"API-nøkkel","http":"HTTP"},"sidebar":{"home":"Hjem","dashboard":"Dashbord","providers":"Leverandører","combos":"Combos","usage":"Bruk","analytics":"Analytics","costs":"Kostnader","health":"Helse","limits":"Grenser og kvoter","cliTools":"CLI-verktøy","media":"Medier","settings":"Innstillinger","translator":"Oversetter","docs":"Dokumenter","issues":"Problemer","apiManager":"API-behandler","logs":"Logger","auditLog":"Revisjonslogg","shutdown":"Avslutning","restart":"Start på nytt","shutdownConfirm":"Slå av OmniRoute?","restartConfirm":"Starte OmniRoute på nytt?","version":"v{version}","debug":"Feilsøk","system":"System","help":"Hjelp","serverDisconnected":"Server frakoblet","serverDisconnectedMsg":"Proxy-serveren er stoppet eller starter på nytt.","expandSidebar":"Utvid sidefeltet","collapseSidebar":"Skjul sidefeltet","themes":"Themes","presetColors":"Popular colors","createTheme":"Create theme","chooseColor":"Pick one color","themeCoral":"Coral","themeBlue":"Blue","themeRed":"Red","themeGreen":"Green","themeViolet":"Violet","themeOrange":"Orange","themeCyan":"Cyan","endpoints":"Endepunkter","playground":"Lekeplass","agents":"Agenter","cliToolsShort":"Verktøy","autoCombo":"Auto Combo","searchTools":"Search Tools","cache":"Cache","cacheShort":"Cache"},"themesPage":{"title":"Themes","description":"Choose a preset theme or create your own with a single color","presetColors":"Popular colors","customTheme":"Custom theme","customThemeDesc":"Click create theme and pick one color","createTheme":"Create theme","activePreset":"Active theme"},"header":{"logout":"Logg ut","language":"Språk","providers":"Leverandører","providerDescription":"Administrer AI-leverandørtilkoblingene dine","combos":"Combos","comboDescription":"Modellkombinasjoner med fallback","usage":"Bruk og analyse","usageDescription":"Overvåk API-bruken din, tokenforbruk og forespørselslogger","analytics":"Analytics","analyticsDescription":"Diagrammer, trender og evalueringsinnsikt","cliTools":"CLI-verktøy","cliToolsDescription":"Konfigurer CLI-verktøy","home":"Hjem","homeDescription":"Velkommen til OmniRoute","endpoint":"Endpoints","endpointDescription":"Manage proxy endpoints, MCP, A2A, and API endpoints","settings":"Innstillinger","settingsDescription":"Administrer dine preferanser","openaiCompatible":"OpenAI-kompatibel","anthropicCompatible":"Antropisk kompatibel","media":"Media","mediaDescription":"Generate images, videos, and music","themes":"Themes","themesDescription":"Choose a color theme for the whole dashboard panel","mcp":"MCP","mcpDescription":"Model Context Protocol server management and tools","a2a":"A2A","a2aDescription":"Agent-to-Agent protocol tasks and observability"},"home":{"quickStart":"Rask start","quickStartDesc":"Kom i gang i 4 trinn. Koble til leverandører, rutemodeller, overvåk alt.","fullDocs":"Fulle dokumenter","step1Title":"1. Opprett API-nøkkel","step1Desc":"Gå til <endpoint>Endpoint</endpoint> -> Registrerte nøkler. Generer én nøkkel per miljø.","step2Title":"2. Koble til leverandører","step2Desc":"Legg til kontoer i <providers>Providers</providers>. Støtter OAuth, API Key og gratis nivåer.","step3Title":"3. Pek klienten din","step3Desc":"Angi basis-URL til {url} i IDE- eller API-klienten.","step4Title":"4. Overvåk og optimaliser","step4Desc":"Spor tokens, kostnader og feil i <logs>Request Logs</logs> og <analytics>Analytics</analytics>.","providersOverview":"Oversikt over leverandører","configuredOf":"{configured} konfigurert av {total} tilgjengelige leverandører","noModelsAvailable":"Ingen modeller tilgjengelig for denne leverandøren.","configureFirst":"Konfigurer en tilkobling først i {providers}","configureProvider":"Konfigurer leverandør","modelAvailable":"{count} modell tilgjengelig","modelsAvailable":"{count} modeller tilgjengelig","connectionsActive":"{count} tilkobling aktiv","connectionsActivePlural":"{count} tilkoblinger aktive","copyModelName":"Kopier modellnavnet","documentation":"Dokumentasjon","healthMonitor":"Helsemonitor","reportIssue":"Rapporter problem","activeError":"{active} aktiv · {errors} feil","oauthLabel":"OAuth","apiKeyLabel":"API-nøkkel","requestsShort":"{count} req","providerModelsTitle":"{provider} - Modeller","copiedModel":"Kopiert: {model}","aliasLabel":"alias","updateNow":"Oppdater nå","updating":"Oppdaterer...","updateAvailableDesc":"En ny versjon er tilgjengelig. Klikk for å oppdatere.","updateStarted":"Oppdatering startet..."},"analytics":{"title":"Analytics","overviewDescription":"Overvåk API-bruksmønstre, tokenforbruk, kostnader og aktivitetstrender på tvers av alle leverandører og modeller.","evalsDescription":"Kjør evalueringspakker for å teste og validere LLM-endepunktene dine. Sammenlign modellkvalitet, registrer regresjoner og benchmark latens.","overview":"Oversikt","evals":"Evals"},"apiManager":{"title":"API-nøkler","createKey":"Opprett API-nøkkel","key":"Nøkkel","revokeKey":"Tilbakekall nøkkel","revokeConfirm":"Er du sikker på at du vil tilbakekalle denne API-nøkkelen?","noKeys":"Ingen API-nøkler ennå","noKeysDesc":"Lag din første API-nøkkel for å autentisere forespørsler til endepunktet ditt","keyLabel":"Nøkkeletikett","permissions":"Tillatelser","expiresAt":"Utløper","never":"Aldri","revoke":"Oppheve","showKey":"Vis nøkkel","hideKey":"Skjul nøkkel","copyKey":"Kopier API-nøkkel","allModels":"Alle modeller","selectedModels":"Utvalgte modeller","readOnly":"Kun lesetilgang","fullAccess":"Full tilgang","keyManagement":"API Key Management","keyManagementDesc":"Opprett og administrer API-nøkler for autentisering av forespørsler til endepunktet ditt","totalKeys":"Totalnøkler","restricted":"Begrenset","totalRequests":"Totalt antall forespørsler","modelsAvailable":"Modeller tilgjengelig","registeredKeys":"Registrerte nøkler","keysRegistered":"{count} nøkler registrert","keyRegistered":"{count} nøkkel registrert","keysSecurityNote":"Hver nøkkel isolerer brukssporing og kan trekkes tilbake uavhengig. Nøkler er maskert etter opprettelse for sikkerhet.","createFirstKey":"Lag din første nøkkel","name":"Navn","usage":"Bruk","created":"Opprettet","actions":"Handlinger","reqs":"krav","neverUsed":"Aldri brukt","deleteConfirm":"Vil du slette denne API-nøkkelen?","usageTips":"Brukstips","tipAuth":"Bruk API-nøkler i autorisasjonsoverskriften som bærer DIN_KEY","tipSecure":"Nøkler vises bare én gang under opprettelsen – oppbevar dem sikkert","tipSeparate":"Lag separate nøkler for forskjellige klienter eller miljøer","tipRestrict":"Begrens nøkler til spesifikke modeller for bedre sikkerhet og kostnadskontroll","keyName":"Nøkkelnavn","keyNamePlaceholder":"f.eks. produksjonsnøkkel, utviklingsnøkkel","keyNameDesc":"Velg et beskrivende navn for å identifisere formålet med denne nøkkelen","keyCreated":"API-nøkkel opprettet","keyCreatedSuccess":"Nøkkel ble opprettet!","keyCreatedNote":"Kopier og lagre denne nøkkelen nå – den vises ikke igjen.","done":"Ferdig","savePermissions":"Lagre tillatelser","allowAll":"Tillat alle","restrict":"Begrens","allowAllInfo":"Denne nøkkelen har tilgang til alle tilgjengelige modeller.","restrictInfo":"Denne nøkkelen har tilgang til {selected} av {total}-modeller.","selected":"{count} valgt","all":"Alle","clear":"Klart","searchModels":"Søk etter modeller etter navn eller leverandør...","noModelsFound":"Ingen modeller funnet","keyNameRequired":"Nøkkelnavn er påkrevd","keyNameTooLong":"Nøkkelnavnet må være {max} tegn eller mindre","keyNameInvalid":"Nøkkelnavn kan bare inneholde bokstaver, tall, mellomrom, bindestreker og understreker","invalidKeyName":"Ugyldig nøkkelnavn","failedCreateKey":"Kunne ikke opprette nøkkel","failedCreateKeyRetry":"Kunne ikke opprette nøkkel. Vennligst prøv igjen.","invalidKeyId":"Ugyldig nøkkel-ID","failedDeleteKey":"Kunne ikke slette nøkkelen","failedDeleteKeyRetry":"Kunne ikke slette nøkkelen. Vennligst prøv igjen.","invalidModelsSelection":"Ugyldig modellvalg","cannotSelectMoreThanModels":"Kan ikke velge mer enn {max} modeller","failedUpdatePermissions":"Kunne ikke oppdatere tillatelser","failedUpdatePermissionsRetry":"Kunne ikke oppdatere tillatelser. Vennligst prøv igjen.","unknownProvider":"ukjent","copyMaskedKey":"Kopier maskert nøkkel","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Siste: {date}","editPermissions":"Rediger tillatelser","deleteKey":"Slett nøkkel","model":"{count} modell","models":"{count} modeller","permissionsTitle":"Tillatelser: {name}","allowAllDesc":"Denne nøkkelen har tilgang til alle tilgjengelige modeller.","restrictDesc":"Denne nøkkelen har tilgang til {selectedCount} av {totalModels}-modeller.","selectedCount":"{count} valgt","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":"Revisjonslogg","searchPlaceholder":"Søkehandlinger...","action":"Handling","actor":"Skuespiller","target":"Mål","ipAddress":"IP-adresse","timestamp":"Tidsstempel","noEntries":"Ingen revisjonsoppføringer funnet","filterByAction":"Filtrer etter handling...","filterByActor":"Filtrer etter skuespiller...","filterEntriesAria":"Filtrer revisjonsloggoppføringer","filterByActionTypeAria":"Filtrer etter handlingstype","filterByActorAria":"Filtrer etter skuespiller","refreshAuditLogAria":"Oppdater revisjonslogg","tableAria":"Revisjonsloggoppføringer","failedFetchAuditLog":"Kunne ikke hente revisjonsloggen","notAvailable":"—","description":"Administrative handlinger og sikkerhetshendelser","showing":"Viser {count} oppføringer (offset {offset})","previous":"Forrige"},"media":{"title":"Medialab","subtitle":"Generer bilder, videoer og musikk","model":"Model","prompt":"Prompt","generate":"Generer","generating":"Generating...","loadingModels":"Loading available models...","noModels":"No models available. Configure providers with media capabilities first.","error":"Generation Failed","result":"Result","imageDescription":"Generate images from text prompts using OpenAI, xAI, Together, Hyperbolic, SD WebUI, ComfyUI and more.","videoDescription":"Create videos with AnimateDiff, Stable Video Diffusion via ComfyUI or SD WebUI.","musicDescription":"Compose music using Stable Audio Open or MusicGen via ComfyUI."},"cliTools":{"title":"CLI-verktøy","noActiveProviders":"Ingen aktive tilbydere","noActiveProvidersDesc":"Vennligst legg til og koble til leverandører først for å konfigurere CLI-verktøy.","mapModels":"Kartmodeller","testConnection":"Test tilkobling","connectionStatus":"Tilkoblingsstatus","configureEndpoint":"Konfigurer endepunkt","instructions":"Instruksjoner","modelMapping":"Modellkartlegging","baseUrl":"Base URL","apiKey":"API-nøkkel","configured":"Konfigurert","notConfigured":"Ikke konfigurert","notInstalled":"Ikke installert","custom":"Egendefinert","unknown":"Ukjent","lastSavedAt":"Sist lagret: {date}","never":"Aldri","justNow":"akkurat nå","minutesAgoShort":"{count}m siden","hoursAgoShort":"{count}t siden","daysAgoShort":"{count}d siden","monthsAgoShort":"{count}mnd siden","yearsAgoShort":"{count}y siden","runtimeCheckFailed":"Kjøretidssjekk mislyktes","yourApiKeyPlaceholder":"din-api-nøkkelen","modelPlaceholder":"leverandør/modell-id","configurationSaved":"Konfigurasjonen er lagret.","failedToSave":"Kunne ikke lagre konfigurasjonen.","noApiKeysCreateOne":"Ingen API-nøkler – Opprett en på Nøkler-siden","defaultOmnirouteKey":"sk_omniroute (standard)","selectModel":"Velg modell","selectModelForAlias":"Velg modell for {alias}","selectModelForTool":"Velg modell for {tool}","select":"Velg","clear":"Klart","comingSoon":"Kommer snart","checkingRuntime":"Sjekker kjøretidsstatus ...","guideOnlyIntegration":"Integrasjon kun for guide (ingen lokal kjøretid kreves)","cliRuntimeDetected":"CLI kjøretid oppdaget og klar","cliFoundNotRunnable":"CLI funnet, men ikke kjørbar{reason}","cliRuntimeNotDetected":"CLI kjøretid ikke oppdaget","binary":"Binær","configPath":"Konfigurasjonsbane","configPathShort":"Konfig","failedCheckRuntimeStatus":"Kunne ikke sjekke kjøretidsstatus.","copy":"Kopier","copied":"Kopiert","copyConfig":"Kopier konfig","saveConfig":"Lagre konfig","selectionSaved":"Utvalget lagret","guide":"Veiledning","detected":"Oppdaget","notReady":"Ikke klar","active":"Aktiv","inactive":"Inaktiv","startMitm":"Start MITM","stopMitm":"Stopp MITM","mitmStarted":"MITM startet vellykket!","mitmStopped":"MITM stoppet vellykket!","failedStart":"Kunne ikke starte MITM","failedStop":"Kunne ikke stoppe MITM","saveMappings":"Lagre tilordninger","mappingsSaved":"Kartene er lagret!","failedSaveMappings":"Kunne ikke lagre tilordninger","howItWorks":"Slik fungerer det:","antigravityHowWorksDesc":"Antigravity sender forespørsler til Googles endepunkt. MITM avskjærer og omdirigerer dem til OmniRoute.","antigravityStep1":"1. Start MITM for å rute forespørsler gjennom OmniRoute.","antigravityStep2Prefix":"2. Legg til","antigravityStep2Suffix":"til vertsfilen din som 127.0.0.1.","antigravityStep3":"3. Åpne Antigravity og forespørsler vil bli fullført.","sudoPasswordRequiredTitle":"Sudo-passord kreves","sudoPasswordHint":"Administratorpassord kreves for å endre vertsfil og systemproxyinnstillinger.","enterSudoPassword":"Skriv inn sudo-passord","sudoPasswordRequiredError":"Sudo-passord kreves.","cancel":"Avbryt","confirm":"Bekreft","settingsApplied":"Innstillingene ble brukt!","failedApplySettings":"Kunne ikke bruke innstillingene","settingsReset":"Innstillinger tilbakestilt!","failedResetSettings":"Kunne ikke tilbakestille innstillingene","backupRestored":"Sikkerhetskopien gjenopprettet!","failedRestore":"Kunne ikke gjenopprette","checkingCli":"Sjekker {tool} CLI...","cliNotRunnable":"{tool} CLI installert, men ikke kjørbar","cliNotInstalled":"{tool} CLI ikke installert","cliNotDetected":"{tool} CLI ikke oppdaget","cliDetectedReady":"{tool} CLI oppdaget og klar","cliFoundFailedHealthcheck":"{tool} CLI ble funnet, men mislyktes med kjøretidshelsesjekk{reason}.","installCliPrompt":"Installer {tool} CLI for å bruke denne funksjonen.","installCodexPrompt":"Installer Codex CLI for å bruke funksjonen for automatisk bruk.","hide":"Skjul","howToInstall":"Hvordan installere","installationGuide":"Installasjonsveiledning","platforms":"macOS / Linux / Windows:","afterInstallationRun":"Etter installasjon, kjør","toVerify":"å verifisere.","current":"Gjeldende","baseUrlPlaceholder":"https://.../v1","resetToDefault":"Tilbakestill til standard","providerModelPlaceholder":"leverandør/modell-id","apply":"Søk","reset":"Tilbakestill","manualConfig":"Manuell konfig","backups":"Sikkerhetskopier","configBackups":"Konfigurer sikkerhetskopier","noBackupsYet":"Ingen sikkerhetskopier ennå. Sikkerhetskopier opprettes automatisk før hver bruk eller tilbakestilling.","restore":"Gjenopprett","backupRestoredReloading":"Sikkerhetskopien gjenopprettet! Laster inn status på nytt ...","failedRestoreBackup":"Kunne ikke gjenopprette sikkerhetskopien","applied":"Søkt!","failed":"Mislyktes","resetDone":"Tilbakestill!","omnirouteConfiguredOpenAiCompatible":"OmniRoute er konfigurert som OpenAI-kompatibel leverandør","provider":"Leverandør","model":"Modell","providers":"Leverandører","auth":"Auth","noApiKeysAvailable":"Ingen API-nøkler tilgjengelig","usingDefaultOmniroute":"Bruker standard: sk_omniroute","updateConfig":"Oppdater konfig","applyConfig":"Bruk Config","noBackupsAvailable":"Ingen sikkerhetskopier tilgjengelig.","profileSaved":"Profilen \\"{name}\\" er lagret!","failedSaveProfile":"Kunne ikke lagre profilen","profileActivated":"Profil aktivert!","failedActivateProfile":"Kunne ikke aktivere profilen","profiles":"Profiler","savedProfiles":"Lagrede profiler","noProfilesYet":"Ingen profiler er lagret ennå. Lagre gjeldende konfigurasjon som en profil nedenfor.","activate":"Aktiver","deleteProfile":"Slett profil","profileNamePlaceholder":"Profilnavn (f.eks. personlig konto)","saveCurrent":"Lagre gjeldende","codexAuthNotePrefix":"Codex bruker","codexAuthNoteMiddle":"med","codexAuthNoteSuffix":"Klikk \\"Bruk\\" for å konfigurere automatisk.","claudeManualConfiguration":"Claude CLI - Manuell konfigurasjon","codexManualConfiguration":"Codex CLI - Manual Configuration","droidManualConfiguration":"Factory Droid - Manuell konfigurasjon","openClawManualConfiguration":"Åpne Claw - Manuell konfigurasjon","clineManualConfiguration":"Cline manuell konfigurasjon","kiloManualConfiguration":"Kilokode manuell konfigurasjon","toolDescriptions":{"antigravity":"Google Antigravity IDE med MITM","claude":"Antropisk Claude Code CLI","codex":"OpenAI Codex CLI","droid":"Factory Droid AI Assistant","openclaw":"Åpne Claw AI Assistant","cline":"Cline AI-kodingsassistent CLI","kilo":"Kilokode AI Assistant CLI","cursor":"Cursor AI Code Editor","continue":"Fortsett AI Assistant","opencode":"OpenCode AI coding agent (Terminal)","kiro":"Amazon Kiro — AI-powered IDE","windsurf":"Windsurf AI Code Editor","copilot":"GitHub Copilot AI Assistant"},"guides":{"cursor":{"notes":{"0":"Krever Cursor Pro-konto for å bruke denne funksjonen.","1":"Markøren ruter forespørsler gjennom sin egen server, så lokalt endepunkt støttes ikke. Aktiver Cloud Endpoint i Innstillinger."},"steps":{"1":{"title":"Åpne Innstillinger","desc":"Gå til Innstillinger -> Modeller"},"2":{"title":"Aktiver OpenAI API","desc":"Aktiver alternativet \\"OpenAI API-nøkkel\\"."},"3":{"title":"Base URL"},"4":{"title":"API-nøkkel"},"5":{"title":"Legg til egendefinert modell","desc":"Klikk \\"Vis alle modeller\\" -> \\"Legg til egendefinert modell\\""},"6":{"title":"Velg modell"}}},"continue":{"steps":{"1":{"title":"Åpne Config","desc":"Åpne Fortsett konfigurasjonsfil"},"2":{"title":"API-nøkkel"},"3":{"title":"Velg modell"},"4":{"title":"Legg til modellkonfig","desc":"Legg til følgende konfigurasjon til modellarrayet ditt:"}},"notes":{"0":"Continue bruker JSON-konfigurasjonsfilen."}},"opencode":{"steps":{"1":{"title":"Install OpenCode","desc":"Install via npm: npm install -g opencode-ai"},"2":{"title":"API Key"},"3":{"title":"Set Base URL","desc":"opencode config set baseUrl {{baseUrl}}"},"4":{"title":"Select Model"}},"notes":{"0":"OpenCode krever API-nøkkelkonfigurasjon.","1":"Angi basis-URL til OmniRoute-endepunktet."}},"kiro":{"steps":{"1":{"title":"Open Kiro Settings","desc":"Go to Settings → AI Provider"},"2":{"title":"Base URL","desc":"Paste your OmniRoute endpoint URL"},"3":{"title":"API Key"},"4":{"title":"Select Model"}},"notes":{"0":"Kiro krever Amazon-konto."}}},"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":"Når du skal bruke","openToolDocs":"Åpne verktøydokumenter","toolUseCases":{"claude":"Bruk når du vil ha sterke planleggingsarbeidsflyter og lange multifilrefaktorer med Claude Code.","codex":"Bruk når teamet ditt er standardisert på OpenAI Codex CLI-flyter og profilbasert autentisering.","droid":"Bruk når du trenger en lettvekts terminalagent fokusert på rask koding og løkker for kommandoutførelse.","openclaw":"Bruk når du vil ha en Open Claw-kodingsagent, men rutet gjennom OmniRoute-policyer.","cline":"Bruk når du konfigurerer kodeagenter inne i redaktører og ønsker veiledet oppsett med OmniRoute-modeller.","kilo":"Bruk når arbeidsflyten din avhenger av Kilo Code-kommandoer og raske iterative redigeringer.","cursor":"Bruk når du koder i Cursor og du trenger tilpassede OpenAI-kompatible modeller gjennom OmniRoute.","continue":"Bruk når du kjører Continue i IDEer og du trenger bærbar JSON-basert leverandørkonfigurasjon.","opencode":"Bruk når du foretrekker terminal-native agentkjøringer og skriptautomatisering via OpenCode.","kiro":"Brukes når du integrerer Kiro og kontrollerer modellruting sentralt fra OmniRoute.","antigravity":"Brukes når Antigravity/Kiro-trafikk må avskjæres gjennom MITM og rutes til OmniRoute.","copilot":"Bruk når du vil ha Copilot chat-stil UX mens du håndhever OmniRoute-nøkler og rutingsregler."}},"combos":{"title":"Combos","description":"Lag modellkombinasjoner med vektet ruting og reservestøtte","createCombo":"Opprett kombinasjon","editCombo":"Rediger kombinasjon","deleteCombo":"Slett kombinasjon","noModels":"Ingen modeller","noModelsYet":"Ingen modeller lagt til ennå","addModel":"Legg til modell","addModelToCombo":"Legg til modell i kombinasjon","routingStrategy":"Rutingstrategi","maxRetries":"Max prøver på nytt","timeout":"Tidsavbrudd (ms)","healthcheck":"Helsesjekk","priority":"Prioritet","fallback":"Tilbakeslag","roundRobin":"Round Robin","random":"Tilfeldig","leastLatency":"Minste ventetid","comboName":"Kombinasjonsnavn","comboNamePlaceholder":"min-kombo","deleteConfirm":"Vil du slette denne kombinasjonen?","noCombosYet":"Ingen kombinasjoner ennå","comboCreated":"Kombinasjonen ble opprettet","comboUpdated":"Kombinasjonen ble oppdatert","comboDeleted":"Combo slettet","failedCreate":"Kunne ikke opprette kombinasjon","failedUpdate":"Kunne ikke oppdatere kombinasjonen","errorCreating":"Feil ved opprettelse av kombinasjon","errorUpdating":"Feil ved oppdatering av kombinasjon","errorDeleting":"Feil ved sletting av kombinasjon","testFailed":"Testforespørsel mislyktes","failedToggle":"Kunne ikke bytte kombinasjon","testResults":"Testresultater — {name}","resolvedBy":"Løst av:","more":"+{count} til","reqs":"krav","success":"suksess","proxyConfigured":"Proxy konfigurert","copyComboName":"Kopier kombinasjonsnavnet","enableCombo":"Aktiver kombinasjon","disableCombo":"Deaktiver kombinasjon","testCombo":"Testkombo","duplicate":"Duplikat","proxyConfig":"Proxy-konfigurasjon","nameRequired":"Navn er påkrevd","nameInvalid":"Bare bokstaver, tall, -, _, / og . tillatt","nameHint":"Bokstaver, tall, -, _, / og . tillatt","priorityDesc":"Sekvensiell fallback: prøver modell 1 først, deretter 2 osv.","weightedDesc":"Fordeler trafikk etter vektprosent med reserve","roundRobinDesc":"Sirkulær fordeling: hver forespørsel går til neste modell i rotasjon","randomDesc":"Ensartet tilfeldig valg, deretter fallback til gjenværende modeller","leastUsedDesc":"Velger modellen med færrest forespørsler, og balanserer belastningen over tid","costOptimizedDesc":"Ruter til den billigste modellen først basert på priser","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each model once before reshuffling","models":"Modeller","autoBalance":"Autobalanse","advancedSettings":"Avanserte innstillinger","retryDelay":"Forsinkelse på nytt (ms)","concurrencyPerModel":"Samtidighet / modell","queueTimeout":"Tidsavbrudd for kø (ms)","advancedHint":"La stå tomt for å bruke globale standardinnstillinger. Disse overstyrer innstillingene per leverandør.","moveUp":"Flytt opp","moveDown":"Flytt ned","removeModel":"Fjern","saving":"Lagrer...","weighted":"Vektet","leastUsed":"Minst brukt","costOpt":"Cost-Opt","strategyGuideTitle":"How to use this strategy","strategyGuideWhen":"When to use","strategyGuideAvoid":"Avoid when","strategyGuideExample":"Example","strategyGuide":{"priority":{"when":"You have one preferred model and only want fallback on failure.","avoid":"You need request distribution across models.","example":"Primary coding model with cheaper backup for outages."},"weighted":{"when":"You need controlled traffic split across models.","avoid":"You cannot maintain accurate weights over time.","example":"80% stable model + 20% canary model rollout."},"round-robin":{"when":"You want predictable and even distribution.","avoid":"Models differ too much in latency or cost.","example":"Same model on multiple accounts to spread throughput."},"random":{"when":"You want simple distribution with minimal setup.","avoid":"You need strict traffic guarantees.","example":"Quick prototyping with equivalent models."},"least-used":{"when":"You want adaptive balancing based on live demand.","avoid":"Traffic is too low to benefit from usage balancing.","example":"Mixed workloads where one model often gets overloaded."},"cost-optimized":{"when":"Cost reduction is your top priority.","avoid":"Pricing data is missing or outdated.","example":"Background or batch jobs where lower cost is preferred."}},"advancedHelp":{"maxRetries":"How many retries are attempted before failing a request.","retryDelay":"Initial wait between retries. Higher values reduce burst pressure.","timeout":"Maximum request duration before aborting.","healthcheck":"Skips unhealthy models/providers from routing decisions.","concurrencyPerModel":"Max simultaneous requests allowed per model in round-robin.","queueTimeout":"How long a request can wait in queue before timing out."},"templatesTitle":"Quick templates","templatesDescription":"Apply a starting profile, then adjust models and config.","templateApply":"Apply template","templateHighAvailability":"High availability","templateHighAvailabilityDesc":"Priority routing with health checks and safe retries.","templateCostSaver":"Cost saver","templateCostSaverDesc":"Cost-optimized routing for budget-first workloads.","templateBalanced":"Balanced load","templateBalancedDesc":"Least-used routing to spread demand over time.","usageGuideHide":"Hide","usageGuideDontShowAgain":"Don\'t show again","usageGuideShow":"Show guide","quickTestTitle":"Combo ready to validate","quickTestDescription":"Run a test now to confirm fallback and latency behavior.","testNow":"Test now","pricingCoverage":"Pricing coverage","pricingCoverageHint":"Cost-optimized works best when all combo models have pricing.","pricingAvailable":"Pricing available","pricingMissing":"No pricing","pricingAvailableShort":"priced","pricingMissingShort":"no-price","warningRoundRobinSingleModel":"Round-robin is most useful with at least 2 models.","warningCostOptimizedPartialPricing":"Only {priced} of {total} models have pricing. Routing may be partially cost-aware.","warningCostOptimizedNoPricing":"No pricing data found for this combo. Cost-optimized may route unexpectedly.","readinessTitle":"Klar til å spare?","readinessDescription":"Se gjennom sjekklisten før du oppretter eller oppdaterer denne kombinasjonen.","readinessCheckName":"Kombinasjonsnavnet er gyldig","readinessCheckModels":"Minst én modell er valgt","readinessCheckWeights":"Vektet total er 100 %","readinessCheckWeightsOptional":"Vektregel er ikke nødvendig","readinessCheckPricing":"Prisdata er tilgjengelig","readinessCheckPricingOptional":"Prisregel er ikke nødvendig","saveBlockedTitle":"Lagre er blokkert til følgende elementer er fikset:","saveBlockName":"Definer et kombinasjonsnavn.","saveBlockModels":"Legg til minst én modell.","saveBlockWeighted":"Sett vekter til 100 % (gjeldende: {total}%).","saveBlockPricing":"Legg til priser for minst én modell eller velg en annen strategi.","recommendationsLabel":"Recommended setup","applyRecommendations":"Apply recommendations","recommendationsUpdated":"Recommendations updated for {strategy}.","recommendationsApplied":"Recommendations applied to this combo.","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":"Kostnader","budget":"Budsjett","totalCost":"Total kostnad","breakdown":"Kostnadsfordeling","noData":"Ingen kostnadsdata","byModel":"Etter modell","byProvider":"Av leverandør"},"endpoint":{"title":"API-endepunkt","available":"Tilgjengelige endepunkter","cloudProxy":"Cloud Proxy","disableConfirm":"Er du sikker på at du vil deaktivere skyproxy?","baseUrl":"Base URL","apiKeyLabel":"API-nøkkel","registeredKeys":"Registrerte nøkler","chatCompletions":"Chatfullføringer","responses":"Svar","listModels":"Liste over modeller","usingCloudProxy":"Bruker Cloud Proxy","usingLocalServer":"Bruker lokal server","machineId":"Maskin-ID: {id}...","disableCloud":"Deaktiver Cloud","enableCloud":"Aktiver Cloud","modelsAcrossEndpoints":"{models} modeller på tvers av {endpoints} endepunkter","chatDesc":"Streaming og ikke-streaming chat med alle leverandører","embeddings":"Innstøpinger","embeddingsDesc":"Tekstinnbygging for søk og RAG-rørledninger","imageGeneration":"Bildegenerering","imageDesc":"Generer bilder fra tekstmeldinger","rerank":"Ranger på nytt","rerankDesc":"Ranger dokumenter på nytt etter relevans for en spørring","audioTranscription":"Lydtranskripsjon","audioTranscriptionDesc":"Transkribere lydfiler til tekst (Whisper)","textToSpeech":"Tekst til tale","textToSpeechDesc":"Konverter tekst til tale med naturlig lyd","moderations":"Moderasjoner","moderationsDesc":"Innholdsmoderering og sikkerhetsklassifisering","responsesDesc":"OpenAI Responses API for Codex and advanced agentic workflows","listModelsDesc":"List all available models across all connected providers","settingsApiDesc":"Read and modify OmniRoute configuration via API","settingsApi":"Settings API","categoryCore":"Kjerne-API-er","categoryMedia":"Media & Multi-Modal","categoryUtility":"Verktøy & Administrasjon","enableCloudTitle":"Aktiver Cloud Proxy","whatYouGet":"Hva du vil få","cloudBenefitAccess":"Få tilgang til API-en din fra hvor som helst i verden","cloudBenefitShare":"Del enkelt endepunkt med teamet ditt","cloudBenefitPorts":"Du trenger ikke å åpne porter eller konfigurere brannmur","cloudBenefitEdge":"Rask globalt kantnettverk","cloudSessionNote":"Cloud vil beholde godkjenningsøkten din i 1 dag. Hvis den ikke brukes, slettes den automatisk.","cloudUnstableNote":"Cloud er for øyeblikket ustabil med Claude Code OAuth i noen tilfeller.","cloudConnected":"Cloud Proxy tilkoblet!","connectingToCloud":"Kobler til skyen ...","verifyingConnection":"Bekrefter tilkoblingen …","connecting":"Kobler til...","verifying":"Bekrefter...","connected":"Tilkoblet!","disableCloudTitle":"Deaktiver Cloud Proxy","disableWarning":"Alle autentiseringsøkter vil bli slettet fra skyen.","syncingData":"Synkroniserer siste data ...","disablingCloud":"Deaktiverer skyen …","syncing":"Synkroniserer...","disabling":"Deaktiverer...","cloudConnectedVerified":"Cloud Proxy tilkoblet og bekreftet!","connectedVerificationPending":"Tilkoblet — bekreftelse venter","connectedVerificationPendingWithError":"Tilkoblet — bekreftelse venter: {error}","cloudDisabledSuccess":"Cloud deaktivert","syncedSuccess":"Synkronisert vellykket","failedDisable":"Kunne ikke deaktivere skyen","failedEnable":"Kunne ikke aktivere skyen","cloudRequestTimeout":"Tidsavbrudd for skyforespørsel","cloudRequestFailed":"Skyforespørsel mislyktes","cloudWorkerUnreachable":"Kunne ikke nå skyarbeideren. Sørg for at skytjenesten kjører (npm kjør dev in /cloud).","connectionFailed":"Tilkobling mislyktes","syncFailed":"Kunne ikke synkronisere skydata","providerModelsTitle":"{provider} — Modeller","noModelsForProvider":"Ingen modeller tilgjengelig for denne leverandøren.","chat":"Chat","embedding":"Innebygging","image":"Bilde","custom":"tilpasset","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Integration Surface","sectionDescription":"OpenAI-compatible APIs and operational protocol endpoints","tabApis":"OpenAI-compatible APIs","tabProtocols":"Protocols","tabsAria":"Endpoint sections","protocolsTitle":"Protocols","protocolsDescription":"MCP and A2A are first-class endpoints with dedicated observability and controls.","mcpCardTitle":"MCP Server","mcpCardDescription":"Model Context Protocol over stdio","a2aCardTitle":"A2A Server","a2aCardDescription":"Agent2Agent JSON-RPC endpoint","protocolToolsLabel":"Tools","protocolTasksLabel":"Tasks","protocolActiveStreamsLabel":"Active streams","protocolLastActivity":"Last activity","quickStart":"Quick Start","openMcpDashboard":"Open MCP management","openA2aDashboard":"Open A2A management","mcpQuickStartTitle":"MCP Quick Start","mcpQuickStartStep1":"Run the MCP server via `omniroute --mcp`.","mcpQuickStartStep2":"Configure your MCP client to connect over stdio transport.","mcpQuickStartStep3":"Påkall verktøy som `omniroute_get_health` og `omniroute_list_combos`.","a2aQuickStartTitle":"A2A hurtigstart","a2aQuickStartStep1":"Oppdag agentkortet på `/.well-known/agent.json`.","a2aQuickStartStep2":"Send JSON-RPC-forespørsler til `POST /a2a` ved å bruke `message/send` eller `message/stream`.","a2aQuickStartStep3":"Spor og kontroller oppgaver ved å bruke `tasks/get` og `tasks/cancel`.","completionsLegacy":"Completions (Legacy)","completionsLegacyDesc":"Legacy OpenAI text completions — accepts both prompt string and messages array format","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":"Laster inn MCP-dashbordet ...","activate":"aktivere","deactivate":"deaktivere","confirmSwitchCombo":"Bekreft {action} kombinasjonen \\"{combo}\\"?","switchComboFailed":"Kunne ikke bytte kombinasjonstilstand.","switchComboSuccess":"Combo \\"{combo}\\" updated.","confirmApplyProfile":"Apply resilience profile \\"{profile}\\"?","applyProfileFailed":"Failed to apply resilience profile.","applyProfileSuccess":"Profile \\"{profile}\\" applied.","confirmResetBreakers":"Reset all circuit breakers?","resetBreakersFailed":"Failed to reset circuit breakers.","resetBreakersSuccess":"Circuit breakers reset.","processStatus":"Process status","online":"Online","offline":"Offline","pid":"PID","sessionUptime":"Session uptime","lastHeartbeat":"Last heartbeat","activity24h":"Activity (24h)","totalCalls":"Total calls","successRate":"Success rate","avgLatency":"Avg latency","topTools":"Top tools","noToolCalls24h":"No tool calls in the last 24 hours.","runtimeDetails":"Runtime details","transport":"Transport","scopesEnforced":"Scopes enforced","yes":"yes","no":"no","lastCall":"Last call","heartbeatPath":"Heartbeat path","operationalControls":"Operational controls","switchCombo":"Switch combo","inactive":"inactive","active":"active","activateCombo":"Activate combo","deactivateCombo":"Deactivate combo","applyResilienceProfile":"Apply resilience profile","profileAggressive":"aggressive","profileBalanced":"balanced","profileConservative":"conservative","applyProfile":"Apply profile","resetCircuitBreakers":"Reset circuit breakers","resetCircuitBreakersHelp":"Clears current breaker state and failure counters for providers.","resetAllBreakers":"Reset all breakers","toolsAndScopes":"Tools and scopes","tableTool":"Tool","tableScopes":"Scopes","tablePhase":"Phase","tableAudit":"Audit","auditLog":"Audit log","auditSummary":"Calls: {total} | page {page} of {totalPages}","allTools":"All tools","allResults":"All results","success":"Success","failure":"Failure","apiKeyIdPlaceholder":"apiKeyId","loadingAuditEntries":"Loading audit entries...","noAuditEntriesForFilters":"No audit entries found for current filters.","tableTimestamp":"Timestamp","tableDuration":"Duration","tableResult":"Result","tableApiKey":"API key","failed":"failed","previous":"Previous","next":"Next"},"a2aDashboard":{"loading":"Loading A2A dashboard...","confirmCancelTask":"Cancel task {taskId}?","cancelTaskFailed":"Failed to cancel task.","cancelTaskSuccess":"Task {taskId} cancelled.","smokeSendFailed":"message/send smoke test failed.","smokeSendSuccessWithTask":"message/send ok (task {taskId}).","smokeSendSuccess":"message/send ok.","smokeStreamFailed":"message/stream smoke test failed.","smokeStreamSuccessWithTask":"message/stream ok (task {taskId}{stateSuffix}).","smokeStreamNoTaskId":"message/stream finished without task id.","health":"Health","ok":"ok","totalTasks":"Total tasks","activeStreams":"Active streams","lastTask":"Last task","taskStateOverview":"Task state overview","state":{"submitted":"submitted","working":"working","completed":"completed","failed":"failed","cancelled":"cancelled"},"agentCard":"Agent card","version":"Version","url":"URL","capabilities":"Capabilities","agentCardNotAvailable":"Agent card not available.","quickValidation":"Quick validation","quickValidationDescription":"Executes smoke calls through the live `/a2a` endpoint.","runMessageSend":"Run message/send","runMessageStream":"Run message/stream","taskManagement":"Task management","taskSummary":"{total} tasks | page {page} of {totalPages}","allStates":"all","allSkills":"all skills","loadingTasks":"Loading tasks...","noTasksForFilters":"No tasks found for current filters.","tableTask":"Task","tableSkill":"Skill","tableState":"State","tableUpdated":"Updated","tableActions":"Actions","view":"View","cancel":"Cancel","previous":"Previous","next":"Next","taskDetail":"Task detail","close":"Close","metadata":"Metadata","events":"Events","artifacts":"Artifacts"},"health":{"title":"Systemhelse","description":"Sanntidsovervåking av din OmniRoute-forekomst","healthy":"Sunn","degraded":"Degradert","down":"Ned","uptime":"Oppetid","memory":"Minne","memoryRss":"Minne (RSS)","heap":"Heap","cpu":"CPU","database":"Database","version":"Versjon","lastCheck":"Siste sjekk","providerHealth":"Leverandørhelse","systemMetrics":"Systemmålinger","tokenHealth":"Token Health","refreshAll":"Oppdater alle","checkNow":"Sjekk nå","loadingHealth":"Laster inn helsedata ...","failedToLoad":"Kunne ikke laste inn helsedata: {error}","retry":"Prøv på nytt","allOperational":"Alle systemer i drift","issuesDetected":"Systemproblemer oppdaget","updatedAt":"Oppdatert {time}","latency":"Latens","latencyP50":"p50","latencyP95":"s95","latencyP99":"s99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Totalt antall forespørsler","noDataYet":"Ingen data ennå","promptCache":"Spør Cache","entries":"Oppføringer","hitRate":"Trefffrekvens","hitsMisses":"Treffer / savner","signatureCache":"Signaturbuffer","signatureDefaults":"Standarder","signatureTool":"Verktøy","signatureFamily":"Familie","signatureSession":"Sesjon","recovering":"Gjenoppretter","noCBData":"Ingen strømbryterdata tilgjengelig. Kom med noen forespørsler først.","providerHealthStatusAria":"Leverandørens helsestatus","issuesLabel":"Problemer oppdaget","operational":"Operasjonell","providers":"Leverandører","healthyCount":"{count} sunn","nodeVersion":"Node {version}","failures":"{count} feil","failuresPlural":"{count} feil","lastFailure":"Sist","rateLimitStatus":"Takstgrensestatus","activeLimiters":"{count} aktiv begrenser","activeLimitersPlural":"{count} aktive begrensere","queued":"I kø","queuedCount":"{count} i kø","running":"løping","runningCount":"{count} kjører","ok":"OK","activeLockouts":"Aktive lockouter","resetConfirm":"Tilbakestille alle effektbrytere til sunn tilstand? Dette vil slette alle feiltellinger og gjenopprette alle leverandører til driftsstatus.","resetAllTitle":"Tilbakestill alle effektbrytere til sunn tilstand","resetting":"Tilbakestiller...","resetAll":"Tilbakestill alle","until":"Inntil {time}","activeProviders":"{count} active","monitoredProviders":"{count} monitored","configuredProvidersLabel":"Konfigurert i dashbordet","configuredProvidersHint":"Leverandører med legitimasjon lagret i /dashboard/leverandører, uavhengig av kjøretidstilstand.","activeProvidersHint":"Konfigurerte leverandører er for øyeblikket aktivert for rutingforespørsler.","monitoredProvidersHint":"Leverandører spores for øyeblikket av strømbryterhelsemonitorer."},"limits":{"title":"Grenser og kvoter","rateLimit":"Satsgrense","remaining":"Gjenværende","requestsPerMinute":"Forespørsler/min","tokensPerMinute":"Poletter/min","dailyLimit":"Daglig grense"},"logs":{"title":"Logger","requestLogs":"Be om logger","proxyLogs":"Proxy-logger","auditLog":"Revisjonslogg","console":"Konsoll","auditLogDesc":"Administrative handlinger og sikkerhetshendelser","loading":"Laster inn...","refresh":"Oppdater","filterByAction":"Filtrer etter handling...","filterByActor":"Filtrer etter skuespiller...","filterEntriesAria":"Filtrer revisjonsloggoppføringer","filterByActionTypeAria":"Filtrer etter handlingstype","filterByActorAria":"Filtrer etter skuespiller","refreshAuditLogAria":"Oppdater revisjonslogg","tableAria":"Revisjonsloggoppføringer","failedFetchAuditLog":"Kunne ikke hente revisjonsloggen","showing":"Viser {count} oppføringer (offset {offset})","search":"Søk","timestamp":"Tidsstempel","action":"Handling","actor":"Skuespiller","target":"Mål","details":"Detaljer","ipAddress":"IP-adresse","notAvailable":"—","noEntries":"Ingen revisjonsloggoppføringer funnet","previous":"Forrige","next":"Neste"},"onboarding":{"welcome":"Velkommen","security":"Sikkerhet","test":"Test","ready":"Klar!","setPassword":"Angi passord","addProvider":"Legg til din første leverandør","getStarted":"Kom i gang","skip":"Hopp over","skipWizard":"Hopp over veiviseren helt","skipPassword":"Hopp over passordoppsett","skipAndContinue":"Hopp over og fortsett","passwordLabel":"Passord","confirmPassword":"Bekreft passord","enterPassword":"Skriv inn passord","confirmPasswordPlaceholder":"Bekreft passord","passwordsMismatch":"Passord stemmer ikke","setupComplete":"Oppsettet er fullført!","goToDashboard":"Gå til Dashboard →","welcomeDesc":"OmniRoute er din lokale AI API-proxy. Den ruter forespørsler til flere AI-leverandører med lastbalansering, failover og brukssporing.","multiProvider":"Multileverandør","usageTracking":"Brukssporing","apiKeyMgmt":"API Key Mgmt","securityDesc":"Angi et passord for å beskytte dashbordet ditt, eller hopp over nå.","providerDesc":"Koble til din første AI-leverandør. Du kan legge til flere senere.","apiKeyRequired":"API-nøkkel (påkrevd)","customUrlOptional":"Egendefinert URL (valgfritt)","testDesc":"La oss kontrollere at leverandørtilkoblingen din fungerer.","runTest":"Kjør tilkoblingstest","testingConnection":"Tester tilkoblingen...","connectionSuccessful":"Tilkoblingen var vellykket! Leverandøren din er klar.","noProviderFound":"Ingen leverandør funnet. Du kan legge til en fra dashbordet senere.","testFailed":"Testen mislyktes, men du kan konfigurere dette senere.","couldNotTest":"Kunne ikke teste akkurat nå. Du kan teste fra dashbordet.","doneDesc":"Du er klar! OmniRoute-forekomsten din er konfigurert og klar til å fullføre AI-forespørsler.","yourEndpoint":"Ditt endepunkt:","continue":"Fortsett","retry":"Prøv på nytt","failedSetPassword":"Kunne ikke angi passord. Prøv igjen.","failedAddProvider":"Kunne ikke legge til leverandør. Prøv igjen.","connectionError":"Tilkoblingsfeil. Vennligst prøv igjen.","provider":"Leverandør"},"providers":{"title":"Leverandører","addProvider":"Legg til leverandør","editProvider":"Rediger leverandør","deleteProvider":"Slett leverandør","noProviders":"Ingen leverandører er konfigurert","modelAvailability":"Modelltilgjengelighet","accounts":"Kontoer","newAccount":"Ny konto","deleteConfirm":"Er du sikker på at du vil slette denne leverandøren?","testing":"Tester...","testConnection":"Test tilkobling","testSuccess":"Tilkoblingen var vellykket","testFailed":"Tilkobling mislyktes","available":"Tilgjengelig","cooldown":"Nedkjøling","unavailable":"Utilgjengelig","unknown":"Ukjent","oauthLabel":"OAuth","compatibleLabel":"Kompatibel","chat":"Chat","responses":"Svar","messages":"Meldinger","oauthProviders":"OAuth-leverandører","freeProviders":"Gratis leverandører","apiKeyProviders":"API-nøkkelleverandører","compatibleProviders":"API-nøkkel-kompatible leverandører","testAll":"Test alle","testAllOAuth":"Test alle OAuth-tilkoblinger","testAllFree":"Test alle gratis tilkoblinger","testAllApiKey":"Test alle API-nøkkeltilkoblinger","testAllCompatible":"Test alle kompatible tilkoblinger","connected":"{count} Tilkoblet","errorCount":"{count} Feil ({code})","errorCountNoCode":"{count} Feil","noConnections":"Ingen tilkoblinger","disabled":"Deaktivert","enableProvider":"Aktiver leverandør","disableProvider":"Deaktiver leverandør","testResults":"Testresultater","noCompatibleYet":"Ingen kompatible leverandører lagt til ennå","compatibleHint":"Bruk knappene ovenfor for å legge til OpenAI eller Anthropic-kompatible endepunkter","addOpenAICompatible":"Legg til OpenAI-kompatibel","addAnthropicCompatible":"Legg til Antropisk kompatibel","addNewProvider":"Legg til ny leverandør","backToProviders":"Tilbake til Leverandører","configureNewProvider":"Konfigurer en ny AI-leverandør som skal brukes med applikasjonene dine.","providerLabel":"Leverandør","selectProvider":"Velg en leverandør","selectedProvider":"Valgt leverandør","authMethod":"Autentiseringsmetode","apiKeyLabel":"API-nøkkel","apiKeyRequired":"API-nøkkel kreves","selectProviderRequired":"Velg en leverandør","enterApiKey":"Skriv inn API-nøkkelen din","apiKeySecure":"API-nøkkelen din vil bli kryptert og lagret sikkert.","oauth2Connect":"Koble til OAuth2","oauth2Label":"OAuth2","oauth2Desc":"Koble til kontoen din med OAuth2-autentisering.","displayName":"Vist navn","displayNamePlaceholder":"f.eks. Production API, Dev Environment","displayNameHint":"Valgfritt. Et vennlig navn for å identifisere denne konfigurasjonen.","active":"Aktiv","activeDescription":"Aktiver denne leverandøren for bruk i appene dine","cancel":"Avbryt","createProvider":"Opprett leverandør","failedCreate":"Kunne ikke opprette leverandør","errorOccurred":"Det oppsto en feil. Vennligst prøv igjen.","modelStatus":"Modellstatus","allModelsOperational":"Alle modeller i drift","modelsWithIssues":"{count} modell(er) med problemer","allModelsNormal":"Alle modellene reagerer normalt.","cooldownCleared":"Nedkjøling ryddet for {model}","failedClearCooldown":"Kunne ikke fjerne nedkjøling","loadingAvailability":"Laster modelltilgjengelighet ...","clearCooldown":"Klart","clearing":"Rydder...","until":"Inntil {time}","providerTestFailed":"Providertesten mislyktes","modeTest":"{mode} Test","passedCount":"{count} bestått","failedCount":"{count} mislyktes","testedCount":"{count} testet","millisecondsAbbr":"{value}ms","okShort":"OK","errorShort":"FEIL","noActiveConnectionsInGroup":"Fant ingen aktive tilkoblinger for denne gruppen.","allTestsPassed":"Alle {total} tester bestått","testSummary":"{passed}/{total} bestått, {failed} mislyktes","nameLabel":"Navn","prefixLabel":"Prefiks","baseUrlLabel":"Base URL","apiTypeLabel":"API-type","prefixHint":"Obligatorisk. Unikt prefiks for modellnavn.","nameHint":"Obligatorisk. En vennlig etikett for denne noden.","baseUrlHint":"Obligatorisk. Leverandørens API-base-URL.","anthropicPrefixPlaceholder":"ac-prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Bekreft tilkoblingen","validating":"Validerer...","connectionValid":"Tilkoblingen er gyldig!","connectionFailed":"Tilkobling mislyktes. Sjekk URL og nøkkel.","testKeyLabel":"Test API-nøkkel","testKeyPlaceholder":"sk-... (kun for validering)","providerNotFound":"Finner ikke leverandør","deleteConnectionConfirm":"Vil du slette denne tilkoblingen?","failedSetAlias":"Kunne ikke angi alias","failedSaveConnection":"Kunne ikke lagre tilkoblingen","failedSaveConnectionRetry":"Kunne ikke lagre tilkoblingen. Vennligst prøv igjen.","failedRetestConnection":"Kunne ikke teste tilkoblingen på nytt","deleteCompatibleNodeConfirm":"Vil du slette denne {type}-kompatible noden?","anthropicCompatibleDetails":"Antropisk kompatible detaljer","openaiCompatibleDetails":"OpenAI-kompatible detaljer","messagesApi":"Messages API","responsesApi":"Responses API","chatCompletions":"Chatfullføringer","importingModels":"Importerer...","importFromModels":"Importer fra /models","clearAllModels":"Fjern alle modeller","clearAllModelsConfirm":"Er du sikker på at du vil fjerne alle modellene for denne leverandøren? Dette kan ikke angres.","clearAllModelsSuccess":"Alle modeller ryddet","clearAllModelsFailed":"Kunne ikke slette modeller","addConnectionToImport":"Legg til en tilkobling for å aktivere import.","noModelsConfigured":"Ingen modeller er konfigurert","connectionCount":"{count} tilkobling(er)","fetchingModels":"Henter tilgjengelige modeller...","failedFetchModels":"Kunne ikke hente modellene","noModelsFound":"Ingen modeller funnet","importFailed":"Import mislyktes","noNewModelsAdded":"Ingen nye modeller ble lagt til.","adding":"Legger til...","importingModelsTitle":"Importere modeller","copyModel":"Kopier modell","removeModel":"Fjern modellen","rateLimitProtected":"Beskyttet","rateLimitUnprotected":"Ubeskyttet","enableRateLimitProtection":"Klikk for å aktivere satsgrensebeskyttelse","disableRateLimitProtection":"Klikk for å deaktivere satsgrensebeskyttelse","productionKey":"Produksjonsnøkkel","enterNewApiKey":"Skriv inn ny API-nøkkel","optional":"Valgfritt","anthropicCompatibleName":"Antropisk kompatibel","openaiCompatibleName":"OpenAI-kompatibel","failedImportModels":"Kunne ikke importere modeller","noModelsReturnedFromEndpoint":"Ingen modeller returnert fra /models endepunkt.","importingModelsProgress":"Importerer {current} av {total} modeller ...","foundModelsStartingImport":"Fant {count} modeller. Starter import...","importingModelById":"Importerer {modelId}...","importSuccessCount":"Vellykket importert {count, plural, one {# model} other {# models}}!","noNewModelsAddedExisting":"Ingen nye modeller ble lagt til (alle finnes allerede).","importDoneCount":"✓ Ferdig! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Det oppstod en uventet feil","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"meldinger","responsesPath":"svar","chatCompletionsPath":"chat/fullføringer","add":"Legg til","edit":"Rediger","delete":"Slett","anthropic":"Antropisk","openai":"OpenAI","singleConnectionPerCompatible":"Bare én tilkobling er tillatt per kompatibel node. Legg til en annen node hvis du trenger flere tilkoblinger.","connections":"Tilkoblinger","providerProxyTitleConfigured":"Leverandørproxy: {host}","configured":"konfigurert","providerProxyConfigureHint":"Konfigurer proxy for alle tilkoblinger til denne leverandøren","providerProxy":"Leverandørfullmakt","noConnectionsYet":"Ingen tilkoblinger ennå","addFirstConnectionHint":"Legg til din første tilkobling for å komme i gang","addConnection":"Legg til tilkobling","availableModels":"Tilgjengelige modeller","pageAutoRefresh":"Siden oppdateres automatisk...","statusDisabled":"deaktivert","statusConnected":"tilkoblet","statusRuntimeIssue":"kjøretidsproblem","statusAuthFailed":"auth mislyktes","statusRateLimited":"sats begrenset","statusNetworkIssue":"nettverksproblem","statusTestUnsupported":"test støttes ikke","statusUnavailable":"utilgjengelig","statusFailed":"mislyktes","statusError":"feil","oauthAccount":"OAuth-konto","errorTypeRuntime":"Lokal kjøretid","errorTypeUpstreamAuth":"Oppstrøms auth","errorTypeMissingCredential":"Mangler legitimasjon","errorTypeRefreshFailed":"Oppdatering mislyktes","errorTypeTokenExpired":"Token utløpt","errorTypeRateLimited":"Begrenset pris","errorTypeUpstreamUnavailable":"Oppstrøms utilgjengelig","errorTypeNetworkError":"Nettverksfeil","errorTypeTestUnsupported":"Testen støttes ikke","errorTypeUpstreamError":"Oppstrøms feil","proxySourceGlobal":"Globalt","proxySourceProvider":"Leverandør","proxySourceKey":"Nøkkel","proxyConfiguredBySource":"Fullmakt ({source}): {host}","autoPriority":"Auto: {priority}","proxy":"Fullmakt","retestAuthentication":"Test autentisering på nytt","retest":"Test på nytt","disableConnection":"Deaktiver tilkobling","enableConnection":"Aktiver tilkobling","reauthenticateConnection":"Autentiser denne tilkoblingen på nytt","proxyConfig":"Proxy konfig","aliasExistsAlert":"Aliaset \\"{alias}\\" eksisterer allerede. Bruk en annen modell eller rediger eksisterende alias.","openRouterAnyModelHint":"OpenRouter støtter alle modeller. Legg til modeller og lag aliaser for rask tilgang.","modelIdFromOpenRouter":"Modell-ID (fra OpenRouter)","openRouterModelPlaceholder":"antropisk/claude-3-opus","customModels":"Egendefinerte modeller","customModelsHint":"Legg til modell-ID-er som ikke er i standardlisten. Disse vil være tilgjengelige for ruting.","modelId":"Modell-ID","customModelPlaceholder":"f.eks. gpt-4.5-turbo","loading":"Laster inn...","removeCustomModel":"Fjern tilpasset modell","noCustomModels":"Ingen tilpassede modeller lagt til ennå.","allSuggestedAliasesExist":"Alle foreslåtte aliaser finnes allerede. Velg en annen modell eller fjern motstridende aliaser.","failedSaveCustomModel":"Kunne ikke lagre egendefinert modell","modelAddedSuccess":"Modell {modelId} ble lagt til","failedAddModelTryAgain":"Kunne ikke legge til modell. Vennligst prøv igjen.","failedSaveImportedModel":"Kunne ikke lagre importert modell til egendefinert database","failedImportModelsTryAgain":"Kunne ikke importere modeller. Vennligst prøv igjen.","failedRemoveModelFromDatabase":"Kunne ikke fjerne modellen fra databasen","modelRemovedSuccess":"Modellen ble fjernet","failedDeleteModelTryAgain":"Kunne ikke slette modellen. Vennligst prøv igjen.","compatibleModelsDescription":"Legg til {type}-kompatible modeller manuelt eller importer dem fra /models-endepunktet.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"API-nøkkelvalidering mislyktes. Sjekk nøkkelen din og prøv igjen.","addProviderApiKeyTitle":"Legg til {provider} API-nøkkel","checking":"Sjekker...","check":"Sjekk","valid":"Gyldig","invalid":"Ugyldig","creating":"Oppretter...","validationChecksAnthropicCompatible":"Valideringssjekker {provider} ved å bekrefte API-nøkkelen.","validationChecksOpenAiCompatible":"Valideringssjekker {provider} via /models på din basis-URL.","priorityLabel":"Prioritet","saving":"Lagrer...","save":"Lagre","editConnection":"Rediger tilkobling","accountName":"Kontonavn","email":"E-post","healthCheckMinutes":"Helsesjekk (min)","healthCheckHint":"Proaktivt token-oppdateringsintervall. 0 = deaktivert.","groupLabel":"Environment","groupPlaceholder":"e.g. eKaizen, Personal","failedTestConnection":"Kunne ikke teste tilkoblingen","failed":"Mislyktes","leaveBlankKeepCurrentApiKey":"La stå tomt for å beholde gjeldende API-nøkkel.","editCompatibleTitle":"Rediger {type} Kompatibel","compatibleBaseUrlHint":"Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.","apiKeyForCheck":"API-nøkkel (for sjekk)","compatibleProdPlaceholder":"{type} Kompatibel (Prod)","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":"Oppdater modelllisten automatisk hver 24. time (kan konfigureres via MODEL_SYNC_INTERVAL_HOURS)","autoSyncEnabled":"Automatisk synkronisering aktivert – modellene oppdateres med jevne mellomrom","autoSyncDisabled":"Automatisk synkronisering er deaktivert","autoSyncToggleFailed":"Kunne ikke slå på automatisk synkronisering","allModelsAlreadyImported":"Alle modeller er allerede importert","noNewModelsToImport":"Ingen nye modeller å importere — alle modeller finnes allerede i registeret eller listen over egendefinerte modeller","skippingExistingModels":"Hopper over {count} eksisterende modeller"},"settings":{"title":"Innstillinger","general":"Generelt","security":"Sikkerhet","appearance":"Utseende","routing":"Ruting","cache":"Cache","resilience":"Spenst","systemPrompt":"Systemmelding","thinkingBudget":"Tenker budsjett","proxy":"Fullmakt","pricing":"Prissetting","storage":"Oppbevaring","policies":"Retningslinjer","ipFilter":"IP-filter","comboDefaults":"Combo standarder","fallbackChains":"Reservekjeder","changePassword":"Endre passord","enablePassword":"Aktiver passord","darkMode":"Mørk modus","lightMode":"Lysmodus","systemTheme":"Systemtema","enableCache":"Aktiver cache","cacheTTL":"Cache TTL","maxCacheSize":"Maks cachestørrelse","clearCache":"Tøm buffer","cacheHits":"Cache-treff","cacheMisses":"Cache Misses","hitRate":"Trefffrekvens","cacheEntries":"Bufferoppføringer","circuitBreaker":"Strømbryter","retryPolicy":"Retningslinjer for forsøk","maxRetries":"Max prøver på nytt","retryDelay":"Forsinkelse på nytt","timeoutMs":"Tidsavbrudd (ms)","enableSystemPrompt":"Aktiver systemforespørsel","systemPromptText":"Systemmeldingstekst","enableThinking":"Aktiver tenkning","maxThinkingTokens":"Max Thinking Tokens","enableProxy":"Aktiver proxy","proxyUrl":"Proxy URL","pricingRates":"Prisformat","currentPricing":"Gjeldende prisoversikt","loadingPricing":"Laster inn prisdata ...","noPricing":"Ingen prisdata tilgjengelig","input":"Inndata","output":"Utgang","cached":"Bufret","reasoning":"Resonnement","cacheCreation":"Oppretting av cache","customPricing":"Egendefinerte priser","databaseSize":"Databasestørrelse","backupDb":"Sikkerhetskopier database","restoreDb":"Gjenopprett database","exportData":"Eksporter data","importData":"Importer data","clearData":"Fjern alle data","clearDataConfirm":"Dette vil slette alle data permanent. Er du sikker?","enableRequestLogs":"Aktiver forespørselslogger","logRetention":"Loggoppbevaring","ipWhitelist":"IP-hviteliste","ipBlacklist":"IP svarteliste","addIP":"Legg til IP","savedSuccessfully":"Innstillingene er lagret","ai":"AI","advanced":"Avansert","localMode":"Lokal modus — Alle data som er lagret på maskinen din","settingsSectionsAria":"Innstillinger-seksjoner","switchThemes":"Bytt mellom lyse og mørke temaer","themeSelectionAria":"Temavalg","themeLight":"Lys","themeDark":"Mørkt","themeSystem":"System","hideHealthLogs":"Skjul helsesjekklogger","hideHealthLogsDesc":"Når PÅ, undertrykk [HealthCheck]-meldinger i serverkonsollen","themeAccent":"Temafarge","themeAccentDesc":"Velg en forhåndsinnstilt farge eller lag ditt eget tema med én farge","themeCreate":"Opprett tema","themeCustom":"Egendefinert tema","themeBlue":"Blå","themeRed":"Rød","themeGreen":"Grønn","themeViolet":"Fiolett","themeOrange":"Oransje","themeCyan":"Cyan","promptCache":"Spør Cache","flushCache":"Skyll cache","flushing":"Skyller …","size":"Størrelse","hits":"Treffer","evictions":"Utkastelser","loadingCacheStats":"Laster cachestatistikk …","globalProxy":"Global proxy","globalProxyDesc":"Konfigurer en global utgående proxy for alle API-kall. Individuelle leverandører, kombinasjoner og nøkler kan overstyre dette.","noGlobalProxy":"Ingen global proxy er konfigurert","globalLabel":"Globalt","configure":"Konfigurer","globalSystemPrompt":"Global systemforespørsel","systemPromptDesc":"Injisert i alle forespørsler på proxy-nivå","saved":"Lagret","systemPromptPlaceholder":"Skriv inn systemforespørselen for å injisere i alle forespørsler...","systemPromptHint":"Denne ledeteksten vises foran systemmeldingen for hver forespørsel. Bruk for globale instruksjoner, sikkerhetsretningslinjer eller regler for responsformatering.","chars":"{count} tegn","thinkingBudgetTitle":"Tenker budsjett","thinkingBudgetDesc":"Kontroller bruk av AI-resonnementstoken på tvers av alle forespørsler","passthrough":"Gjennomgang","passthroughDesc":"Ingen endringer – klienten kontrollerer tenkebudsjettet","auto":"Auto","autoDesc":"Fjern all tenkekonfigurasjon – la leverandøren bestemme","custom":"Egendefinert","customDesc":"Angi et fast tokenbudsjett for alle forespørsler","adaptive":"Adaptiv","adaptiveDesc":"Skaler budsjett basert på forespørselskompleksitet","effortNone":"Ingen (0 tokens)","effortLow":"Lav (1K tokens)","effortMedium":"Medium (10 000 tokens)","effortHigh":"Høy (128 000 tokens)","tokenBudget":"Tokenbudsjett","tokens":"tokens","baseEffortLevel":"Grunninnsatsnivå","adaptiveHint":"Adaptiv modus skalerer fra dette basisnivået basert på antall meldinger, verktøybruk og forespørselslengde.","requireLogin":"Krev innlogging","requireLoginDesc":"Når PÅ, krever dashbordet passord. Når AV, tilgang uten pålogging.","currentPassword":"Gjeldende passord","enterCurrentPassword":"Skriv inn gjeldende passord","newPassword":"Nytt passord","enterNewPassword":"Skriv inn nytt passord","confirmPassword":"Bekreft nytt passord","confirmPasswordPlaceholder":"Bekreft nytt passord","passwordsNoMatch":"Passord stemmer ikke","passwordUpdated":"Passordet ble oppdatert","failedUpdatePassword":"Kunne ikke oppdatere passordet","errorOccurred":"Det oppsto en feil","updatePassword":"Oppdater passord","setPassword":"Angi passord","apiEndpointProtection":"API-endepunktbeskyttelse","requireAuthModels":"Krev API-nøkkel for /modeller","requireAuthModelsDesc":"Når PÅ, returnerer /v1/models-endepunktet 404 for uautentiserte forespørsler. Forhindrer modelloppdagelse av uautoriserte brukere.","blockedProviders":"Blokkerte leverandører","blockedProvidersDesc":"Skjul spesifikke leverandører fra /v1/models-svaret. Blokkerte leverandører vil ikke vises i modelloppføringer.","providersBlocked":"{count} leverandør(er) blokkert fra /modeller","blockProviderTitle":"Blokkér {provider}","unblockProviderTitle":"Fjern blokkering av {provider}","routingStrategy":"Rutingstrategi","fillFirst":"Fyll først","fillFirstDesc":"Bruk kontoer i prioritert rekkefølge","roundRobin":"Round Robin","roundRobinDesc":"Bla gjennom alle kontoer","p2c":"P2C","p2cDesc":"Velg 2 tilfeldig, bruk den sunnere","random":"Tilfeldig","randomDesc":"Tilfeldig konto hver forespørsel","leastUsed":"Minst brukt","leastUsedDesc":"Velg minst nylig brukte konto","costOpt":"Kostnad Opt","costOptDesc":"Foretrekker den billigste tilgjengelige kontoen","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each account once before reshuffling","stickyLimit":"Sticky Limit","stickyLimitDesc":"Anrop per konto før bytte","modelAliases":"Modellaliaser","modelAliasesTitle":"Modellaliaser","modelAliasesDesc":"Jokertegnmønstre for å tilordne modellnavn på nytt • Bruk * og ?","addCustomAlias":"Legg til Tilpasset Alias","deprecatedModelId":"Utdatert modell-ID","newModelId":"Ny modell-ID","customAliases":"Tilpassede Aliaser","builtInAliases":"Innebygde Aliaser","backgroundDegradationTitle":"Bakgrunnsoppgave Degradering","backgroundDegradationDesc":"Oppdager automatisk bakgrunnsoppgaver (titler, sammendrag) og ruter til billigere modeller","enableDegradation":"Aktiver Bakgrunnsdegradation","enableDegradationHint":"Når aktivert, rutes bakgrunnsoppgaver som tittelegenerering og sammendrag automatisk til billigere modeller","tasksDetected":"Oppgaver oppdaget","degradationMap":"Modelldegraderingsschema","premiumModel":"Premiummodell","cheapModel":"Billig modell","detectionPatterns":"Deteksjonsmønstre","newPattern":"f.eks. \\"generer en tittel\\"","aliasPatternPlaceholder":"claude-sonnett-*","aliasTargetPlaceholder":"claude-sonnett-4-20250514","pattern":"Mønster","targetModel":"Målmodell","add":"+ Legg til","session":"Sesjon","sessionDetailsAria":"Sesjonsdetaljer","status":"Status","authenticated":"Autentisert","guest":"Gjest","loginTime":"Påloggingstid","sessionAge":"Sesjonsalder","browser":"Nettleser","clearLocalData":"Fjern lokale data","logout":"Logg ut","clearLocalDataConfirm":"Vil du slette alle lokale data? Dette vil tilbakestille innstillingene dine.","unknown":"Ukjent","systemActor":"systemet","ipAccessControl":"IP-tilgangskontroll","ipAccessControlDesc":"Blokker eller tillat bestemte IP-adresser","ipModeDisabled":"Deaktivert","ipModeBlacklist":"Svarteliste","ipModeWhitelist":"Hviteliste","ipModeWhitelistPriority":"WL prioritet","addIpAddress":"Legg til IP-adresse","ipAddressPlaceholder":"192.168.1.0/24 eller 10.0.*.*","block":"+ Blokker","allow":"+ Tillat","blocked":"Blokkert ({count})","allowed":"Tillatt ({count})","temporaryBans":"Midlertidig utestengelse ({count})","minLeft":"{min}m igjen","auditLog":"Revisjonslogg","searchAuditLogs":"Søk i revisjonslogger...","failedLoadAuditLog":"Kunne ikke laste inn revisjonsloggen","noAuditEvents":"Ingen revisjonshendelser funnet","action":"Handling","actor":"Skuespiller","details":"Detaljer","time":"Tid","fallbackChainsTitle":"Reservekjeder","fallbackChainsDesc":"Definer leverandørens reserveordre per modell","addChain":"+ Legg til kjede","modelName":"Modellnavn","modelNamePlaceholder":"claude-sonnett-4-20250514","providersCommaSeparated":"Leverandører (kommaseparert, i prioritert rekkefølge)","providersCommaSeparatedPlaceholder":"antropisk, openai, gemini","createChain":"Lag kjede","noFallbackChains":"Ingen reservekjeder","noFallbackChainsDesc":"Opprett en kjede for å definere leverandørens reserveordre for en modell.","loadingFallbackChains":"Laster inn reservekjeder...","deleteChainConfirm":"Vil du slette reservekjeden for «{model}»?","chainCreated":"Kjede opprettet for {model}","chainDeleted":"Kjede slettet for {model}","failedCreateChain":"Kunne ikke opprette kjede","failedDeleteChain":"Kunne ikke slette kjeden","deleteChain":"Slett kjede","fillModelAndProviders":"Fyll ut modellnavn og leverandører","addAtLeastOneProvider":"Legg til minst én leverandør","comboDefaultsTitle":"Combo standarder","globalComboConfig":"Global kombinasjonskonfigurasjon","defaultStrategy":"Standardstrategi","defaultStrategyDesc":"Brukes på nye kombinasjoner uten eksplisitt strategi","comboStrategyAria":"Kombinasjonsstrategi","priority":"Prioritet","weighted":"Vektet","maxRetriesLabel":"Max prøver på nytt","retryDelayLabel":"Forsinkelse på nytt (ms)","timeoutLabel":"Tidsavbrudd (ms)","healthCheck":"Helsesjekk","healthCheckDesc":"Forhåndssjekk leverandørens tilgjengelighet","trackMetrics":"Spor beregninger","trackMetricsDesc":"Registrer beregninger for forespørsel per kombinasjon","providerOverrides":"Leverandøroverstyringer","providerOverridesDesc":"Overstyr tidsavbrudd og forsøk på nytt per leverandør. Leverandørinnstillinger overstyrer globale standardinnstillinger.","providerMaxRetriesAria":"{provider} maksimalt forsøk","providerTimeoutAria":"{provider} tidsavbrudd ms","removeProviderOverrideAria":"Fjern {provider} overstyring","newProviderNamePlaceholder":"f.eks. google, åpne...","newProviderNameAria":"Nytt leverandørnavn","retries":"prøver på nytt","ms":"ms","saveComboDefaults":"Lagre Combo-standarder","maxNestingDepth":"Maks hekkedybde","concurrencyPerModel":"Samtidighet / modell","queueTimeout":"Tidsavbrudd for kø (ms)","providerProfiles":"Leverandørprofiler","providerProfilesDesc":"Separate innstillinger for motstandskraft for OAuth (øktbasert) og API Key (målt) leverandører. OAuth-leverandører har strengere terskler på grunn av lavere takstgrenser.","oauthProviders":"OAuth-leverandører","apiKeyProviders":"API-nøkkelleverandører","transientCooldown":"Forbigående nedkjøling","rateLimitCooldown":"Rate Limit Cooldown","maxBackoffLevel":"Maks Backoff Level","cbThreshold":"CB-terskel","cbResetTime":"CB-tilbakestillingstid","rateLimiting":"Satsbegrensende","rateLimitingDesc":"API-nøkkelleverandører er automatisk hastighetsbegrenset med sikre standardinnstillinger. Grenser læres fra responsoverskrifter og tilpasses over tid.","defaultSafetyNet":"Standard sikkerhetsnett","rpm":"RPM","minGap":"Min Gap","maxConcurrent":"Maks samtidig","activeLimiters":"Aktive begrensere","noActiveLimiters":"Ingen aktive ratebegrensere ennå.","reservoir":"Reservoar","running":"Løper","queued":"I kø","circuitBreakers":"Strømbrytere","breakerStateClosed":"Stengt","breakerStateOpen":"Åpne","breakerStateHalfOpen":"Halvåpent","tripped":"{count} utløste","healthy":"{count} sunn","resetAll":"Tilbakestill alle","noCircuitBreakers":"Ingen effektbrytere aktive ennå. De opprettes automatisk når forespørsler strømmer gjennom kombinasjonsrørledningen.","failures":"{count} feil(er)","policiesLocked":"Retningslinjer og låste identifikatorer","allOperational":"Alle systemer er i drift - ingen sperringer eller utløste brytere","loadingPolicies":"Laster inn retningslinjer ...","lockedIdentifiers":"Låste identifikatorer","unlockedIdentifier":"Ulåst: {identifier}","sinceDate":"siden {date}","forceUnlock":"Tving opplåsing","unlocking":"Låser opp ...","failedUnlock":"Kunne ikke låse opp","failedLoadWithStatus":"Kunne ikke laste inn: {status}","failedLoadResilience":"Kunne ikke laste inn resiliensstatus","saveFailed":"Lagring mislyktes","resetFailed":"Tilbakestilling mislyktes","loadingResilience":"Laster motstandsstatus ...","retry":"Prøv på nytt","systemStorage":"System og lagring","allDataLocal":"Alle data lagret lokalt på maskinen din","databasePath":"Databasebane","exportDatabase":"Eksporter database","exportAll":"Eksporter alle (.tar.gz)","importDatabase":"Importer database","confirmDbImport":"Bekreft databaseimport","confirmDbImportDesc":"Dette vil erstatte alle gjeldende data med innholdet fra {file}. En sikkerhetskopi opprettes automatisk før importen.","yesImport":"Ja, import","lastBackup":"Siste sikkerhetskopi","noBackupYet":"Ingen sikkerhetskopi ennå","backupNow":"Sikkerhetskopier nå","backupRestore":"Sikkerhetskopiering og gjenoppretting","viewBackups":"Se sikkerhetskopier","hide":"Skjul","backupRetentionDesc":"Database-øyeblikksbilder opprettes automatisk før gjenoppretting og hvert 15. minutt når data endres. Oppbevaring: 24 timer i timen + 30 daglige sikkerhetskopier med smart rotasjon.","loadingBackups":"Laster inn sikkerhetskopier...","noBackupsYet":"Ingen sikkerhetskopier tilgjengelig ennå. Sikkerhetskopier opprettes automatisk når data endres.","backupsAvailable":"{count} sikkerhetskopi(er) tilgjengelig","refresh":"Oppdater","confirm":"Bekrefte?","yes":"Ja","no":"Nei","restore":"Gjenopprett","invalidFileType":"Ugyldig filtype. Bare .sqlite-filer godtas.","exportFailed":"Eksporten mislyktes","exportFailedWithError":"Eksport mislyktes: {error}","fullExportFailedWithError":"Full eksport mislyktes: {error}","backupCreated":"Sikkerhetskopi opprettet: {file}","restoreSuccess":"Gjenopprettet! {connections} tilkoblinger, {nodes} noder, {combos} kombinasjoner, {apiKeys} API-nøkler.","importSuccess":"Database importert! {connections} tilkoblinger, {nodes} noder, {combos} kombinasjoner, {apiKeys} API-nøkler.","justNow":"akkurat nå","minutesAgo":"{count}m siden","hoursAgo":"{count}t siden","daysAgo":"{count}d siden","backupReasonManual":"manuell","backupReasonPreRestore":"forhåndsgjenoppretting","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Ingen endringer siden siste sikkerhetskopiering","backupFailed":"Sikkerhetskopiering mislyktes","restoreFailed":"Gjenoppretting mislyktes","importFailed":"Import mislyktes","errorDuringRestore":"Det oppstod en feil under gjenoppretting","errorDuringImport":"Det oppstod en feil under import","modelPricing":"Modellprising","modelPricingDesc":"Konfigurer kostnadssatser per modell • Alle priser i $/1M tokens","providers":"Leverandører","registry":"Register","priced":"Priset","searchProvidersModels":"Søk etter leverandører eller modeller...","showAll":"Vis alle","noProvidersMatch":"Ingen leverandører samsvarer med søket ditt.","howPricingWorks":"Hvordan prissetting fungerer","cacheWrite":"Cache-skriving","unsaved":"ikke lagret","resetDefaults":"Tilbakestill standarder","saveProvider":"Lagre leverandør","saving":"Lagrer...","model":"Modell","models":"modeller","moreProviders":"{count} flere leverandører","withPricing":"med konfigurert pris","policiesCircuitBreakers":"Retningslinjer og effektbrytere","activeIssuesDetected":"Aktive problemer oppdaget","off":"Av","resetPricingConfirm":"Vil du tilbakestille all prissetting for {provider} til standardverdiene?","pricingDescInput":"Inndata: tokens sendt til modellen","pricingDescOutput":"Utgang: tokens generert","pricingDescCached":"Bufret: gjenbrukt inndata (~50 % av inndatahastigheten)","pricingDescReasoning":"Begrunnelse: tenketegn (faller tilbake til utgang)","pricingDescCacheWrite":"Cache Write: lage cache-oppføringer (faller tilbake til Input)","pricingDescFormula":"Kostnad = (input × input_rate) + (output × output_rate) + (cached × cached_rate) per million tokens.","pricingSettingsTitle":"Prisinnstillinger","totalModels":"Totalt antall modeller","active":"Aktiv","costCalculation":"Kostnadsberegning","costCalculationDesc":"Kostnadene beregnes basert på tokenbruk og prissatser som er konfigurert for hver modell.","pricingFormat":"Prisformat","pricingFormatDesc":"Alle priser er i $/1M tokens (dollar per million tokens).","tokenTypes":"Tokentyper","inputTokenDesc":"Standard prompt-tokens","outputTokenDesc":"Fullførings-/svarbrikke","cachedTokenDesc":"Bufret inndatatoken (vanligvis 50 % av inndatahastigheten)","reasoningTokenDesc":"Spesielle resonnement-/tenkesymboler (tilbakeslag til produksjonshastighet)","cacheCreationTokenDesc":"Tokens som brukes til å lage cache-oppføringer (tilbake til inngangshastighet)","customPricingNote":"Du kan overstyre standardpriser for spesifikke modeller. Egendefinerte overstyringer prioriteres fremfor automatisk oppdagede priser.","editPricing":"Rediger priser","viewFullDetails":"Se alle detaljer","themeCoral":"Korall","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":"Avansert ruteveiledning","routingAdvancedGuideHint1":"Bruk Fill First for forutsigbar prioritet, Round Robin for rettferdighet og P2C for latensmotstandskraft.","routingAdvancedGuideHint2":"Hvis leverandørene varierer i kvalitet/kostnad, start med Cost Opt for bakgrunnsarbeid og Minst brukt for balansert slitasje.","comboDefaultsGuideTitle":"Hvordan justere kombinasjonsstandarder","comboDefaultsGuideHint1":"Hold lave gjenforsøk i flyter med lav latens; øke tidsavbruddet bare for langgenerasjonsoppgaver.","comboDefaultsGuideHint2":"Bruk leverandøroverstyringer når en leverandør trenger annen tidsavbrudd/forsøk på nytt enn globale standardinnstillinger."},"translator":{"title":"Oversetter","metaTitle":"Oversetter Lekeplass | OmniRoute","metaDescription":"Feilsøk, test og visualiser API-formatoversettelser mellom leverandører","playgroundTitle":"Oversetter Lekeplass","playground":"Lekeplass","realtime":"Oversettelsesaktivitet i sanntid","chatTester":"Chat Tester","testBench":"Testbenk","liveMonitor":"Live Monitor","modeDescriptionPlayground":"Lim inn en hvilken som helst API-forespørselstekst og se hvordan OmniRoute oversetter den mellom leverandørformater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","modeDescriptionChatTester":"Send ekte chatteforespørsler gjennom OmniRoute og inspiser hele rundturen: inndata, oversatt forespørsel, leverandørsvar og oversatt utdata.","modeDescriptionTestBench":"Kjør forhåndsdefinerte scenarier og sammenlign kompatibilitet på tvers av leverandører og modeller.","modeDescriptionLiveMonitor":"Se oversettelsesbegivenheter i sanntid mens forespørsler strømmer gjennom OmniRoute.","modeDescriptionFallback":"Feilsøk, test og visualiser hvordan OmniRoute oversetter API-forespørsler mellom leverandører.","recentTranslations":"Nylige oversettelser","noTranslations":"Ingen oversettelser ennå","source":"Kilde","target":"Mål","time":"Tid","model":"Modell","status":"Status","latency":"Latens","totalTranslations":"Totale oversettelser","successful":"Vellykket","errors":"Feil","avgLatency":"Gj.sn. ventetid","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"Live — Automatisk oppdatering","paused":"Pause","eventsAppearHint":"Oversettelseshendelser vises her når forespørsler strømmer gjennom OmniRoute. Bruk en av disse metodene for å generere hendelser:","chatTesterTab":"Chat Tester-fanen","testBenchTab":"Testbenk-fanen","externalApiCalls":"Eksterne API-anrop","ideCliIntegrations":"IDE/CLI-integrasjoner","inMemoryNote":"Merk: Hendelser lagres i minnet og tilbakestilles når serveren starter på nytt.","ok":"OK","errorShort":"FEIL","formatConverter":"Formatkonvertering","formatConverterDescription":"Lim inn eller skriv inn en JSON-forespørselstekst. Oversetteren vil automatisk oppdage kildeformatet og konvertere det til målformatet. Bruk denne til å feilsøke hvordan OmniRoute oversetter forespørsler mellom formater (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).","input":"Inndata","output":"Utgang","auto":"Auto","swapFormats":"Bytt formater","translateAction":"Oversett","clear":"Klart","inputPlaceholder":"Lim inn en forespørselstekst her eller velg en mal nedenfor...","exampleTemplates":"Eksempelmaler","exampleTemplatesHint":"— Klikk for å laste","templateLoadHint":"Malen laster forespørselen i {format}-format. Endre kildeformat for å laste inn i et annet format.","compatibilityTester":"Kompatibilitetstester","compatibilityReport":"Kompatibilitetsrapport","testBenchDescription":"Kjør forhåndsdefinerte scenarier (Simple Chat, Tool Calling, etc.) for å bekrefte oversettelse og leverandørkompatibilitet. Velg et kildeformat og målleverandør, og kjør deretter alle testene for å se en kompatibilitetsprosent. Bruk denne for å finne hvilke funksjoner som fungerer på tvers av leverandører.","targetProvider":"Målleverandør","runAllTests":"Kjør alle tester","runTest":"Kjør test","reRun":"Kjør på nytt","running":"Kjører...","passed":"bestått","failed":"mislyktes","passedIconLabel":"✅ Bestått","chunks":"biter","scenarioSimpleChat":"Enkel chat","scenarioToolCalling":"Verktøyanrop","scenarioMultiTurn":"Multisving","scenarioThinking":"Tenker","scenarioSystemPrompt":"Systemmelding","scenarioStreaming":"Streaming","templateNames":{"simple-chat":"Enkel chat","tool-calling":"Verktøyanrop","multi-turn":"Multisving","thinking":"Tenker","system-prompt":"Systemmelding","streaming":"Streaming"},"templateDescriptions":{"simple-chat":"Grunnleggende tekstmelding","tool-calling":"Funksjon/verktøy-påkalling","multi-turn":"Samtale med historien","thinking":"Utvidet tenkning / resonnement","system-prompt":"Komplekse systeminstruksjoner","streaming":"SSE-strømforespørsel"},"templatePayloads":{"simpleChat":{"system":"Du er en hjelpsom assistent.","userGreeting":"Hei! Hvordan har du det i dag?"},"toolCalling":{"userWeather":"Hvordan er været i São Paulo?","toolDescription":"Få gjeldende vær for et sted","cityNameDescription":"Bynavn"},"multiTurn":{"system":"Du er en kodeassistent.","userInitial":"Skriv en funksjon for å sortere en matrise i Python.","assistantExample":"Her er en enkel sorteringsfunksjon:\\n\\n``` python\\ndef sort_array(arr):\\n return sortert(arr)\\n```","userFollowUp":"Gjør det nå sortert i synkende rekkefølge."},"thinking":{"question":"Hva er summen av de første 100 primtallene?"},"systemPrompt":{"systemInstruction":"Du er en senior programvareingeniør med spesialisering i distribuerte systemer. Svar konsist på spørsmål ved å bruke bransjens beste praksis. Gi alltid kodeeksempler når det er relevant. Formater svarene dine med markdown.","question":"Hvordan implementerer jeg et strømbrytermønster?"},"streaming":{"prompt":"Fortell meg en kort historie om en robot som lærer å male."}},"openaiCompatibleLabel":"OpenAI-kompatibel","anthropicCompatibleLabel":"Antropisk kompatibel","noTemplateForFormat":"Ingen mal for dette formatet","translationFailed":"Oversettelse mislyktes: {error}","pipelineDebugger":"Pipeline Debugger","translationPipeline":"Oversettelsesrørledning","pipelineVisualization":"Visualisering av pipeline","pipelineVisualizationHint":"Send en melding for å se hvordan forespørselen din flyter gjennom gjenkjenning → oversettelse → leverandøranrop.","chatTesterDescription":"Send meldinger som et spesifikt klientformat og inspiser hvert trinn i oversettelsespipelinen.","chatTesterFlow":"Klientforespørsel → Formatdeteksjon → OpenAI Intermediate → Leverandørformat → Svar","clickStepToInspect":"Klikk på et hvilket som helst trinn for å inspisere dataene på det stadiet.","clientFormat":"Klientformat","provider":"Leverandør","modelPlaceholder":"Velg eller skriv inn et modellnavn...","sendMessageToSeePipeline":"Send en melding for å se oversettelsespipeline","chatMessageHintPrefix":"Meldingen din vil bli formatert som en","chatMessageHintSuffix":"forespørsel, oversatt gjennom rørledningen og sendt til den valgte leverandøren.","youWithFormat":"Du ({format})","assistant":"Assistent","typeMessage":"Skriv inn en melding...","send":"Send","clientRequest":"Kundeforespørsel","clientRequestDescription":"Forespørselsteksten slik klienten din ville sende den","formatDetected":"Format oppdaget","formatDetectedDescription":"OmniRoute oppdager automatisk API-formatet fra forespørselsstrukturen","openaiIntermediate":"OpenAI Intermediate","openaiIntermediateDescription":"Alle formater normaliseres først til OpenAI-format (den universelle broen)","providerFormat":"Leverandørformat","providerFormatDescription":"OpenAI-formatet er oversatt til leverandørens opprinnelige format","providerResponse":"Leverandørens svar","providerResponseRawDescription":"Råsvaret fra leverandørens API","providerResponseSseDescription":"Den rå SSE-strømmen fra leverandørens API","unexpectedError":"Det oppstod en uventet feil","error":"Feil","errorMessage":"Feil: {message}","requestFailed":"Forespørselen mislyktes","noTextExtracted":"(Ingen tekst er trukket ut)","liveMonitorDescriptionPrefix":"Viser oversettelseshendelser når API-anrop flyter gjennom OmniRoute. Hendelser kommer fra bufferen i minnet (tilbakestilles ved omstart). Bruk","liveMonitorDescriptionSuffix":", eller eksterne API-kall for å generere hendelser."},"usage":{"title":"Bruk","loggerTab":"Logger","proxyTab":"Fullmakt","budgetManagement":"Budsjettstyring","budgetSaved":"Budsjettgrenser lagret","budgetSaveFailed":"Kunne ikke lagre budsjettet","loadingBudgetData":"Laster inn budsjettdata ...","noApiKeysTitle":"Ingen API-nøkler","noApiKeysDescription":"Legg til API-nøkler først for å sette opp budsjettgrenser.","apiKey":"API-nøkkel","todaysSpend":"Dagens forbruk","thisMonth":"Denne måneden","setLimits":"Sett grenser","dailyLimitUsd":"Daglig grense (USD)","monthlyLimitUsd":"Månedlig grense (USD)","warningThresholdPercent":"Advarselsterskel (%)","dailyLimitPlaceholder":"f.eks. 5.00","monthlyLimitPlaceholder":"f.eks. 50,00","warningThresholdPlaceholder":"80","saveLimits":"Lagre grenser","budgetOk":"Budsjett OK — {remaining} gjenstår","budgetExceeded":"Budsjettet overskredet – forespørsler kan bli blokkert","totalRequests":"Totalt antall forespørsler","noDataYet":"Ingen data ennå","latency":"Latens","latencyP50":"p50","latencyP95":"s95","latencyP99":"s99","promptCache":"Spør Cache","systemHealth":"Systemhelse","entries":"Oppføringer","activeCount":"{count} aktiv","openCircuitBreakersDetected":"Åpne strømbrytere oppdaget","hitRate":"Trefffrekvens","hitsMisses":"Treffer / savner","circuitBreakers":"Strømbrytere","lockedIPs":"Låste IP-er","lockoutsAutoRefreshHint":"Per-modell hastighetsgrense låser • Auto-refresh 10s","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} igjen","howItWorks":"Hvordan det fungerer","howItWorksSubtitle":"Finn ut hvordan evalueringer validerer LLM-svarene dine","define":"Definer","defineStepDescription":"Opprett testtilfeller med inndatameldinger og forventede utdatakriterier ved å bruke strategier som inneholder, regulært uttrykk eller eksakt samsvar.","run":"Løp","runStepDescription":"Utfør testsaker mot LLM-endepunktene dine gjennom OmniRoute. Hver sak sendes som en ekte API-forespørsel.","evaluate":"Vurder","evaluateStepDescription":"Svar sammenlignes mot forventede kriterier. Se bestått/ikke bestått for hver sak med ventetid og detaljert tilbakemelding.","evalSuites":"Evalueringssuiter","evalSuitesHint":"Klikk på en suite for å se testtilfeller, og kjør deretter for å evaluere LLM-endepunktene dine","evalsLoading":"Laster inn eval suiter...","noEvalSuitesFound":"Ingen Eval-suiter funnet","noEvalSuitesDescription":"Eval-suiter kan defineres via API eller i kode. De tester modellutdata mot forventede resultater ved å bruke strategier som inneholder, regulært uttrykk, eksakt samsvar og tilpassede funksjoner.","columnCase":"Sak","columnStatus":"Status","columnLatency":"Latens","columnDetails":"Detaljer","columnModel":"Modell","columnStrategy":"Strategi","columnExpected":"Forventet","statsSuites":"Suiter","statsTestCases":"Testtilfeller","statsModels":"Modeller","statsCoverage":"Dekning","statsStrategiesCount":"{count} strategier","evaluationStrategies":"Evalueringsstrategier","modelsUnderTest":"Modeller under test","searchSuitesPlaceholder":"Søk etter suiter...","passSuffix":"pass","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Kjør Eval","runningProgress":"Kjører {current}/{total}...","passRate":"bestått rate","summaryBreakdown":"{passed} bestått · {failed} mislyktes · {total} totalt","passedIconLabel":"✅ Bestått","failedIconLabel":"❌ Mislyktes","detailsContains":"Inneholder: \\"{term}\\"","detailsRegex":"Regex: {pattern}","detailsExpected":"Forventet: \\"{expected}\\"","noResultsYet":"Ingen resultater ennå","testCasesCount":"Testtilfeller ({count})","noTestCasesDefined":"Ingen testtilfeller definert","runEvalHint":"Klikk \\"Run Eval\\" for å utføre alle saker mot ditt LLM-endepunkt. Hver test sender en reell forespørsel gjennom OmniRoute.","notifyNoTestCases":"Ingen testtilfeller definert for denne suiten","notifyAllCasesPassed":"Alle {total} saker bestått ✅","notifySomeCasesFailed":"{passed}/{total} bestått, {failed} mislyktes","notifyEvalRunFailed":"Evalkjøring mislyktes","notifyEvalTitle":"Eval: {name}","modelEvals":"Modellvurderinger","evalsHeroDescription":"Test og valider LLM-endepunktene dine ved å kjøre forhåndsdefinerte evalueringspakker. Hver suite inneholder testtilfeller som sender reelle spørsmål gjennom OmniRoute og sammenligner svar med forventede kriterier – som hjelper deg med å oppdage regresjoner, sammenligne modeller og sikre svarkvalitet på tvers av leverandører.","qualityValidation":"Kvalitetsvalidering","modelComparison":"Modellsammenligning","regressionDetection":"Regresjonsdeteksjon","latencyBenchmarks":"Latency Benchmarks","modelLockouts":"Modellsperringer","noLockouts":"Ingen modeller er for øyeblikket låst","activeSessions":"Aktive økter","noSessions":"Ingen aktive økter","sessionsHint":"Økter vises når forespørsler flyter gjennom proxyen","sessionsTrackedHint":"Spores via forespørsel om fingeravtrykk • Auto-refresh 5s","session":"Sesjon","age":"Alder","requests":"Forespørsler","connection":"Tilkobling","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}t","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Leverandørgrenser","noProviders":"Ingen leverandører tilkoblet","connectProvidersForQuota":"Koble til leverandører med OAuth for å spore API-kvotegrenser og bruk.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(filtrert fra {count})","autoRefresh":"Automatisk oppdatering","refreshAll":"Oppdater alle","loadingQuotas":"Laster inn...","account":"Konto","modelQuotas":"Modellkvoter","lastUsed":"Sist brukt","actions":"Handlinger","refreshQuota":"Oppdater kvote","today":"I dag","tomorrow":"I morgen","dayTimeFormat":"{day}, {time}","inDuration":"i {duration}","notApplicable":"N/A","rawPlanWithValue":"Rå plan: {plan}","noPlanFromProvider":"Ingen plan fra leverandøren","noQuotaData":"Ingen kvotedata","ungrouped":"Ungrouped","viewFlat":"Flat","viewByEnvironment":"By Environment","noQuotaDataAvailable":"Ingen kvotedata tilgjengelig","noAccountsForTierFilter":"Fant ingen kontoer for nivåfilter","tierAll":"Alle","tierEnterprise":"Enterprise","tierTeam":"Team","tierBusiness":"Business","tierUltra":"Ultra","tierPro":"Pro","tierPlus":"Pluss","tierFree":"Gratis","tierUnknown":"Ukjent"},"modals":{"waitingAuth":"Venter på autorisasjon","verificationUrl":"Verifiserings-URL","yourCode":"Din kode","remoteAccess":"Fjerntilgang:","connectedSuccess":"Tilkoblet vellykket!","connectionFailed":"Tilkobling mislyktes","chooseAuthMethod":"Velg autentiseringsmetode:","awsBuilderId":"AWS Builder ID","awsIamIdentity":"AWS IAM Identity Center","googleAccount":"Google-konto","githubAccount":"GitHub-konto","importToken":"Importer token","pasteToken":"Lim inn oppdateringstoken fra Kiro IDE.","awsRegion":"AWS-regionen","autoDetecting":"Automatisk oppdager tokens...","readingFromCache":"Leser fra AWS SSO-cache","readingFromCursor":"Leser fra Cursor IDE-databasen","initializing":"Initialiserer...","pricingConfig":"Priskonfigurasjon","loadingPricing":"Laster inn prisdata ...","pricingRatesFormat":"Prisformat","noPricingData":"Ingen prisdata tilgjengelig","noModelsFound":"Ingen modeller funnet"},"loggers":{"allProviders":"Alle leverandører","allModels":"Alle modeller","allAccounts":"Alle kontoer","allApiKeys":"Alle API-nøkler","allTypes":"Alle typer","allLevels":"Alle nivåer","modelAZ":"Modell A-Z","modelZA":"Modell Z-A","loadingLogs":"Laster inn logger...","loadingProxyLogs":"Laster inn proxy-logger ...","noLogEntries":"Ingen loggoppføringer funnet","noPayloadData":"Ingen nyttelastdata tilgjengelig for denne loggoppføringen.","proxyEvent":"Proxy-hendelse","proxy":"Fullmakt","level":"Nivå","directNative":"Direkte (innfødt)","combo":"Combo","inputTokens":"jeg:","outputTokens":"O:"},"stats":{"usageOverview":"Bruksoversikt","outputTokens":"Output tokens","totalCost":"Total kostnad","usageByModel":"Bruk etter modell","usageByAccount":"Bruk etter konto","failedToLoad":"Kunne ikke laste inn bruksstatistikk.","tokenHealth":"Token Health","totalOAuth":"Totalt OAuth","healthy":"Sunn","warning":"Advarsel","errored":"Feil","lastCheck":"Siste sjekk","noData":"Ingen data","share":"Del","unableToLoad":"Kan ikke laste inn systemberegninger","product":"Produkt","resources":"Ressurser","company":"Selskapet"},"auth":{"welcome":"Velkommen","signIn":"Logg på","enterPassword":"Skriv inn passordet ditt for å fortsette","password":"Passord","unifiedProxy":"Unified AI API Proxy","unifiedAiApiProxy":"Unified AI API Proxy","unifiedAiApiProxyDesc":"Rut forespørsler til flere AI-leverandører gjennom ett enkelt endepunkt. Lastbalansering, failover og brukssporing innebygd.","passwordNotEnabled":"Passordbeskyttelse er ikke aktivert","loading":"Laster inn...","invalidPassword":"Ugyldig passord","errorOccurredRetry":"Det oppsto en feil. Vennligst prøv igjen.","configureInstance":"La oss få konfigurert OmniRoute-forekomsten","runOnboardingWizard":"Kjør onboarding-veiviseren for å sette opp passordet ditt og koble til din første AI-leverandør.","startOnboarding":"Start onboarding","secureYourInstance":"Sikre din forekomst","setPasswordDescription":"Angi et passord for å beskytte dashbordet og sikre API-endepunktene dine mot uautorisert tilgang.","configurePassword":"Konfigurer passord","continue":"Fortsett","windowWillClose":"Dette vinduet lukkes automatisk...","closeTabNow":"Du kan lukke denne fanen nå.","copyUrlManual":"Vennligst kopier URL-en fra adressefeltet og lim den inn i applikasjonen.","accessDeniedDescription":"Du har ikke tillatelse til å få tilgang til denne ressursen. Sjekk API-nøkkelen din eller kontakt administratoren.","goToDashboard":"Gå til Dashboard","featureMultiProviderTitle":"Multileverandør","featureMultiProviderDesc":"OpenAI, Anthropic, Google og mer","featureLoadBalancingTitle":"Lastbalansering","featureLoadBalancingDesc":"Distribuer forespørsler intelligent","featureUsageTrackingTitle":"Brukssporing","featureUsageTrackingDesc":"Overvåk kostnader og tokens","resetPassword":"Tilbakestill passord","resetDescription":"Velg en metode for å gjenopprette tilgangen til dashbordet","stopServer":"Stopp OmniRoute-serveren","processing":"Behandler...","pleaseWait":"Vennligst vent mens vi fullfører autorisasjonen.","authSuccess":"Godkjenning vellykket!","copyUrl":"Kopier denne nettadressen","accessDenied":"Tilgang nektet","methodCliTitle":"Metode 1: CLI-tilbakestilling","methodCliDescription":"Kjør følgende kommando på serveren der OmniRoute kjører:","methodCliHint":"Dette vil be deg om å angi et nytt passord. Serveren må stoppes først.","methodManualTitle":"Metode 2: Manuell tilbakestilling","methodManualDescription":"Slett passordet fra databasen og sett et nytt ved oppstart:","setPasswordInYour":"Sett et nytt passord i din","fileLabelSuffix":"fil:","newPasswordPlaceholder":"ditt_nye_passord","deleteSettingsFile":"Slett","orRemovePasswordHashField":"eller fjern passordHash-feltet","restartServerWithNewPassword":"Start serveren på nytt - den vil bruke det nye passordet","backToLogin":"Tilbake til pålogging","forgotPassword":"Glemt passord?","defaultPasswordHint":"Default password: 123456 (unless INITIAL_PASSWORD was set)","Authorization":"Autorisasjon","Content-Disposition":"Innhold-Disposisjon","waitingForAuthorization":"Venter på autorisasjon...","waitingForGoogleAuthorization":"Venter på Google-autorisasjon...","waitingForOpenAIAuthorization":"Venter på OpenAI-godkjenning...","waitingForAntigravityAuthorization":"Venter på antigravity-autorisasjon...","waitingForIFlowAuthorization":"Venter på iFlow-autorisasjon...","exchangingCodeForTokens":"Utveksler kode for tokens..."},"landing":{"brandName":"OmniRoute","navigateHome":"Naviger til hjem","toggleMenu":"Bytt meny","featuresLink":"Funksjoner","docsLink":"Dokumenter","github":"GitHub","versionLive":"v1.0 er nå live","oneEndpoint":"Ett endepunkt for","allProviders":"Alle AI-leverandører","heroDescription":"AI-endepunktproxy med web-dashboard - En JavaScript-port av CLIProxyAPI. Fungerer sømløst med Claude Code, OpenAI Codex, Cline, RooCode og andre CLI-verktøy.","getStarted":"Kom i gang","viewOnGithub":"Se på GitHub","powerfulFeatures":"Kraftige funksjoner","featuresSubtitle":"Alt du trenger for å administrere AI-infrastrukturen din på ett sted, bygget for skala.","featureUnifiedEndpointTitle":"Samlet endepunkt","featureUnifiedEndpointDesc":"Få tilgang til alle leverandører via en enkelt standard API-URL.","featureEasySetupTitle":"Enkelt oppsett","featureEasySetupDesc":"Kom i gang på få minutter med npx-kommandoen.","featureModelFallbackTitle":"Modell Fallback","featureModelFallbackDesc":"Bytt leverandør automatisk ved feil eller høy ventetid.","featureUsageTrackingTitle":"Brukssporing","featureUsageTrackingDesc":"Detaljert analyse og kostnadsovervåking på tvers av alle modeller.","featureOAuthApiKeysTitle":"OAuth- og API-nøkler","featureOAuthApiKeysDesc":"Administrer legitimasjon på en sikker måte i ett hvelv.","featureCloudSyncTitle":"Cloud Sync","featureCloudSyncDesc":"Synkroniser konfigurasjonene dine på tvers av enheter umiddelbart.","featureCliSupportTitle":"CLI-støtte","featureCliSupportDesc":"Fungerer med Claude Code, Codex, Cline, Cursor og mer.","featureDashboardTitle":"Dashbord","featureDashboardDesc":"Visuelt dashbord for trafikkanalyse i sanntid.","howItWorks":"Hvordan OmniRoute fungerer","howItWorksDescription":"Data flyter sømløst fra applikasjonen din gjennom vårt intelligente rutinglag til den beste leverandøren for jobben.","howItWorksStep1Title":"1. CLI og SDK-er","howItWorksStep1Description":"Forespørslene dine starter fra favorittverktøyene dine eller vår enhetlige SDK. Bare endre basis-URLen.","howItWorksStep2Title":"2. OmniRoute Hub","howItWorksStep2Description":"Motoren vår analyserer forespørselen, sjekker leverandørens helse og ruter for lavest ventetid eller kostnad.","howItWorksStep3Title":"3. AI-leverandører","howItWorksStep3Description":"Forespørselen oppfylles av OpenAI, Anthropic, Gemini eller andre umiddelbart.","getStartedIn30Seconds":"Kom i gang på 30 sekunder","getStartedDescription":"Installer OmniRoute, konfigurer leverandørene dine via nettdashbordet, og begynn å rute AI-forespørsler.","installOmniRoute":"Installer OmniRoute","installStepDescription":"Kjør npx-kommandoen for å starte serveren umiddelbart","openDashboard":"Åpne Dashboard","openDashboardStepDescription":"Konfigurer leverandører og API-nøkler via webgrensesnitt","routeRequests":"Ruteforespørsler","routeRequestsStepDescription":"Pek CLI-verktøyene dine til {endpoint}","terminal":"terminal","copy":"Kopier","copied":"✓ Kopiert","startingOmniRoute":"Starter OmniRoute...","serverRunningOnLabel":"Server kjører på","dashboardLabel":"Dashbord","readyToRoute":"Klar til rute! ✓","configureProvidersNote":"📝 Konfigurer leverandører i dashbordet eller bruk miljøvariabler","dataLocation":"Dataplassering:","dataLocationMacLinux":" macOS/Linux:","dataLocationWindows":" Windows:","product":"Produkt","dashboardLink":"Dashbord","changelog":"Endringslogg","resources":"Ressurser","documentation":"Dokumentasjon","npm":"NPM","legal":"Lovlig","mitLicense":"MIT-lisens","footerTagline":"Det enhetlige endepunktet for AI-generering. Koble til, rute og administrer AI-leverandørene dine på en enkel måte.","copyright":"© {year} OmniRoute. Alle rettigheter forbeholdt.","flowToolClaudeCode":"Claude Code","flowToolOpenAICodex":"OpenAI Codex","flowToolCline":"Cline","flowToolCursor":"Markør","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Antropisk","flowProviderGemini":"Tvillingene","flowProviderGithubCopilot":"GitHub Copilot","interactiveDiagram":"Interaktivt diagram synlig på skrivebordet","ctaTitle":"Klar til å forenkle AI-infrastrukturen din?","ctaDescription":"Bli med utviklere som strømlinjeformer AI-integrasjonene sine med OmniRoute. Åpen kildekode og gratis å starte.","startFree":"Start gratis","readDocumentation":"Les dokumentasjon"},"docs":{"title":"Dokumentasjon","quickStart":"Rask start","features":"Funksjoner","supportedProviders":"Støttede leverandører","supportedProvidersToc":"Leverandører","commonUseCases":"Vanlige brukstilfeller","clientCompatibility":"Klientkompatibilitet","protocolsToc":"Protocols","apiReference":"API-referanse","method":"Metode","path":"Sti","notes":"Notater","modelPrefixes":"Modellprefikser","prefix":"Prefiks","troubleshooting":"Feilsøking","supportsChat":"Støtter både chat- og svarendepunkter.","oauthAutoRefresh":"OAuth-tilkobling med automatisk tokenoppdatering.","fullStreaming":"Full streamingstøtte for alle modeller.","docsLabel":"Dokumenter","docsHeroDescription":"AI-gateway for LLM-er med flere leverandører. Ett endepunkt for OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor og mer enn 20 leverandører.","openDashboard":"Åpne Dashboard","endpointPage":"Sluttpunktside","github":"GitHub","reportIssue":"Rapporter problem","onThisPage":"På denne siden","documentationVersion":"Dokumentasjon - v{version}","quickStartStep1Title":"1. Installer og kjør","quickStartStep1Prefix":"Løp","quickStartStep1Middle":"eller klone fra GitHub og kjøre","quickStartStep2Title":"2. Opprett API-nøkkel","quickStartStep2Text":"Gå til endepunkt -> Registrerte nøkler. Generer én nøkkel per miljø.","quickStartStep3Title":"3. Koble til leverandører","quickStartStep3Text":"Legg til leverandørkontoer via OAuth-pålogging, API-nøkkel eller gratis-lags automatisk tilkobling.","quickStartStep4Title":"4. Angi klientbase-URL","quickStartStep4Prefix":"Pek IDE- eller API-klienten din til","quickStartStep4Suffix":"Bruk for eksempel leverandørprefiks","featureRoutingTitle":"Ruting for flere leverandører","featureRoutingText":"Rut forespørsler til 30+ AI-leverandører gjennom ett enkelt OpenAI-kompatibelt endepunkt. Støtter chat, svar, lyd og bilde-APIer.","featureCombosTitle":"Kombinasjoner og balansering","featureCombosText":"Lag modellkombinasjoner med reservekjeder og balanseringsstrategier: round-robin, prioritet, tilfeldig, minst brukt og kostnadsoptimalisert.","featureUsageTitle":"Bruk og kostnadssporing","featureUsageText":"Sanntids-tokentelling, kostnadsberegning per leverandør/modell og detaljert bruksoppdeling etter API-nøkkel og konto.","featureAnalyticsTitle":"Analytics Dashboard","featureAnalyticsText":"Visuell analyse med diagrammer for forespørsler, tokens, feil, ventetid, kostnader og modellpopularitet over tid.","featureHealthTitle":"Helseovervåking","featureHealthText":"Live helsesjekker, leverandørstatus, strømbrytertilstander og automatisk hastighetsgrensedeteksjon med eksponentiell tilbakekobling.","featureCliTitle":"CLI-verktøy","featureCliText":"Administrer IDE-konfigurasjoner, eksporter/importer sikkerhetskopier, oppdag kodex-profiler og konfigurer innstillinger fra dashbordet.","featureSecurityTitle":"Sikkerhet og retningslinjer","featureSecurityText":"API-nøkkelautentisering, IP-filtrering, prompt-injeksjonsvakt, domenepolicyer, øktadministrasjon og revisjonslogging.","featureCloudSyncTitle":"Cloud Sync","featureCloudSyncText":"Synkroniser konfigurasjonen din med Cloudflare Workers for ekstern tilgang med kryptert legitimasjon og automatisk failover.","providersAcrossConnectionTypes":"{count}-leverandører på tvers av tre tilkoblingstyper.","manageProviders":"Administrer leverandører","providersCount":"{count} leverandører","providerTypeFree":"Gratis lag","providerTypeOAuth":"OAuth","providerTypeApiKey":"API-nøkkel","useCaseSingleEndpointTitle":"Enkelt endepunkt for mange leverandører","useCaseSingleEndpointText":"Pek klienter til én basis-URL og rute etter modellprefiks (for eksempel: gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Fallback og modellbytte med kombinasjoner","useCaseFallbackText":"Lag kombinasjonsmodeller i Dashboard og hold klientkonfigurasjonen stabil mens leverandørene roterer internt.","useCaseUsageVisibilityTitle":"Bruk, kostnader og feilsøkingssynlighet","useCaseUsageVisibilityText":"Spor tokens og kostnader etter leverandør, konto og API-nøkkel i fanene Bruk og Analytics.","clientCherryStudioTitle":"Cherry Studio","baseUrlLabel":"Base URL","chatEndpointLabel":"Chat-endepunkt","modelRecommendationLabel":"Modellanbefaling: eksplisitt prefiks","clientCodexTitle":"Codex / GitHub Copilot-modeller","clientCodexBullet1":"Bruk modell-ID-er med","clientCodexBullet2":"Codex-familiemodeller rutes automatisk til","clientCodexBullet3":"Ikke-Codex-modeller fortsetter","clientCursorTitle":"Markør IDE","clientCursorBullet1":"Bruk","clientCursorBullet1Suffix":"prefiks for Cursor-modeller.","clientCursorBullet2":"OAuth-tilkobling - logg på fra siden Leverandører.","clientClaudeTitle":"Claude Code / Antigravity","clientClaudeBullet1Prefix":"Bruk","clientClaudeBullet1Middle":"(Claude) eller","clientClaudeBullet1Suffix":"(Antigravity) prefiks.","protocolsTitle":"Protocols: MCP & A2A","protocolsDescription":"OmniRoute exposes two operational protocols in addition to OpenAI-compatible APIs: MCP for tool execution and A2A for agent-to-agent workflows.","protocolMcpTitle":"MCP (Model Context Protocol)","protocolMcpDesc":"Use MCP over stdio to let clients discover and call OmniRoute tools with audit visibility.","protocolMcpStep1":"Start MCP transport with `omniroute --mcp`.","protocolMcpStep2":"Point your MCP client to stdio transport.","protocolMcpStep3":"Call `omniroute_get_health` and `omniroute_list_combos` to validate connectivity.","protocolA2aTitle":"A2A (Agent2Agent)","protocolA2aDesc":"Use A2A JSON-RPC to submit tasks synchronously or via SSE streaming.","protocolA2aStep1":"Read `/.well-known/agent.json` for agent discovery.","protocolA2aStep2":"Send `message/send` or `message/stream` requests to `POST /a2a`.","protocolA2aStep3":"Manage task lifecycle with `tasks/get` and `tasks/cancel`.","protocolTroubleshootingTitle":"Protocol Troubleshooting","protocolTroubleshooting1":"If MCP status is offline, verify the stdio process is running and heartbeat file is updating.","protocolTroubleshooting2":"If A2A tasks stay in `working`, inspect `/api/a2a/tasks/:id` and stream events for terminal state.","protocolTroubleshooting3":"Use `/dashboard/mcp` and `/dashboard/a2a` for operational controls and audit visibility.","endpointChatNote":"OpenAI-kompatibelt chat-endepunkt (standard).","endpointResponsesNote":"Responses API-endepunkt (Codex, o-serien).","endpointModelsNote":"Modellkatalog for alle tilkoblede leverandører.","endpointAudioNote":"Lydtranskripsjon (Deepgram, AssemblyAI).","endpointImagesNote":"Bildegenerering (NanoBanana).","endpointRewriteChatNote":"Omskrivehjelper for klienter uten /v1.","endpointRewriteResponsesNote":"Omskriv hjelper for svar uten /v1.","endpointRewriteModelsNote":"Omskrivehjelper for modelloppdagelse uten /v1.","modelPrefixesDescriptionStart":"Bruk leverandørprefikset før modellnavnet for å rute til en bestemt leverandør. Eksempel:","modelPrefixesDescriptionEnd":"ruter til GitHub Copilot.","provider":"Leverandør","type":"Type","troubleshootingModelRouting":"Hvis klienten mislykkes med modellruting, bruk eksplisitt leverandør/modell (for eksempel: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Hvis du får tvetydige modellfeil, velger du et leverandørprefiks i stedet for en bare modell-ID.","troubleshootingCodexFamily":"For GitHub Codex-familiemodeller, behold modellen som gh/codex-model; ruteren velger /responser automatisk.","troubleshootingTestConnection":"Bruk Dashboard > Leverandører > Test tilkobling før du tester fra IDE-er eller eksterne klienter.","troubleshootingCircuitBreaker":"Hvis en leverandør viser at strømbryteren er åpen, vent på nedkjøling eller sjekk helsesiden for detaljer.","troubleshootingOAuth":"For OAuth-leverandører, autentiser på nytt hvis tokens utløper. Sjekk leverandørkortets statusindikator.","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 generering (ElevenLabs, OpenAI TTS).","endpointEmbeddingsNote":"Generering av tekstinnbygging (OpenAI, Cohere, Voyage)."},"legal":{"privacyPolicy":"Personvernerklæring","termsOfService":"Vilkår for bruk","providerConfigurations":"Leverandørkonfigurasjoner","apiKeys":"API-nøkler","usageLogs":"Brukslogger","applicationSettings":"Applikasjonsinnstillinger","viewExportAnalytics":"Se og eksporter bruksanalyse","clearHistory":"Tøm brukshistorikken når som helst","configureRetention":"Konfigurer retningslinjer for loggoppbevaring","backupRestore":"Sikkerhetskopier og gjenopprett databasen","privacyMetadataTitle":"Personvernerklæring | OmniRoute","privacyMetadataDescription":"Personvernregler for OmniRoute AI API-proxy-ruteren.","termsMetadataTitle":"Vilkår for bruk | OmniRoute","termsMetadataDescription":"Vilkår for bruk for OmniRoute AI API-proxy-ruteren.","backToHome":"Tilbake til hjemmet","lastUpdated":"Sist oppdatert: {date}","policyLastUpdatedDate":"13. februar 2026","listSeparator":"-","questionsVisit":"Spørsmål? Besøk vår","githubRepository":"GitHub-depot","privacySection1Title":"1. Lokal-først arkitektur","privacySection1Text":"OmniRoute er designet som en lokal først-applikasjon. All databehandling og lagring skjer utelukkende på maskinen din. Det er ingen sentralisert server som samler inn informasjonen din.","privacySection2Title":"2. Data vi lagrer","privacyDataStoredIn":"Følgende data lagres lokalt i","privacyDataProviderConfigurationsDesc":"tilkoblings-URLer, leverandørtyper og prioritetsinnstillinger","privacyDataApiKeysDesc":"kryptert og lagret lokalt for autentisering med AI-leverandører","privacyDataUsageLogsDesc":"antall forespørsler, tokenbruk, modellnavn, tidsstempler og responstider","privacyDataApplicationSettingsDesc":"temapreferanser, rutingstrategi og kombinasjonskonfigurasjoner","privacySection3Title":"3. Ingen telemetri","privacySection3Text":"OmniRoute samler ikke inn telemetri, analyser eller krasjrapporter. Ingen data sendes til oss eller noen tredjepart. Dine bruksmønstre, API-kall og konfigurasjoner forblir helt private.","privacySection4Title":"4. Tredjeparts AI-leverandører","privacySection4Text":"Når du foretar API-anrop gjennom OmniRoute, blir forespørslene dine videresendt til AI-leverandørene du har konfigurert (for eksempel: OpenAI, Anthropic, Google). Disse leverandørene har sine egne retningslinjer for personvern som styrer hvordan de håndterer dataene dine. Vennligst se gjennom:","privacyOpenAiPolicy":"OpenAI personvernerklæring","privacyAnthropicPolicy":"Antropiske retningslinjer for personvern","privacyGooglePolicy":"Googles personvernregler","privacySection5Title":"5. Cloud Sync (valgfritt)","privacySection5Text":"Hvis du aktiverer den valgfrie skysynkroniseringsfunksjonen, kan leverandørkonfigurasjoner og API-nøkler overføres til et konfigurert skyendepunkt. Denne funksjonen er deaktivert som standard og krever eksplisitt opt-in.","privacySection6Title":"6. Logging","privacyLoggingIntro":"Forespørselslogger kan konfigureres gjennom dashbordinnstillingene. Du kan:","privacySection7Title":"7. Dine rettigheter","privacySection7TextStart":"Siden all data er lagret lokalt, har du full kontroll. Du kan slette dataene dine når som helst ved å fjerne","privacySection7TextEnd":"katalogen eller bruke funksjonene for sikkerhetskopiering og gjenoppretting av databasen i dashbordet.","termsSection1Title":"1. Oversikt","termsSection1Text":"OmniRoute er en lokal-første AI API-proxy-ruter som fungerer utelukkende på maskinen din. Den ruter forespørsler til flere AI-leverandører med lastbalansering, failover og brukssporing.","termsSection2Title":"2. Brukeransvar","termsResponsibilityApiKeys":"Du er alene ansvarlig for å administrere dine egne API-nøkler og legitimasjon for tredjeparts AI-leverandører (OpenAI, Anthropic, Google, etc.).","termsResponsibilityCompliance":"Du må overholde vilkårene for bruk for hver AI-leverandør hvis API du får tilgang til gjennom OmniRoute.","termsResponsibilitySecurity":"Du er ansvarlig for sikkerheten til din lokale OmniRoute-installasjon, inkludert å angi et passord og begrense nettverkstilgang.","termsSection3Title":"3. Hvordan det fungerer","termsSection3Text":"OmniRoute fungerer som en mellomfullmektig. API-anrop som sendes til OmniRoute, oversettes og videresendes til dine konfigurerte AI-leverandører. OmniRoute endrer ikke innholdet i dine forespørsler eller svar utover den nødvendige protokolloversettelsen.","termsSection4Title":"4. Datahåndtering","termsDataStoredLocally":"Alle data lagres lokalt på din maskin i en SQLite-database.","termsNoTransmission":"OmniRoute overfører ingen data til eksterne servere med mindre du eksplisitt aktiverer skysynkroniseringsfunksjoner.","termsDataLocationText":"Brukslogger, API-nøkler og konfigurasjon lagres i","termsSection5Title":"5. Ansvarsfraskrivelse","termsSection5Text":"OmniRoute leveres \\"som den er\\" uten garanti av noe slag. Vi er ikke ansvarlige for kostnader som påløper gjennom API-bruk, tjenesteavbrudd eller tap av data. Oppretthold alltid sikkerhetskopier av konfigurasjonen din.","termsSection6Title":"6. Åpen kildekode","termsSection6Text":"OmniRoute er åpen kildekode-programvare. Du står fritt til å inspisere, modifisere og distribuere den under lisensvilkårene."},"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":"Enkel chat","streaming":"Streaming","system-prompt":"Systemmelding","thinking":"Tenker","tool-calling":"Verktøyanrop","multi-turn":"Multisving"},"templateDescriptions":{"simple-chat":"Grunnleggende chatmal med systemmelding","streaming":"Mal for strømmesvar","system-prompt":"Mal med tilpasset systemforespørsel","thinking":"Mal med resonnement/tenkebudsjett","tool-calling":"Mal for verktøy/funksjonskall","multi-turn":"Mal for samtaler med flere svinger"},"templatePayloads":{"simpleChat":{"system":"Du er en hjelpsom AI-assistent.","userGreeting":"Hei! Hvordan kan jeg hjelpe deg i dag?"},"streaming":{"prompt":"Skriv en historie om"},"systemPrompt":{"question":"Hva er meningen med livet?","systemInstruction":"Gi et gjennomtenkt, filosofisk svar."},"thinking":{"question":"Forklar kvanteberegning"},"toolCalling":{"cityNameDescription":"Navnet på byen å få vær for","toolDescription":"Få gjeldende vær for et sted","userWeather":"Hvordan er været i Tokyo?"},"multiTurn":{"system":"Du er en hjelpsom assistent.","assistantExample":"Jeg hjelper deg gjerne med det.","userInitial":"Jeg trenger hjelp med","userFollowUp":"Kan du utdype det?"}},"cache":{"title":"Cache Management","description":"Monitor and manage semantic response cache, hit rates, and token savings.","refresh":"Refresh","clearAll":"Clear All","memoryEntries":"Memory Entries","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_no_json_9f484a8c._.js.map
|