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.
Files changed (156) hide show
  1. package/app/.next/BUILD_ID +1 -1
  2. package/app/.next/build-manifest.json +2 -2
  3. package/app/.next/prerender-manifest.json +3 -3
  4. package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
  5. package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
  6. package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
  7. package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
  8. package/app/.next/server/app/(dashboard)/dashboard/audit/page_client-reference-manifest.js +1 -1
  9. package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
  10. package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
  11. package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
  12. package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
  13. package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
  14. package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
  15. package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
  16. package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
  17. package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
  18. package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
  19. package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
  20. package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
  21. package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
  22. package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
  23. package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
  24. package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
  25. package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
  26. package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
  27. package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
  28. package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
  29. package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
  30. package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
  31. package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
  32. package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
  33. package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
  34. package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
  35. package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
  36. package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
  37. package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
  38. package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
  39. package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
  40. package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
  41. package/app/.next/server/app/_global-error.html +2 -2
  42. package/app/.next/server/app/_global-error.rsc +1 -1
  43. package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  44. package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  45. package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  46. package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  47. package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  48. package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  49. package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
  50. package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
  51. package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
  52. package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
  53. package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
  54. package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
  55. package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
  56. package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
  57. package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
  58. package/app/.next/server/app/page_client-reference-manifest.js +1 -1
  59. package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
  60. package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
  61. package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
  62. package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +1 -1
  63. package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
  64. package/app/.next/server/chunks/[root-of-the-server]__7ace0fcd._.js +1 -1
  65. package/app/.next/server/chunks/[root-of-the-server]__950558b8._.js +1 -1
  66. package/app/.next/server/chunks/[root-of-the-server]__9698d25e._.js +1 -1
  67. package/app/.next/server/chunks/[root-of-the-server]__a32d3818._.js +1 -1
  68. package/app/.next/server/chunks/[root-of-the-server]__bc251fbe._.js +1 -1
  69. package/app/.next/server/chunks/[root-of-the-server]__d5a064d5._.js +1 -1
  70. package/app/.next/server/chunks/_05c48915._.js +1 -1
  71. package/app/.next/server/chunks/_06515a8a._.js +1 -1
  72. package/app/.next/server/chunks/_2115d8de._.js +1 -1
  73. package/app/.next/server/chunks/_3ac953eb._.js +1 -1
  74. package/app/.next/server/chunks/_4b8fd853._.js +1 -1
  75. package/app/.next/server/chunks/_68683848._.js +1 -1
  76. package/app/.next/server/chunks/_ee9b677b._.js +1 -1
  77. package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
  78. package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
  79. package/app/.next/server/chunks/ssr/src_i18n_messages_ar_json_e1d5145b._.js +1 -1
  80. package/app/.next/server/chunks/ssr/src_i18n_messages_bg_json_34495a0f._.js +1 -1
  81. package/app/.next/server/chunks/ssr/src_i18n_messages_cs_json_db6f9ebc._.js +1 -1
  82. package/app/.next/server/chunks/ssr/src_i18n_messages_da_json_7500ed02._.js +1 -1
  83. package/app/.next/server/chunks/ssr/src_i18n_messages_de_json_b2a40318._.js +1 -1
  84. package/app/.next/server/chunks/ssr/src_i18n_messages_es_json_82775c4a._.js +1 -1
  85. package/app/.next/server/chunks/ssr/src_i18n_messages_fi_json_dcc6745e._.js +1 -1
  86. package/app/.next/server/chunks/ssr/src_i18n_messages_fr_json_fe904570._.js +1 -1
  87. package/app/.next/server/chunks/ssr/src_i18n_messages_he_json_3e3c1e1b._.js +1 -1
  88. package/app/.next/server/chunks/ssr/src_i18n_messages_hi_json_83a0b9e5._.js +1 -1
  89. package/app/.next/server/chunks/ssr/src_i18n_messages_hu_json_651e00d3._.js +1 -1
  90. package/app/.next/server/chunks/ssr/src_i18n_messages_id_json_725d4a34._.js +1 -1
  91. package/app/.next/server/chunks/ssr/src_i18n_messages_in_json_2d7cd177._.js +1 -1
  92. package/app/.next/server/chunks/ssr/src_i18n_messages_it_json_e23882ae._.js +1 -1
  93. package/app/.next/server/chunks/ssr/src_i18n_messages_ja_json_fc6af4d8._.js +1 -1
  94. package/app/.next/server/chunks/ssr/src_i18n_messages_ko_json_0ffdbdc6._.js +1 -1
  95. package/app/.next/server/chunks/ssr/src_i18n_messages_ms_json_610df819._.js +1 -1
  96. package/app/.next/server/chunks/ssr/src_i18n_messages_nl_json_55ad1507._.js +1 -1
  97. package/app/.next/server/chunks/ssr/src_i18n_messages_no_json_9f484a8c._.js +1 -1
  98. package/app/.next/server/chunks/ssr/src_i18n_messages_phi_json_871ece45._.js +1 -1
  99. package/app/.next/server/chunks/ssr/src_i18n_messages_pl_json_79d0be4b._.js +1 -1
  100. package/app/.next/server/chunks/ssr/src_i18n_messages_pt-BR_json_e7b9e8db._.js +1 -1
  101. package/app/.next/server/chunks/ssr/src_i18n_messages_pt_json_2fc13a82._.js +1 -1
  102. package/app/.next/server/chunks/ssr/src_i18n_messages_ro_json_d1a5f5ee._.js +1 -1
  103. package/app/.next/server/chunks/ssr/src_i18n_messages_ru_json_9d7a9dfe._.js +1 -1
  104. package/app/.next/server/chunks/ssr/src_i18n_messages_sk_json_1c5bff4a._.js +1 -1
  105. package/app/.next/server/chunks/ssr/src_i18n_messages_sv_json_e8ae9f28._.js +1 -1
  106. package/app/.next/server/chunks/ssr/src_i18n_messages_th_json_6ed546bd._.js +1 -1
  107. package/app/.next/server/chunks/ssr/src_i18n_messages_tr_json_c8d78b01._.js +1 -1
  108. package/app/.next/server/chunks/ssr/src_i18n_messages_uk-UA_json_c72cdf08._.js +1 -1
  109. package/app/.next/server/chunks/ssr/src_i18n_messages_vi_json_03ec9dfd._.js +1 -1
  110. package/app/.next/server/pages/500.html +2 -2
  111. package/app/.next/server/server-reference-manifest.js +1 -1
  112. package/app/.next/server/server-reference-manifest.json +1 -1
  113. package/app/.next/static/chunks/{b9999bd9d2b99bf6.js → d3c3a9266158d9b0.js} +1 -1
  114. package/app/CHANGELOG.md +19 -1
  115. package/app/docs/openapi.yaml +1 -1
  116. package/app/open-sse/handlers/responseTranslator.ts +1 -1
  117. package/app/open-sse/package.json +1 -1
  118. package/app/package-lock.json +3 -3
  119. package/app/package.json +1 -1
  120. package/app/src/i18n/messages/ar.json +2 -1
  121. package/app/src/i18n/messages/bg.json +2 -1
  122. package/app/src/i18n/messages/cs.json +2 -1
  123. package/app/src/i18n/messages/da.json +2 -1
  124. package/app/src/i18n/messages/de.json +2 -1
  125. package/app/src/i18n/messages/es.json +2 -1
  126. package/app/src/i18n/messages/fi.json +2 -1
  127. package/app/src/i18n/messages/fr.json +2 -1
  128. package/app/src/i18n/messages/he.json +2 -1
  129. package/app/src/i18n/messages/hi.json +2 -1
  130. package/app/src/i18n/messages/hu.json +2 -1
  131. package/app/src/i18n/messages/id.json +2 -1
  132. package/app/src/i18n/messages/in.json +2 -1
  133. package/app/src/i18n/messages/it.json +2 -1
  134. package/app/src/i18n/messages/ja.json +2 -1
  135. package/app/src/i18n/messages/ko.json +2 -1
  136. package/app/src/i18n/messages/ms.json +2 -1
  137. package/app/src/i18n/messages/nl.json +2 -1
  138. package/app/src/i18n/messages/no.json +2 -1
  139. package/app/src/i18n/messages/phi.json +2 -1
  140. package/app/src/i18n/messages/pl.json +2 -1
  141. package/app/src/i18n/messages/pt-BR.json +2 -1
  142. package/app/src/i18n/messages/pt.json +2 -1
  143. package/app/src/i18n/messages/ro.json +2 -1
  144. package/app/src/i18n/messages/ru.json +2 -1
  145. package/app/src/i18n/messages/sk.json +2 -1
  146. package/app/src/i18n/messages/sv.json +2 -1
  147. package/app/src/i18n/messages/th.json +2 -1
  148. package/app/src/i18n/messages/tr.json +2 -1
  149. package/app/src/i18n/messages/uk-UA.json +2 -1
  150. package/app/src/i18n/messages/vi.json +2 -1
  151. package/app/src/shared/services/opencodeConfig.ts +14 -13
  152. package/app/tests/unit/t40-opencode-cli-tools-integration.test.mjs +5 -5
  153. package/package.json +1 -1
  154. /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_buildManifest.js +0 -0
  155. /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_clientMiddlewareManifest.json +0 -0
  156. /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[674710,a=>{a.v(JSON.parse('{"common":{"save":"Spara","cancel":"Avbryt","delete":"Ta bort","loading":"Laddar...","error":"Ett fel uppstod","success":"Framgång","confirm":"Är du säker?","refresh":"Uppdatera","close":"Stäng","add":"Lägg till","edit":"Redigera","search":"Sök","back":"Tillbaka","next":"Nästa","submit":"Skicka in","reset":"Återställ","copy":"Kopiera","copied":"Kopierade!","enabled":"Aktiverad","disabled":"Inaktiverad","active":"Aktiv","inactive":"Inaktiv","noData":"Inga data tillgängliga","configure":"Konfigurera","manage":"Hantera","name":"Namn","actions":"Åtgärder","status":"Status","type":"Typ","model":"Modell","models":"modeller","provider":"Leverantör","account":"konto","time":"Tid","details":"Detaljer","created":"Skapad","lastUsed":"Senast använd","loadMore":"Ladda mer","noResults":"Inga resultat hittades","reloadPage":"Ladda om sidan","connected":"Ansluten","disconnected":"Frånkopplad","notConfigured":"Ej konfigurerad","testConnection":"Testa anslutningen","enable":"Aktivera","disable":"Inaktivera","columns":"Kolumner","newest":"Nyaste","oldest":"Äldst","all":"Alla","none":"Inga","yes":"Ja","no":"Nej","warning":"Varning","note":"Obs","free":"Gratis","skipToContent":"Hoppa till innehållet","maintenanceServerIssues":"Server is experiencing issues. Some features may be unavailable.","maintenanceServerUnreachable":"Server is unreachable. Reconnecting...","accept":"Acceptera","accountId":"Konto-ID","alias":"Alias","apiKeyId":"API-nyckel-ID","apiKeyName":"API-nyckelnamn","apiKeySecret":"API-nyckelhemlighet","authorization":"Auktorisation","content-type":"Innehållstyp","content-length":"Innehållslängd","cookie":"Cookie","file":"Arkiv","host":"Värd","id":"ID","import":"Importera","limit":"Begränsa","offset":"Offset","open":"Öppna","origin":"Ursprung","promptTokens":"Fråga tokens","completionTokens":"Kompletteringstokens","totalTokens":"Totala tokens","rawModel":"Rå modell","scope":"Omfattning","skill":"Skicklighet","sortBy":"Sortera efter","sortOrder":"Sorteringsordning","tab":"Tab","text":"Text","textarea":"Textområde","tool":"Verktyg","toolId":"Verktygs-ID","web":"Webb","whereUsed":"Där den används","whitelist":"Vitlista","blacklist":"Svartlista","resolve":"Lös","force":"Force","base64url":"Base64 URL","hex":"Hex","range":"Räckvidd","component":"Komponent","redirect_uri":"Omdirigera URI","idempotency-key":"Idempotensnyckel","error_description":"Felbeskrivning","code":"Kod","compatible":"Kompatibel","chat-completions":"Chattavslut","oauth":"OAuth","auth_token":"Auth Token","crypto":"Krypto","hours":"Timmar","selfsigned":"Självsignerad","proxy_id":"Proxy-ID","proxyId":"Proxy-ID","connectionId":"Anslutnings-ID","resolveConnectionId":"Lös anslutnings-ID","resolve_connection_id":"Lös anslutnings-ID","scope_id":"Omfattning ID","scopeId":"Omfattning ID","jwtSecret":"JWT hemlighet","keytar":"Keytar","better-sqlite3":"bättre-sqlite3","undici":"undici","builder-id":"Byggar-ID","musicDesc":"Musikbeskrivning","musicGeneration":"Musikgeneration","idc":"IDC","cloud-status-changed":"Molnstatus ändrad","where_used":"Där den används","windowMs":"Fönster (ms)","social-github":"GitHub","social-google":"Google","TOOL_ALLOWLIST":"Tillståndslista för verktyg","TOOL_DENYLIST":"Verktyg Denylist","Failed to save pricing":"Det gick inte att spara pris","Failed to reset pricing":"Det gick inte att återställa prissättningen","apikey":"API-nyckel","http":"HTTP"},"sidebar":{"home":"Hem","dashboard":"Instrumentpanel","providers":"Leverantörer","combos":"Combos","usage":"Användning","analytics":"Analytics","costs":"Kostnader","health":"Hälsa","limits":"Gränser och kvoter","cliTools":"CLI-verktyg","media":"Media","settings":"Inställningar","translator":"Översättare","docs":"Dokument","issues":"frågor","apiManager":"API-hanterare","logs":"Loggar","auditLog":"Revisionslogg","shutdown":"Avstängning","restart":"Starta om","shutdownConfirm":"Stänga av OmniRoute?","restartConfirm":"Starta om OmniRoute?","version":"v{version}","debug":"Felsök","system":"System","help":"Hjälp","serverDisconnected":"Server frånkopplad","serverDisconnectedMsg":"Proxyservern har stoppats eller startar om.","expandSidebar":"Expandera sidofältet","collapseSidebar":"Dölj sidofältet","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":"Ändpunkter","playground":"Lekplats","agents":"Agenter","cliToolsShort":"Verktyg","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":"Logga ut","language":"Språk","providers":"Leverantörer","providerDescription":"Hantera dina AI-leverantörsanslutningar","combos":"Combos","comboDescription":"Modellkombo med reserv","usage":"Användning & analys","usageDescription":"Övervaka din API-användning, tokenförbrukning och förfrågningsloggar","analytics":"Analytics","analyticsDescription":"Diagram, trender och utvärderingsinsikter","cliTools":"CLI-verktyg","cliToolsDescription":"Konfigurera CLI-verktyg","home":"Hem","homeDescription":"Välkommen till OmniRoute","endpoint":"Endpoints","endpointDescription":"Manage proxy endpoints, MCP, A2A, and API endpoints","settings":"Inställningar","settingsDescription":"Hantera dina preferenser","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":"Snabbstart","quickStartDesc":"Kom igång i 4 steg. Anslut leverantörer, ruttmodeller, övervaka allt.","fullDocs":"Fullständiga dokument","step1Title":"1. Skapa API-nyckel","step1Desc":"Gå till <endpoint>Endpoint</endpoint> -> Registrerade nycklar. Generera en nyckel per miljö.","step2Title":"2. Anslut leverantörer","step2Desc":"Lägg till konton i <providers>Providers</providers>. Stöder OAuth, API Key och gratis nivåer.","step3Title":"3. Peka din klient","step3Desc":"Ställ in bas-URL till {url} i din IDE- eller API-klient.","step4Title":"4. Övervaka och optimera","step4Desc":"Spåra tokens, kostnader och fel i <logs>Request Logs</logs> och <analytics>Analytics</analytics>.","providersOverview":"Leverantörsöversikt","configuredOf":"{configured} konfigurerad av {total} tillgängliga leverantörer","noModelsAvailable":"Inga modeller tillgängliga för denna leverantör.","configureFirst":"Konfigurera en anslutning först i {providers}","configureProvider":"Konfigurera leverantör","modelAvailable":"{count} modell tillgänglig","modelsAvailable":"{count} modeller tillgängliga","connectionsActive":"{count} anslutning aktiv","connectionsActivePlural":"{count} anslutningar aktiva","copyModelName":"Kopiera modellnamn","documentation":"Dokumentation","healthMonitor":"Hälsoövervakare","reportIssue":"Rapportera problem","activeError":"{active} aktiv · {errors} fel","oauthLabel":"OAuth","apiKeyLabel":"API-nyckel","requestsShort":"{count} krav","providerModelsTitle":"{provider} - Modeller","copiedModel":"Kopierat: {model}","aliasLabel":"alias","updateNow":"Uppdatera nu","updating":"Uppdaterar...","updateAvailableDesc":"En ny version finns tillgänglig. Klicka för att uppdatera.","updateStarted":"Uppdatering startade..."},"analytics":{"title":"Analytics","overviewDescription":"Övervaka dina API-användningsmönster, tokenförbrukning, kostnader och aktivitetstrender för alla leverantörer och modeller.","evalsDescription":"Kör utvärderingssviter för att testa och validera dina LLM-slutpunkter. Jämför modellkvalitet, upptäck regressioner och benchmark latens.","overview":"Översikt","evals":"Evals"},"apiManager":{"title":"API-nycklar","createKey":"Skapa API-nyckel","key":"Nyckel","revokeKey":"Återkalla nyckel","revokeConfirm":"Är du säker på att du vill återkalla denna API-nyckel?","noKeys":"Inga API-nycklar ännu","noKeysDesc":"Skapa din första API-nyckel för att autentisera förfrågningar till din slutpunkt","keyLabel":"Nyckeletikett","permissions":"Behörigheter","expiresAt":"Upphör att gälla","never":"Aldrig","revoke":"Återkalla","showKey":"Visa nyckel","hideKey":"Dölj nyckel","copyKey":"Kopiera API-nyckel","allModels":"Alla modeller","selectedModels":"Utvalda modeller","readOnly":"Endast läs","fullAccess":"Full tillgång","keyManagement":"API-nyckelhantering","keyManagementDesc":"Skapa och hantera API-nycklar för autentisering av förfrågningar till din slutpunkt","totalKeys":"Totalt nycklar","restricted":"Begränsad","totalRequests":"Totalt antal förfrågningar","modelsAvailable":"Tillgängliga modeller","registeredKeys":"Registrerade nycklar","keysRegistered":"{count} nycklar registrerade","keyRegistered":"{count} nyckel registrerad","keysSecurityNote":"Varje nyckel isolerar användningsspårning och kan återkallas oberoende. Nycklar är maskerade efter skapande för säkerhet.","createFirstKey":"Skapa din första nyckel","name":"Namn","usage":"Användning","created":"Skapad","actions":"Åtgärder","reqs":"reqs","neverUsed":"Aldrig använd","deleteConfirm":"Vill du ta bort denna API-nyckel?","usageTips":"Användningstips","tipAuth":"Använd API-nycklar i auktoriseringshuvudet som Bärare YOUR_KEY","tipSecure":"Nycklar visas bara en gång under skapandet – förvara dem säkert","tipSeparate":"Skapa separata nycklar för olika klienter eller miljöer","tipRestrict":"Begränsa nycklar till specifika modeller för bättre säkerhet och kostnadskontroll","keyName":"Nyckelnamn","keyNamePlaceholder":"t.ex. produktionsnyckel, utvecklingsnyckel","keyNameDesc":"Välj ett beskrivande namn för att identifiera denna nyckels syfte","keyCreated":"API-nyckel skapad","keyCreatedSuccess":"Nyckel skapad framgångsrikt!","keyCreatedNote":"Kopiera och lagra den här nyckeln nu – den kommer inte att visas igen.","done":"Klart","savePermissions":"Spara behörigheter","allowAll":"Tillåt alla","restrict":"Begränsa","allowAllInfo":"Denna nyckel kan komma åt alla tillgängliga modeller.","restrictInfo":"Denna nyckel kan komma åt {selected} av {total} modeller.","selected":"{count} har valts","all":"Alla","clear":"Rensa","searchModels":"Sök modeller efter namn eller leverantör...","noModelsFound":"Inga modeller hittades","keyNameRequired":"Nyckelnamn krävs","keyNameTooLong":"Nyckelnamnet måste vara högst {max} tecken","keyNameInvalid":"Nyckelnamn kan bara innehålla bokstäver, siffror, mellanslag, bindestreck och understreck","invalidKeyName":"Ogiltigt nyckelnamn","failedCreateKey":"Det gick inte att skapa nyckel","failedCreateKeyRetry":"Det gick inte att skapa nyckel. Försök igen.","invalidKeyId":"Ogiltigt nyckel-ID","failedDeleteKey":"Det gick inte att radera nyckel","failedDeleteKeyRetry":"Det gick inte att radera nyckel. Försök igen.","invalidModelsSelection":"Ogiltigt modellval","cannotSelectMoreThanModels":"Kan inte välja fler än {max} modeller","failedUpdatePermissions":"Det gick inte att uppdatera behörigheter","failedUpdatePermissionsRetry":"Det gick inte att uppdatera behörigheter. Försök igen.","unknownProvider":"okänt","copyMaskedKey":"Kopiera maskerad nyckel","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Senaste: {date}","editPermissions":"Redigera behörigheter","deleteKey":"Ta bort nyckel","model":"{count} modell","models":"{count} modeller","permissionsTitle":"Behörigheter: {name}","allowAllDesc":"Denna nyckel kan komma åt alla tillgängliga modeller.","restrictDesc":"Denna nyckel kan komma åt {selectedCount} av {totalModels} modeller.","selectedCount":"{count} har valts","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":"Revisionslogg","searchPlaceholder":"Sökåtgärder...","action":"Åtgärd","actor":"Skådespelare","target":"Mål","ipAddress":"IP-adress","timestamp":"Tidsstämpel","noEntries":"Inga revisionsposter hittades","filterByAction":"Filtrera efter åtgärd...","filterByActor":"Filtrera efter skådespelare...","filterEntriesAria":"Filtrera granskningsloggposter","filterByActionTypeAria":"Filtrera efter åtgärdstyp","filterByActorAria":"Filtrera efter skådespelare","refreshAuditLogAria":"Uppdatera granskningsloggen","tableAria":"Granskningsloggposter","failedFetchAuditLog":"Det gick inte att hämta granskningsloggen","notAvailable":"—","description":"Administrativa åtgärder och säkerhetshändelser","showing":"Visar {count} poster (offset {offset})","previous":"Föregående"},"media":{"title":"Medialabb","subtitle":"Generera bilder, videor och musik","model":"Model","prompt":"Prompt","generate":"Generera","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-verktyg","noActiveProviders":"Inga aktiva leverantörer","noActiveProvidersDesc":"Lägg till och anslut först leverantörer för att konfigurera CLI-verktyg.","mapModels":"Kartmodeller","testConnection":"Testa anslutningen","connectionStatus":"Anslutningsstatus","configureEndpoint":"Konfigurera slutpunkt","instructions":"Instruktioner","modelMapping":"Modellkartläggning","baseUrl":"Bas-URL","apiKey":"API-nyckel","configured":"Konfigurerad","notConfigured":"Ej konfigurerad","notInstalled":"Ej installerad","custom":"Anpassad","unknown":"Okänd","lastSavedAt":"Senast sparad: {date}","never":"Aldrig","justNow":"just nu","minutesAgoShort":"{count}m sedan","hoursAgoShort":"{count}h sedan","daysAgoShort":"{count}d sedan","monthsAgoShort":"{count}mån sedan","yearsAgoShort":"{count}y sedan","runtimeCheckFailed":"Körtidskontroll misslyckades","yourApiKeyPlaceholder":"din-api-nyckel","modelPlaceholder":"leverantör/modell-id","configurationSaved":"Konfigurationen har sparats.","failedToSave":"Det gick inte att spara konfigurationen.","noApiKeysCreateOne":"Inga API-nycklar - Skapa en på sidan Nycklar","defaultOmnirouteKey":"sk_omniroute (standard)","selectModel":"Välj modell","selectModelForAlias":"Välj modell för {alias}","selectModelForTool":"Välj modell för {tool}","select":"Välj","clear":"Rensa","comingSoon":"Kommer snart","checkingRuntime":"Kontrollerar körtidsstatus...","guideOnlyIntegration":"Integrering endast guide (ingen lokal körtid krävs)","cliRuntimeDetected":"CLI-körtid upptäckt och klar","cliFoundNotRunnable":"CLI hittades men inte körbar{reason}","cliRuntimeNotDetected":"CLI-körtid har inte upptäckts","binary":"Binär","configPath":"Konfigurationsväg","configPathShort":"Konfig","failedCheckRuntimeStatus":"Det gick inte att kontrollera körtidsstatus.","copy":"Kopiera","copied":"Kopierade","copyConfig":"Kopiera Config","saveConfig":"Spara konfiguration","selectionSaved":"Valet har sparats","guide":"Guide","detected":"Upptäckt","notReady":"Inte redo","active":"Aktiv","inactive":"Inaktiv","startMitm":"Starta MITM","stopMitm":"Stoppa MITM","mitmStarted":"MITM startade framgångsrikt!","mitmStopped":"MITM stoppade framgångsrikt!","failedStart":"Det gick inte att starta MITM","failedStop":"Det gick inte att stoppa MITM","saveMappings":"Spara mappningar","mappingsSaved":"Mappningar sparade!","failedSaveMappings":"Det gick inte att spara mappningar","howItWorks":"Hur det fungerar:","antigravityHowWorksDesc":"Antigravity skickar förfrågningar till Googles slutpunkt. MITM fångar upp och omdirigerar dem till OmniRoute.","antigravityStep1":"1. Starta MITM för att dirigera förfrågningar genom OmniRoute.","antigravityStep2Prefix":"2. Lägg till","antigravityStep2Suffix":"till din hosts-fil som 127.0.0.1.","antigravityStep3":"3. Öppna Antigravity och förfrågningar kommer att skickas som proxy.","sudoPasswordRequiredTitle":"Sudo-lösenord krävs","sudoPasswordHint":"Administratörslösenord krävs för att ändra värdens fil- och systemproxyinställningar.","enterSudoPassword":"Ange sudo lösenord","sudoPasswordRequiredError":"Sudo-lösenord krävs.","cancel":"Avbryt","confirm":"Bekräfta","settingsApplied":"Inställningarna har tillämpats!","failedApplySettings":"Det gick inte att tillämpa inställningarna","settingsReset":"Inställningarna har återställts!","failedResetSettings":"Det gick inte att återställa inställningarna","backupRestored":"Säkerhetskopieringen återställd!","failedRestore":"Det gick inte att återställa","checkingCli":"Kontrollerar {tool} CLI...","cliNotRunnable":"{tool} CLI installerat men inte körbart","cliNotInstalled":"{tool} CLI inte installerat","cliNotDetected":"{tool} CLI inte upptäckt","cliDetectedReady":"{tool} CLI upptäckt och redo","cliFoundFailedHealthcheck":"{tool} CLI hittades men misslyckades med runtime healthcheck{reason}.","installCliPrompt":"Installera {tool} CLI för att använda den här funktionen.","installCodexPrompt":"Installera Codex CLI för att använda funktionen för automatisk applicering.","hide":"Göm","howToInstall":"Hur man installerar","installationGuide":"Installationsguide","platforms":"macOS / Linux / Windows:","afterInstallationRun":"Efter installationen, kör","toVerify":"att verifiera.","current":"Aktuell","baseUrlPlaceholder":"https://.../v1","resetToDefault":"Återställ till standard","providerModelPlaceholder":"leverantör/modell-id","apply":"Ansök","reset":"Återställ","manualConfig":"Manuell konfiguration","backups":"Säkerhetskopieringar","configBackups":"Konfigurera säkerhetskopior","noBackupsYet":"Inga säkerhetskopior ännu. Säkerhetskopieringar skapas automatiskt före varje applicering eller återställning.","restore":"Återställ","backupRestoredReloading":"Säkerhetskopieringen återställd! Laddar om status...","failedRestoreBackup":"Det gick inte att återställa säkerhetskopian","applied":"Ansökt!","failed":"Misslyckades","resetDone":"Återställ!","omnirouteConfiguredOpenAiCompatible":"OmniRoute är konfigurerad som OpenAI-kompatibel leverantör","provider":"Leverantör","model":"Modell","providers":"Leverantörer","auth":"Auth","noApiKeysAvailable":"Inga API-nycklar tillgängliga","usingDefaultOmniroute":"Använder standard: sk_omniroute","updateConfig":"Uppdatera Config","applyConfig":"Använd Config","noBackupsAvailable":"Inga säkerhetskopior tillgängliga.","profileSaved":"Profilen \\"{name}\\" har sparats!","failedSaveProfile":"Det gick inte att spara profilen","profileActivated":"Profilen aktiverad!","failedActivateProfile":"Det gick inte att aktivera profilen","profiles":"Profiler","savedProfiles":"Sparade profiler","noProfilesYet":"Inga profiler sparade ännu. Spara aktuell konfiguration som en profil nedan.","activate":"Aktivera","deleteProfile":"Ta bort profil","profileNamePlaceholder":"Profilnamn (t.ex. personligt konto)","saveCurrent":"Spara aktuell","codexAuthNotePrefix":"Codex använder","codexAuthNoteMiddle":"med","codexAuthNoteSuffix":"Klicka på \\"Apply\\" för att automatiskt konfigurera.","claudeManualConfiguration":"Claude CLI - Manuell konfiguration","codexManualConfiguration":"Codex CLI - Manuell konfiguration","droidManualConfiguration":"Factory Droid - Manuell konfiguration","openClawManualConfiguration":"Öppna Claw - Manuell konfiguration","clineManualConfiguration":"Cline manuell konfiguration","kiloManualConfiguration":"Kilokod manuell konfiguration","toolDescriptions":{"antigravity":"Google Antigravity IDE med MITM","claude":"Antropisk Claude Code CLI","codex":"OpenAI Codex CLI","droid":"Factory Droid AI Assistant","openclaw":"Öppna Claw AI Assistant","cline":"Cline AI Coding Assistant CLI","kilo":"Kilokod AI Assistant CLI","cursor":"Cursor AI Code Editor","continue":"Fortsätt AI Assistant","opencode":"OpenCode AI coding agent (Terminal)","kiro":"Amazon Kiro — AI-powered IDE","windsurf":"Windsurf AI Code Editor","copilot":"GitHub Copilot AI Assistant"},"guides":{"cursor":{"notes":{"0":"Kräver ett Cursor Pro-konto för att använda den här funktionen.","1":"Markören dirigerar förfrågningar genom sin egen server, så lokal slutpunkt stöds inte. Vänligen aktivera Cloud Endpoint i Inställningar."},"steps":{"1":{"title":"Öppna Inställningar","desc":"Gå till Inställningar -> Modeller"},"2":{"title":"Aktivera OpenAI API","desc":"Aktivera alternativet \\"OpenAI API-nyckel\\"."},"3":{"title":"Bas-URL"},"4":{"title":"API-nyckel"},"5":{"title":"Lägg till anpassad modell","desc":"Klicka på \\"Visa alla modeller\\" -> \\"Lägg till anpassad modell\\""},"6":{"title":"Välj modell"}}},"continue":{"steps":{"1":{"title":"Öppna Config","desc":"Öppna Fortsätt konfigurationsfil"},"2":{"title":"API-nyckel"},"3":{"title":"Välj modell"},"4":{"title":"Lägg till Model Config","desc":"Lägg till följande konfiguration till din modellarray:"}},"notes":{"0":"Continue använder JSON-konfigurationsfilen."}},"opencode":{"steps":{"1":{"title":"Install OpenCode","desc":"Install via npm: npm install -g opencode-ai"},"2":{"title":"API Key"},"3":{"title":"Set Base URL","desc":"opencode config set baseUrl {{baseUrl}}"},"4":{"title":"Select Model"}},"notes":{"0":"OpenCode kräver API-nyckelkonfiguration.","1":"Ställ in basadressen till din OmniRoute-slutpunkt."}},"kiro":{"steps":{"1":{"title":"Open Kiro Settings","desc":"Go to Settings → AI Provider"},"2":{"title":"Base URL","desc":"Paste your OmniRoute endpoint URL"},"3":{"title":"API Key"},"4":{"title":"Select Model"}},"notes":{"0":"Kiro kräver 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 ska använda","openToolDocs":"Öppna verktygsdokument","toolUseCases":{"claude":"Använd när du vill ha starka planeringsarbetsflöden och långa flerfilsrefaktorer med Claude Code.","codex":"Använd när ditt team är standardiserat på OpenAI Codex CLI-flöden och profilbaserad autentisering.","droid":"Använd när du behöver en lätt terminalagent fokuserad på snabb kodning och kommandokörningsloopar.","openclaw":"Använd när du vill ha en Open Claw-kodningsagent men dirigerad genom OmniRoute-policyer.","cline":"Använd när du konfigurerar kodningsagenter i redigerare och vill ha guidad installation med OmniRoute-modeller.","kilo":"Använd när ditt arbetsflöde beror på Kilo Code-kommandon och snabba iterativa redigeringar.","cursor":"Använd när du kodar i Cursor och du behöver anpassade OpenAI-kompatibla modeller genom OmniRoute.","continue":"Använd när du kör Continue i IDE och du behöver portabel JSON-baserad leverantörskonfiguration.","opencode":"Använd när du föredrar terminalbaserade agentkörningar och skriptautomation via OpenCode.","kiro":"Använd när du integrerar Kiro och styr modelldirigering centralt från OmniRoute.","antigravity":"Använd när Antigravity/Kiro-trafik måste avlyssnas genom MITM och dirigeras till OmniRoute.","copilot":"Använd när du vill ha Copilot chattstil UX samtidigt som du upprätthåller OmniRoute-nycklar och routingregler."}},"combos":{"title":"Combos","description":"Skapa modellkombinationer med viktad routing och reservstöd","createCombo":"Skapa Combo","editCombo":"Redigera kombination","deleteCombo":"Ta bort Combo","noModels":"Inga modeller","noModelsYet":"Inga modeller har lagts till ännu","addModel":"Lägg till modell","addModelToCombo":"Lägg till modell till Combo","routingStrategy":"Routingstrategi","maxRetries":"Max försöker igen","timeout":"Timeout (ms)","healthcheck":"Hälsokontroll","priority":"Prioritet","fallback":"Fallback","roundRobin":"Round Robin","random":"Slumpmässigt","leastLatency":"Minsta latens","comboName":"Kombinationsnamn","comboNamePlaceholder":"min-kombo","deleteConfirm":"Vill du ta bort den här kombinationen?","noCombosYet":"Inga kombinationer än","comboCreated":"Kombinationen skapades framgångsrikt","comboUpdated":"Kombinationen har uppdaterats","comboDeleted":"Combo raderad","failedCreate":"Det gick inte att skapa en kombination","failedUpdate":"Det gick inte att uppdatera kombinationen","errorCreating":"Det gick inte att skapa kombination","errorUpdating":"Fel vid uppdatering av kombination","errorDeleting":"Fel vid borttagning av kombination","testFailed":"Testbegäran misslyckades","failedToggle":"Det gick inte att växla kombination","testResults":"Testresultat — {name}","resolvedBy":"Löst av:","more":"+{count} till","reqs":"reqs","success":"framgång","proxyConfigured":"Proxy konfigurerad","copyComboName":"Kopiera kombinationsnamn","enableCombo":"Aktivera kombination","disableCombo":"Inaktivera kombination","testCombo":"Testkombo","duplicate":"Duplicera","proxyConfig":"Proxykonfiguration","nameRequired":"Namn krävs","nameInvalid":"Endast bokstäver, siffror, -, _, / och . tillåtet","nameHint":"Bokstäver, siffror, -, _, / och . tillåtet","priorityDesc":"Sekventiell reserv: provar modell 1 först, sedan 2 osv.","weightedDesc":"Fördelar trafik efter viktprocent med reserv","roundRobinDesc":"Cirkulär distribution: varje begäran går till nästa modell i rotation","randomDesc":"Enhetligt slumpmässigt urval, sedan fallback till återstående modeller","leastUsedDesc":"Väljer modellen med minst förfrågningar, balanserar belastningen över tiden","costOptimizedDesc":"Rutter till den billigaste modellen först baserat på prissättning","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each model once before reshuffling","models":"Modeller","autoBalance":"Automatisk balansering","advancedSettings":"Avancerade inställningar","retryDelay":"Försök igen fördröjning (ms)","concurrencyPerModel":"Samtidighet / Modell","queueTimeout":"Timeout för kö (ms)","advancedHint":"Lämna tomt om du vill använda globala standardinställningar. Dessa åsidosätter inställningarna per leverantör.","moveUp":"Flytta uppåt","moveDown":"Flytta ner","removeModel":"Ta bort","saving":"Sparar...","weighted":"Viktad","leastUsed":"Minst använda","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":"inget pris","warningRoundRobinSingleModel":"Round-robin är mest användbar med minst 2 modeller.","warningCostOptimizedPartialPricing":"Endast {priced} av {total} modeller har prissättning. Rutning kan vara delvis kostnadsmedveten.","warningCostOptimizedNoPricing":"Inga prisuppgifter hittades för denna kombination. Kostnadsoptimerad kan väga oväntat.","readinessTitle":"Redo att spara?","readinessDescription":"Granska checklistan innan du skapar eller uppdaterar den här kombinationen.","readinessCheckName":"Kombinationsnamnet är giltigt","readinessCheckModels":"Minst en modell är vald","readinessCheckWeights":"Den viktade summan är 100 %","readinessCheckWeightsOptional":"Viktregel krävs inte","readinessCheckPricing":"Prisuppgifter finns tillgängliga","readinessCheckPricingOptional":"Prissättningsregel krävs inte","saveBlockedTitle":"Spara är blockerad tills följande saker är åtgärdade:","saveBlockName":"Definiera ett kombinationsnamn.","saveBlockModels":"Lägg till minst en modell.","saveBlockWeighted":"Ställ in vikter på 100 % (nuvarande: {total}%).","saveBlockPricing":"Lägg till prissättning för minst en modell eller välj en annan 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":"Budget","totalCost":"Total kostnad","breakdown":"Kostnadsfördelning","noData":"Inga kostnadsdata","byModel":"Efter modell","byProvider":"Av leverantör"},"endpoint":{"title":"API-slutpunkt","available":"Tillgängliga slutpunkter","cloudProxy":"Molnproxy","disableConfirm":"Är du säker på att du vill inaktivera molnproxy?","baseUrl":"Bas-URL","apiKeyLabel":"API-nyckel","registeredKeys":"Registrerade nycklar","chatCompletions":"Chattavslut","responses":"Svar","listModels":"Lista modeller","usingCloudProxy":"Använder Cloud Proxy","usingLocalServer":"Använder lokal server","machineId":"Maskin-ID: {id}...","disableCloud":"Inaktivera Cloud","enableCloud":"Aktivera Cloud","modelsAcrossEndpoints":"{models} modeller över {endpoints} slutpunkter","chatDesc":"Strömmande och icke-strömmande chatt med alla leverantörer","embeddings":"Inbäddningar","embeddingsDesc":"Textinbäddningar för sök- och RAG-pipelines","imageGeneration":"Bildgenerering","imageDesc":"Generera bilder från textmeddelanden","rerank":"Rangordna om","rerankDesc":"Rangordna om dokument efter relevans för en fråga","audioTranscription":"Ljudtranskription","audioTranscriptionDesc":"Transkribera ljudfiler till text (Viska)","textToSpeech":"Text till tal","textToSpeechDesc":"Konvertera text till naturligt klingande tal","moderations":"Moderationer","moderationsDesc":"Innehållsmoderering och säkerhetsklassificering","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":"Kärn-API:er","categoryMedia":"Media & Multimodal","categoryUtility":"Verktyg & Hantering","enableCloudTitle":"Aktivera Cloud Proxy","whatYouGet":"Vad du kommer att få","cloudBenefitAccess":"Få åtkomst till ditt API från var som helst i världen","cloudBenefitShare":"Dela enkelt slutpunkten med ditt team","cloudBenefitPorts":"Inget behov av att öppna portar eller konfigurera brandvägg","cloudBenefitEdge":"Snabbt globalt kantnätverk","cloudSessionNote":"Cloud kommer att behålla din autentiseringssession i 1 dag. Om den inte används kommer den att raderas automatiskt.","cloudUnstableNote":"Cloud är för närvarande instabilt med Claude Code OAuth i vissa fall.","cloudConnected":"Cloud Proxy ansluten!","connectingToCloud":"Ansluter till molnet...","verifyingConnection":"Verifierar anslutning...","connecting":"Ansluter...","verifying":"Verifierar...","connected":"Ansluten!","disableCloudTitle":"Inaktivera molnproxy","disableWarning":"Alla autentiseringssessioner kommer att raderas från molnet.","syncingData":"Synkroniserar senaste data...","disablingCloud":"Inaktiverar molnet...","syncing":"Synkroniseras...","disabling":"Inaktiverar...","cloudConnectedVerified":"Cloud Proxy ansluten och verifierad!","connectedVerificationPending":"Ansluten — verifiering väntar","connectedVerificationPendingWithError":"Ansluten — verifiering väntar: {error}","cloudDisabledSuccess":"Molnet har inaktiverats","syncedSuccess":"Synkroniserad framgångsrikt","failedDisable":"Det gick inte att inaktivera molnet","failedEnable":"Det gick inte att aktivera molnet","cloudRequestTimeout":"Timeout för molnbegäran","cloudRequestFailed":"Molnbegäran misslyckades","cloudWorkerUnreachable":"Det gick inte att nå molnarbetaren. Se till att molntjänsten körs (npm kör dev i /moln).","connectionFailed":"Anslutning misslyckades","syncFailed":"Det gick inte att synkronisera molndata","providerModelsTitle":"{provider} — Modeller","noModelsForProvider":"Inga modeller tillgängliga för denna leverantör.","chat":"Chatta","embedding":"Inbäddning","image":"Bild","custom":"anpassad","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Integrationsyta","sectionDescription":"OpenAI-kompatibla API:er och operativa protokollslutpunkter","tabApis":"OpenAI-kompatibla API:er","tabProtocols":"Protokoll","tabsAria":"Slutpunktssektioner","protocolsTitle":"Protokoll","protocolsDescription":"MCP och A2A är förstklassiga endpoints med dedikerad observerbarhet och kontroller.","mcpCardTitle":"MCP-server","mcpCardDescription":"Model Context Protocol över stdio","a2aCardTitle":"A2A-server","a2aCardDescription":"Agent2Agent JSON-RPC-slutpunkt","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":"Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.","a2aQuickStartTitle":"A2A Quick Start","a2aQuickStartStep1":"Discover the agent card at `/.well-known/agent.json`.","a2aQuickStartStep2":"Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.","a2aQuickStartStep3":"Track and control tasks using `tasks/get` and `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":"Loading MCP dashboard...","activate":"activate","deactivate":"deactivate","confirmSwitchCombo":"Confirm {action} combo \\"{combo}\\"?","switchComboFailed":"Failed to switch combo state.","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":"Systemhälsa","description":"Realtidsövervakning av din OmniRoute-instans","healthy":"Frisk","degraded":"Försämrad","down":"Ner","uptime":"Upptid","memory":"Minne","memoryRss":"Minne (RSS)","heap":"Hög","cpu":"CPU","database":"Databas","version":"Version","lastCheck":"Sista kontrollen","providerHealth":"Leverantörshälsa","systemMetrics":"Systemmått","tokenHealth":"Token Health","refreshAll":"Uppdatera alla","checkNow":"Kontrollera nu","loadingHealth":"Läser in hälsodata...","failedToLoad":"Det gick inte att läsa in hälsodata: {error}","retry":"Försök igen","allOperational":"Alla system i drift","issuesDetected":"Systemproblem upptäcktes","updatedAt":"Uppdaterad {time}","latency":"Latens","latencyP50":"p50","latencyP95":"s 95","latencyP99":"s 99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Totalt antal förfrågningar","noDataYet":"Inga uppgifter ännu","promptCache":"Fråga Cache","entries":"Inlägg","hitRate":"Träfffrekvens","hitsMisses":"Träffar/missar","signatureCache":"Signaturcache","signatureDefaults":"Standardvärden","signatureTool":"Verktyg","signatureFamily":"Familj","signatureSession":"Session","recovering":"Återhämtar sig","noCBData":"Inga strömbrytardata tillgängliga. Gör några förfrågningar först.","providerHealthStatusAria":"Leverantörens hälsostatus","issuesLabel":"Problem upptäckta","operational":"Operativt","providers":"Leverantörer","healthyCount":"{count} frisk","nodeVersion":"Nod {version}","failures":"{count} fel","failuresPlural":"{count} fel","lastFailure":"Sist","rateLimitStatus":"Beloppsgränsstatus","activeLimiters":"{count} aktiv begränsare","activeLimitersPlural":"{count} aktiva begränsare","queued":"I kö","queuedCount":"{count} i kö","running":"löpning","runningCount":"{count} igång","ok":"OK","activeLockouts":"Aktiva lockouter","resetConfirm":"Återställa alla strömbrytare till friskt tillstånd? Detta kommer att radera alla felräkningar och återställa alla leverantörer till driftstatus.","resetAllTitle":"Återställ alla strömbrytare till friskt tillstånd","resetting":"Återställer...","resetAll":"Återställ alla","until":"Tills {time}","activeProviders":"{count} active","monitoredProviders":"{count} monitored","configuredProvidersLabel":"Konfigurerad i instrumentpanelen","configuredProvidersHint":"Leverantörer med autentiseringsuppgifter sparade i /dashboard/providers, oavsett körtidstillstånd.","activeProvidersHint":"Konfigurerade leverantörer som för närvarande är aktiverade för routingförfrågningar.","monitoredProvidersHint":"Leverantörer spåras för närvarande av strömbrytare hälsoövervakare."},"limits":{"title":"Gränser och kvoter","rateLimit":"Prisgräns","remaining":"Kvar","requestsPerMinute":"Önskemål/min","tokensPerMinute":"Poletter/min","dailyLimit":"Daglig gräns"},"logs":{"title":"Loggar","requestLogs":"Begär loggar","proxyLogs":"Proxyloggar","auditLog":"Revisionslogg","console":"Konsol","auditLogDesc":"Administrativa åtgärder och säkerhetshändelser","loading":"Laddar...","refresh":"Uppdatera","filterByAction":"Filtrera efter åtgärd...","filterByActor":"Filtrera efter skådespelare...","filterEntriesAria":"Filtrera granskningsloggposter","filterByActionTypeAria":"Filtrera efter åtgärdstyp","filterByActorAria":"Filtrera efter skådespelare","refreshAuditLogAria":"Uppdatera granskningsloggen","tableAria":"Granskningsloggposter","failedFetchAuditLog":"Det gick inte att hämta granskningsloggen","showing":"Visar {count} poster (offset {offset})","search":"Sök","timestamp":"Tidsstämpel","action":"Åtgärd","actor":"Skådespelare","target":"Mål","details":"Detaljer","ipAddress":"IP-adress","notAvailable":"—","noEntries":"Inga granskningsloggposter hittades","previous":"Föregående","next":"Nästa"},"onboarding":{"welcome":"Välkommen","security":"Säkerhet","test":"Testa","ready":"Klart!","setPassword":"Ange lösenord","addProvider":"Lägg till din första leverantör","getStarted":"Kom igång","skip":"Hoppa över","skipWizard":"Hoppa över guiden helt","skipPassword":"Hoppa över lösenordsinställningar","skipAndContinue":"Hoppa över och fortsätt","passwordLabel":"Lösenord","confirmPassword":"Bekräfta lösenord","enterPassword":"Ange lösenord","confirmPasswordPlaceholder":"Bekräfta lösenord","passwordsMismatch":"Lösenord stämmer inte överens","setupComplete":"Installationen är klar!","goToDashboard":"Gå till Dashboard →","welcomeDesc":"OmniRoute är din lokala AI API-proxy. Den dirigerar förfrågningar till flera AI-leverantörer med lastbalansering, failover och användningsspårning.","multiProvider":"Flera leverantörer","usageTracking":"Användningsspårning","apiKeyMgmt":"API Key Mgmt","securityDesc":"Ställ in ett lösenord för att skydda din instrumentpanel, eller hoppa över nu.","providerDesc":"Anslut din första AI-leverantör. Du kan lägga till mer senare.","apiKeyRequired":"API-nyckel (krävs)","customUrlOptional":"Anpassad webbadress (valfritt)","testDesc":"Låt oss verifiera att din leverantörsanslutning fungerar.","runTest":"Kör anslutningstest","testingConnection":"Testar anslutning...","connectionSuccessful":"Anslutningen lyckades! Din leverantör är redo.","noProviderFound":"Ingen leverantör hittades. Du kan lägga till en från instrumentpanelen senare.","testFailed":"Testet misslyckades, men du kan konfigurera detta senare.","couldNotTest":"Kunde inte testa just nu. Du kan testa från instrumentpanelen.","doneDesc":"Du är redo! Din OmniRoute-instans är konfigurerad och redo att proxy AI-förfrågningar.","yourEndpoint":"Din slutpunkt:","continue":"Fortsätt","retry":"Försök igen","failedSetPassword":"Det gick inte att ange lösenord. Försök igen.","failedAddProvider":"Det gick inte att lägga till leverantör. Försök igen.","connectionError":"Anslutningsfel. Försök igen.","provider":"Leverantör"},"providers":{"title":"Leverantörer","addProvider":"Lägg till leverantör","editProvider":"Redigera leverantör","deleteProvider":"Ta bort leverantör","noProviders":"Inga leverantörer har konfigurerats","modelAvailability":"Modelltillgänglighet","accounts":"konton","newAccount":"Nytt konto","deleteConfirm":"Är du säker på att du vill ta bort den här leverantören?","testing":"Testar...","testConnection":"Testa anslutningen","testSuccess":"Anslutningen lyckades","testFailed":"Anslutning misslyckades","available":"Tillgänglig","cooldown":"Nedkylning","unavailable":"Ej tillgänglig","unknown":"Okänd","oauthLabel":"OAuth","compatibleLabel":"Kompatibel","chat":"Chatta","responses":"Svar","messages":"Meddelanden","oauthProviders":"OAuth-leverantörer","freeProviders":"Gratis leverantörer","apiKeyProviders":"API-nyckelleverantörer","compatibleProviders":"API-nyckelkompatibla leverantörer","testAll":"Testa alla","testAllOAuth":"Testa alla OAuth-anslutningar","testAllFree":"Testa alla gratisanslutningar","testAllApiKey":"Testa alla API-nyckelanslutningar","testAllCompatible":"Testa alla kompatibla anslutningar","connected":"{count} Ansluten","errorCount":"{count} Fel ({code})","errorCountNoCode":"{count} Fel","noConnections":"Inga anslutningar","disabled":"Inaktiverad","enableProvider":"Aktivera leverantör","disableProvider":"Inaktivera leverantör","testResults":"Testresultat","noCompatibleYet":"Inga kompatibla leverantörer har lagts till ännu","compatibleHint":"Använd knapparna ovan för att lägga till OpenAI- eller Anthropic-kompatibla slutpunkter","addOpenAICompatible":"Lägg till OpenAI-kompatibel","addAnthropicCompatible":"Lägg till Antropisk kompatibel","addNewProvider":"Lägg till ny leverantör","backToProviders":"Tillbaka till leverantörer","configureNewProvider":"Konfigurera en ny AI-leverantör att använda med dina applikationer.","providerLabel":"Leverantör","selectProvider":"Välj en leverantör","selectedProvider":"Vald leverantör","authMethod":"Autentiseringsmetod","apiKeyLabel":"API-nyckel","apiKeyRequired":"API-nyckel krävs","selectProviderRequired":"Välj en leverantör","enterApiKey":"Ange din API-nyckel","apiKeySecure":"Din API-nyckel kommer att krypteras och lagras säkert.","oauth2Connect":"Anslut med OAuth2","oauth2Label":"OAuth2","oauth2Desc":"Anslut ditt konto med OAuth2-autentisering.","displayName":"Visningsnamn","displayNamePlaceholder":"t.ex. Production API, Dev Environment","displayNameHint":"Valfritt. Ett vänligt namn för att identifiera denna konfiguration.","active":"Aktiv","activeDescription":"Aktivera denna leverantör för användning i dina applikationer","cancel":"Avbryt","createProvider":"Skapa leverantör","failedCreate":"Det gick inte att skapa leverantör","errorOccurred":"Ett fel uppstod. Försök igen.","modelStatus":"Modellstatus","allModelsOperational":"Alla modeller i drift","modelsWithIssues":"{count} modell(er) med problem","allModelsNormal":"Alla modeller svarar normalt.","cooldownCleared":"Nedkylning rensad för {model}","failedClearCooldown":"Det gick inte att rensa nedkylningen","loadingAvailability":"Laddar modelltillgänglighet...","clearCooldown":"Rensa","clearing":"Rensar...","until":"Tills {time}","providerTestFailed":"Providertestet misslyckades","modeTest":"{mode} Test","passedCount":"{count} godkänd","failedCount":"{count} misslyckades","testedCount":"{count} testad","millisecondsAbbr":"{value}ms","okShort":"OK","errorShort":"FEL","noActiveConnectionsInGroup":"Inga aktiva anslutningar hittades för den här gruppen.","allTestsPassed":"Alla {total} tester godkända","testSummary":"{passed}/{total} godkänd, {failed} misslyckades","nameLabel":"Namn","prefixLabel":"Prefix","baseUrlLabel":"Bas-URL","apiTypeLabel":"API-typ","prefixHint":"Obligatoriskt. Unikt prefix för modellnamn.","nameHint":"Obligatoriskt. En vänlig etikett för denna nod.","baseUrlHint":"Obligatoriskt.  Providers API-basadress.","anthropicPrefixPlaceholder":"ac-prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Validera anslutning","validating":"Validerar...","connectionValid":"Anslutningen är giltig!","connectionFailed":"Anslutning misslyckades. Kontrollera URL och nyckel.","testKeyLabel":"Testa API-nyckel","testKeyPlaceholder":"sk-... (endast för validering)","providerNotFound":"Det gick inte att hitta leverantören","deleteConnectionConfirm":"Vill du ta bort den här anslutningen?","failedSetAlias":"Det gick inte att ange alias","failedSaveConnection":"Det gick inte att spara anslutningen","failedSaveConnectionRetry":"Det gick inte att spara anslutningen. Försök igen.","failedRetestConnection":"Det gick inte att testa om anslutningen","deleteCompatibleNodeConfirm":"Ta bort denna {type} kompatibla nod?","anthropicCompatibleDetails":"Antropiska kompatibla detaljer","openaiCompatibleDetails":"OpenAI-kompatibla detaljer","messagesApi":"Messages API","responsesApi":"Responses API","chatCompletions":"Chattavslut","importingModels":"Importerar...","importFromModels":"Importera från /models","clearAllModels":"Rensa alla modeller","clearAllModelsConfirm":"Är du säker på att du vill ta bort alla modeller för den här leverantören? Detta kan inte ångras.","clearAllModelsSuccess":"Alla modeller rensade","clearAllModelsFailed":"Det gick inte att rensa modeller","addConnectionToImport":"Lägg till en anslutning för att aktivera import.","noModelsConfigured":"Inga modeller har konfigurerats","connectionCount":"{count} anslutning(ar)","fetchingModels":"Hämtar tillgängliga modeller...","failedFetchModels":"Det gick inte att hämta modeller","noModelsFound":"Inga modeller hittades","importFailed":"Importen misslyckades","noNewModelsAdded":"Inga nya modeller tillkom.","adding":"Lägger till...","importingModelsTitle":"Importera modeller","copyModel":"Kopiera modell","removeModel":"Ta bort modellen","rateLimitProtected":"Skyddad","rateLimitUnprotected":"Oskyddad","enableRateLimitProtection":"Klicka för att aktivera hastighetsgränsskydd","disableRateLimitProtection":"Klicka för att inaktivera skyddet för hastighetsgränsen","productionKey":"Produktionsnyckel","enterNewApiKey":"Ange ny API-nyckel","optional":"Valfritt","anthropicCompatibleName":"Antropisk kompatibel","openaiCompatibleName":"OpenAI-kompatibel","failedImportModels":"Det gick inte att importera modeller","noModelsReturnedFromEndpoint":"Inga modeller returnerades från /models endpoint.","importingModelsProgress":"Importerar {current} av {total} modeller...","foundModelsStartingImport":"Hittade {count} modeller. Startar import...","importingModelById":"Importerar {modelId}...","importSuccessCount":"{count, plural, one {# model} other {# models}} har importerats framgångsrikt!","noNewModelsAddedExisting":"Inga nya modeller har lagts till (alla finns redan).","importDoneCount":"✓ Klart! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Ett oväntat fel inträffade","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"meddelanden","responsesPath":"svar","chatCompletionsPath":"chatt/avslut","add":"Lägg till","edit":"Redigera","delete":"Ta bort","anthropic":"Antropisk","openai":"OpenAI","singleConnectionPerCompatible":"Endast en anslutning tillåts per kompatibel nod. Lägg till ytterligare en nod om du behöver fler anslutningar.","connections":"Anslutningar","providerProxyTitleConfigured":"Leverantörsproxy: {host}","configured":"konfigurerad","providerProxyConfigureHint":"Konfigurera proxy för alla anslutningar från denna leverantör","providerProxy":"Leverantörs proxy","noConnectionsYet":"Inga anslutningar än","addFirstConnectionHint":"Lägg till din första anslutning för att komma igång","addConnection":"Lägg till anslutning","availableModels":"Tillgängliga modeller","pageAutoRefresh":"Sidan uppdateras automatiskt...","statusDisabled":"funktionshindrade","statusConnected":"ansluten","statusRuntimeIssue":"körtidsproblem","statusAuthFailed":"auth misslyckades","statusRateLimited":"sats begränsad","statusNetworkIssue":"nätverksproblem","statusTestUnsupported":"testet stöds inte","statusUnavailable":"otillgänglig","statusFailed":"misslyckades","statusError":"fel","oauthAccount":"OAuth-konto","errorTypeRuntime":"Lokal körtid","errorTypeUpstreamAuth":"Uppströms auth","errorTypeMissingCredential":"Saknar legitimation","errorTypeRefreshFailed":"Uppdateringen misslyckades","errorTypeTokenExpired":"Token har löpt ut","errorTypeRateLimited":"Begränsat pris","errorTypeUpstreamUnavailable":"Uppströms ej tillgänglig","errorTypeNetworkError":"Nätverksfel","errorTypeTestUnsupported":"Testet stöds inte","errorTypeUpstreamError":"Uppströmsfel","proxySourceGlobal":"Global","proxySourceProvider":"Leverantör","proxySourceKey":"Nyckel","proxyConfiguredBySource":"Proxy ({source}): {host}","autoPriority":"Auto: {priority}","proxy":"Proxy","retestAuthentication":"Testa om autentisering","retest":"Testa igen","disableConnection":"Inaktivera anslutningen","enableConnection":"Aktivera anslutning","reauthenticateConnection":"Autentisera den här anslutningen igen","proxyConfig":"Proxykonfiguration","aliasExistsAlert":"Aliaset \\"{alias}\\" finns redan. Använd en annan modell eller redigera befintligt alias.","openRouterAnyModelHint":"OpenRouter stöder alla modeller. Lägg till modeller och skapa alias för snabb åtkomst.","modelIdFromOpenRouter":"Modell-ID (från OpenRouter)","openRouterModelPlaceholder":"antropisk/claude-3-opus","customModels":"Anpassade modeller","customModelsHint":"Lägg till modell-ID:n som inte finns i standardlistan. Dessa kommer att vara tillgängliga för routing.","modelId":"Modell ID","customModelPlaceholder":"t.ex. gpt-4.5-turbo","loading":"Laddar...","removeCustomModel":"Ta bort anpassad modell","noCustomModels":"Inga anpassade modeller har lagts till ännu.","allSuggestedAliasesExist":"Alla föreslagna alias finns redan. Välj en annan modell eller ta bort motstridiga alias.","failedSaveCustomModel":"Det gick inte att spara anpassad modell","modelAddedSuccess":"Modellen {modelId} har lagts till","failedAddModelTryAgain":"Det gick inte att lägga till modell. Försök igen.","failedSaveImportedModel":"Det gick inte att spara importerad modell till anpassad databas","failedImportModelsTryAgain":"Det gick inte att importera modeller. Försök igen.","failedRemoveModelFromDatabase":"Det gick inte att ta bort modellen från databasen","modelRemovedSuccess":"Modellen har tagits bort","failedDeleteModelTryAgain":"Det gick inte att ta bort modellen. Försök igen.","compatibleModelsDescription":"Lägg till {type}-kompatibla modeller manuellt eller importera dem från /models-slutpunkten.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"API-nyckelvalidering misslyckades. Kontrollera din nyckel och försök igen.","addProviderApiKeyTitle":"Lägg till {provider} API-nyckel","checking":"Kontrollerar...","check":"Kontrollera","valid":"Giltigt","invalid":"Ogiltig","creating":"Skapar...","validationChecksAnthropicCompatible":"Validering kontrollerar {provider} genom att verifiera API-nyckeln.","validationChecksOpenAiCompatible":"Valideringskontroller {provider} via /models på din bas-URL.","priorityLabel":"Prioritet","saving":"Sparar...","save":"Spara","editConnection":"Redigera anslutning","accountName":"Kontonamn","email":"E-post","healthCheckMinutes":"Hälsokontroll (min)","healthCheckHint":"Proaktivt uppdateringsintervall för token. 0 = inaktiverad.","groupLabel":"Environment","groupPlaceholder":"e.g. eKaizen, Personal","failedTestConnection":"Det gick inte att testa anslutningen","failed":"Misslyckades","leaveBlankKeepCurrentApiKey":"Lämna tomt för att behålla den aktuella API-nyckeln.","editCompatibleTitle":"Redigera {type} Kompatibel","compatibleBaseUrlHint":"Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.","apiKeyForCheck":"API-nyckel (för kontroll)","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":"Automatisk synkronisering","autoSyncTooltip":"Uppdatera modelllistan automatiskt var 24:e timme (konfigurerbar via MODEL_SYNC_INTERVAL_HOURS)","autoSyncEnabled":"Automatisk synkronisering aktiverad — modeller uppdateras regelbundet","autoSyncDisabled":"Automatisk synkronisering inaktiverad","autoSyncToggleFailed":"Det gick inte att växla automatisk synkronisering","allModelsAlreadyImported":"Alla modeller är redan importerade","noNewModelsToImport":"Inga nya modeller att importera — alla modeller finns redan i registret eller listan över anpassade modeller","skippingExistingModels":"Hoppar över {count} befintliga modeller"},"settings":{"title":"Inställningar","general":"Allmänt","security":"Säkerhet","appearance":"Utseende","routing":"Routing","cache":"Cache","resilience":"Motståndskraft","systemPrompt":"Systemprompt","thinkingBudget":"Tänkande budget","proxy":"Proxy","pricing":"Prissättning","storage":"Förvaring","policies":"Policyer","ipFilter":"IP-filter","comboDefaults":"Combo standard","fallbackChains":"Reservkedjor","changePassword":"Ändra lösenord","enablePassword":"Aktivera lösenord","darkMode":"Mörkt läge","lightMode":"Ljusläge","systemTheme":"Systemtema","enableCache":"Aktivera cache","cacheTTL":"Cache TTL","maxCacheSize":"Max cachestorlek","clearCache":"Rensa cache","cacheHits":"Cacheträffar","cacheMisses":"Cache missar","hitRate":"Träfffrekvens","cacheEntries":"Cacheposter","circuitBreaker":"Strömbrytare","retryPolicy":"Försök igen","maxRetries":"Max försöker igen","retryDelay":"Försök igen Fördröjning","timeoutMs":"Timeout (ms)","enableSystemPrompt":"Aktivera System Prompt","systemPromptText":"Systemprompttext","enableThinking":"Aktivera tänkande","maxThinkingTokens":"Max Thinking Tokens","enableProxy":"Aktivera proxy","proxyUrl":"Proxy-URL","pricingRates":"Priser Format","currentPricing":"Aktuell prisöversikt","loadingPricing":"Laddar prisinformation...","noPricing":"Inga prisuppgifter tillgängliga","input":"Ingång","output":"Utgång","cached":"Cachad","reasoning":"Resonemang","cacheCreation":"Skapande av cache","customPricing":"Anpassad prissättning","databaseSize":"Databasstorlek","backupDb":"Säkerhetskopiera databas","restoreDb":"Återställ databas","exportData":"Exportera data","importData":"Importera data","clearData":"Rensa alla data","clearDataConfirm":"Detta kommer att radera all data permanent. Är du säker?","enableRequestLogs":"Aktivera förfrågningsloggar","logRetention":"Logglagring","ipWhitelist":"IP vitlista","ipBlacklist":"IP Blacklist","addIP":"Lägg till IP","savedSuccessfully":"Inställningarna har sparats","ai":"AI","advanced":"Avancerat","localMode":"Lokalt läge — All data lagrad på din maskin","settingsSectionsAria":"Inställningar","switchThemes":"Växla mellan ljusa och mörka teman","themeSelectionAria":"Temaval","themeLight":"Ljus","themeDark":"Mörkt","themeSystem":"System","hideHealthLogs":"Dölj loggar för hälsokontroll","hideHealthLogsDesc":"När PÅ, dämpa [HealthCheck]-meddelanden i serverkonsolen","themeAccent":"Temafärg","themeAccentDesc":"Välj en förinställd färg eller skapa ditt eget tema med en färg","themeCreate":"Skapa tema","themeCustom":"Anpassat tema","themeBlue":"Blå","themeRed":"Röd","themeGreen":"Grön","themeViolet":"Violett","themeOrange":"Orange","themeCyan":"Cyan","promptCache":"Fråga Cache","flushCache":"Spola cachen","flushing":"Spolar...","size":"Storlek","hits":"Träffar","evictions":"Vräkningar","loadingCacheStats":"Laddar cachestatistik...","globalProxy":"Global proxy","globalProxyDesc":"Konfigurera en global utgående proxy för alla API-anrop. Enskilda leverantörer, kombinationer och nycklar kan åsidosätta detta.","noGlobalProxy":"Ingen global proxy konfigurerad","globalLabel":"Global","configure":"Konfigurera","globalSystemPrompt":"Global System Prompt","systemPromptDesc":"Injiceras i alla förfrågningar på proxynivå","saved":"Sparad","systemPromptPlaceholder":"Ange systemuppmaning för att injicera i alla förfrågningar...","systemPromptHint":"Denna prompt läggs till systemmeddelandet för varje begäran. Använd för globala instruktioner, säkerhetsriktlinjer eller regler för svarsformatering.","chars":"{count} tecken","thinkingBudgetTitle":"Tänkande budget","thinkingBudgetDesc":"Kontrollera användningen av AI-resonemangstoken över alla förfrågningar","passthrough":"Genomgång","passthroughDesc":"Inga förändringar – kunden styr tankebudgeten","auto":"Auto","autoDesc":"Ta bort alla tankeinställningar – låt leverantören bestämma","custom":"Anpassad","customDesc":"Ställ in en fast tokenbudget för alla förfrågningar","adaptive":"Adaptiv","adaptiveDesc":"Skala budget baserat på begärans komplexitet","effortNone":"Inga (0 tokens)","effortLow":"Låg (1K tokens)","effortMedium":"Medium (10 000 tokens)","effortHigh":"Hög (128 000 tokens)","tokenBudget":"Token budget","tokens":"polletter","baseEffortLevel":"Basinsatsnivå","adaptiveHint":"Adaptivt läge skalas från denna basnivå baserat på antal meddelanden, verktygsanvändning och promptlängd.","requireLogin":"Kräv inloggning","requireLoginDesc":"När PÅ kräver instrumentpanelen lösenord. När AV, åtkomst utan inloggning.","currentPassword":"Aktuellt lösenord","enterCurrentPassword":"Ange aktuellt lösenord","newPassword":"Nytt lösenord","enterNewPassword":"Ange nytt lösenord","confirmPassword":"Bekräfta nytt lösenord","confirmPasswordPlaceholder":"Bekräfta nytt lösenord","passwordsNoMatch":"Lösenord stämmer inte överens","passwordUpdated":"Lösenordet har uppdaterats","failedUpdatePassword":"Det gick inte att uppdatera lösenordet","errorOccurred":"Ett fel uppstod","updatePassword":"Uppdatera lösenord","setPassword":"Ange lösenord","apiEndpointProtection":"API-ändpunktsskydd","requireAuthModels":"Kräv API-nyckel för /modeller","requireAuthModelsDesc":"När PÅ, returnerar /v1/models-slutpunkten 404 för oautentiserade förfrågningar. Förhindrar modellupptäckt av obehöriga användare.","blockedProviders":"Blockerade leverantörer","blockedProvidersDesc":"Dölj specifika leverantörer från /v1/models-svaret. Blockerade leverantörer visas inte i modelllistorna.","providersBlocked":"{count} leverantör(er) blockerade från /modeller","blockProviderTitle":"Blockera {provider}","unblockProviderTitle":"Avblockera {provider}","routingStrategy":"Routingstrategi","fillFirst":"Fyll först","fillFirstDesc":"Använd konton i prioritetsordning","roundRobin":"Round Robin","roundRobinDesc":"Gå igenom alla konton","p2c":"P2C","p2cDesc":"Välj 2 slumpmässigt, använd den hälsosammare","random":"Slumpmässigt","randomDesc":"Slumpmässigt konto varje begäran","leastUsed":"Minst använda","leastUsedDesc":"Välj minst senast använda konto","costOpt":"Kostnad Opt","costOptDesc":"Föredrar billigaste tillgängliga konto","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each account once before reshuffling","stickyLimit":"Sticky Limit","stickyLimitDesc":"Samtal per konto innan byte","modelAliases":"Modellalias","modelAliasesTitle":"Modellalias","modelAliasesDesc":"Jokerteckenmönster för att mappa om modellnamn • Använd * och ?","addCustomAlias":"Lägg Till Anpassat Alias","deprecatedModelId":"Föråldrat modell-ID","newModelId":"Nytt modell-ID","customAliases":"Anpassade Alias","builtInAliases":"Inbyggda Alias","backgroundDegradationTitle":"Bakgrundsuppgifter Degradering","backgroundDegradationDesc":"Upptäcker automatiskt bakgrundsuppgifter (titlar, sammanfattningar) och dirigerar till billigare modeller","enableDegradation":"Aktivera Bakgrundsdegradation","enableDegradationHint":"När aktiverat, dirigeras bakgrundsuppgifter som titelgenerering och sammanfattningar automatiskt till billigare modeller","tasksDetected":"Uppgifter upptäckta","degradationMap":"Modelldegraderingsschema","premiumModel":"Premiummodell","cheapModel":"Billig modell","detectionPatterns":"Detektionsmönster","newPattern":"t.ex. \\"generera en titel\\"","aliasPatternPlaceholder":"claude-sonnett-*","aliasTargetPlaceholder":"claude-sonnet-4-20250514","pattern":"Mönster","targetModel":"Målmodell","add":"+ Lägg till","session":"Session","sessionDetailsAria":"Sessionsdetaljer","status":"Status","authenticated":"Autentiserad","guest":"Gäst","loginTime":"Inloggningstid","sessionAge":"Sessionsålder","browser":"Webbläsare","clearLocalData":"Rensa lokal data","logout":"Logga ut","clearLocalDataConfirm":"Rensa alla lokala data? Detta kommer att återställa dina inställningar.","unknown":"Okänd","systemActor":"systemet","ipAccessControl":"IP-åtkomstkontroll","ipAccessControlDesc":"Blockera eller tillåt specifika IP-adresser","ipModeDisabled":"Inaktiverad","ipModeBlacklist":"Svartlista","ipModeWhitelist":"Vitlista","ipModeWhitelistPriority":"WL-prioritet","addIpAddress":"Lägg till IP-adress","ipAddressPlaceholder":"192.168.1.0/24 eller 10.0.*.*","block":"+ Blockera","allow":"+ Tillåt","blocked":"Blockerad ({count})","allowed":"Tillåtet ({count})","temporaryBans":"Tillfälliga förbud ({count})","minLeft":"{min}m kvar","auditLog":"Revisionslogg","searchAuditLogs":"Sök granskningsloggar...","failedLoadAuditLog":"Det gick inte att läsa in granskningsloggen","noAuditEvents":"Inga granskningshändelser hittades","action":"Åtgärd","actor":"Skådespelare","details":"Detaljer","time":"Tid","fallbackChainsTitle":"Reservkedjor","fallbackChainsDesc":"Definiera reservorder för leverantörer per modell","addChain":"+ Lägg till kedja","modelName":"Modellnamn","modelNamePlaceholder":"claude-sonnet-4-20250514","providersCommaSeparated":"Leverantörer (kommaseparerade, i prioriterad ordning)","providersCommaSeparatedPlaceholder":"antropisk, openai, gemini","createChain":"Skapa kedja","noFallbackChains":"Inga reservkedjor","noFallbackChainsDesc":"Skapa en kedja för att definiera leverantörs reservorder för en modell.","loadingFallbackChains":"Laddar reservkedjor...","deleteChainConfirm":"Vill du ta bort reservkedjan för \\"{model}\\"?","chainCreated":"Kedja skapad för {model}","chainDeleted":"Kedjan raderad för {model}","failedCreateChain":"Det gick inte att skapa kedja","failedDeleteChain":"Det gick inte att ta bort kedjan","deleteChain":"Ta bort kedja","fillModelAndProviders":"Vänligen fyll i modellnamn och leverantörer","addAtLeastOneProvider":"Lägg till minst en leverantör","comboDefaultsTitle":"Combo standard","globalComboConfig":"Global kombinationskonfiguration","defaultStrategy":"Standardstrategi","defaultStrategyDesc":"Tillämpas på nya kombinationer utan explicit strategi","comboStrategyAria":"Kombinationsstrategi","priority":"Prioritet","weighted":"Viktad","maxRetriesLabel":"Max försöker igen","retryDelayLabel":"Försök igen fördröjning (ms)","timeoutLabel":"Timeout (ms)","healthCheck":"Hälsokontroll","healthCheckDesc":"Kontrollera leverantörens tillgänglighet i förväg","trackMetrics":"Spåra mätvärden","trackMetricsDesc":"Spela in mätvärden per kombinationsbegäran","providerOverrides":"Provider åsidosätter","providerOverridesDesc":"Åsidosätt timeout och försök igen per leverantör. Leverantörsinställningar åsidosätter globala standardinställningar.","providerMaxRetriesAria":"{provider} max försök","providerTimeoutAria":"{provider} timeout ms","removeProviderOverrideAria":"Ta bort åsidosättningen {provider}","newProviderNamePlaceholder":"t.ex. google, öppna...","newProviderNameAria":"Nytt leverantörsnamn","retries":"försök igen","ms":"ms","saveComboDefaults":"Spara Combo Defaults","maxNestingDepth":"Max häckningsdjup","concurrencyPerModel":"Samtidighet / Modell","queueTimeout":"Timeout för kö (ms)","providerProfiles":"Leverantörsprofiler","providerProfilesDesc":"Separata inställningar för motståndskraft för OAuth (sessionsbaserad) och API Key (mätad) leverantörer. OAuth-leverantörer har strängare trösklar på grund av lägre prisgränser.","oauthProviders":"OAuth-leverantörer","apiKeyProviders":"API-nyckelleverantörer","transientCooldown":"Övergående nedkylning","rateLimitCooldown":"Rate Limit Cooldown","maxBackoffLevel":"Max Backoff Level","cbThreshold":"CB-tröskel","cbResetTime":"CB-återställningstid","rateLimiting":"Prisbegränsande","rateLimitingDesc":"API-nyckelleverantörer är automatiskt hastighetsbegränsade med säkra standardinställningar. Gränser lärs från svarsrubriker och anpassas över tid.","defaultSafetyNet":"Standardsäkerhetsnät","rpm":"RPM","minGap":"Min Gap","maxConcurrent":"Max Samtidigt","activeLimiters":"Aktiva begränsningar","noActiveLimiters":"Inga aktiva hastighetsbegränsare än.","reservoir":"Reservoar","running":"Löpning","queued":"I kö","circuitBreakers":"Strömbrytare","breakerStateClosed":"Stängt","breakerStateOpen":"Öppna","breakerStateHalfOpen":"Halvöppet","tripped":"{count} utlöstes","healthy":"{count} frisk","resetAll":"Återställ alla","noCircuitBreakers":"Inga strömbrytare aktiva än. De skapas automatiskt när förfrågningar flödar genom den kombinerade pipelinen.","failures":"{count} fel(er)","policiesLocked":"Policyer och låsta identifierare","allOperational":"Alla system är i drift — inga låsningar eller utlösta brytare","loadingPolicies":"Läser in policyer...","lockedIdentifiers":"Låsta identifierare","unlockedIdentifier":"Upplåst: {identifier}","sinceDate":"sedan {date}","forceUnlock":"Tvinga upplåsning","unlocking":"Låser upp...","failedUnlock":"Det gick inte att låsa upp","failedLoadWithStatus":"Det gick inte att ladda: {status}","failedLoadResilience":"Det gick inte att läsa in resiliensstatus","saveFailed":"Det gick inte att spara","resetFailed":"Återställningen misslyckades","loadingResilience":"Laddar resiliensstatus...","retry":"Försök igen","systemStorage":"System & lagring","allDataLocal":"All data lagrad lokalt på din maskin","databasePath":"Databasväg","exportDatabase":"Exportera databas","exportAll":"Exportera alla (.tar.gz)","importDatabase":"Importera databas","confirmDbImport":"Bekräfta databasimport","confirmDbImportDesc":"Detta kommer att ersätta all aktuell data med innehållet från {file}. En säkerhetskopia skapas automatiskt före importen.","yesImport":"Ja, importera","lastBackup":"Senaste säkerhetskopieringen","noBackupYet":"Ingen backup ännu","backupNow":"Säkerhetskopiera nu","backupRestore":"Säkerhetskopiera och återställa","viewBackups":"Visa säkerhetskopior","hide":"Göm","backupRetentionDesc":"Databasögonblicksbilder skapas automatiskt före återställning och var 15:e minut när data ändras. Retention: 24 timmar per timme + 30 dagliga backuper med smart rotation.","loadingBackups":"Laddar säkerhetskopior...","noBackupsYet":"Inga säkerhetskopior tillgängliga ännu. Säkerhetskopieringar skapas automatiskt när data ändras.","backupsAvailable":"{count} säkerhetskopior tillgängliga","refresh":"Uppdatera","confirm":"Bekräfta?","yes":"Ja","no":"Nej","restore":"Återställ","invalidFileType":"Ogiltig filtyp. Endast .sqlite-filer accepteras.","exportFailed":"Exporten misslyckades","exportFailedWithError":"Export misslyckades: {error}","fullExportFailedWithError":"Fullständig export misslyckades: {error}","backupCreated":"Säkerhetskopiering skapad: {file}","restoreSuccess":"Återställd! {connections} anslutningar, {nodes} noder, {combos} kombinationer, {apiKeys} API-nycklar.","importSuccess":"Databas importerad! {connections} anslutningar, {nodes} noder, {combos} kombinationer, {apiKeys} API-nycklar.","justNow":"just nu","minutesAgo":"{count}m sedan","hoursAgo":"{count}h sedan","daysAgo":"{count}d sedan","backupReasonManual":"handbok","backupReasonPreRestore":"föråterställning","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Inga ändringar sedan senaste säkerhetskopiering","backupFailed":"Säkerhetskopieringen misslyckades","restoreFailed":"Återställningen misslyckades","importFailed":"Importen misslyckades","errorDuringRestore":"Ett fel uppstod under återställning","errorDuringImport":"Ett fel uppstod under importen","modelPricing":"Modellprissättning","modelPricingDesc":"Konfigurera kostnadssatser per modell • Alla priser i $/1M tokens","providers":"Leverantörer","registry":"Registret","priced":"Prissatt","searchProvidersModels":"Sök efter leverantörer eller modeller...","showAll":"Visa alla","noProvidersMatch":"Inga leverantörer matchar din sökning.","howPricingWorks":"Hur prissättning fungerar","cacheWrite":"Cache Skriv","unsaved":"osparade","resetDefaults":"Återställ standardvärden","saveProvider":"Spara leverantör","saving":"Sparar...","model":"Modell","models":"modeller","moreProviders":"{count} fler leverantörer","withPricing":"med konfigurerad prissättning","policiesCircuitBreakers":"Policyer och strömbrytare","activeIssuesDetected":"Aktiva problem upptäcktes","off":"Av","resetPricingConfirm":"Vill du återställa alla priser för {provider} till standardvärdena?","pricingDescInput":"Indata: tokens skickas till modellen","pricingDescOutput":"Utdata: tokens genererade","pricingDescCached":"Cachad: återanvänd indata (~50 % av inmatningshastighet)","pricingDescReasoning":"Resonemang: tänkande tokens (faller tillbaka till Output)","pricingDescCacheWrite":"Cache Write: skapa cache-poster (faller tillbaka till Input)","pricingDescFormula":"Kostnad = (ingång × input_rate) + (output × output_rate) + (cachad × cached_rate) per miljon tokens.","pricingSettingsTitle":"Prisinställningar","totalModels":"Totalt antal modeller","active":"Aktiv","costCalculation":"Kostnadsberäkning","costCalculationDesc":"Kostnaderna beräknas baserat på tokenanvändning och prissättning som konfigurerats för varje modell.","pricingFormat":"Prisformat","pricingFormatDesc":"Alla priser är i $/1M tokens (dollar per miljon tokens).","tokenTypes":"Tokentyper","inputTokenDesc":"Standard prompt tokens","outputTokenDesc":"Kompletterande/svars-tokens","cachedTokenDesc":"Cachade indatatokens (vanligtvis 50 % av inmatningshastigheten)","reasoningTokenDesc":"Särskilda resonemang/tänketokens (återgång till produktionshastighet)","cacheCreationTokenDesc":"Tokens som används för att skapa cacheposter (återgång till inmatningshastighet)","customPricingNote":"Du kan åsidosätta standardpriser för specifika modeller. Anpassade åsidosättningar har prioritet framför automatiskt identifierade priser.","editPricing":"Redigera prissättning","viewFullDetails":"Visa fullständiga 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":"Avancerad vägledning","routingAdvancedGuideHint1":"Använd Fill First för förutsägbar prioritet, Round Robin för rättvisa och P2C för latensförmåga.","routingAdvancedGuideHint2":"Om leverantörer varierar i kvalitet/kostnad, börja med Cost Opt för bakgrundsarbete och Minst Används för balanserat slitage.","comboDefaultsGuideTitle":"Hur man ställer in kombinationsinställningar","comboDefaultsGuideHint1":"Håll låga omförsök i flöden med låg latens; öka timeout endast för långa generationsuppgifter.","comboDefaultsGuideHint2":"Använd åsidosättande av leverantörer när en leverantör behöver ett annat beteende för timeout/försök igen än globala standardinställningar."},"translator":{"title":"Översättare","metaTitle":"Översättare Lekplats | OmniRoute","metaDescription":"Felsök, testa och visualisera API-formatöversättningar mellan leverantörer","playgroundTitle":"Översättare Lekplats","playground":"Lekplats","realtime":"Översättningsaktivitet i realtid","chatTester":"Chattestare","testBench":"Testbänk","liveMonitor":"Live Monitor","modeDescriptionPlayground":"Klistra in valfri API-begäran och se hur OmniRoute översätter den mellan leverantörsformat (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","modeDescriptionChatTester":"Skicka riktiga chattförfrågningar via OmniRoute och inspektera hela tur och retur: indata, översatt begäran, leverantörssvar och översatt utdata.","modeDescriptionTestBench":"Kör fördefinierade scenarier och jämför kompatibilitet mellan leverantörer och modeller.","modeDescriptionLiveMonitor":"Se översättningshändelser i realtid när förfrågningar flödar genom OmniRoute.","modeDescriptionFallback":"Felsök, testa och visualisera hur OmniRoute översätter API-förfrågningar mellan leverantörer.","recentTranslations":"Nya översättningar","noTranslations":"Inga översättningar ännu","source":"Källa","target":"Mål","time":"Tid","model":"Modell","status":"Status","latency":"Latens","totalTranslations":"Totala översättningar","successful":"Framgångsrik","errors":"Fel","avgLatency":"Genomsnittlig latens","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"Live — Automatisk uppdatering","paused":"Pausad","eventsAppearHint":"Översättningshändelser visas här när förfrågningar flödar genom OmniRoute. Använd någon av dessa metoder för att generera händelser:","chatTesterTab":"Fliken Chattestare","testBenchTab":"Fliken Testbänk","externalApiCalls":"Externa API-anrop","ideCliIntegrations":"IDE/CLI-integrationer","inMemoryNote":"Obs: Händelser lagras i minnet och återställs när servern startar om.","ok":"OK","errorShort":"ERR","formatConverter":"Formatomvandlare","formatConverterDescription":"Klistra in eller skriv en JSON-begäran. Översättaren kommer att automatiskt upptäcka källformatet och konvertera det till målformatet. Använd detta för att felsöka hur OmniRoute översätter förfrågningar mellan format (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).","input":"Ingång","output":"Utgång","auto":"Auto","swapFormats":"Byt format","translateAction":"Översätt","clear":"Rensa","inputPlaceholder":"Klistra in en förfrågningstext här eller välj en mall nedan...","exampleTemplates":"Exempel mallar","exampleTemplatesHint":"— Klicka för att ladda","templateLoadHint":"Mallen laddar begäran i formatet {format}. Ändra källformat för att ladda i ett annat format.","compatibilityTester":"Kompatibilitetstestare","compatibilityReport":"Kompatibilitetsrapport","testBenchDescription":"Kör fördefinierade scenarier (Simple Chat, Tool Calling, etc.) för att verifiera översättning och leverantörskompatibilitet. Välj ett källformat och målleverantör och kör sedan alla tester för att se en kompatibilitetsprocent. Använd det här för att ta reda på vilka funktioner som fungerar mellan olika leverantörer.","targetProvider":"Målleverantör","runAllTests":"Kör alla tester","runTest":"Kör test","reRun":"Kör igen","running":"Kör...","passed":"godkänd","failed":"misslyckades","passedIconLabel":"✅ Godkänd","chunks":"bitar","scenarioSimpleChat":"Enkel chatt","scenarioToolCalling":"Verktygsanrop","scenarioMultiTurn":"Flervarv","scenarioThinking":"Tänker","scenarioSystemPrompt":"Systemprompt","scenarioStreaming":"Streaming","templateNames":{"simple-chat":"Enkel chatt","tool-calling":"Verktygsanrop","multi-turn":"Flervarv","thinking":"Tänker","system-prompt":"Systemprompt","streaming":"Streaming"},"templateDescriptions":{"simple-chat":"Grundläggande textmeddelande","tool-calling":"Funktion/verktygsanrop","multi-turn":"Samtal med historien","thinking":"Utökat tänkande/resonemang","system-prompt":"Komplexa systeminstruktioner","streaming":"SSE-strömningsförfrågan"},"templatePayloads":{"simpleChat":{"system":"Du är en hjälpsam assistent.","userGreeting":"Hej! Hur mår du idag?"},"toolCalling":{"userWeather":"Hur är vädret i São Paulo?","toolDescription":"Få aktuellt väder för en plats","cityNameDescription":"Stadsnamn"},"multiTurn":{"system":"Du är en kodningsassistent.","userInitial":"Skriv en funktion för att sortera en array i Python.","assistantExample":"Här är en enkel sorteringsfunktion:\\n\\n``` python\\ndef sort_array(arr):\\n return sorterad(arr)\\n```","userFollowUp":"Sortera det nu i fallande ordning."},"thinking":{"question":"Vad är summan av de första 100 primtalen?"},"systemPrompt":{"systemInstruction":"Du är en senior mjukvaruingenjör specialiserad på distribuerade system. Svara på frågor kortfattat med hjälp av branschens bästa praxis. Ge alltid kodexempel när det är relevant. Formatera dina svar med markdown.","question":"Hur implementerar jag ett strömbrytarmönster?"},"streaming":{"prompt":"Berätta en kort historia om en robot som lär sig måla."}},"openaiCompatibleLabel":"OpenAI-kompatibel","anthropicCompatibleLabel":"Antropisk kompatibel","noTemplateForFormat":"Ingen mall för detta format","translationFailed":"Översättning misslyckades: {error}","pipelineDebugger":"Pipeline Debugger","translationPipeline":"Översättning pipeline","pipelineVisualization":"Visualisering av pipeline","pipelineVisualizationHint":"Skicka ett meddelande för att se hur din förfrågan flyter genom upptäckt → översättning → leverantörssamtal.","chatTesterDescription":"Skicka meddelanden som ett specifikt klientformat och inspektera varje steg i översättningspipelinen.","chatTesterFlow":"Klientförfrågan → Formatdetektion → OpenAI Intermediate → Leverantörsformat → Svar","clickStepToInspect":"Klicka på valfritt steg för att inspektera data i det stadiet.","clientFormat":"Klientformat","provider":"Leverantör","modelPlaceholder":"Välj eller skriv ett modellnamn...","sendMessageToSeePipeline":"Skicka ett meddelande för att se översättningspipeline","chatMessageHintPrefix":"Ditt meddelande kommer att formateras som en","chatMessageHintSuffix":"begäran, översatt genom pipelinen och skickad till den valda leverantören.","youWithFormat":"Du ({format})","assistant":"Assistent","typeMessage":"Skriv ett meddelande...","send":"Skicka","clientRequest":"Kundförfrågan","clientRequestDescription":"Begäran som din klient skulle skicka den","formatDetected":"Format upptäckt","formatDetectedDescription":"OmniRoute upptäcker automatiskt API-formatet från förfrågningsstrukturen","openaiIntermediate":"OpenAI Intermediate","openaiIntermediateDescription":"Alla format normaliseras först till OpenAI-format (den universella bryggan)","providerFormat":"Leverantörsformat","providerFormatDescription":"OpenAI-formatet översätts till leverantörens ursprungliga format","providerResponse":"Leverantörens svar","providerResponseRawDescription":"Det råa svaret från leverantörens API","providerResponseSseDescription":"Den råa SSE-strömmen från leverantörens API","unexpectedError":"Ett oväntat fel inträffade","error":"Fel","errorMessage":"Fel: {message}","requestFailed":"Begäran misslyckades","noTextExtracted":"(Ingen text extraherad)","liveMonitorDescriptionPrefix":"Visar översättningshändelser när API-anrop flyter genom OmniRoute. Händelser kommer från minnesbufferten (återställs vid omstart). Använd","liveMonitorDescriptionSuffix":", eller externa API-anrop för att generera händelser."},"usage":{"title":"Användning","loggerTab":"Logger","proxyTab":"Proxy","budgetManagement":"Budgethantering","budgetSaved":"Budgetgränser sparade","budgetSaveFailed":"Det gick inte att spara budget","loadingBudgetData":"Laddar budgetdata...","noApiKeysTitle":"Inga API-nycklar","noApiKeysDescription":"Lägg först till API-nycklar för att ställa in budgetgränser.","apiKey":"API-nyckel","todaysSpend":"Dagens utgifter","thisMonth":"Denna månad","setLimits":"Ställ in gränser","dailyLimitUsd":"Daglig gräns (USD)","monthlyLimitUsd":"Månadsgräns (USD)","warningThresholdPercent":"Varningströskel (%)","dailyLimitPlaceholder":"t.ex. 5.00","monthlyLimitPlaceholder":"t.ex. 50.00","warningThresholdPlaceholder":"80","saveLimits":"Spara gränser","budgetOk":"Budget OK — {remaining} kvar","budgetExceeded":"Budget överskriden — förfrågningar kan blockeras","totalRequests":"Totalt antal förfrågningar","noDataYet":"Inga uppgifter ännu","latency":"Latens","latencyP50":"p50","latencyP95":"s 95","latencyP99":"s 99","promptCache":"Fråga Cache","systemHealth":"Systemhälsa","entries":"Inlägg","activeCount":"{count} aktiv","openCircuitBreakersDetected":"Öppen strömbrytare upptäckt","hitRate":"Träfffrekvens","hitsMisses":"Träffar/missar","circuitBreakers":"Strömbrytare","lockedIPs":"Låsta IP-adresser","lockoutsAutoRefreshHint":"Lås för hastighetsgräns per modell • Automatisk uppdatering 10s","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} kvar","howItWorks":"Hur det fungerar","howItWorksSubtitle":"Lär dig hur utvärderingar validerar dina LLM-svar","define":"Definiera","defineStepDescription":"Skapa testfall med indatameddelanden och förväntade utdatakriterier med hjälp av strategier som innehåller, regex eller exakt matchning.","run":"Kör","runStepDescription":"Utför testfall mot dina LLM-slutpunkter genom OmniRoute. Varje ärende skickas som en riktig API-förfrågan.","evaluate":"Utvärdera","evaluateStepDescription":"Svar jämförs mot förväntade kriterier. Se godkänt/underkänt för varje fall med latensstatistik och detaljerad feedback.","evalSuites":"Utvärderingssviter","evalSuitesHint":"Klicka på en svit för att se testfall och kör sedan för att utvärdera dina LLM-slutpunkter","evalsLoading":"Laddar eval-sviter...","noEvalSuitesFound":"Inga Eval Suites hittades","noEvalSuitesDescription":"Eval-sviter kan definieras via API:t eller i kod. De testar modellutdata mot förväntade resultat med hjälp av strategier som innehåller, regex, exakt matchning och anpassade funktioner.","columnCase":"Fall","columnStatus":"Status","columnLatency":"Latens","columnDetails":"Detaljer","columnModel":"Modell","columnStrategy":"Strategi","columnExpected":"Förväntat","statsSuites":"Sviter","statsTestCases":"Testfall","statsModels":"Modeller","statsCoverage":"Täckning","statsStrategiesCount":"{count} strategier","evaluationStrategies":"Utvärderingsstrategier","modelsUnderTest":"Modeller under test","searchSuitesPlaceholder":"Sök efter sviter...","passSuffix":"passera","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Kör Eval","runningProgress":"Kör {current}/{total}...","passRate":"genomslagsfrekvens","summaryBreakdown":"{passed} godkänd · {failed} misslyckades · {total} totalt","passedIconLabel":"✅ Godkänd","failedIconLabel":"❌ Misslyckades","detailsContains":"Innehåller: \\"{term}\\"","detailsRegex":"Regex: {pattern}","detailsExpected":"Förväntat: \\"{expected}\\"","noResultsYet":"Inga resultat ännu","testCasesCount":"Testfall ({count})","noTestCasesDefined":"Inga testfall definierade","runEvalHint":"Klicka på \\"Kör Eval\\" för att köra alla ärenden mot din LLM-slutpunkt. Varje test skickar en riktig förfrågan via OmniRoute.","notifyNoTestCases":"Inga testfall har definierats för denna svit","notifyAllCasesPassed":"Alla {total} fall godkändes ✅","notifySomeCasesFailed":"{passed}/{total} godkänd, {failed} misslyckades","notifyEvalRunFailed":"Evalkörningen misslyckades","notifyEvalTitle":"Eval: {name}","modelEvals":"Modellutvärderingar","evalsHeroDescription":"Testa och validera dina LLM-slutpunkter genom att köra fördefinierade utvärderingssviter. Varje svit innehåller testfall som skickar riktiga uppmaningar genom OmniRoute och jämför svar mot förväntade kriterier – vilket hjälper dig att upptäcka regressioner, jämföra modeller och säkerställa svarskvalitet mellan leverantörer.","qualityValidation":"Kvalitetsvalidering","modelComparison":"Modelljämförelse","regressionDetection":"Regressionsdetektering","latencyBenchmarks":"Latency Benchmarks","modelLockouts":"Modell Lockouter","noLockouts":"Inga modeller är för närvarande låsta","activeSessions":"Aktiva sessioner","noSessions":"Inga aktiva sessioner","sessionsHint":"Sessioner visas när förfrågningar flödar genom proxyn","sessionsTrackedHint":"Spåras via begäran om fingeravtryck • Automatisk uppdatering 5s","session":"Session","age":"Ålder","requests":"Förfrågningar","connection":"Anslutning","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Leverantörsgränser","noProviders":"Inga leverantörer anslutna","connectProvidersForQuota":"Anslut till leverantörer med OAuth för att spåra dina API-kvotgränser och användning.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(filtrerad från {count})","autoRefresh":"Automatisk uppdatering","refreshAll":"Uppdatera alla","loadingQuotas":"Laddar...","account":"konto","modelQuotas":"Modellkvoter","lastUsed":"Senast använd","actions":"Åtgärder","refreshQuota":"Uppdatera kvoten","today":"Idag","tomorrow":"Imorgon","dayTimeFormat":"{day}, {time}","inDuration":"i {duration}","notApplicable":"N/A","rawPlanWithValue":"Rå plan: {plan}","noPlanFromProvider":"Ingen plan från leverantören","noQuotaData":"Inga kvotdata","ungrouped":"Ungrouped","viewFlat":"Flat","viewByEnvironment":"By Environment","noQuotaDataAvailable":"Inga kvotdata tillgängliga","noAccountsForTierFilter":"Inga konton hittades för nivåfilter","tierAll":"Alla","tierEnterprise":"Företag","tierTeam":"Team","tierBusiness":"Business","tierUltra":"Ultra","tierPro":"Pro","tierPlus":"Plus","tierFree":"Gratis","tierUnknown":"Okänd"},"modals":{"waitingAuth":"Väntar på auktorisering","verificationUrl":"Verifierings-URL","yourCode":"Din kod","remoteAccess":"Fjärråtkomst:","connectedSuccess":"Ansluten framgångsrikt!","connectionFailed":"Anslutningen misslyckades","chooseAuthMethod":"Välj din autentiseringsmetod:","awsBuilderId":"AWS Builder ID","awsIamIdentity":"AWS IAM Identity Center","googleAccount":"Google-konto","githubAccount":"GitHub-konto","importToken":"Importera token","pasteToken":"Klistra in uppdateringstoken från Kiro IDE.","awsRegion":"AWS-regionen","autoDetecting":"Identifierar tokens automatiskt...","readingFromCache":"Läser från AWS SSO-cache","readingFromCursor":"Läser från Cursor IDE-databas","initializing":"Initierar...","pricingConfig":"Priskonfiguration","loadingPricing":"Laddar prisinformation...","pricingRatesFormat":"Priser Format","noPricingData":"Inga prisuppgifter tillgängliga","noModelsFound":"Inga modeller hittades"},"loggers":{"allProviders":"Alla leverantörer","allModels":"Alla modeller","allAccounts":"Alla konton","allApiKeys":"Alla API-nycklar","allTypes":"Alla typer","allLevels":"Alla nivåer","modelAZ":"Modell A-Z","modelZA":"Modell Z-A","loadingLogs":"Laddar loggar...","loadingProxyLogs":"Laddar proxyloggar...","noLogEntries":"Inga loggposter hittades","noPayloadData":"Ingen nyttolastdata tillgänglig för denna loggpost.","proxyEvent":"Proxyhändelse","proxy":"Proxy","level":"Nivå","directNative":"Direkt (infödd)","combo":"Combo","inputTokens":"jag:","outputTokens":"O:"},"stats":{"usageOverview":"Användningsöversikt","outputTokens":"Output Tokens","totalCost":"Total kostnad","usageByModel":"Användning efter modell","usageByAccount":"Användning per konto","failedToLoad":"Det gick inte att läsa in användningsstatistik.","tokenHealth":"Token Health","totalOAuth":"Totalt OAuth","healthy":"Frisk","warning":"Varning","errored":"Fel","lastCheck":"Sista kontrollen","noData":"Inga data","share":"Dela","unableToLoad":"Det gick inte att läsa in systemstatistik","product":"Produkt","resources":"Resurser","company":"Företag"},"auth":{"welcome":"Välkommen","signIn":"Logga in","enterPassword":"Ange ditt lösenord för att fortsätta","password":"Lösenord","unifiedProxy":"Unified AI API Proxy","unifiedAiApiProxy":"Unified AI API Proxy","unifiedAiApiProxyDesc":"Dirigera förfrågningar till flera AI-leverantörer via en enda slutpunkt. Lastbalansering, failover och användningsspårning inbyggd.","passwordNotEnabled":"Lösenordsskydd är inte aktiverat","loading":"Laddar...","invalidPassword":"Ogiltigt lösenord","errorOccurredRetry":"Ett fel uppstod. Försök igen.","configureInstance":"Låt oss konfigurera din OmniRoute-instans","runOnboardingWizard":"Kör introduktionsguiden för att ställa in ditt lösenord och ansluta din första AI-leverantör.","startOnboarding":"Börja onboarding","secureYourInstance":"Säkra din instans","setPasswordDescription":"Ange ett lösenord för att skydda din instrumentpanel och skydda dina API-slutpunkter från obehörig åtkomst.","configurePassword":"Konfigurera lösenord","continue":"Fortsätt","windowWillClose":"Det här fönstret stängs automatiskt...","closeTabNow":"Du kan stänga den här fliken nu.","copyUrlManual":"Kopiera URL:en från adressfältet och klistra in den i programmet.","accessDeniedDescription":"Du har inte behörighet att komma åt den här resursen. Kontrollera din API-nyckel eller kontakta administratören.","goToDashboard":"Gå till Dashboard","featureMultiProviderTitle":"Flera leverantörer","featureMultiProviderDesc":"OpenAI, Anthropic, Google och mer","featureLoadBalancingTitle":"Lastbalansering","featureLoadBalancingDesc":"Fördela förfrågningar intelligent","featureUsageTrackingTitle":"Användningsspårning","featureUsageTrackingDesc":"Övervaka kostnader och tokens","resetPassword":"Återställ lösenord","resetDescription":"Välj en metod för att återställa åtkomst till din instrumentpanel","stopServer":"Stoppa OmniRoute-servern","processing":"Bearbetar...","pleaseWait":"Vänta medan vi slutför auktoriseringen.","authSuccess":"Auktoriseringen lyckades!","copyUrl":"Kopiera denna URL","accessDenied":"Åtkomst nekad","methodCliTitle":"Metod 1: CLI-återställning","methodCliDescription":"Kör följande kommando på servern där OmniRoute körs:","methodCliHint":"Detta kommer att uppmana dig att ange ett nytt lösenord. Servern måste stoppas först.","methodManualTitle":"Metod 2: Manuell återställning","methodManualDescription":"Ta bort lösenordet från databasen och ställ in ett nytt vid start:","setPasswordInYour":"Ange ett nytt lösenord i din","fileLabelSuffix":"fil:","newPasswordPlaceholder":"ditt_nya_lösenord","deleteSettingsFile":"Ta bort","orRemovePasswordHashField":"eller ta bort fältet passwordHash","restartServerWithNewPassword":"Starta om servern - den kommer att använda det nya lösenordet","backToLogin":"Tillbaka till inloggning","forgotPassword":"Glömt lösenordet?","defaultPasswordHint":"Default password: 123456 (unless INITIAL_PASSWORD was set)","Authorization":"Auktorisation","Content-Disposition":"Innehåll-Disposition","waitingForAuthorization":"Väntar på auktorisation...","waitingForGoogleAuthorization":"Väntar på Google-auktorisering...","waitingForOpenAIAuthorization":"Väntar på OpenAI-auktorisering...","waitingForAntigravityAuthorization":"Väntar på antigravitationstillstånd...","waitingForIFlowAuthorization":"Väntar på iFlow-auktorisering...","exchangingCodeForTokens":"Byter ut kod för tokens..."},"landing":{"brandName":"OmniRoute","navigateHome":"Navigera till hem","toggleMenu":"Växla meny","featuresLink":"Funktioner","docsLink":"Dokument","github":"GitHub","versionLive":"v1.0 är nu live","oneEndpoint":"En slutpunkt för","allProviders":"Alla AI-leverantörer","heroDescription":"AI-slutpunktsproxy med webbinstrumentpanel - En JavaScript-port för CLIProxyAPI. Fungerar sömlöst med Claude Code, OpenAI Codex, Cline, RooCode och andra CLI-verktyg.","getStarted":"Kom igång","viewOnGithub":"Visa på GitHub","powerfulFeatures":"Kraftfulla funktioner","featuresSubtitle":"Allt du behöver för att hantera din AI-infrastruktur på ett ställe, byggt för skala.","featureUnifiedEndpointTitle":"Unified Endpoint","featureUnifiedEndpointDesc":"Få tillgång till alla leverantörer via en enda standard API-URL.","featureEasySetupTitle":"Enkel installation","featureEasySetupDesc":"Kom igång på några minuter med npx-kommandot.","featureModelFallbackTitle":"Modell Fallback","featureModelFallbackDesc":"Byt leverantör automatiskt vid fel eller hög latens.","featureUsageTrackingTitle":"Användningsspårning","featureUsageTrackingDesc":"Detaljerad analys och kostnadsövervakning över alla modeller.","featureOAuthApiKeysTitle":"OAuth- och API-nycklar","featureOAuthApiKeysDesc":"Hantera autentiseringsuppgifter på ett säkert sätt i ett valv.","featureCloudSyncTitle":"Molnsynkronisering","featureCloudSyncDesc":"Synkronisera dina konfigurationer mellan enheter direkt.","featureCliSupportTitle":"CLI Support","featureCliSupportDesc":"Fungerar med Claude Code, Codex, Cline, Cursor och mer.","featureDashboardTitle":"Instrumentpanel","featureDashboardDesc":"Visuell instrumentpanel för trafikanalys i realtid.","howItWorks":"Hur OmniRoute fungerar","howItWorksDescription":"Data flödar sömlöst från din applikation genom vårt intelligenta routinglager till den bästa leverantören för jobbet.","howItWorksStep1Title":"1. CLI & SDK:er","howItWorksStep1Description":"Dina förfrågningar utgår från dina favoritverktyg eller vår enhetliga SDK. Ändra bara webbadressen.","howItWorksStep2Title":"2. OmniRoute Hub","howItWorksStep2Description":"Vår motor analyserar uppmaningen, kontrollerar leverantörens hälsa och rutter för lägsta latens eller kostnad.","howItWorksStep3Title":"3. AI-leverantörer","howItWorksStep3Description":"Begäran uppfylls av OpenAI, Anthropic, Gemini eller andra omedelbart.","getStartedIn30Seconds":"Kom igång på 30 sekunder","getStartedDescription":"Installera OmniRoute, konfigurera dina leverantörer via webbinstrumentpanelen och börja dirigera AI-förfrågningar.","installOmniRoute":"Installera OmniRoute","installStepDescription":"Kör npx-kommandot för att starta servern direkt","openDashboard":"Öppna Dashboard","openDashboardStepDescription":"Konfigurera leverantörer och API-nycklar via webbgränssnitt","routeRequests":"Ruttförfrågningar","routeRequestsStepDescription":"Rikta dina CLI-verktyg till {endpoint}","terminal":"terminal","copy":"Kopiera","copied":"✓ Kopierat","startingOmniRoute":"Startar OmniRoute...","serverRunningOnLabel":"Server körs på","dashboardLabel":"Instrumentpanel","readyToRoute":"Redo att färdas! ✓","configureProvidersNote":"📝 Konfigurera leverantörer i instrumentpanelen eller använd miljövariabler","dataLocation":"Dataplats:","dataLocationMacLinux":" macOS/Linux:","dataLocationWindows":" Windows:","product":"Produkt","dashboardLink":"Instrumentpanel","changelog":"Ändringslogg","resources":"Resurser","documentation":"Dokumentation","npm":"NPM","legal":"Lagligt","mitLicense":"MIT-licens","footerTagline":"Den enhetliga slutpunkten för AI-generering. Anslut, dirigera och hantera dina AI-leverantörer med lätthet.","copyright":"© {year} OmniRoute. Alla rättigheter reserverade.","flowToolClaudeCode":"Claude Code","flowToolOpenAICodex":"OpenAI Codex","flowToolCline":"Cline","flowToolCursor":"Markör","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Antropisk","flowProviderGemini":"Tvillingarna","flowProviderGithubCopilot":"GitHub Copilot","interactiveDiagram":"Interaktivt diagram synligt på skrivbordet","ctaTitle":"Är du redo att förenkla din AI-infrastruktur?","ctaDescription":"Gå med utvecklare som effektiviserar sina AI-integrationer med OmniRoute. Öppen källkod och gratis att starta.","startFree":"Börja gratis","readDocumentation":"Läs dokumentation"},"docs":{"title":"Dokumentation","quickStart":"Snabbstart","features":"Funktioner","supportedProviders":"Leverantörer som stöds","supportedProvidersToc":"Leverantörer","commonUseCases":"Vanliga användningsfall","clientCompatibility":"Klientkompatibilitet","protocolsToc":"Protokoll","apiReference":"API-referens","method":"Metod","path":"Väg","notes":"Anteckningar","modelPrefixes":"Modellprefix","prefix":"Prefix","troubleshooting":"Felsökning","supportsChat":"Stöder både chatt- och svarsslutpunkter.","oauthAutoRefresh":"OAuth-anslutning med automatisk tokenuppdatering.","fullStreaming":"Fullständigt streamingstöd för alla modeller.","docsLabel":"Dokument","docsHeroDescription":"AI-gateway för LLM:er med flera leverantörer. En slutpunkt för OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor och 20+ leverantörer till.","openDashboard":"Öppna Dashboard","endpointPage":"Slutpunktssida","github":"GitHub","reportIssue":"Rapportera problem","onThisPage":"På den här sidan","documentationVersion":"Dokumentation - v{version}","quickStartStep1Title":"1. Installera och kör","quickStartStep1Prefix":"Kör","quickStartStep1Middle":"eller klona från GitHub och kör","quickStartStep2Title":"2. Skapa API-nyckel","quickStartStep2Text":"Gå till Endpoint -> Registrerade nycklar. Generera en nyckel per miljö.","quickStartStep3Title":"3. Anslut leverantörer","quickStartStep3Text":"Lägg till leverantörskonton via OAuth-inloggning, API-nyckel eller automatisk anslutning på fri nivå.","quickStartStep4Title":"4. Ställ in klientbasens URL","quickStartStep4Prefix":"Peka din IDE- eller API-klient till","quickStartStep4Suffix":"Använd till exempel leverantörsprefix","featureRoutingTitle":"Routing för flera leverantörer","featureRoutingText":"Dirigera förfrågningar till 30+ AI-leverantörer via en enda OpenAI-kompatibel slutpunkt. Stöder chatt, svar, ljud och bild-API:er.","featureCombosTitle":"Kombinationer och balansering","featureCombosText":"Skapa modellkombinationer med reservkedjor och balanseringsstrategier: round-robin, prioritet, slumpmässigt, minst använda och kostnadsoptimerat.","featureUsageTitle":"Användnings- och kostnadsspårning","featureUsageText":"Tokenräkning i realtid, kostnadsberäkning per leverantör/modell och detaljerad användningsuppdelning efter API-nyckel och konto.","featureAnalyticsTitle":"Analysinstrumentpanel","featureAnalyticsText":"Visuell analys med diagram för förfrågningar, tokens, fel, latens, kostnader och modellpopularitet över tid.","featureHealthTitle":"Hälsoövervakning","featureHealthText":"Live hälsokontroller, leverantörsstatus, strömbrytartillstånd och automatisk hastighetsgränsdetektering med exponentiell backoff.","featureCliTitle":"CLI-verktyg","featureCliText":"Hantera IDE-konfigurationer, exportera/importera säkerhetskopior, upptäck codex-profiler och konfigurera inställningar från instrumentpanelen.","featureSecurityTitle":"Säkerhet och policyer","featureSecurityText":"API-nyckelautentisering, IP-filtrering, promptinjektionsskydd, domänpolicyer, sessionshantering och granskningsloggning.","featureCloudSyncTitle":"Molnsynkronisering","featureCloudSyncText":"Synkronisera din konfiguration med Cloudflare Workers för fjärråtkomst med krypterade autentiseringsuppgifter och automatisk failover.","providersAcrossConnectionTypes":"{count} leverantörer över tre anslutningstyper.","manageProviders":"Hantera leverantörer","providersCount":"{count} leverantörer","providerTypeFree":"Gratis nivå","providerTypeOAuth":"OAuth","providerTypeApiKey":"API-nyckel","useCaseSingleEndpointTitle":"En enda slutpunkt för många leverantörer","useCaseSingleEndpointText":"Peka klienter till en basadress och dirigera efter modellprefix (till exempel: gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Reserv- och modellbyte med kombinationer","useCaseFallbackText":"Skapa kombinationsmodeller i Dashboard och håll klientkonfigurationen stabil medan leverantörerna roterar internt.","useCaseUsageVisibilityTitle":"Användning, kostnad och felsökningssynlighet","useCaseUsageVisibilityText":"Spåra tokens och kostnader efter leverantör, konto och API-nyckel på flikarna Användning och Analytics.","clientCherryStudioTitle":"Cherry Studio","baseUrlLabel":"Bas-URL","chatEndpointLabel":"Chattslutpunkt","modelRecommendationLabel":"Modellrekommendation: explicit prefix","clientCodexTitle":"Codex / GitHub Copilot-modeller","clientCodexBullet1":"Använd modell-ID med","clientCodexBullet2":"Codex-familjens modeller dirigeras automatiskt till","clientCodexBullet3":"Icke-Codex-modeller fortsätter","clientCursorTitle":"Markör IDE","clientCursorBullet1":"Använd","clientCursorBullet1Suffix":"prefix för Cursor-modeller.","clientCursorBullet2":"OAuth-anslutning - logga in från sidan Leverantörer.","clientClaudeTitle":"Claude Code / Antigravitation","clientClaudeBullet1Prefix":"Använd","clientClaudeBullet1Middle":"(Claude) eller","clientClaudeBullet1Suffix":"(Antigravitation) prefix.","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-kompatibel chattslutpunkt (standard).","endpointResponsesNote":"Responses API-slutpunkt (Codex, o-serien).","endpointModelsNote":"Modellkatalog för alla anslutna leverantörer.","endpointAudioNote":"Ljudtranskription (Deepgram, AssemblyAI).","endpointImagesNote":"Bildgenerering (NanoBanana).","endpointRewriteChatNote":"Omskrivningshjälp för klienter utan /v1.","endpointRewriteResponsesNote":"Skriv om hjälpare för svar utan /v1.","endpointRewriteModelsNote":"Omskrivningshjälp för modellupptäckt utan /v1.","modelPrefixesDescriptionStart":"Använd leverantörsprefixet före modellnamnet för att dirigera till en specifik leverantör. Exempel:","modelPrefixesDescriptionEnd":"rutter till GitHub Copilot.","provider":"Leverantör","type":"Typ","troubleshootingModelRouting":"Om klienten misslyckas med modellrouting, använd explicit leverantör/modell (till exempel: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Om du får tvetydiga modellfel väljer du ett leverantörsprefix istället för ett blott modell-ID.","troubleshootingCodexFamily":"För GitHub Codex-familjens modeller, behåll modellen som gh/codex-model; routern väljer /svarar automatiskt.","troubleshootingTestConnection":"Använd Dashboard > Leverantörer > Testa anslutning innan du testar från IDE:er eller externa klienter.","troubleshootingCircuitBreaker":"Om en leverantör visar att strömbrytaren är öppen, vänta på nedkylning eller kolla Health-sidan för detaljer.","troubleshootingOAuth":"För OAuth-leverantörer, autentisera på nytt om tokens löper ut. Kontrollera leverantörskortets 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":"Text-till-tal-generering (ElevenLabs, OpenAI TTS).","endpointEmbeddingsNote":"Generering av textinbäddning (OpenAI, Cohere, Voyage)."},"legal":{"privacyPolicy":"Sekretesspolicy","termsOfService":"Användarvillkor","providerConfigurations":"Leverantörskonfigurationer","apiKeys":"API-nycklar","usageLogs":"Användningsloggar","applicationSettings":"Applikationsinställningar","viewExportAnalytics":"Visa och exportera användningsanalyser","clearHistory":"Rensa användningshistorik när som helst","configureRetention":"Konfigurera logglagringspolicyer","backupRestore":"Säkerhetskopiera och återställ din databas","privacyMetadataTitle":"Sekretesspolicy | OmniRoute","privacyMetadataDescription":"Sekretesspolicy för OmniRoute AI API-proxyroutern.","termsMetadataTitle":"Användarvillkor | OmniRoute","termsMetadataDescription":"Användarvillkor för OmniRoute AI API-proxyroutern.","backToHome":"Tillbaka till hemmet","lastUpdated":"Senast uppdaterad: {date}","policyLastUpdatedDate":"13 februari 2026","listSeparator":"-","questionsVisit":"Frågor? Besök vår","githubRepository":"GitHub-förråd","privacySection1Title":"1. Lokal-först arkitektur","privacySection1Text":"OmniRoute är designad som en lokal-först-applikation. All databehandling och lagring sker helt och hållet på din maskin. Det finns ingen centraliserad server som samlar in din information.","privacySection2Title":"2. Data vi lagrar","privacyDataStoredIn":"Följande data lagras lokalt i","privacyDataProviderConfigurationsDesc":"anslutningsadresser, leverantörstyper och prioritetsinställningar","privacyDataApiKeysDesc":"krypterad och lagrad lokalt för autentisering med AI-leverantörer","privacyDataUsageLogsDesc":"antal begäranden, tokenanvändning, modellnamn, tidsstämplar och svarstider","privacyDataApplicationSettingsDesc":"temapreferenser, routingstrategi och kombinationskonfigurationer","privacySection3Title":"3. Ingen telemetri","privacySection3Text":"OmniRoute samlar inte in telemetri-, analys- eller kraschrapporter. Ingen data skickas till oss eller någon tredje part. Dina användningsmönster, API-anrop och konfigurationer förblir helt privata.","privacySection4Title":"4. Tredjeparts AI-leverantörer","privacySection4Text":"När du gör API-anrop via OmniRoute vidarebefordras dina förfrågningar till de AI-leverantörer du har konfigurerat (till exempel: OpenAI, Anthropic, Google). Dessa leverantörer har sina egna integritetspolicyer som styr hur de hanterar din data. Vänligen granska:","privacyOpenAiPolicy":"OpenAI Sekretesspolicy","privacyAnthropicPolicy":"Antropisk sekretesspolicy","privacyGooglePolicy":"Googles sekretesspolicy","privacySection5Title":"5. Molnsynkronisering (valfritt)","privacySection5Text":"Om du aktiverar den valfria molnsynkroniseringsfunktionen kan leverantörskonfigurationer och API-nycklar överföras till en konfigurerad molnslutpunkt. Den här funktionen är inaktiverad som standard och kräver explicit opt-in.","privacySection6Title":"6. Loggning","privacyLoggingIntro":"Begäran loggar kan konfigureras via instrumentpanelens inställningar. Du kan:","privacySection7Title":"7. Dina rättigheter","privacySection7TextStart":"Eftersom all data lagras lokalt har du full kontroll. Du kan radera dina uppgifter när som helst genom att ta bort","privacySection7TextEnd":"katalogen eller använda funktionerna för säkerhetskopiering och återställning av databasen i instrumentpanelen.","termsSection1Title":"1. Översikt","termsSection1Text":"OmniRoute är en lokalt första AI API-proxyrouter som fungerar helt på din maskin. Den dirigerar förfrågningar till flera AI-leverantörer med lastbalansering, failover och användningsspårning.","termsSection2Title":"2. Användaransvar","termsResponsibilityApiKeys":"Du är ensam ansvarig för att hantera dina egna API-nycklar och autentiseringsuppgifter för tredjeparts AI-leverantörer (OpenAI, Anthropic, Google, etc.).","termsResponsibilityCompliance":"Du måste följa användarvillkoren för varje AI-leverantör vars API du kommer åt via OmniRoute.","termsResponsibilitySecurity":"Du ansvarar för säkerheten för din lokala OmniRoute-installation, inklusive att ställa in ett lösenord och begränsa nätverksåtkomst.","termsSection3Title":"3. Hur det fungerar","termsSection3Text":"OmniRoute fungerar som en förmedlande proxy. API-anrop som skickas till OmniRoute översätts och vidarebefordras till dina konfigurerade AI-leverantörer. OmniRoute ändrar inte innehållet i dina förfrågningar eller svar utöver den nödvändiga protokollöversättningen.","termsSection4Title":"4. Datahantering","termsDataStoredLocally":"All data lagras lokalt på din maskin i en SQLite-databas.","termsNoTransmission":"OmniRoute överför ingen data till externa servrar om du inte uttryckligen aktiverar molnsynkroniseringsfunktioner.","termsDataLocationText":"Användningsloggar, API-nycklar och konfiguration lagras i","termsSection5Title":"5. Ansvarsfriskrivning","termsSection5Text":"OmniRoute tillhandahålls \\"i befintligt skick\\" utan garanti av något slag. Vi ansvarar inte för några kostnader som uppstår genom API-användning, tjänstavbrott eller dataförlust. Behåll alltid säkerhetskopior av din konfiguration.","termsSection6Title":"6. Öppen källkod","termsSection6Text":"OmniRoute är programvara med öppen källkod. Du är fri att inspektera, modifiera och distribuera den enligt villkoren i dess licens."},"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 chatt","streaming":"Streaming","system-prompt":"Systemprompt","thinking":"Tänker","tool-calling":"Verktygsanrop","multi-turn":"Flervarv"},"templateDescriptions":{"simple-chat":"Grundläggande chattmall med systemmeddelande","streaming":"Mall för strömmande svar","system-prompt":"Mall med anpassad systemprompt","thinking":"Mall med resonemang/tänkebudget","tool-calling":"Mall för verktyg/funktionsanrop","multi-turn":"Mall för konversationer med flera svängar"},"templatePayloads":{"simpleChat":{"system":"Du är en hjälpsam AI-assistent.","userGreeting":"Hej! Hur kan jag hjälpa dig idag?"},"streaming":{"prompt":"Skriv en berättelse om"},"systemPrompt":{"question":"Vad är meningen med livet?","systemInstruction":"Ge ett genomtänkt, filosofiskt svar."},"thinking":{"question":"Förklara kvantberäkning"},"toolCalling":{"cityNameDescription":"Namnet på staden att få väder för","toolDescription":"Få aktuellt väder för en plats","userWeather":"Hur är vädret i Tokyo?"},"multiTurn":{"system":"Du är en hjälpsam assistent.","assistantExample":"Jag hjälper dig gärna med det.","userInitial":"Jag behöver hjälp med","userFollowUp":"Kan du utveckla 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=[674710,a=>{a.v(JSON.parse('{"common":{"save":"Spara","cancel":"Avbryt","delete":"Ta bort","loading":"Laddar...","error":"Ett fel uppstod","success":"Framgång","confirm":"Är du säker?","refresh":"Uppdatera","close":"Stäng","add":"Lägg till","edit":"Redigera","search":"Sök","back":"Tillbaka","next":"Nästa","submit":"Skicka in","reset":"Återställ","copy":"Kopiera","copied":"Kopierade!","enabled":"Aktiverad","disabled":"Inaktiverad","active":"Aktiv","inactive":"Inaktiv","noData":"Inga data tillgängliga","configure":"Konfigurera","manage":"Hantera","name":"Namn","actions":"Åtgärder","status":"Status","type":"Typ","model":"Modell","models":"modeller","provider":"Leverantör","account":"konto","time":"Tid","details":"Detaljer","created":"Skapad","lastUsed":"Senast använd","loadMore":"Ladda mer","noResults":"Inga resultat hittades","reloadPage":"Ladda om sidan","connected":"Ansluten","disconnected":"Frånkopplad","notConfigured":"Ej konfigurerad","testConnection":"Testa anslutningen","enable":"Aktivera","disable":"Inaktivera","columns":"Kolumner","newest":"Nyaste","oldest":"Äldst","all":"Alla","none":"Inga","yes":"Ja","no":"Nej","warning":"Varning","note":"Obs","free":"Gratis","skipToContent":"Hoppa till innehållet","maintenanceServerIssues":"Server is experiencing issues. Some features may be unavailable.","maintenanceServerUnreachable":"Server is unreachable. Reconnecting...","accept":"Acceptera","accountId":"Konto-ID","alias":"Alias","apiKeyId":"API-nyckel-ID","apiKeyName":"API-nyckelnamn","apiKeySecret":"API-nyckelhemlighet","authorization":"Auktorisation","content-type":"Innehållstyp","content-length":"Innehållslängd","cookie":"Cookie","file":"Arkiv","host":"Värd","id":"ID","import":"Importera","limit":"Begränsa","offset":"Offset","open":"Öppna","origin":"Ursprung","promptTokens":"Fråga tokens","completionTokens":"Kompletteringstokens","totalTokens":"Totala tokens","rawModel":"Rå modell","scope":"Omfattning","skill":"Skicklighet","sortBy":"Sortera efter","sortOrder":"Sorteringsordning","tab":"Tab","text":"Text","textarea":"Textområde","tool":"Verktyg","toolId":"Verktygs-ID","web":"Webb","whereUsed":"Där den används","whitelist":"Vitlista","blacklist":"Svartlista","resolve":"Lös","force":"Force","base64url":"Base64 URL","hex":"Hex","range":"Räckvidd","component":"Komponent","redirect_uri":"Omdirigera URI","idempotency-key":"Idempotensnyckel","error_description":"Felbeskrivning","code":"Kod","compatible":"Kompatibel","chat-completions":"Chattavslut","oauth":"OAuth","auth_token":"Auth Token","crypto":"Krypto","hours":"Timmar","selfsigned":"Självsignerad","proxy_id":"Proxy-ID","proxyId":"Proxy-ID","connectionId":"Anslutnings-ID","resolveConnectionId":"Lös anslutnings-ID","resolve_connection_id":"Lös anslutnings-ID","scope_id":"Omfattning ID","scopeId":"Omfattning ID","jwtSecret":"JWT hemlighet","keytar":"Keytar","better-sqlite3":"bättre-sqlite3","undici":"undici","builder-id":"Byggar-ID","musicDesc":"Musikbeskrivning","musicGeneration":"Musikgeneration","idc":"IDC","cloud-status-changed":"Molnstatus ändrad","where_used":"Där den används","windowMs":"Fönster (ms)","social-github":"GitHub","social-google":"Google","TOOL_ALLOWLIST":"Tillståndslista för verktyg","TOOL_DENYLIST":"Verktyg Denylist","Failed to save pricing":"Det gick inte att spara pris","Failed to reset pricing":"Det gick inte att återställa prissättningen","apikey":"API-nyckel","http":"HTTP"},"sidebar":{"home":"Hem","dashboard":"Instrumentpanel","providers":"Leverantörer","combos":"Combos","usage":"Användning","analytics":"Analytics","costs":"Kostnader","health":"Hälsa","limits":"Gränser och kvoter","cliTools":"CLI-verktyg","media":"Media","settings":"Inställningar","translator":"Översättare","docs":"Dokument","issues":"frågor","apiManager":"API-hanterare","logs":"Loggar","auditLog":"Revisionslogg","shutdown":"Avstängning","restart":"Starta om","shutdownConfirm":"Stänga av OmniRoute?","restartConfirm":"Starta om OmniRoute?","version":"v{version}","debug":"Felsök","system":"System","help":"Hjälp","serverDisconnected":"Server frånkopplad","serverDisconnectedMsg":"Proxyservern har stoppats eller startar om.","expandSidebar":"Expandera sidofältet","collapseSidebar":"Dölj sidofältet","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":"Ändpunkter","playground":"Lekplats","agents":"Agenter","cliToolsShort":"Verktyg","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":"Logga ut","language":"Språk","providers":"Leverantörer","providerDescription":"Hantera dina AI-leverantörsanslutningar","combos":"Combos","comboDescription":"Modellkombo med reserv","usage":"Användning & analys","usageDescription":"Övervaka din API-användning, tokenförbrukning och förfrågningsloggar","analytics":"Analytics","analyticsDescription":"Diagram, trender och utvärderingsinsikter","cliTools":"CLI-verktyg","cliToolsDescription":"Konfigurera CLI-verktyg","home":"Hem","homeDescription":"Välkommen till OmniRoute","endpoint":"Endpoints","endpointDescription":"Manage proxy endpoints, MCP, A2A, and API endpoints","settings":"Inställningar","settingsDescription":"Hantera dina preferenser","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":"Snabbstart","quickStartDesc":"Kom igång i 4 steg. Anslut leverantörer, ruttmodeller, övervaka allt.","fullDocs":"Fullständiga dokument","step1Title":"1. Skapa API-nyckel","step1Desc":"Gå till <endpoint>Endpoint</endpoint> -> Registrerade nycklar. Generera en nyckel per miljö.","step2Title":"2. Anslut leverantörer","step2Desc":"Lägg till konton i <providers>Providers</providers>. Stöder OAuth, API Key och gratis nivåer.","step3Title":"3. Peka din klient","step3Desc":"Ställ in bas-URL till {url} i din IDE- eller API-klient.","step4Title":"4. Övervaka och optimera","step4Desc":"Spåra tokens, kostnader och fel i <logs>Request Logs</logs> och <analytics>Analytics</analytics>.","providersOverview":"Leverantörsöversikt","configuredOf":"{configured} konfigurerad av {total} tillgängliga leverantörer","noModelsAvailable":"Inga modeller tillgängliga för denna leverantör.","configureFirst":"Konfigurera en anslutning först i {providers}","configureProvider":"Konfigurera leverantör","modelAvailable":"{count} modell tillgänglig","modelsAvailable":"{count} modeller tillgängliga","connectionsActive":"{count} anslutning aktiv","connectionsActivePlural":"{count} anslutningar aktiva","copyModelName":"Kopiera modellnamn","documentation":"Dokumentation","healthMonitor":"Hälsoövervakare","reportIssue":"Rapportera problem","activeError":"{active} aktiv · {errors} fel","oauthLabel":"OAuth","apiKeyLabel":"API-nyckel","requestsShort":"{count} krav","providerModelsTitle":"{provider} - Modeller","copiedModel":"Kopierat: {model}","aliasLabel":"alias","updateNow":"Uppdatera nu","updating":"Uppdaterar...","updateAvailableDesc":"En ny version finns tillgänglig. Klicka för att uppdatera.","updateStarted":"Uppdatering startade..."},"analytics":{"title":"Analytics","overviewDescription":"Övervaka dina API-användningsmönster, tokenförbrukning, kostnader och aktivitetstrender för alla leverantörer och modeller.","evalsDescription":"Kör utvärderingssviter för att testa och validera dina LLM-slutpunkter. Jämför modellkvalitet, upptäck regressioner och benchmark latens.","overview":"Översikt","evals":"Evals"},"apiManager":{"title":"API-nycklar","createKey":"Skapa API-nyckel","key":"Nyckel","revokeKey":"Återkalla nyckel","revokeConfirm":"Är du säker på att du vill återkalla denna API-nyckel?","noKeys":"Inga API-nycklar ännu","noKeysDesc":"Skapa din första API-nyckel för att autentisera förfrågningar till din slutpunkt","keyLabel":"Nyckeletikett","permissions":"Behörigheter","expiresAt":"Upphör att gälla","never":"Aldrig","revoke":"Återkalla","showKey":"Visa nyckel","hideKey":"Dölj nyckel","copyKey":"Kopiera API-nyckel","allModels":"Alla modeller","selectedModels":"Utvalda modeller","readOnly":"Endast läs","fullAccess":"Full tillgång","keyManagement":"API-nyckelhantering","keyManagementDesc":"Skapa och hantera API-nycklar för autentisering av förfrågningar till din slutpunkt","totalKeys":"Totalt nycklar","restricted":"Begränsad","totalRequests":"Totalt antal förfrågningar","modelsAvailable":"Tillgängliga modeller","registeredKeys":"Registrerade nycklar","keysRegistered":"{count} nycklar registrerade","keyRegistered":"{count} nyckel registrerad","keysSecurityNote":"Varje nyckel isolerar användningsspårning och kan återkallas oberoende. Nycklar är maskerade efter skapande för säkerhet.","createFirstKey":"Skapa din första nyckel","name":"Namn","usage":"Användning","created":"Skapad","actions":"Åtgärder","reqs":"reqs","neverUsed":"Aldrig använd","deleteConfirm":"Vill du ta bort denna API-nyckel?","usageTips":"Användningstips","tipAuth":"Använd API-nycklar i auktoriseringshuvudet som Bärare YOUR_KEY","tipSecure":"Nycklar visas bara en gång under skapandet – förvara dem säkert","tipSeparate":"Skapa separata nycklar för olika klienter eller miljöer","tipRestrict":"Begränsa nycklar till specifika modeller för bättre säkerhet och kostnadskontroll","keyName":"Nyckelnamn","keyNamePlaceholder":"t.ex. produktionsnyckel, utvecklingsnyckel","keyNameDesc":"Välj ett beskrivande namn för att identifiera denna nyckels syfte","keyCreated":"API-nyckel skapad","keyCreatedSuccess":"Nyckel skapad framgångsrikt!","keyCreatedNote":"Kopiera och lagra den här nyckeln nu – den kommer inte att visas igen.","done":"Klart","savePermissions":"Spara behörigheter","allowAll":"Tillåt alla","restrict":"Begränsa","allowAllInfo":"Denna nyckel kan komma åt alla tillgängliga modeller.","restrictInfo":"Denna nyckel kan komma åt {selected} av {total} modeller.","selected":"{count} har valts","all":"Alla","clear":"Rensa","searchModels":"Sök modeller efter namn eller leverantör...","noModelsFound":"Inga modeller hittades","keyNameRequired":"Nyckelnamn krävs","keyNameTooLong":"Nyckelnamnet måste vara högst {max} tecken","keyNameInvalid":"Nyckelnamn kan bara innehålla bokstäver, siffror, mellanslag, bindestreck och understreck","invalidKeyName":"Ogiltigt nyckelnamn","failedCreateKey":"Det gick inte att skapa nyckel","failedCreateKeyRetry":"Det gick inte att skapa nyckel. Försök igen.","invalidKeyId":"Ogiltigt nyckel-ID","failedDeleteKey":"Det gick inte att radera nyckel","failedDeleteKeyRetry":"Det gick inte att radera nyckel. Försök igen.","invalidModelsSelection":"Ogiltigt modellval","cannotSelectMoreThanModels":"Kan inte välja fler än {max} modeller","failedUpdatePermissions":"Det gick inte att uppdatera behörigheter","failedUpdatePermissionsRetry":"Det gick inte att uppdatera behörigheter. Försök igen.","unknownProvider":"okänt","copyMaskedKey":"Kopiera maskerad nyckel","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Senaste: {date}","editPermissions":"Redigera behörigheter","deleteKey":"Ta bort nyckel","model":"{count} modell","models":"{count} modeller","permissionsTitle":"Behörigheter: {name}","allowAllDesc":"Denna nyckel kan komma åt alla tillgängliga modeller.","restrictDesc":"Denna nyckel kan komma åt {selectedCount} av {totalModels} modeller.","selectedCount":"{count} har valts","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":"Revisionslogg","searchPlaceholder":"Sökåtgärder...","action":"Åtgärd","actor":"Skådespelare","target":"Mål","ipAddress":"IP-adress","timestamp":"Tidsstämpel","noEntries":"Inga revisionsposter hittades","filterByAction":"Filtrera efter åtgärd...","filterByActor":"Filtrera efter skådespelare...","filterEntriesAria":"Filtrera granskningsloggposter","filterByActionTypeAria":"Filtrera efter åtgärdstyp","filterByActorAria":"Filtrera efter skådespelare","refreshAuditLogAria":"Uppdatera granskningsloggen","tableAria":"Granskningsloggposter","failedFetchAuditLog":"Det gick inte att hämta granskningsloggen","notAvailable":"—","description":"Administrativa åtgärder och säkerhetshändelser","showing":"Visar {count} poster (offset {offset})","previous":"Föregående"},"media":{"title":"Medialabb","subtitle":"Generera bilder, videor och musik","model":"Model","prompt":"Prompt","generate":"Generera","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-verktyg","noActiveProviders":"Inga aktiva leverantörer","noActiveProvidersDesc":"Lägg till och anslut först leverantörer för att konfigurera CLI-verktyg.","mapModels":"Kartmodeller","testConnection":"Testa anslutningen","connectionStatus":"Anslutningsstatus","configureEndpoint":"Konfigurera slutpunkt","instructions":"Instruktioner","modelMapping":"Modellkartläggning","baseUrl":"Bas-URL","apiKey":"API-nyckel","configured":"Konfigurerad","notConfigured":"Ej konfigurerad","notInstalled":"Ej installerad","custom":"Anpassad","unknown":"Okänd","lastSavedAt":"Senast sparad: {date}","never":"Aldrig","justNow":"just nu","minutesAgoShort":"{count}m sedan","hoursAgoShort":"{count}h sedan","daysAgoShort":"{count}d sedan","monthsAgoShort":"{count}mån sedan","yearsAgoShort":"{count}y sedan","runtimeCheckFailed":"Körtidskontroll misslyckades","yourApiKeyPlaceholder":"din-api-nyckel","modelPlaceholder":"leverantör/modell-id","configurationSaved":"Konfigurationen har sparats.","failedToSave":"Det gick inte att spara konfigurationen.","noApiKeysCreateOne":"Inga API-nycklar - Skapa en på sidan Nycklar","defaultOmnirouteKey":"sk_omniroute (standard)","selectModel":"Välj modell","selectModelForAlias":"Välj modell för {alias}","selectModelForTool":"Välj modell för {tool}","select":"Välj","clear":"Rensa","comingSoon":"Kommer snart","checkingRuntime":"Kontrollerar körtidsstatus...","guideOnlyIntegration":"Integrering endast guide (ingen lokal körtid krävs)","cliRuntimeDetected":"CLI-körtid upptäckt och klar","cliFoundNotRunnable":"CLI hittades men inte körbar{reason}","cliRuntimeNotDetected":"CLI-körtid har inte upptäckts","binary":"Binär","configPath":"Konfigurationsväg","configPathShort":"Konfig","failedCheckRuntimeStatus":"Det gick inte att kontrollera körtidsstatus.","copy":"Kopiera","copied":"Kopierade","copyConfig":"Kopiera Config","saveConfig":"Spara konfiguration","selectionSaved":"Valet har sparats","guide":"Guide","detected":"Upptäckt","notReady":"Inte redo","active":"Aktiv","inactive":"Inaktiv","startMitm":"Starta MITM","stopMitm":"Stoppa MITM","mitmStarted":"MITM startade framgångsrikt!","mitmStopped":"MITM stoppade framgångsrikt!","failedStart":"Det gick inte att starta MITM","failedStop":"Det gick inte att stoppa MITM","saveMappings":"Spara mappningar","mappingsSaved":"Mappningar sparade!","failedSaveMappings":"Det gick inte att spara mappningar","howItWorks":"Hur det fungerar:","antigravityHowWorksDesc":"Antigravity skickar förfrågningar till Googles slutpunkt. MITM fångar upp och omdirigerar dem till OmniRoute.","antigravityStep1":"1. Starta MITM för att dirigera förfrågningar genom OmniRoute.","antigravityStep2Prefix":"2. Lägg till","antigravityStep2Suffix":"till din hosts-fil som 127.0.0.1.","antigravityStep3":"3. Öppna Antigravity och förfrågningar kommer att skickas som proxy.","sudoPasswordRequiredTitle":"Sudo-lösenord krävs","sudoPasswordHint":"Administratörslösenord krävs för att ändra värdens fil- och systemproxyinställningar.","enterSudoPassword":"Ange sudo lösenord","sudoPasswordRequiredError":"Sudo-lösenord krävs.","cancel":"Avbryt","confirm":"Bekräfta","settingsApplied":"Inställningarna har tillämpats!","failedApplySettings":"Det gick inte att tillämpa inställningarna","settingsReset":"Inställningarna har återställts!","failedResetSettings":"Det gick inte att återställa inställningarna","backupRestored":"Säkerhetskopieringen återställd!","failedRestore":"Det gick inte att återställa","checkingCli":"Kontrollerar {tool} CLI...","cliNotRunnable":"{tool} CLI installerat men inte körbart","cliNotInstalled":"{tool} CLI inte installerat","cliNotDetected":"{tool} CLI inte upptäckt","cliDetectedReady":"{tool} CLI upptäckt och redo","cliFoundFailedHealthcheck":"{tool} CLI hittades men misslyckades med runtime healthcheck{reason}.","installCliPrompt":"Installera {tool} CLI för att använda den här funktionen.","installCodexPrompt":"Installera Codex CLI för att använda funktionen för automatisk applicering.","hide":"Göm","howToInstall":"Hur man installerar","installationGuide":"Installationsguide","platforms":"macOS / Linux / Windows:","afterInstallationRun":"Efter installationen, kör","toVerify":"att verifiera.","current":"Aktuell","baseUrlPlaceholder":"https://.../v1","resetToDefault":"Återställ till standard","providerModelPlaceholder":"leverantör/modell-id","apply":"Ansök","reset":"Återställ","manualConfig":"Manuell konfiguration","backups":"Säkerhetskopieringar","configBackups":"Konfigurera säkerhetskopior","noBackupsYet":"Inga säkerhetskopior ännu. Säkerhetskopieringar skapas automatiskt före varje applicering eller återställning.","restore":"Återställ","backupRestoredReloading":"Säkerhetskopieringen återställd! Laddar om status...","failedRestoreBackup":"Det gick inte att återställa säkerhetskopian","applied":"Ansökt!","failed":"Misslyckades","resetDone":"Återställ!","omnirouteConfiguredOpenAiCompatible":"OmniRoute är konfigurerad som OpenAI-kompatibel leverantör","provider":"Leverantör","model":"Modell","providers":"Leverantörer","auth":"Auth","noApiKeysAvailable":"Inga API-nycklar tillgängliga","usingDefaultOmniroute":"Använder standard: sk_omniroute","updateConfig":"Uppdatera Config","applyConfig":"Använd Config","noBackupsAvailable":"Inga säkerhetskopior tillgängliga.","profileSaved":"Profilen \\"{name}\\" har sparats!","failedSaveProfile":"Det gick inte att spara profilen","profileActivated":"Profilen aktiverad!","failedActivateProfile":"Det gick inte att aktivera profilen","profiles":"Profiler","savedProfiles":"Sparade profiler","noProfilesYet":"Inga profiler sparade ännu. Spara aktuell konfiguration som en profil nedan.","activate":"Aktivera","deleteProfile":"Ta bort profil","profileNamePlaceholder":"Profilnamn (t.ex. personligt konto)","saveCurrent":"Spara aktuell","codexAuthNotePrefix":"Codex använder","codexAuthNoteMiddle":"med","codexAuthNoteSuffix":"Klicka på \\"Apply\\" för att automatiskt konfigurera.","claudeManualConfiguration":"Claude CLI - Manuell konfiguration","codexManualConfiguration":"Codex CLI - Manuell konfiguration","droidManualConfiguration":"Factory Droid - Manuell konfiguration","openClawManualConfiguration":"Öppna Claw - Manuell konfiguration","clineManualConfiguration":"Cline manuell konfiguration","kiloManualConfiguration":"Kilokod manuell konfiguration","toolDescriptions":{"antigravity":"Google Antigravity IDE med MITM","claude":"Antropisk Claude Code CLI","codex":"OpenAI Codex CLI","droid":"Factory Droid AI Assistant","openclaw":"Öppna Claw AI Assistant","cline":"Cline AI Coding Assistant CLI","kilo":"Kilokod AI Assistant CLI","cursor":"Cursor AI Code Editor","continue":"Fortsätt AI Assistant","opencode":"OpenCode AI coding agent (Terminal)","kiro":"Amazon Kiro — AI-powered IDE","windsurf":"Windsurf AI Code Editor","copilot":"GitHub Copilot AI Assistant"},"guides":{"cursor":{"notes":{"0":"Kräver ett Cursor Pro-konto för att använda den här funktionen.","1":"Markören dirigerar förfrågningar genom sin egen server, så lokal slutpunkt stöds inte. Vänligen aktivera Cloud Endpoint i Inställningar."},"steps":{"1":{"title":"Öppna Inställningar","desc":"Gå till Inställningar -> Modeller"},"2":{"title":"Aktivera OpenAI API","desc":"Aktivera alternativet \\"OpenAI API-nyckel\\"."},"3":{"title":"Bas-URL"},"4":{"title":"API-nyckel"},"5":{"title":"Lägg till anpassad modell","desc":"Klicka på \\"Visa alla modeller\\" -> \\"Lägg till anpassad modell\\""},"6":{"title":"Välj modell"}}},"continue":{"steps":{"1":{"title":"Öppna Config","desc":"Öppna Fortsätt konfigurationsfil"},"2":{"title":"API-nyckel"},"3":{"title":"Välj modell"},"4":{"title":"Lägg till Model Config","desc":"Lägg till följande konfiguration till din modellarray:"}},"notes":{"0":"Continue använder JSON-konfigurationsfilen."}},"opencode":{"steps":{"1":{"title":"Install OpenCode","desc":"Install via npm: npm install -g opencode-ai"},"2":{"title":"API Key"},"3":{"title":"Set Base URL","desc":"opencode config set baseUrl {{baseUrl}}"},"4":{"title":"Select Model"}},"notes":{"0":"OpenCode kräver API-nyckelkonfiguration.","1":"Ställ in basadressen till din OmniRoute-slutpunkt."}},"kiro":{"steps":{"1":{"title":"Open Kiro Settings","desc":"Go to Settings → AI Provider"},"2":{"title":"Base URL","desc":"Paste your OmniRoute endpoint URL"},"3":{"title":"API Key"},"4":{"title":"Select Model"}},"notes":{"0":"Kiro kräver 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 ska använda","openToolDocs":"Öppna verktygsdokument","toolUseCases":{"claude":"Använd när du vill ha starka planeringsarbetsflöden och långa flerfilsrefaktorer med Claude Code.","codex":"Använd när ditt team är standardiserat på OpenAI Codex CLI-flöden och profilbaserad autentisering.","droid":"Använd när du behöver en lätt terminalagent fokuserad på snabb kodning och kommandokörningsloopar.","openclaw":"Använd när du vill ha en Open Claw-kodningsagent men dirigerad genom OmniRoute-policyer.","cline":"Använd när du konfigurerar kodningsagenter i redigerare och vill ha guidad installation med OmniRoute-modeller.","kilo":"Använd när ditt arbetsflöde beror på Kilo Code-kommandon och snabba iterativa redigeringar.","cursor":"Använd när du kodar i Cursor och du behöver anpassade OpenAI-kompatibla modeller genom OmniRoute.","continue":"Använd när du kör Continue i IDE och du behöver portabel JSON-baserad leverantörskonfiguration.","opencode":"Använd när du föredrar terminalbaserade agentkörningar och skriptautomation via OpenCode.","kiro":"Använd när du integrerar Kiro och styr modelldirigering centralt från OmniRoute.","antigravity":"Använd när Antigravity/Kiro-trafik måste avlyssnas genom MITM och dirigeras till OmniRoute.","copilot":"Använd när du vill ha Copilot chattstil UX samtidigt som du upprätthåller OmniRoute-nycklar och routingregler."}},"combos":{"title":"Combos","description":"Skapa modellkombinationer med viktad routing och reservstöd","createCombo":"Skapa Combo","editCombo":"Redigera kombination","deleteCombo":"Ta bort Combo","noModels":"Inga modeller","noModelsYet":"Inga modeller har lagts till ännu","addModel":"Lägg till modell","addModelToCombo":"Lägg till modell till Combo","routingStrategy":"Routingstrategi","maxRetries":"Max försöker igen","timeout":"Timeout (ms)","healthcheck":"Hälsokontroll","priority":"Prioritet","fallback":"Fallback","roundRobin":"Round Robin","random":"Slumpmässigt","leastLatency":"Minsta latens","comboName":"Kombinationsnamn","comboNamePlaceholder":"min-kombo","deleteConfirm":"Vill du ta bort den här kombinationen?","noCombosYet":"Inga kombinationer än","comboCreated":"Kombinationen skapades framgångsrikt","comboUpdated":"Kombinationen har uppdaterats","comboDeleted":"Combo raderad","failedCreate":"Det gick inte att skapa en kombination","failedUpdate":"Det gick inte att uppdatera kombinationen","errorCreating":"Det gick inte att skapa kombination","errorUpdating":"Fel vid uppdatering av kombination","errorDeleting":"Fel vid borttagning av kombination","testFailed":"Testbegäran misslyckades","failedToggle":"Det gick inte att växla kombination","testResults":"Testresultat — {name}","resolvedBy":"Löst av:","more":"+{count} till","reqs":"reqs","success":"framgång","proxyConfigured":"Proxy konfigurerad","copyComboName":"Kopiera kombinationsnamn","enableCombo":"Aktivera kombination","disableCombo":"Inaktivera kombination","testCombo":"Testkombo","duplicate":"Duplicera","proxyConfig":"Proxykonfiguration","nameRequired":"Namn krävs","nameInvalid":"Endast bokstäver, siffror, -, _, / och . tillåtet","nameHint":"Bokstäver, siffror, -, _, / och . tillåtet","priorityDesc":"Sekventiell reserv: provar modell 1 först, sedan 2 osv.","weightedDesc":"Fördelar trafik efter viktprocent med reserv","roundRobinDesc":"Cirkulär distribution: varje begäran går till nästa modell i rotation","randomDesc":"Enhetligt slumpmässigt urval, sedan fallback till återstående modeller","leastUsedDesc":"Väljer modellen med minst förfrågningar, balanserar belastningen över tiden","costOptimizedDesc":"Rutter till den billigaste modellen först baserat på prissättning","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each model once before reshuffling","models":"Modeller","autoBalance":"Automatisk balansering","advancedSettings":"Avancerade inställningar","retryDelay":"Försök igen fördröjning (ms)","concurrencyPerModel":"Samtidighet / Modell","queueTimeout":"Timeout för kö (ms)","advancedHint":"Lämna tomt om du vill använda globala standardinställningar. Dessa åsidosätter inställningarna per leverantör.","moveUp":"Flytta uppåt","moveDown":"Flytta ner","removeModel":"Ta bort","saving":"Sparar...","weighted":"Viktad","leastUsed":"Minst använda","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":"inget pris","warningRoundRobinSingleModel":"Round-robin är mest användbar med minst 2 modeller.","warningCostOptimizedPartialPricing":"Endast {priced} av {total} modeller har prissättning. Rutning kan vara delvis kostnadsmedveten.","warningCostOptimizedNoPricing":"Inga prisuppgifter hittades för denna kombination. Kostnadsoptimerad kan väga oväntat.","readinessTitle":"Redo att spara?","readinessDescription":"Granska checklistan innan du skapar eller uppdaterar den här kombinationen.","readinessCheckName":"Kombinationsnamnet är giltigt","readinessCheckModels":"Minst en modell är vald","readinessCheckWeights":"Den viktade summan är 100 %","readinessCheckWeightsOptional":"Viktregel krävs inte","readinessCheckPricing":"Prisuppgifter finns tillgängliga","readinessCheckPricingOptional":"Prissättningsregel krävs inte","saveBlockedTitle":"Spara är blockerad tills följande saker är åtgärdade:","saveBlockName":"Definiera ett kombinationsnamn.","saveBlockModels":"Lägg till minst en modell.","saveBlockWeighted":"Ställ in vikter på 100 % (nuvarande: {total}%).","saveBlockPricing":"Lägg till prissättning för minst en modell eller välj en annan 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":"Budget","totalCost":"Total kostnad","breakdown":"Kostnadsfördelning","noData":"Inga kostnadsdata","byModel":"Efter modell","byProvider":"Av leverantör"},"endpoint":{"title":"API-slutpunkt","available":"Tillgängliga slutpunkter","cloudProxy":"Molnproxy","disableConfirm":"Är du säker på att du vill inaktivera molnproxy?","baseUrl":"Bas-URL","apiKeyLabel":"API-nyckel","registeredKeys":"Registrerade nycklar","chatCompletions":"Chattavslut","responses":"Svar","listModels":"Lista modeller","usingCloudProxy":"Använder Cloud Proxy","usingLocalServer":"Använder lokal server","machineId":"Maskin-ID: {id}...","disableCloud":"Inaktivera Cloud","enableCloud":"Aktivera Cloud","modelsAcrossEndpoints":"{models} modeller över {endpoints} slutpunkter","chatDesc":"Strömmande och icke-strömmande chatt med alla leverantörer","embeddings":"Inbäddningar","embeddingsDesc":"Textinbäddningar för sök- och RAG-pipelines","imageGeneration":"Bildgenerering","imageDesc":"Generera bilder från textmeddelanden","rerank":"Rangordna om","rerankDesc":"Rangordna om dokument efter relevans för en fråga","audioTranscription":"Ljudtranskription","audioTranscriptionDesc":"Transkribera ljudfiler till text (Viska)","textToSpeech":"Text till tal","textToSpeechDesc":"Konvertera text till naturligt klingande tal","moderations":"Moderationer","moderationsDesc":"Innehållsmoderering och säkerhetsklassificering","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":"Kärn-API:er","categoryMedia":"Media & Multimodal","categoryUtility":"Verktyg & Hantering","enableCloudTitle":"Aktivera Cloud Proxy","whatYouGet":"Vad du kommer att få","cloudBenefitAccess":"Få åtkomst till ditt API från var som helst i världen","cloudBenefitShare":"Dela enkelt slutpunkten med ditt team","cloudBenefitPorts":"Inget behov av att öppna portar eller konfigurera brandvägg","cloudBenefitEdge":"Snabbt globalt kantnätverk","cloudSessionNote":"Cloud kommer att behålla din autentiseringssession i 1 dag. Om den inte används kommer den att raderas automatiskt.","cloudUnstableNote":"Cloud är för närvarande instabilt med Claude Code OAuth i vissa fall.","cloudConnected":"Cloud Proxy ansluten!","connectingToCloud":"Ansluter till molnet...","verifyingConnection":"Verifierar anslutning...","connecting":"Ansluter...","verifying":"Verifierar...","connected":"Ansluten!","disableCloudTitle":"Inaktivera molnproxy","disableWarning":"Alla autentiseringssessioner kommer att raderas från molnet.","syncingData":"Synkroniserar senaste data...","disablingCloud":"Inaktiverar molnet...","syncing":"Synkroniseras...","disabling":"Inaktiverar...","cloudConnectedVerified":"Cloud Proxy ansluten och verifierad!","connectedVerificationPending":"Ansluten — verifiering väntar","connectedVerificationPendingWithError":"Ansluten — verifiering väntar: {error}","cloudDisabledSuccess":"Molnet har inaktiverats","syncedSuccess":"Synkroniserad framgångsrikt","failedDisable":"Det gick inte att inaktivera molnet","failedEnable":"Det gick inte att aktivera molnet","cloudRequestTimeout":"Timeout för molnbegäran","cloudRequestFailed":"Molnbegäran misslyckades","cloudWorkerUnreachable":"Det gick inte att nå molnarbetaren. Se till att molntjänsten körs (npm kör dev i /moln).","connectionFailed":"Anslutning misslyckades","syncFailed":"Det gick inte att synkronisera molndata","providerModelsTitle":"{provider} — Modeller","noModelsForProvider":"Inga modeller tillgängliga för denna leverantör.","chat":"Chatta","embedding":"Inbäddning","image":"Bild","custom":"anpassad","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Integrationsyta","sectionDescription":"OpenAI-kompatibla API:er och operativa protokollslutpunkter","tabApis":"OpenAI-kompatibla API:er","tabProtocols":"Protokoll","tabsAria":"Slutpunktssektioner","protocolsTitle":"Protokoll","protocolsDescription":"MCP och A2A är förstklassiga endpoints med dedikerad observerbarhet och kontroller.","mcpCardTitle":"MCP-server","mcpCardDescription":"Model Context Protocol över stdio","a2aCardTitle":"A2A-server","a2aCardDescription":"Agent2Agent JSON-RPC-slutpunkt","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":"Invoke tools such as `omniroute_get_health` and `omniroute_list_combos`.","a2aQuickStartTitle":"A2A Quick Start","a2aQuickStartStep1":"Discover the agent card at `/.well-known/agent.json`.","a2aQuickStartStep2":"Send JSON-RPC requests to `POST /a2a` using `message/send` or `message/stream`.","a2aQuickStartStep3":"Track and control tasks using `tasks/get` and `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":"Loading MCP dashboard...","activate":"activate","deactivate":"deactivate","confirmSwitchCombo":"Confirm {action} combo \\"{combo}\\"?","switchComboFailed":"Failed to switch combo state.","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":"Systemhälsa","description":"Realtidsövervakning av din OmniRoute-instans","healthy":"Frisk","degraded":"Försämrad","down":"Ner","uptime":"Upptid","memory":"Minne","memoryRss":"Minne (RSS)","heap":"Hög","cpu":"CPU","database":"Databas","version":"Version","lastCheck":"Sista kontrollen","providerHealth":"Leverantörshälsa","systemMetrics":"Systemmått","tokenHealth":"Token Health","refreshAll":"Uppdatera alla","checkNow":"Kontrollera nu","loadingHealth":"Läser in hälsodata...","failedToLoad":"Det gick inte att läsa in hälsodata: {error}","retry":"Försök igen","allOperational":"Alla system i drift","issuesDetected":"Systemproblem upptäcktes","updatedAt":"Uppdaterad {time}","latency":"Latens","latencyP50":"p50","latencyP95":"s 95","latencyP99":"s 99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Totalt antal förfrågningar","noDataYet":"Inga uppgifter ännu","promptCache":"Fråga Cache","entries":"Inlägg","hitRate":"Träfffrekvens","hitsMisses":"Träffar/missar","signatureCache":"Signaturcache","signatureDefaults":"Standardvärden","signatureTool":"Verktyg","signatureFamily":"Familj","signatureSession":"Session","recovering":"Återhämtar sig","noCBData":"Inga strömbrytardata tillgängliga. Gör några förfrågningar först.","providerHealthStatusAria":"Leverantörens hälsostatus","issuesLabel":"Problem upptäckta","operational":"Operativt","providers":"Leverantörer","healthyCount":"{count} frisk","nodeVersion":"Nod {version}","failures":"{count} fel","failuresPlural":"{count} fel","lastFailure":"Sist","rateLimitStatus":"Beloppsgränsstatus","activeLimiters":"{count} aktiv begränsare","activeLimitersPlural":"{count} aktiva begränsare","queued":"I kö","queuedCount":"{count} i kö","running":"löpning","runningCount":"{count} igång","ok":"OK","activeLockouts":"Aktiva lockouter","resetConfirm":"Återställa alla strömbrytare till friskt tillstånd? Detta kommer att radera alla felräkningar och återställa alla leverantörer till driftstatus.","resetAllTitle":"Återställ alla strömbrytare till friskt tillstånd","resetting":"Återställer...","resetAll":"Återställ alla","until":"Tills {time}","activeProviders":"{count} active","monitoredProviders":"{count} monitored","configuredProvidersLabel":"Konfigurerad i instrumentpanelen","configuredProvidersHint":"Leverantörer med autentiseringsuppgifter sparade i /dashboard/providers, oavsett körtidstillstånd.","activeProvidersHint":"Konfigurerade leverantörer som för närvarande är aktiverade för routingförfrågningar.","monitoredProvidersHint":"Leverantörer spåras för närvarande av strömbrytare hälsoövervakare."},"limits":{"title":"Gränser och kvoter","rateLimit":"Prisgräns","remaining":"Kvar","requestsPerMinute":"Önskemål/min","tokensPerMinute":"Poletter/min","dailyLimit":"Daglig gräns"},"logs":{"title":"Loggar","requestLogs":"Begär loggar","proxyLogs":"Proxyloggar","auditLog":"Revisionslogg","console":"Konsol","auditLogDesc":"Administrativa åtgärder och säkerhetshändelser","loading":"Laddar...","refresh":"Uppdatera","filterByAction":"Filtrera efter åtgärd...","filterByActor":"Filtrera efter skådespelare...","filterEntriesAria":"Filtrera granskningsloggposter","filterByActionTypeAria":"Filtrera efter åtgärdstyp","filterByActorAria":"Filtrera efter skådespelare","refreshAuditLogAria":"Uppdatera granskningsloggen","tableAria":"Granskningsloggposter","failedFetchAuditLog":"Det gick inte att hämta granskningsloggen","showing":"Visar {count} poster (offset {offset})","search":"Sök","timestamp":"Tidsstämpel","action":"Åtgärd","actor":"Skådespelare","target":"Mål","details":"Detaljer","ipAddress":"IP-adress","notAvailable":"—","noEntries":"Inga granskningsloggposter hittades","previous":"Föregående","next":"Nästa"},"onboarding":{"welcome":"Välkommen","security":"Säkerhet","test":"Testa","ready":"Klart!","setPassword":"Ange lösenord","addProvider":"Lägg till din första leverantör","getStarted":"Kom igång","skip":"Hoppa över","skipWizard":"Hoppa över guiden helt","skipPassword":"Hoppa över lösenordsinställningar","skipAndContinue":"Hoppa över och fortsätt","passwordLabel":"Lösenord","confirmPassword":"Bekräfta lösenord","enterPassword":"Ange lösenord","confirmPasswordPlaceholder":"Bekräfta lösenord","passwordsMismatch":"Lösenord stämmer inte överens","setupComplete":"Installationen är klar!","goToDashboard":"Gå till Dashboard →","welcomeDesc":"OmniRoute är din lokala AI API-proxy. Den dirigerar förfrågningar till flera AI-leverantörer med lastbalansering, failover och användningsspårning.","multiProvider":"Flera leverantörer","usageTracking":"Användningsspårning","apiKeyMgmt":"API Key Mgmt","securityDesc":"Ställ in ett lösenord för att skydda din instrumentpanel, eller hoppa över nu.","providerDesc":"Anslut din första AI-leverantör. Du kan lägga till mer senare.","apiKeyRequired":"API-nyckel (krävs)","customUrlOptional":"Anpassad webbadress (valfritt)","testDesc":"Låt oss verifiera att din leverantörsanslutning fungerar.","runTest":"Kör anslutningstest","testingConnection":"Testar anslutning...","connectionSuccessful":"Anslutningen lyckades! Din leverantör är redo.","noProviderFound":"Ingen leverantör hittades. Du kan lägga till en från instrumentpanelen senare.","testFailed":"Testet misslyckades, men du kan konfigurera detta senare.","couldNotTest":"Kunde inte testa just nu. Du kan testa från instrumentpanelen.","doneDesc":"Du är redo! Din OmniRoute-instans är konfigurerad och redo att proxy AI-förfrågningar.","yourEndpoint":"Din slutpunkt:","continue":"Fortsätt","retry":"Försök igen","failedSetPassword":"Det gick inte att ange lösenord. Försök igen.","failedAddProvider":"Det gick inte att lägga till leverantör. Försök igen.","connectionError":"Anslutningsfel. Försök igen.","provider":"Leverantör"},"providers":{"title":"Leverantörer","addProvider":"Lägg till leverantör","editProvider":"Redigera leverantör","deleteProvider":"Ta bort leverantör","noProviders":"Inga leverantörer har konfigurerats","modelAvailability":"Modelltillgänglighet","accounts":"konton","newAccount":"Nytt konto","deleteConfirm":"Är du säker på att du vill ta bort den här leverantören?","testing":"Testar...","testConnection":"Testa anslutningen","testSuccess":"Anslutningen lyckades","testFailed":"Anslutning misslyckades","available":"Tillgänglig","cooldown":"Nedkylning","unavailable":"Ej tillgänglig","unknown":"Okänd","oauthLabel":"OAuth","compatibleLabel":"Kompatibel","chat":"Chatta","responses":"Svar","messages":"Meddelanden","oauthProviders":"OAuth-leverantörer","freeProviders":"Gratis leverantörer","apiKeyProviders":"API-nyckelleverantörer","compatibleProviders":"API-nyckelkompatibla leverantörer","testAll":"Testa alla","testAllOAuth":"Testa alla OAuth-anslutningar","testAllFree":"Testa alla gratisanslutningar","testAllApiKey":"Testa alla API-nyckelanslutningar","testAllCompatible":"Testa alla kompatibla anslutningar","connected":"{count} Ansluten","errorCount":"{count} Fel ({code})","errorCountNoCode":"{count} Fel","noConnections":"Inga anslutningar","disabled":"Inaktiverad","enableProvider":"Aktivera leverantör","disableProvider":"Inaktivera leverantör","testResults":"Testresultat","noCompatibleYet":"Inga kompatibla leverantörer har lagts till ännu","compatibleHint":"Använd knapparna ovan för att lägga till OpenAI- eller Anthropic-kompatibla slutpunkter","addOpenAICompatible":"Lägg till OpenAI-kompatibel","addAnthropicCompatible":"Lägg till Antropisk kompatibel","addNewProvider":"Lägg till ny leverantör","backToProviders":"Tillbaka till leverantörer","configureNewProvider":"Konfigurera en ny AI-leverantör att använda med dina applikationer.","providerLabel":"Leverantör","selectProvider":"Välj en leverantör","selectedProvider":"Vald leverantör","authMethod":"Autentiseringsmetod","apiKeyLabel":"API-nyckel","apiKeyRequired":"API-nyckel krävs","selectProviderRequired":"Välj en leverantör","enterApiKey":"Ange din API-nyckel","apiKeySecure":"Din API-nyckel kommer att krypteras och lagras säkert.","oauth2Connect":"Anslut med OAuth2","oauth2Label":"OAuth2","oauth2Desc":"Anslut ditt konto med OAuth2-autentisering.","displayName":"Visningsnamn","displayNamePlaceholder":"t.ex. Production API, Dev Environment","displayNameHint":"Valfritt. Ett vänligt namn för att identifiera denna konfiguration.","active":"Aktiv","activeDescription":"Aktivera denna leverantör för användning i dina applikationer","cancel":"Avbryt","createProvider":"Skapa leverantör","failedCreate":"Det gick inte att skapa leverantör","errorOccurred":"Ett fel uppstod. Försök igen.","modelStatus":"Modellstatus","allModelsOperational":"Alla modeller i drift","modelsWithIssues":"{count} modell(er) med problem","allModelsNormal":"Alla modeller svarar normalt.","cooldownCleared":"Nedkylning rensad för {model}","failedClearCooldown":"Det gick inte att rensa nedkylningen","loadingAvailability":"Laddar modelltillgänglighet...","clearCooldown":"Rensa","clearing":"Rensar...","until":"Tills {time}","providerTestFailed":"Providertestet misslyckades","modeTest":"{mode} Test","passedCount":"{count} godkänd","failedCount":"{count} misslyckades","testedCount":"{count} testad","millisecondsAbbr":"{value}ms","okShort":"OK","errorShort":"FEL","noActiveConnectionsInGroup":"Inga aktiva anslutningar hittades för den här gruppen.","allTestsPassed":"Alla {total} tester godkända","testSummary":"{passed}/{total} godkänd, {failed} misslyckades","nameLabel":"Namn","prefixLabel":"Prefix","baseUrlLabel":"Bas-URL","apiTypeLabel":"API-typ","prefixHint":"Obligatoriskt. Unikt prefix för modellnamn.","nameHint":"Obligatoriskt. En vänlig etikett för denna nod.","baseUrlHint":"Obligatoriskt.  Providers API-basadress.","anthropicPrefixPlaceholder":"ac-prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Validera anslutning","validating":"Validerar...","connectionValid":"Anslutningen är giltig!","connectionFailed":"Anslutning misslyckades. Kontrollera URL och nyckel.","testKeyLabel":"Testa API-nyckel","testKeyPlaceholder":"sk-... (endast för validering)","providerNotFound":"Det gick inte att hitta leverantören","deleteConnectionConfirm":"Vill du ta bort den här anslutningen?","failedSetAlias":"Det gick inte att ange alias","failedSaveConnection":"Det gick inte att spara anslutningen","failedSaveConnectionRetry":"Det gick inte att spara anslutningen. Försök igen.","failedRetestConnection":"Det gick inte att testa om anslutningen","deleteCompatibleNodeConfirm":"Ta bort denna {type} kompatibla nod?","anthropicCompatibleDetails":"Antropiska kompatibla detaljer","openaiCompatibleDetails":"OpenAI-kompatibla detaljer","messagesApi":"Messages API","responsesApi":"Responses API","chatCompletions":"Chattavslut","importingModels":"Importerar...","importFromModels":"Importera från /models","clearAllModels":"Rensa alla modeller","clearAllModelsConfirm":"Är du säker på att du vill ta bort alla modeller för den här leverantören? Detta kan inte ångras.","clearAllModelsSuccess":"Alla modeller rensade","clearAllModelsFailed":"Det gick inte att rensa modeller","addConnectionToImport":"Lägg till en anslutning för att aktivera import.","noModelsConfigured":"Inga modeller har konfigurerats","connectionCount":"{count} anslutning(ar)","fetchingModels":"Hämtar tillgängliga modeller...","failedFetchModels":"Det gick inte att hämta modeller","noModelsFound":"Inga modeller hittades","importFailed":"Importen misslyckades","noNewModelsAdded":"Inga nya modeller tillkom.","adding":"Lägger till...","importingModelsTitle":"Importera modeller","copyModel":"Kopiera modell","removeModel":"Ta bort modellen","rateLimitProtected":"Skyddad","rateLimitUnprotected":"Oskyddad","enableRateLimitProtection":"Klicka för att aktivera hastighetsgränsskydd","disableRateLimitProtection":"Klicka för att inaktivera skyddet för hastighetsgränsen","productionKey":"Produktionsnyckel","enterNewApiKey":"Ange ny API-nyckel","optional":"Valfritt","anthropicCompatibleName":"Antropisk kompatibel","openaiCompatibleName":"OpenAI-kompatibel","failedImportModels":"Det gick inte att importera modeller","noModelsReturnedFromEndpoint":"Inga modeller returnerades från /models endpoint.","importingModelsProgress":"Importerar {current} av {total} modeller...","foundModelsStartingImport":"Hittade {count} modeller. Startar import...","importingModelById":"Importerar {modelId}...","importSuccessCount":"{count, plural, one {# model} other {# models}} har importerats framgångsrikt!","noNewModelsAddedExisting":"Inga nya modeller har lagts till (alla finns redan).","importDoneCount":"✓ Klart! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Ett oväntat fel inträffade","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"meddelanden","responsesPath":"svar","chatCompletionsPath":"chatt/avslut","add":"Lägg till","edit":"Redigera","delete":"Ta bort","anthropic":"Antropisk","openai":"OpenAI","singleConnectionPerCompatible":"Endast en anslutning tillåts per kompatibel nod. Lägg till ytterligare en nod om du behöver fler anslutningar.","connections":"Anslutningar","providerProxyTitleConfigured":"Leverantörsproxy: {host}","configured":"konfigurerad","providerProxyConfigureHint":"Konfigurera proxy för alla anslutningar från denna leverantör","providerProxy":"Leverantörs proxy","noConnectionsYet":"Inga anslutningar än","addFirstConnectionHint":"Lägg till din första anslutning för att komma igång","addConnection":"Lägg till anslutning","availableModels":"Tillgängliga modeller","pageAutoRefresh":"Sidan uppdateras automatiskt...","statusDisabled":"funktionshindrade","statusConnected":"ansluten","statusRuntimeIssue":"körtidsproblem","statusAuthFailed":"auth misslyckades","statusRateLimited":"sats begränsad","statusNetworkIssue":"nätverksproblem","statusTestUnsupported":"testet stöds inte","statusUnavailable":"otillgänglig","statusFailed":"misslyckades","statusError":"fel","oauthAccount":"OAuth-konto","errorTypeRuntime":"Lokal körtid","errorTypeUpstreamAuth":"Uppströms auth","errorTypeMissingCredential":"Saknar legitimation","errorTypeRefreshFailed":"Uppdateringen misslyckades","errorTypeTokenExpired":"Token har löpt ut","errorTypeRateLimited":"Begränsat pris","errorTypeUpstreamUnavailable":"Uppströms ej tillgänglig","errorTypeNetworkError":"Nätverksfel","errorTypeTestUnsupported":"Testet stöds inte","errorTypeUpstreamError":"Uppströmsfel","proxySourceGlobal":"Global","proxySourceProvider":"Leverantör","proxySourceKey":"Nyckel","proxyConfiguredBySource":"Proxy ({source}): {host}","autoPriority":"Auto: {priority}","proxy":"Proxy","retestAuthentication":"Testa om autentisering","retest":"Testa igen","disableConnection":"Inaktivera anslutningen","enableConnection":"Aktivera anslutning","reauthenticateConnection":"Autentisera den här anslutningen igen","proxyConfig":"Proxykonfiguration","aliasExistsAlert":"Aliaset \\"{alias}\\" finns redan. Använd en annan modell eller redigera befintligt alias.","openRouterAnyModelHint":"OpenRouter stöder alla modeller. Lägg till modeller och skapa alias för snabb åtkomst.","modelIdFromOpenRouter":"Modell-ID (från OpenRouter)","openRouterModelPlaceholder":"antropisk/claude-3-opus","customModels":"Anpassade modeller","customModelsHint":"Lägg till modell-ID:n som inte finns i standardlistan. Dessa kommer att vara tillgängliga för routing.","modelId":"Modell ID","customModelPlaceholder":"t.ex. gpt-4.5-turbo","loading":"Laddar...","removeCustomModel":"Ta bort anpassad modell","noCustomModels":"Inga anpassade modeller har lagts till ännu.","allSuggestedAliasesExist":"Alla föreslagna alias finns redan. Välj en annan modell eller ta bort motstridiga alias.","failedSaveCustomModel":"Det gick inte att spara anpassad modell","modelAddedSuccess":"Modellen {modelId} har lagts till","failedAddModelTryAgain":"Det gick inte att lägga till modell. Försök igen.","failedSaveImportedModel":"Det gick inte att spara importerad modell till anpassad databas","failedImportModelsTryAgain":"Det gick inte att importera modeller. Försök igen.","failedRemoveModelFromDatabase":"Det gick inte att ta bort modellen från databasen","modelRemovedSuccess":"Modellen har tagits bort","failedDeleteModelTryAgain":"Det gick inte att ta bort modellen. Försök igen.","compatibleModelsDescription":"Lägg till {type}-kompatibla modeller manuellt eller importera dem från /models-slutpunkten.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"API-nyckelvalidering misslyckades. Kontrollera din nyckel och försök igen.","addProviderApiKeyTitle":"Lägg till {provider} API-nyckel","checking":"Kontrollerar...","check":"Kontrollera","valid":"Giltigt","invalid":"Ogiltig","creating":"Skapar...","validationChecksAnthropicCompatible":"Validering kontrollerar {provider} genom att verifiera API-nyckeln.","validationChecksOpenAiCompatible":"Valideringskontroller {provider} via /models på din bas-URL.","priorityLabel":"Prioritet","saving":"Sparar...","save":"Spara","editConnection":"Redigera anslutning","accountName":"Kontonamn","email":"E-post","healthCheckMinutes":"Hälsokontroll (min)","healthCheckHint":"Proaktivt uppdateringsintervall för token. 0 = inaktiverad.","groupLabel":"Environment","groupPlaceholder":"e.g. eKaizen, Personal","failedTestConnection":"Det gick inte att testa anslutningen","failed":"Misslyckades","leaveBlankKeepCurrentApiKey":"Lämna tomt för att behålla den aktuella API-nyckeln.","editCompatibleTitle":"Redigera {type} Kompatibel","compatibleBaseUrlHint":"Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.","apiKeyForCheck":"API-nyckel (för kontroll)","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":"Automatisk synkronisering","autoSyncTooltip":"Uppdatera modelllistan automatiskt var 24:e timme (konfigurerbar via MODEL_SYNC_INTERVAL_HOURS)","autoSyncEnabled":"Automatisk synkronisering aktiverad — modeller uppdateras regelbundet","autoSyncDisabled":"Automatisk synkronisering inaktiverad","autoSyncToggleFailed":"Det gick inte att växla automatisk synkronisering","allModelsAlreadyImported":"Alla modeller är redan importerade","noNewModelsToImport":"Inga nya modeller att importera — alla modeller finns redan i registret eller listan över anpassade modeller","skippingExistingModels":"Hoppar över {count} befintliga modeller"},"settings":{"title":"Inställningar","general":"Allmänt","security":"Säkerhet","appearance":"Utseende","routing":"Routing","cache":"Cache","resilience":"Motståndskraft","systemPrompt":"Systemprompt","thinkingBudget":"Tänkande budget","proxy":"Proxy","pricing":"Prissättning","storage":"Förvaring","policies":"Policyer","ipFilter":"IP-filter","comboDefaults":"Combo standard","fallbackChains":"Reservkedjor","changePassword":"Ändra lösenord","enablePassword":"Aktivera lösenord","darkMode":"Mörkt läge","lightMode":"Ljusläge","systemTheme":"Systemtema","enableCache":"Aktivera cache","cacheTTL":"Cache TTL","maxCacheSize":"Max cachestorlek","clearCache":"Rensa cache","cacheHits":"Cacheträffar","cacheMisses":"Cache missar","hitRate":"Träfffrekvens","cacheEntries":"Cacheposter","circuitBreaker":"Strömbrytare","retryPolicy":"Försök igen","maxRetries":"Max försöker igen","retryDelay":"Försök igen Fördröjning","timeoutMs":"Timeout (ms)","enableSystemPrompt":"Aktivera System Prompt","systemPromptText":"Systemprompttext","enableThinking":"Aktivera tänkande","maxThinkingTokens":"Max Thinking Tokens","enableProxy":"Aktivera proxy","proxyUrl":"Proxy-URL","pricingRates":"Priser Format","currentPricing":"Aktuell prisöversikt","loadingPricing":"Laddar prisinformation...","noPricing":"Inga prisuppgifter tillgängliga","input":"Ingång","output":"Utgång","cached":"Cachad","reasoning":"Resonemang","cacheCreation":"Skapande av cache","customPricing":"Anpassad prissättning","databaseSize":"Databasstorlek","backupDb":"Säkerhetskopiera databas","restoreDb":"Återställ databas","exportData":"Exportera data","importData":"Importera data","clearData":"Rensa alla data","clearDataConfirm":"Detta kommer att radera all data permanent. Är du säker?","enableRequestLogs":"Aktivera förfrågningsloggar","logRetention":"Logglagring","ipWhitelist":"IP vitlista","ipBlacklist":"IP Blacklist","addIP":"Lägg till IP","savedSuccessfully":"Inställningarna har sparats","ai":"AI","advanced":"Avancerat","localMode":"Lokalt läge — All data lagrad på din maskin","settingsSectionsAria":"Inställningar","switchThemes":"Växla mellan ljusa och mörka teman","themeSelectionAria":"Temaval","themeLight":"Ljus","themeDark":"Mörkt","themeSystem":"System","hideHealthLogs":"Dölj loggar för hälsokontroll","hideHealthLogsDesc":"När PÅ, dämpa [HealthCheck]-meddelanden i serverkonsolen","themeAccent":"Temafärg","themeAccentDesc":"Välj en förinställd färg eller skapa ditt eget tema med en färg","themeCreate":"Skapa tema","themeCustom":"Anpassat tema","themeBlue":"Blå","themeRed":"Röd","themeGreen":"Grön","themeViolet":"Violett","themeOrange":"Orange","themeCyan":"Cyan","promptCache":"Fråga Cache","flushCache":"Spola cachen","flushing":"Spolar...","size":"Storlek","hits":"Träffar","evictions":"Vräkningar","loadingCacheStats":"Laddar cachestatistik...","globalProxy":"Global proxy","globalProxyDesc":"Konfigurera en global utgående proxy för alla API-anrop. Enskilda leverantörer, kombinationer och nycklar kan åsidosätta detta.","noGlobalProxy":"Ingen global proxy konfigurerad","globalLabel":"Global","configure":"Konfigurera","globalSystemPrompt":"Global System Prompt","systemPromptDesc":"Injiceras i alla förfrågningar på proxynivå","saved":"Sparad","systemPromptPlaceholder":"Ange systemuppmaning för att injicera i alla förfrågningar...","systemPromptHint":"Denna prompt läggs till systemmeddelandet för varje begäran. Använd för globala instruktioner, säkerhetsriktlinjer eller regler för svarsformatering.","chars":"{count} tecken","thinkingBudgetTitle":"Tänkande budget","thinkingBudgetDesc":"Kontrollera användningen av AI-resonemangstoken över alla förfrågningar","passthrough":"Genomgång","passthroughDesc":"Inga förändringar – kunden styr tankebudgeten","auto":"Auto","autoDesc":"Ta bort alla tankeinställningar – låt leverantören bestämma","custom":"Anpassad","customDesc":"Ställ in en fast tokenbudget för alla förfrågningar","adaptive":"Adaptiv","adaptiveDesc":"Skala budget baserat på begärans komplexitet","effortNone":"Inga (0 tokens)","effortLow":"Låg (1K tokens)","effortMedium":"Medium (10 000 tokens)","effortHigh":"Hög (128 000 tokens)","tokenBudget":"Token budget","tokens":"polletter","baseEffortLevel":"Basinsatsnivå","adaptiveHint":"Adaptivt läge skalas från denna basnivå baserat på antal meddelanden, verktygsanvändning och promptlängd.","requireLogin":"Kräv inloggning","requireLoginDesc":"När PÅ kräver instrumentpanelen lösenord. När AV, åtkomst utan inloggning.","currentPassword":"Aktuellt lösenord","enterCurrentPassword":"Ange aktuellt lösenord","newPassword":"Nytt lösenord","enterNewPassword":"Ange nytt lösenord","confirmPassword":"Bekräfta nytt lösenord","confirmPasswordPlaceholder":"Bekräfta nytt lösenord","passwordsNoMatch":"Lösenord stämmer inte överens","passwordUpdated":"Lösenordet har uppdaterats","failedUpdatePassword":"Det gick inte att uppdatera lösenordet","errorOccurred":"Ett fel uppstod","updatePassword":"Uppdatera lösenord","setPassword":"Ange lösenord","apiEndpointProtection":"API-ändpunktsskydd","requireAuthModels":"Kräv API-nyckel för /modeller","requireAuthModelsDesc":"När PÅ, returnerar /v1/models-slutpunkten 404 för oautentiserade förfrågningar. Förhindrar modellupptäckt av obehöriga användare.","blockedProviders":"Blockerade leverantörer","blockedProvidersDesc":"Dölj specifika leverantörer från /v1/models-svaret. Blockerade leverantörer visas inte i modelllistorna.","providersBlocked":"{count} leverantör(er) blockerade från /modeller","blockProviderTitle":"Blockera {provider}","unblockProviderTitle":"Avblockera {provider}","routingStrategy":"Routingstrategi","fillFirst":"Fyll först","fillFirstDesc":"Använd konton i prioritetsordning","roundRobin":"Round Robin","roundRobinDesc":"Gå igenom alla konton","p2c":"P2C","p2cDesc":"Välj 2 slumpmässigt, använd den hälsosammare","random":"Slumpmässigt","randomDesc":"Slumpmässigt konto varje begäran","leastUsed":"Minst använda","leastUsedDesc":"Välj minst senast använda konto","costOpt":"Kostnad Opt","costOptDesc":"Föredrar billigaste tillgängliga konto","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each account once before reshuffling","stickyLimit":"Sticky Limit","stickyLimitDesc":"Samtal per konto innan byte","modelAliases":"Modellalias","modelAliasesTitle":"Modellalias","modelAliasesDesc":"Jokerteckenmönster för att mappa om modellnamn • Använd * och ?","addCustomAlias":"Lägg Till Anpassat Alias","deprecatedModelId":"Föråldrat modell-ID","newModelId":"Nytt modell-ID","customAliases":"Anpassade Alias","builtInAliases":"Inbyggda Alias","backgroundDegradationTitle":"Bakgrundsuppgifter Degradering","backgroundDegradationDesc":"Upptäcker automatiskt bakgrundsuppgifter (titlar, sammanfattningar) och dirigerar till billigare modeller","enableDegradation":"Aktivera Bakgrundsdegradation","enableDegradationHint":"När aktiverat, dirigeras bakgrundsuppgifter som titelgenerering och sammanfattningar automatiskt till billigare modeller","tasksDetected":"Uppgifter upptäckta","degradationMap":"Modelldegraderingsschema","premiumModel":"Premiummodell","cheapModel":"Billig modell","detectionPatterns":"Detektionsmönster","newPattern":"t.ex. \\"generera en titel\\"","aliasPatternPlaceholder":"claude-sonnett-*","aliasTargetPlaceholder":"claude-sonnet-4-20250514","pattern":"Mönster","targetModel":"Målmodell","add":"+ Lägg till","session":"Session","sessionDetailsAria":"Sessionsdetaljer","status":"Status","authenticated":"Autentiserad","guest":"Gäst","loginTime":"Inloggningstid","sessionAge":"Sessionsålder","browser":"Webbläsare","clearLocalData":"Rensa lokal data","logout":"Logga ut","clearLocalDataConfirm":"Rensa alla lokala data? Detta kommer att återställa dina inställningar.","unknown":"Okänd","systemActor":"systemet","ipAccessControl":"IP-åtkomstkontroll","ipAccessControlDesc":"Blockera eller tillåt specifika IP-adresser","ipModeDisabled":"Inaktiverad","ipModeBlacklist":"Svartlista","ipModeWhitelist":"Vitlista","ipModeWhitelistPriority":"WL-prioritet","addIpAddress":"Lägg till IP-adress","ipAddressPlaceholder":"192.168.1.0/24 eller 10.0.*.*","block":"+ Blockera","allow":"+ Tillåt","blocked":"Blockerad ({count})","allowed":"Tillåtet ({count})","temporaryBans":"Tillfälliga förbud ({count})","minLeft":"{min}m kvar","auditLog":"Revisionslogg","searchAuditLogs":"Sök granskningsloggar...","failedLoadAuditLog":"Det gick inte att läsa in granskningsloggen","noAuditEvents":"Inga granskningshändelser hittades","action":"Åtgärd","actor":"Skådespelare","details":"Detaljer","time":"Tid","fallbackChainsTitle":"Reservkedjor","fallbackChainsDesc":"Definiera reservorder för leverantörer per modell","addChain":"+ Lägg till kedja","modelName":"Modellnamn","modelNamePlaceholder":"claude-sonnet-4-20250514","providersCommaSeparated":"Leverantörer (kommaseparerade, i prioriterad ordning)","providersCommaSeparatedPlaceholder":"antropisk, openai, gemini","createChain":"Skapa kedja","noFallbackChains":"Inga reservkedjor","noFallbackChainsDesc":"Skapa en kedja för att definiera leverantörs reservorder för en modell.","loadingFallbackChains":"Laddar reservkedjor...","deleteChainConfirm":"Vill du ta bort reservkedjan för \\"{model}\\"?","chainCreated":"Kedja skapad för {model}","chainDeleted":"Kedjan raderad för {model}","failedCreateChain":"Det gick inte att skapa kedja","failedDeleteChain":"Det gick inte att ta bort kedjan","deleteChain":"Ta bort kedja","fillModelAndProviders":"Vänligen fyll i modellnamn och leverantörer","addAtLeastOneProvider":"Lägg till minst en leverantör","comboDefaultsTitle":"Combo standard","globalComboConfig":"Global kombinationskonfiguration","defaultStrategy":"Standardstrategi","defaultStrategyDesc":"Tillämpas på nya kombinationer utan explicit strategi","comboStrategyAria":"Kombinationsstrategi","priority":"Prioritet","weighted":"Viktad","maxRetriesLabel":"Max försöker igen","retryDelayLabel":"Försök igen fördröjning (ms)","timeoutLabel":"Timeout (ms)","healthCheck":"Hälsokontroll","healthCheckDesc":"Kontrollera leverantörens tillgänglighet i förväg","trackMetrics":"Spåra mätvärden","trackMetricsDesc":"Spela in mätvärden per kombinationsbegäran","providerOverrides":"Provider åsidosätter","providerOverridesDesc":"Åsidosätt timeout och försök igen per leverantör. Leverantörsinställningar åsidosätter globala standardinställningar.","providerMaxRetriesAria":"{provider} max försök","providerTimeoutAria":"{provider} timeout ms","removeProviderOverrideAria":"Ta bort åsidosättningen {provider}","newProviderNamePlaceholder":"t.ex. google, öppna...","newProviderNameAria":"Nytt leverantörsnamn","retries":"försök igen","ms":"ms","saveComboDefaults":"Spara Combo Defaults","maxNestingDepth":"Max häckningsdjup","concurrencyPerModel":"Samtidighet / Modell","queueTimeout":"Timeout för kö (ms)","providerProfiles":"Leverantörsprofiler","providerProfilesDesc":"Separata inställningar för motståndskraft för OAuth (sessionsbaserad) och API Key (mätad) leverantörer. OAuth-leverantörer har strängare trösklar på grund av lägre prisgränser.","oauthProviders":"OAuth-leverantörer","apiKeyProviders":"API-nyckelleverantörer","transientCooldown":"Övergående nedkylning","rateLimitCooldown":"Rate Limit Cooldown","maxBackoffLevel":"Max Backoff Level","cbThreshold":"CB-tröskel","cbResetTime":"CB-återställningstid","rateLimiting":"Prisbegränsande","rateLimitingDesc":"API-nyckelleverantörer är automatiskt hastighetsbegränsade med säkra standardinställningar. Gränser lärs från svarsrubriker och anpassas över tid.","defaultSafetyNet":"Standardsäkerhetsnät","rpm":"RPM","minGap":"Min Gap","maxConcurrent":"Max Samtidigt","activeLimiters":"Aktiva begränsningar","noActiveLimiters":"Inga aktiva hastighetsbegränsare än.","reservoir":"Reservoar","running":"Löpning","queued":"I kö","circuitBreakers":"Strömbrytare","breakerStateClosed":"Stängt","breakerStateOpen":"Öppna","breakerStateHalfOpen":"Halvöppet","tripped":"{count} utlöstes","healthy":"{count} frisk","resetAll":"Återställ alla","noCircuitBreakers":"Inga strömbrytare aktiva än. De skapas automatiskt när förfrågningar flödar genom den kombinerade pipelinen.","failures":"{count} fel(er)","policiesLocked":"Policyer och låsta identifierare","allOperational":"Alla system är i drift — inga låsningar eller utlösta brytare","loadingPolicies":"Läser in policyer...","lockedIdentifiers":"Låsta identifierare","unlockedIdentifier":"Upplåst: {identifier}","sinceDate":"sedan {date}","forceUnlock":"Tvinga upplåsning","unlocking":"Låser upp...","failedUnlock":"Det gick inte att låsa upp","failedLoadWithStatus":"Det gick inte att ladda: {status}","failedLoadResilience":"Det gick inte att läsa in resiliensstatus","saveFailed":"Det gick inte att spara","resetFailed":"Återställningen misslyckades","loadingResilience":"Laddar resiliensstatus...","retry":"Försök igen","systemStorage":"System & lagring","allDataLocal":"All data lagrad lokalt på din maskin","databasePath":"Databasväg","exportDatabase":"Exportera databas","exportAll":"Exportera alla (.tar.gz)","importDatabase":"Importera databas","confirmDbImport":"Bekräfta databasimport","confirmDbImportDesc":"Detta kommer att ersätta all aktuell data med innehållet från {file}. En säkerhetskopia skapas automatiskt före importen.","yesImport":"Ja, importera","lastBackup":"Senaste säkerhetskopieringen","noBackupYet":"Ingen backup ännu","backupNow":"Säkerhetskopiera nu","backupRestore":"Säkerhetskopiera och återställa","viewBackups":"Visa säkerhetskopior","hide":"Göm","backupRetentionDesc":"Databasögonblicksbilder skapas automatiskt före återställning och var 15:e minut när data ändras. Retention: 24 timmar per timme + 30 dagliga backuper med smart rotation.","loadingBackups":"Laddar säkerhetskopior...","noBackupsYet":"Inga säkerhetskopior tillgängliga ännu. Säkerhetskopieringar skapas automatiskt när data ändras.","backupsAvailable":"{count} säkerhetskopior tillgängliga","refresh":"Uppdatera","confirm":"Bekräfta?","yes":"Ja","no":"Nej","restore":"Återställ","invalidFileType":"Ogiltig filtyp. Endast .sqlite-filer accepteras.","exportFailed":"Exporten misslyckades","exportFailedWithError":"Export misslyckades: {error}","fullExportFailedWithError":"Fullständig export misslyckades: {error}","backupCreated":"Säkerhetskopiering skapad: {file}","restoreSuccess":"Återställd! {connections} anslutningar, {nodes} noder, {combos} kombinationer, {apiKeys} API-nycklar.","importSuccess":"Databas importerad! {connections} anslutningar, {nodes} noder, {combos} kombinationer, {apiKeys} API-nycklar.","justNow":"just nu","minutesAgo":"{count}m sedan","hoursAgo":"{count}h sedan","daysAgo":"{count}d sedan","backupReasonManual":"handbok","backupReasonPreRestore":"föråterställning","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Inga ändringar sedan senaste säkerhetskopiering","backupFailed":"Säkerhetskopieringen misslyckades","restoreFailed":"Återställningen misslyckades","importFailed":"Importen misslyckades","errorDuringRestore":"Ett fel uppstod under återställning","errorDuringImport":"Ett fel uppstod under importen","modelPricing":"Modellprissättning","modelPricingDesc":"Konfigurera kostnadssatser per modell • Alla priser i $/1M tokens","providers":"Leverantörer","registry":"Registret","priced":"Prissatt","searchProvidersModels":"Sök efter leverantörer eller modeller...","showAll":"Visa alla","noProvidersMatch":"Inga leverantörer matchar din sökning.","howPricingWorks":"Hur prissättning fungerar","cacheWrite":"Cache Skriv","unsaved":"osparade","resetDefaults":"Återställ standardvärden","saveProvider":"Spara leverantör","saving":"Sparar...","model":"Modell","models":"modeller","moreProviders":"{count} fler leverantörer","withPricing":"med konfigurerad prissättning","policiesCircuitBreakers":"Policyer och strömbrytare","activeIssuesDetected":"Aktiva problem upptäcktes","off":"Av","resetPricingConfirm":"Vill du återställa alla priser för {provider} till standardvärdena?","pricingDescInput":"Indata: tokens skickas till modellen","pricingDescOutput":"Utdata: tokens genererade","pricingDescCached":"Cachad: återanvänd indata (~50 % av inmatningshastighet)","pricingDescReasoning":"Resonemang: tänkande tokens (faller tillbaka till Output)","pricingDescCacheWrite":"Cache Write: skapa cache-poster (faller tillbaka till Input)","pricingDescFormula":"Kostnad = (ingång × input_rate) + (output × output_rate) + (cachad × cached_rate) per miljon tokens.","pricingSettingsTitle":"Prisinställningar","totalModels":"Totalt antal modeller","active":"Aktiv","costCalculation":"Kostnadsberäkning","costCalculationDesc":"Kostnaderna beräknas baserat på tokenanvändning och prissättning som konfigurerats för varje modell.","pricingFormat":"Prisformat","pricingFormatDesc":"Alla priser är i $/1M tokens (dollar per miljon tokens).","tokenTypes":"Tokentyper","inputTokenDesc":"Standard prompt tokens","outputTokenDesc":"Kompletterande/svars-tokens","cachedTokenDesc":"Cachade indatatokens (vanligtvis 50 % av inmatningshastigheten)","reasoningTokenDesc":"Särskilda resonemang/tänketokens (återgång till produktionshastighet)","cacheCreationTokenDesc":"Tokens som används för att skapa cacheposter (återgång till inmatningshastighet)","customPricingNote":"Du kan åsidosätta standardpriser för specifika modeller. Anpassade åsidosättningar har prioritet framför automatiskt identifierade priser.","editPricing":"Redigera prissättning","viewFullDetails":"Visa fullständiga 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":"Avancerad vägledning","routingAdvancedGuideHint1":"Använd Fill First för förutsägbar prioritet, Round Robin för rättvisa och P2C för latensförmåga.","routingAdvancedGuideHint2":"Om leverantörer varierar i kvalitet/kostnad, börja med Cost Opt för bakgrundsarbete och Minst Används för balanserat slitage.","comboDefaultsGuideTitle":"Hur man ställer in kombinationsinställningar","comboDefaultsGuideHint1":"Håll låga omförsök i flöden med låg latens; öka timeout endast för långa generationsuppgifter.","comboDefaultsGuideHint2":"Använd åsidosättande av leverantörer när en leverantör behöver ett annat beteende för timeout/försök igen än globala standardinställningar."},"translator":{"title":"Översättare","metaTitle":"Översättare Lekplats | OmniRoute","metaDescription":"Felsök, testa och visualisera API-formatöversättningar mellan leverantörer","playgroundTitle":"Översättare Lekplats","playground":"Lekplats","realtime":"Översättningsaktivitet i realtid","chatTester":"Chattestare","testBench":"Testbänk","liveMonitor":"Live Monitor","modeDescriptionPlayground":"Klistra in valfri API-begäran och se hur OmniRoute översätter den mellan leverantörsformat (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","modeDescriptionChatTester":"Skicka riktiga chattförfrågningar via OmniRoute och inspektera hela tur och retur: indata, översatt begäran, leverantörssvar och översatt utdata.","modeDescriptionTestBench":"Kör fördefinierade scenarier och jämför kompatibilitet mellan leverantörer och modeller.","modeDescriptionLiveMonitor":"Se översättningshändelser i realtid när förfrågningar flödar genom OmniRoute.","modeDescriptionFallback":"Felsök, testa och visualisera hur OmniRoute översätter API-förfrågningar mellan leverantörer.","recentTranslations":"Nya översättningar","noTranslations":"Inga översättningar ännu","source":"Källa","target":"Mål","time":"Tid","model":"Modell","status":"Status","latency":"Latens","totalTranslations":"Totala översättningar","successful":"Framgångsrik","errors":"Fel","avgLatency":"Genomsnittlig latens","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"Live — Automatisk uppdatering","paused":"Pausad","eventsAppearHint":"Översättningshändelser visas här när förfrågningar flödar genom OmniRoute. Använd någon av dessa metoder för att generera händelser:","chatTesterTab":"Fliken Chattestare","testBenchTab":"Fliken Testbänk","externalApiCalls":"Externa API-anrop","ideCliIntegrations":"IDE/CLI-integrationer","inMemoryNote":"Obs: Händelser lagras i minnet och återställs när servern startar om.","ok":"OK","errorShort":"ERR","formatConverter":"Formatomvandlare","formatConverterDescription":"Klistra in eller skriv en JSON-begäran. Översättaren kommer att automatiskt upptäcka källformatet och konvertera det till målformatet. Använd detta för att felsöka hur OmniRoute översätter förfrågningar mellan format (OpenAI ↔ Claude ↔ Gemini ↔ Responses API).","input":"Ingång","output":"Utgång","auto":"Auto","swapFormats":"Byt format","translateAction":"Översätt","clear":"Rensa","inputPlaceholder":"Klistra in en förfrågningstext här eller välj en mall nedan...","exampleTemplates":"Exempel mallar","exampleTemplatesHint":"— Klicka för att ladda","templateLoadHint":"Mallen laddar begäran i formatet {format}. Ändra källformat för att ladda i ett annat format.","compatibilityTester":"Kompatibilitetstestare","compatibilityReport":"Kompatibilitetsrapport","testBenchDescription":"Kör fördefinierade scenarier (Simple Chat, Tool Calling, etc.) för att verifiera översättning och leverantörskompatibilitet. Välj ett källformat och målleverantör och kör sedan alla tester för att se en kompatibilitetsprocent. Använd det här för att ta reda på vilka funktioner som fungerar mellan olika leverantörer.","targetProvider":"Målleverantör","runAllTests":"Kör alla tester","runTest":"Kör test","reRun":"Kör igen","running":"Kör...","passed":"godkänd","failed":"misslyckades","passedIconLabel":"✅ Godkänd","chunks":"bitar","scenarioSimpleChat":"Enkel chatt","scenarioToolCalling":"Verktygsanrop","scenarioMultiTurn":"Flervarv","scenarioThinking":"Tänker","scenarioSystemPrompt":"Systemprompt","scenarioStreaming":"Streaming","templateNames":{"simple-chat":"Enkel chatt","tool-calling":"Verktygsanrop","multi-turn":"Flervarv","thinking":"Tänker","system-prompt":"Systemprompt","streaming":"Streaming"},"templateDescriptions":{"simple-chat":"Grundläggande textmeddelande","tool-calling":"Funktion/verktygsanrop","multi-turn":"Samtal med historien","thinking":"Utökat tänkande/resonemang","system-prompt":"Komplexa systeminstruktioner","streaming":"SSE-strömningsförfrågan"},"templatePayloads":{"simpleChat":{"system":"Du är en hjälpsam assistent.","userGreeting":"Hej! Hur mår du idag?"},"toolCalling":{"userWeather":"Hur är vädret i São Paulo?","toolDescription":"Få aktuellt väder för en plats","cityNameDescription":"Stadsnamn"},"multiTurn":{"system":"Du är en kodningsassistent.","userInitial":"Skriv en funktion för att sortera en array i Python.","assistantExample":"Här är en enkel sorteringsfunktion:\\n\\n``` python\\ndef sort_array(arr):\\n return sorterad(arr)\\n```","userFollowUp":"Sortera det nu i fallande ordning."},"thinking":{"question":"Vad är summan av de första 100 primtalen?"},"systemPrompt":{"systemInstruction":"Du är en senior mjukvaruingenjör specialiserad på distribuerade system. Svara på frågor kortfattat med hjälp av branschens bästa praxis. Ge alltid kodexempel när det är relevant. Formatera dina svar med markdown.","question":"Hur implementerar jag ett strömbrytarmönster?"},"streaming":{"prompt":"Berätta en kort historia om en robot som lär sig måla."}},"openaiCompatibleLabel":"OpenAI-kompatibel","anthropicCompatibleLabel":"Antropisk kompatibel","noTemplateForFormat":"Ingen mall för detta format","translationFailed":"Översättning misslyckades: {error}","pipelineDebugger":"Pipeline Debugger","translationPipeline":"Översättning pipeline","pipelineVisualization":"Visualisering av pipeline","pipelineVisualizationHint":"Skicka ett meddelande för att se hur din förfrågan flyter genom upptäckt → översättning → leverantörssamtal.","chatTesterDescription":"Skicka meddelanden som ett specifikt klientformat och inspektera varje steg i översättningspipelinen.","chatTesterFlow":"Klientförfrågan → Formatdetektion → OpenAI Intermediate → Leverantörsformat → Svar","clickStepToInspect":"Klicka på valfritt steg för att inspektera data i det stadiet.","clientFormat":"Klientformat","provider":"Leverantör","modelPlaceholder":"Välj eller skriv ett modellnamn...","sendMessageToSeePipeline":"Skicka ett meddelande för att se översättningspipeline","chatMessageHintPrefix":"Ditt meddelande kommer att formateras som en","chatMessageHintSuffix":"begäran, översatt genom pipelinen och skickad till den valda leverantören.","youWithFormat":"Du ({format})","assistant":"Assistent","typeMessage":"Skriv ett meddelande...","send":"Skicka","clientRequest":"Kundförfrågan","clientRequestDescription":"Begäran som din klient skulle skicka den","formatDetected":"Format upptäckt","formatDetectedDescription":"OmniRoute upptäcker automatiskt API-formatet från förfrågningsstrukturen","openaiIntermediate":"OpenAI Intermediate","openaiIntermediateDescription":"Alla format normaliseras först till OpenAI-format (den universella bryggan)","providerFormat":"Leverantörsformat","providerFormatDescription":"OpenAI-formatet översätts till leverantörens ursprungliga format","providerResponse":"Leverantörens svar","providerResponseRawDescription":"Det råa svaret från leverantörens API","providerResponseSseDescription":"Den råa SSE-strömmen från leverantörens API","unexpectedError":"Ett oväntat fel inträffade","error":"Fel","errorMessage":"Fel: {message}","requestFailed":"Begäran misslyckades","noTextExtracted":"(Ingen text extraherad)","liveMonitorDescriptionPrefix":"Visar översättningshändelser när API-anrop flyter genom OmniRoute. Händelser kommer från minnesbufferten (återställs vid omstart). Använd","liveMonitorDescriptionSuffix":", eller externa API-anrop för att generera händelser."},"usage":{"title":"Användning","loggerTab":"Logger","proxyTab":"Proxy","budgetManagement":"Budgethantering","budgetSaved":"Budgetgränser sparade","budgetSaveFailed":"Det gick inte att spara budget","loadingBudgetData":"Laddar budgetdata...","noApiKeysTitle":"Inga API-nycklar","noApiKeysDescription":"Lägg först till API-nycklar för att ställa in budgetgränser.","apiKey":"API-nyckel","todaysSpend":"Dagens utgifter","thisMonth":"Denna månad","setLimits":"Ställ in gränser","dailyLimitUsd":"Daglig gräns (USD)","monthlyLimitUsd":"Månadsgräns (USD)","warningThresholdPercent":"Varningströskel (%)","dailyLimitPlaceholder":"t.ex. 5.00","monthlyLimitPlaceholder":"t.ex. 50.00","warningThresholdPlaceholder":"80","saveLimits":"Spara gränser","budgetOk":"Budget OK — {remaining} kvar","budgetExceeded":"Budget överskriden — förfrågningar kan blockeras","totalRequests":"Totalt antal förfrågningar","noDataYet":"Inga uppgifter ännu","latency":"Latens","latencyP50":"p50","latencyP95":"s 95","latencyP99":"s 99","promptCache":"Fråga Cache","systemHealth":"Systemhälsa","entries":"Inlägg","activeCount":"{count} aktiv","openCircuitBreakersDetected":"Öppen strömbrytare upptäckt","hitRate":"Träfffrekvens","hitsMisses":"Träffar/missar","circuitBreakers":"Strömbrytare","lockedIPs":"Låsta IP-adresser","lockoutsAutoRefreshHint":"Lås för hastighetsgräns per modell • Automatisk uppdatering 10s","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} kvar","howItWorks":"Hur det fungerar","howItWorksSubtitle":"Lär dig hur utvärderingar validerar dina LLM-svar","define":"Definiera","defineStepDescription":"Skapa testfall med indatameddelanden och förväntade utdatakriterier med hjälp av strategier som innehåller, regex eller exakt matchning.","run":"Kör","runStepDescription":"Utför testfall mot dina LLM-slutpunkter genom OmniRoute. Varje ärende skickas som en riktig API-förfrågan.","evaluate":"Utvärdera","evaluateStepDescription":"Svar jämförs mot förväntade kriterier. Se godkänt/underkänt för varje fall med latensstatistik och detaljerad feedback.","evalSuites":"Utvärderingssviter","evalSuitesHint":"Klicka på en svit för att se testfall och kör sedan för att utvärdera dina LLM-slutpunkter","evalsLoading":"Laddar eval-sviter...","noEvalSuitesFound":"Inga Eval Suites hittades","noEvalSuitesDescription":"Eval-sviter kan definieras via API:t eller i kod. De testar modellutdata mot förväntade resultat med hjälp av strategier som innehåller, regex, exakt matchning och anpassade funktioner.","columnCase":"Fall","columnStatus":"Status","columnLatency":"Latens","columnDetails":"Detaljer","columnModel":"Modell","columnStrategy":"Strategi","columnExpected":"Förväntat","statsSuites":"Sviter","statsTestCases":"Testfall","statsModels":"Modeller","statsCoverage":"Täckning","statsStrategiesCount":"{count} strategier","evaluationStrategies":"Utvärderingsstrategier","modelsUnderTest":"Modeller under test","searchSuitesPlaceholder":"Sök efter sviter...","passSuffix":"passera","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Kör Eval","runningProgress":"Kör {current}/{total}...","passRate":"genomslagsfrekvens","summaryBreakdown":"{passed} godkänd · {failed} misslyckades · {total} totalt","passedIconLabel":"✅ Godkänd","failedIconLabel":"❌ Misslyckades","detailsContains":"Innehåller: \\"{term}\\"","detailsRegex":"Regex: {pattern}","detailsExpected":"Förväntat: \\"{expected}\\"","noResultsYet":"Inga resultat ännu","testCasesCount":"Testfall ({count})","noTestCasesDefined":"Inga testfall definierade","runEvalHint":"Klicka på \\"Kör Eval\\" för att köra alla ärenden mot din LLM-slutpunkt. Varje test skickar en riktig förfrågan via OmniRoute.","notifyNoTestCases":"Inga testfall har definierats för denna svit","notifyAllCasesPassed":"Alla {total} fall godkändes ✅","notifySomeCasesFailed":"{passed}/{total} godkänd, {failed} misslyckades","notifyEvalRunFailed":"Evalkörningen misslyckades","notifyEvalTitle":"Eval: {name}","modelEvals":"Modellutvärderingar","evalsHeroDescription":"Testa och validera dina LLM-slutpunkter genom att köra fördefinierade utvärderingssviter. Varje svit innehåller testfall som skickar riktiga uppmaningar genom OmniRoute och jämför svar mot förväntade kriterier – vilket hjälper dig att upptäcka regressioner, jämföra modeller och säkerställa svarskvalitet mellan leverantörer.","qualityValidation":"Kvalitetsvalidering","modelComparison":"Modelljämförelse","regressionDetection":"Regressionsdetektering","latencyBenchmarks":"Latency Benchmarks","modelLockouts":"Modell Lockouter","noLockouts":"Inga modeller är för närvarande låsta","activeSessions":"Aktiva sessioner","noSessions":"Inga aktiva sessioner","sessionsHint":"Sessioner visas när förfrågningar flödar genom proxyn","sessionsTrackedHint":"Spåras via begäran om fingeravtryck • Automatisk uppdatering 5s","session":"Session","age":"Ålder","requests":"Förfrågningar","connection":"Anslutning","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Leverantörsgränser","noProviders":"Inga leverantörer anslutna","connectProvidersForQuota":"Anslut till leverantörer med OAuth för att spåra dina API-kvotgränser och användning.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(filtrerad från {count})","autoRefresh":"Automatisk uppdatering","refreshAll":"Uppdatera alla","loadingQuotas":"Laddar...","account":"konto","modelQuotas":"Modellkvoter","lastUsed":"Senast använd","actions":"Åtgärder","refreshQuota":"Uppdatera kvoten","today":"Idag","tomorrow":"Imorgon","dayTimeFormat":"{day}, {time}","inDuration":"i {duration}","notApplicable":"N/A","rawPlanWithValue":"Rå plan: {plan}","noPlanFromProvider":"Ingen plan från leverantören","noQuotaData":"Inga kvotdata","ungrouped":"Ungrouped","viewFlat":"Flat","viewByEnvironment":"By Environment","noQuotaDataAvailable":"Inga kvotdata tillgängliga","noAccountsForTierFilter":"Inga konton hittades för nivåfilter","tierAll":"Alla","tierEnterprise":"Företag","tierTeam":"Team","tierBusiness":"Business","tierUltra":"Ultra","tierPro":"Pro","tierPlus":"Plus","tierFree":"Gratis","tierUnknown":"Okänd"},"modals":{"waitingAuth":"Väntar på auktorisering","verificationUrl":"Verifierings-URL","yourCode":"Din kod","remoteAccess":"Fjärråtkomst:","connectedSuccess":"Ansluten framgångsrikt!","connectionFailed":"Anslutningen misslyckades","chooseAuthMethod":"Välj din autentiseringsmetod:","awsBuilderId":"AWS Builder ID","awsIamIdentity":"AWS IAM Identity Center","googleAccount":"Google-konto","githubAccount":"GitHub-konto","importToken":"Importera token","pasteToken":"Klistra in uppdateringstoken från Kiro IDE.","awsRegion":"AWS-regionen","autoDetecting":"Identifierar tokens automatiskt...","readingFromCache":"Läser från AWS SSO-cache","readingFromCursor":"Läser från Cursor IDE-databas","initializing":"Initierar...","pricingConfig":"Priskonfiguration","loadingPricing":"Laddar prisinformation...","pricingRatesFormat":"Priser Format","noPricingData":"Inga prisuppgifter tillgängliga","noModelsFound":"Inga modeller hittades"},"loggers":{"allProviders":"Alla leverantörer","allModels":"Alla modeller","allAccounts":"Alla konton","allApiKeys":"Alla API-nycklar","allTypes":"Alla typer","allLevels":"Alla nivåer","modelAZ":"Modell A-Z","modelZA":"Modell Z-A","loadingLogs":"Laddar loggar...","loadingProxyLogs":"Laddar proxyloggar...","noLogEntries":"Inga loggposter hittades","noPayloadData":"Ingen nyttolastdata tillgänglig för denna loggpost.","proxyEvent":"Proxyhändelse","proxy":"Proxy","level":"Nivå","directNative":"Direkt (infödd)","combo":"Combo","inputTokens":"jag:","outputTokens":"O:"},"stats":{"usageOverview":"Användningsöversikt","outputTokens":"Output Tokens","totalCost":"Total kostnad","usageByModel":"Användning efter modell","usageByAccount":"Användning per konto","failedToLoad":"Det gick inte att läsa in användningsstatistik.","tokenHealth":"Token Health","totalOAuth":"Totalt OAuth","healthy":"Frisk","warning":"Varning","errored":"Fel","lastCheck":"Sista kontrollen","noData":"Inga data","share":"Dela","unableToLoad":"Det gick inte att läsa in systemstatistik","product":"Produkt","resources":"Resurser","company":"Företag"},"auth":{"welcome":"Välkommen","signIn":"Logga in","enterPassword":"Ange ditt lösenord för att fortsätta","password":"Lösenord","unifiedProxy":"Unified AI API Proxy","unifiedAiApiProxy":"Unified AI API Proxy","unifiedAiApiProxyDesc":"Dirigera förfrågningar till flera AI-leverantörer via en enda slutpunkt. Lastbalansering, failover och användningsspårning inbyggd.","passwordNotEnabled":"Lösenordsskydd är inte aktiverat","loading":"Laddar...","invalidPassword":"Ogiltigt lösenord","errorOccurredRetry":"Ett fel uppstod. Försök igen.","configureInstance":"Låt oss konfigurera din OmniRoute-instans","runOnboardingWizard":"Kör introduktionsguiden för att ställa in ditt lösenord och ansluta din första AI-leverantör.","startOnboarding":"Börja onboarding","secureYourInstance":"Säkra din instans","setPasswordDescription":"Ange ett lösenord för att skydda din instrumentpanel och skydda dina API-slutpunkter från obehörig åtkomst.","configurePassword":"Konfigurera lösenord","continue":"Fortsätt","windowWillClose":"Det här fönstret stängs automatiskt...","closeTabNow":"Du kan stänga den här fliken nu.","copyUrlManual":"Kopiera URL:en från adressfältet och klistra in den i programmet.","accessDeniedDescription":"Du har inte behörighet att komma åt den här resursen. Kontrollera din API-nyckel eller kontakta administratören.","goToDashboard":"Gå till Dashboard","featureMultiProviderTitle":"Flera leverantörer","featureMultiProviderDesc":"OpenAI, Anthropic, Google och mer","featureLoadBalancingTitle":"Lastbalansering","featureLoadBalancingDesc":"Fördela förfrågningar intelligent","featureUsageTrackingTitle":"Användningsspårning","featureUsageTrackingDesc":"Övervaka kostnader och tokens","resetPassword":"Återställ lösenord","resetDescription":"Välj en metod för att återställa åtkomst till din instrumentpanel","stopServer":"Stoppa OmniRoute-servern","processing":"Bearbetar...","pleaseWait":"Vänta medan vi slutför auktoriseringen.","authSuccess":"Auktoriseringen lyckades!","copyUrl":"Kopiera denna URL","accessDenied":"Åtkomst nekad","methodCliTitle":"Metod 1: CLI-återställning","methodCliDescription":"Kör följande kommando på servern där OmniRoute körs:","methodCliHint":"Detta kommer att uppmana dig att ange ett nytt lösenord. Servern måste stoppas först.","methodManualTitle":"Metod 2: Manuell återställning","methodManualDescription":"Ta bort lösenordet från databasen och ställ in ett nytt vid start:","setPasswordInYour":"Ange ett nytt lösenord i din","fileLabelSuffix":"fil:","newPasswordPlaceholder":"ditt_nya_lösenord","deleteSettingsFile":"Ta bort","orRemovePasswordHashField":"eller ta bort fältet passwordHash","restartServerWithNewPassword":"Starta om servern - den kommer att använda det nya lösenordet","backToLogin":"Tillbaka till inloggning","forgotPassword":"Glömt lösenordet?","defaultPasswordHint":"Default password: 123456 (unless INITIAL_PASSWORD was set)","Authorization":"Auktorisation","Content-Disposition":"Innehåll-Disposition","waitingForAuthorization":"Väntar på auktorisation...","waitingForGoogleAuthorization":"Väntar på Google-auktorisering...","waitingForOpenAIAuthorization":"Väntar på OpenAI-auktorisering...","waitingForAntigravityAuthorization":"Väntar på antigravitationstillstånd...","waitingForIFlowAuthorization":"Väntar på iFlow-auktorisering...","exchangingCodeForTokens":"Byter ut kod för tokens..."},"landing":{"brandName":"OmniRoute","navigateHome":"Navigera till hem","toggleMenu":"Växla meny","featuresLink":"Funktioner","docsLink":"Dokument","github":"GitHub","versionLive":"v1.0 är nu live","oneEndpoint":"En slutpunkt för","allProviders":"Alla AI-leverantörer","heroDescription":"AI-slutpunktsproxy med webbinstrumentpanel - En JavaScript-port för CLIProxyAPI. Fungerar sömlöst med Claude Code, OpenAI Codex, Cline, RooCode och andra CLI-verktyg.","getStarted":"Kom igång","viewOnGithub":"Visa på GitHub","powerfulFeatures":"Kraftfulla funktioner","featuresSubtitle":"Allt du behöver för att hantera din AI-infrastruktur på ett ställe, byggt för skala.","featureUnifiedEndpointTitle":"Unified Endpoint","featureUnifiedEndpointDesc":"Få tillgång till alla leverantörer via en enda standard API-URL.","featureEasySetupTitle":"Enkel installation","featureEasySetupDesc":"Kom igång på några minuter med npx-kommandot.","featureModelFallbackTitle":"Modell Fallback","featureModelFallbackDesc":"Byt leverantör automatiskt vid fel eller hög latens.","featureUsageTrackingTitle":"Användningsspårning","featureUsageTrackingDesc":"Detaljerad analys och kostnadsövervakning över alla modeller.","featureOAuthApiKeysTitle":"OAuth- och API-nycklar","featureOAuthApiKeysDesc":"Hantera autentiseringsuppgifter på ett säkert sätt i ett valv.","featureCloudSyncTitle":"Molnsynkronisering","featureCloudSyncDesc":"Synkronisera dina konfigurationer mellan enheter direkt.","featureCliSupportTitle":"CLI Support","featureCliSupportDesc":"Fungerar med Claude Code, Codex, Cline, Cursor och mer.","featureDashboardTitle":"Instrumentpanel","featureDashboardDesc":"Visuell instrumentpanel för trafikanalys i realtid.","howItWorks":"Hur OmniRoute fungerar","howItWorksDescription":"Data flödar sömlöst från din applikation genom vårt intelligenta routinglager till den bästa leverantören för jobbet.","howItWorksStep1Title":"1. CLI & SDK:er","howItWorksStep1Description":"Dina förfrågningar utgår från dina favoritverktyg eller vår enhetliga SDK. Ändra bara webbadressen.","howItWorksStep2Title":"2. OmniRoute Hub","howItWorksStep2Description":"Vår motor analyserar uppmaningen, kontrollerar leverantörens hälsa och rutter för lägsta latens eller kostnad.","howItWorksStep3Title":"3. AI-leverantörer","howItWorksStep3Description":"Begäran uppfylls av OpenAI, Anthropic, Gemini eller andra omedelbart.","getStartedIn30Seconds":"Kom igång på 30 sekunder","getStartedDescription":"Installera OmniRoute, konfigurera dina leverantörer via webbinstrumentpanelen och börja dirigera AI-förfrågningar.","installOmniRoute":"Installera OmniRoute","installStepDescription":"Kör npx-kommandot för att starta servern direkt","openDashboard":"Öppna Dashboard","openDashboardStepDescription":"Konfigurera leverantörer och API-nycklar via webbgränssnitt","routeRequests":"Ruttförfrågningar","routeRequestsStepDescription":"Rikta dina CLI-verktyg till {endpoint}","terminal":"terminal","copy":"Kopiera","copied":"✓ Kopierat","startingOmniRoute":"Startar OmniRoute...","serverRunningOnLabel":"Server körs på","dashboardLabel":"Instrumentpanel","readyToRoute":"Redo att färdas! ✓","configureProvidersNote":"📝 Konfigurera leverantörer i instrumentpanelen eller använd miljövariabler","dataLocation":"Dataplats:","dataLocationMacLinux":" macOS/Linux:","dataLocationWindows":" Windows:","product":"Produkt","dashboardLink":"Instrumentpanel","changelog":"Ändringslogg","resources":"Resurser","documentation":"Dokumentation","npm":"NPM","legal":"Lagligt","mitLicense":"MIT-licens","footerTagline":"Den enhetliga slutpunkten för AI-generering. Anslut, dirigera och hantera dina AI-leverantörer med lätthet.","copyright":"© {year} OmniRoute. Alla rättigheter reserverade.","flowToolClaudeCode":"Claude Code","flowToolOpenAICodex":"OpenAI Codex","flowToolCline":"Cline","flowToolCursor":"Markör","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Antropisk","flowProviderGemini":"Tvillingarna","flowProviderGithubCopilot":"GitHub Copilot","interactiveDiagram":"Interaktivt diagram synligt på skrivbordet","ctaTitle":"Är du redo att förenkla din AI-infrastruktur?","ctaDescription":"Gå med utvecklare som effektiviserar sina AI-integrationer med OmniRoute. Öppen källkod och gratis att starta.","startFree":"Börja gratis","readDocumentation":"Läs dokumentation"},"docs":{"title":"Dokumentation","quickStart":"Snabbstart","features":"Funktioner","supportedProviders":"Leverantörer som stöds","supportedProvidersToc":"Leverantörer","commonUseCases":"Vanliga användningsfall","clientCompatibility":"Klientkompatibilitet","protocolsToc":"Protokoll","apiReference":"API-referens","method":"Metod","path":"Väg","notes":"Anteckningar","modelPrefixes":"Modellprefix","prefix":"Prefix","troubleshooting":"Felsökning","supportsChat":"Stöder både chatt- och svarsslutpunkter.","oauthAutoRefresh":"OAuth-anslutning med automatisk tokenuppdatering.","fullStreaming":"Fullständigt streamingstöd för alla modeller.","docsLabel":"Dokument","docsHeroDescription":"AI-gateway för LLM:er med flera leverantörer. En slutpunkt för OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor och 20+ leverantörer till.","openDashboard":"Öppna Dashboard","endpointPage":"Slutpunktssida","github":"GitHub","reportIssue":"Rapportera problem","onThisPage":"På den här sidan","documentationVersion":"Dokumentation - v{version}","quickStartStep1Title":"1. Installera och kör","quickStartStep1Prefix":"Kör","quickStartStep1Middle":"eller klona från GitHub och kör","quickStartStep2Title":"2. Skapa API-nyckel","quickStartStep2Text":"Gå till Endpoint -> Registrerade nycklar. Generera en nyckel per miljö.","quickStartStep3Title":"3. Anslut leverantörer","quickStartStep3Text":"Lägg till leverantörskonton via OAuth-inloggning, API-nyckel eller automatisk anslutning på fri nivå.","quickStartStep4Title":"4. Ställ in klientbasens URL","quickStartStep4Prefix":"Peka din IDE- eller API-klient till","quickStartStep4Suffix":"Använd till exempel leverantörsprefix","featureRoutingTitle":"Routing för flera leverantörer","featureRoutingText":"Dirigera förfrågningar till 30+ AI-leverantörer via en enda OpenAI-kompatibel slutpunkt. Stöder chatt, svar, ljud och bild-API:er.","featureCombosTitle":"Kombinationer och balansering","featureCombosText":"Skapa modellkombinationer med reservkedjor och balanseringsstrategier: round-robin, prioritet, slumpmässigt, minst använda och kostnadsoptimerat.","featureUsageTitle":"Användnings- och kostnadsspårning","featureUsageText":"Tokenräkning i realtid, kostnadsberäkning per leverantör/modell och detaljerad användningsuppdelning efter API-nyckel och konto.","featureAnalyticsTitle":"Analysinstrumentpanel","featureAnalyticsText":"Visuell analys med diagram för förfrågningar, tokens, fel, latens, kostnader och modellpopularitet över tid.","featureHealthTitle":"Hälsoövervakning","featureHealthText":"Live hälsokontroller, leverantörsstatus, strömbrytartillstånd och automatisk hastighetsgränsdetektering med exponentiell backoff.","featureCliTitle":"CLI-verktyg","featureCliText":"Hantera IDE-konfigurationer, exportera/importera säkerhetskopior, upptäck codex-profiler och konfigurera inställningar från instrumentpanelen.","featureSecurityTitle":"Säkerhet och policyer","featureSecurityText":"API-nyckelautentisering, IP-filtrering, promptinjektionsskydd, domänpolicyer, sessionshantering och granskningsloggning.","featureCloudSyncTitle":"Molnsynkronisering","featureCloudSyncText":"Synkronisera din konfiguration med Cloudflare Workers för fjärråtkomst med krypterade autentiseringsuppgifter och automatisk failover.","providersAcrossConnectionTypes":"{count} leverantörer över tre anslutningstyper.","manageProviders":"Hantera leverantörer","providersCount":"{count} leverantörer","providerTypeFree":"Gratis nivå","providerTypeOAuth":"OAuth","providerTypeApiKey":"API-nyckel","useCaseSingleEndpointTitle":"En enda slutpunkt för många leverantörer","useCaseSingleEndpointText":"Peka klienter till en basadress och dirigera efter modellprefix (till exempel: gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Reserv- och modellbyte med kombinationer","useCaseFallbackText":"Skapa kombinationsmodeller i Dashboard och håll klientkonfigurationen stabil medan leverantörerna roterar internt.","useCaseUsageVisibilityTitle":"Användning, kostnad och felsökningssynlighet","useCaseUsageVisibilityText":"Spåra tokens och kostnader efter leverantör, konto och API-nyckel på flikarna Användning och Analytics.","clientCherryStudioTitle":"Cherry Studio","baseUrlLabel":"Bas-URL","chatEndpointLabel":"Chattslutpunkt","modelRecommendationLabel":"Modellrekommendation: explicit prefix","clientCodexTitle":"Codex / GitHub Copilot-modeller","clientCodexBullet1":"Använd modell-ID med","clientCodexBullet2":"Codex-familjens modeller dirigeras automatiskt till","clientCodexBullet3":"Icke-Codex-modeller fortsätter","clientCursorTitle":"Markör IDE","clientCursorBullet1":"Använd","clientCursorBullet1Suffix":"prefix för Cursor-modeller.","clientCursorBullet2":"OAuth-anslutning - logga in från sidan Leverantörer.","clientClaudeTitle":"Claude Code / Antigravitation","clientClaudeBullet1Prefix":"Använd","clientClaudeBullet1Middle":"(Claude) eller","clientClaudeBullet1Suffix":"(Antigravitation) prefix.","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-kompatibel chattslutpunkt (standard).","endpointResponsesNote":"Responses API-slutpunkt (Codex, o-serien).","endpointModelsNote":"Modellkatalog för alla anslutna leverantörer.","endpointAudioNote":"Ljudtranskription (Deepgram, AssemblyAI).","endpointImagesNote":"Bildgenerering (NanoBanana).","endpointRewriteChatNote":"Omskrivningshjälp för klienter utan /v1.","endpointRewriteResponsesNote":"Skriv om hjälpare för svar utan /v1.","endpointRewriteModelsNote":"Omskrivningshjälp för modellupptäckt utan /v1.","modelPrefixesDescriptionStart":"Använd leverantörsprefixet före modellnamnet för att dirigera till en specifik leverantör. Exempel:","modelPrefixesDescriptionEnd":"rutter till GitHub Copilot.","provider":"Leverantör","type":"Typ","troubleshootingModelRouting":"Om klienten misslyckas med modellrouting, använd explicit leverantör/modell (till exempel: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Om du får tvetydiga modellfel väljer du ett leverantörsprefix istället för ett blott modell-ID.","troubleshootingCodexFamily":"För GitHub Codex-familjens modeller, behåll modellen som gh/codex-model; routern väljer /svarar automatiskt.","troubleshootingTestConnection":"Använd Dashboard > Leverantörer > Testa anslutning innan du testar från IDE:er eller externa klienter.","troubleshootingCircuitBreaker":"Om en leverantör visar att strömbrytaren är öppen, vänta på nedkylning eller kolla Health-sidan för detaljer.","troubleshootingOAuth":"För OAuth-leverantörer, autentisera på nytt om tokens löper ut. Kontrollera leverantörskortets 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":"Text-till-tal-generering (ElevenLabs, OpenAI TTS).","endpointEmbeddingsNote":"Generering av textinbäddning (OpenAI, Cohere, Voyage)."},"legal":{"privacyPolicy":"Sekretesspolicy","termsOfService":"Användarvillkor","providerConfigurations":"Leverantörskonfigurationer","apiKeys":"API-nycklar","usageLogs":"Användningsloggar","applicationSettings":"Applikationsinställningar","viewExportAnalytics":"Visa och exportera användningsanalyser","clearHistory":"Rensa användningshistorik när som helst","configureRetention":"Konfigurera logglagringspolicyer","backupRestore":"Säkerhetskopiera och återställ din databas","privacyMetadataTitle":"Sekretesspolicy | OmniRoute","privacyMetadataDescription":"Sekretesspolicy för OmniRoute AI API-proxyroutern.","termsMetadataTitle":"Användarvillkor | OmniRoute","termsMetadataDescription":"Användarvillkor för OmniRoute AI API-proxyroutern.","backToHome":"Tillbaka till hemmet","lastUpdated":"Senast uppdaterad: {date}","policyLastUpdatedDate":"13 februari 2026","listSeparator":"-","questionsVisit":"Frågor? Besök vår","githubRepository":"GitHub-förråd","privacySection1Title":"1. Lokal-först arkitektur","privacySection1Text":"OmniRoute är designad som en lokal-först-applikation. All databehandling och lagring sker helt och hållet på din maskin. Det finns ingen centraliserad server som samlar in din information.","privacySection2Title":"2. Data vi lagrar","privacyDataStoredIn":"Följande data lagras lokalt i","privacyDataProviderConfigurationsDesc":"anslutningsadresser, leverantörstyper och prioritetsinställningar","privacyDataApiKeysDesc":"krypterad och lagrad lokalt för autentisering med AI-leverantörer","privacyDataUsageLogsDesc":"antal begäranden, tokenanvändning, modellnamn, tidsstämplar och svarstider","privacyDataApplicationSettingsDesc":"temapreferenser, routingstrategi och kombinationskonfigurationer","privacySection3Title":"3. Ingen telemetri","privacySection3Text":"OmniRoute samlar inte in telemetri-, analys- eller kraschrapporter. Ingen data skickas till oss eller någon tredje part. Dina användningsmönster, API-anrop och konfigurationer förblir helt privata.","privacySection4Title":"4. Tredjeparts AI-leverantörer","privacySection4Text":"När du gör API-anrop via OmniRoute vidarebefordras dina förfrågningar till de AI-leverantörer du har konfigurerat (till exempel: OpenAI, Anthropic, Google). Dessa leverantörer har sina egna integritetspolicyer som styr hur de hanterar din data. Vänligen granska:","privacyOpenAiPolicy":"OpenAI Sekretesspolicy","privacyAnthropicPolicy":"Antropisk sekretesspolicy","privacyGooglePolicy":"Googles sekretesspolicy","privacySection5Title":"5. Molnsynkronisering (valfritt)","privacySection5Text":"Om du aktiverar den valfria molnsynkroniseringsfunktionen kan leverantörskonfigurationer och API-nycklar överföras till en konfigurerad molnslutpunkt. Den här funktionen är inaktiverad som standard och kräver explicit opt-in.","privacySection6Title":"6. Loggning","privacyLoggingIntro":"Begäran loggar kan konfigureras via instrumentpanelens inställningar. Du kan:","privacySection7Title":"7. Dina rättigheter","privacySection7TextStart":"Eftersom all data lagras lokalt har du full kontroll. Du kan radera dina uppgifter när som helst genom att ta bort","privacySection7TextEnd":"katalogen eller använda funktionerna för säkerhetskopiering och återställning av databasen i instrumentpanelen.","termsSection1Title":"1. Översikt","termsSection1Text":"OmniRoute är en lokalt första AI API-proxyrouter som fungerar helt på din maskin. Den dirigerar förfrågningar till flera AI-leverantörer med lastbalansering, failover och användningsspårning.","termsSection2Title":"2. Användaransvar","termsResponsibilityApiKeys":"Du är ensam ansvarig för att hantera dina egna API-nycklar och autentiseringsuppgifter för tredjeparts AI-leverantörer (OpenAI, Anthropic, Google, etc.).","termsResponsibilityCompliance":"Du måste följa användarvillkoren för varje AI-leverantör vars API du kommer åt via OmniRoute.","termsResponsibilitySecurity":"Du ansvarar för säkerheten för din lokala OmniRoute-installation, inklusive att ställa in ett lösenord och begränsa nätverksåtkomst.","termsSection3Title":"3. Hur det fungerar","termsSection3Text":"OmniRoute fungerar som en förmedlande proxy. API-anrop som skickas till OmniRoute översätts och vidarebefordras till dina konfigurerade AI-leverantörer. OmniRoute ändrar inte innehållet i dina förfrågningar eller svar utöver den nödvändiga protokollöversättningen.","termsSection4Title":"4. Datahantering","termsDataStoredLocally":"All data lagras lokalt på din maskin i en SQLite-databas.","termsNoTransmission":"OmniRoute överför ingen data till externa servrar om du inte uttryckligen aktiverar molnsynkroniseringsfunktioner.","termsDataLocationText":"Användningsloggar, API-nycklar och konfiguration lagras i","termsSection5Title":"5. Ansvarsfriskrivning","termsSection5Text":"OmniRoute tillhandahålls \\"i befintligt skick\\" utan garanti av något slag. Vi ansvarar inte för några kostnader som uppstår genom API-användning, tjänstavbrott eller dataförlust. Behåll alltid säkerhetskopior av din konfiguration.","termsSection6Title":"6. Öppen källkod","termsSection6Text":"OmniRoute är programvara med öppen källkod. Du är fri att inspektera, modifiera och distribuera den enligt villkoren i dess licens."},"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 chatt","streaming":"Streaming","system-prompt":"Systemprompt","thinking":"Tänker","tool-calling":"Verktygsanrop","multi-turn":"Flervarv"},"templateDescriptions":{"simple-chat":"Grundläggande chattmall med systemmeddelande","streaming":"Mall för strömmande svar","system-prompt":"Mall med anpassad systemprompt","thinking":"Mall med resonemang/tänkebudget","tool-calling":"Mall för verktyg/funktionsanrop","multi-turn":"Mall för konversationer med flera svängar"},"templatePayloads":{"simpleChat":{"system":"Du är en hjälpsam AI-assistent.","userGreeting":"Hej! Hur kan jag hjälpa dig idag?"},"streaming":{"prompt":"Skriv en berättelse om"},"systemPrompt":{"question":"Vad är meningen med livet?","systemInstruction":"Ge ett genomtänkt, filosofiskt svar."},"thinking":{"question":"Förklara kvantberäkning"},"toolCalling":{"cityNameDescription":"Namnet på staden att få väder för","toolDescription":"Få aktuellt väder för en plats","userWeather":"Hur är vädret i Tokyo?"},"multiTurn":{"system":"Du är en hjälpsam assistent.","assistantExample":"Jag hjälper dig gärna med det.","userInitial":"Jag behöver hjälp med","userFollowUp":"Kan du utveckla 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_sv_json_e8ae9f28._.js.map