omniroute 3.3.6 → 3.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/app/.next/BUILD_ID +1 -1
- package/app/.next/build-manifest.json +2 -2
- package/app/.next/prerender-manifest.json +3 -3
- package/app/.next/server/app/(dashboard)/dashboard/a2a/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/agents/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/analytics/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/api-manager/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/audit-log/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/auto-combo/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cache/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/cli-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/combos/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/costs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/endpoint/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/health/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/limits/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/logs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/mcp/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/media/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/onboarding/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/playground/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/profile/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/[id]/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/new/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/providers/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/search-tools/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/settings/pricing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/translator/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/(dashboard)/dashboard/usage/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/400/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/401/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/403/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/408/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/429/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/500/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/502/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/503/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/_global-error.html +2 -2
- package/app/.next/server/app/_global-error.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/app/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/app/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/api/system/version/route.js.nft.json +1 -1
- package/app/.next/server/app/callback/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/docs/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forbidden/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/forgot-password/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/landing/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/login/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/maintenance/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/offline/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/privacy/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/status/page_client-reference-manifest.js +1 -1
- package/app/.next/server/app/terms/page_client-reference-manifest.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__46e00e59._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__6e52619e._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__7ace0fcd._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__950558b8._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__9698d25e._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__a32d3818._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__bc251fbe._.js +1 -1
- package/app/.next/server/chunks/[root-of-the-server]__d5a064d5._.js +1 -1
- package/app/.next/server/chunks/_05c48915._.js +1 -1
- package/app/.next/server/chunks/_06515a8a._.js +1 -1
- package/app/.next/server/chunks/_2115d8de._.js +1 -1
- package/app/.next/server/chunks/_3ac953eb._.js +1 -1
- package/app/.next/server/chunks/_4b8fd853._.js +1 -1
- package/app/.next/server/chunks/_68683848._.js +1 -1
- package/app/.next/server/chunks/_ee9b677b._.js +1 -1
- package/app/.next/server/chunks/ssr/[root-of-the-server]__9ef96d20._.js +1 -1
- package/app/.next/server/chunks/ssr/[root-of-the-server]__a6942102._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_ar_json_e1d5145b._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_bg_json_34495a0f._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_cs_json_db6f9ebc._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_da_json_7500ed02._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_de_json_b2a40318._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_es_json_82775c4a._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_fi_json_dcc6745e._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_fr_json_fe904570._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_he_json_3e3c1e1b._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_hi_json_83a0b9e5._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_hu_json_651e00d3._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_id_json_725d4a34._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_in_json_2d7cd177._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_it_json_e23882ae._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_ja_json_fc6af4d8._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_ko_json_0ffdbdc6._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_ms_json_610df819._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_nl_json_55ad1507._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_no_json_9f484a8c._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_phi_json_871ece45._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_pl_json_79d0be4b._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_pt-BR_json_e7b9e8db._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_pt_json_2fc13a82._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_ro_json_d1a5f5ee._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_ru_json_9d7a9dfe._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_sk_json_1c5bff4a._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_sv_json_e8ae9f28._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_th_json_6ed546bd._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_tr_json_c8d78b01._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_uk-UA_json_c72cdf08._.js +1 -1
- package/app/.next/server/chunks/ssr/src_i18n_messages_vi_json_03ec9dfd._.js +1 -1
- package/app/.next/server/pages/500.html +2 -2
- package/app/.next/server/server-reference-manifest.js +1 -1
- package/app/.next/server/server-reference-manifest.json +1 -1
- package/app/.next/static/chunks/{b9999bd9d2b99bf6.js → d3c3a9266158d9b0.js} +1 -1
- package/app/CHANGELOG.md +19 -1
- package/app/docs/openapi.yaml +1 -1
- package/app/open-sse/handlers/responseTranslator.ts +1 -1
- package/app/open-sse/package.json +1 -1
- package/app/package-lock.json +3 -3
- package/app/package.json +1 -1
- package/app/src/i18n/messages/ar.json +2 -1
- package/app/src/i18n/messages/bg.json +2 -1
- package/app/src/i18n/messages/cs.json +2 -1
- package/app/src/i18n/messages/da.json +2 -1
- package/app/src/i18n/messages/de.json +2 -1
- package/app/src/i18n/messages/es.json +2 -1
- package/app/src/i18n/messages/fi.json +2 -1
- package/app/src/i18n/messages/fr.json +2 -1
- package/app/src/i18n/messages/he.json +2 -1
- package/app/src/i18n/messages/hi.json +2 -1
- package/app/src/i18n/messages/hu.json +2 -1
- package/app/src/i18n/messages/id.json +2 -1
- package/app/src/i18n/messages/in.json +2 -1
- package/app/src/i18n/messages/it.json +2 -1
- package/app/src/i18n/messages/ja.json +2 -1
- package/app/src/i18n/messages/ko.json +2 -1
- package/app/src/i18n/messages/ms.json +2 -1
- package/app/src/i18n/messages/nl.json +2 -1
- package/app/src/i18n/messages/no.json +2 -1
- package/app/src/i18n/messages/phi.json +2 -1
- package/app/src/i18n/messages/pl.json +2 -1
- package/app/src/i18n/messages/pt-BR.json +2 -1
- package/app/src/i18n/messages/pt.json +2 -1
- package/app/src/i18n/messages/ro.json +2 -1
- package/app/src/i18n/messages/ru.json +2 -1
- package/app/src/i18n/messages/sk.json +2 -1
- package/app/src/i18n/messages/sv.json +2 -1
- package/app/src/i18n/messages/th.json +2 -1
- package/app/src/i18n/messages/tr.json +2 -1
- package/app/src/i18n/messages/uk-UA.json +2 -1
- package/app/src/i18n/messages/vi.json +2 -1
- package/app/src/shared/services/opencodeConfig.ts +14 -13
- package/app/tests/unit/t40-opencode-cli-tools-integration.test.mjs +5 -5
- package/package.json +1 -1
- /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_buildManifest.js +0 -0
- /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_clientMiddlewareManifest.json +0 -0
- /package/app/.next/static/{1ny0VWnN2mDf-NnjRzXAY → NYBYaP3-LK80ViNPwi7dC}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[503039,a=>{a.v(JSON.parse('{"common":{"save":"Salva","cancel":"Cancellare","delete":"Eliminare","loading":"Caricamento...","error":"Si è verificato un errore","success":"Successo","confirm":"Sei sicuro?","refresh":"Aggiorna","close":"Vicino","add":"Aggiungere","edit":"Modificare","search":"Ricerca","back":"Indietro","next":"Prossimo","submit":"Invia","reset":"Reset","copy":"Copia","copied":"Copiato!","enabled":"Abilitato","disabled":"Disabilitato","active":"Attivo","inactive":"Inattivo","noData":"Nessun dato disponibile","configure":"Configura","manage":"Maneggio","name":"Nome","actions":"Azioni","status":"Stato","type":"Tipo","model":"Modello","models":"modelli","provider":"Fornitore","account":"Account","time":"Tempo","details":"Dettagli","created":"Creato","lastUsed":"Ultimo utilizzo","loadMore":"Carica altro","noResults":"Nessun risultato trovato","reloadPage":"Ricarica la pagina","connected":"Collegato","disconnected":"Disconnesso","notConfigured":"Non configurato","testConnection":"Prova connessione","enable":"Abilitare","disable":"Disabilita","columns":"Colonne","newest":"Più recente","oldest":"Il più antico","all":"Tutto","none":"Nessuno","yes":"SÌ","no":"NO","warning":"Avvertimento","note":"Nota","free":"Gratuito","skipToContent":"Vai al contenuto","maintenanceServerIssues":"Server is experiencing issues. Some features may be unavailable.","maintenanceServerUnreachable":"Server is unreachable. Reconnecting...","accept":"accept","accountId":"accountId","alias":"alias","apiKeyId":"apiKeyId","apiKeyName":"apiKeyName","apiKeySecret":"apiKeySecret","authorization":"authorization","content-type":"content-type","content-length":"content-length","cookie":"cookie","file":"file","host":"host","id":"id","import":"import","limit":"limit","offset":"offset","open":"open","origin":"origin","promptTokens":"promptTokens","completionTokens":"completionTokens","totalTokens":"totalTokens","rawModel":"rawModel","scope":"scope","skill":"skill","sortBy":"sortBy","sortOrder":"sortOrder","tab":"tab","text":"text","textarea":"textarea","tool":"tool","toolId":"toolId","web":"web","whereUsed":"whereUsed","whitelist":"whitelist","blacklist":"blacklist","resolve":"resolve","force":"force","base64url":"base64url","hex":"hex","range":"range","component":"component","redirect_uri":"redirect_uri","idempotency-key":"idempotency-key","error_description":"error_description","code":"code","compatible":"compatible","chat-completions":"chat-completions","oauth":"oauth","auth_token":"auth_token","crypto":"crypto","hours":"hours","selfsigned":"selfsigned","proxy_id":"proxy_id","proxyId":"proxyId","connectionId":"connectionId","resolveConnectionId":"resolveConnectionId","resolve_connection_id":"resolve_connection_id","scope_id":"scope_id","scopeId":"scopeId","jwtSecret":"jwtSecret","keytar":"keytar","better-sqlite3":"better-sqlite3","undici":"undici","builder-id":"builder-id","musicDesc":"musicDesc","musicGeneration":"musicGeneration","idc":"idc","cloud-status-changed":"cloud-status-changed","where_used":"where_used","windowMs":"windowMs","social-github":"GitHub","social-google":"Google","TOOL_ALLOWLIST":"Lista consentita degli strumenti","TOOL_DENYLIST":"Elenco negati dello strumento","Failed to save pricing":"Impossibile salvare i prezzi","Failed to reset pricing":"Impossibile reimpostare i prezzi","apikey":"Chiave API","http":"HTTP"},"sidebar":{"home":"Casa","dashboard":"Pannello di controllo","providers":"Fornitori","combos":"Combinazioni","usage":"Utilizzo","analytics":"Analitica","costs":"Costi","health":"Salute","limits":"Limiti e quote","cliTools":"Strumenti CLI","media":"Media","settings":"Impostazioni","translator":"Traduttore","docs":"Documenti","issues":"Problemi","apiManager":"Gestore API","logs":"Registri","auditLog":"Registro di controllo","shutdown":"Fermare","restart":"Ricomincia","shutdownConfirm":"Arrestare OmniRoute?","restartConfirm":"Riavviare OmniRoute?","version":"v{version}","debug":"Debug","system":"Sistema","help":"Aiuto","serverDisconnected":"Server disconnesso","serverDisconnectedMsg":"Il server proxy è stato arrestato o si sta riavviando.","expandSidebar":"Espandi la barra laterale","collapseSidebar":"Comprimi la barra laterale","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":"Endpoint","playground":"Playground","agents":"Agenti","cliToolsShort":"Strumenti","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":"Esci","language":"Lingua","providers":"Fornitori","providerDescription":"Gestisci le connessioni del tuo fornitore di intelligenza artificiale","combos":"Combinazioni","comboDescription":"Combo di modelli con fallback","usage":"Utilizzo e analisi","usageDescription":"Monitora l\'utilizzo dell\'API, il consumo dei token e i log delle richieste","analytics":"Analitica","analyticsDescription":"Grafici, tendenze e approfondimenti sulla valutazione","cliTools":"Strumenti CLI","cliToolsDescription":"Configura gli strumenti CLI","home":"Casa","homeDescription":"Benvenuti in OmniRoute","endpoint":"Endpoint","endpointDescription":"Gestire endpoint proxy, MCP, A2A e endpoint API","settings":"Impostazioni","settingsDescription":"Gestisci le tue preferenze","openaiCompatible":"Compatibile con OpenAI","anthropicCompatible":"Compatibile antropico","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":"Avvio rapido","quickStartDesc":"Diventa subito operativo in 4 passaggi. Connetti fornitori, modelli di percorso, monitora tutto.","fullDocs":"Documenti completi","step1Title":"1. Crea la chiave API","step1Desc":"Vai a <endpoint>Endpoint</endpoint> -> Chiavi registrate. Genera una chiave per ambiente.","step2Title":"2. Connetti i fornitori","step2Desc":"Aggiungi account in <providers>Providers</providers>. Supporta OAuth, chiave API e livelli gratuiti.","step3Title":"3. Punta il tuo cliente","step3Desc":"Imposta l\'URL di base su {url} nel tuo client IDE o API.","step4Title":"4. Monitora e ottimizza","step4Desc":"Tieni traccia di token, costi ed errori in <logs>Request Logs</logs> e <analytics>Analytics</analytics>.","providersOverview":"Panoramica dei fornitori","configuredOf":"{configured} configurato tra {total} provider disponibili","noModelsAvailable":"Nessun modello disponibile per questo fornitore.","configureFirst":"Configura prima una connessione in {providers}","configureProvider":"Configura fornitore","modelAvailable":"{count} modello disponibile","modelsAvailable":"{count} modelli disponibili","connectionsActive":"Connessione {count} attiva","connectionsActivePlural":"{count} connessioni attive","copyModelName":"Copia il nome del modello","documentation":"Documentazione","healthMonitor":"Monitoraggio della salute","reportIssue":"Segnala il problema","activeError":"{active} attivo · {errors} errore","oauthLabel":"OAuth","apiKeyLabel":"Chiave API","requestsShort":"{count} richieste","providerModelsTitle":"{provider} - Modelli","copiedModel":"Copiato: {model}","aliasLabel":"alias","updateNow":"Aggiorna ora","updating":"Aggiornamento...","updateAvailableDesc":"Una nuova versione è disponibile. Fai clic per aggiornare.","updateStarted":"Aggiornamento avviato..."},"analytics":{"title":"Analitica","overviewDescription":"Monitora i modelli di utilizzo delle API, il consumo di token, i costi e le tendenze delle attività su tutti i provider e modelli.","evalsDescription":"Esegui suite di valutazione per testare e convalidare i tuoi endpoint LLM. Confronta la qualità del modello, rileva le regressioni e confronta la latenza.","overview":"Panoramica","evals":"Valutazioni"},"apiManager":{"title":"Chiavi API","createKey":"Crea chiave API","key":"Chiave","revokeKey":"Revoca chiave","revokeConfirm":"Sei sicuro di voler revocare questa chiave API?","noKeys":"Nessuna chiave API ancora","noKeysDesc":"Crea la tua prima chiave API per autenticare le richieste al tuo endpoint","keyLabel":"Etichetta chiave","permissions":"Autorizzazioni","expiresAt":"Scade","never":"Mai","revoke":"Revocare","showKey":"Mostra chiave","hideKey":"Nascondi chiave","copyKey":"Copia la chiave API","allModels":"Tutti i modelli","selectedModels":"Modelli selezionati","readOnly":"Sola lettura","fullAccess":"Accesso completo","keyManagement":"Gestione delle chiavi API","keyManagementDesc":"Crea e gestisci le chiavi API per autenticare le richieste al tuo endpoint","totalKeys":"Chiavi totali","restricted":"Limitato","totalRequests":"Richieste totali","modelsAvailable":"Modelli disponibili","registeredKeys":"Chiavi registrate","keysRegistered":"Chiavi {count} registrate","keyRegistered":"Chiave {count} registrata","keysSecurityNote":"Ciascuna chiave isola il monitoraggio dell\'utilizzo e può essere revocata in modo indipendente. Le chiavi vengono mascherate dopo la creazione per motivi di sicurezza.","createFirstKey":"Crea la tua prima chiave","name":"Nome","usage":"Utilizzo","created":"Creato","actions":"Azioni","reqs":"req","neverUsed":"Mai usato","deleteConfirm":"Eliminare questa chiave API?","usageTips":"Suggerimenti per l\'uso","tipAuth":"Utilizza le chiavi API nell\'intestazione Autorizzazione come portatore YOUR_KEY","tipSecure":"Le chiavi vengono visualizzate solo una volta durante la creazione: conservale in modo sicuro","tipSeparate":"Crea chiavi separate per client o ambienti diversi","tipRestrict":"Limita le chiavi a modelli specifici per una migliore sicurezza e controllo dei costi","keyName":"Nome chiave","keyNamePlaceholder":"ad esempio, Chiave di produzione, Chiave di sviluppo","keyNameDesc":"Scegli un nome descrittivo per identificare lo scopo di questa chiave","keyCreated":"Chiave API creata","keyCreatedSuccess":"Chiave creata con successo!","keyCreatedNote":"Copia e memorizza questa chiave adesso: non verrà più mostrata.","done":"Fatto","savePermissions":"Salva autorizzazioni","allowAll":"Consenti tutto","restrict":"Limitare","allowAllInfo":"Questa chiave può accedere a tutti i modelli disponibili.","restrictInfo":"Questa chiave può accedere a {selected} di {total} modelli.","selected":"{count} selezionato","all":"Tutto","clear":"Chiaro","searchModels":"Cerca modelli per nome o fornitore...","noModelsFound":"Nessun modello trovato","keyNameRequired":"Il nome della chiave è obbligatorio","keyNameTooLong":"Il nome della chiave deve contenere {max} caratteri o meno","keyNameInvalid":"Il nome della chiave può contenere solo lettere, numeri, spazi, trattini e trattini bassi","invalidKeyName":"Nome della chiave non valido","failedCreateKey":"Impossibile creare la chiave","failedCreateKeyRetry":"Impossibile creare la chiave. Per favore riprova.","invalidKeyId":"ID chiave non valido","failedDeleteKey":"Impossibile eliminare la chiave","failedDeleteKeyRetry":"Impossibile eliminare la chiave. Per favore riprova.","invalidModelsSelection":"Selezione dei modelli non valida","cannotSelectMoreThanModels":"Impossibile selezionare più di {max} modelli","failedUpdatePermissions":"Impossibile aggiornare le autorizzazioni","failedUpdatePermissionsRetry":"Impossibile aggiornare le autorizzazioni. Per favore riprova.","unknownProvider":"sconosciuto","copyMaskedKey":"Copia chiave mascherata","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Ultimo: {date}","editPermissions":"Modifica autorizzazioni","deleteKey":"Cancella chiave","model":"{count} modello","models":"{count} modelli","permissionsTitle":"Autorizzazioni: {name}","allowAllDesc":"Questa chiave può accedere a tutti i modelli disponibili.","restrictDesc":"Questa chiave può accedere a {selectedCount} di {totalModels} modelli.","selectedCount":"{count} selezionato","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":"Registro di controllo","searchPlaceholder":"Cerca azioni...","action":"Azione","actor":"Attore","target":"Bersaglio","ipAddress":"Indirizzo IP","timestamp":"Timestamp","noEntries":"Nessuna voce di controllo trovata","filterByAction":"Filtra per azione...","filterByActor":"Filtra per attore...","filterEntriesAria":"Filtra le voci del registro di controllo","filterByActionTypeAria":"Filtra per tipo di azione","filterByActorAria":"Filtra per attore","refreshAuditLogAria":"Aggiorna il registro di controllo","tableAria":"Voci del registro di controllo","failedFetchAuditLog":"Impossibile recuperare il registro di controllo","notAvailable":"—","description":"Azioni amministrative ed eventi di sicurezza","showing":"Visualizzazione delle voci {count} (offset {offset})","previous":"Precedente"},"media":{"title":"Area Media","subtitle":"Genera immagini, video e musica","model":"Model","prompt":"Prompt","generate":"Genera","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":"Strumenti CLI","noActiveProviders":"Nessun fornitore attivo","noActiveProvidersDesc":"Aggiungi e connetti prima i provider per configurare gli strumenti CLI.","mapModels":"Modelli di mappe","testConnection":"Prova connessione","connectionStatus":"Stato della connessione","configureEndpoint":"Configura punto finale","instructions":"Istruzioni","modelMapping":"Mappatura del modello","baseUrl":"URL di base","apiKey":"Chiave API","configured":"Configurato","notConfigured":"Non configurato","notInstalled":"Non installato","custom":"Costume","unknown":"Sconosciuto","lastSavedAt":"Ultimo salvataggio: {date}","never":"Mai","justNow":"proprio adesso","minutesAgoShort":"{count}m fa","hoursAgoShort":"{count}h fa","daysAgoShort":"{count}d fa","monthsAgoShort":"{count}mo fa","yearsAgoShort":"{count}y fa","runtimeCheckFailed":"Il controllo di runtime non è riuscito","yourApiKeyPlaceholder":"la tua chiave API","modelPlaceholder":"provider/ID modello","configurationSaved":"Configurazione salvata con successo.","failedToSave":"Impossibile salvare la configurazione.","noApiKeysCreateOne":"Nessuna chiave API: creane una nella pagina Chiavi","defaultOmnirouteKey":"sk_omniroute (predefinito)","selectModel":"Seleziona modello","selectModelForAlias":"Seleziona il modello per {alias}","selectModelForTool":"Seleziona il modello per {tool}","select":"Selezionare","clear":"Chiaro","comingSoon":"Prossimamente","checkingRuntime":"Controllo dello stato di runtime in corso...","guideOnlyIntegration":"Integrazione solo con guida (non è richiesto runtime locale)","cliRuntimeDetected":"Runtime CLI rilevato e pronto","cliFoundNotRunnable":"CLI trovata ma non eseguibile{reason}","cliRuntimeNotDetected":"Runtime CLI non rilevato","binary":"Binario","configPath":"Percorso di configurazione","configPathShort":"Configurazione","failedCheckRuntimeStatus":"Impossibile controllare lo stato del runtime.","copy":"Copia","copied":"Copiato","copyConfig":"Copia config","saveConfig":"Salva configurazione","selectionSaved":"Selezione salvata","guide":"Guida","detected":"Rilevato","notReady":"Non pronto","active":"Attivo","inactive":"Inattivo","startMitm":"Avvia il MITM","stopMitm":"Interrompi il MITM","mitmStarted":"MITM è iniziato con successo!","mitmStopped":"MITM si è interrotto con successo!","failedStart":"Impossibile avviare MITM","failedStop":"Impossibile arrestare MITM","saveMappings":"Salva mappature","mappingsSaved":"Mappature salvate!","failedSaveMappings":"Impossibile salvare le mappature","howItWorks":"Come funziona:","antigravityHowWorksDesc":"Antigravity invia richieste all\'endpoint di Google. MITM li intercetta e li reindirizza a OmniRoute.","antigravityStep1":"1. Avviare MITM per instradare le richieste tramite OmniRoute.","antigravityStep2Prefix":"2. Aggiungi","antigravityStep2Suffix":"al file host come 127.0.0.1.","antigravityStep3":"3. Open Antigravity e le richieste verranno inoltrate.","sudoPasswordRequiredTitle":"Password Sudo obbligatoria","sudoPasswordHint":"Per modificare le impostazioni del file host e del proxy di sistema è necessaria la password dell\'amministratore.","enterSudoPassword":"Inserisci la password sudo","sudoPasswordRequiredError":"È richiesta la password Sudo.","cancel":"Cancellare","confirm":"Confermare","settingsApplied":"Impostazioni applicate con successo!","failedApplySettings":"Impossibile applicare le impostazioni","settingsReset":"Le impostazioni sono state ripristinate con successo!","failedResetSettings":"Impossibile ripristinare le impostazioni","backupRestored":"Backup ripristinato!","failedRestore":"Impossibile ripristinare","checkingCli":"Controllo {tool} CLI...","cliNotRunnable":"{tool} CLI installata ma non eseguibile","cliNotInstalled":"{tool} CLI non installata","cliNotDetected":"{tool} CLI non rilevata","cliDetectedReady":"{tool} CLI rilevata e pronta","cliFoundFailedHealthcheck":"{tool} La CLI è stata trovata ma il controllo dello stato di runtime non è riuscito{reason}.","installCliPrompt":"Installa {tool} CLI per utilizzare questa funzionalità.","installCodexPrompt":"Installa la CLI del Codex per utilizzare la funzionalità di applicazione automatica.","hide":"Nascondere","howToInstall":"Come installare","installationGuide":"Guida all\'installazione","platforms":"macOS/Linux/Windows:","afterInstallationRun":"Dopo l\'installazione, esegui","toVerify":"per verificare.","current":"Attuale","baseUrlPlaceholder":"https://.../v1","resetToDefault":"Ripristina le impostazioni predefinite","providerModelPlaceholder":"provider/ID modello","apply":"Fare domanda a","reset":"Reset","manualConfig":"Configurazione manuale","backups":"Backup","configBackups":"Backup di configurazione","noBackupsYet":"Nessun backup ancora. I backup vengono creati automaticamente prima di ogni applicazione o ripristino.","restore":"Ripristinare","backupRestoredReloading":"Backup ripristinato! Stato di ricarica...","failedRestoreBackup":"Impossibile ripristinare il backup","applied":"Applicato!","failed":"Fallito","resetDone":"Reset!","omnirouteConfiguredOpenAiCompatible":"OmniRoute è configurato come provider compatibile con OpenAI","provider":"Fornitore","model":"Modello","providers":"Fornitori","auth":"Aut","noApiKeysAvailable":"Nessuna chiave API disponibile","usingDefaultOmniroute":"Utilizzo predefinito: sk_omniroute","updateConfig":"Aggiorna config","applyConfig":"Applica config","noBackupsAvailable":"Nessun backup disponibile.","profileSaved":"Profilo \\"{name}\\" salvato!","failedSaveProfile":"Impossibile salvare il profilo","profileActivated":"Profilo attivato!","failedActivateProfile":"Impossibile attivare il profilo","profiles":"Profili","savedProfiles":"Profili salvati","noProfilesYet":"Nessun profilo ancora salvato. Salva la configurazione corrente come profilo di seguito.","activate":"Attivare","deleteProfile":"Elimina profilo","profileNamePlaceholder":"Nome del profilo (ad es. Account personale)","saveCurrent":"Salva corrente","codexAuthNotePrefix":"Usi del Codice","codexAuthNoteMiddle":"con","codexAuthNoteSuffix":"Fare clic su \\"Applica\\" per la configurazione automatica.","claudeManualConfiguration":"Claude CLI - Configurazione manuale","codexManualConfiguration":"Codex CLI - Configurazione manuale","droidManualConfiguration":"Droid di fabbrica - Configurazione manuale","openClawManualConfiguration":"Open Claw - Configurazione manuale","clineManualConfiguration":"Configurazione manuale della linea","kiloManualConfiguration":"Configurazione manuale del codice Kilo","toolDescriptions":{"antigravity":"IDE Antigravità di Google con MITM","claude":"CLI del codice Claude antropico","codex":"CLI del codice OpenAI","droid":"Assistente AI Droid di fabbrica","openclaw":"Apri l\'Assistente AI Claw","cline":"Cline AI Coding Assistant CLI","kilo":"CLI dell\'Assistente AI Kilo Code","cursor":"Editor del codice AI del cursore","continue":"Continua Assistente AI","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":"Richiede l\'account Cursor Pro per utilizzare questa funzionalità.","1":"Il cursore instrada le richieste tramite il proprio server, quindi l\'endpoint locale non è supportato. Abilita Cloud Endpoint nelle Impostazioni."},"steps":{"1":{"title":"Apri Impostazioni","desc":"Vai su Impostazioni -> Modelli"},"2":{"title":"Abilita l\'API OpenAI","desc":"Abilita l\'opzione \\"Chiave API OpenAI\\"."},"3":{"title":"URL di base"},"4":{"title":"Chiave API"},"5":{"title":"Aggiungi modello personalizzato","desc":"Fai clic su \\"Visualizza tutto il modello\\" -> \\"Aggiungi modello personalizzato\\""},"6":{"title":"Seleziona modello"}}},"continue":{"steps":{"1":{"title":"Apri Configurazione","desc":"Apri il file di configurazione Continua"},"2":{"title":"Chiave API"},"3":{"title":"Seleziona modello"},"4":{"title":"Aggiungi configurazione modello","desc":"Aggiungi la seguente configurazione all\'array dei modelli:"}},"notes":{"0":"Continue usa un file di configurazione JSON."}},"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 richiede la configurazione della chiave API.","1":"Imposta l\'URL base sul tuo endpoint OmniRoute."}},"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 richiede un account Amazon."}}},"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":"Quando usarlo","openToolDocs":"Apri i documenti dello strumento","toolUseCases":{"claude":"Utilizzalo quando desideri flussi di lavoro di pianificazione avanzati e lunghi refactoring multi-file con Claude Code.","codex":"Da utilizzare quando il tuo team è standardizzato sui flussi CLI di OpenAI Codex e sull\'autenticazione basata sul profilo.","droid":"Da utilizzare quando è necessario un agente terminale leggero incentrato sulla codifica rapida e sui cicli di esecuzione dei comandi.","openclaw":"Da utilizzare quando si desidera un agente di codifica in stile Open Claw ma instradato tramite policy OmniRoute.","cline":"Da utilizzare quando si configurano agenti di codifica all\'interno degli editor e si desidera un\'impostazione guidata con i modelli OmniRoute.","kilo":"Da utilizzare quando il flusso di lavoro dipende dai comandi Kilo Code e da modifiche iterative rapide.","cursor":"Da utilizzare durante la codifica in Cursor e sono necessari modelli personalizzati compatibili con OpenAI tramite OmniRoute.","continue":"Da utilizzare quando si esegue Continue negli IDE ed è necessaria la configurazione portatile del provider basato su JSON.","opencode":"Utilizzalo quando preferisci l\'esecuzione dell\'agente nativo del terminale e l\'automazione basata su script tramite OpenCode.","kiro":"Da utilizzare quando si integra Kiro e si controlla l\'instradamento del modello centralmente da OmniRoute.","antigravity":"Da utilizzare quando il traffico Antigravity/Kiro deve essere intercettato tramite MITM e instradato a OmniRoute.","copilot":"Utilizzalo quando desideri un\'esperienza utente in stile chat Copilot applicando al tempo stesso le chiavi OmniRoute e le regole di routing."}},"combos":{"title":"Combinazioni","description":"Crea combinazioni di modelli con routing ponderato e supporto fallback","createCombo":"Crea combinazione","editCombo":"Modifica combinazione","deleteCombo":"Elimina combinazione","noModels":"Nessun modello","noModelsYet":"Nessun modello ancora aggiunto","addModel":"Aggiungi modello","addModelToCombo":"Aggiungi modello alla combinazione","routingStrategy":"Strategia di instradamento","maxRetries":"Numero massimo di tentativi","timeout":"Timeout (ms)","healthcheck":"Controllo dello stato di salute","priority":"Priorità","fallback":"Ricaderci","roundRobin":"Girotondo","random":"Casuale","leastLatency":"Latenza minima","comboName":"Nome combinato","comboNamePlaceholder":"la mia combinazione","deleteConfirm":"Eliminare questa combinazione?","noCombosYet":"Nessuna combo ancora","comboCreated":"Combo creato con successo","comboUpdated":"Combo aggiornato con successo","comboDeleted":"Combinazione eliminata","failedCreate":"Impossibile creare la combinazione","failedUpdate":"Impossibile aggiornare la combinazione","errorCreating":"Errore durante la creazione della combinazione","errorUpdating":"Errore durante l\'aggiornamento della combinazione","errorDeleting":"Errore durante l\'eliminazione della combinazione","testFailed":"Richiesta di prova non riuscita","failedToggle":"Impossibile attivare/disattivare la combo","testResults":"Risultati del test — {name}","resolvedBy":"Risolto da:","more":"+{count} altro","reqs":"req","success":"successo","proxyConfigured":"Proxy configurato","copyComboName":"Copia il nome della combinazione","enableCombo":"Abilita combinazione","disableCombo":"Disabilita combinazione","testCombo":"Combinazione di prova","duplicate":"Duplicato","proxyConfig":"Configurazione proxy","nameRequired":"Il nome è obbligatorio","nameInvalid":"Solo lettere, numeri, -, _, / e . consentito","nameHint":"Lettere, numeri, -, _, / e . consentito","priorityDesc":"Fallback sequenziale: prova prima il modello 1, poi il 2 e così via.","weightedDesc":"Distribuisce il traffico in base alla percentuale di peso con fallback","roundRobinDesc":"Distribuzione circolare: ogni richiesta va al modello successivo a rotazione","randomDesc":"Selezione casuale uniforme, quindi fallback sui modelli rimanenti","leastUsedDesc":"Sceglie il modello con meno richieste, bilanciando il carico nel tempo","costOptimizedDesc":"Percorsi prima verso il modello più economico in base al prezzo","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each model once before reshuffling","models":"Modelli","autoBalance":"Bilanciamento automatico","advancedSettings":"Impostazioni avanzate","retryDelay":"Ritardo tentativi (ms)","concurrencyPerModel":"Concorrenza/modello","queueTimeout":"Timeout coda (ms)","advancedHint":"Lascia vuoto per utilizzare le impostazioni predefinite globali. Questi sovrascrivono le impostazioni per provider.","moveUp":"Vai su","moveDown":"Spostati giù","removeModel":"Rimuovere","saving":"Risparmio...","weighted":"Ponderato","leastUsed":"Meno usato","costOpt":"Opzione costo","strategyGuideTitle":"How to use this strategy","strategyGuideWhen":"When to use","strategyGuideAvoid":"Avoid when","strategyGuideExample":"Example","strategyGuide":{"priority":{"when":"You have one preferred model and only want fallback on failure.","avoid":"You need request distribution across models.","example":"Primary coding model with cheaper backup for outages."},"weighted":{"when":"You need controlled traffic split across models.","avoid":"You cannot maintain accurate weights over time.","example":"80% stable model + 20% canary model rollout."},"round-robin":{"when":"You want predictable and even distribution.","avoid":"Models differ too much in latency or cost.","example":"Same model on multiple accounts to spread throughput."},"random":{"when":"You want simple distribution with minimal setup.","avoid":"You need strict traffic guarantees.","example":"Quick prototyping with equivalent models."},"least-used":{"when":"You want adaptive balancing based on live demand.","avoid":"Traffic is too low to benefit from usage balancing.","example":"Mixed workloads where one model often gets overloaded."},"cost-optimized":{"when":"Cost reduction is your top priority.","avoid":"Pricing data is missing or outdated.","example":"Background or batch jobs where lower cost is preferred."}},"advancedHelp":{"maxRetries":"How many retries are attempted before failing a request.","retryDelay":"Initial wait between retries. Higher values reduce burst pressure.","timeout":"Maximum request duration before aborting.","healthcheck":"Skips unhealthy models/providers from routing decisions.","concurrencyPerModel":"Max simultaneous requests allowed per model in round-robin.","queueTimeout":"How long a request can wait in queue before timing out."},"templatesTitle":"Quick templates","templatesDescription":"Apply a starting profile, then adjust models and config.","templateApply":"Apply template","templateHighAvailability":"High availability","templateHighAvailabilityDesc":"Priority routing with health checks and safe retries.","templateCostSaver":"Cost saver","templateCostSaverDesc":"Cost-optimized routing for budget-first workloads.","templateBalanced":"Balanced load","templateBalancedDesc":"Least-used routing to spread demand over time.","usageGuideHide":"Hide","usageGuideDontShowAgain":"Don\'t show again","usageGuideShow":"Show guide","quickTestTitle":"Combo ready to validate","quickTestDescription":"Run a test now to confirm fallback and latency behavior.","testNow":"Test now","pricingCoverage":"Pricing coverage","pricingCoverageHint":"Cost-optimized works best when all combo models have pricing.","pricingAvailable":"Pricing available","pricingMissing":"No pricing","pricingAvailableShort":"priced","pricingMissingShort":"no-price","warningRoundRobinSingleModel":"Round-robin is most useful with at least 2 models.","warningCostOptimizedPartialPricing":"Only {priced} of {total} models have pricing. Routing may be partially cost-aware.","warningCostOptimizedNoPricing":"No pricing data found for this combo. Cost-optimized may route unexpectedly.","readinessTitle":"Pronto per salvare?","readinessDescription":"Rivedi l\'elenco di controllo prima di creare o aggiornare questa combinazione.","readinessCheckName":"Il nome combinato è valido","readinessCheckModels":"È selezionato almeno un modello","readinessCheckWeights":"Il totale ponderato è 100%","readinessCheckWeightsOptional":"Regola del peso non richiesta","readinessCheckPricing":"I dati sui prezzi sono disponibili","readinessCheckPricingOptional":"Regola di prezzo non richiesta","saveBlockedTitle":"Il salvataggio è bloccato finché non vengono risolti i seguenti elementi:","saveBlockName":"Definire un nome per la combinazione.","saveBlockModels":"Aggiungi almeno un modello.","saveBlockWeighted":"Imposta i pesi al 100% (attuale: {total}%).","saveBlockPricing":"Aggiungi il prezzo per almeno un modello o scegli una strategia diversa.","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":"Costi","budget":"Bilancio","totalCost":"Costo totale","breakdown":"Ripartizione dei costi","noData":"Nessun dato sui costi","byModel":"Per modello","byProvider":"Per fornitore"},"endpoint":{"title":"Endpoint API","available":"Endpoint disponibili","cloudProxy":"Proxy cloud","disableConfirm":"Sei sicuro di voler disabilitare il proxy cloud?","baseUrl":"URL di base","apiKeyLabel":"Chiave API","registeredKeys":"Chiavi registrate","chatCompletions":"Completamenti della chat","responses":"Risposte","listModels":"Elenco modelli","usingCloudProxy":"Utilizzo del proxy cloud","usingLocalServer":"Utilizzo del server locale","machineId":"ID macchina: {id}...","disableCloud":"Disabilita Nuvola","enableCloud":"Abilita nuvola","modelsAcrossEndpoints":"Modelli {models} sugli endpoint {endpoints}","chatDesc":"Chat in streaming e non in streaming con tutti i provider","embeddings":"Incorporamenti","embeddingsDesc":"Incorporamenti di testo per pipeline di ricerca e RAG","imageGeneration":"Generazione di immagini","imageDesc":"Genera immagini da istruzioni di testo","rerank":"Riclassificare","rerankDesc":"Riclassificare i documenti in base alla pertinenza rispetto a una query","audioTranscription":"Trascrizione audio","audioTranscriptionDesc":"Trascrivere file audio in testo (Whisper)","textToSpeech":"Sintesi vocale da testo","textToSpeechDesc":"Converti il testo in parlato dal suono naturale","moderations":"Moderazioni","moderationsDesc":"Moderazione dei contenuti e classificazione della sicurezza","responsesDesc":"API Responses di OpenAI per Codex e workflow agentici avanzati","listModelsDesc":"Elenca tutti i modelli disponibili su tutti i provider connessi","settingsApiDesc":"Leggere e modificare la configurazione di OmniRoute tramite API","settingsApi":"Settings API","categoryCore":"API Principali","categoryMedia":"Media e Multi-Modale","categoryUtility":"Utilità e Gestione","enableCloudTitle":"Abilita proxy cloud","whatYouGet":"Cosa otterrai","cloudBenefitAccess":"Accedi alla tua API da qualsiasi parte del mondo","cloudBenefitShare":"Condividi facilmente l\'endpoint con il tuo team","cloudBenefitPorts":"Non è necessario aprire porte o configurare il firewall","cloudBenefitEdge":"Rete edge globale veloce","cloudSessionNote":"Cloud manterrà la tua sessione di autenticazione per 1 giorno. Se non utilizzato verrà automaticamente cancellato.","cloudUnstableNote":"In alcuni casi, il cloud è attualmente instabile con Claude Code OAuth.","cloudConnected":"Proxy cloud connesso!","connectingToCloud":"Connessione al cloud...","verifyingConnection":"Verifica della connessione...","connecting":"Connessione...","verifying":"Verifica...","connected":"Collegato!","disableCloudTitle":"Disabilita proxy cloud","disableWarning":"Tutte le sessioni di autenticazione verranno eliminate dal cloud.","syncingData":"Sincronizzazione dei dati più recenti...","disablingCloud":"Disabilitazione del cloud...","syncing":"Sincronizzazione...","disabling":"Disabilitazione...","cloudConnectedVerified":"Cloud Proxy connesso e verificato!","connectedVerificationPending":"Connesso: verifica in sospeso","connectedVerificationPendingWithError":"Connesso: verifica in sospeso: {error}","cloudDisabledSuccess":"Cloud disabilitato correttamente","syncedSuccess":"Sincronizzazione riuscita","failedDisable":"Impossibile disattivare il cloud","failedEnable":"Impossibile abilitare il cloud","cloudRequestTimeout":"Timeout della richiesta cloud","cloudRequestFailed":"Richiesta cloud non riuscita","cloudWorkerUnreachable":"Impossibile raggiungere il lavoratore cloud. Assicurati che il servizio cloud sia in esecuzione (npm run dev in /cloud).","connectionFailed":"Connessione non riuscita","syncFailed":"Impossibile sincronizzare i dati cloud","providerModelsTitle":"{provider} — Modelli","noModelsForProvider":"Nessun modello disponibile per questo fornitore.","chat":"Chiacchierata","embedding":"Incorporamento","image":"Immagine","custom":"costume","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Integration Surface","sectionDescription":"OpenAI-compatible APIs and operational protocol endpoints","tabApis":"OpenAI-compatible APIs","tabProtocols":"Protocols","tabsAria":"Endpoint sections","protocolsTitle":"Protocols","protocolsDescription":"MCP and A2A are first-class endpoints with dedicated observability and controls.","mcpCardTitle":"MCP Server","mcpCardDescription":"Model Context Protocol over stdio","a2aCardTitle":"A2A Server","a2aCardDescription":"Agent2Agent JSON-RPC endpoint","protocolToolsLabel":"Tools","protocolTasksLabel":"Tasks","protocolActiveStreamsLabel":"Active streams","protocolLastActivity":"Last activity","quickStart":"Quick Start","openMcpDashboard":"Open MCP management","openA2aDashboard":"Open A2A management","mcpQuickStartTitle":"MCP Quick Start","mcpQuickStartStep1":"Run the MCP server via `omniroute --mcp`.","mcpQuickStartStep2":"Configure your MCP client to connect over stdio transport.","mcpQuickStartStep3":"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":"Salute","ok":"OK","totalTasks":"Compiti totali","activeStreams":"Active streams","lastTask":"Ultimo compito","taskStateOverview":"Panoramica dello stato dell\'attività","state":{"submitted":"presentato","working":"lavorando","completed":"completato","failed":"failed","cancelled":"annullato"},"agentCard":"Carta dell\'agente","version":"Versione","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":"Salute del sistema","description":"Monitoraggio in tempo reale della tua istanza OmniRoute","healthy":"Salutare","degraded":"Degradato","down":"Giù","uptime":"Tempo di attività","memory":"Memoria","memoryRss":"Memoria (RSS)","heap":"Mucchio","cpu":"processore","database":"Banca dati","version":"Versione","lastCheck":"Ultimo controllo","providerHealth":"Salute del fornitore","systemMetrics":"Metriche di sistema","tokenHealth":"Gettone di salute","refreshAll":"Aggiorna tutto","checkNow":"Controlla ora","loadingHealth":"Caricamento dati sanitari...","failedToLoad":"Impossibile caricare i dati sanitari: {error}","retry":"Riprova","allOperational":"Tutti i sistemi operativi","issuesDetected":"Rilevati problemi di sistema","updatedAt":"Aggiornato {time}","latency":"Latenza","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Richieste totali","noDataYet":"Nessun dato ancora","promptCache":"Cache dei suggerimenti","entries":"Voci","hitRate":"Tasso di successo","hitsMisses":"Colpi / Mancati","signatureCache":"Cache delle firme","signatureDefaults":"Predefiniti","signatureTool":"Attrezzo","signatureFamily":"Famiglia","signatureSession":"Sessione","recovering":"Recupero","noCBData":"Nessun dato disponibile sull\'interruttore automatico. Fai prima alcune richieste.","providerHealthStatusAria":"Stato di salute del fornitore","issuesLabel":"Problemi rilevati","operational":"Operativo","providers":"Fornitori","healthyCount":"{count} sano","nodeVersion":"Nodo {version}","failures":"{count} errore","failuresPlural":"{count} errori","lastFailure":"Scorso","rateLimitStatus":"Stato del limite di velocità","activeLimiters":"{count} limitatore attivo","activeLimitersPlural":"{count} limitatori attivi","queued":"In coda","queuedCount":"{count} in coda","running":"corsa","runningCount":"{count} in esecuzione","ok":"OK","activeLockouts":"Blocchi attivi","resetConfirm":"Ripristinare tutti gli interruttori automatici allo stato integro? Ciò eliminerà tutti i conteggi degli errori e ripristinerà tutti i provider allo stato operativo.","resetAllTitle":"Ripristinare tutti gli interruttori automatici allo stato integro","resetting":"Reimpostazione...","resetAll":"Reimposta tutto","until":"Fino al {time}","activeProviders":"{count} active","monitoredProviders":"{count} monitored","configuredProvidersLabel":"Configurato nel dashboard","configuredProvidersHint":"Provider con credenziali salvate in /dashboard/providers, indipendentemente dallo stato di runtime.","activeProvidersHint":"Provider configurati attualmente abilitati per le richieste di instradamento.","monitoredProvidersHint":"Fornitori attualmente monitorati dai monitoraggi dello stato degli interruttori automatici."},"limits":{"title":"Limiti e quote","rateLimit":"Limite di velocità","remaining":"Rimanente","requestsPerMinute":"Richieste/min","tokensPerMinute":"Gettoni/min","dailyLimit":"Limite giornaliero"},"logs":{"title":"Registri","requestLogs":"Richiedi registri","proxyLogs":"Registri proxy","auditLog":"Registro di controllo","console":"Consolle","auditLogDesc":"Azioni amministrative ed eventi di sicurezza","loading":"Caricamento...","refresh":"Aggiorna","filterByAction":"Filtra per azione...","filterByActor":"Filtra per attore...","filterEntriesAria":"Filtra le voci del registro di controllo","filterByActionTypeAria":"Filtra per tipo di azione","filterByActorAria":"Filtra per attore","refreshAuditLogAria":"Aggiorna il registro di controllo","tableAria":"Voci del registro di controllo","failedFetchAuditLog":"Impossibile recuperare il registro di controllo","showing":"Visualizzazione delle voci {count} (offset {offset})","search":"Ricerca","timestamp":"Timestamp","action":"Azione","actor":"Attore","target":"Bersaglio","details":"Dettagli","ipAddress":"Indirizzo IP","notAvailable":"—","noEntries":"Nessuna voce del registro di controllo trovata","previous":"Precedente","next":"Prossimo"},"onboarding":{"welcome":"Benvenuto","security":"Sicurezza","test":"Test","ready":"Pronto!","setPassword":"Imposta password","addProvider":"Aggiungi il tuo primo fornitore","getStarted":"Inizia","skip":"Saltare","skipWizard":"Salta completamente la procedura guidata","skipPassword":"Salta l\'impostazione della password","skipAndContinue":"Salta e continua","passwordLabel":"Password","confirmPassword":"Conferma password","enterPassword":"Inserisci la password","confirmPasswordPlaceholder":"Conferma password","passwordsMismatch":"Le password non corrispondono","setupComplete":"Configurazione completata!","goToDashboard":"Vai alla dashboard →","welcomeDesc":"OmniRoute è il tuo proxy API AI locale. Indirizza le richieste a più fornitori di intelligenza artificiale con bilanciamento del carico, failover e monitoraggio dell\'utilizzo.","multiProvider":"Multi-provider","usageTracking":"Monitoraggio dell\'utilizzo","apiKeyMgmt":"Gestione chiave API","securityDesc":"Imposta una password per proteggere la tua dashboard o salta per ora.","providerDesc":"Connetti il tuo primo fornitore di intelligenza artificiale. Puoi aggiungerne altri in seguito.","apiKeyRequired":"Chiave API (richiesto)","customUrlOptional":"URL personalizzato (facoltativo)","testDesc":"Verifichiamo che la connessione del tuo provider funzioni.","runTest":"Esegui il test di connessione","testingConnection":"Test della connessione...","connectionSuccessful":"Connessione riuscita! Il tuo fornitore è pronto.","noProviderFound":"Nessun fornitore trovato. Puoi aggiungerne uno dalla dashboard in un secondo momento.","testFailed":"Il test è fallito, ma puoi configurarlo in seguito.","couldNotTest":"Impossibile eseguire il test in questo momento. Puoi testare dalla dashboard.","doneDesc":"È tutto pronto! La tua istanza OmniRoute è configurata e pronta per eseguire il proxy delle richieste AI.","yourEndpoint":"Il tuo punto finale:","continue":"Continuare","retry":"Riprova","failedSetPassword":"Impossibile impostare la password. Riprova.","failedAddProvider":"Impossibile aggiungere il fornitore. Riprova.","connectionError":"Errore di connessione. Per favore riprova.","provider":"Fornitore"},"providers":{"title":"Fornitori","addProvider":"Aggiungi fornitore","editProvider":"Modifica fornitore","deleteProvider":"Elimina fornitore","noProviders":"Nessun provider configurato","modelAvailability":"Disponibilità del modello","accounts":"Conti","newAccount":"Nuovo conto","deleteConfirm":"Sei sicuro di voler eliminare questo fornitore?","testing":"Prova...","testConnection":"Prova connessione","testSuccess":"Connessione riuscita","testFailed":"Connessione non riuscita","available":"Disponibile","cooldown":"Raffreddare","unavailable":"Non disponibile","unknown":"Sconosciuto","oauthLabel":"OAuth","compatibleLabel":"Compatibile","chat":"Chiacchierata","responses":"Risposte","messages":"Messaggi","oauthProviders":"Provider OAuth","freeProviders":"Fornitori gratuiti","apiKeyProviders":"Fornitori di chiavi API","compatibleProviders":"Fornitori compatibili con chiave API","testAll":"Prova tutto","testAllOAuth":"Testa tutte le connessioni OAuth","testAllFree":"Testa tutte le connessioni gratuite","testAllApiKey":"Testa tutte le connessioni della chiave API","testAllCompatible":"Testare tutte le connessioni compatibili","connected":"{count} Connesso","errorCount":"{count} Errore ({code})","errorCountNoCode":"{count} Errore","noConnections":"Nessuna connessione","disabled":"Disabilitato","enableProvider":"Abilita fornitore","disableProvider":"Disabilita fornitore","testResults":"Risultati dei test","noCompatibleYet":"Nessun fornitore compatibile ancora aggiunto","compatibleHint":"Utilizza i pulsanti qui sopra per aggiungere endpoint compatibili con OpenAI o Anthropic","addOpenAICompatible":"Aggiungi compatibile con OpenAI","addAnthropicCompatible":"Aggiungi compatibilità antropica","addNewProvider":"Aggiungi nuovo fornitore","backToProviders":"Torniamo ai fornitori","configureNewProvider":"Configura un nuovo provider AI da utilizzare con le tue applicazioni.","providerLabel":"Fornitore","selectProvider":"Seleziona un fornitore","selectedProvider":"Fornitore selezionato","authMethod":"Metodo di autenticazione","apiKeyLabel":"Chiave API","apiKeyRequired":"È richiesta la chiave API","selectProviderRequired":"Seleziona un fornitore","enterApiKey":"Inserisci la tua chiave API","apiKeySecure":"La tua chiave API verrà crittografata e archiviata in modo sicuro.","oauth2Connect":"Connettiti con OAuth2","oauth2Label":"OAuth2","oauth2Desc":"Connetti il tuo account utilizzando l\'autenticazione OAuth2.","displayName":"Nome da visualizzare","displayNamePlaceholder":"ad esempio, API di produzione, ambiente di sviluppo","displayNameHint":"Opzionale. Un nome descrittivo per identificare questa configurazione.","active":"Attivo","activeDescription":"Abilita questo provider per l\'utilizzo nelle tue applicazioni","cancel":"Cancellare","createProvider":"Crea fornitore","failedCreate":"Impossibile creare il fornitore","errorOccurred":"Si è verificato un errore. Per favore riprova.","modelStatus":"Stato del modello","allModelsOperational":"Tutti i modelli operativi","modelsWithIssues":"{count} modelli con problemi","allModelsNormal":"Tutti i modelli rispondono normalmente.","cooldownCleared":"Recupero cancellato per {model}","failedClearCooldown":"Impossibile cancellare il tempo di recupero","loadingAvailability":"Caricamento disponibilità del modello...","clearCooldown":"Chiaro","clearing":"Cancellazione...","until":"Fino al {time}","providerTestFailed":"Il test del fornitore è fallito","modeTest":"{mode} Prova","passedCount":"{count} superato","failedCount":"{count} non riuscito","testedCount":"{count} testato","millisecondsAbbr":"{value}ms","okShort":"OK","errorShort":"ERRORE","noActiveConnectionsInGroup":"Nessuna connessione attiva trovata per questo gruppo.","allTestsPassed":"Tutti i test {total} sono stati superati","testSummary":"{passed}/{total} superato, {failed} fallito","nameLabel":"Nome","prefixLabel":"Prefisso","baseUrlLabel":"URL di base","apiTypeLabel":"Tipo API","prefixHint":"Necessario. Prefisso univoco per i nomi dei modelli.","nameHint":"Necessario. Un\'etichetta amichevole per questo nodo.","baseUrlHint":"Necessario. URL di base dell\'API del provider.","anthropicPrefixPlaceholder":"ac-prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Convalida connessione","validating":"Convalida...","connectionValid":"La connessione è valida!","connectionFailed":"Connessione non riuscita. Controlla l\'URL e la chiave.","testKeyLabel":"Testare la chiave API","testKeyPlaceholder":"sk-... (solo per la convalida)","providerNotFound":"Fornitore non trovato","deleteConnectionConfirm":"Eliminare questa connessione?","failedSetAlias":"Impossibile impostare l\'alias","failedSaveConnection":"Impossibile salvare la connessione","failedSaveConnectionRetry":"Impossibile salvare la connessione. Per favore riprova.","failedRetestConnection":"Impossibile ripetere il test della connessione","deleteCompatibleNodeConfirm":"Eliminare questo {type} nodo compatibile?","anthropicCompatibleDetails":"Dettagli compatibilità antropica","openaiCompatibleDetails":"Dettagli compatibili con OpenAI","messagesApi":"API dei messaggi","responsesApi":"API di risposta","chatCompletions":"Completamenti della chat","importingModels":"Importazione...","importFromModels":"Importa da /modelli","clearAllModels":"Cancella tutti i modelli","clearAllModelsConfirm":"Sei sicuro di voler rimuovere tutti i modelli per questo provider?","clearAllModelsSuccess":"Tutti i modelli cancellati","clearAllModelsFailed":"Impossibile cancellare i modelli","addConnectionToImport":"Aggiungi una connessione per abilitare l\'importazione.","noModelsConfigured":"Nessun modello configurato","connectionCount":"{count} connessione/i","fetchingModels":"Recupero dei modelli disponibili...","failedFetchModels":"Impossibile recuperare i modelli","noModelsFound":"Nessun modello trovato","importFailed":"Importazione non riuscita","noNewModelsAdded":"Non sono stati aggiunti nuovi modelli.","adding":"Aggiunta...","importingModelsTitle":"Importazione di modelli","copyModel":"Copia modello","removeModel":"Rimuovi il modello","rateLimitProtected":"Protetto","rateLimitUnprotected":"Non protetto","enableRateLimitProtection":"Fare clic per abilitare la protezione del limite di velocità","disableRateLimitProtection":"Fare clic per disattivare la protezione del limite di velocità","productionKey":"Chiave di produzione","enterNewApiKey":"Inserisci la nuova chiave API","optional":"Opzionale","anthropicCompatibleName":"Compatibile antropico","openaiCompatibleName":"Compatibile con OpenAI","failedImportModels":"Impossibile importare i modelli","noModelsReturnedFromEndpoint":"Nessun modello restituito dall\'endpoint /models.","importingModelsProgress":"Importazione di {current} di modelli {total}...","foundModelsStartingImport":"Trovati modelli {count}. Avvio dell\'importazione...","importingModelById":"Importazione di {modelId}...","importSuccessCount":"Importazione di {count, plural, one {# model} other {# models}} riuscita!","noNewModelsAddedExisting":"Non sono stati aggiunti nuovi modelli (esistono già tutti).","importDoneCount":"✓ Fatto! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Si è verificato un errore imprevisto","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"messaggi","responsesPath":"risposte","chatCompletionsPath":"chat/completamenti","add":"Aggiungere","edit":"Modificare","delete":"Eliminare","anthropic":"Antropico","openai":"OpenAI","singleConnectionPerCompatible":"È consentita una sola connessione per nodo compatibile. Aggiungi un altro nodo se hai bisogno di più connessioni.","connections":"Connessioni","providerProxyTitleConfigured":"Proxy del fornitore: {host}","configured":"configurato","providerProxyConfigureHint":"Configura il proxy per tutte le connessioni di questo provider","providerProxy":"Procura del fornitore","noConnectionsYet":"Nessuna connessione ancora","addFirstConnectionHint":"Aggiungi la tua prima connessione per iniziare","addConnection":"Aggiungi connessione","availableModels":"Modelli disponibili","pageAutoRefresh":"La pagina si aggiornerà automaticamente...","statusDisabled":"disabilitato","statusConnected":"collegato","statusRuntimeIssue":"problema di esecuzione","statusAuthFailed":"autenticazione non riuscita","statusRateLimited":"tariffa limitata","statusNetworkIssue":"problema di rete","statusTestUnsupported":"test non supportato","statusUnavailable":"non disponibile","statusFailed":"fallito","statusError":"errore","oauthAccount":"Account OAuth","errorTypeRuntime":"Runtime locale","errorTypeUpstreamAuth":"Aut. a monte","errorTypeMissingCredential":"Credenziale mancante","errorTypeRefreshFailed":"Aggiornamento non riuscito","errorTypeTokenExpired":"Il gettone è scaduto","errorTypeRateLimited":"Tariffa limitata","errorTypeUpstreamUnavailable":"A monte non disponibile","errorTypeNetworkError":"Errore di rete","errorTypeTestUnsupported":"Test non supportato","errorTypeUpstreamError":"Errore a monte","proxySourceGlobal":"Globale","proxySourceProvider":"Fornitore","proxySourceKey":"Chiave","proxyConfiguredBySource":"Proxy ({source}): {host}","autoPriority":"Automatico: {priority}","proxy":"Procura","retestAuthentication":"Ritestare l\'autenticazione","retest":"Ripetere il test","disableConnection":"Disabilita connessione","enableConnection":"Abilita connessione","reauthenticateConnection":"Autenticare nuovamente questa connessione","proxyConfig":"Configurazione proxy","aliasExistsAlert":"L\'alias \\"{alias}\\" esiste già. Utilizza un modello diverso o modifica l\'alias esistente.","openRouterAnyModelHint":"OpenRouter supporta qualsiasi modello. Aggiungi modelli e crea alias per un accesso rapido.","modelIdFromOpenRouter":"ID modello (da OpenRouter)","openRouterModelPlaceholder":"antropico/claude-3-opus","customModels":"Modelli personalizzati","customModelsHint":"Aggiungi ID modello non presenti nell\'elenco predefinito. Questi saranno disponibili per il routing.","modelId":"ID modello","customModelPlaceholder":"per esempio. gpt-4.5-turbo","loading":"Caricamento...","removeCustomModel":"Rimuovi il modello personalizzato","noCustomModels":"Nessun modello personalizzato ancora aggiunto.","allSuggestedAliasesExist":"Tutti gli alias suggeriti esistono già. Scegli un modello diverso o rimuovi gli alias in conflitto.","failedSaveCustomModel":"Impossibile salvare il modello personalizzato","modelAddedSuccess":"Il modello {modelId} è stato aggiunto correttamente","failedAddModelTryAgain":"Impossibile aggiungere il modello. Per favore riprova.","failedSaveImportedModel":"Impossibile salvare il modello importato nel database personalizzato","failedImportModelsTryAgain":"Impossibile importare i modelli. Per favore riprova.","failedRemoveModelFromDatabase":"Impossibile rimuovere il modello dal database","modelRemovedSuccess":"Modello rimosso con successo","failedDeleteModelTryAgain":"Impossibile eliminare il modello. Per favore riprova.","compatibleModelsDescription":"Aggiungi manualmente modelli compatibili con {type} o importali dall\'endpoint /models.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"Convalida della chiave API non riuscita. Controlla la chiave e riprova.","addProviderApiKeyTitle":"Aggiungi la chiave API {provider}","checking":"Controllo...","check":"Controllo","valid":"Valido","invalid":"Non valido","creating":"Creazione...","validationChecksAnthropicCompatible":"La convalida controlla {provider} verificando la chiave API.","validationChecksOpenAiCompatible":"La convalida controlla {provider} tramite /models sull\'URL di base.","priorityLabel":"Priorità","saving":"Risparmio...","save":"Salva","editConnection":"Modifica connessione","accountName":"Nome utente","email":"E-mail","healthCheckMinutes":"Controllo dello stato (min)","healthCheckHint":"Intervallo di aggiornamento del token proattivo. 0 = disabilitato.","groupLabel":"Environment","groupPlaceholder":"e.g. eKaizen, Personal","failedTestConnection":"Impossibile testare la connessione","failed":"Fallito","leaveBlankKeepCurrentApiKey":"Lascia vuoto per mantenere la chiave API corrente.","editCompatibleTitle":"Modifica {type} Compatibile","compatibleBaseUrlHint":"Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.","apiKeyForCheck":"Chiave API (per controllo)","compatibleProdPlaceholder":"{type} Compatibile (prodotto)","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":"Sincronizzazione automatica","autoSyncTooltip":"Aggiorna automaticamente l\'elenco dei modelli ogni 24 ore (configurabile tramite MODEL_SYNC_INTERVAL_HOURS)","autoSyncEnabled":"Sincronizzazione automatica abilitata — i modelli verranno aggiornati periodicamente","autoSyncDisabled":"Sincronizzazione automatica disabilitata","autoSyncToggleFailed":"Impossibile attivare la sincronizzazione automatica","allModelsAlreadyImported":"Tutti i modelli sono già importati","noNewModelsToImport":"Nessun nuovo modello da importare — tutti i modelli sono già nel registro o nell\'elenco dei modelli personalizzati","skippingExistingModels":"Salto {count} modelli esistenti"},"settings":{"title":"Impostazioni","general":"Generale","security":"Sicurezza","appearance":"Aspetto","routing":"Instradamento","cache":"Cache","resilience":"Resilienza","systemPrompt":"Richiesta di sistema","thinkingBudget":"Pensare al bilancio","proxy":"Procura","pricing":"Prezzi","storage":"Magazzinaggio","policies":"Politiche","ipFilter":"Filtro IP","comboDefaults":"Impostazioni predefinite combinate","fallbackChains":"Catene di ripiego","changePassword":"Cambiare la password","enablePassword":"Abilita password","darkMode":"Modalità oscura","lightMode":"Modalità luce","systemTheme":"Tema del sistema","enableCache":"Abilita cache","cacheTTL":"TTL della cache","maxCacheSize":"Dimensione massima della cache","clearCache":"Cancella cache","cacheHits":"Riscontri nella cache","cacheMisses":"Mancati cache","hitRate":"Tasso di successo","cacheEntries":"Voci della cache","circuitBreaker":"Interruttore automatico","retryPolicy":"Riprova la policy","maxRetries":"Numero massimo di tentativi","retryDelay":"Ritardo riprova","timeoutMs":"Timeout (ms)","enableSystemPrompt":"Abilita richiesta di sistema","systemPromptText":"Testo della richiesta di sistema","enableThinking":"Abilita il pensiero","maxThinkingTokens":"Gettoni pensiero massimo","enableProxy":"Abilita proxy","proxyUrl":"URL proxy","pricingRates":"Formato delle tariffe dei prezzi","currentPricing":"Panoramica dei prezzi attuali","loadingPricing":"Caricamento dati sui prezzi...","noPricing":"Nessun dato sui prezzi disponibile","input":"Ingresso","output":"Produzione","cached":"Memorizzato nella cache","reasoning":"Ragionamento","cacheCreation":"Creazione della cache","customPricing":"Prezzi personalizzati","databaseSize":"Dimensioni del database","backupDb":"Backup della banca dati","restoreDb":"Ripristina database","exportData":"Esporta dati","importData":"Importa dati","clearData":"Cancella tutti i dati","clearDataConfirm":"Ciò eliminerà definitivamente tutti i dati. Sei sicuro?","enableRequestLogs":"Abilita i registri delle richieste","logRetention":"Conservazione del registro","ipWhitelist":"Lista bianca IP","ipBlacklist":"Lista nera IP","addIP":"Aggiungi IP","savedSuccessfully":"Impostazioni salvate con successo","ai":"AI","advanced":"Avanzato","localMode":"Modalità locale: tutti i dati archiviati sul computer","settingsSectionsAria":"Sezioni Impostazioni","switchThemes":"Passa dal tema chiaro a quello scuro e viceversa","themeSelectionAria":"Selezione del tema","themeLight":"Leggero","themeDark":"Buio","themeSystem":"Sistema","hideHealthLogs":"Nascondi i registri di controllo dello stato","hideHealthLogsDesc":"Quando è attivo, elimina i messaggi [HealthCheck] nella console del server","themeAccent":"Colore del tema","themeAccentDesc":"Scegli un colore predefinito o crea il tuo tema con un solo colore","themeCreate":"Crea tema","themeCustom":"Tema personalizzato","themeBlue":"Blu","themeRed":"Rosso","themeGreen":"Verde","themeViolet":"Viola","themeOrange":"Arancione","themeCyan":"Ciano","promptCache":"Cache dei suggerimenti","flushCache":"Svuota cache","flushing":"Lavaggio…","size":"Misurare","hits":"Colpi","evictions":"Sfratti","loadingCacheStats":"Caricamento delle statistiche della cache…","globalProxy":"Procura globale","globalProxyDesc":"Configura un proxy in uscita globale per tutte le chiamate API. Singoli provider, combinazioni e chiavi possono sovrascrivere questo aspetto.","noGlobalProxy":"Nessun proxy globale configurato","globalLabel":"Globale","configure":"Configura","globalSystemPrompt":"Prompt del sistema globale","systemPromptDesc":"Inserito in tutte le richieste a livello proxy","saved":"Salvato","systemPromptPlaceholder":"Inserisci la richiesta di sistema per l\'inserimento in tutte le richieste...","systemPromptHint":"Questo prompt viene anteposto al messaggio di sistema di ogni richiesta. Utilizzare per istruzioni globali, linee guida sulla sicurezza o regole di formattazione della risposta.","chars":"{count} caratteri","thinkingBudgetTitle":"Pensare al bilancio","thinkingBudgetDesc":"Controlla l\'utilizzo dei token di ragionamento dell\'intelligenza artificiale in tutte le richieste","passthrough":"Passante","passthroughDesc":"Nessun cambiamento: il cliente controlla il budget","auto":"Auto","autoDesc":"Elimina ogni configurazione pensante: lascia decidere al provider","custom":"Costume","customDesc":"Imposta un budget token fisso per tutte le richieste","adaptive":"Adattivo","adaptiveDesc":"Ridimensiona il budget in base alla complessità della richiesta","effortNone":"Nessuno (0 token)","effortLow":"Basso (token da 1.000)","effortMedium":"Medio (token da 10.000)","effortHigh":"Alto (token 128K)","tokenBudget":"Bilancio simbolico","tokens":"gettoni","baseEffortLevel":"Livello di impegno base","adaptiveHint":"La modalità adattiva si adatta a questo livello di base in base al conteggio dei messaggi, all\'utilizzo dello strumento e alla lunghezza dei prompt.","requireLogin":"Richiedi l\'accesso","requireLoginDesc":"Quando è attivo, il dashboard richiede la password. Quando OFF, accedi senza login.","currentPassword":"password attuale","enterCurrentPassword":"Inserisci la password attuale","newPassword":"Nuova parola d\'ordine","enterNewPassword":"Inserisci la nuova password","confirmPassword":"Conferma nuova password","confirmPasswordPlaceholder":"Conferma la nuova password","passwordsNoMatch":"Le password non corrispondono","passwordUpdated":"Password aggiornata con successo","failedUpdatePassword":"Impossibile aggiornare la password","errorOccurred":"Si è verificato un errore","updatePassword":"Aggiorna password","setPassword":"Imposta password","apiEndpointProtection":"Protezione endpoint API","requireAuthModels":"Richiedi la chiave API per /models","requireAuthModelsDesc":"Quando è attivo, l\'endpoint /v1/models restituisce 404 per le richieste non autenticate. Impedisce il rilevamento del modello da parte di utenti non autorizzati.","blockedProviders":"Provider bloccati","blockedProvidersDesc":"Nascondi provider specifici dalla risposta /v1/models. I fornitori bloccati non verranno visualizzati negli elenchi dei modelli.","providersBlocked":"{count} provider bloccati da /models","blockProviderTitle":"Blocca {provider}","unblockProviderTitle":"Sblocca {provider}","routingStrategy":"Strategia di instradamento","fillFirst":"Riempi prima","fillFirstDesc":"Utilizza gli account in ordine di priorità","roundRobin":"Girotondo","roundRobinDesc":"Scorri tutti gli account","p2c":"P2C","p2cDesc":"Scegline 2 a caso, usa quello più sano","random":"Casuale","randomDesc":"Account casuale per ogni richiesta","leastUsed":"Meno usato","leastUsedDesc":"Scegli l\'account utilizzato meno di recente","costOpt":"Opzione costo","costOptDesc":"Preferisci il conto più economico disponibile","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each account once before reshuffling","stickyLimit":"Limite appiccicoso","stickyLimitDesc":"Chiamate per account prima del cambio","modelAliases":"Alias del modello","modelAliasesTitle":"Alias dei Modelli","modelAliasesDesc":"Modelli di caratteri jolly per rimappare i nomi dei modelli • Utilizzare * e ?","addCustomAlias":"Aggiungi Alias Personalizzato","deprecatedModelId":"ID modello deprecato","newModelId":"Nuovo ID modello","customAliases":"Alias Personalizzati","builtInAliases":"Alias Integrati","backgroundDegradationTitle":"Degradazione Attività in Background","backgroundDegradationDesc":"Rileva automaticamente le attività in background (titoli, riassunti) e reindirizza a modelli più economici","enableDegradation":"Abilita Degradazione in Background","enableDegradationHint":"Quando abilitato, le attività in background come generazione titoli e riassunti vengono reindirizzate automaticamente a modelli più economici","tasksDetected":"Attività rilevate","degradationMap":"Mappa di Degradazione dei Modelli","premiumModel":"Modello premium","cheapModel":"Modello economico","detectionPatterns":"Pattern di Rilevamento","newPattern":"es: \\"genera un titolo\\"","aliasPatternPlaceholder":"claude-sonetto-*","aliasTargetPlaceholder":"claude-sonetto-4-20250514","pattern":"Modello","targetModel":"Modello obiettivo","add":"+ Aggiungi","session":"Sessione","sessionDetailsAria":"Dettagli della sessione","status":"Stato","authenticated":"Autenticato","guest":"Ospite","loginTime":"Orario di accesso","sessionAge":"Età della sessione","browser":"Navigatore","clearLocalData":"Cancella dati locali","logout":"Esci","clearLocalDataConfirm":"Cancellare tutti i dati locali? Ciò ripristinerà le tue preferenze.","unknown":"Sconosciuto","systemActor":"sistema","ipAccessControl":"Controllo dell\'accesso IP","ipAccessControlDesc":"Blocca o consenti indirizzi IP specifici","ipModeDisabled":"Disabilitato","ipModeBlacklist":"Lista nera","ipModeWhitelist":"Lista bianca","ipModeWhitelistPriority":"Priorità WL","addIpAddress":"Aggiungi indirizzo IP","ipAddressPlaceholder":"192.168.1.0/24 o 10.0.*.*","block":"+ Blocca","allow":"+ Consenti","blocked":"Bloccato ({count})","allowed":"Consentito ({count})","temporaryBans":"Divieti temporanei ({count})","minLeft":"{min}m rimasti","auditLog":"Registro di controllo","searchAuditLogs":"Cerca nei log di controllo...","failedLoadAuditLog":"Impossibile caricare il registro di controllo","noAuditEvents":"Nessun evento di controllo trovato","action":"Azione","actor":"Attore","details":"Dettagli","time":"Tempo","fallbackChainsTitle":"Catene di ripiego","fallbackChainsDesc":"Definire l\'ordine di fallback del fornitore per modello","addChain":"+ Aggiungi catena","modelName":"Nome del modello","modelNamePlaceholder":"claude-sonetto-4-20250514","providersCommaSeparated":"Fornitori (separati da virgole, in ordine di priorità)","providersCommaSeparatedPlaceholder":"antropico, openai, gemelli","createChain":"Crea catena","noFallbackChains":"Nessuna catena di fallback","noFallbackChainsDesc":"Creare una catena per definire l\'ordine di fallback del provider per un modello.","loadingFallbackChains":"Caricamento catene di fallback...","deleteChainConfirm":"Eliminare la catena di fallback per \\"{model}\\"?","chainCreated":"Catena creata per {model}","chainDeleted":"Catena eliminata per {model}","failedCreateChain":"Impossibile creare la catena","failedDeleteChain":"Impossibile eliminare la catena","deleteChain":"Elimina catena","fillModelAndProviders":"Inserisci il nome del modello e i fornitori","addAtLeastOneProvider":"Aggiungi almeno un fornitore","comboDefaultsTitle":"Impostazioni predefinite combinate","globalComboConfig":"Configurazione combinata globale","defaultStrategy":"Strategia predefinita","defaultStrategyDesc":"Applicato a nuove combo senza strategia esplicita","comboStrategyAria":"Strategia combinata","priority":"Priorità","weighted":"Ponderato","maxRetriesLabel":"Numero massimo di tentativi","retryDelayLabel":"Ritardo tentativi (ms)","timeoutLabel":"Timeout (ms)","healthCheck":"Controllo dello stato di salute","healthCheckDesc":"Verifica preventiva la disponibilità del fornitore","trackMetrics":"Tieni traccia delle metriche","trackMetricsDesc":"Registra i parametri delle richieste per combo","providerOverrides":"Il fornitore esegue l\'override","providerOverridesDesc":"Sostituisci timeout e tentativi per provider. Le impostazioni del provider sovrascrivono le impostazioni predefinite globali.","providerMaxRetriesAria":"{provider} numero massimo di tentativi","providerTimeoutAria":"{provider} timeout ms","removeProviderOverrideAria":"Rimuovi la sostituzione {provider}","newProviderNamePlaceholder":"per esempio. google, apri...","newProviderNameAria":"Nuovo nome del fornitore","retries":"riprova","ms":"SM","saveComboDefaults":"Salva impostazioni predefinite combo","maxNestingDepth":"Profondità massima di nidificazione","concurrencyPerModel":"Concorrenza/modello","queueTimeout":"Timeout coda (ms)","providerProfiles":"Profili dei fornitori","providerProfilesDesc":"Impostazioni di resilienza separate per i provider OAuth (basati sulla sessione) e API Key (misurati). I fornitori di OAuth hanno soglie più rigide a causa di limiti di velocità inferiori.","oauthProviders":"Provider OAuth","apiKeyProviders":"Fornitori di chiavi API","transientCooldown":"Recupero temporaneo","rateLimitCooldown":"Recupero del limite di velocità","maxBackoffLevel":"Livello massimo di backoff","cbThreshold":"Soglia CB","cbResetTime":"Tempo di ripristino dell\'interruttore","rateLimiting":"Limitazione della velocità","rateLimitingDesc":"I fornitori di chiavi API sono automaticamente limitati in termini di velocità con impostazioni predefinite sicure. I limiti vengono appresi dalle intestazioni di risposta e si adattano nel tempo.","defaultSafetyNet":"Rete di sicurezza predefinita","rpm":"giri al minuto","minGap":"Divario minimo","maxConcurrent":"Massimo simultaneo","activeLimiters":"Limitatori attivi","noActiveLimiters":"Nessun limitatore di velocità attivo ancora.","reservoir":"Serbatoio","running":"Corsa","queued":"In coda","circuitBreakers":"Interruttori automatici","breakerStateClosed":"Chiuso","breakerStateOpen":"Aprire","breakerStateHalfOpen":"Semiaperto","tripped":"{count} è inciampato","healthy":"{count} sano","resetAll":"Reimposta tutto","noCircuitBreakers":"Nessun interruttore ancora attivo. Vengono creati automaticamente quando le richieste passano attraverso la pipeline combinata.","failures":"{count} errore/i","policiesLocked":"Policy e identificatori bloccati","allOperational":"Tutti i sistemi sono operativi: nessun blocco o interruttore scattato","loadingPolicies":"Caricamento policy...","lockedIdentifiers":"Identificatori bloccati","unlockedIdentifier":"Sbloccato: {identifier}","sinceDate":"dal {date}","forceUnlock":"Sblocco forzato","unlocking":"Sblocco...","failedUnlock":"Impossibile sbloccare","failedLoadWithStatus":"Impossibile caricare: {status}","failedLoadResilience":"Impossibile caricare lo stato di resilienza","saveFailed":"Salvataggio non riuscito","resetFailed":"Reimpostazione non riuscita","loadingResilience":"Caricamento dello stato di resilienza...","retry":"Riprova","systemStorage":"Sistema e archiviazione","allDataLocal":"Tutti i dati archiviati localmente sul tuo computer","databasePath":"Percorso del database","exportDatabase":"Esporta banca dati","exportAll":"Esporta tutto (.tar.gz)","importDatabase":"Importa banca dati","confirmDbImport":"Conferma l\'importazione del database","confirmDbImportDesc":"Questo sostituirà tutti i dati correnti con il contenuto di {file}. Un backup verrà creato automaticamente prima dell\'importazione.","yesImport":"Sì, importa","lastBackup":"Ultimo backup","noBackupYet":"Nessun backup ancora","backupNow":"Esegui il backup ora","backupRestore":"Backup e ripristino","viewBackups":"Visualizza backup","hide":"Nascondere","backupRetentionDesc":"Gli snapshot del database vengono creati automaticamente prima del ripristino e ogni 15 minuti in caso di modifica dei dati. Conservazione: 24 ore su 24 + 30 backup giornalieri con rotazione intelligente.","loadingBackups":"Caricamento dei backup...","noBackupsYet":"Nessun backup ancora disponibile. I backup verranno creati automaticamente quando i dati cambiano.","backupsAvailable":"{count} backup disponibili","refresh":"Aggiorna","confirm":"Confermare?","yes":"SÌ","no":"NO","restore":"Ripristinare","invalidFileType":"Tipo di file non valido. Sono accettati solo file .sqlite.","exportFailed":"Esportazione non riuscita","exportFailedWithError":"Esportazione non riuscita: {error}","fullExportFailedWithError":"Esportazione completa non riuscita: {error}","backupCreated":"Backup creato: {file}","restoreSuccess":"Restaurato! Connessioni {connections}, nodi {nodes}, combo {combos}, chiavi API {apiKeys}.","importSuccess":"Database importato! Connessioni {connections}, nodi {nodes}, combo {combos}, chiavi API {apiKeys}.","justNow":"proprio adesso","minutesAgo":"{count}m fa","hoursAgo":"{count}h fa","daysAgo":"{count}d fa","backupReasonManual":"manuale","backupReasonPreRestore":"pre-ripristino","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Nessuna modifica dall\'ultimo backup","backupFailed":"Backup non riuscito","restoreFailed":"Ripristino non riuscito","importFailed":"Importazione non riuscita","errorDuringRestore":"Si è verificato un errore durante il ripristino","errorDuringImport":"Si è verificato un errore durante l\'importazione","modelPricing":"Prezzi del modello","modelPricingDesc":"Configura le tariffe per modello • Tutte le tariffe in token da $/1 milione","providers":"Fornitori","registry":"Registro","priced":"Prezzo","searchProvidersModels":"Cerca fornitori o modelli...","showAll":"Mostra tutto","noProvidersMatch":"Nessun fornitore corrisponde alla tua ricerca.","howPricingWorks":"Come funzionano i prezzi","cacheWrite":"Scrittura nella cache","unsaved":"non salvato","resetDefaults":"Ripristina le impostazioni predefinite","saveProvider":"Salva fornitore","saving":"Risparmio...","model":"Modello","models":"modelli","moreProviders":"{count} altri fornitori","withPricing":"con i prezzi configurati","policiesCircuitBreakers":"Politiche e interruttori automatici","activeIssuesDetected":"Rilevati problemi attivi","off":"Spento","resetPricingConfirm":"Ripristinare tutti i prezzi per {provider} ai valori predefiniti?","pricingDescInput":"Input: token inviati al modello","pricingDescOutput":"Output: token generati","pricingDescCached":"Memorizzato nella cache: input riutilizzato (~50% della velocità di input)","pricingDescReasoning":"Ragionamento: gettoni pensanti (ricade nell\'Output)","pricingDescCacheWrite":"Scrittura cache: creazione di voci cache (ricade su Input)","pricingDescFormula":"Costo = (input × input_rate) + (output × output_rate) + (cache × cached_rate) per milione di token.","pricingSettingsTitle":"Impostazioni dei prezzi","totalModels":"Modelli totali","active":"Attivo","costCalculation":"Calcolo dei costi","costCalculationDesc":"I costi vengono calcolati in base all\'utilizzo dei token e alle tariffe configurate per ciascun modello.","pricingFormat":"Formato dei prezzi","pricingFormatDesc":"Tutte le tariffe sono in token $/1 milione (dollari per milione di token).","tokenTypes":"Tipi di token","inputTokenDesc":"Token di richiesta standard","outputTokenDesc":"Token di completamento/risposta","cachedTokenDesc":"Token di input memorizzati nella cache (in genere il 50% della velocità di input)","reasoningTokenDesc":"Segnalini ragionamento/pensiero speciali (ripiego al tasso di produzione)","cacheCreationTokenDesc":"Token utilizzati per creare voci nella cache (fallback alla velocità di input)","customPricingNote":"Puoi sostituire i prezzi predefiniti per modelli specifici. Le sostituzioni personalizzate hanno la priorità sui prezzi rilevati automaticamente.","editPricing":"Modifica prezzi","viewFullDetails":"Visualizza i dettagli completi","themeCoral":"Corallo","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":"Guida al percorso avanzata","routingAdvancedGuideHint1":"Utilizza Fill First per una priorità prevedibile, Round Robin per l\'equità e P2C per la resilienza alla latenza.","routingAdvancedGuideHint2":"Se i fornitori variano in termini di qualità/costo, iniziare con Opzione costo per il lavoro in background e Meno utilizzato per un consumo equilibrato.","comboDefaultsGuideTitle":"Come ottimizzare le impostazioni predefinite della combo","comboDefaultsGuideHint1":"Mantenere bassi i tentativi nei flussi a bassa latenza; aumentare il timeout solo per attività di generazione prolungata.","comboDefaultsGuideHint2":"Utilizzare le sostituzioni del provider quando un provider necessita di un comportamento di timeout/riprova diverso rispetto alle impostazioni predefinite globali."},"translator":{"title":"Traduttore","metaTitle":"Parco giochi per traduttori | OmniRoute","metaDescription":"Eseguire il debug, testare e visualizzare le traduzioni del formato API tra fornitori","playgroundTitle":"Parco giochi per traduttori","playground":"Parco giochi","realtime":"Attività di traduzione in tempo reale","chatTester":"Tester della chat","testBench":"Banco di prova","liveMonitor":"Monitoraggio dal vivo","modeDescriptionPlayground":"Incolla qualsiasi corpo della richiesta API e guarda come OmniRoute lo traduce tra i formati del provider (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","modeDescriptionChatTester":"Invia richieste di chat reali tramite OmniRoute e controlla l\'intero percorso di andata e ritorno: input, richiesta tradotta, risposta del fornitore e output tradotto.","modeDescriptionTestBench":"Esegui scenari predefiniti e confronta la compatibilità tra provider e modelli.","modeDescriptionLiveMonitor":"Guarda gli eventi di traduzione in tempo reale mentre le richieste fluiscono attraverso OmniRoute.","modeDescriptionFallback":"Eseguire il debug, testare e visualizzare come OmniRoute traduce le richieste API tra provider.","recentTranslations":"Traduzioni recenti","noTranslations":"Nessuna traduzione ancora","source":"Fonte","target":"Bersaglio","time":"Tempo","model":"Modello","status":"Stato","latency":"Latenza","totalTranslations":"Traduzioni totali","successful":"Riuscito","errors":"Errori","avgLatency":"Latenza media","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"Live: aggiornamento automatico","paused":"In pausa","eventsAppearHint":"Gli eventi di traduzione vengono visualizzati qui mentre le richieste passano attraverso OmniRoute. Utilizza uno di questi metodi per generare eventi:","chatTesterTab":"Scheda Tester chat","testBenchTab":"Scheda Banco di prova","externalApiCalls":"Chiamate API esterne","ideCliIntegrations":"Integrazioni IDE/CLI","inMemoryNote":"Nota: gli eventi vengono archiviati in memoria e ripristinati al riavvio del server.","ok":"OK","errorShort":"ERR","formatConverter":"Convertitore di formato","formatConverterDescription":"Incolla o digita il corpo della richiesta JSON. Il traduttore rileverà automaticamente il formato di origine e lo convertirà nel formato di destinazione. Utilizzalo per eseguire il debug del modo in cui OmniRoute traduce le richieste tra formati (OpenAI ↔ Claude ↔ Gemini ↔ API delle risposte).","input":"Ingresso","output":"Produzione","auto":"Auto","swapFormats":"Scambia formati","translateAction":"Tradurre","clear":"Chiaro","inputPlaceholder":"Incolla qui il corpo della richiesta o seleziona un modello qui sotto...","exampleTemplates":"Modelli di esempio","exampleTemplatesHint":"— Fare clic per caricare","templateLoadHint":"Il modello carica la richiesta nel formato {format}. Cambia il formato di origine per caricare in un formato diverso.","compatibilityTester":"Tester di compatibilità","compatibilityReport":"Rapporto sulla compatibilità","testBenchDescription":"Esegui scenari predefiniti (Chat semplice, Chiamata di strumenti, ecc.) per verificare la compatibilità della traduzione e del provider. Seleziona un formato di origine e un provider di destinazione, quindi esegui tutti i test per visualizzare una percentuale di compatibilità. Usalo per scoprire quali funzionalità funzionano tra i diversi fornitori.","targetProvider":"Fornitore di destinazione","runAllTests":"Esegui tutti i test","runTest":"Esegui prova","reRun":"Rieseguire","running":"Corsa...","passed":"passato","failed":"fallito","passedIconLabel":"✅Superato","chunks":"pezzi","scenarioSimpleChat":"Chat semplice","scenarioToolCalling":"Chiamata dello strumento","scenarioMultiTurn":"Multigiro","scenarioThinking":"Pensiero","scenarioSystemPrompt":"Richiesta di sistema","scenarioStreaming":"Streaming","templateNames":{"simple-chat":"Chat semplice","tool-calling":"Chiamata dello strumento","multi-turn":"Multigiro","thinking":"Pensiero","system-prompt":"Richiesta di sistema","streaming":"Streaming"},"templateDescriptions":{"simple-chat":"Messaggio di testo di base","tool-calling":"Invocazione di funzioni/strumenti","multi-turn":"Conversazione con la storia","thinking":"Pensiero/ragionamento esteso","system-prompt":"Istruzioni di sistema complesse","streaming":"Richiesta di streaming SSE"},"templatePayloads":{"simpleChat":{"system":"Sei un assistente utile.","userGreeting":"Ciao! Come stai oggi?"},"toolCalling":{"userWeather":"Che tempo fa a San Paolo?","toolDescription":"Ottieni il meteo attuale per una località","cityNameDescription":"Nome della città"},"multiTurn":{"system":"Sei un assistente di codifica.","userInitial":"Scrivi una funzione per ordinare un array in Python.","assistantExample":"Ecco una semplice funzione di ordinamento:\\n\\n```pitone\\ndef sort_array(arr):\\n restituire ordinato(arr)\\n```","userFollowUp":"Ora ordinalo in ordine decrescente."},"thinking":{"question":"Qual è la somma dei primi 100 numeri primi?"},"systemPrompt":{"systemInstruction":"Sei un ingegnere informatico senior specializzato in sistemi distribuiti. Rispondi alle domande in modo conciso utilizzando le migliori pratiche del settore. Fornisci sempre esempi di codice quando pertinente. Formatta le tue risposte utilizzando Markdown.","question":"Come si implementa un modello di interruttore automatico?"},"streaming":{"prompt":"Raccontami una breve storia su un robot che impara a dipingere."}},"openaiCompatibleLabel":"Compatibile con OpenAI","anthropicCompatibleLabel":"Compatibile antropico","noTemplateForFormat":"Nessun modello per questo formato","translationFailed":"Traduzione non riuscita: {error}","pipelineDebugger":"Debug della pipeline","translationPipeline":"Pipeline di traduzione","pipelineVisualization":"Visualizzazione della pipeline","pipelineVisualizationHint":"Invia un messaggio per vedere come scorre la tua richiesta attraverso rilevamento → traduzione → chiamata al fornitore.","chatTesterDescription":"Invia messaggi in un formato client specifico e ispeziona ogni passaggio della pipeline di traduzione.","chatTesterFlow":"Richiesta client → Rilevamento formato → OpenAI Intermediate → Formato provider → Risposta","clickStepToInspect":"Fare clic su qualsiasi passaggio per controllare i dati in quella fase.","clientFormat":"Formato cliente","provider":"Fornitore","modelPlaceholder":"Seleziona o digita il nome di un modello...","sendMessageToSeePipeline":"Invia un messaggio per vedere la pipeline di traduzione","chatMessageHintPrefix":"Il tuo messaggio sarà formattato come a","chatMessageHintSuffix":"richiesta, tradotta attraverso la pipeline e inviata al fornitore selezionato.","youWithFormat":"Tu ({format})","assistant":"Assistente","typeMessage":"Digita un messaggio...","send":"Inviare","clientRequest":"Richiesta del cliente","clientRequestDescription":"Il corpo della richiesta così come lo invierebbe il tuo cliente","formatDetected":"Formato rilevato","formatDetectedDescription":"OmniRoute rileva automaticamente il formato API dalla struttura della richiesta","openaiIntermediate":"OpenAI intermedio","openaiIntermediateDescription":"Tutti i formati vengono prima normalizzati nel formato OpenAI (il bridge universale)","providerFormat":"Formato del fornitore","providerFormatDescription":"Il formato OpenAI è tradotto nel formato nativo del provider","providerResponse":"Risposta del fornitore","providerResponseRawDescription":"La risposta non elaborata dall\'API del provider","providerResponseSseDescription":"Il flusso SSE non elaborato dall\'API del provider","unexpectedError":"Si è verificato un errore imprevisto","error":"Errore","errorMessage":"Errore: {message}","requestFailed":"Richiesta non riuscita","noTextExtracted":"(Nessun testo estratto)","liveMonitorDescriptionPrefix":"Mostra gli eventi di traduzione mentre le chiamate API fluiscono attraverso OmniRoute. Gli eventi provengono dal buffer in memoria (si ripristina al riavvio). Utilizzo","liveMonitorDescriptionSuffix":"o chiamate API esterne per generare eventi."},"usage":{"title":"Utilizzo","loggerTab":"Registratore","proxyTab":"Procura","budgetManagement":"Gestione del bilancio","budgetSaved":"Limiti di budget salvati","budgetSaveFailed":"Impossibile salvare il budget","loadingBudgetData":"Caricamento dei dati del budget...","noApiKeysTitle":"Nessuna chiave API","noApiKeysDescription":"Aggiungi prima le chiavi API per impostare i limiti di budget.","apiKey":"Chiave API","todaysSpend":"La spesa di oggi","thisMonth":"Questo mese","setLimits":"Imposta limiti","dailyLimitUsd":"Limite giornaliero (USD)","monthlyLimitUsd":"Limite mensile (USD)","warningThresholdPercent":"Soglia di avviso (%)","dailyLimitPlaceholder":"per esempio. 5.00","monthlyLimitPlaceholder":"per esempio. 50,00","warningThresholdPlaceholder":"80","saveLimits":"Salva limiti","budgetOk":"Budget OK: {remaining} rimanente","budgetExceeded":"Budget superato: le richieste potrebbero essere bloccate","totalRequests":"Richieste totali","noDataYet":"Nessun dato ancora","latency":"Latenza","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","promptCache":"Cache dei suggerimenti","systemHealth":"Salute del sistema","entries":"Voci","activeCount":"{count} attivo","openCircuitBreakersDetected":"Rilevati interruttori automatici aperti","hitRate":"Tasso di successo","hitsMisses":"Colpi / Mancati","circuitBreakers":"Interruttori automatici","lockedIPs":"IP bloccati","lockoutsAutoRefreshHint":"Blocchi del limite di velocità per modello • Aggiornamento automatico 10 secondi","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} rimasto","howItWorks":"Come funziona","howItWorksSubtitle":"Scopri come le valutazioni convalidano le tue risposte LLM","define":"Definire","defineStepDescription":"Crea casi di test con prompt di input e criteri di output previsti utilizzando strategie come contiene, regex o corrispondenza esatta.","run":"Correre","runStepDescription":"Esegui casi di test sugli endpoint LLM tramite OmniRoute. Ogni caso viene inviato come una vera richiesta API.","evaluate":"Valutare","evaluateStepDescription":"Le risposte vengono confrontate con i criteri attesi. Visualizza il superamento/fallimento per ciascun caso con parametri di latenza e feedback dettagliato.","evalSuites":"Suite di valutazione","evalSuitesHint":"Fai clic su una suite per visualizzare i casi di test, quindi esegui per valutare i tuoi endpoint LLM","evalsLoading":"Caricamento suite di valutazione...","noEvalSuitesFound":"Nessuna suite di valutazione trovata","noEvalSuitesDescription":"Le suite di valutazione possono essere definite tramite l\'API o nel codice. Testano gli output del modello rispetto ai risultati attesi utilizzando strategie come contiene, regex, corrispondenza esatta e funzioni personalizzate.","columnCase":"Caso","columnStatus":"Stato","columnLatency":"Latenza","columnDetails":"Dettagli","columnModel":"Modello","columnStrategy":"Strategia","columnExpected":"Previsto","statsSuites":"Suite","statsTestCases":"Casi di prova","statsModels":"Modelli","statsCoverage":"Copertura","statsStrategiesCount":"{count} strategie","evaluationStrategies":"Strategie di valutazione","modelsUnderTest":"Modelli in prova","searchSuitesPlaceholder":"Cerca suite...","passSuffix":"passaggio","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Esegui valutazione","runningProgress":"In esecuzione {current}/{total}...","passRate":"tasso di passaggio","summaryBreakdown":"{passed} superato · {failed} fallito · {total} totale","passedIconLabel":"✅Superato","failedIconLabel":"❌ Fallito","detailsContains":"Contiene: \\"{term}\\"","detailsRegex":"Regex: {pattern}","detailsExpected":"Previsto: \\"{expected}\\"","noResultsYet":"Nessun risultato ancora","testCasesCount":"Casi di test ({count})","noTestCasesDefined":"Nessun caso di test definito","runEvalHint":"Fai clic su \\"Esegui valutazione\\" per eseguire tutti i casi sull\'endpoint LLM. Ogni test invia una richiesta reale tramite OmniRoute.","notifyNoTestCases":"Nessun caso di test definito per questa suite","notifyAllCasesPassed":"Tutti i casi {total} sono stati superati ✅","notifySomeCasesFailed":"{passed}/{total} superato, {failed} fallito","notifyEvalRunFailed":"L\'esecuzione di valutazione non è riuscita","notifyEvalTitle":"Valutazione: {name}","modelEvals":"Valutazioni dei modelli","evalsHeroDescription":"Testa e convalida i tuoi endpoint LLM eseguendo suite di valutazione predefinite. Ogni suite contiene casi di test che inviano richieste reali tramite OmniRoute e confrontano le risposte con i criteri previsti, aiutandoti a rilevare regressioni, confrontare modelli e garantire la qualità delle risposte tra i fornitori.","qualityValidation":"Convalida della qualità","modelComparison":"Confronto dei modelli","regressionDetection":"Rilevamento della regressione","latencyBenchmarks":"Benchmark di latenza","modelLockouts":"Blocchi del modello","noLockouts":"Nessun modello attualmente bloccato","activeSessions":"Sessioni attive","noSessions":"Nessuna sessione attiva","sessionsHint":"Le sessioni vengono visualizzate mentre le richieste passano attraverso il proxy","sessionsTrackedHint":"Tracciato tramite richiesta di impronta digitale • Aggiornamento automatico 5 s","session":"Sessione","age":"Età","requests":"Richieste","connection":"Connessione","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Limiti del fornitore","noProviders":"Nessun provider connesso","connectProvidersForQuota":"Connettiti ai provider con OAuth per monitorare i limiti di quota e l\'utilizzo dell\'API.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(filtrato da {count})","autoRefresh":"Aggiornamento automatico","refreshAll":"Aggiorna tutto","loadingQuotas":"Caricamento...","account":"Account","modelQuotas":"Quote modello","lastUsed":"Ultimo utilizzo","actions":"Azioni","refreshQuota":"Aggiorna quota","today":"Oggi","tomorrow":"Domani","dayTimeFormat":"{day}, {time}","inDuration":"in {duration}","notApplicable":"N / A","rawPlanWithValue":"Piano grezzo: {plan}","noPlanFromProvider":"Nessun piano dal fornitore","noQuotaData":"Nessun dato sulle quote","ungrouped":"Ungrouped","viewFlat":"Flat","viewByEnvironment":"By Environment","noQuotaDataAvailable":"Nessun dato sulle quote disponibile","noAccountsForTierFilter":"Nessun account trovato per il filtro del livello","tierAll":"Tutto","tierEnterprise":"Impresa","tierTeam":"Squadra","tierBusiness":"Attività commerciale","tierUltra":"Ultra","tierPro":"Pro","tierPlus":"Più","tierFree":"Gratuito","tierUnknown":"Sconosciuto"},"modals":{"waitingAuth":"In attesa di autorizzazione","verificationUrl":"URL di verifica","yourCode":"Il tuo codice","remoteAccess":"Accesso remoto:","connectedSuccess":"Connesso con successo!","connectionFailed":"Connessione non riuscita","chooseAuthMethod":"Scegli il tuo metodo di autenticazione:","awsBuilderId":"ID del generatore AWS","awsIamIdentity":"Centro identità AWS IAM","googleAccount":"Account Google","githubAccount":"Conto GitHub","importToken":"Importa gettone","pasteToken":"Incolla il token di aggiornamento da Kiro IDE.","awsRegion":"Regione AWS","autoDetecting":"Token di rilevamento automatico...","readingFromCache":"Lettura dalla cache AWS SSO","readingFromCursor":"Lettura dal database Cursor IDE","initializing":"Inizializzazione...","pricingConfig":"Configurazione dei prezzi","loadingPricing":"Caricamento dati sui prezzi...","pricingRatesFormat":"Formato delle tariffe dei prezzi","noPricingData":"Nessun dato sui prezzi disponibile","noModelsFound":"Nessun modello trovato"},"loggers":{"allProviders":"Tutti i fornitori","allModels":"Tutti i modelli","allAccounts":"Tutti i conti","allApiKeys":"Tutte le chiavi API","allTypes":"Tutti i tipi","allLevels":"Tutti i livelli","modelAZ":"Modello dalla A alla Z","modelZA":"Modello Z-A","loadingLogs":"Caricamento registri...","loadingProxyLogs":"Caricamento dei registri proxy...","noLogEntries":"Nessuna voce di registro trovata","noPayloadData":"Nessun dato sul carico utile disponibile per questa voce di registro.","proxyEvent":"Evento proxy","proxy":"Procura","level":"Livello","directNative":"Diretto (nativo)","combo":"Combinato","inputTokens":"IO:","outputTokens":"O:"},"stats":{"usageOverview":"Panoramica sull\'utilizzo","outputTokens":"Gettoni di uscita","totalCost":"Costo totale","usageByModel":"Utilizzo per modello","usageByAccount":"Utilizzo per account","failedToLoad":"Impossibile caricare le statistiche sull\'utilizzo.","tokenHealth":"Gettone di salute","totalOAuth":"OAuth totale","healthy":"Salutare","warning":"Avvertimento","errored":"Errore","lastCheck":"Ultimo controllo","noData":"Nessun dato","share":"Condividere","unableToLoad":"Impossibile caricare le metriche di sistema","product":"Prodotto","resources":"Risorse","company":"Azienda"},"auth":{"welcome":"Benvenuto","signIn":"Registrazione","enterPassword":"Inserisci la tua password per continuare","password":"Password","unifiedProxy":"Proxy API AI unificato","unifiedAiApiProxy":"Proxy API AI unificato","unifiedAiApiProxyDesc":"Instrada le richieste a più fornitori di intelligenza artificiale attraverso un singolo endpoint. Bilanciamento del carico, failover e monitoraggio dell\'utilizzo integrati.","passwordNotEnabled":"La protezione tramite password non è abilitata","loading":"Caricamento...","invalidPassword":"Password non valida","errorOccurredRetry":"Si è verificato un errore. Per favore riprova.","configureInstance":"Configura la tua istanza OmniRoute","runOnboardingWizard":"Esegui la procedura guidata di onboarding per impostare la tua password e connettere il tuo primo provider AI.","startOnboarding":"Inizia l\'onboarding","secureYourInstance":"Proteggi la tua istanza","setPasswordDescription":"Imposta una password per proteggere la tua dashboard e proteggere i tuoi endpoint API da accessi non autorizzati.","configurePassword":"Configura password","continue":"Continuare","windowWillClose":"Questa finestra si chiuderà automaticamente...","closeTabNow":"Puoi chiudere questa scheda ora.","copyUrlManual":"Copia l\'URL dalla barra degli indirizzi e incollalo nell\'applicazione.","accessDeniedDescription":"Non hai l\'autorizzazione per accedere a questa risorsa. Controlla la tua chiave API o contatta l\'amministratore.","goToDashboard":"Vai alla dashboard","featureMultiProviderTitle":"Multi-provider","featureMultiProviderDesc":"OpenAI, Anthropic, Google e altro ancora","featureLoadBalancingTitle":"Bilanciamento del carico","featureLoadBalancingDesc":"Distribuisci le richieste in modo intelligente","featureUsageTrackingTitle":"Monitoraggio dell\'utilizzo","featureUsageTrackingDesc":"Monitorare costi e gettoni","resetPassword":"Reimposta password","resetDescription":"Scegli un metodo per recuperare l\'accesso alla tua dashboard","stopServer":"Arrestare il server OmniRoute","processing":"Elaborazione...","pleaseWait":"Ti preghiamo di attendere mentre completiamo l\'autorizzazione.","authSuccess":"Autorizzazione riuscita!","copyUrl":"Copia questo URL","accessDenied":"Accesso negato","methodCliTitle":"Metodo 1: reimpostazione CLI","methodCliDescription":"Esegui il comando seguente sul server su cui è in esecuzione OmniRoute:","methodCliHint":"Questo ti chiederà di impostare una nuova password. Il server deve essere prima arrestato.","methodManualTitle":"Metodo 2: ripristino manuale","methodManualDescription":"Elimina la password dal database e impostane una nuova all\'avvio:","setPasswordInYour":"Imposta una nuova password nel tuo","fileLabelSuffix":"file:","newPasswordPlaceholder":"la tua_nuova_password","deleteSettingsFile":"Eliminare","orRemovePasswordHashField":"o rimuovere il campo passwordHash","restartServerWithNewPassword":"Riavvia il server: utilizzerà la nuova password","backToLogin":"Torna all\'accesso","forgotPassword":"Ha dimenticato la password?","defaultPasswordHint":"Default password: 123456 (unless INITIAL_PASSWORD was set)","waitingForAuthorization":"Waiting for authorization...","waitingForGoogleAuthorization":"Waiting for Google authorization...","waitingForOpenAIAuthorization":"Waiting for OpenAI authorization...","waitingForAntigravityAuthorization":"Waiting for Antigravity authorization...","waitingForIFlowAuthorization":"Waiting for iFlow authorization...","exchangingCodeForTokens":"Exchanging code for tokens...","Authorization":"Autorizzazione","Content-Disposition":"Disposizione del contenuto"},"landing":{"brandName":"OmniRoute","navigateHome":"Naviga verso casa","toggleMenu":"Cambia menu","featuresLink":"Caratteristiche","docsLink":"Documenti","github":"GitHub","versionLive":"La v1.0 è ora disponibile","oneEndpoint":"Un endpoint per","allProviders":"Tutti i fornitori di intelligenza artificiale","heroDescription":"Proxy endpoint AI con dashboard Web: una porta JavaScript di CLIProxyAPI. Funziona perfettamente con Claude Code, OpenAI Codex, Cline, RooCode e altri strumenti CLI.","getStarted":"Inizia","viewOnGithub":"Visualizza su GitHub","powerfulFeatures":"Funzionalità potenti","featuresSubtitle":"Tutto ciò di cui hai bisogno per gestire la tua infrastruttura IA in un unico posto, progettato per essere scalabile.","featureUnifiedEndpointTitle":"Endpoint unificato","featureUnifiedEndpointDesc":"Accedi a tutti i fornitori tramite un unico URL API standard.","featureEasySetupTitle":"Configurazione semplice","featureEasySetupDesc":"Diventa subito operativo in pochi minuti con il comando npx.","featureModelFallbackTitle":"Modello di ripiego","featureModelFallbackDesc":"Cambia automaticamente provider in caso di guasto o latenza elevata.","featureUsageTrackingTitle":"Monitoraggio dell\'utilizzo","featureUsageTrackingDesc":"Analisi dettagliate e monitoraggio dei costi su tutti i modelli.","featureOAuthApiKeysTitle":"OAuth e chiavi API","featureOAuthApiKeysDesc":"Gestisci in modo sicuro le credenziali in un unico deposito.","featureCloudSyncTitle":"Sincronizzazione nel cloud","featureCloudSyncDesc":"Sincronizza istantaneamente le tue configurazioni su tutti i dispositivi.","featureCliSupportTitle":"Supporto CLI","featureCliSupportDesc":"Funziona con Claude Code, Codex, Cline, Cursor e altro.","featureDashboardTitle":"Pannello di controllo","featureDashboardDesc":"Dashboard visiva per l\'analisi del traffico in tempo reale.","howItWorks":"Come funziona OmniRoute","howItWorksDescription":"I dati fluiscono senza soluzione di continuità dalla tua applicazione attraverso il nostro livello di routing intelligente fino al miglior fornitore per il lavoro.","howItWorksStep1Title":"1. CLI e SDK","howItWorksStep1Description":"Le tue richieste partono dai tuoi strumenti preferiti o dal nostro SDK unificato. Basta cambiare l\'URL di base.","howItWorksStep2Title":"2. Hub OmniRoute","howItWorksStep2Description":"Il nostro motore analizza il prompt, controlla lo stato del provider e instrada la latenza o il costo più bassi.","howItWorksStep3Title":"3. Fornitori di IA","howItWorksStep3Description":"La richiesta viene soddisfatta immediatamente da OpenAI, Anthropic, Gemini o altri.","getStartedIn30Seconds":"Inizia in 30 secondi","getStartedDescription":"Installa OmniRoute, configura i tuoi provider tramite dashboard web e inizia a instradare le richieste AI.","installOmniRoute":"Installa OmniRoute","installStepDescription":"Esegui il comando npx per avviare immediatamente il server","openDashboard":"Apri Dashboard","openDashboardStepDescription":"Configura provider e chiavi API tramite interfaccia web","routeRequests":"Richieste di percorso","routeRequestsStepDescription":"Punta i tuoi strumenti CLI su {endpoint}","terminal":"terminale","copy":"Copia","copied":"✓ Copiato","startingOmniRoute":"Avvio di OmniRoute...","serverRunningOnLabel":"Server in esecuzione","dashboardLabel":"Pannello di controllo","readyToRoute":"Pronti per la rotta! ✓","configureProvidersNote":"📝 Configura i fornitori nella dashboard o utilizza le variabili di ambiente","dataLocation":"Posizione dei dati:","dataLocationMacLinux":"macOS/Linux:","dataLocationWindows":"Finestre:","product":"Prodotto","dashboardLink":"Pannello di controllo","changelog":"Registro delle modifiche","resources":"Risorse","documentation":"Documentazione","npm":"NPM","legal":"Legale","mitLicense":"Licenza del MIT","footerTagline":"L\'endpoint unificato per la generazione di IA. Connetti, instrada e gestisci i tuoi fornitori di intelligenza artificiale con facilità.","copyright":"© {year} OmniRoute. Tutti i diritti riservati.","flowToolClaudeCode":"Codice Claudio","flowToolOpenAICodex":"Codice OpenAI","flowToolCline":"Cline","flowToolCursor":"Cursore","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Antropico","flowProviderGemini":"Gemelli","flowProviderGithubCopilot":"Copilota GitHub","interactiveDiagram":"Diagramma interattivo visibile sul desktop","ctaTitle":"Pronto a semplificare la tua infrastruttura AI?","ctaDescription":"Unisciti agli sviluppatori che stanno ottimizzando le loro integrazioni IA con OmniRoute. Open source e avvio gratuito.","startFree":"Inizia gratis","readDocumentation":"Leggi la documentazione"},"docs":{"title":"Documentazione","quickStart":"Avvio rapido","features":"Caratteristiche","supportedProviders":"Provider supportati","supportedProvidersToc":"Fornitori","commonUseCases":"Casi d\'uso comuni","clientCompatibility":"Compatibilità con il cliente","protocolsToc":"Protocols","apiReference":"Riferimento API","method":"Metodo","path":"Sentiero","notes":"Note","modelPrefixes":"Prefissi del modello","prefix":"Prefisso","troubleshooting":"Risoluzione dei problemi","supportsChat":"Supporta sia gli endpoint di chat che quelli di risposta.","oauthAutoRefresh":"Connessione OAuth con aggiornamento automatico del token.","fullStreaming":"Supporto streaming completo per tutti i modelli.","docsLabel":"Documenti","docsHeroDescription":"Gateway AI per LLM multi-provider. Un endpoint per OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor e oltre 20 altri provider.","openDashboard":"Apri Dashboard","endpointPage":"Pagina dell\'endpoint","github":"GitHub","reportIssue":"Segnala problema","onThisPage":"In questa pagina","documentationVersion":"Documentazione - v{version}","quickStartStep1Title":"1. Installa ed esegui","quickStartStep1Prefix":"Correre","quickStartStep1Middle":"oppure clona da GitHub ed esegui","quickStartStep2Title":"2. Crea la chiave API","quickStartStep2Text":"Vai su Endpoint -> Chiavi registrate. Genera una chiave per ambiente.","quickStartStep3Title":"3. Connetti i fornitori","quickStartStep3Text":"Aggiungi account provider tramite accesso OAuth, chiave API o connessione automatica a livello gratuito.","quickStartStep4Title":"4. Imposta l\'URL di base del cliente","quickStartStep4Prefix":"Punta il tuo client IDE o API a","quickStartStep4Suffix":"Utilizza il prefisso del provider, ad esempio","featureRoutingTitle":"Routing multi-provider","featureRoutingText":"Instrada le richieste a oltre 30 fornitori di intelligenza artificiale attraverso un singolo endpoint compatibile con OpenAI. Supporta API di chat, risposte, audio e immagini.","featureCombosTitle":"Combo e bilanciamento","featureCombosText":"Crea combinazioni di modelli con catene di fallback e strategie di bilanciamento: round robin, priorità, casuale, meno utilizzato e con costi ottimizzati.","featureUsageTitle":"Monitoraggio dell\'utilizzo e dei costi","featureUsageText":"Conteggio dei token in tempo reale, calcolo dei costi per provider/modello e suddivisione dettagliata dell\'utilizzo per chiave API e account.","featureAnalyticsTitle":"Pannello di analisi","featureAnalyticsText":"Analisi visiva con grafici per richieste, token, errori, latenza, costi e popolarità del modello nel tempo.","featureHealthTitle":"Monitoraggio sanitario","featureHealthText":"Controlli dello stato in tempo reale, stato del fornitore, stati degli interruttori automatici e rilevamento automatico dei limiti di velocità con backoff esponenziale.","featureCliTitle":"Strumenti CLI","featureCliText":"Gestisci le configurazioni IDE, esporta/importa backup, scopri i profili codex e configura le impostazioni dalla dashboard.","featureSecurityTitle":"Sicurezza e politiche","featureSecurityText":"Autenticazione con chiave API, filtraggio IP, protezione prompt injection, policy di dominio, gestione delle sessioni e registrazione di controllo.","featureCloudSyncTitle":"Sincronizzazione nel cloud","featureCloudSyncText":"Sincronizza la tua configurazione con Cloudflare Workers per l\'accesso remoto con credenziali crittografate e failover automatico.","providersAcrossConnectionTypes":"{count} provider in tre tipi di connessione.","manageProviders":"Gestisci fornitori","providersCount":"{count} fornitori","providerTypeFree":"Livello gratuito","providerTypeOAuth":"OAuth","providerTypeApiKey":"Chiave API","useCaseSingleEndpointTitle":"Endpoint unico per molti provider","useCaseSingleEndpointText":"Puntare i client a un URL di base e instradarli in base al prefisso del modello (ad esempio: gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Fallback e cambio di modello con combo","useCaseFallbackText":"Crea modelli combinati in Dashboard e mantieni stabile la configurazione del client mentre i fornitori ruotano internamente.","useCaseUsageVisibilityTitle":"Visibilità sull\'utilizzo, sui costi e sul debug","useCaseUsageVisibilityText":"Tieni traccia dei token e dei costi per provider, account e chiave API nelle schede Utilizzo e Analisi.","clientCherryStudioTitle":"Studio della ciliegia","baseUrlLabel":"URL di base","chatEndpointLabel":"Endpoint della chat","modelRecommendationLabel":"Raccomandazione del modello: prefisso esplicito","clientCodexTitle":"Modelli Copilot Codex/GitHub","clientCodexBullet1":"Utilizza gli ID modello con","clientCodexBullet2":"I modelli della famiglia Codex si instradano automaticamente verso","clientCodexBullet3":"I modelli non Codex continuano","clientCursorTitle":"Cursore IDE","clientCursorBullet1":"Utilizzo","clientCursorBullet1Suffix":"prefisso per i modelli Cursor.","clientCursorBullet2":"Connessione OAuth: accedi dalla pagina Provider.","clientClaudeTitle":"Codice Claude / Antigravità","clientClaudeBullet1Prefix":"Utilizzo","clientClaudeBullet1Middle":"(Claude) o","clientClaudeBullet1Suffix":"(Antigravità).","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":"Endpoint chat compatibile con OpenAI (impostazione predefinita).","endpointResponsesNote":"Endpoint API di risposta (Codex, serie o).","endpointModelsNote":"Catalogo dei modelli per tutti i fornitori collegati.","endpointAudioNote":"Trascrizione audio (Deepgram, AssemblyAI).","endpointImagesNote":"Generazione di immagini (NanoBanana).","endpointRewriteChatNote":"Riscrivere l\'helper per i client senza /v1.","endpointRewriteResponsesNote":"Riscrivi l\'helper per le risposte senza /v1.","endpointRewriteModelsNote":"Riscrivere l\'helper per l\'individuazione dei modelli senza /v1.","modelPrefixesDescriptionStart":"Utilizzare il prefisso del provider prima del nome del modello per instradare a un provider specifico. Esempio:","modelPrefixesDescriptionEnd":"percorsi verso GitHub Copilot.","provider":"Fornitore","type":"Tipo","troubleshootingModelRouting":"Se il client non riesce con il routing del modello, utilizzare un provider/modello esplicito (ad esempio: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Se ricevi errori di modello ambigui, scegli il prefisso del provider anziché un semplice ID modello.","troubleshootingCodexFamily":"Per i modelli della famiglia GitHub Codex, mantieni il modello come gh/codex-model; il router seleziona/risponde automaticamente.","troubleshootingTestConnection":"Utilizza Dashboard > Provider > Verifica connessione prima di effettuare test da IDE o client esterni.","troubleshootingCircuitBreaker":"Se un fornitore mostra l\'interruttore aperto, attendi il raffreddamento o controlla la pagina Salute per i dettagli.","troubleshootingOAuth":"Per i provider OAuth, eseguire nuovamente l\'autenticazione se i token scadono. Controlla l\'indicatore di stato della carta del fornitore.","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":"Generazione sintesi vocale (ElevenLabs, OpenAI TTS).","endpointEmbeddingsNote":"Generazione embedding di testo (OpenAI, Cohere, Voyage)."},"legal":{"privacyPolicy":"politica sulla riservatezza","termsOfService":"Termini di servizio","providerConfigurations":"Configurazioni del fornitore","apiKeys":"Chiavi API","usageLogs":"Registri di utilizzo","applicationSettings":"Impostazioni dell\'applicazione","viewExportAnalytics":"Visualizza ed esporta analisi sull\'utilizzo","clearHistory":"Cancella la cronologia di utilizzo in qualsiasi momento","configureRetention":"Configurare i criteri di conservazione dei log","backupRestore":"Esegui il backup e ripristina il tuo database","privacyMetadataTitle":"Informativa sulla privacy | OmniRoute","privacyMetadataDescription":"Informativa sulla privacy per il router proxy API OmniRoute AI.","termsMetadataTitle":"Termini di servizio | OmniRoute","termsMetadataDescription":"Termini di servizio per il router proxy API OmniRoute AI.","backToHome":"Ritorno a casa","lastUpdated":"Ultimo aggiornamento: {date}","policyLastUpdatedDate":"13 febbraio 2026","listSeparator":"-","questionsVisit":"Domande? Visita il nostro","githubRepository":"Repositorio GitHub","privacySection1Title":"1. Architettura locale-prima","privacySection1Text":"OmniRoute è progettato come un\'applicazione local-first. Tutta l\'elaborazione e l\'archiviazione dei dati avviene interamente sul tuo computer. Non esiste un server centralizzato che raccoglie le tue informazioni.","privacySection2Title":"2. Dati che conserviamo","privacyDataStoredIn":"I seguenti dati vengono archiviati localmente in","privacyDataProviderConfigurationsDesc":"URL di connessione, tipi di provider e impostazioni di priorità","privacyDataApiKeysDesc":"crittografati e archiviati localmente per l\'autenticazione con i fornitori di intelligenza artificiale","privacyDataUsageLogsDesc":"conteggi delle richieste, utilizzo dei token, nomi dei modelli, timestamp e tempi di risposta","privacyDataApplicationSettingsDesc":"preferenze del tema, strategia di routing e configurazioni combinate","privacySection3Title":"3. Nessuna telemetria","privacySection3Text":"OmniRoute non raccoglie dati di telemetria, analisi o rapporti sugli arresti anomali. Nessun dato viene inviato a noi o a terzi. I tuoi modelli di utilizzo, le chiamate API e le configurazioni rimangono completamente privati.","privacySection4Title":"4. Fornitori di IA di terze parti","privacySection4Text":"Quando effettui chiamate API tramite OmniRoute, le tue richieste vengono inoltrate ai fornitori di intelligenza artificiale che hai configurato (ad esempio: OpenAI, Anthropic, Google). Questi fornitori hanno le proprie politiche sulla privacy che regolano il modo in cui gestiscono i tuoi dati. Si prega di rivedere:","privacyOpenAiPolicy":"Informativa sulla privacy di OpenAI","privacyAnthropicPolicy":"Informativa sulla privacy antropica","privacyGooglePolicy":"Informativa sulla privacy di Google","privacySection5Title":"5. Sincronizzazione cloud (opzionale)","privacySection5Text":"Se abiliti la funzionalità opzionale di sincronizzazione cloud, le configurazioni del provider e le chiavi API potrebbero essere trasmesse a un endpoint cloud configurato. Questa funzionalità è disabilitata per impostazione predefinita e richiede un consenso esplicito.","privacySection6Title":"6. Registrazione","privacyLoggingIntro":"I registri delle richieste possono essere configurati tramite le impostazioni del dashboard. Puoi:","privacySection7Title":"7. I tuoi diritti","privacySection7TextStart":"Poiché tutti i dati sono archiviati localmente, hai il pieno controllo. Puoi cancellare i tuoi dati in qualsiasi momento rimuovendo il","privacySection7TextEnd":"directory o utilizzando le funzionalità di backup e ripristino del database nel dashboard.","termsSection1Title":"1. Panoramica","termsSection1Text":"OmniRoute è un router proxy API AI locale che funziona interamente sul tuo computer. Indirizza le richieste a più fornitori di intelligenza artificiale con bilanciamento del carico, failover e monitoraggio dell\'utilizzo.","termsSection2Title":"2. Responsabilità dell\'utente","termsResponsibilityApiKeys":"Sei l\'unico responsabile della gestione delle tue chiavi API e credenziali per fornitori di intelligenza artificiale di terze parti (OpenAI, Anthropic, Google, ecc.).","termsResponsibilityCompliance":"Devi rispettare i termini di servizio di ciascun fornitore di intelligenza artificiale alla cui API accedi tramite OmniRoute.","termsResponsibilitySecurity":"L\'utente è responsabile della sicurezza dell\'installazione locale di OmniRoute, inclusa l\'impostazione di una password e la limitazione dell\'accesso alla rete.","termsSection3Title":"3. Come funziona","termsSection3Text":"OmniRoute funge da proxy intermediario. Le chiamate API inviate a OmniRoute vengono tradotte e inoltrate ai provider AI configurati. OmniRoute non modifica il contenuto delle richieste o delle risposte oltre la necessaria traduzione del protocollo.","termsSection4Title":"4. Trattamento dei dati","termsDataStoredLocally":"Tutti i dati vengono archiviati localmente sul tuo computer in un database SQLite.","termsNoTransmission":"OmniRoute non trasmette dati a server esterni a meno che non abiliti esplicitamente le funzionalità di sincronizzazione cloud.","termsDataLocationText":"I log di utilizzo, le chiavi API e la configurazione sono archiviati in","termsSection5Title":"5. Dichiarazione di non responsabilità","termsSection5Text":"OmniRoute viene fornito \\"così com\'è\\" senza garanzie di alcun tipo. Non siamo responsabili per eventuali costi sostenuti per l\'utilizzo dell\'API, interruzioni del servizio o perdita di dati. Mantieni sempre i backup della tua configurazione.","termsSection6Title":"6. Sorgente aperta","termsSection6Text":"OmniRoute è un software open source. Sei libero di esaminarlo, modificarlo e distribuirlo secondo i termini della sua licenza."},"endpoints":{"tabProxy":"Endpoint Proxy","tabApiEndpoints":"Endpoint API","apiEndpointsTitle":"Endpoint API","apiEndpointsDescription":"Endpoint API backend che possono essere consumati da altre applicazioni e servizi.","comingSoon":"In arrivo","plannedFeatures":"Funzionalità previste","featureRestApi":"Catalogo endpoint REST API con documentazione interattiva","featureWebhooks":"Configurazione webhook e sottoscrizioni eventi","featureSwagger":"Generazione automatica specifiche OpenAPI / Swagger","featureAuth":"Gestione chiavi API e ambiti OAuth 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":"Simple Chat","streaming":"Streaming","system-prompt":"System Prompt","thinking":"Thinking","tool-calling":"Tool Calling","multi-turn":"Multi-turn"},"templateDescriptions":{"simple-chat":"Basic chat template","streaming":"Streaming template","system-prompt":"System prompt template","thinking":"Thinking template","tool-calling":"Tool calling template","multi-turn":"Multi-turn template"},"templatePayloads":{"simpleChat":{"system":"Sei un utile assistente AI.","userGreeting":"Ciao! Come posso aiutarti oggi?"},"streaming":{"prompt":"Scrivi una storia su"},"systemPrompt":{"question":"Qual è il significato della vita?","systemInstruction":"Fornisci una risposta ponderata e filosofica."},"thinking":{"question":"Spiegare l\'informatica quantistica"},"toolCalling":{"cityNameDescription":"Il nome della città per la quale ottenere il meteo","toolDescription":"Ottieni il meteo attuale per una località","userWeather":"Che tempo fa a Tokio?"},"multiTurn":{"system":"Sei un assistente utile.","assistantExample":"Sarei felice di aiutarti in questo.","userInitial":"Ho bisogno di aiuto con","userFollowUp":"Puoi approfondire questo argomento?"}},"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=[503039,a=>{a.v(JSON.parse('{"common":{"save":"Salva","cancel":"Cancellare","delete":"Eliminare","loading":"Caricamento...","error":"Si è verificato un errore","success":"Successo","confirm":"Sei sicuro?","refresh":"Aggiorna","close":"Vicino","add":"Aggiungere","edit":"Modificare","search":"Ricerca","back":"Indietro","next":"Prossimo","submit":"Invia","reset":"Reset","copy":"Copia","copied":"Copiato!","enabled":"Abilitato","disabled":"Disabilitato","active":"Attivo","inactive":"Inattivo","noData":"Nessun dato disponibile","configure":"Configura","manage":"Maneggio","name":"Nome","actions":"Azioni","status":"Stato","type":"Tipo","model":"Modello","models":"modelli","provider":"Fornitore","account":"Account","time":"Tempo","details":"Dettagli","created":"Creato","lastUsed":"Ultimo utilizzo","loadMore":"Carica altro","noResults":"Nessun risultato trovato","reloadPage":"Ricarica la pagina","connected":"Collegato","disconnected":"Disconnesso","notConfigured":"Non configurato","testConnection":"Prova connessione","enable":"Abilitare","disable":"Disabilita","columns":"Colonne","newest":"Più recente","oldest":"Il più antico","all":"Tutto","none":"Nessuno","yes":"SÌ","no":"NO","warning":"Avvertimento","note":"Nota","free":"Gratuito","skipToContent":"Vai al contenuto","maintenanceServerIssues":"Server is experiencing issues. Some features may be unavailable.","maintenanceServerUnreachable":"Server is unreachable. Reconnecting...","accept":"accept","accountId":"accountId","alias":"alias","apiKeyId":"apiKeyId","apiKeyName":"apiKeyName","apiKeySecret":"apiKeySecret","authorization":"authorization","content-type":"content-type","content-length":"content-length","cookie":"cookie","file":"file","host":"host","id":"id","import":"import","limit":"limit","offset":"offset","open":"open","origin":"origin","promptTokens":"promptTokens","completionTokens":"completionTokens","totalTokens":"totalTokens","rawModel":"rawModel","scope":"scope","skill":"skill","sortBy":"sortBy","sortOrder":"sortOrder","tab":"tab","text":"text","textarea":"textarea","tool":"tool","toolId":"toolId","web":"web","whereUsed":"whereUsed","whitelist":"whitelist","blacklist":"blacklist","resolve":"resolve","force":"force","base64url":"base64url","hex":"hex","range":"range","component":"component","redirect_uri":"redirect_uri","idempotency-key":"idempotency-key","error_description":"error_description","code":"code","compatible":"compatible","chat-completions":"chat-completions","oauth":"oauth","auth_token":"auth_token","crypto":"crypto","hours":"hours","selfsigned":"selfsigned","proxy_id":"proxy_id","proxyId":"proxyId","connectionId":"connectionId","resolveConnectionId":"resolveConnectionId","resolve_connection_id":"resolve_connection_id","scope_id":"scope_id","scopeId":"scopeId","jwtSecret":"jwtSecret","keytar":"keytar","better-sqlite3":"better-sqlite3","undici":"undici","builder-id":"builder-id","musicDesc":"musicDesc","musicGeneration":"musicGeneration","idc":"idc","cloud-status-changed":"cloud-status-changed","where_used":"where_used","windowMs":"windowMs","social-github":"GitHub","social-google":"Google","TOOL_ALLOWLIST":"Lista consentita degli strumenti","TOOL_DENYLIST":"Elenco negati dello strumento","Failed to save pricing":"Impossibile salvare i prezzi","Failed to reset pricing":"Impossibile reimpostare i prezzi","apikey":"Chiave API","http":"HTTP"},"sidebar":{"home":"Casa","dashboard":"Pannello di controllo","providers":"Fornitori","combos":"Combinazioni","usage":"Utilizzo","analytics":"Analitica","costs":"Costi","health":"Salute","limits":"Limiti e quote","cliTools":"Strumenti CLI","media":"Media","settings":"Impostazioni","translator":"Traduttore","docs":"Documenti","issues":"Problemi","apiManager":"Gestore API","logs":"Registri","auditLog":"Registro di controllo","shutdown":"Fermare","restart":"Ricomincia","shutdownConfirm":"Arrestare OmniRoute?","restartConfirm":"Riavviare OmniRoute?","version":"v{version}","debug":"Debug","system":"Sistema","help":"Aiuto","serverDisconnected":"Server disconnesso","serverDisconnectedMsg":"Il server proxy è stato arrestato o si sta riavviando.","expandSidebar":"Espandi la barra laterale","collapseSidebar":"Comprimi la barra laterale","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":"Endpoint","playground":"Playground","agents":"Agenti","cliToolsShort":"Strumenti","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":"Esci","language":"Lingua","providers":"Fornitori","providerDescription":"Gestisci le connessioni del tuo fornitore di intelligenza artificiale","combos":"Combinazioni","comboDescription":"Combo di modelli con fallback","usage":"Utilizzo e analisi","usageDescription":"Monitora l\'utilizzo dell\'API, il consumo dei token e i log delle richieste","analytics":"Analitica","analyticsDescription":"Grafici, tendenze e approfondimenti sulla valutazione","cliTools":"Strumenti CLI","cliToolsDescription":"Configura gli strumenti CLI","home":"Casa","homeDescription":"Benvenuti in OmniRoute","endpoint":"Endpoint","endpointDescription":"Gestire endpoint proxy, MCP, A2A e endpoint API","settings":"Impostazioni","settingsDescription":"Gestisci le tue preferenze","openaiCompatible":"Compatibile con OpenAI","anthropicCompatible":"Compatibile antropico","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":"Avvio rapido","quickStartDesc":"Diventa subito operativo in 4 passaggi. Connetti fornitori, modelli di percorso, monitora tutto.","fullDocs":"Documenti completi","step1Title":"1. Crea la chiave API","step1Desc":"Vai a <endpoint>Endpoint</endpoint> -> Chiavi registrate. Genera una chiave per ambiente.","step2Title":"2. Connetti i fornitori","step2Desc":"Aggiungi account in <providers>Providers</providers>. Supporta OAuth, chiave API e livelli gratuiti.","step3Title":"3. Punta il tuo cliente","step3Desc":"Imposta l\'URL di base su {url} nel tuo client IDE o API.","step4Title":"4. Monitora e ottimizza","step4Desc":"Tieni traccia di token, costi ed errori in <logs>Request Logs</logs> e <analytics>Analytics</analytics>.","providersOverview":"Panoramica dei fornitori","configuredOf":"{configured} configurato tra {total} provider disponibili","noModelsAvailable":"Nessun modello disponibile per questo fornitore.","configureFirst":"Configura prima una connessione in {providers}","configureProvider":"Configura fornitore","modelAvailable":"{count} modello disponibile","modelsAvailable":"{count} modelli disponibili","connectionsActive":"Connessione {count} attiva","connectionsActivePlural":"{count} connessioni attive","copyModelName":"Copia il nome del modello","documentation":"Documentazione","healthMonitor":"Monitoraggio della salute","reportIssue":"Segnala il problema","activeError":"{active} attivo · {errors} errore","oauthLabel":"OAuth","apiKeyLabel":"Chiave API","requestsShort":"{count} richieste","providerModelsTitle":"{provider} - Modelli","copiedModel":"Copiato: {model}","aliasLabel":"alias","updateNow":"Aggiorna ora","updating":"Aggiornamento...","updateAvailableDesc":"Una nuova versione è disponibile. Fai clic per aggiornare.","updateStarted":"Aggiornamento avviato..."},"analytics":{"title":"Analitica","overviewDescription":"Monitora i modelli di utilizzo delle API, il consumo di token, i costi e le tendenze delle attività su tutti i provider e modelli.","evalsDescription":"Esegui suite di valutazione per testare e convalidare i tuoi endpoint LLM. Confronta la qualità del modello, rileva le regressioni e confronta la latenza.","overview":"Panoramica","evals":"Valutazioni"},"apiManager":{"title":"Chiavi API","createKey":"Crea chiave API","key":"Chiave","revokeKey":"Revoca chiave","revokeConfirm":"Sei sicuro di voler revocare questa chiave API?","noKeys":"Nessuna chiave API ancora","noKeysDesc":"Crea la tua prima chiave API per autenticare le richieste al tuo endpoint","keyLabel":"Etichetta chiave","permissions":"Autorizzazioni","expiresAt":"Scade","never":"Mai","revoke":"Revocare","showKey":"Mostra chiave","hideKey":"Nascondi chiave","copyKey":"Copia la chiave API","allModels":"Tutti i modelli","selectedModels":"Modelli selezionati","readOnly":"Sola lettura","fullAccess":"Accesso completo","keyManagement":"Gestione delle chiavi API","keyManagementDesc":"Crea e gestisci le chiavi API per autenticare le richieste al tuo endpoint","totalKeys":"Chiavi totali","restricted":"Limitato","totalRequests":"Richieste totali","modelsAvailable":"Modelli disponibili","registeredKeys":"Chiavi registrate","keysRegistered":"Chiavi {count} registrate","keyRegistered":"Chiave {count} registrata","keysSecurityNote":"Ciascuna chiave isola il monitoraggio dell\'utilizzo e può essere revocata in modo indipendente. Le chiavi vengono mascherate dopo la creazione per motivi di sicurezza.","createFirstKey":"Crea la tua prima chiave","name":"Nome","usage":"Utilizzo","created":"Creato","actions":"Azioni","reqs":"req","neverUsed":"Mai usato","deleteConfirm":"Eliminare questa chiave API?","usageTips":"Suggerimenti per l\'uso","tipAuth":"Utilizza le chiavi API nell\'intestazione Autorizzazione come portatore YOUR_KEY","tipSecure":"Le chiavi vengono visualizzate solo una volta durante la creazione: conservale in modo sicuro","tipSeparate":"Crea chiavi separate per client o ambienti diversi","tipRestrict":"Limita le chiavi a modelli specifici per una migliore sicurezza e controllo dei costi","keyName":"Nome chiave","keyNamePlaceholder":"ad esempio, Chiave di produzione, Chiave di sviluppo","keyNameDesc":"Scegli un nome descrittivo per identificare lo scopo di questa chiave","keyCreated":"Chiave API creata","keyCreatedSuccess":"Chiave creata con successo!","keyCreatedNote":"Copia e memorizza questa chiave adesso: non verrà più mostrata.","done":"Fatto","savePermissions":"Salva autorizzazioni","allowAll":"Consenti tutto","restrict":"Limitare","allowAllInfo":"Questa chiave può accedere a tutti i modelli disponibili.","restrictInfo":"Questa chiave può accedere a {selected} di {total} modelli.","selected":"{count} selezionato","all":"Tutto","clear":"Chiaro","searchModels":"Cerca modelli per nome o fornitore...","noModelsFound":"Nessun modello trovato","keyNameRequired":"Il nome della chiave è obbligatorio","keyNameTooLong":"Il nome della chiave deve contenere {max} caratteri o meno","keyNameInvalid":"Il nome della chiave può contenere solo lettere, numeri, spazi, trattini e trattini bassi","invalidKeyName":"Nome della chiave non valido","failedCreateKey":"Impossibile creare la chiave","failedCreateKeyRetry":"Impossibile creare la chiave. Per favore riprova.","invalidKeyId":"ID chiave non valido","failedDeleteKey":"Impossibile eliminare la chiave","failedDeleteKeyRetry":"Impossibile eliminare la chiave. Per favore riprova.","invalidModelsSelection":"Selezione dei modelli non valida","cannotSelectMoreThanModels":"Impossibile selezionare più di {max} modelli","failedUpdatePermissions":"Impossibile aggiornare le autorizzazioni","failedUpdatePermissionsRetry":"Impossibile aggiornare le autorizzazioni. Per favore riprova.","unknownProvider":"sconosciuto","copyMaskedKey":"Copia chiave mascherata","modelsCount":"{count, plural, one {# model} other {# models}}","lastUsedOn":"Ultimo: {date}","editPermissions":"Modifica autorizzazioni","deleteKey":"Cancella chiave","model":"{count} modello","models":"{count} modelli","permissionsTitle":"Autorizzazioni: {name}","allowAllDesc":"Questa chiave può accedere a tutti i modelli disponibili.","restrictDesc":"Questa chiave può accedere a {selectedCount} di {totalModels} modelli.","selectedCount":"{count} selezionato","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":"Registro di controllo","searchPlaceholder":"Cerca azioni...","action":"Azione","actor":"Attore","target":"Bersaglio","ipAddress":"Indirizzo IP","timestamp":"Timestamp","noEntries":"Nessuna voce di controllo trovata","filterByAction":"Filtra per azione...","filterByActor":"Filtra per attore...","filterEntriesAria":"Filtra le voci del registro di controllo","filterByActionTypeAria":"Filtra per tipo di azione","filterByActorAria":"Filtra per attore","refreshAuditLogAria":"Aggiorna il registro di controllo","tableAria":"Voci del registro di controllo","failedFetchAuditLog":"Impossibile recuperare il registro di controllo","notAvailable":"—","description":"Azioni amministrative ed eventi di sicurezza","showing":"Visualizzazione delle voci {count} (offset {offset})","previous":"Precedente"},"media":{"title":"Area Media","subtitle":"Genera immagini, video e musica","model":"Model","prompt":"Prompt","generate":"Genera","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":"Strumenti CLI","noActiveProviders":"Nessun fornitore attivo","noActiveProvidersDesc":"Aggiungi e connetti prima i provider per configurare gli strumenti CLI.","mapModels":"Modelli di mappe","testConnection":"Prova connessione","connectionStatus":"Stato della connessione","configureEndpoint":"Configura punto finale","instructions":"Istruzioni","modelMapping":"Mappatura del modello","baseUrl":"URL di base","apiKey":"Chiave API","configured":"Configurato","notConfigured":"Non configurato","notInstalled":"Non installato","custom":"Costume","unknown":"Sconosciuto","lastSavedAt":"Ultimo salvataggio: {date}","never":"Mai","justNow":"proprio adesso","minutesAgoShort":"{count}m fa","hoursAgoShort":"{count}h fa","daysAgoShort":"{count}d fa","monthsAgoShort":"{count}mo fa","yearsAgoShort":"{count}y fa","runtimeCheckFailed":"Il controllo di runtime non è riuscito","yourApiKeyPlaceholder":"la tua chiave API","modelPlaceholder":"provider/ID modello","configurationSaved":"Configurazione salvata con successo.","failedToSave":"Impossibile salvare la configurazione.","noApiKeysCreateOne":"Nessuna chiave API: creane una nella pagina Chiavi","defaultOmnirouteKey":"sk_omniroute (predefinito)","selectModel":"Seleziona modello","selectModelForAlias":"Seleziona il modello per {alias}","selectModelForTool":"Seleziona il modello per {tool}","select":"Selezionare","clear":"Chiaro","comingSoon":"Prossimamente","checkingRuntime":"Controllo dello stato di runtime in corso...","guideOnlyIntegration":"Integrazione solo con guida (non è richiesto runtime locale)","cliRuntimeDetected":"Runtime CLI rilevato e pronto","cliFoundNotRunnable":"CLI trovata ma non eseguibile{reason}","cliRuntimeNotDetected":"Runtime CLI non rilevato","binary":"Binario","configPath":"Percorso di configurazione","configPathShort":"Configurazione","failedCheckRuntimeStatus":"Impossibile controllare lo stato del runtime.","copy":"Copia","copied":"Copiato","copyConfig":"Copia config","saveConfig":"Salva configurazione","selectionSaved":"Selezione salvata","guide":"Guida","detected":"Rilevato","notReady":"Non pronto","active":"Attivo","inactive":"Inattivo","startMitm":"Avvia il MITM","stopMitm":"Interrompi il MITM","mitmStarted":"MITM è iniziato con successo!","mitmStopped":"MITM si è interrotto con successo!","failedStart":"Impossibile avviare MITM","failedStop":"Impossibile arrestare MITM","saveMappings":"Salva mappature","mappingsSaved":"Mappature salvate!","failedSaveMappings":"Impossibile salvare le mappature","howItWorks":"Come funziona:","antigravityHowWorksDesc":"Antigravity invia richieste all\'endpoint di Google. MITM li intercetta e li reindirizza a OmniRoute.","antigravityStep1":"1. Avviare MITM per instradare le richieste tramite OmniRoute.","antigravityStep2Prefix":"2. Aggiungi","antigravityStep2Suffix":"al file host come 127.0.0.1.","antigravityStep3":"3. Open Antigravity e le richieste verranno inoltrate.","sudoPasswordRequiredTitle":"Password Sudo obbligatoria","sudoPasswordHint":"Per modificare le impostazioni del file host e del proxy di sistema è necessaria la password dell\'amministratore.","enterSudoPassword":"Inserisci la password sudo","sudoPasswordRequiredError":"È richiesta la password Sudo.","cancel":"Cancellare","confirm":"Confermare","settingsApplied":"Impostazioni applicate con successo!","failedApplySettings":"Impossibile applicare le impostazioni","settingsReset":"Le impostazioni sono state ripristinate con successo!","failedResetSettings":"Impossibile ripristinare le impostazioni","backupRestored":"Backup ripristinato!","failedRestore":"Impossibile ripristinare","checkingCli":"Controllo {tool} CLI...","cliNotRunnable":"{tool} CLI installata ma non eseguibile","cliNotInstalled":"{tool} CLI non installata","cliNotDetected":"{tool} CLI non rilevata","cliDetectedReady":"{tool} CLI rilevata e pronta","cliFoundFailedHealthcheck":"{tool} La CLI è stata trovata ma il controllo dello stato di runtime non è riuscito{reason}.","installCliPrompt":"Installa {tool} CLI per utilizzare questa funzionalità.","installCodexPrompt":"Installa la CLI del Codex per utilizzare la funzionalità di applicazione automatica.","hide":"Nascondere","howToInstall":"Come installare","installationGuide":"Guida all\'installazione","platforms":"macOS/Linux/Windows:","afterInstallationRun":"Dopo l\'installazione, esegui","toVerify":"per verificare.","current":"Attuale","baseUrlPlaceholder":"https://.../v1","resetToDefault":"Ripristina le impostazioni predefinite","providerModelPlaceholder":"provider/ID modello","apply":"Fare domanda a","reset":"Reset","manualConfig":"Configurazione manuale","backups":"Backup","configBackups":"Backup di configurazione","noBackupsYet":"Nessun backup ancora. I backup vengono creati automaticamente prima di ogni applicazione o ripristino.","restore":"Ripristinare","backupRestoredReloading":"Backup ripristinato! Stato di ricarica...","failedRestoreBackup":"Impossibile ripristinare il backup","applied":"Applicato!","failed":"Fallito","resetDone":"Reset!","omnirouteConfiguredOpenAiCompatible":"OmniRoute è configurato come provider compatibile con OpenAI","provider":"Fornitore","model":"Modello","providers":"Fornitori","auth":"Aut","noApiKeysAvailable":"Nessuna chiave API disponibile","usingDefaultOmniroute":"Utilizzo predefinito: sk_omniroute","updateConfig":"Aggiorna config","applyConfig":"Applica config","noBackupsAvailable":"Nessun backup disponibile.","profileSaved":"Profilo \\"{name}\\" salvato!","failedSaveProfile":"Impossibile salvare il profilo","profileActivated":"Profilo attivato!","failedActivateProfile":"Impossibile attivare il profilo","profiles":"Profili","savedProfiles":"Profili salvati","noProfilesYet":"Nessun profilo ancora salvato. Salva la configurazione corrente come profilo di seguito.","activate":"Attivare","deleteProfile":"Elimina profilo","profileNamePlaceholder":"Nome del profilo (ad es. Account personale)","saveCurrent":"Salva corrente","codexAuthNotePrefix":"Usi del Codice","codexAuthNoteMiddle":"con","codexAuthNoteSuffix":"Fare clic su \\"Applica\\" per la configurazione automatica.","claudeManualConfiguration":"Claude CLI - Configurazione manuale","codexManualConfiguration":"Codex CLI - Configurazione manuale","droidManualConfiguration":"Droid di fabbrica - Configurazione manuale","openClawManualConfiguration":"Open Claw - Configurazione manuale","clineManualConfiguration":"Configurazione manuale della linea","kiloManualConfiguration":"Configurazione manuale del codice Kilo","toolDescriptions":{"antigravity":"IDE Antigravità di Google con MITM","claude":"CLI del codice Claude antropico","codex":"CLI del codice OpenAI","droid":"Assistente AI Droid di fabbrica","openclaw":"Apri l\'Assistente AI Claw","cline":"Cline AI Coding Assistant CLI","kilo":"CLI dell\'Assistente AI Kilo Code","cursor":"Editor del codice AI del cursore","continue":"Continua Assistente AI","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":"Richiede l\'account Cursor Pro per utilizzare questa funzionalità.","1":"Il cursore instrada le richieste tramite il proprio server, quindi l\'endpoint locale non è supportato. Abilita Cloud Endpoint nelle Impostazioni."},"steps":{"1":{"title":"Apri Impostazioni","desc":"Vai su Impostazioni -> Modelli"},"2":{"title":"Abilita l\'API OpenAI","desc":"Abilita l\'opzione \\"Chiave API OpenAI\\"."},"3":{"title":"URL di base"},"4":{"title":"Chiave API"},"5":{"title":"Aggiungi modello personalizzato","desc":"Fai clic su \\"Visualizza tutto il modello\\" -> \\"Aggiungi modello personalizzato\\""},"6":{"title":"Seleziona modello"}}},"continue":{"steps":{"1":{"title":"Apri Configurazione","desc":"Apri il file di configurazione Continua"},"2":{"title":"Chiave API"},"3":{"title":"Seleziona modello"},"4":{"title":"Aggiungi configurazione modello","desc":"Aggiungi la seguente configurazione all\'array dei modelli:"}},"notes":{"0":"Continue usa un file di configurazione JSON."}},"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 richiede la configurazione della chiave API.","1":"Imposta l\'URL base sul tuo endpoint OmniRoute."}},"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 richiede un account Amazon."}}},"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":"Quando usarlo","openToolDocs":"Apri i documenti dello strumento","toolUseCases":{"claude":"Utilizzalo quando desideri flussi di lavoro di pianificazione avanzati e lunghi refactoring multi-file con Claude Code.","codex":"Da utilizzare quando il tuo team è standardizzato sui flussi CLI di OpenAI Codex e sull\'autenticazione basata sul profilo.","droid":"Da utilizzare quando è necessario un agente terminale leggero incentrato sulla codifica rapida e sui cicli di esecuzione dei comandi.","openclaw":"Da utilizzare quando si desidera un agente di codifica in stile Open Claw ma instradato tramite policy OmniRoute.","cline":"Da utilizzare quando si configurano agenti di codifica all\'interno degli editor e si desidera un\'impostazione guidata con i modelli OmniRoute.","kilo":"Da utilizzare quando il flusso di lavoro dipende dai comandi Kilo Code e da modifiche iterative rapide.","cursor":"Da utilizzare durante la codifica in Cursor e sono necessari modelli personalizzati compatibili con OpenAI tramite OmniRoute.","continue":"Da utilizzare quando si esegue Continue negli IDE ed è necessaria la configurazione portatile del provider basato su JSON.","opencode":"Utilizzalo quando preferisci l\'esecuzione dell\'agente nativo del terminale e l\'automazione basata su script tramite OpenCode.","kiro":"Da utilizzare quando si integra Kiro e si controlla l\'instradamento del modello centralmente da OmniRoute.","antigravity":"Da utilizzare quando il traffico Antigravity/Kiro deve essere intercettato tramite MITM e instradato a OmniRoute.","copilot":"Utilizzalo quando desideri un\'esperienza utente in stile chat Copilot applicando al tempo stesso le chiavi OmniRoute e le regole di routing."}},"combos":{"title":"Combinazioni","description":"Crea combinazioni di modelli con routing ponderato e supporto fallback","createCombo":"Crea combinazione","editCombo":"Modifica combinazione","deleteCombo":"Elimina combinazione","noModels":"Nessun modello","noModelsYet":"Nessun modello ancora aggiunto","addModel":"Aggiungi modello","addModelToCombo":"Aggiungi modello alla combinazione","routingStrategy":"Strategia di instradamento","maxRetries":"Numero massimo di tentativi","timeout":"Timeout (ms)","healthcheck":"Controllo dello stato di salute","priority":"Priorità","fallback":"Ricaderci","roundRobin":"Girotondo","random":"Casuale","leastLatency":"Latenza minima","comboName":"Nome combinato","comboNamePlaceholder":"la mia combinazione","deleteConfirm":"Eliminare questa combinazione?","noCombosYet":"Nessuna combo ancora","comboCreated":"Combo creato con successo","comboUpdated":"Combo aggiornato con successo","comboDeleted":"Combinazione eliminata","failedCreate":"Impossibile creare la combinazione","failedUpdate":"Impossibile aggiornare la combinazione","errorCreating":"Errore durante la creazione della combinazione","errorUpdating":"Errore durante l\'aggiornamento della combinazione","errorDeleting":"Errore durante l\'eliminazione della combinazione","testFailed":"Richiesta di prova non riuscita","failedToggle":"Impossibile attivare/disattivare la combo","testResults":"Risultati del test — {name}","resolvedBy":"Risolto da:","more":"+{count} altro","reqs":"req","success":"successo","proxyConfigured":"Proxy configurato","copyComboName":"Copia il nome della combinazione","enableCombo":"Abilita combinazione","disableCombo":"Disabilita combinazione","testCombo":"Combinazione di prova","duplicate":"Duplicato","proxyConfig":"Configurazione proxy","nameRequired":"Il nome è obbligatorio","nameInvalid":"Solo lettere, numeri, -, _, / e . consentito","nameHint":"Lettere, numeri, -, _, / e . consentito","priorityDesc":"Fallback sequenziale: prova prima il modello 1, poi il 2 e così via.","weightedDesc":"Distribuisce il traffico in base alla percentuale di peso con fallback","roundRobinDesc":"Distribuzione circolare: ogni richiesta va al modello successivo a rotazione","randomDesc":"Selezione casuale uniforme, quindi fallback sui modelli rimanenti","leastUsedDesc":"Sceglie il modello con meno richieste, bilanciando il carico nel tempo","costOptimizedDesc":"Percorsi prima verso il modello più economico in base al prezzo","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each model once before reshuffling","models":"Modelli","autoBalance":"Bilanciamento automatico","advancedSettings":"Impostazioni avanzate","retryDelay":"Ritardo tentativi (ms)","concurrencyPerModel":"Concorrenza/modello","queueTimeout":"Timeout coda (ms)","advancedHint":"Lascia vuoto per utilizzare le impostazioni predefinite globali. Questi sovrascrivono le impostazioni per provider.","moveUp":"Vai su","moveDown":"Spostati giù","removeModel":"Rimuovere","saving":"Risparmio...","weighted":"Ponderato","leastUsed":"Meno usato","costOpt":"Opzione costo","strategyGuideTitle":"How to use this strategy","strategyGuideWhen":"When to use","strategyGuideAvoid":"Avoid when","strategyGuideExample":"Example","strategyGuide":{"priority":{"when":"You have one preferred model and only want fallback on failure.","avoid":"You need request distribution across models.","example":"Primary coding model with cheaper backup for outages."},"weighted":{"when":"You need controlled traffic split across models.","avoid":"You cannot maintain accurate weights over time.","example":"80% stable model + 20% canary model rollout."},"round-robin":{"when":"You want predictable and even distribution.","avoid":"Models differ too much in latency or cost.","example":"Same model on multiple accounts to spread throughput."},"random":{"when":"You want simple distribution with minimal setup.","avoid":"You need strict traffic guarantees.","example":"Quick prototyping with equivalent models."},"least-used":{"when":"You want adaptive balancing based on live demand.","avoid":"Traffic is too low to benefit from usage balancing.","example":"Mixed workloads where one model often gets overloaded."},"cost-optimized":{"when":"Cost reduction is your top priority.","avoid":"Pricing data is missing or outdated.","example":"Background or batch jobs where lower cost is preferred."}},"advancedHelp":{"maxRetries":"How many retries are attempted before failing a request.","retryDelay":"Initial wait between retries. Higher values reduce burst pressure.","timeout":"Maximum request duration before aborting.","healthcheck":"Skips unhealthy models/providers from routing decisions.","concurrencyPerModel":"Max simultaneous requests allowed per model in round-robin.","queueTimeout":"How long a request can wait in queue before timing out."},"templatesTitle":"Quick templates","templatesDescription":"Apply a starting profile, then adjust models and config.","templateApply":"Apply template","templateHighAvailability":"High availability","templateHighAvailabilityDesc":"Priority routing with health checks and safe retries.","templateCostSaver":"Cost saver","templateCostSaverDesc":"Cost-optimized routing for budget-first workloads.","templateBalanced":"Balanced load","templateBalancedDesc":"Least-used routing to spread demand over time.","usageGuideHide":"Hide","usageGuideDontShowAgain":"Don\'t show again","usageGuideShow":"Show guide","quickTestTitle":"Combo ready to validate","quickTestDescription":"Run a test now to confirm fallback and latency behavior.","testNow":"Test now","pricingCoverage":"Pricing coverage","pricingCoverageHint":"Cost-optimized works best when all combo models have pricing.","pricingAvailable":"Pricing available","pricingMissing":"No pricing","pricingAvailableShort":"priced","pricingMissingShort":"no-price","warningRoundRobinSingleModel":"Round-robin is most useful with at least 2 models.","warningCostOptimizedPartialPricing":"Only {priced} of {total} models have pricing. Routing may be partially cost-aware.","warningCostOptimizedNoPricing":"No pricing data found for this combo. Cost-optimized may route unexpectedly.","readinessTitle":"Pronto per salvare?","readinessDescription":"Rivedi l\'elenco di controllo prima di creare o aggiornare questa combinazione.","readinessCheckName":"Il nome combinato è valido","readinessCheckModels":"È selezionato almeno un modello","readinessCheckWeights":"Il totale ponderato è 100%","readinessCheckWeightsOptional":"Regola del peso non richiesta","readinessCheckPricing":"I dati sui prezzi sono disponibili","readinessCheckPricingOptional":"Regola di prezzo non richiesta","saveBlockedTitle":"Il salvataggio è bloccato finché non vengono risolti i seguenti elementi:","saveBlockName":"Definire un nome per la combinazione.","saveBlockModels":"Aggiungi almeno un modello.","saveBlockWeighted":"Imposta i pesi al 100% (attuale: {total}%).","saveBlockPricing":"Aggiungi il prezzo per almeno un modello o scegli una strategia diversa.","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":"Costi","budget":"Bilancio","totalCost":"Costo totale","breakdown":"Ripartizione dei costi","noData":"Nessun dato sui costi","byModel":"Per modello","byProvider":"Per fornitore"},"endpoint":{"title":"Endpoint API","available":"Endpoint disponibili","cloudProxy":"Proxy cloud","disableConfirm":"Sei sicuro di voler disabilitare il proxy cloud?","baseUrl":"URL di base","apiKeyLabel":"Chiave API","registeredKeys":"Chiavi registrate","chatCompletions":"Completamenti della chat","responses":"Risposte","listModels":"Elenco modelli","usingCloudProxy":"Utilizzo del proxy cloud","usingLocalServer":"Utilizzo del server locale","machineId":"ID macchina: {id}...","disableCloud":"Disabilita Nuvola","enableCloud":"Abilita nuvola","modelsAcrossEndpoints":"Modelli {models} sugli endpoint {endpoints}","chatDesc":"Chat in streaming e non in streaming con tutti i provider","embeddings":"Incorporamenti","embeddingsDesc":"Incorporamenti di testo per pipeline di ricerca e RAG","imageGeneration":"Generazione di immagini","imageDesc":"Genera immagini da istruzioni di testo","rerank":"Riclassificare","rerankDesc":"Riclassificare i documenti in base alla pertinenza rispetto a una query","audioTranscription":"Trascrizione audio","audioTranscriptionDesc":"Trascrivere file audio in testo (Whisper)","textToSpeech":"Sintesi vocale da testo","textToSpeechDesc":"Converti il testo in parlato dal suono naturale","moderations":"Moderazioni","moderationsDesc":"Moderazione dei contenuti e classificazione della sicurezza","responsesDesc":"API Responses di OpenAI per Codex e workflow agentici avanzati","listModelsDesc":"Elenca tutti i modelli disponibili su tutti i provider connessi","settingsApiDesc":"Leggere e modificare la configurazione di OmniRoute tramite API","settingsApi":"Settings API","categoryCore":"API Principali","categoryMedia":"Media e Multi-Modale","categoryUtility":"Utilità e Gestione","enableCloudTitle":"Abilita proxy cloud","whatYouGet":"Cosa otterrai","cloudBenefitAccess":"Accedi alla tua API da qualsiasi parte del mondo","cloudBenefitShare":"Condividi facilmente l\'endpoint con il tuo team","cloudBenefitPorts":"Non è necessario aprire porte o configurare il firewall","cloudBenefitEdge":"Rete edge globale veloce","cloudSessionNote":"Cloud manterrà la tua sessione di autenticazione per 1 giorno. Se non utilizzato verrà automaticamente cancellato.","cloudUnstableNote":"In alcuni casi, il cloud è attualmente instabile con Claude Code OAuth.","cloudConnected":"Proxy cloud connesso!","connectingToCloud":"Connessione al cloud...","verifyingConnection":"Verifica della connessione...","connecting":"Connessione...","verifying":"Verifica...","connected":"Collegato!","disableCloudTitle":"Disabilita proxy cloud","disableWarning":"Tutte le sessioni di autenticazione verranno eliminate dal cloud.","syncingData":"Sincronizzazione dei dati più recenti...","disablingCloud":"Disabilitazione del cloud...","syncing":"Sincronizzazione...","disabling":"Disabilitazione...","cloudConnectedVerified":"Cloud Proxy connesso e verificato!","connectedVerificationPending":"Connesso: verifica in sospeso","connectedVerificationPendingWithError":"Connesso: verifica in sospeso: {error}","cloudDisabledSuccess":"Cloud disabilitato correttamente","syncedSuccess":"Sincronizzazione riuscita","failedDisable":"Impossibile disattivare il cloud","failedEnable":"Impossibile abilitare il cloud","cloudRequestTimeout":"Timeout della richiesta cloud","cloudRequestFailed":"Richiesta cloud non riuscita","cloudWorkerUnreachable":"Impossibile raggiungere il lavoratore cloud. Assicurati che il servizio cloud sia in esecuzione (npm run dev in /cloud).","connectionFailed":"Connessione non riuscita","syncFailed":"Impossibile sincronizzare i dati cloud","providerModelsTitle":"{provider} — Modelli","noModelsForProvider":"Nessun modello disponibile per questo fornitore.","chat":"Chiacchierata","embedding":"Incorporamento","image":"Immagine","custom":"costume","modelsCount":"{count, plural, one {# model} other {# models}}","sectionTitle":"Integration Surface","sectionDescription":"OpenAI-compatible APIs and operational protocol endpoints","tabApis":"OpenAI-compatible APIs","tabProtocols":"Protocols","tabsAria":"Endpoint sections","protocolsTitle":"Protocols","protocolsDescription":"MCP and A2A are first-class endpoints with dedicated observability and controls.","mcpCardTitle":"MCP Server","mcpCardDescription":"Model Context Protocol over stdio","a2aCardTitle":"A2A Server","a2aCardDescription":"Agent2Agent JSON-RPC endpoint","protocolToolsLabel":"Tools","protocolTasksLabel":"Tasks","protocolActiveStreamsLabel":"Active streams","protocolLastActivity":"Last activity","quickStart":"Quick Start","openMcpDashboard":"Open MCP management","openA2aDashboard":"Open A2A management","mcpQuickStartTitle":"MCP Quick Start","mcpQuickStartStep1":"Run the MCP server via `omniroute --mcp`.","mcpQuickStartStep2":"Configure your MCP client to connect over stdio transport.","mcpQuickStartStep3":"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":"Salute","ok":"OK","totalTasks":"Compiti totali","activeStreams":"Active streams","lastTask":"Ultimo compito","taskStateOverview":"Panoramica dello stato dell\'attività","state":{"submitted":"presentato","working":"lavorando","completed":"completato","failed":"failed","cancelled":"annullato"},"agentCard":"Carta dell\'agente","version":"Versione","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":"Salute del sistema","description":"Monitoraggio in tempo reale della tua istanza OmniRoute","healthy":"Salutare","degraded":"Degradato","down":"Giù","uptime":"Tempo di attività","memory":"Memoria","memoryRss":"Memoria (RSS)","heap":"Mucchio","cpu":"processore","database":"Banca dati","version":"Versione","lastCheck":"Ultimo controllo","providerHealth":"Salute del fornitore","systemMetrics":"Metriche di sistema","tokenHealth":"Gettone di salute","refreshAll":"Aggiorna tutto","checkNow":"Controlla ora","loadingHealth":"Caricamento dati sanitari...","failedToLoad":"Impossibile caricare i dati sanitari: {error}","retry":"Riprova","allOperational":"Tutti i sistemi operativi","issuesDetected":"Rilevati problemi di sistema","updatedAt":"Aggiornato {time}","latency":"Latenza","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","millisecondsShort":"{value}ms","notAvailable":"—","totalRequests":"Richieste totali","noDataYet":"Nessun dato ancora","promptCache":"Cache dei suggerimenti","entries":"Voci","hitRate":"Tasso di successo","hitsMisses":"Colpi / Mancati","signatureCache":"Cache delle firme","signatureDefaults":"Predefiniti","signatureTool":"Attrezzo","signatureFamily":"Famiglia","signatureSession":"Sessione","recovering":"Recupero","noCBData":"Nessun dato disponibile sull\'interruttore automatico. Fai prima alcune richieste.","providerHealthStatusAria":"Stato di salute del fornitore","issuesLabel":"Problemi rilevati","operational":"Operativo","providers":"Fornitori","healthyCount":"{count} sano","nodeVersion":"Nodo {version}","failures":"{count} errore","failuresPlural":"{count} errori","lastFailure":"Scorso","rateLimitStatus":"Stato del limite di velocità","activeLimiters":"{count} limitatore attivo","activeLimitersPlural":"{count} limitatori attivi","queued":"In coda","queuedCount":"{count} in coda","running":"corsa","runningCount":"{count} in esecuzione","ok":"OK","activeLockouts":"Blocchi attivi","resetConfirm":"Ripristinare tutti gli interruttori automatici allo stato integro? Ciò eliminerà tutti i conteggi degli errori e ripristinerà tutti i provider allo stato operativo.","resetAllTitle":"Ripristinare tutti gli interruttori automatici allo stato integro","resetting":"Reimpostazione...","resetAll":"Reimposta tutto","until":"Fino al {time}","activeProviders":"{count} active","monitoredProviders":"{count} monitored","configuredProvidersLabel":"Configurato nel dashboard","configuredProvidersHint":"Provider con credenziali salvate in /dashboard/providers, indipendentemente dallo stato di runtime.","activeProvidersHint":"Provider configurati attualmente abilitati per le richieste di instradamento.","monitoredProvidersHint":"Fornitori attualmente monitorati dai monitoraggi dello stato degli interruttori automatici."},"limits":{"title":"Limiti e quote","rateLimit":"Limite di velocità","remaining":"Rimanente","requestsPerMinute":"Richieste/min","tokensPerMinute":"Gettoni/min","dailyLimit":"Limite giornaliero"},"logs":{"title":"Registri","requestLogs":"Richiedi registri","proxyLogs":"Registri proxy","auditLog":"Registro di controllo","console":"Consolle","auditLogDesc":"Azioni amministrative ed eventi di sicurezza","loading":"Caricamento...","refresh":"Aggiorna","filterByAction":"Filtra per azione...","filterByActor":"Filtra per attore...","filterEntriesAria":"Filtra le voci del registro di controllo","filterByActionTypeAria":"Filtra per tipo di azione","filterByActorAria":"Filtra per attore","refreshAuditLogAria":"Aggiorna il registro di controllo","tableAria":"Voci del registro di controllo","failedFetchAuditLog":"Impossibile recuperare il registro di controllo","showing":"Visualizzazione delle voci {count} (offset {offset})","search":"Ricerca","timestamp":"Timestamp","action":"Azione","actor":"Attore","target":"Bersaglio","details":"Dettagli","ipAddress":"Indirizzo IP","notAvailable":"—","noEntries":"Nessuna voce del registro di controllo trovata","previous":"Precedente","next":"Prossimo"},"onboarding":{"welcome":"Benvenuto","security":"Sicurezza","test":"Test","ready":"Pronto!","setPassword":"Imposta password","addProvider":"Aggiungi il tuo primo fornitore","getStarted":"Inizia","skip":"Saltare","skipWizard":"Salta completamente la procedura guidata","skipPassword":"Salta l\'impostazione della password","skipAndContinue":"Salta e continua","passwordLabel":"Password","confirmPassword":"Conferma password","enterPassword":"Inserisci la password","confirmPasswordPlaceholder":"Conferma password","passwordsMismatch":"Le password non corrispondono","setupComplete":"Configurazione completata!","goToDashboard":"Vai alla dashboard →","welcomeDesc":"OmniRoute è il tuo proxy API AI locale. Indirizza le richieste a più fornitori di intelligenza artificiale con bilanciamento del carico, failover e monitoraggio dell\'utilizzo.","multiProvider":"Multi-provider","usageTracking":"Monitoraggio dell\'utilizzo","apiKeyMgmt":"Gestione chiave API","securityDesc":"Imposta una password per proteggere la tua dashboard o salta per ora.","providerDesc":"Connetti il tuo primo fornitore di intelligenza artificiale. Puoi aggiungerne altri in seguito.","apiKeyRequired":"Chiave API (richiesto)","customUrlOptional":"URL personalizzato (facoltativo)","testDesc":"Verifichiamo che la connessione del tuo provider funzioni.","runTest":"Esegui il test di connessione","testingConnection":"Test della connessione...","connectionSuccessful":"Connessione riuscita! Il tuo fornitore è pronto.","noProviderFound":"Nessun fornitore trovato. Puoi aggiungerne uno dalla dashboard in un secondo momento.","testFailed":"Il test è fallito, ma puoi configurarlo in seguito.","couldNotTest":"Impossibile eseguire il test in questo momento. Puoi testare dalla dashboard.","doneDesc":"È tutto pronto! La tua istanza OmniRoute è configurata e pronta per eseguire il proxy delle richieste AI.","yourEndpoint":"Il tuo punto finale:","continue":"Continuare","retry":"Riprova","failedSetPassword":"Impossibile impostare la password. Riprova.","failedAddProvider":"Impossibile aggiungere il fornitore. Riprova.","connectionError":"Errore di connessione. Per favore riprova.","provider":"Fornitore"},"providers":{"title":"Fornitori","addProvider":"Aggiungi fornitore","editProvider":"Modifica fornitore","deleteProvider":"Elimina fornitore","noProviders":"Nessun provider configurato","modelAvailability":"Disponibilità del modello","accounts":"Conti","newAccount":"Nuovo conto","deleteConfirm":"Sei sicuro di voler eliminare questo fornitore?","testing":"Prova...","testConnection":"Prova connessione","testSuccess":"Connessione riuscita","testFailed":"Connessione non riuscita","available":"Disponibile","cooldown":"Raffreddare","unavailable":"Non disponibile","unknown":"Sconosciuto","oauthLabel":"OAuth","compatibleLabel":"Compatibile","chat":"Chiacchierata","responses":"Risposte","messages":"Messaggi","oauthProviders":"Provider OAuth","freeProviders":"Fornitori gratuiti","apiKeyProviders":"Fornitori di chiavi API","compatibleProviders":"Fornitori compatibili con chiave API","testAll":"Prova tutto","testAllOAuth":"Testa tutte le connessioni OAuth","testAllFree":"Testa tutte le connessioni gratuite","testAllApiKey":"Testa tutte le connessioni della chiave API","testAllCompatible":"Testare tutte le connessioni compatibili","connected":"{count} Connesso","errorCount":"{count} Errore ({code})","errorCountNoCode":"{count} Errore","noConnections":"Nessuna connessione","disabled":"Disabilitato","enableProvider":"Abilita fornitore","disableProvider":"Disabilita fornitore","testResults":"Risultati dei test","noCompatibleYet":"Nessun fornitore compatibile ancora aggiunto","compatibleHint":"Utilizza i pulsanti qui sopra per aggiungere endpoint compatibili con OpenAI o Anthropic","addOpenAICompatible":"Aggiungi compatibile con OpenAI","addAnthropicCompatible":"Aggiungi compatibilità antropica","addNewProvider":"Aggiungi nuovo fornitore","backToProviders":"Torniamo ai fornitori","configureNewProvider":"Configura un nuovo provider AI da utilizzare con le tue applicazioni.","providerLabel":"Fornitore","selectProvider":"Seleziona un fornitore","selectedProvider":"Fornitore selezionato","authMethod":"Metodo di autenticazione","apiKeyLabel":"Chiave API","apiKeyRequired":"È richiesta la chiave API","selectProviderRequired":"Seleziona un fornitore","enterApiKey":"Inserisci la tua chiave API","apiKeySecure":"La tua chiave API verrà crittografata e archiviata in modo sicuro.","oauth2Connect":"Connettiti con OAuth2","oauth2Label":"OAuth2","oauth2Desc":"Connetti il tuo account utilizzando l\'autenticazione OAuth2.","displayName":"Nome da visualizzare","displayNamePlaceholder":"ad esempio, API di produzione, ambiente di sviluppo","displayNameHint":"Opzionale. Un nome descrittivo per identificare questa configurazione.","active":"Attivo","activeDescription":"Abilita questo provider per l\'utilizzo nelle tue applicazioni","cancel":"Cancellare","createProvider":"Crea fornitore","failedCreate":"Impossibile creare il fornitore","errorOccurred":"Si è verificato un errore. Per favore riprova.","modelStatus":"Stato del modello","allModelsOperational":"Tutti i modelli operativi","modelsWithIssues":"{count} modelli con problemi","allModelsNormal":"Tutti i modelli rispondono normalmente.","cooldownCleared":"Recupero cancellato per {model}","failedClearCooldown":"Impossibile cancellare il tempo di recupero","loadingAvailability":"Caricamento disponibilità del modello...","clearCooldown":"Chiaro","clearing":"Cancellazione...","until":"Fino al {time}","providerTestFailed":"Il test del fornitore è fallito","modeTest":"{mode} Prova","passedCount":"{count} superato","failedCount":"{count} non riuscito","testedCount":"{count} testato","millisecondsAbbr":"{value}ms","okShort":"OK","errorShort":"ERRORE","noActiveConnectionsInGroup":"Nessuna connessione attiva trovata per questo gruppo.","allTestsPassed":"Tutti i test {total} sono stati superati","testSummary":"{passed}/{total} superato, {failed} fallito","nameLabel":"Nome","prefixLabel":"Prefisso","baseUrlLabel":"URL di base","apiTypeLabel":"Tipo API","prefixHint":"Necessario. Prefisso univoco per i nomi dei modelli.","nameHint":"Necessario. Un\'etichetta amichevole per questo nodo.","baseUrlHint":"Necessario. URL di base dell\'API del provider.","anthropicPrefixPlaceholder":"ac-prod","openaiPrefixPlaceholder":"oc-prod","anthropicBaseUrlPlaceholder":"https://api.anthropic.com/v1","openaiBaseUrlPlaceholder":"https://api.openai.com/v1","validateConnection":"Convalida connessione","validating":"Convalida...","connectionValid":"La connessione è valida!","connectionFailed":"Connessione non riuscita. Controlla l\'URL e la chiave.","testKeyLabel":"Testare la chiave API","testKeyPlaceholder":"sk-... (solo per la convalida)","providerNotFound":"Fornitore non trovato","deleteConnectionConfirm":"Eliminare questa connessione?","failedSetAlias":"Impossibile impostare l\'alias","failedSaveConnection":"Impossibile salvare la connessione","failedSaveConnectionRetry":"Impossibile salvare la connessione. Per favore riprova.","failedRetestConnection":"Impossibile ripetere il test della connessione","deleteCompatibleNodeConfirm":"Eliminare questo {type} nodo compatibile?","anthropicCompatibleDetails":"Dettagli compatibilità antropica","openaiCompatibleDetails":"Dettagli compatibili con OpenAI","messagesApi":"API dei messaggi","responsesApi":"API di risposta","chatCompletions":"Completamenti della chat","importingModels":"Importazione...","importFromModels":"Importa da /modelli","clearAllModels":"Cancella tutti i modelli","clearAllModelsConfirm":"Sei sicuro di voler rimuovere tutti i modelli per questo provider?","clearAllModelsSuccess":"Tutti i modelli cancellati","clearAllModelsFailed":"Impossibile cancellare i modelli","addConnectionToImport":"Aggiungi una connessione per abilitare l\'importazione.","noModelsConfigured":"Nessun modello configurato","connectionCount":"{count} connessione/i","fetchingModels":"Recupero dei modelli disponibili...","failedFetchModels":"Impossibile recuperare i modelli","noModelsFound":"Nessun modello trovato","importFailed":"Importazione non riuscita","noNewModelsAdded":"Non sono stati aggiunti nuovi modelli.","adding":"Aggiunta...","importingModelsTitle":"Importazione di modelli","copyModel":"Copia modello","removeModel":"Rimuovi il modello","rateLimitProtected":"Protetto","rateLimitUnprotected":"Non protetto","enableRateLimitProtection":"Fare clic per abilitare la protezione del limite di velocità","disableRateLimitProtection":"Fare clic per disattivare la protezione del limite di velocità","productionKey":"Chiave di produzione","enterNewApiKey":"Inserisci la nuova chiave API","optional":"Opzionale","anthropicCompatibleName":"Compatibile antropico","openaiCompatibleName":"Compatibile con OpenAI","failedImportModels":"Impossibile importare i modelli","noModelsReturnedFromEndpoint":"Nessun modello restituito dall\'endpoint /models.","importingModelsProgress":"Importazione di {current} di modelli {total}...","foundModelsStartingImport":"Trovati modelli {count}. Avvio dell\'importazione...","importingModelById":"Importazione di {modelId}...","importSuccessCount":"Importazione di {count, plural, one {# model} other {# models}} riuscita!","noNewModelsAddedExisting":"Non sono stati aggiunti nuovi modelli (esistono già tutti).","importDoneCount":"✓ Fatto! {count, plural, one {# model imported.} other {# models imported.}}","unexpectedErrorOccurred":"Si è verificato un errore imprevisto","connectionCountLabel":"{count, plural, one {# connection} other {# connections}}","messagesPath":"messaggi","responsesPath":"risposte","chatCompletionsPath":"chat/completamenti","add":"Aggiungere","edit":"Modificare","delete":"Eliminare","anthropic":"Antropico","openai":"OpenAI","singleConnectionPerCompatible":"È consentita una sola connessione per nodo compatibile. Aggiungi un altro nodo se hai bisogno di più connessioni.","connections":"Connessioni","providerProxyTitleConfigured":"Proxy del fornitore: {host}","configured":"configurato","providerProxyConfigureHint":"Configura il proxy per tutte le connessioni di questo provider","providerProxy":"Procura del fornitore","noConnectionsYet":"Nessuna connessione ancora","addFirstConnectionHint":"Aggiungi la tua prima connessione per iniziare","addConnection":"Aggiungi connessione","availableModels":"Modelli disponibili","pageAutoRefresh":"La pagina si aggiornerà automaticamente...","statusDisabled":"disabilitato","statusConnected":"collegato","statusRuntimeIssue":"problema di esecuzione","statusAuthFailed":"autenticazione non riuscita","statusRateLimited":"tariffa limitata","statusNetworkIssue":"problema di rete","statusTestUnsupported":"test non supportato","statusUnavailable":"non disponibile","statusFailed":"fallito","statusError":"errore","oauthAccount":"Account OAuth","errorTypeRuntime":"Runtime locale","errorTypeUpstreamAuth":"Aut. a monte","errorTypeMissingCredential":"Credenziale mancante","errorTypeRefreshFailed":"Aggiornamento non riuscito","errorTypeTokenExpired":"Il gettone è scaduto","errorTypeRateLimited":"Tariffa limitata","errorTypeUpstreamUnavailable":"A monte non disponibile","errorTypeNetworkError":"Errore di rete","errorTypeTestUnsupported":"Test non supportato","errorTypeUpstreamError":"Errore a monte","proxySourceGlobal":"Globale","proxySourceProvider":"Fornitore","proxySourceKey":"Chiave","proxyConfiguredBySource":"Proxy ({source}): {host}","autoPriority":"Automatico: {priority}","proxy":"Procura","retestAuthentication":"Ritestare l\'autenticazione","retest":"Ripetere il test","disableConnection":"Disabilita connessione","enableConnection":"Abilita connessione","reauthenticateConnection":"Autenticare nuovamente questa connessione","proxyConfig":"Configurazione proxy","aliasExistsAlert":"L\'alias \\"{alias}\\" esiste già. Utilizza un modello diverso o modifica l\'alias esistente.","openRouterAnyModelHint":"OpenRouter supporta qualsiasi modello. Aggiungi modelli e crea alias per un accesso rapido.","modelIdFromOpenRouter":"ID modello (da OpenRouter)","openRouterModelPlaceholder":"antropico/claude-3-opus","customModels":"Modelli personalizzati","customModelsHint":"Aggiungi ID modello non presenti nell\'elenco predefinito. Questi saranno disponibili per il routing.","modelId":"ID modello","customModelPlaceholder":"per esempio. gpt-4.5-turbo","loading":"Caricamento...","removeCustomModel":"Rimuovi il modello personalizzato","noCustomModels":"Nessun modello personalizzato ancora aggiunto.","allSuggestedAliasesExist":"Tutti gli alias suggeriti esistono già. Scegli un modello diverso o rimuovi gli alias in conflitto.","failedSaveCustomModel":"Impossibile salvare il modello personalizzato","modelAddedSuccess":"Il modello {modelId} è stato aggiunto correttamente","failedAddModelTryAgain":"Impossibile aggiungere il modello. Per favore riprova.","failedSaveImportedModel":"Impossibile salvare il modello importato nel database personalizzato","failedImportModelsTryAgain":"Impossibile importare i modelli. Per favore riprova.","failedRemoveModelFromDatabase":"Impossibile rimuovere il modello dal database","modelRemovedSuccess":"Modello rimosso con successo","failedDeleteModelTryAgain":"Impossibile eliminare il modello. Per favore riprova.","compatibleModelsDescription":"Aggiungi manualmente modelli compatibili con {type} o importali dall\'endpoint /models.","anthropicCompatibleModelPlaceholder":"claude-3-opus-20240229","openaiCompatibleModelPlaceholder":"gpt-4o","apiKeyValidationFailed":"Convalida della chiave API non riuscita. Controlla la chiave e riprova.","addProviderApiKeyTitle":"Aggiungi la chiave API {provider}","checking":"Controllo...","check":"Controllo","valid":"Valido","invalid":"Non valido","creating":"Creazione...","validationChecksAnthropicCompatible":"La convalida controlla {provider} verificando la chiave API.","validationChecksOpenAiCompatible":"La convalida controlla {provider} tramite /models sull\'URL di base.","priorityLabel":"Priorità","saving":"Risparmio...","save":"Salva","editConnection":"Modifica connessione","accountName":"Nome utente","email":"E-mail","healthCheckMinutes":"Controllo dello stato (min)","healthCheckHint":"Intervallo di aggiornamento del token proattivo. 0 = disabilitato.","groupLabel":"Environment","groupPlaceholder":"e.g. eKaizen, Personal","failedTestConnection":"Impossibile testare la connessione","failed":"Fallito","leaveBlankKeepCurrentApiKey":"Lascia vuoto per mantenere la chiave API corrente.","editCompatibleTitle":"Modifica {type} Compatibile","compatibleBaseUrlHint":"Root URL of your {type}-compatible API. Use Advanced Settings for custom endpoint paths.","apiKeyForCheck":"Chiave API (per controllo)","compatibleProdPlaceholder":"{type} Compatibile (prodotto)","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":"Sincronizzazione automatica","autoSyncTooltip":"Aggiorna automaticamente l\'elenco dei modelli ogni 24 ore (configurabile tramite MODEL_SYNC_INTERVAL_HOURS)","autoSyncEnabled":"Sincronizzazione automatica abilitata — i modelli verranno aggiornati periodicamente","autoSyncDisabled":"Sincronizzazione automatica disabilitata","autoSyncToggleFailed":"Impossibile attivare la sincronizzazione automatica","allModelsAlreadyImported":"Tutti i modelli sono già importati","noNewModelsToImport":"Nessun nuovo modello da importare — tutti i modelli sono già nel registro o nell\'elenco dei modelli personalizzati","skippingExistingModels":"Salto {count} modelli esistenti"},"settings":{"title":"Impostazioni","general":"Generale","security":"Sicurezza","appearance":"Aspetto","routing":"Instradamento","cache":"Cache","resilience":"Resilienza","systemPrompt":"Richiesta di sistema","thinkingBudget":"Pensare al bilancio","proxy":"Procura","pricing":"Prezzi","storage":"Magazzinaggio","policies":"Politiche","ipFilter":"Filtro IP","comboDefaults":"Impostazioni predefinite combinate","fallbackChains":"Catene di ripiego","changePassword":"Cambiare la password","enablePassword":"Abilita password","darkMode":"Modalità oscura","lightMode":"Modalità luce","systemTheme":"Tema del sistema","enableCache":"Abilita cache","cacheTTL":"TTL della cache","maxCacheSize":"Dimensione massima della cache","clearCache":"Cancella cache","cacheHits":"Riscontri nella cache","cacheMisses":"Mancati cache","hitRate":"Tasso di successo","cacheEntries":"Voci della cache","circuitBreaker":"Interruttore automatico","retryPolicy":"Riprova la policy","maxRetries":"Numero massimo di tentativi","retryDelay":"Ritardo riprova","timeoutMs":"Timeout (ms)","enableSystemPrompt":"Abilita richiesta di sistema","systemPromptText":"Testo della richiesta di sistema","enableThinking":"Abilita il pensiero","maxThinkingTokens":"Gettoni pensiero massimo","enableProxy":"Abilita proxy","proxyUrl":"URL proxy","pricingRates":"Formato delle tariffe dei prezzi","currentPricing":"Panoramica dei prezzi attuali","loadingPricing":"Caricamento dati sui prezzi...","noPricing":"Nessun dato sui prezzi disponibile","input":"Ingresso","output":"Produzione","cached":"Memorizzato nella cache","reasoning":"Ragionamento","cacheCreation":"Creazione della cache","customPricing":"Prezzi personalizzati","databaseSize":"Dimensioni del database","backupDb":"Backup della banca dati","restoreDb":"Ripristina database","exportData":"Esporta dati","importData":"Importa dati","clearData":"Cancella tutti i dati","clearDataConfirm":"Ciò eliminerà definitivamente tutti i dati. Sei sicuro?","enableRequestLogs":"Abilita i registri delle richieste","logRetention":"Conservazione del registro","ipWhitelist":"Lista bianca IP","ipBlacklist":"Lista nera IP","addIP":"Aggiungi IP","savedSuccessfully":"Impostazioni salvate con successo","ai":"AI","advanced":"Avanzato","localMode":"Modalità locale: tutti i dati archiviati sul computer","settingsSectionsAria":"Sezioni Impostazioni","switchThemes":"Passa dal tema chiaro a quello scuro e viceversa","themeSelectionAria":"Selezione del tema","themeLight":"Leggero","themeDark":"Buio","themeSystem":"Sistema","hideHealthLogs":"Nascondi i registri di controllo dello stato","hideHealthLogsDesc":"Quando è attivo, elimina i messaggi [HealthCheck] nella console del server","themeAccent":"Colore del tema","themeAccentDesc":"Scegli un colore predefinito o crea il tuo tema con un solo colore","themeCreate":"Crea tema","themeCustom":"Tema personalizzato","themeBlue":"Blu","themeRed":"Rosso","themeGreen":"Verde","themeViolet":"Viola","themeOrange":"Arancione","themeCyan":"Ciano","promptCache":"Cache dei suggerimenti","flushCache":"Svuota cache","flushing":"Lavaggio…","size":"Misurare","hits":"Colpi","evictions":"Sfratti","loadingCacheStats":"Caricamento delle statistiche della cache…","globalProxy":"Procura globale","globalProxyDesc":"Configura un proxy in uscita globale per tutte le chiamate API. Singoli provider, combinazioni e chiavi possono sovrascrivere questo aspetto.","noGlobalProxy":"Nessun proxy globale configurato","globalLabel":"Globale","configure":"Configura","globalSystemPrompt":"Prompt del sistema globale","systemPromptDesc":"Inserito in tutte le richieste a livello proxy","saved":"Salvato","systemPromptPlaceholder":"Inserisci la richiesta di sistema per l\'inserimento in tutte le richieste...","systemPromptHint":"Questo prompt viene anteposto al messaggio di sistema di ogni richiesta. Utilizzare per istruzioni globali, linee guida sulla sicurezza o regole di formattazione della risposta.","chars":"{count} caratteri","thinkingBudgetTitle":"Pensare al bilancio","thinkingBudgetDesc":"Controlla l\'utilizzo dei token di ragionamento dell\'intelligenza artificiale in tutte le richieste","passthrough":"Passante","passthroughDesc":"Nessun cambiamento: il cliente controlla il budget","auto":"Auto","autoDesc":"Elimina ogni configurazione pensante: lascia decidere al provider","custom":"Costume","customDesc":"Imposta un budget token fisso per tutte le richieste","adaptive":"Adattivo","adaptiveDesc":"Ridimensiona il budget in base alla complessità della richiesta","effortNone":"Nessuno (0 token)","effortLow":"Basso (token da 1.000)","effortMedium":"Medio (token da 10.000)","effortHigh":"Alto (token 128K)","tokenBudget":"Bilancio simbolico","tokens":"gettoni","baseEffortLevel":"Livello di impegno base","adaptiveHint":"La modalità adattiva si adatta a questo livello di base in base al conteggio dei messaggi, all\'utilizzo dello strumento e alla lunghezza dei prompt.","requireLogin":"Richiedi l\'accesso","requireLoginDesc":"Quando è attivo, il dashboard richiede la password. Quando OFF, accedi senza login.","currentPassword":"password attuale","enterCurrentPassword":"Inserisci la password attuale","newPassword":"Nuova parola d\'ordine","enterNewPassword":"Inserisci la nuova password","confirmPassword":"Conferma nuova password","confirmPasswordPlaceholder":"Conferma la nuova password","passwordsNoMatch":"Le password non corrispondono","passwordUpdated":"Password aggiornata con successo","failedUpdatePassword":"Impossibile aggiornare la password","errorOccurred":"Si è verificato un errore","updatePassword":"Aggiorna password","setPassword":"Imposta password","apiEndpointProtection":"Protezione endpoint API","requireAuthModels":"Richiedi la chiave API per /models","requireAuthModelsDesc":"Quando è attivo, l\'endpoint /v1/models restituisce 404 per le richieste non autenticate. Impedisce il rilevamento del modello da parte di utenti non autorizzati.","blockedProviders":"Provider bloccati","blockedProvidersDesc":"Nascondi provider specifici dalla risposta /v1/models. I fornitori bloccati non verranno visualizzati negli elenchi dei modelli.","providersBlocked":"{count} provider bloccati da /models","blockProviderTitle":"Blocca {provider}","unblockProviderTitle":"Sblocca {provider}","routingStrategy":"Strategia di instradamento","fillFirst":"Riempi prima","fillFirstDesc":"Utilizza gli account in ordine di priorità","roundRobin":"Girotondo","roundRobinDesc":"Scorri tutti gli account","p2c":"P2C","p2cDesc":"Scegline 2 a caso, usa quello più sano","random":"Casuale","randomDesc":"Account casuale per ogni richiesta","leastUsed":"Meno usato","leastUsedDesc":"Scegli l\'account utilizzato meno di recente","costOpt":"Opzione costo","costOptDesc":"Preferisci il conto più economico disponibile","strictRandom":"Strict Random","strictRandomDesc":"Shuffle deck — uses each account once before reshuffling","stickyLimit":"Limite appiccicoso","stickyLimitDesc":"Chiamate per account prima del cambio","modelAliases":"Alias del modello","modelAliasesTitle":"Alias dei Modelli","modelAliasesDesc":"Modelli di caratteri jolly per rimappare i nomi dei modelli • Utilizzare * e ?","addCustomAlias":"Aggiungi Alias Personalizzato","deprecatedModelId":"ID modello deprecato","newModelId":"Nuovo ID modello","customAliases":"Alias Personalizzati","builtInAliases":"Alias Integrati","backgroundDegradationTitle":"Degradazione Attività in Background","backgroundDegradationDesc":"Rileva automaticamente le attività in background (titoli, riassunti) e reindirizza a modelli più economici","enableDegradation":"Abilita Degradazione in Background","enableDegradationHint":"Quando abilitato, le attività in background come generazione titoli e riassunti vengono reindirizzate automaticamente a modelli più economici","tasksDetected":"Attività rilevate","degradationMap":"Mappa di Degradazione dei Modelli","premiumModel":"Modello premium","cheapModel":"Modello economico","detectionPatterns":"Pattern di Rilevamento","newPattern":"es: \\"genera un titolo\\"","aliasPatternPlaceholder":"claude-sonetto-*","aliasTargetPlaceholder":"claude-sonetto-4-20250514","pattern":"Modello","targetModel":"Modello obiettivo","add":"+ Aggiungi","session":"Sessione","sessionDetailsAria":"Dettagli della sessione","status":"Stato","authenticated":"Autenticato","guest":"Ospite","loginTime":"Orario di accesso","sessionAge":"Età della sessione","browser":"Navigatore","clearLocalData":"Cancella dati locali","logout":"Esci","clearLocalDataConfirm":"Cancellare tutti i dati locali? Ciò ripristinerà le tue preferenze.","unknown":"Sconosciuto","systemActor":"sistema","ipAccessControl":"Controllo dell\'accesso IP","ipAccessControlDesc":"Blocca o consenti indirizzi IP specifici","ipModeDisabled":"Disabilitato","ipModeBlacklist":"Lista nera","ipModeWhitelist":"Lista bianca","ipModeWhitelistPriority":"Priorità WL","addIpAddress":"Aggiungi indirizzo IP","ipAddressPlaceholder":"192.168.1.0/24 o 10.0.*.*","block":"+ Blocca","allow":"+ Consenti","blocked":"Bloccato ({count})","allowed":"Consentito ({count})","temporaryBans":"Divieti temporanei ({count})","minLeft":"{min}m rimasti","auditLog":"Registro di controllo","searchAuditLogs":"Cerca nei log di controllo...","failedLoadAuditLog":"Impossibile caricare il registro di controllo","noAuditEvents":"Nessun evento di controllo trovato","action":"Azione","actor":"Attore","details":"Dettagli","time":"Tempo","fallbackChainsTitle":"Catene di ripiego","fallbackChainsDesc":"Definire l\'ordine di fallback del fornitore per modello","addChain":"+ Aggiungi catena","modelName":"Nome del modello","modelNamePlaceholder":"claude-sonetto-4-20250514","providersCommaSeparated":"Fornitori (separati da virgole, in ordine di priorità)","providersCommaSeparatedPlaceholder":"antropico, openai, gemelli","createChain":"Crea catena","noFallbackChains":"Nessuna catena di fallback","noFallbackChainsDesc":"Creare una catena per definire l\'ordine di fallback del provider per un modello.","loadingFallbackChains":"Caricamento catene di fallback...","deleteChainConfirm":"Eliminare la catena di fallback per \\"{model}\\"?","chainCreated":"Catena creata per {model}","chainDeleted":"Catena eliminata per {model}","failedCreateChain":"Impossibile creare la catena","failedDeleteChain":"Impossibile eliminare la catena","deleteChain":"Elimina catena","fillModelAndProviders":"Inserisci il nome del modello e i fornitori","addAtLeastOneProvider":"Aggiungi almeno un fornitore","comboDefaultsTitle":"Impostazioni predefinite combinate","globalComboConfig":"Configurazione combinata globale","defaultStrategy":"Strategia predefinita","defaultStrategyDesc":"Applicato a nuove combo senza strategia esplicita","comboStrategyAria":"Strategia combinata","priority":"Priorità","weighted":"Ponderato","maxRetriesLabel":"Numero massimo di tentativi","retryDelayLabel":"Ritardo tentativi (ms)","timeoutLabel":"Timeout (ms)","healthCheck":"Controllo dello stato di salute","healthCheckDesc":"Verifica preventiva la disponibilità del fornitore","trackMetrics":"Tieni traccia delle metriche","trackMetricsDesc":"Registra i parametri delle richieste per combo","providerOverrides":"Il fornitore esegue l\'override","providerOverridesDesc":"Sostituisci timeout e tentativi per provider. Le impostazioni del provider sovrascrivono le impostazioni predefinite globali.","providerMaxRetriesAria":"{provider} numero massimo di tentativi","providerTimeoutAria":"{provider} timeout ms","removeProviderOverrideAria":"Rimuovi la sostituzione {provider}","newProviderNamePlaceholder":"per esempio. google, apri...","newProviderNameAria":"Nuovo nome del fornitore","retries":"riprova","ms":"SM","saveComboDefaults":"Salva impostazioni predefinite combo","maxNestingDepth":"Profondità massima di nidificazione","concurrencyPerModel":"Concorrenza/modello","queueTimeout":"Timeout coda (ms)","providerProfiles":"Profili dei fornitori","providerProfilesDesc":"Impostazioni di resilienza separate per i provider OAuth (basati sulla sessione) e API Key (misurati). I fornitori di OAuth hanno soglie più rigide a causa di limiti di velocità inferiori.","oauthProviders":"Provider OAuth","apiKeyProviders":"Fornitori di chiavi API","transientCooldown":"Recupero temporaneo","rateLimitCooldown":"Recupero del limite di velocità","maxBackoffLevel":"Livello massimo di backoff","cbThreshold":"Soglia CB","cbResetTime":"Tempo di ripristino dell\'interruttore","rateLimiting":"Limitazione della velocità","rateLimitingDesc":"I fornitori di chiavi API sono automaticamente limitati in termini di velocità con impostazioni predefinite sicure. I limiti vengono appresi dalle intestazioni di risposta e si adattano nel tempo.","defaultSafetyNet":"Rete di sicurezza predefinita","rpm":"giri al minuto","minGap":"Divario minimo","maxConcurrent":"Massimo simultaneo","activeLimiters":"Limitatori attivi","noActiveLimiters":"Nessun limitatore di velocità attivo ancora.","reservoir":"Serbatoio","running":"Corsa","queued":"In coda","circuitBreakers":"Interruttori automatici","breakerStateClosed":"Chiuso","breakerStateOpen":"Aprire","breakerStateHalfOpen":"Semiaperto","tripped":"{count} è inciampato","healthy":"{count} sano","resetAll":"Reimposta tutto","noCircuitBreakers":"Nessun interruttore ancora attivo. Vengono creati automaticamente quando le richieste passano attraverso la pipeline combinata.","failures":"{count} errore/i","policiesLocked":"Policy e identificatori bloccati","allOperational":"Tutti i sistemi sono operativi: nessun blocco o interruttore scattato","loadingPolicies":"Caricamento policy...","lockedIdentifiers":"Identificatori bloccati","unlockedIdentifier":"Sbloccato: {identifier}","sinceDate":"dal {date}","forceUnlock":"Sblocco forzato","unlocking":"Sblocco...","failedUnlock":"Impossibile sbloccare","failedLoadWithStatus":"Impossibile caricare: {status}","failedLoadResilience":"Impossibile caricare lo stato di resilienza","saveFailed":"Salvataggio non riuscito","resetFailed":"Reimpostazione non riuscita","loadingResilience":"Caricamento dello stato di resilienza...","retry":"Riprova","systemStorage":"Sistema e archiviazione","allDataLocal":"Tutti i dati archiviati localmente sul tuo computer","databasePath":"Percorso del database","exportDatabase":"Esporta banca dati","exportAll":"Esporta tutto (.tar.gz)","importDatabase":"Importa banca dati","confirmDbImport":"Conferma l\'importazione del database","confirmDbImportDesc":"Questo sostituirà tutti i dati correnti con il contenuto di {file}. Un backup verrà creato automaticamente prima dell\'importazione.","yesImport":"Sì, importa","lastBackup":"Ultimo backup","noBackupYet":"Nessun backup ancora","backupNow":"Esegui il backup ora","backupRestore":"Backup e ripristino","viewBackups":"Visualizza backup","hide":"Nascondere","backupRetentionDesc":"Gli snapshot del database vengono creati automaticamente prima del ripristino e ogni 15 minuti in caso di modifica dei dati. Conservazione: 24 ore su 24 + 30 backup giornalieri con rotazione intelligente.","loadingBackups":"Caricamento dei backup...","noBackupsYet":"Nessun backup ancora disponibile. I backup verranno creati automaticamente quando i dati cambiano.","backupsAvailable":"{count} backup disponibili","refresh":"Aggiorna","confirm":"Confermare?","yes":"SÌ","no":"NO","restore":"Ripristinare","invalidFileType":"Tipo di file non valido. Sono accettati solo file .sqlite.","exportFailed":"Esportazione non riuscita","exportFailedWithError":"Esportazione non riuscita: {error}","fullExportFailedWithError":"Esportazione completa non riuscita: {error}","backupCreated":"Backup creato: {file}","restoreSuccess":"Restaurato! Connessioni {connections}, nodi {nodes}, combo {combos}, chiavi API {apiKeys}.","importSuccess":"Database importato! Connessioni {connections}, nodi {nodes}, combo {combos}, chiavi API {apiKeys}.","justNow":"proprio adesso","minutesAgo":"{count}m fa","hoursAgo":"{count}h fa","daysAgo":"{count}d fa","backupReasonManual":"manuale","backupReasonPreRestore":"pre-ripristino","connectionsCount":"{count, plural, one {# connection} other {# connections}}","noChangesSinceBackup":"Nessuna modifica dall\'ultimo backup","backupFailed":"Backup non riuscito","restoreFailed":"Ripristino non riuscito","importFailed":"Importazione non riuscita","errorDuringRestore":"Si è verificato un errore durante il ripristino","errorDuringImport":"Si è verificato un errore durante l\'importazione","modelPricing":"Prezzi del modello","modelPricingDesc":"Configura le tariffe per modello • Tutte le tariffe in token da $/1 milione","providers":"Fornitori","registry":"Registro","priced":"Prezzo","searchProvidersModels":"Cerca fornitori o modelli...","showAll":"Mostra tutto","noProvidersMatch":"Nessun fornitore corrisponde alla tua ricerca.","howPricingWorks":"Come funzionano i prezzi","cacheWrite":"Scrittura nella cache","unsaved":"non salvato","resetDefaults":"Ripristina le impostazioni predefinite","saveProvider":"Salva fornitore","saving":"Risparmio...","model":"Modello","models":"modelli","moreProviders":"{count} altri fornitori","withPricing":"con i prezzi configurati","policiesCircuitBreakers":"Politiche e interruttori automatici","activeIssuesDetected":"Rilevati problemi attivi","off":"Spento","resetPricingConfirm":"Ripristinare tutti i prezzi per {provider} ai valori predefiniti?","pricingDescInput":"Input: token inviati al modello","pricingDescOutput":"Output: token generati","pricingDescCached":"Memorizzato nella cache: input riutilizzato (~50% della velocità di input)","pricingDescReasoning":"Ragionamento: gettoni pensanti (ricade nell\'Output)","pricingDescCacheWrite":"Scrittura cache: creazione di voci cache (ricade su Input)","pricingDescFormula":"Costo = (input × input_rate) + (output × output_rate) + (cache × cached_rate) per milione di token.","pricingSettingsTitle":"Impostazioni dei prezzi","totalModels":"Modelli totali","active":"Attivo","costCalculation":"Calcolo dei costi","costCalculationDesc":"I costi vengono calcolati in base all\'utilizzo dei token e alle tariffe configurate per ciascun modello.","pricingFormat":"Formato dei prezzi","pricingFormatDesc":"Tutte le tariffe sono in token $/1 milione (dollari per milione di token).","tokenTypes":"Tipi di token","inputTokenDesc":"Token di richiesta standard","outputTokenDesc":"Token di completamento/risposta","cachedTokenDesc":"Token di input memorizzati nella cache (in genere il 50% della velocità di input)","reasoningTokenDesc":"Segnalini ragionamento/pensiero speciali (ripiego al tasso di produzione)","cacheCreationTokenDesc":"Token utilizzati per creare voci nella cache (fallback alla velocità di input)","customPricingNote":"Puoi sostituire i prezzi predefiniti per modelli specifici. Le sostituzioni personalizzate hanno la priorità sui prezzi rilevati automaticamente.","editPricing":"Modifica prezzi","viewFullDetails":"Visualizza i dettagli completi","themeCoral":"Corallo","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":"Guida al percorso avanzata","routingAdvancedGuideHint1":"Utilizza Fill First per una priorità prevedibile, Round Robin per l\'equità e P2C per la resilienza alla latenza.","routingAdvancedGuideHint2":"Se i fornitori variano in termini di qualità/costo, iniziare con Opzione costo per il lavoro in background e Meno utilizzato per un consumo equilibrato.","comboDefaultsGuideTitle":"Come ottimizzare le impostazioni predefinite della combo","comboDefaultsGuideHint1":"Mantenere bassi i tentativi nei flussi a bassa latenza; aumentare il timeout solo per attività di generazione prolungata.","comboDefaultsGuideHint2":"Utilizzare le sostituzioni del provider quando un provider necessita di un comportamento di timeout/riprova diverso rispetto alle impostazioni predefinite globali."},"translator":{"title":"Traduttore","metaTitle":"Parco giochi per traduttori | OmniRoute","metaDescription":"Eseguire il debug, testare e visualizzare le traduzioni del formato API tra fornitori","playgroundTitle":"Parco giochi per traduttori","playground":"Parco giochi","realtime":"Attività di traduzione in tempo reale","chatTester":"Tester della chat","testBench":"Banco di prova","liveMonitor":"Monitoraggio dal vivo","modeDescriptionPlayground":"Incolla qualsiasi corpo della richiesta API e guarda come OmniRoute lo traduce tra i formati del provider (OpenAI ↔ Claude ↔ Gemini ↔ Responses API)","modeDescriptionChatTester":"Invia richieste di chat reali tramite OmniRoute e controlla l\'intero percorso di andata e ritorno: input, richiesta tradotta, risposta del fornitore e output tradotto.","modeDescriptionTestBench":"Esegui scenari predefiniti e confronta la compatibilità tra provider e modelli.","modeDescriptionLiveMonitor":"Guarda gli eventi di traduzione in tempo reale mentre le richieste fluiscono attraverso OmniRoute.","modeDescriptionFallback":"Eseguire il debug, testare e visualizzare come OmniRoute traduce le richieste API tra provider.","recentTranslations":"Traduzioni recenti","noTranslations":"Nessuna traduzione ancora","source":"Fonte","target":"Bersaglio","time":"Tempo","model":"Modello","status":"Stato","latency":"Latenza","totalTranslations":"Traduzioni totali","successful":"Riuscito","errors":"Errori","avgLatency":"Latenza media","millisecondsShort":"{value}ms","notAvailableSymbol":"—","liveAutoRefreshing":"Live: aggiornamento automatico","paused":"In pausa","eventsAppearHint":"Gli eventi di traduzione vengono visualizzati qui mentre le richieste passano attraverso OmniRoute. Utilizza uno di questi metodi per generare eventi:","chatTesterTab":"Scheda Tester chat","testBenchTab":"Scheda Banco di prova","externalApiCalls":"Chiamate API esterne","ideCliIntegrations":"Integrazioni IDE/CLI","inMemoryNote":"Nota: gli eventi vengono archiviati in memoria e ripristinati al riavvio del server.","ok":"OK","errorShort":"ERR","formatConverter":"Convertitore di formato","formatConverterDescription":"Incolla o digita il corpo della richiesta JSON. Il traduttore rileverà automaticamente il formato di origine e lo convertirà nel formato di destinazione. Utilizzalo per eseguire il debug del modo in cui OmniRoute traduce le richieste tra formati (OpenAI ↔ Claude ↔ Gemini ↔ API delle risposte).","input":"Ingresso","output":"Produzione","auto":"Auto","swapFormats":"Scambia formati","translateAction":"Tradurre","clear":"Chiaro","inputPlaceholder":"Incolla qui il corpo della richiesta o seleziona un modello qui sotto...","exampleTemplates":"Modelli di esempio","exampleTemplatesHint":"— Fare clic per caricare","templateLoadHint":"Il modello carica la richiesta nel formato {format}. Cambia il formato di origine per caricare in un formato diverso.","compatibilityTester":"Tester di compatibilità","compatibilityReport":"Rapporto sulla compatibilità","testBenchDescription":"Esegui scenari predefiniti (Chat semplice, Chiamata di strumenti, ecc.) per verificare la compatibilità della traduzione e del provider. Seleziona un formato di origine e un provider di destinazione, quindi esegui tutti i test per visualizzare una percentuale di compatibilità. Usalo per scoprire quali funzionalità funzionano tra i diversi fornitori.","targetProvider":"Fornitore di destinazione","runAllTests":"Esegui tutti i test","runTest":"Esegui prova","reRun":"Rieseguire","running":"Corsa...","passed":"passato","failed":"fallito","passedIconLabel":"✅Superato","chunks":"pezzi","scenarioSimpleChat":"Chat semplice","scenarioToolCalling":"Chiamata dello strumento","scenarioMultiTurn":"Multigiro","scenarioThinking":"Pensiero","scenarioSystemPrompt":"Richiesta di sistema","scenarioStreaming":"Streaming","templateNames":{"simple-chat":"Chat semplice","tool-calling":"Chiamata dello strumento","multi-turn":"Multigiro","thinking":"Pensiero","system-prompt":"Richiesta di sistema","streaming":"Streaming"},"templateDescriptions":{"simple-chat":"Messaggio di testo di base","tool-calling":"Invocazione di funzioni/strumenti","multi-turn":"Conversazione con la storia","thinking":"Pensiero/ragionamento esteso","system-prompt":"Istruzioni di sistema complesse","streaming":"Richiesta di streaming SSE"},"templatePayloads":{"simpleChat":{"system":"Sei un assistente utile.","userGreeting":"Ciao! Come stai oggi?"},"toolCalling":{"userWeather":"Che tempo fa a San Paolo?","toolDescription":"Ottieni il meteo attuale per una località","cityNameDescription":"Nome della città"},"multiTurn":{"system":"Sei un assistente di codifica.","userInitial":"Scrivi una funzione per ordinare un array in Python.","assistantExample":"Ecco una semplice funzione di ordinamento:\\n\\n```pitone\\ndef sort_array(arr):\\n restituire ordinato(arr)\\n```","userFollowUp":"Ora ordinalo in ordine decrescente."},"thinking":{"question":"Qual è la somma dei primi 100 numeri primi?"},"systemPrompt":{"systemInstruction":"Sei un ingegnere informatico senior specializzato in sistemi distribuiti. Rispondi alle domande in modo conciso utilizzando le migliori pratiche del settore. Fornisci sempre esempi di codice quando pertinente. Formatta le tue risposte utilizzando Markdown.","question":"Come si implementa un modello di interruttore automatico?"},"streaming":{"prompt":"Raccontami una breve storia su un robot che impara a dipingere."}},"openaiCompatibleLabel":"Compatibile con OpenAI","anthropicCompatibleLabel":"Compatibile antropico","noTemplateForFormat":"Nessun modello per questo formato","translationFailed":"Traduzione non riuscita: {error}","pipelineDebugger":"Debug della pipeline","translationPipeline":"Pipeline di traduzione","pipelineVisualization":"Visualizzazione della pipeline","pipelineVisualizationHint":"Invia un messaggio per vedere come scorre la tua richiesta attraverso rilevamento → traduzione → chiamata al fornitore.","chatTesterDescription":"Invia messaggi in un formato client specifico e ispeziona ogni passaggio della pipeline di traduzione.","chatTesterFlow":"Richiesta client → Rilevamento formato → OpenAI Intermediate → Formato provider → Risposta","clickStepToInspect":"Fare clic su qualsiasi passaggio per controllare i dati in quella fase.","clientFormat":"Formato cliente","provider":"Fornitore","modelPlaceholder":"Seleziona o digita il nome di un modello...","sendMessageToSeePipeline":"Invia un messaggio per vedere la pipeline di traduzione","chatMessageHintPrefix":"Il tuo messaggio sarà formattato come a","chatMessageHintSuffix":"richiesta, tradotta attraverso la pipeline e inviata al fornitore selezionato.","youWithFormat":"Tu ({format})","assistant":"Assistente","typeMessage":"Digita un messaggio...","send":"Inviare","clientRequest":"Richiesta del cliente","clientRequestDescription":"Il corpo della richiesta così come lo invierebbe il tuo cliente","formatDetected":"Formato rilevato","formatDetectedDescription":"OmniRoute rileva automaticamente il formato API dalla struttura della richiesta","openaiIntermediate":"OpenAI intermedio","openaiIntermediateDescription":"Tutti i formati vengono prima normalizzati nel formato OpenAI (il bridge universale)","providerFormat":"Formato del fornitore","providerFormatDescription":"Il formato OpenAI è tradotto nel formato nativo del provider","providerResponse":"Risposta del fornitore","providerResponseRawDescription":"La risposta non elaborata dall\'API del provider","providerResponseSseDescription":"Il flusso SSE non elaborato dall\'API del provider","unexpectedError":"Si è verificato un errore imprevisto","error":"Errore","errorMessage":"Errore: {message}","requestFailed":"Richiesta non riuscita","noTextExtracted":"(Nessun testo estratto)","liveMonitorDescriptionPrefix":"Mostra gli eventi di traduzione mentre le chiamate API fluiscono attraverso OmniRoute. Gli eventi provengono dal buffer in memoria (si ripristina al riavvio). Utilizzo","liveMonitorDescriptionSuffix":"o chiamate API esterne per generare eventi."},"usage":{"title":"Utilizzo","loggerTab":"Registratore","proxyTab":"Procura","budgetManagement":"Gestione del bilancio","budgetSaved":"Limiti di budget salvati","budgetSaveFailed":"Impossibile salvare il budget","loadingBudgetData":"Caricamento dei dati del budget...","noApiKeysTitle":"Nessuna chiave API","noApiKeysDescription":"Aggiungi prima le chiavi API per impostare i limiti di budget.","apiKey":"Chiave API","todaysSpend":"La spesa di oggi","thisMonth":"Questo mese","setLimits":"Imposta limiti","dailyLimitUsd":"Limite giornaliero (USD)","monthlyLimitUsd":"Limite mensile (USD)","warningThresholdPercent":"Soglia di avviso (%)","dailyLimitPlaceholder":"per esempio. 5.00","monthlyLimitPlaceholder":"per esempio. 50,00","warningThresholdPlaceholder":"80","saveLimits":"Salva limiti","budgetOk":"Budget OK: {remaining} rimanente","budgetExceeded":"Budget superato: le richieste potrebbero essere bloccate","totalRequests":"Richieste totali","noDataYet":"Nessun dato ancora","latency":"Latenza","latencyP50":"p50","latencyP95":"p95","latencyP99":"p99","promptCache":"Cache dei suggerimenti","systemHealth":"Salute del sistema","entries":"Voci","activeCount":"{count} attivo","openCircuitBreakersDetected":"Rilevati interruttori automatici aperti","hitRate":"Tasso di successo","hitsMisses":"Colpi / Mancati","circuitBreakers":"Interruttori automatici","lockedIPs":"IP bloccati","lockoutsAutoRefreshHint":"Blocchi del limite di velocità per modello • Aggiornamento automatico 10 secondi","lockedCount":"{count, plural, one {# locked} other {# locked}}","timeLeft":"{time} rimasto","howItWorks":"Come funziona","howItWorksSubtitle":"Scopri come le valutazioni convalidano le tue risposte LLM","define":"Definire","defineStepDescription":"Crea casi di test con prompt di input e criteri di output previsti utilizzando strategie come contiene, regex o corrispondenza esatta.","run":"Correre","runStepDescription":"Esegui casi di test sugli endpoint LLM tramite OmniRoute. Ogni caso viene inviato come una vera richiesta API.","evaluate":"Valutare","evaluateStepDescription":"Le risposte vengono confrontate con i criteri attesi. Visualizza il superamento/fallimento per ciascun caso con parametri di latenza e feedback dettagliato.","evalSuites":"Suite di valutazione","evalSuitesHint":"Fai clic su una suite per visualizzare i casi di test, quindi esegui per valutare i tuoi endpoint LLM","evalsLoading":"Caricamento suite di valutazione...","noEvalSuitesFound":"Nessuna suite di valutazione trovata","noEvalSuitesDescription":"Le suite di valutazione possono essere definite tramite l\'API o nel codice. Testano gli output del modello rispetto ai risultati attesi utilizzando strategie come contiene, regex, corrispondenza esatta e funzioni personalizzate.","columnCase":"Caso","columnStatus":"Stato","columnLatency":"Latenza","columnDetails":"Dettagli","columnModel":"Modello","columnStrategy":"Strategia","columnExpected":"Previsto","statsSuites":"Suite","statsTestCases":"Casi di prova","statsModels":"Modelli","statsCoverage":"Copertura","statsStrategiesCount":"{count} strategie","evaluationStrategies":"Strategie di valutazione","modelsUnderTest":"Modelli in prova","searchSuitesPlaceholder":"Cerca suite...","passSuffix":"passaggio","casesCount":"{count, plural, one {# case} other {# cases}}","runEval":"Esegui valutazione","runningProgress":"In esecuzione {current}/{total}...","passRate":"tasso di passaggio","summaryBreakdown":"{passed} superato · {failed} fallito · {total} totale","passedIconLabel":"✅Superato","failedIconLabel":"❌ Fallito","detailsContains":"Contiene: \\"{term}\\"","detailsRegex":"Regex: {pattern}","detailsExpected":"Previsto: \\"{expected}\\"","noResultsYet":"Nessun risultato ancora","testCasesCount":"Casi di test ({count})","noTestCasesDefined":"Nessun caso di test definito","runEvalHint":"Fai clic su \\"Esegui valutazione\\" per eseguire tutti i casi sull\'endpoint LLM. Ogni test invia una richiesta reale tramite OmniRoute.","notifyNoTestCases":"Nessun caso di test definito per questa suite","notifyAllCasesPassed":"Tutti i casi {total} sono stati superati ✅","notifySomeCasesFailed":"{passed}/{total} superato, {failed} fallito","notifyEvalRunFailed":"L\'esecuzione di valutazione non è riuscita","notifyEvalTitle":"Valutazione: {name}","modelEvals":"Valutazioni dei modelli","evalsHeroDescription":"Testa e convalida i tuoi endpoint LLM eseguendo suite di valutazione predefinite. Ogni suite contiene casi di test che inviano richieste reali tramite OmniRoute e confrontano le risposte con i criteri previsti, aiutandoti a rilevare regressioni, confrontare modelli e garantire la qualità delle risposte tra i fornitori.","qualityValidation":"Convalida della qualità","modelComparison":"Confronto dei modelli","regressionDetection":"Rilevamento della regressione","latencyBenchmarks":"Benchmark di latenza","modelLockouts":"Blocchi del modello","noLockouts":"Nessun modello attualmente bloccato","activeSessions":"Sessioni attive","noSessions":"Nessuna sessione attiva","sessionsHint":"Le sessioni vengono visualizzate mentre le richieste passano attraverso il proxy","sessionsTrackedHint":"Tracciato tramite richiesta di impronta digitale • Aggiornamento automatico 5 s","session":"Sessione","age":"Età","requests":"Richieste","connection":"Connessione","durationMillisecondsShort":"{value}ms","durationSecondsShort":"{value}s","durationMinutesShort":"{value}m","durationHoursShort":"{value}h","reasonSeparator":" - ","notAvailableSymbol":"-","providerLimits":"Limiti del fornitore","noProviders":"Nessun provider connesso","connectProvidersForQuota":"Connettiti ai provider con OAuth per monitorare i limiti di quota e l\'utilizzo dell\'API.","accountsCount":"{count, plural, one {# account} other {# accounts}}","filteredFromCount":"(filtrato da {count})","autoRefresh":"Aggiornamento automatico","refreshAll":"Aggiorna tutto","loadingQuotas":"Caricamento...","account":"Account","modelQuotas":"Quote modello","lastUsed":"Ultimo utilizzo","actions":"Azioni","refreshQuota":"Aggiorna quota","today":"Oggi","tomorrow":"Domani","dayTimeFormat":"{day}, {time}","inDuration":"in {duration}","notApplicable":"N / A","rawPlanWithValue":"Piano grezzo: {plan}","noPlanFromProvider":"Nessun piano dal fornitore","noQuotaData":"Nessun dato sulle quote","ungrouped":"Ungrouped","viewFlat":"Flat","viewByEnvironment":"By Environment","noQuotaDataAvailable":"Nessun dato sulle quote disponibile","noAccountsForTierFilter":"Nessun account trovato per il filtro del livello","tierAll":"Tutto","tierEnterprise":"Impresa","tierTeam":"Squadra","tierBusiness":"Attività commerciale","tierUltra":"Ultra","tierPro":"Pro","tierPlus":"Più","tierFree":"Gratuito","tierUnknown":"Sconosciuto"},"modals":{"waitingAuth":"In attesa di autorizzazione","verificationUrl":"URL di verifica","yourCode":"Il tuo codice","remoteAccess":"Accesso remoto:","connectedSuccess":"Connesso con successo!","connectionFailed":"Connessione non riuscita","chooseAuthMethod":"Scegli il tuo metodo di autenticazione:","awsBuilderId":"ID del generatore AWS","awsIamIdentity":"Centro identità AWS IAM","googleAccount":"Account Google","githubAccount":"Conto GitHub","importToken":"Importa gettone","pasteToken":"Incolla il token di aggiornamento da Kiro IDE.","awsRegion":"Regione AWS","autoDetecting":"Token di rilevamento automatico...","readingFromCache":"Lettura dalla cache AWS SSO","readingFromCursor":"Lettura dal database Cursor IDE","initializing":"Inizializzazione...","pricingConfig":"Configurazione dei prezzi","loadingPricing":"Caricamento dati sui prezzi...","pricingRatesFormat":"Formato delle tariffe dei prezzi","noPricingData":"Nessun dato sui prezzi disponibile","noModelsFound":"Nessun modello trovato"},"loggers":{"allProviders":"Tutti i fornitori","allModels":"Tutti i modelli","allAccounts":"Tutti i conti","allApiKeys":"Tutte le chiavi API","allTypes":"Tutti i tipi","allLevels":"Tutti i livelli","modelAZ":"Modello dalla A alla Z","modelZA":"Modello Z-A","loadingLogs":"Caricamento registri...","loadingProxyLogs":"Caricamento dei registri proxy...","noLogEntries":"Nessuna voce di registro trovata","noPayloadData":"Nessun dato sul carico utile disponibile per questa voce di registro.","proxyEvent":"Evento proxy","proxy":"Procura","level":"Livello","directNative":"Diretto (nativo)","combo":"Combinato","inputTokens":"IO:","outputTokens":"O:"},"stats":{"usageOverview":"Panoramica sull\'utilizzo","outputTokens":"Gettoni di uscita","totalCost":"Costo totale","usageByModel":"Utilizzo per modello","usageByAccount":"Utilizzo per account","failedToLoad":"Impossibile caricare le statistiche sull\'utilizzo.","tokenHealth":"Gettone di salute","totalOAuth":"OAuth totale","healthy":"Salutare","warning":"Avvertimento","errored":"Errore","lastCheck":"Ultimo controllo","noData":"Nessun dato","share":"Condividere","unableToLoad":"Impossibile caricare le metriche di sistema","product":"Prodotto","resources":"Risorse","company":"Azienda"},"auth":{"welcome":"Benvenuto","signIn":"Registrazione","enterPassword":"Inserisci la tua password per continuare","password":"Password","unifiedProxy":"Proxy API AI unificato","unifiedAiApiProxy":"Proxy API AI unificato","unifiedAiApiProxyDesc":"Instrada le richieste a più fornitori di intelligenza artificiale attraverso un singolo endpoint. Bilanciamento del carico, failover e monitoraggio dell\'utilizzo integrati.","passwordNotEnabled":"La protezione tramite password non è abilitata","loading":"Caricamento...","invalidPassword":"Password non valida","errorOccurredRetry":"Si è verificato un errore. Per favore riprova.","configureInstance":"Configura la tua istanza OmniRoute","runOnboardingWizard":"Esegui la procedura guidata di onboarding per impostare la tua password e connettere il tuo primo provider AI.","startOnboarding":"Inizia l\'onboarding","secureYourInstance":"Proteggi la tua istanza","setPasswordDescription":"Imposta una password per proteggere la tua dashboard e proteggere i tuoi endpoint API da accessi non autorizzati.","configurePassword":"Configura password","continue":"Continuare","windowWillClose":"Questa finestra si chiuderà automaticamente...","closeTabNow":"Puoi chiudere questa scheda ora.","copyUrlManual":"Copia l\'URL dalla barra degli indirizzi e incollalo nell\'applicazione.","accessDeniedDescription":"Non hai l\'autorizzazione per accedere a questa risorsa. Controlla la tua chiave API o contatta l\'amministratore.","goToDashboard":"Vai alla dashboard","featureMultiProviderTitle":"Multi-provider","featureMultiProviderDesc":"OpenAI, Anthropic, Google e altro ancora","featureLoadBalancingTitle":"Bilanciamento del carico","featureLoadBalancingDesc":"Distribuisci le richieste in modo intelligente","featureUsageTrackingTitle":"Monitoraggio dell\'utilizzo","featureUsageTrackingDesc":"Monitorare costi e gettoni","resetPassword":"Reimposta password","resetDescription":"Scegli un metodo per recuperare l\'accesso alla tua dashboard","stopServer":"Arrestare il server OmniRoute","processing":"Elaborazione...","pleaseWait":"Ti preghiamo di attendere mentre completiamo l\'autorizzazione.","authSuccess":"Autorizzazione riuscita!","copyUrl":"Copia questo URL","accessDenied":"Accesso negato","methodCliTitle":"Metodo 1: reimpostazione CLI","methodCliDescription":"Esegui il comando seguente sul server su cui è in esecuzione OmniRoute:","methodCliHint":"Questo ti chiederà di impostare una nuova password. Il server deve essere prima arrestato.","methodManualTitle":"Metodo 2: ripristino manuale","methodManualDescription":"Elimina la password dal database e impostane una nuova all\'avvio:","setPasswordInYour":"Imposta una nuova password nel tuo","fileLabelSuffix":"file:","newPasswordPlaceholder":"la tua_nuova_password","deleteSettingsFile":"Eliminare","orRemovePasswordHashField":"o rimuovere il campo passwordHash","restartServerWithNewPassword":"Riavvia il server: utilizzerà la nuova password","backToLogin":"Torna all\'accesso","forgotPassword":"Ha dimenticato la password?","defaultPasswordHint":"Default password: 123456 (unless INITIAL_PASSWORD was set)","waitingForAuthorization":"Waiting for authorization...","waitingForGoogleAuthorization":"Waiting for Google authorization...","waitingForOpenAIAuthorization":"Waiting for OpenAI authorization...","waitingForAntigravityAuthorization":"Waiting for Antigravity authorization...","waitingForIFlowAuthorization":"Waiting for iFlow authorization...","exchangingCodeForTokens":"Exchanging code for tokens...","Authorization":"Autorizzazione","Content-Disposition":"Disposizione del contenuto"},"landing":{"brandName":"OmniRoute","navigateHome":"Naviga verso casa","toggleMenu":"Cambia menu","featuresLink":"Caratteristiche","docsLink":"Documenti","github":"GitHub","versionLive":"La v1.0 è ora disponibile","oneEndpoint":"Un endpoint per","allProviders":"Tutti i fornitori di intelligenza artificiale","heroDescription":"Proxy endpoint AI con dashboard Web: una porta JavaScript di CLIProxyAPI. Funziona perfettamente con Claude Code, OpenAI Codex, Cline, RooCode e altri strumenti CLI.","getStarted":"Inizia","viewOnGithub":"Visualizza su GitHub","powerfulFeatures":"Funzionalità potenti","featuresSubtitle":"Tutto ciò di cui hai bisogno per gestire la tua infrastruttura IA in un unico posto, progettato per essere scalabile.","featureUnifiedEndpointTitle":"Endpoint unificato","featureUnifiedEndpointDesc":"Accedi a tutti i fornitori tramite un unico URL API standard.","featureEasySetupTitle":"Configurazione semplice","featureEasySetupDesc":"Diventa subito operativo in pochi minuti con il comando npx.","featureModelFallbackTitle":"Modello di ripiego","featureModelFallbackDesc":"Cambia automaticamente provider in caso di guasto o latenza elevata.","featureUsageTrackingTitle":"Monitoraggio dell\'utilizzo","featureUsageTrackingDesc":"Analisi dettagliate e monitoraggio dei costi su tutti i modelli.","featureOAuthApiKeysTitle":"OAuth e chiavi API","featureOAuthApiKeysDesc":"Gestisci in modo sicuro le credenziali in un unico deposito.","featureCloudSyncTitle":"Sincronizzazione nel cloud","featureCloudSyncDesc":"Sincronizza istantaneamente le tue configurazioni su tutti i dispositivi.","featureCliSupportTitle":"Supporto CLI","featureCliSupportDesc":"Funziona con Claude Code, Codex, Cline, Cursor e altro.","featureDashboardTitle":"Pannello di controllo","featureDashboardDesc":"Dashboard visiva per l\'analisi del traffico in tempo reale.","howItWorks":"Come funziona OmniRoute","howItWorksDescription":"I dati fluiscono senza soluzione di continuità dalla tua applicazione attraverso il nostro livello di routing intelligente fino al miglior fornitore per il lavoro.","howItWorksStep1Title":"1. CLI e SDK","howItWorksStep1Description":"Le tue richieste partono dai tuoi strumenti preferiti o dal nostro SDK unificato. Basta cambiare l\'URL di base.","howItWorksStep2Title":"2. Hub OmniRoute","howItWorksStep2Description":"Il nostro motore analizza il prompt, controlla lo stato del provider e instrada la latenza o il costo più bassi.","howItWorksStep3Title":"3. Fornitori di IA","howItWorksStep3Description":"La richiesta viene soddisfatta immediatamente da OpenAI, Anthropic, Gemini o altri.","getStartedIn30Seconds":"Inizia in 30 secondi","getStartedDescription":"Installa OmniRoute, configura i tuoi provider tramite dashboard web e inizia a instradare le richieste AI.","installOmniRoute":"Installa OmniRoute","installStepDescription":"Esegui il comando npx per avviare immediatamente il server","openDashboard":"Apri Dashboard","openDashboardStepDescription":"Configura provider e chiavi API tramite interfaccia web","routeRequests":"Richieste di percorso","routeRequestsStepDescription":"Punta i tuoi strumenti CLI su {endpoint}","terminal":"terminale","copy":"Copia","copied":"✓ Copiato","startingOmniRoute":"Avvio di OmniRoute...","serverRunningOnLabel":"Server in esecuzione","dashboardLabel":"Pannello di controllo","readyToRoute":"Pronti per la rotta! ✓","configureProvidersNote":"📝 Configura i fornitori nella dashboard o utilizza le variabili di ambiente","dataLocation":"Posizione dei dati:","dataLocationMacLinux":"macOS/Linux:","dataLocationWindows":"Finestre:","product":"Prodotto","dashboardLink":"Pannello di controllo","changelog":"Registro delle modifiche","resources":"Risorse","documentation":"Documentazione","npm":"NPM","legal":"Legale","mitLicense":"Licenza del MIT","footerTagline":"L\'endpoint unificato per la generazione di IA. Connetti, instrada e gestisci i tuoi fornitori di intelligenza artificiale con facilità.","copyright":"© {year} OmniRoute. Tutti i diritti riservati.","flowToolClaudeCode":"Codice Claudio","flowToolOpenAICodex":"Codice OpenAI","flowToolCline":"Cline","flowToolCursor":"Cursore","flowProviderOpenAI":"OpenAI","flowProviderAnthropic":"Antropico","flowProviderGemini":"Gemelli","flowProviderGithubCopilot":"Copilota GitHub","interactiveDiagram":"Diagramma interattivo visibile sul desktop","ctaTitle":"Pronto a semplificare la tua infrastruttura AI?","ctaDescription":"Unisciti agli sviluppatori che stanno ottimizzando le loro integrazioni IA con OmniRoute. Open source e avvio gratuito.","startFree":"Inizia gratis","readDocumentation":"Leggi la documentazione"},"docs":{"title":"Documentazione","quickStart":"Avvio rapido","features":"Caratteristiche","supportedProviders":"Provider supportati","supportedProvidersToc":"Fornitori","commonUseCases":"Casi d\'uso comuni","clientCompatibility":"Compatibilità con il cliente","protocolsToc":"Protocols","apiReference":"Riferimento API","method":"Metodo","path":"Sentiero","notes":"Note","modelPrefixes":"Prefissi del modello","prefix":"Prefisso","troubleshooting":"Risoluzione dei problemi","supportsChat":"Supporta sia gli endpoint di chat che quelli di risposta.","oauthAutoRefresh":"Connessione OAuth con aggiornamento automatico del token.","fullStreaming":"Supporto streaming completo per tutti i modelli.","docsLabel":"Documenti","docsHeroDescription":"Gateway AI per LLM multi-provider. Un endpoint per OpenAI, Anthropic, Gemini, GitHub Copilot, Claude Code, Cursor e oltre 20 altri provider.","openDashboard":"Apri Dashboard","endpointPage":"Pagina dell\'endpoint","github":"GitHub","reportIssue":"Segnala problema","onThisPage":"In questa pagina","documentationVersion":"Documentazione - v{version}","quickStartStep1Title":"1. Installa ed esegui","quickStartStep1Prefix":"Correre","quickStartStep1Middle":"oppure clona da GitHub ed esegui","quickStartStep2Title":"2. Crea la chiave API","quickStartStep2Text":"Vai su Endpoint -> Chiavi registrate. Genera una chiave per ambiente.","quickStartStep3Title":"3. Connetti i fornitori","quickStartStep3Text":"Aggiungi account provider tramite accesso OAuth, chiave API o connessione automatica a livello gratuito.","quickStartStep4Title":"4. Imposta l\'URL di base del cliente","quickStartStep4Prefix":"Punta il tuo client IDE o API a","quickStartStep4Suffix":"Utilizza il prefisso del provider, ad esempio","featureRoutingTitle":"Routing multi-provider","featureRoutingText":"Instrada le richieste a oltre 30 fornitori di intelligenza artificiale attraverso un singolo endpoint compatibile con OpenAI. Supporta API di chat, risposte, audio e immagini.","featureCombosTitle":"Combo e bilanciamento","featureCombosText":"Crea combinazioni di modelli con catene di fallback e strategie di bilanciamento: round robin, priorità, casuale, meno utilizzato e con costi ottimizzati.","featureUsageTitle":"Monitoraggio dell\'utilizzo e dei costi","featureUsageText":"Conteggio dei token in tempo reale, calcolo dei costi per provider/modello e suddivisione dettagliata dell\'utilizzo per chiave API e account.","featureAnalyticsTitle":"Pannello di analisi","featureAnalyticsText":"Analisi visiva con grafici per richieste, token, errori, latenza, costi e popolarità del modello nel tempo.","featureHealthTitle":"Monitoraggio sanitario","featureHealthText":"Controlli dello stato in tempo reale, stato del fornitore, stati degli interruttori automatici e rilevamento automatico dei limiti di velocità con backoff esponenziale.","featureCliTitle":"Strumenti CLI","featureCliText":"Gestisci le configurazioni IDE, esporta/importa backup, scopri i profili codex e configura le impostazioni dalla dashboard.","featureSecurityTitle":"Sicurezza e politiche","featureSecurityText":"Autenticazione con chiave API, filtraggio IP, protezione prompt injection, policy di dominio, gestione delle sessioni e registrazione di controllo.","featureCloudSyncTitle":"Sincronizzazione nel cloud","featureCloudSyncText":"Sincronizza la tua configurazione con Cloudflare Workers per l\'accesso remoto con credenziali crittografate e failover automatico.","providersAcrossConnectionTypes":"{count} provider in tre tipi di connessione.","manageProviders":"Gestisci fornitori","providersCount":"{count} fornitori","providerTypeFree":"Livello gratuito","providerTypeOAuth":"OAuth","providerTypeApiKey":"Chiave API","useCaseSingleEndpointTitle":"Endpoint unico per molti provider","useCaseSingleEndpointText":"Puntare i client a un URL di base e instradarli in base al prefisso del modello (ad esempio: gh/, cc/, kr/, openai/).","useCaseFallbackTitle":"Fallback e cambio di modello con combo","useCaseFallbackText":"Crea modelli combinati in Dashboard e mantieni stabile la configurazione del client mentre i fornitori ruotano internamente.","useCaseUsageVisibilityTitle":"Visibilità sull\'utilizzo, sui costi e sul debug","useCaseUsageVisibilityText":"Tieni traccia dei token e dei costi per provider, account e chiave API nelle schede Utilizzo e Analisi.","clientCherryStudioTitle":"Studio della ciliegia","baseUrlLabel":"URL di base","chatEndpointLabel":"Endpoint della chat","modelRecommendationLabel":"Raccomandazione del modello: prefisso esplicito","clientCodexTitle":"Modelli Copilot Codex/GitHub","clientCodexBullet1":"Utilizza gli ID modello con","clientCodexBullet2":"I modelli della famiglia Codex si instradano automaticamente verso","clientCodexBullet3":"I modelli non Codex continuano","clientCursorTitle":"Cursore IDE","clientCursorBullet1":"Utilizzo","clientCursorBullet1Suffix":"prefisso per i modelli Cursor.","clientCursorBullet2":"Connessione OAuth: accedi dalla pagina Provider.","clientClaudeTitle":"Codice Claude / Antigravità","clientClaudeBullet1Prefix":"Utilizzo","clientClaudeBullet1Middle":"(Claude) o","clientClaudeBullet1Suffix":"(Antigravità).","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":"Endpoint chat compatibile con OpenAI (impostazione predefinita).","endpointResponsesNote":"Endpoint API di risposta (Codex, serie o).","endpointModelsNote":"Catalogo dei modelli per tutti i fornitori collegati.","endpointAudioNote":"Trascrizione audio (Deepgram, AssemblyAI).","endpointImagesNote":"Generazione di immagini (NanoBanana).","endpointRewriteChatNote":"Riscrivere l\'helper per i client senza /v1.","endpointRewriteResponsesNote":"Riscrivi l\'helper per le risposte senza /v1.","endpointRewriteModelsNote":"Riscrivere l\'helper per l\'individuazione dei modelli senza /v1.","modelPrefixesDescriptionStart":"Utilizzare il prefisso del provider prima del nome del modello per instradare a un provider specifico. Esempio:","modelPrefixesDescriptionEnd":"percorsi verso GitHub Copilot.","provider":"Fornitore","type":"Tipo","troubleshootingModelRouting":"Se il client non riesce con il routing del modello, utilizzare un provider/modello esplicito (ad esempio: gh/gpt-5.1-codex).","troubleshootingAmbiguousModels":"Se ricevi errori di modello ambigui, scegli il prefisso del provider anziché un semplice ID modello.","troubleshootingCodexFamily":"Per i modelli della famiglia GitHub Codex, mantieni il modello come gh/codex-model; il router seleziona/risponde automaticamente.","troubleshootingTestConnection":"Utilizza Dashboard > Provider > Verifica connessione prima di effettuare test da IDE o client esterni.","troubleshootingCircuitBreaker":"Se un fornitore mostra l\'interruttore aperto, attendi il raffreddamento o controlla la pagina Salute per i dettagli.","troubleshootingOAuth":"Per i provider OAuth, eseguire nuovamente l\'autenticazione se i token scadono. Controlla l\'indicatore di stato della carta del fornitore.","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":"Generazione sintesi vocale (ElevenLabs, OpenAI TTS).","endpointEmbeddingsNote":"Generazione embedding di testo (OpenAI, Cohere, Voyage)."},"legal":{"privacyPolicy":"politica sulla riservatezza","termsOfService":"Termini di servizio","providerConfigurations":"Configurazioni del fornitore","apiKeys":"Chiavi API","usageLogs":"Registri di utilizzo","applicationSettings":"Impostazioni dell\'applicazione","viewExportAnalytics":"Visualizza ed esporta analisi sull\'utilizzo","clearHistory":"Cancella la cronologia di utilizzo in qualsiasi momento","configureRetention":"Configurare i criteri di conservazione dei log","backupRestore":"Esegui il backup e ripristina il tuo database","privacyMetadataTitle":"Informativa sulla privacy | OmniRoute","privacyMetadataDescription":"Informativa sulla privacy per il router proxy API OmniRoute AI.","termsMetadataTitle":"Termini di servizio | OmniRoute","termsMetadataDescription":"Termini di servizio per il router proxy API OmniRoute AI.","backToHome":"Ritorno a casa","lastUpdated":"Ultimo aggiornamento: {date}","policyLastUpdatedDate":"13 febbraio 2026","listSeparator":"-","questionsVisit":"Domande? Visita il nostro","githubRepository":"Repositorio GitHub","privacySection1Title":"1. Architettura locale-prima","privacySection1Text":"OmniRoute è progettato come un\'applicazione local-first. Tutta l\'elaborazione e l\'archiviazione dei dati avviene interamente sul tuo computer. Non esiste un server centralizzato che raccoglie le tue informazioni.","privacySection2Title":"2. Dati che conserviamo","privacyDataStoredIn":"I seguenti dati vengono archiviati localmente in","privacyDataProviderConfigurationsDesc":"URL di connessione, tipi di provider e impostazioni di priorità","privacyDataApiKeysDesc":"crittografati e archiviati localmente per l\'autenticazione con i fornitori di intelligenza artificiale","privacyDataUsageLogsDesc":"conteggi delle richieste, utilizzo dei token, nomi dei modelli, timestamp e tempi di risposta","privacyDataApplicationSettingsDesc":"preferenze del tema, strategia di routing e configurazioni combinate","privacySection3Title":"3. Nessuna telemetria","privacySection3Text":"OmniRoute non raccoglie dati di telemetria, analisi o rapporti sugli arresti anomali. Nessun dato viene inviato a noi o a terzi. I tuoi modelli di utilizzo, le chiamate API e le configurazioni rimangono completamente privati.","privacySection4Title":"4. Fornitori di IA di terze parti","privacySection4Text":"Quando effettui chiamate API tramite OmniRoute, le tue richieste vengono inoltrate ai fornitori di intelligenza artificiale che hai configurato (ad esempio: OpenAI, Anthropic, Google). Questi fornitori hanno le proprie politiche sulla privacy che regolano il modo in cui gestiscono i tuoi dati. Si prega di rivedere:","privacyOpenAiPolicy":"Informativa sulla privacy di OpenAI","privacyAnthropicPolicy":"Informativa sulla privacy antropica","privacyGooglePolicy":"Informativa sulla privacy di Google","privacySection5Title":"5. Sincronizzazione cloud (opzionale)","privacySection5Text":"Se abiliti la funzionalità opzionale di sincronizzazione cloud, le configurazioni del provider e le chiavi API potrebbero essere trasmesse a un endpoint cloud configurato. Questa funzionalità è disabilitata per impostazione predefinita e richiede un consenso esplicito.","privacySection6Title":"6. Registrazione","privacyLoggingIntro":"I registri delle richieste possono essere configurati tramite le impostazioni del dashboard. Puoi:","privacySection7Title":"7. I tuoi diritti","privacySection7TextStart":"Poiché tutti i dati sono archiviati localmente, hai il pieno controllo. Puoi cancellare i tuoi dati in qualsiasi momento rimuovendo il","privacySection7TextEnd":"directory o utilizzando le funzionalità di backup e ripristino del database nel dashboard.","termsSection1Title":"1. Panoramica","termsSection1Text":"OmniRoute è un router proxy API AI locale che funziona interamente sul tuo computer. Indirizza le richieste a più fornitori di intelligenza artificiale con bilanciamento del carico, failover e monitoraggio dell\'utilizzo.","termsSection2Title":"2. Responsabilità dell\'utente","termsResponsibilityApiKeys":"Sei l\'unico responsabile della gestione delle tue chiavi API e credenziali per fornitori di intelligenza artificiale di terze parti (OpenAI, Anthropic, Google, ecc.).","termsResponsibilityCompliance":"Devi rispettare i termini di servizio di ciascun fornitore di intelligenza artificiale alla cui API accedi tramite OmniRoute.","termsResponsibilitySecurity":"L\'utente è responsabile della sicurezza dell\'installazione locale di OmniRoute, inclusa l\'impostazione di una password e la limitazione dell\'accesso alla rete.","termsSection3Title":"3. Come funziona","termsSection3Text":"OmniRoute funge da proxy intermediario. Le chiamate API inviate a OmniRoute vengono tradotte e inoltrate ai provider AI configurati. OmniRoute non modifica il contenuto delle richieste o delle risposte oltre la necessaria traduzione del protocollo.","termsSection4Title":"4. Trattamento dei dati","termsDataStoredLocally":"Tutti i dati vengono archiviati localmente sul tuo computer in un database SQLite.","termsNoTransmission":"OmniRoute non trasmette dati a server esterni a meno che non abiliti esplicitamente le funzionalità di sincronizzazione cloud.","termsDataLocationText":"I log di utilizzo, le chiavi API e la configurazione sono archiviati in","termsSection5Title":"5. Dichiarazione di non responsabilità","termsSection5Text":"OmniRoute viene fornito \\"così com\'è\\" senza garanzie di alcun tipo. Non siamo responsabili per eventuali costi sostenuti per l\'utilizzo dell\'API, interruzioni del servizio o perdita di dati. Mantieni sempre i backup della tua configurazione.","termsSection6Title":"6. Sorgente aperta","termsSection6Text":"OmniRoute è un software open source. Sei libero di esaminarlo, modificarlo e distribuirlo secondo i termini della sua licenza."},"endpoints":{"tabProxy":"Endpoint Proxy","tabApiEndpoints":"Endpoint API","apiEndpointsTitle":"Endpoint API","apiEndpointsDescription":"Endpoint API backend che possono essere consumati da altre applicazioni e servizi.","comingSoon":"In arrivo","plannedFeatures":"Funzionalità previste","featureRestApi":"Catalogo endpoint REST API con documentazione interattiva","featureWebhooks":"Configurazione webhook e sottoscrizioni eventi","featureSwagger":"Generazione automatica specifiche OpenAPI / Swagger","featureAuth":"Gestione chiavi API e ambiti OAuth 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":"Simple Chat","streaming":"Streaming","system-prompt":"System Prompt","thinking":"Thinking","tool-calling":"Tool Calling","multi-turn":"Multi-turn"},"templateDescriptions":{"simple-chat":"Basic chat template","streaming":"Streaming template","system-prompt":"System prompt template","thinking":"Thinking template","tool-calling":"Tool calling template","multi-turn":"Multi-turn template"},"templatePayloads":{"simpleChat":{"system":"Sei un utile assistente AI.","userGreeting":"Ciao! Come posso aiutarti oggi?"},"streaming":{"prompt":"Scrivi una storia su"},"systemPrompt":{"question":"Qual è il significato della vita?","systemInstruction":"Fornisci una risposta ponderata e filosofica."},"thinking":{"question":"Spiegare l\'informatica quantistica"},"toolCalling":{"cityNameDescription":"Il nome della città per la quale ottenere il meteo","toolDescription":"Ottieni il meteo attuale per una località","userWeather":"Che tempo fa a Tokio?"},"multiTurn":{"system":"Sei un assistente utile.","assistantExample":"Sarei felice di aiutarti in questo.","userInitial":"Ho bisogno di aiuto con","userFollowUp":"Puoi approfondire questo argomento?"}},"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_it_json_e23882ae._.js.map
|