import type { TranslationMap } from './types';

// Italian (Italiano) translations. Keys mirror en.ts; missing/
// English-identical values fall back to English via I18nContext.resolveEn().
const messages: TranslationMap = {
  // Cross-host vault (#4278)
  'crossHostVault.title': "Il vault è sull'host del core.",
  'crossHostVault.message':
    "Questo vault di memoria è archiviato sull'host openhuman-core ({os}). Può essere aperto o mostrato solo su quella macchina, non da questo dispositivo.",
  'conversations.backgroundTasks.title': 'Background tasks',
  'nav.feedback': 'Condividi feedback',
  'feedback.board': 'Bacheca dei feedback',
  'feedback.empty': 'Ancora nessun feedback. Sii il primo a condividere un’idea.',
  'feedback.loadMore': 'Carica altro',
  'feedback.loadError': 'Impossibile caricare i feedback',
  'feedback.expand': 'Mostra di più',
  'feedback.collapse': 'Mostra di meno',
  'feedback.comments': 'commenti',
  'feedback.viewIssue': 'Visualizza issue',
  'feedback.status.open': 'Aperto',
  'feedback.status.planned': 'Pianificato',
  'feedback.status.completed': 'Completato',
  'feedback.status.closed': 'Chiuso',
  'feedback.type.feature': 'Funzionalità',
  'feedback.type.bug': 'Bug',
  'feedback.sort.hot': 'Di tendenza',
  'feedback.sort.top': 'Top',
  'feedback.sort.new': 'Recenti',
  'feedback.filter.allTypes': 'Tutti i tipi',
  'feedback.filter.allStatuses': 'Tutti gli stati',
  'feedback.vote.up': 'Vota a favore',
  'feedback.vote.down': 'Vota contro',
  'feedback.submit.heading': 'Condividi un feedback',
  'feedback.submit.subheading':
    'Proponi una funzionalità o segnala un bug. Gli altri possono votarlo.',
  'feedback.submit.titlePlaceholder': 'Titolo',
  'feedback.submit.bodyPlaceholder': 'Descrivi la tua idea o il problema che hai riscontrato',
  'feedback.submit.action': 'Invia',
  'feedback.submit.success': 'Grazie! Il tuo feedback è ora sulla bacheca.',
  'feedback.submit.rejected': 'Non è stato possibile pubblicare il tuo feedback.',
  'feedback.submit.error': 'Qualcosa è andato storto. Riprova.',
  'feedback.admin.status': 'Stato',
  'feedback.admin.updateFailed': 'Impossibile aggiornare lo stato',
  'feedback.comments.empty': 'Ancora nessun commento.',
  'feedback.comments.placeholder': 'Aggiungi un commento',
  'feedback.comments.post': 'Pubblica',
  'feedback.comments.loadError': 'Impossibile caricare i commenti',
  'feedback.comments.postError': 'Impossibile pubblicare il commento',
  'feedback.comments.you': 'Tu',
  'conversations.backgroundTasks.titleWithCount': 'Background tasks ({count})',
  'conversations.backgroundTasks.running': '{count} running',
  'conversations.backgroundTasks.noneRunning': 'none running',
  'conversations.backgroundTasks.total': '{count} total',
  'conversations.backgroundTasks.empty':
    'No background tasks in this chat. Ask the assistant to do something in the background and it shows up here.',
  'conversations.backgroundTasks.statusRunning': 'Running',
  'conversations.backgroundTasks.statusDone': 'Done',
  'conversations.backgroundTasks.statusFailed': 'Failed',
  'conversations.backgroundTasks.statusNeedsYou': 'Needs you',
  'conversations.backgroundTasks.statusCancelled': 'Annullato',
  'conversations.backgroundTasks.toolCallOne': '{count} tool call',
  'conversations.backgroundTasks.toolCallOther': '{count} tool calls',
  'conversations.backgroundTasks.steps': '{count} steps',
  'conversations.backgroundTasks.viewDetails': 'View details →',
  'conversations.backgroundTasks.close': 'Close',
  'conversations.backgroundTasks.sectionThisChat': 'In questa chat',
  'conversations.backgroundTasks.sectionScheduled': 'Attività pianificate',
  'conversations.backgroundTasks.sectionSubconscious': 'Pensiero subconscio',
  'conversations.backgroundTasks.sectionMemory': 'Sincronizzazione memoria',
  'conversations.backgroundTasks.cronEmpty': 'Nessuna attività pianificata.',
  'conversations.backgroundTasks.cronUnnamed': 'Attività senza titolo',
  'conversations.backgroundTasks.cronPaused': 'In pausa',
  'conversations.backgroundTasks.cronNext': 'Prossima {time}',
  'conversations.backgroundTasks.cronLast': 'Ultima esecuzione {time}',
  'conversations.backgroundTasks.cronNever': 'Non ancora eseguita',
  'conversations.backgroundTasks.cronSchedCron': 'Cron {expr}',
  'conversations.backgroundTasks.cronSchedEvery': 'Ogni {duration}',
  'conversations.backgroundTasks.cronSchedAt': 'Una volta',
  'conversations.backgroundTasks.subOff': 'Disattivato',
  'conversations.backgroundTasks.subWorking': 'In corso…',
  'conversations.backgroundTasks.subIdle': 'Inattivo',
  'conversations.backgroundTasks.subLastRan': 'Ultima esecuzione {time}',
  'conversations.backgroundTasks.subNeverRan': 'Non ancora eseguita',
  'conversations.backgroundTasks.subTicks': '{count} esecuzioni',
  'conversations.backgroundTasks.subQueued': '{count} in coda',
  'conversations.backgroundTasks.memUpToDate': 'Tutti i ricordi aggiornati',
  'conversations.backgroundTasks.memIngesting': 'Indicizzazione di {title}',
  'conversations.backgroundTasks.memIngestingUntitled': 'Indicizzazione dei ricordi',
  'conversations.backgroundTasks.memQueued': '{count} in coda',
  'conversations.backgroundTasks.memProviderActive': 'Sincronizzazione in corso',
  'conversations.backgroundTasks.memProviderRecent': 'Sincronizzato di recente',
  'conversations.backgroundTasks.memProviderIdle': 'Inattivo',
  'nav.home': 'Home',
  'nav.human': 'Umano',
  'nav.chat': 'Chat',
  'nav.assistant': 'Assistente',
  'assistant.faceMode.on': 'Sta parlando con Tiny',
  'assistant.faceMode.off': 'Parla con Tiny',
  'assistant.faceMode.turnOn': 'Mostra mascotte',
  'assistant.faceMode.turnOff': 'Nascondi mascotte',
  'nav.connections': 'Connessioni',
  'nav.memory': 'Intelligenza',
  'nav.alerts': 'Avvisi',
  'nav.rewards': 'Premi',
  'nav.settings': 'Impostazioni',
  'nav.agentProfiles': 'Profili agente',
  'nav.switchAgentProfile': 'Cambia profilo agente',
  'nav.defaultAgentProfile': 'Agente predefinito',
  'nav.noAgentProfiles': 'Nessun profilo agente trovato',
  'nav.activity': 'Attività',
  'nav.brain': 'Cervello',
  'nav.agentWorld': 'Tiny Place',
  'nav.wallet': 'Portafoglio',
  'agentWorld.description':
    'Tiny.Place è un social network per agenti IA. Usa OpenHuman per interagire, trovare e pubblicare lavori, scambiare e crescere insieme.',
  'agentWorld.world': 'Mondo',
  'agentWorld.world.booting': 'Avvio del renderer...',
  'agentWorld.world.initError': 'Impossibile avviare il renderer del mondo.',
  'agentWorld.world.retry': 'Riprova',
  'agentWorld.world.title': 'Tiny Place',
  'agentWorld.world.description':
    'Unisciti a tiny.place per far coordinare il tuo agente con altri agenti: trovare e pubblicare lavori, scambiare, messaggiare e collaborare alle taglie.',
  'agentWorld.world.room': 'Stanza',
  'agentWorld.world.rooms.poker.name': 'Poker',
  'agentWorld.world.rooms.poker.description': 'Otto posti attorno a un tavolo in feltro.',
  'agentWorld.world.rooms.court.name': 'Tribunale',
  'agentWorld.world.rooms.court.description': 'Banco rialzato, giuria e galleria.',
  'agentWorld.world.rooms.office.name': 'Ufficio',
  'agentWorld.world.rooms.office.description': 'Postazioni, scrivanie e una lavagna.',
  'agentWorld.world.rooms.home.name': 'Casa',
  'agentWorld.world.rooms.home.description': 'Un salotto accogliente con divani e tappeto.',
  'agentWorld.world.rooms.outside.name': 'Mondo',
  'agentWorld.world.rooms.outside.description': 'Una grande piazza aperta circondata da edifici.',
  'agentWorld.feed': 'Feed',
  'agentWorld.ledger': 'Registro',
  'agentWorld.jobs': 'Lavori',
  'agentWorld.bounties': 'Ricompense',
  'agentWorld.explore': 'Esplora',
  'agentWorld.directory': 'Directory',
  'agentWorld.identities': 'Identità',
  'agentWorld.profiles': 'Profili',
  'agentWorld.marketplace': 'Mercato',
  'agentWorld.messaging': 'Messaggi',
  'agentWorld.walletNotConfigured': 'Wallet non configurato',
  'agentWorld.copyAddress': 'Copia indirizzo',
  'agentWorld.addressCopied': 'Copiato',
  'agentWorld.walletUnavailable': 'Wallet non disponibile',
  'agentWorld.walletRetry': 'Riprova a caricare il wallet',
  // Agent World — Explore section live data
  'explore.networkOverview': 'Panoramica della rete',
  'explore.trendingCommunities': 'Comunità di tendenza',
  'explore.activeJobs': 'Lavori attivi',
  'explore.featuredBounties': 'Taglie in evidenza',
  'explore.newAgents': 'Nuovi agenti',
  'explore.viewAll': 'Vedi tutto',
  'explore.noCommunities': 'Nessuna comunità ancora',
  'explore.noJobs': 'Nessun lavoro attivo',
  'explore.noBounties': 'Nessuna taglia aperta',
  'explore.noAgents': 'Nessun agente registrato',
  'agentWorld.jobs.deadlineFuture': 'La scadenza della proposta deve essere nel futuro',
  'nav.avatarMenu.account': 'Account',
  'nav.avatarMenu.billing': 'Fatturazione',
  'nav.avatarMenu.rewards': 'Premi',
  'nav.avatarMenu.invites': 'Invita un amico',
  'nav.avatarMenu.wallet': 'Portafoglio',

  // Brain — full-page memory knowledge-graph surface
  'brain.subtitle': 'Il tuo grafo della conoscenza, le fonti di memoria e i controlli.',
  'brain.tabs.memory': 'Memoria',
  'brain.tabs.subconscious': 'Subconscio',
  'brain.tabs.graph': 'Grafico',
  'brain.tabs.goals': 'Obiettivi',
  'brain.goals.title': 'Obiettivi a lungo termine',
  'brain.goals.description':
    'Gli obiettivi duraturi dell’agente per lavorare con te. Modificali qui o lascia che Rifletti li aggiorni.',
  'brain.goals.reflect': 'Rifletti',
  'brain.goals.reflecting': 'Riflessione…',
  'brain.goals.reflectDone': 'Obiettivi aggiornati.',
  'brain.goals.add': 'Aggiungi',
  'brain.goals.addPlaceholder': 'Aggiungi un obiettivo a lungo termine…',
  'brain.goals.empty':
    'Ancora nessun obiettivo. Aggiungine uno o usa Rifletti per generarli dal contesto recente.',
  'brain.goals.editGoal': 'Modifica obiettivo',
  'brain.goals.deleteGoal': 'Elimina obiettivo',
  'brain.goals.actionError': 'Qualcosa è andato storto. Riprova.',
  'brain.tabs.sources': 'Fonti',
  'brain.tabs.sync': 'Sincronizzazione',
  'brain.tabs.tinyplaceOrchestration': 'TinyPlace',
  'tinyplaceOrchestration.title': 'Relay TinyPlace',
  'tinyplaceOrchestration.subtitle': 'Canali agente fissati e chat delle sessioni app',
  'tinyplaceOrchestration.refresh': 'Aggiorna',
  'tinyplaceOrchestration.pinned': 'Fissati',
  'tinyplaceOrchestration.sessions': 'Sessioni',
  'tinyplaceOrchestration.loading': 'Caricamento chat TinyPlace…',
  'tinyplaceOrchestration.paymentRequired': "L'accesso a TinyPlace richiede un pagamento.",
  'tinyplaceOrchestration.failedToLoad': 'Impossibile caricare le chat TinyPlace',
  'tinyplaceOrchestration.noSessions': 'Nessuna sessione app TinyPlace per ora.',
  'tinyplaceOrchestration.noMessages': 'Ancora nessun messaggio in questa chat.',
  'tinyplaceOrchestration.active': 'Attiva',
  'tinyplaceOrchestration.inactive': 'Inattiva',
  'tinyplaceOrchestration.encryptedBody': 'Messaggio TinyPlace cifrato',
  'tinyplaceOrchestration.unknownSender': 'Mittente sconosciuto',
  'tinyplaceOrchestration.master.title': 'Agente / umano',
  'tinyplaceOrchestration.master.subtitle': 'Chat principale',
  'tinyplaceOrchestration.master.preview': 'Coordinamento diretto tra te e OpenHuman.',
  'tinyplaceOrchestration.subconscious.title': 'Subconscio',
  'tinyplaceOrchestration.subconscious.subtitle': 'Chat interne degli agenti',
  'tinyplaceOrchestration.subconscious.preview':
    'Coordinamento degli agenti in background e cicli di memoria.',
  'tinyplaceOrchestration.session.subtitle': 'Sessione app TinyPlace',
  'tinyplaceOrchestration.pairing.linkLabel': 'Collega sessione',
  'tinyplaceOrchestration.pairing.linkPlaceholder': "Incolla l'ID agente sessione",
  'tinyplaceOrchestration.pairing.linkAction': 'Collega',
  'tinyplaceOrchestration.pairing.requests': 'Richieste contatto',
  'tinyplaceOrchestration.pairing.accept': 'Accetta',
  'tinyplaceOrchestration.pairing.decline': 'Rifiuta',
  'tinyplaceOrchestration.pairing.block': 'Blocca',
  'tinyplaceOrchestration.pairing.linked': 'Collegata',
  'tinyplaceOrchestration.pairing.pending': 'In attesa',
  'tinyplaceOrchestration.pairing.unlinked': 'Non collegata',
  'tinyplaceOrchestration.pairing.incoming': 'In arrivo',
  'tinyplaceOrchestration.pairing.outgoing': 'In uscita',
  'brain.empty':
    'Il tuo cervello è ancora vuoto: collega una fonte per iniziare a costruire la memoria.',
  'brain.error': 'Impossibile caricare il tuo cervello. Riprova.',
  'common.cancel': 'Annulla',
  'common.save': 'Salva',
  'common.confirm': 'Conferma',
  'common.delete': 'Elimina',
  'common.edit': 'Modifica',
  'common.create': 'Crea',
  'common.search': 'Cerca',
  'common.loading': 'caricamento…',
  'sync.runs': 'sincronizzazioni',
  'sync.totalCost': 'totale',
  'sync.when': 'Quando',
  'sync.source': 'Origine',
  'sync.items': 'Elementi',
  'sync.tokens': 'Token',
  'sync.cost': 'Costo',
  'sync.duration': 'Durata',
  'sync.noAuditEntries': 'Nessuna sincronizzazione registrata finora.',
  'sync.timeAgo.justNow': 'proprio ora',
  'sync.timeAgo.minutes': '{n} min fa',
  'sync.timeAgo.hours': '{n} h fa',
  'sync.timeAgo.days': '{n} g fa',
  'sync.status.success': 'Riuscito',
  'sync.status.failed': 'Non riuscito',
  'common.error': 'Errore',
  'common.success': 'Successo',
  'common.back': 'Indietro',
  'common.next': 'Avanti',
  'common.finish': 'Fine',
  'common.close': 'Chiudi',
  'common.enabled': 'Abilitato',
  'common.disabled': 'Disabilitato',
  'common.on': 'Attivo',
  'common.off': 'Disattivo',
  'common.yes': 'Sì',
  'common.no': 'No',
  'common.ok': 'Ok',
  'common.name': 'Nome',
  'common.retry': 'Riprova',
  'common.copy': 'Copia',
  'common.copied': 'Copiato',
  'common.learnMore': 'Scopri di più',
  'common.seeAll': 'Visualizza',
  'common.dismiss': 'Ignora',
  'common.clear': 'Cancella',
  'common.reset': 'Ripristina',
  'common.refresh': 'Aggiorna',
  'common.export': 'Esporta',
  'common.import': 'Importa',
  'common.upload': 'Carica',
  'common.download': 'Scarica',
  'common.add': 'Aggiungi',
  'common.remove': 'Rimuovi',
  'common.showMore': 'Mostra di più',
  'common.showLess': 'Mostra meno',
  'common.submit': 'Invia',
  'common.continue': 'Continua',
  'common.comingSoon': 'Prossimamente',
  'common.breadcrumb': 'breadcrumb',
  'common.beta': 'Beta',
  'common.betaDisclaimer':
    'Questa funzione è in beta. Potrebbe cambiare o avere qualche imperfezione — il tuo feedback ci aiuta a migliorarla.',
  'settings.general': 'Generale',
  // Settings layman groups (Phase 4 IA revamp)
  'settings.groups.account': 'Account',
  'settings.groups.assistant': 'Assistente',
  'settings.groups.privacySecurity': 'Privacy e sicurezza',
  'settings.groups.notifications': 'Notifiche',
  'settings.groups.about': 'Informazioni',
  'settings.assistant.personality': 'Personalità',
  'settings.personalityFace.title': 'Personalità e volto',
  'settings.personalityFace.menuDesc':
    'Regola il carattere del tuo assistente e scegli il suo volto',
  'settings.assistant.voice': 'Voce',
  'settings.assistant.voiceDesc': 'Impostazioni di sintesi vocale e riconoscimento vocale',
  'settings.assistant.faceMascot': 'Faccia / Mascotte',
  'settings.assistant.backgroundActivity': 'Subconscio',
  'settings.assistant.backgroundActivityDesc':
    'Controlla quanto attivamente il tuo assistente lavora in background',
  'settings.assistant.screenAwareness': 'Consapevolezza dello schermo',
  'settings.assistant.screenAwarenessDesc': "Consenti all'assistente di vedere la finestra attiva",
  'settings.assistant.desktopCompanion': 'Compagno desktop',
  'settings.assistant.desktopCompanionDesc':
    'Modalità compagno sempre attiva con scorciatoia nella barra di sistema',
  'settings.assistant.permissions': 'Autorizzazioni',
  'settings.assistant.permissionsDesc': "Scegli cosa può fare l'assistente e dove può lavorare",
  'settings.privacySecurity.privacy': 'Privacy',
  'settings.privacySecurity.privacyDesc': 'Controlla quali dati lasciano il tuo computer',
  'settings.privacySecurity.security': 'Sicurezza',
  'settings.privacySecurity.securityDesc': 'Sessioni e opzioni di accesso',
  'settings.privacySecurity.approvalsHistory': 'Approvazioni e cronologia',
  'settings.privacySecurity.approvalsHistoryDesc':
    'Esamina le decisioni di approvazione degli strumenti recenti',
  'settings.notifications.menuTitle': 'Notifiche',
  'settings.notifications.menuDesc': 'Posta in arrivo degli avvisi e preferenze di notifica',
  'settings.devGroups.knowledgeMemory': 'Conoscenza e memoria',
  'settings.devGroups.agentsAutonomy': 'Agenti e autonomia',
  'settings.devGroups.modelsInference': 'Modelli e inferenza',
  'settings.devGroups.automationIntegrations': 'Automazione e integrazioni',
  'settings.devGroups.toolsCapabilities': 'Strumenti e capacità',
  'settings.devGroups.council': 'Consiglio',
  'settings.analysisViews.title': 'Viste di analisi',
  'settings.analysisViews.menuDesc':
    'Analisi del grafo di memoria — diagramma, centralità, coesione, associazioni, freschezza, cronologia, percorsi e namespace',
  'settings.buildInfo.title': 'Info build/versione',
  'settings.buildInfo.menuDesc': 'Build dell’app, versione e dettagli di connessione del core',
  'settings.tokenUsage.title': 'Token e costo',
  'settings.tokenUsage.menuDesc':
    'Impostazioni di compressione e quanti token e dollari hanno fatto risparmiare',
  'settings.tokenUsage.saving': 'Salvataggio…',
  'settings.tokenUsage.saved': 'Salvato',
  'settings.tokenUsage.savingsTitle': 'Risparmi',
  'settings.tokenUsage.attributedTo': 'Costo calcolato per {model}',
  'settings.tokenUsage.tokensSaved': 'Token risparmiati',
  'settings.tokenUsage.costSaved': 'Costo risparmiato',
  'settings.tokenUsage.cacheOccupancy': 'Originali memorizzati nella cache',
  'settings.tokenUsage.compactions': 'Compattazioni',
  'settings.tokenUsage.overEvents': 'su {count} compattazioni',
  'settings.tokenUsage.byCompressor': 'Per compressore',
  'settings.tokenUsage.refresh': 'Aggiorna',
  'settings.tokenUsage.reset': 'Reimposta statistiche',
  'settings.tokenUsage.compressionTitle': 'Compressione',
  'settings.tokenUsage.compressionDesc':
    'Compattazione consapevole del contenuto dei grandi output degli strumenti prima che entrino nel contesto del modello.',
  'settings.tokenUsage.routerEnabled': 'Abilita compressione',
  'settings.tokenUsage.routerEnabledDesc': 'Interruttore principale del router dei contenuti.',
  'settings.tokenUsage.search': 'Risultati di ricerca',
  'settings.tokenUsage.searchDesc':
    'Ordina l’output di grep/ricerca per pertinenza, mantenendo le corrispondenze migliori.',
  'settings.tokenUsage.code': 'Codice sorgente',
  'settings.tokenUsage.codeDesc': 'Mantieni le firme, comprimi i corpi delle funzioni.',
  'settings.tokenUsage.html': 'HTML',
  'settings.tokenUsage.htmlDesc': 'Rimuovi il markup per ottenere testo leggibile.',
  'settings.tokenUsage.ml': 'Compressore di testo ML',
  'settings.tokenUsage.mlDesc':
    'Modello ModernBERT locale per testo semplice (richiede l’ambiente di esecuzione Python).',
  'settings.tokenUsage.ccrTitle': 'Cache e recupero (CCR)',
  'settings.tokenUsage.ccrDesc':
    'Gli originali compattati vengono memorizzati nella cache così l’agente può recuperare il testo completo su richiesta.',
  'settings.tokenUsage.ccrEnabled': 'Conserva gli originali per il recupero',
  'settings.tokenUsage.ccrEnabledDesc':
    'Sposta l’originale e aggiungi un indicatore di recupero così non si perde nulla.',
  'settings.tokenUsage.ccrMinTokens': 'Dimensione minima da memorizzare nella cache',
  'settings.tokenUsage.ccrMinTokensDesc':
    'Memorizza nella cache e compatta con perdita solo i risultati stimati a questo numero di token o più.',
  'settings.tokenUsage.tokensUnit': 'token',
  'settings.tokenUsage.ccrDisk': 'Mantieni la cache su disco',
  'settings.tokenUsage.ccrDiskDesc':
    'Conserva gli originali recuperabili tra un riavvio e l’altro.',
  'settings.dataSync.title': 'Sincronizzazione dati',
  'settings.dataSync.menuDesc': 'Ciò che il tuo assistente sincronizza — fonti, freschezza e stato',
  'settings.dataSync.description':
    "Gestisci ciò che viene sincronizzato nella memoria del tuo assistente: ogni fonte connessa con l'ora dell'ultima sincronizzazione, quanto è sincronizzato e se sta sincronizzando adesso.",
  'settings.devGroups.diagnosticsLogs': 'Diagnostica e registri',
  'settings.featuresAndAI': 'Funzionalità e AI',
  'settings.billingAndRewards': 'Fatturazione e premi',
  'settings.support': 'Supporto',
  'settings.advanced': 'Avanzate',
  'settings.dangerZone': 'Zona pericolosa',
  'settings.account': 'Account',
  'settings.accountDesc': 'Frase di recupero, team, connessioni e privacy',
  'settings.notifications': 'Notifiche',
  'settings.notificationsDesc': 'Non disturbare e controlli notifiche per account',
  'settings.notifications.tabs.preferences': 'Preferenze',
  'settings.notifications.tabs.routing': 'Instradamento',
  'settings.features': 'Funzionalità',
  'settings.featuresDesc': 'Consapevolezza schermo, messaggistica e strumenti',
  'settings.aiModels': 'AI e modelli',
  'settings.aiModelsDesc': 'Configurazione modello AI locale, download e provider LLM',
  'settings.ai': 'Configurazione AI',
  'settings.aiDesc': 'Provider cloud, modelli Ollama locali e instradamento per carico di lavoro',
  'settings.billingUsage': 'Fatturazione e utilizzo',
  'settings.billingUsageDesc': 'Piano di abbonamento, crediti e metodi di pagamento',
  'settings.rewards': 'Premi',
  'settings.rewardsDesc': 'Referral, coupon e crediti guadagnati',
  'settings.restartTour': 'Riavvia tour',
  'settings.restartTourDesc': "Riproduci la presentazione del prodotto dall'inizio",
  'settings.about': 'Informazioni',
  'settings.aboutDesc': 'Versione app e aggiornamenti software',
  'settings.developerOptions': 'Avanzate',
  'settings.developerOptionsDesc':
    'Configurazione AI, canali di messaggistica, strumenti, diagnostica e pannelli di debug',
  'settings.developerDiagnostics': 'Sviluppatore e Diagnostica',
  'settings.developerDiagnosticsDesc':
    'Strumenti avanzati per sviluppatori, diagnostica, memoria, agenti e pannelli di debug',
  'settings.developerMode.title': 'Modalità sviluppatore',
  'settings.developerMode.description': 'Mostra strumenti avanzati per sviluppatori e diagnostica',
  'settings.developerMode.enabledByBuild': 'Sempre attiva nelle build di sviluppo',
  'settings.clearAppData': 'Cancella dati app',
  'settings.clearAppDataDesc':
    "Disconnetti e cancella permanentemente tutti i dati locali dell'app",
  'settings.logOut': 'Disconnetti',
  'settings.logOutDesc': 'Disconnetti dal tuo account',
  'settings.exitLocalSession': 'Esci dalla sessione locale',
  'settings.exitLocalSessionDesc': 'Ritorna alla schermata di accesso',
  'settings.language': 'Lingua',
  'settings.navGroups.general': 'Generale',
  'settings.navGroups.assistant': 'Assistente',
  'settings.navGroups.data': 'Dati',
  'settings.navGroups.connections': 'Connessioni',
  'settings.navGroups.system': 'Sistema',
  'settings.betaBuild': 'Build beta - v{version}',
  'settings.languageDesc': "Lingua di visualizzazione dell'interfaccia dell'app",
  'settings.alerts': 'Avvisi',
  'settings.alertsDesc': 'Visualizza avvisi recenti e attività nella tua posta',
  'settings.account.profile': 'Profilo',
  'settings.account.profileDesc': 'Nome, email e avatar',
  'settings.account.devices': 'Dispositivi',
  'settings.account.devicesDesc': 'Associa e gestisci dispositivi mobili',
  'settings.account.teamMembers': 'Team & membri',
  'settings.account.teamMembersDesc': 'Gestisci accesso al team e ruoli dei membri',
  'settings.account.dataMigration': 'Dati & migrazione',
  'settings.account.dataMigrationDesc': 'Importa memoria da un altro assistente',
  'settings.account.recoveryPhrase': 'Frase di recupero',
  'settings.account.recoveryPhraseDesc': 'Visualizza e fai il backup della frase di recupero',
  'settings.account.team': 'Squadra',
  'settings.account.teamDesc': 'Gestisci membri del team e autorizzazioni',
  'settings.account.connections': 'Connessioni',
  'settings.account.connectionsDesc': 'Gestisci account e servizi collegati',
  'settings.account.privacy': 'Privacy',
  'settings.account.privacyDesc': 'Controlla quali dati escono dal tuo computer',
  'migration.title': 'Importa da un altro assistente',
  'migration.description':
    'Migra memoria e note da un altro assistente locale in questo spazio di lavoro. Inizia con Anteprima per vedere esattamente cosa cambierebbe, poi premi Applica per copiare i dati. La memoria attuale viene salvata in backup per prima.',
  'migration.vendorLabel': 'Provider di origine',
  'migration.vendor.openclaw': 'OpenClaw',
  'migration.vendor.hermes': 'Hermes Agent',
  'migration.sourceLabel': 'Percorso dello spazio di lavoro di origine (facoltativo)',
  'migration.sourcePlaceholder':
    'Lascia vuoto per rilevamento automatico (es. ~/.openclaw/workspace)',
  'migration.sourcePlaceholderHermes': 'Lascia vuoto per il rilevamento automatico (es. ~/.hermes)',
  'migration.sourceHint':
    'Vuoto usa la posizione predefinita del provider. Inserisci un percorso esplicito se hai spostato lo spazio di lavoro.',
  'migration.previewAction': 'Anteprima',
  'migration.previewRunning': 'Anteprima in corso…',
  'migration.applyAction': "Applica l'import",
  'migration.applyRunning': 'Importazione in corso…',
  'migration.applyDisclaimer':
    "Applica si sblocca dopo un'Anteprima riuscita della stessa origine. La memoria esistente viene salvata in backup prima di qualsiasi import.",
  'migration.reportTitlePreview': 'Anteprima — nessun import effettuato',
  'migration.reportTitleApplied': 'Importazione completata',
  'migration.report.source': 'Spazio di lavoro di origine',
  'migration.report.target': 'Spazio di lavoro di destinazione',
  'migration.report.fromSqlite': 'Da SQLite (brain.db)',
  'migration.report.fromMarkdown': 'Da Markdown',
  'migration.report.imported': 'Importati',
  'migration.report.skippedUnchanged': 'Saltati (non modificati)',
  'migration.report.renamedConflicts': 'Rinominati in caso di conflitto',
  'migration.report.warnings': 'Avvisi',
  'migration.report.previewHint':
    "Nessun dato è ancora stato importato. Premi Applica l'import per copiarlo.",
  'migration.report.appliedHint':
    'Le voci importate sono ora nella tua memoria. Riesegui Anteprima per confrontare di nuovo.',
  'migration.confirmImport.singular':
    "Importare {count} voce nello spazio di lavoro attuale?\n\nOrigine: {source}\nDestinazione: {target}\n\nLa memoria esistente verrà salvata in backup prima dell'import.",
  'migration.confirmImport.plural':
    "Importare {count} voci nello spazio di lavoro attuale?\n\nOrigine: {source}\nDestinazione: {target}\n\nLa memoria esistente verrà salvata in backup prima dell'import.",
  'settings.notifications.doNotDisturb': 'Non disturbare',
  'settings.notifications.doNotDisturbDesc':
    'Metti in pausa tutte le notifiche per un periodo prefissato',
  'settings.notifications.channelControls': 'Controlli per canale',
  'settings.notifications.channelControlsDesc':
    'Configura le preferenze di notifica per ogni canale',
  'settings.features.screenAwareness': 'Consapevolezza schermo',
  'settings.features.screenAwarenessDesc': "Consenti all'assistente di vedere la finestra attiva",
  'settings.features.messaging': 'Messaggistica',
  'settings.features.messagingDesc': 'Impostazioni canale e integrazione messaggistica',
  'settings.features.tools': 'Strumenti',
  'settings.features.toolsDesc': 'Gestisci strumenti e integrazioni connessi',
  'settings.ai.localSetup': 'Configurazione AI locale',
  'settings.ai.localSetupDesc': 'Scarica e configura modelli AI locali',
  'settings.ai.llmProvider': 'Provider LLM',
  'settings.ai.llmProviderDesc': 'Scegli e configura il tuo provider AI',
  'clearData.title': 'Cancella dati app',
  'clearData.warning':
    "Verrai disconnesso e i dati locali dell'app verranno eliminati permanentemente, compresi:",
  'clearData.bulletSettings': "Impostazioni e conversazioni dell'app",
  'clearData.bulletCache': 'Tutti i dati di cache delle integrazioni locali',
  'clearData.bulletWorkspace': 'Dati del workspace',
  'clearData.bulletOther': 'Tutti gli altri dati locali',
  'clearData.irreversible': 'Questa azione non può essere annullata.',
  'clearData.clearing': 'Cancellazione dati app...',
  'clearData.failed': 'Impossibile cancellare i dati ed effettuare il logout. Riprova.',
  'clearData.failedLogout': 'Impossibile effettuare il logout. Riprova.',
  'clearData.failedPersist': "Impossibile cancellare lo stato persistente dell'app. Riprova.",
  'welcome.logoAlt': 'OpenHuman',
  'welcome.title': 'Benvenuto in OpenHuman',
  'welcome.subtitle':
    'La tua super intelligenza AI personale. Privata, semplice ed estremamente potente.',
  'welcome.connectPrompt': 'Configura URL RPC (Avanzato)',
  'welcome.selectRuntime': 'Seleziona un runtime',
  'welcome.clearingAppData': 'Cancellazione dati app in corso...',
  'welcome.clearAppDataAndRestart': 'Cancella dati app e riavvia',
  'welcome.clearAppDataWarning':
    'Questa operazione cancella i segreti e gli account memorizzati localmente su questo dispositivo. Il tuo account cloud non viene influenzato — puoi accedere di nuovo subito dopo.',
  'welcome.resetErrorFallback':
    "Impossibile cancellare i dati dell'app. Chiudi e riapri OpenHuman, poi riprova.",
  'welcome.signingIn': 'Accesso in corso...',
  'welcome.termsIntro': 'Continuando, accetti i',
  'welcome.termsOfUse': 'Termini',
  'welcome.termsJoiner': 'e',
  'welcome.privacyPolicy': 'Informativa sulla privacy',
  'welcome.termsOutro': '.',
  'welcome.urlPlaceholder': 'http://localhost:8089',
  'welcome.invalidUrl': 'Inserisci un URL HTTP o HTTPS valido',
  'welcome.connecting': 'Test',
  'welcome.connect': 'Test',
  'home.greeting': 'Buongiorno',
  'home.greetingAfternoon': 'Buon pomeriggio',
  'home.greetingEvening': 'Buonasera',
  'home.askAssistant': 'Chiedi qualsiasi cosa al tuo assistente...',
  'home.statusOk':
    'Il tuo assistente è pronto quando lo sei tu. Scrivi qualcosa qui sotto per iniziare.',
  'home.statusBackendOnly': 'Riconnessione al backend… il tuo agente sarà disponibile a breve.',
  'home.statusCoreUnreachable':
    'Il sidecar core locale non risponde. Il processo in background di OpenHuman potrebbe essersi bloccato o non essere partito.',
  'home.statusInternetOffline':
    "Il tuo dispositivo è offline. Controlla la rete o riavvia l'app per riconnetterti.",
  'home.restartCore': 'Riavvia core',
  'home.restartingCore': 'Riavvio core…',
  'home.themeToggle.toLight': 'Passa al tema chiaro',
  'home.themeToggle.toDark': 'Passa al tema scuro',
  'home.usageExhaustedTitle': 'Hai esaurito il tuo utilizzo',
  'home.usageExhaustedBody':
    'Hai esaurito per ora l’utilizzo incluso. Avvia un abbonamento per sbloccare più capacità continuativa.',
  'home.usageExhaustedCta': 'Attiva un abbonamento',
  'openrouterFree.cta': 'Usa i modelli gratuiti di OpenRouter',
  'openrouterFree.saving': 'Connessione a OpenRouter...',
  'openrouterFree.error':
    'Impossibile passare ai modelli gratuiti di OpenRouter. Controlla l’accesso a OpenRouter e riprova.',
  'home.routinesCard': 'Le tue routine',
  'home.routinesActive': '{count} attive',
  'routines.title': 'Le tue routine',
  'routines.subtitle': 'Cose che il tuo assistente fa automaticamente',
  'routines.loading': 'Caricamento delle routine…',
  'routines.empty': 'Ancora nessuna routine',
  'routines.emptyHint':
    'Il tuo assistente può eseguire attività secondo un programma — come briefing mattutini o riepiloghi giornalieri.',
  'routines.refresh': 'Aggiorna',
  'routines.nextRun': 'Prossima corsa',
  'routines.lastRunSuccess': "L'ultima esecuzione è riuscita",
  'routines.lastRunFailed': "L'ultima esecuzione è fallita",
  'routines.notRunYet': 'Non ancora eseguito',
  'routines.runNow': 'Corri adesso',
  'routines.running': 'Correndo…',
  'routines.runNowTimedOut': "Timeout durante l'esecuzione — aggiorna e riprova.",
  'routines.viewHistory': 'Visualizza cronologia',
  'routines.loadingHistory': 'Caricamento…',
  'routines.noHistory': 'Ancora nessuna cronologia delle esecuzioni.',
  'routines.statusSuccess': 'Successo',
  'routines.statusError': 'Errore',
  'routines.showOutput': 'Mostra output',
  'routines.hideOutput': 'Nascondi output',
  'routines.toggleEnabled': 'Abilita o disabilita questa routine',
  'routines.typeAgent': 'Agente',
  'routines.typeCommand': 'Comando',
  'nav.routines': 'Routines',
  'chat.newThread': 'Nuovo thread',
  'chat.newConversation': 'Nuova conversazione',
  'chat.newWindowWelcome1': 'Benvenuto, {name} 👋',
  'chat.newWindowWelcome2': 'Mettiamoci al lavoro, {name} 🧑‍🍳.',
  'chat.newWindowWelcome3': 'È ora di concentrarsi 🧘🏻',
  'chat.typeMessage': 'Come posso aiutarti oggi?',
  'chat.send': 'Invia messaggio',
  'chat.stopGeneration': 'Interrompi generazione',
  'chat.parallelBranchHint': 'Digita un ramo parallelo — ⌘/Ctrl+Invio per inviare',
  'chat.followupHint':
    'Metti in coda un follow-up — inviato dopo questa risposta · ⌘/Ctrl+Invio per un ramo parallelo',
  'chat.queuedFollowups.label': 'Follow-up in coda',
  'chat.queuedFollowups.clear': 'Cancella',
  'chat.queuedFollowups.clearFailed': 'Impossibile svuotare la coda — riprova.',
  'chat.parallelBranchLabel': 'Ramo parallelo',
  'chat.thinking': 'Sto pensando...',
  'chat.noMessages': 'Nessun messaggio',
  'chat.startConversation': 'Inizia una conversazione',
  'chat.regenerate': 'Rigenera',
  'chat.copyResponse': 'Copia risposta',
  'chat.citations': 'Citazioni',
  'chat.toolUsed': 'Strumento usato',
  'scope.legacy': 'Legacy',
  'scope.user': 'Utente',
  'scope.project': 'Progetto',
  'skills.title': 'Connessioni',
  'skills.search': 'Cerca connessioni...',
  'skills.noResults': 'Nessuna connessione trovata',
  'skills.loadingIntegrations': 'Caricamento delle integrazioni…',
  'skills.connect': 'Connetti',
  'skills.disconnect': 'Disconnetti',
  'skills.configure': 'Gestisci',
  'skills.connected': 'Connesso',
  'skills.available': 'Disponibile',
  'skills.addAccount': 'Aggiungi account',
  'skills.channels': 'Messaggistica',
  'skills.explorer.emptyCta': 'Installa da URL',
  'skills.explorer.emptyDescription':
    'Installa un pacchetto SKILL.md o inserisci cartelle in stile Hermes in ~/.openhuman/skills.',
  'skills.explorer.emptyTitle': 'Nessuna skill trovata',
  'skills.explorer.installFromUrl': 'Installa da URL',
  'skills.explorer.newSkill': 'Nuova skill',
  'skills.explorer.subtitle':
    'Sfoglia pacchetti SKILL.md, inclusi markdown, script, riferimenti, modelli, esempi e prompt in stile Hermes.',
  'skills.explorer.title': 'Esplora skill',
  'skills.explorer.searchPlaceholder': 'Cerca skill...',
  'skills.explorer.scopeUser': 'User',
  'skills.explorer.scopeProject': 'Project',
  'skills.explorer.scopeLegacy': 'Legacy',
  'skills.explorer.noDescription': 'Nessuna descrizione fornita.',
  'skills.explorer.uninstallSuccess': 'Skill disinstallata correttamente.',
  'skills.explorer.registryTab': 'Registro',
  'skills.explorer.installedTab': 'Installate',
  'skills.explorer.allFormats': 'Tutti i formati',
  'skills.explorer.refreshRegistry': 'Aggiorna registro',
  'skills.explorer.registryEmptyTitle': 'Nessuna voce nel registro',
  'skills.explorer.registryEmptyDescription':
    'Impossibile caricare il registro delle competenze. Controlla la connessione e riprova.',
  'skills.explorer.showingOf':
    'Visualizzazione di {shown} su {total} risultati. Perfeziona la ricerca per vederne di più.',
  'skills.explorer.installed': 'Installata',
  'skills.explorer.install': 'Installa',
  'skills.explorer.installing': 'Installazione…',
  'skills.integrations': 'Integrazioni Composio',
  'skills.integrationsSubtitle':
    'Connessioni OAuth basate su cloud — accedi con il tuo account e Composio gestisce i token affinché gli agenti possano leggere e agire per tuo conto. Nessuna chiave API da gestire.',
  'skills.composio.noApiKeyTitle': 'Nessuna chiave API Composio configurata',
  'skills.composio.noApiKeyDescription':
    'La modalità locale usa la tua chiave API Composio. Apri Impostazioni → Avanzate → Composio per aggiungerne una prima di collegare le integrazioni qui.',
  'skills.composio.noApiKeyCta': 'Apri nelle impostazioni',
  'skills.tabs.composio': 'Composio',
  'skills.tabs.channels': 'Canali',
  'skills.tabs.explorer': 'Skill',
  'skills.tabs.meetings': 'Riunioni Google Meet',
  'skills.tabs.mcp': 'MCP Server',
  'connections.tabs.composio': 'Composio',
  'connections.tabs.channels': 'Canali',
  'connections.tabs.mcp': 'Server MCP',
  'connections.tabs.skills': 'Competenze',
  'connections.tabs.meetings': 'Riunioni',
  'connections.groups.integrations': 'Integrazioni',
  'connections.tabs.oauth': 'OAuth',
  'connections.tabs.composioKey': 'Composio',
  'connections.groups.apiKeys': 'Chiavi API',
  'connections.groups.intelligence': 'Intelligenza',
  'memory.title': 'Memoria',
  'memory.search': 'Cerca memorie...',
  'memory.noResults': 'Nessuna memoria trovata',
  'memory.empty':
    'Nessuna memoria ancora. Le memorie vengono create automaticamente mentre interagisci.',
  'memory.tab.memory': 'Memoria',
  'memory.tab.memoryTree': 'Albero della memoria',
  'memory.tab.tasks': 'Attività',
  'memory.tab.tasksDescription':
    'Crea e monitora le attività — i tuoi to-do personali e le board create dagli agenti nelle conversazioni.',
  'memory.tab.subconscious': 'Subconscio',
  'memory.tab.agentWork': "Lavoro dell'agente",
  'memory.tab.agentWorkDescription':
    'Un centro di comando per ogni esecuzione di agente in background, raggruppata in base a ciò che richiede il tuo intervento, ciò che è in corso e ciò che è terminato.',
  'memory.tab.worktrees': 'Worktree',
  'memory.tab.worktreesDescription':
    'Worktree git isolati dai worker degli agenti paralleli: ispeziona le modifiche, aprile o ripuliscile.',
  'memory.tab.teams': 'Team',
  'memory.tab.teamsDescription':
    'Team di agenti coordinati — chi è responsabile di ogni attività, cosa è bloccato e cosa si dicono i compagni di team tra loro.',
  'memory.tab.agents': 'Libreria',
  'memory.tab.agentsDescription':
    'Sfoglia e avvia gli agenti disponibili — ognuno con i propri strumenti, capacità e area di specializzazione.',
  'memory.tab.workflows': 'Workflows',
  'memory.tab.workflowsDescription':
    'Procedure riutilizzabili ed eseguibili — un obiettivo e i passaggi per raggiungerlo. Creane uno, installa da un URL o apri un workflow per eseguirlo.',
  'memory.tab.dreams': 'Sogni',
  'memory.tab.calls': 'Chiamate',
  'memory.tab.diagram': 'Diagram',
  'memory.tab.centrality': 'Centrality',
  'memory.tab.namespaces': 'Spazi dei nomi',
  'memory.tab.timeline': 'Timeline',
  'memory.tab.settings': 'Impostazioni',
  'memory.analyzeNow': 'Analizza ora',
  'memoryTimeline.title': 'Cronologia della memoria',
  'memoryTimeline.intro':
    "Quando l'assistente ha appreso su di te — fatti raggruppati per il mese dell'ultimo rinforzo. Mostra crescita, picchi di attività e periodi tranquilli.",
  'memoryTimeline.loading': 'Costruzione della cronologia…',
  'memoryTimeline.errorPrefix': 'Impossibile caricare il grafo:',
  'memoryTimeline.retry': 'Retry',
  'memoryTimeline.namespaceLabel': 'Namespace',
  'memoryTimeline.namespaceAll': 'Tutti i namespace',
  'memoryTimeline.empty': 'Nessun grafo della conoscenza ancora.',
  'memoryTimeline.emptyHint':
    "Quando l'assistente registrerà fatti su di te, la cronologia apparirà qui.",
  'memoryTimeline.metricTotal': 'Facts',
  'memoryTimeline.metricMonths': 'Mesi attivi',
  'memoryTimeline.metricRecent': 'Ultimi 30 giorni',
  'memoryTimeline.heading': 'Fatti appresi per mese',
  'memoryTimeline.busiestCaption': 'Più attivo: {period} ({count})',
  'memoryTimeline.undatedNote': '{count} fatto/i senza data registrata.',
  'memoryTimeline.truncated': 'Visualizzazione dei {shown} più recenti su {total} mesi.',
  'namespaceOverview.title': 'Panoramica degli spazi dei nomi',
  'namespaceOverview.intro':
    'Come la tua conoscenza è distribuita tra i contesti — il numero di fatti ed entità distinte registrate in ogni spazio dei nomi.',
  'namespaceOverview.loading': 'Aggregazione degli spazi dei nomi…',
  'namespaceOverview.errorPrefix': 'Impossibile caricare il grafico:',
  'namespaceOverview.retry': 'Riprova',
  'namespaceOverview.empty': 'Ancora nessun knowledge graph.',
  'namespaceOverview.emptyHint':
    'Man mano che l’assistente registra fatti tra i contesti, ogni spazio dei nomi apparirà qui.',
  'namespaceOverview.metricNamespaces': 'Spazi dei nomi',
  'namespaceOverview.metricFacts': 'Fatti',
  'namespaceOverview.metricEntities': 'Entità',
  'namespaceOverview.heading': 'Per spazio dei nomi',
  'namespaceOverview.unnamespaced': '(senza spazio dei nomi)',
  'namespaceOverview.factsLabel': '{count} fatti',
  'namespaceOverview.entitiesLabel': '{count} entità',
  'namespaceOverview.entitiesShort': '{count} ent.',
  'namespaceOverview.truncated': 'Mostrando i primi {shown} di {total} spazi dei nomi.',
  'graphCentrality.title': 'Centralità del Grafo della Conoscenza',
  'graphCentrality.intro':
    'PageRank sul tuo grafo della memoria mette in evidenza gli hub portanti — e le entità di collegamento che connettono cluster altrimenti separati, cosa che un semplice conteggio di frequenza non può rivelare.',
  'graphCentrality.loading': 'Calcolando la centralità…',
  'graphCentrality.errorPrefix': 'Impossibile caricare il grafico:',
  'graphCentrality.retry': 'Riprova',
  'graphCentrality.empty': 'Ancora nessun knowledge graph.',
  'graphCentrality.emptyHint':
    "Man mano che l'assistente registra fatti su di te, le entità più connesse emergeranno qui.",
  'graphCentrality.namespaceLabel': 'Spazio dei nomi',
  'graphCentrality.namespaceAll': 'Tutti gli spazi dei nomi',
  'graphCentrality.metricEntities': 'Entità',
  'graphCentrality.metricConnections': 'Connessioni',
  'graphCentrality.metricClusters': 'Gruppi',
  'graphCentrality.clustersCaption': 'Cluster {components} · più grandi impugnature {largest}',
  'graphCentrality.approximateBadge': 'approssimativo',
  'graphCentrality.approximateTitle':
    'Fermato al limite delle iterazioni prima di convergere completamente',
  'graphCentrality.rankedHeading': 'Principali entità per influenza',
  'graphCentrality.colRank': '#',
  'graphCentrality.colEntity': 'Entità',
  'graphCentrality.colInfluence': 'Influenza',
  'graphCentrality.colLinks': 'Collegamenti',
  'graphCentrality.bridgeBadge': 'connettore',
  'graphCentrality.bridgeTitle':
    'Connettore — più influente di quanto suggerisca il suo numero di collegamenti',
  'graphCentrality.degreeTitle': '{in} in entrata · {out} in uscita',
  'memory.tab.associations': 'Associations',
  'entityAssociations.title': 'Associazioni di entità',
  'entityAssociations.intro':
    'Le entità che condividono molte delle stesse connessioni sono associate — anche quando nessun singolo fatto le collega direttamente. La similarità di Jaccard rivela questi abbinamenti nascosti.',
  'entityAssociations.loading': 'Calcolo delle associazioni…',
  'entityAssociations.errorPrefix': 'Impossibile caricare il grafo:',
  'entityAssociations.retry': 'Retry',
  'entityAssociations.empty': 'Nessuna associazione ancora.',
  'entityAssociations.emptyHint':
    'Quando le entità inizieranno a condividere connessioni, gli abbinamenti più forti appariranno qui.',
  'entityAssociations.namespaceLabel': 'Namespace',
  'entityAssociations.namespaceAll': 'Tutti i namespace',
  'entityAssociations.metricEntities': 'Entities',
  'entityAssociations.metricPairs': 'Associations',
  'entityAssociations.rankedHeading': 'Associazioni più forti',
  'entityAssociations.linkedBadge': 'linked',
  'entityAssociations.inferredBadge': 'inferred',
  'entityAssociations.linkedTitle': 'Queste entità sono direttamente collegate.',
  'entityAssociations.inferredTitle':
    'Nessun collegamento diretto — associate solo tramite connessioni condivise.',
  'entityAssociations.sharedLabel': '{shared} condivise',
  'entityAssociations.pairTitle': '{jaccard}% simili · {shared} di {union} connessioni condivise',
  'entityAssociations.truncated': 'Visualizzazione di {shown} su {total} — le più forti per prime.',
  'memory.tab.freshness': 'Freshness',
  'memoryFreshness.title': 'Freschezza della conoscenza',
  'memoryFreshness.intro':
    "I fatti che l'assistente non ha riconfermato di recente decadono lungo una curva dell'oblio. Questo mostra cosa sta diventando obsoleto e merita una nuova verifica, affinché i vecchi fatti non vengano trattati come ancora certi.",
  'memoryFreshness.loading': 'Calcolo della freschezza…',
  'memoryFreshness.errorPrefix': 'Impossibile caricare il grafo:',
  'memoryFreshness.retry': 'Retry',
  'memoryFreshness.empty': 'Nessun grafo della conoscenza ancora.',
  'memoryFreshness.emptyHint':
    "Quando l'assistente registrerà fatti su di te, la loro freschezza sarà monitorata qui.",
  'memoryFreshness.namespaceLabel': 'Namespace',
  'memoryFreshness.namespaceAll': 'Tutti i namespace',
  'memoryFreshness.metricFresh': 'Fresh',
  'memoryFreshness.metricFading': 'Fading',
  'memoryFreshness.metricStale': 'Stale',
  'memoryFreshness.recallCaption': 'Richiamo medio {recall}% su {total} fatti',
  'memoryFreshness.queueHeading': 'Coda di riconferma',
  'memoryFreshness.queueTruncated':
    'Visualizzazione di {shown} su {total} — affronta questi per primi.',
  'memoryFreshness.allFresh': 'Tutti i fatti sono ancora freschi — nulla da riconfermare.',
  'memoryFreshness.statusFading': 'fading',
  'memoryFreshness.statusStale': 'stale',
  'memoryFreshness.ageLabel': '{days} giorni fa',
  'memoryFreshness.recallTitle': '{recall}% richiamo · emivita {halfLife} giorni',
  'memory.tab.path': 'Percorsi',
  'connectionPath.title': 'Percorso di connessione',
  'connectionPath.intro':
    'Traccia la catena più breve di relazioni che collega due entità qualsiasi — come il grafo le connette, anche attraverso più passaggi.',
  'connectionPath.loading': 'Caricamento del grafo…',
  'connectionPath.errorPrefix': 'Impossibile caricare il grafo:',
  'connectionPath.retry': 'Riprova',
  'connectionPath.namespaceLabel': 'Namespace',
  'connectionPath.namespaceAll': 'Tutti i namespace',
  'connectionPath.sourceLabel': 'Da',
  'connectionPath.targetLabel': 'A',
  'connectionPath.sourcePlaceholder': 'Entità di partenza',
  'connectionPath.targetPlaceholder': 'Entità di arrivo',
  'connectionPath.prompt': 'Scegli due entità per tracciare come sono collegate.',
  'connectionPath.empty': 'Nessun grafo della conoscenza ancora.',
  'connectionPath.emptyHint':
    "Una volta che l'assistente registra fatti correlati, potrai tracciare le connessioni qui.",
  'connectionPath.resultHeading': 'Percorso più breve',
  'connectionPath.pathSummary': 'Distanti {length} passaggio/i',
  'connectionPath.sameMessage': 'Scegli due entità diverse.',
  'connectionPath.missingSource': '«{entity}» non è presente nel grafo.',
  'connectionPath.missingTarget': '«{entity}» non è presente nel grafo.',
  'connectionPath.noPath': 'Nessuna connessione trovata tra «{source}» e «{target}».',
  'memoryTree.status.title': 'Albero della memoria',
  'memoryTree.status.autoSyncLabel': 'Sincronizzazione automatica',
  'memoryTree.status.autoSyncDescription':
    'Pausa per interrompere la nuova ingestione. La wiki esistente rimane interrogabile.',
  'memoryTree.status.statusTile': 'Stato',
  'memoryTree.status.lastSyncTile': 'Ultima sincronizzazione',
  'memoryTree.status.totalChunksTile': 'Blocchi totali',
  'memoryTree.status.wikiSizeTile': 'Dimensione del Wiki',
  'memoryTree.status.statusRunning': 'Correre',
  'memoryTree.status.statusPaused': 'In pausa',
  'memoryTree.status.statusSyncing': 'Sincronizzazione',
  'memoryTree.status.statusError': 'Errore',
  'memoryTree.status.statusIdle': 'Inattivo',
  'memoryTree.status.never': 'Mai',
  'memoryTree.status.fetchError': "Impossibile recuperare lo stato dell'Albero della Memoria",
  'memoryTree.status.retry': 'Riprova',
  'memoryTree.status.toggleFailed':
    'Impossibile attivare/disattivare la sincronizzazione automatica',
  'memoryTree.status.justNow': 'proprio adesso',
  'memoryTree.status.secondsAgo': '{count}s fa',
  'memoryTree.status.minuteAgo': '1 minuto fa',
  'memoryTree.status.minutesAgo': '{count} minuti fa',
  'memoryTree.status.hourAgo': '1 ora fa',
  'memoryTree.status.hoursAgo': '{count} ore fa',
  'memoryTree.status.dayAgo': '1 giorno fa',
  'memoryTree.status.daysAgo': '{count} giorni fa',
  'memoryTree.status.integrationsTitle': 'Stato per integrazione',
  'memoryTree.status.integrationsEmpty': 'Nessuna integrazione collegata',
  'memoryTree.status.integrationActive': 'Attiva',
  'memoryTree.status.integrationStale': 'Obsoleta',
  'memoryTree.status.integrationChunks': 'Blocchi: {count}',
  'alerts.title': 'Avvisi',
  'alerts.empty': 'Nessun avviso',
  'alerts.markAllRead': 'Segna tutti come letti',
  'alerts.unread': 'non letti',
  'rewards.title': 'Premi',
  'rewards.referrals': 'Referral',
  'rewards.coupons': 'Riscatta',
  'rewards.localUnavailable':
    "L'accesso locale non guadagna ricompense, coupon o credito referral. Esci e continua accedendo con un account OpenHuman se vuoi che le ricompense vengano conteggiate.",
  'rewards.localUnavailableCta': 'Apri le impostazioni account',
  'rewards.credits': 'Crediti',
  'rewards.referralCode': 'Il tuo codice referral',
  'rewards.copyCode': 'Copia codice',
  'rewards.share': 'Condividi',
  'onboarding.welcome': 'Ciao. Sono OpenHuman.',
  'onboarding.welcomeDesc':
    'Il tuo assistente AI super intelligente che gira sul tuo computer. Privato, semplice ed estremamente potente.',
  'onboarding.context': 'Raccolta del contesto',
  'onboarding.contextDesc': 'Connetti gli strumenti e i servizi che usi ogni giorno.',
  'onboarding.localAI': 'AI locale',
  'onboarding.localAIDesc': 'Configura un modello AI locale che gira sulla tua macchina.',
  'onboarding.chatProvider': 'Provider chat',
  'onboarding.chatProviderDesc': 'Scegli come vuoi interagire con il tuo assistente.',
  'onboarding.referral': 'Codice referral',
  'onboarding.referralDesc': 'Applica un codice referral se ne hai uno.',
  'onboarding.finish': 'Termina configurazione',
  'onboarding.finishDesc': 'Tutto pronto! Inizia a usare OpenHuman.',
  'onboarding.skip': 'Salta',
  'onboarding.getStarted': 'Inizia',
  'onboarding.runtimeChoice.title': 'Come vuoi eseguire OpenHuman?',
  'onboarding.runtimeChoice.subtitle':
    'Scegli la configurazione che fa per te. Puoi cambiarla in seguito nelle Impostazioni.',
  'onboarding.runtimeChoice.cloud.title': 'Semplice',
  'onboarding.runtimeChoice.cloud.tagline': 'Lascia che OpenHuman gestisca tutto per te.',
  'onboarding.runtimeChoice.cloud.f1': 'Sicurezza integrata',
  'onboarding.runtimeChoice.cloud.f2': 'Compressione token per allungare il tuo utilizzo',
  'onboarding.runtimeChoice.cloud.f3': 'Un solo abbonamento, tutti i modelli inclusi',
  'onboarding.runtimeChoice.cloud.f4': 'Nessuna chiave API da gestire',
  'onboarding.runtimeChoice.cloud.f5': 'Configurazione semplice',
  'onboarding.runtimeChoice.custom.title': 'Esegui personalizzato',
  'onboarding.runtimeChoice.custom.tagline': 'Porta le tue chiavi. Pieno controllo di ciò che usi.',
  'onboarding.runtimeChoice.custom.f1': 'Avrai bisogno di chiavi API per quasi tutto',
  'onboarding.runtimeChoice.custom.f2': 'Riutilizza servizi che già paghi',
  'onboarding.runtimeChoice.custom.f3': 'Può essere gratis se esegui tutto localmente',
  'onboarding.runtimeChoice.custom.f4': 'Più configurazione, più parametri',
  'onboarding.runtimeChoice.custom.f5': 'Ideale per power user e sviluppatori',
  'onboarding.runtimeChoice.cloud.creditHighlight': "Crediti gratuiti all'iscrizione",
  'onboarding.runtimeChoice.continueCloud': 'Continua con Semplice',
  'onboarding.runtimeChoice.continueCustom': 'Continua con Personalizzato',
  'onboarding.runtimeChoice.recommended': 'Consigliato',
  'onboarding.runtimeChoice.exitError': "Impossibile completare l'onboarding. Riprova.",
  'onboarding.apiKeys.title': 'Aggiungiamo le tue chiavi API',
  'onboarding.apiKeys.subtitle':
    'Puoi incollarle ora o saltare e aggiungerle dopo in Impostazioni › AI. Le chiavi sono memorizzate su questo dispositivo, crittografate a riposo.',
  'onboarding.apiKeys.openaiLabel': 'Chiave API OpenAI',
  'onboarding.apiKeys.openaiPlaceholder': 'sk-...',
  'onboarding.apiKeys.openaiOauthHint':
    'Utilizza ChatGPT Plus/Pro (abbonamento) o una chiave OpenAI API: non entrambi richiesti.',
  'onboarding.apiKeys.openaiOauthOpening': "Apertura dell'accesso…",
  'onboarding.apiKeys.openaiOauthConnect': 'Accedi con ChatGPT',
  'onboarding.apiKeys.openaiOauthConnected': 'Connesso con ChatGPT',
  'onboarding.apiKeys.openaiOauthCallbackHint':
    "Dopo l'accesso, incolla l'URL di reindirizzamento completo dal tuo browser (inizia con {url}).",
  'onboarding.apiKeys.oauthDesktopOnly': "L'accesso a ChatGPT è disponibile solo nell'app desktop.",
  'onboarding.apiKeys.oauthStartFailed':
    "Impossibile avviare l'accesso a ChatGPT. Riprova o usa una chiave API.",
  'onboarding.apiKeys.oauthPasteRedirect':
    "Incolla l'URL di reindirizzamento dal tuo browser dopo l'accesso.",
  'onboarding.apiKeys.oauthCompleteFailed':
    "L'accesso a ChatGPT non è stato completato. Controlla l'URL di reindirizzamento e riprova.",
  'onboarding.apiKeys.finishSignIn': "Termina l'accesso a ChatGPT",
  'onboarding.apiKeys.orApiKey': 'o il tasto API',
  'onboarding.apiKeys.anthropicLabel': 'Chiave API Anthropic',
  'onboarding.apiKeys.anthropicPlaceholder': 'sk-ant-...',
  'onboarding.apiKeys.saveError': 'Impossibile salvare la chiave. Controllala e riprova.',
  'onboarding.apiKeys.skipForNow': 'Salta per ora',
  'onboarding.apiKeys.continue': 'Salva e continua',
  'onboarding.apiKeys.saving': 'Salvataggio…',
  'onboarding.custom.stepperInference': 'Inferenza',
  'onboarding.custom.stepperVoice': 'Voce',
  'onboarding.custom.stepperOAuth': 'OAuth',
  'onboarding.custom.stepperSearch': 'Ricerca',
  'onboarding.custom.stepperEmbeddings': 'Embeddings',
  'onboarding.custom.stepperMemory': 'Memoria',
  'onboarding.custom.stepCounter': 'Passo {n} di {total}',
  'onboarding.custom.defaultTitle': 'Predefinito',
  'onboarding.custom.defaultSubtitle': 'Lascia che OpenHuman lo gestisca per te.',
  'onboarding.custom.configureTitle': 'Configura',
  'onboarding.custom.configureSubtitle': 'Scelgo io cosa usare.',
  'onboarding.custom.progressAriaLabel': 'Avanzamento onboarding',
  'onboarding.custom.continue': 'Continua',
  'onboarding.custom.back': 'Indietro',
  'onboarding.custom.finish': 'Termina configurazione',
  'onboarding.custom.configureLater':
    "Puoi finire di configurare dopo l'onboarding. Ti porteremo alla pagina Impostazioni corrispondente al termine.",
  'onboarding.custom.openSettings': 'Apri in Impostazioni',
  'onboarding.custom.inference.title': 'Inferenza (testo)',
  'onboarding.custom.inference.subtitle':
    'Quale modello linguistico dovrebbe rispondere alle tue domande ed eseguire i tuoi agenti?',
  'onboarding.custom.inference.defaultDesc':
    'OpenHuman instrada ogni carico di lavoro a un modello predefinito sensato. Niente chiavi, niente configurazione.',
  'onboarding.custom.inference.configureDesc':
    'Porta la tua chiave OpenAI o Anthropic. La useremo per ogni carico di lavoro testuale.',
  'onboarding.custom.voice.title': 'Voce',
  'onboarding.custom.voice.subtitle': 'Speech-to-text e text-to-speech per la modalità vocale.',
  'onboarding.custom.voice.defaultDesc':
    'OpenHuman include STT/TTS gestiti che funzionano subito. Niente da configurare.',
  'onboarding.custom.voice.configureDesc':
    'Usa il tuo ElevenLabs / OpenAI Whisper / ecc. Configura in Impostazioni › Voce.',
  'onboarding.custom.oauth.title': 'Connessioni (OAuth)',
  'onboarding.custom.oauth.subtitle':
    'Gmail, Slack, Notion e altri servizi connessi che richiedono OAuth.',
  'onboarding.custom.oauth.defaultDesc':
    'OpenHuman gestisce un workspace Composio gestito. Un clic per connettere ogni servizio in seguito.',
  'onboarding.custom.oauth.configureDesc':
    'Porta il tuo account Composio / chiave API. Configura in Impostazioni › Connessioni.',
  'onboarding.custom.search.title': 'Ricerca web',
  'onboarding.custom.search.subtitle': 'Come OpenHuman cerca sul web per tuo conto.',
  'onboarding.custom.search.defaultDesc':
    'OpenHuman usa un backend di ricerca gestito. Nessuna chiave necessaria.',
  'onboarding.custom.search.configureDesc':
    'Porta la tua chiave di provider di ricerca (Tavily, Brave, ecc.). Configura in Impostazioni › Strumenti.',
  'onboarding.custom.embeddings.title': 'Embeddings',
  'onboarding.custom.embeddings.subtitle':
    'Come OpenHuman genera gli embedding vettoriali per la ricerca nella memoria semantica.',
  'onboarding.custom.embeddings.defaultDesc':
    'OpenHuman utilizza un servizio di embedding gestito. Nessuna chiave API necessaria.',
  'onboarding.custom.embeddings.configureDesc':
    'Usa il tuo provider di embedding (OpenAI, Voyage, Ollama, ecc.).',
  'onboarding.custom.memory.title': 'Memoria',
  'onboarding.custom.memory.subtitle':
    'Come OpenHuman ricorda il tuo contesto, le preferenze e le conversazioni precedenti.',
  'onboarding.custom.memory.defaultDesc':
    "OpenHuman gestisce automaticamente l'archiviazione e il recupero della memoria. Niente da configurare.",
  'onboarding.custom.memory.configureDesc':
    'Ispeziona, esporta o cancella la memoria da solo. Configura in Impostazioni › Memoria.',
  'accounts.addAccount': 'Aggiungi account',
  'accounts.addApps': 'Aggiungi app',
  'accounts.manageAccounts': 'Gestisci account',
  'accounts.noAccounts': 'Nessun account connesso',
  'accounts.connectAccount': 'Connetti un account per iniziare',
  'accounts.agent': 'Agente',
  'accounts.respondQueue': 'Coda di risposta',
  'accounts.disconnect': 'Disconnetti',
  'accounts.disconnectConfirm': 'Sei sicuro di voler disconnettere questo account?',
  'accounts.disconnectClearMemory': 'Elimina anche la memoria da questa fonte',
  'accounts.disconnectClearMemoryHint':
    'Rimuove definitivamente i frammenti di memoria locale collegati a questa connessione.',
  'accounts.searchAccounts': 'Cerca account...',
  'channels.title': 'Canali',
  'channels.configure': 'Configura canale',
  'channels.setup': 'Configura',
  'channels.noChannels': 'Nessun canale configurato',
  'channels.localManagedUnavailable':
    'I canali gestiti non sono disponibili per gli utenti locali.',
  'channels.addChannel': 'Aggiungi canale',
  'channels.status.connected': 'Connesso',
  'channels.status.disconnected': 'Disconnesso',
  'channels.status.error': 'Errore',
  'channels.status.configuring': 'Configurazione',
  'channels.defaultMessaging': 'Canale di messaggistica predefinito',
  'channels.setAsDefault': 'Imposta come predefinito',
  'channels.defaultBadge': 'Predefinito',
  'webhooks.title': 'Webhook',
  'webhooks.create': 'Crea webhook',
  'webhooks.noWebhooks': 'Nessun webhook configurato',
  'webhooks.url': 'URL',
  'webhooks.secret': 'Segreto',
  'webhooks.events': 'Eventi',
  'webhooks.archiveDirectory': 'Directory di archivio',
  'webhooks.todayFile': 'File di oggi',
  'invites.title': 'Inviti',
  'invites.create': 'Crea invito',
  'invites.noInvites': 'Nessun invito in sospeso',
  'invites.code': 'Codice invito',
  'invites.copyLink': 'Copia link',
  'invites.generate': 'Genera invito',
  'invites.generating': 'Generazione in corso...',
  'invites.refreshing': 'Aggiornamento inviti in corso...',
  'invites.loading': 'Caricamento inviti...',
  'invites.copyCodeAria': 'Copia codice invito',
  'invites.revokeAria': 'Revoca invito',
  'invites.usedUp': 'Esaurito',
  'invites.uses': 'Utilizza: {current}{max}',
  'invites.expiresOn': 'Scadenza {date}',
  'invites.empty': 'Ancora nessun invito',
  'invites.emptyHint': 'Genera un codice di invito da condividere con altri',
  'invites.revokeTitle': 'Revoca codice di invito',
  'invites.revokePromptPrefix': 'Sei sicuro vuoi revocare il codice di invito',
  'invites.revokeWarning':
    'Questo codice invito non sarà più valido e non potrà essere usato per entrare nel team.',
  'invites.revoking': 'Revoca in corso...',
  'invites.revokeAction': 'Revoca invito',
  'invites.failedGenerate': "Impossibile generare l'invito",
  'invites.failedRevoke': "Impossibile revocare l'invito",
  'team.refreshingMembers': 'Aggiornamento membri...',
  'team.loadingMembers': 'Caricamento membri...',
  'team.memberCount': '{count} membro',
  'team.memberCountPlural': '{count} membri',
  'team.you': '(Tu)',
  'team.removeAria': 'Rimuovi {name}',
  'team.noMembers': 'Nessun membro trovato',
  'team.removeTitle': 'Rimuovi membro del team',
  'team.removePromptPrefix': 'Sei sicuro di voler rimuovere',
  'team.removePromptSuffix': 'dal team?',
  'team.removeWarning': "Perderanno l'accesso al team e a tutte le risorse del team.",
  'team.removing': 'Rimozione in corso...',
  'team.removeAction': 'Rimuovi membro',
  'team.changeRoleTitle': 'Modifica ruolo membro',
  'team.changeRolePrompt': 'Cambiare il ruolo di {name} da {oldRole} a {newRole}?',
  'team.changeRoleAdminGrant':
    'Questo concederà loro i permessi di amministratore completi, inclusa la possibilità di gestire i membri del team.',
  'team.changeRoleAdminRemove':
    'Questo rimuoverà i loro permessi di amministratore e non potranno più gestire il team.',
  'team.changing': 'Modifica...',
  'team.changeRoleAction': 'Modifica ruolo',
  'team.failedChangeRole': 'Impossibile modificare il ruolo',
  'team.failedRemoveMember': 'Impossibile rimuovere il membro',
  'devOptions.title': 'Avanzate',
  'devOptions.titleDiagnostics': 'Sviluppatore e Diagnostica',
  'devOptions.diagnostics': 'Diagnostica',
  'devOptions.diagnosticsDesc': 'Stato del sistema, log e metriche di performance',
  'devOptions.toolPolicyDiagnosticsDesc':
    'Inventario degli strumenti, posizione della politica, allowlist MCP e blocchi recenti',
  'devOptions.toolPolicyDiagnostics.loading': 'Caricamento…',
  'devOptions.toolPolicyDiagnostics.unavailable': 'Diagnostica non disponibile',
  'devOptions.toolPolicyDiagnostics.posture.title': 'Orientamento politico',
  'devOptions.toolPolicyDiagnostics.posture.autonomy': 'Autonomia:',
  'devOptions.toolPolicyDiagnostics.posture.workspaceOnly': 'Solo spazio di lavoro:',
  'devOptions.toolPolicyDiagnostics.posture.maxActionsPerHour': 'Azioni max/ora:',
  'devOptions.toolPolicyDiagnostics.posture.approvalMediumRisk': 'Approvazione (rischio medio):',
  'devOptions.toolPolicyDiagnostics.posture.blockHighRisk': 'Blocca ad alto rischio:',
  'devOptions.toolPolicyDiagnostics.inventory.title': 'Inventario',
  'devOptions.toolPolicyDiagnostics.inventory.totalTools': 'Strumenti totali',
  'devOptions.toolPolicyDiagnostics.inventory.enabledTools': 'Strumenti abilitati',
  'devOptions.toolPolicyDiagnostics.inventory.mcpStdioTools': 'Strumenti stdio MCP',
  'devOptions.toolPolicyDiagnostics.inventory.jsonRpcTools': 'strumenti JSON-RPC',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.title': 'liste di permessi MCP',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.summary':
    'Abilitato: {enabled} · Server: {enabledCount}/{totalCount}',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.unnamed': '<senza nome>',
  'devOptions.toolPolicyDiagnostics.mcpAllowlists.allowDeny':
    'consenti={allowCount} nega={denyCount}',
  'devOptions.toolPolicyDiagnostics.mcpWriteAudit.title': 'MCP scrivi audit',
  'devOptions.toolPolicyDiagnostics.mcpWriteAudit.summary':
    'Abilitato: {enabled} · Recenti (24h): {recentRows}',
  'devOptions.toolPolicyDiagnostics.recentBlocked.title': 'Chiamate bloccate recenti',
  'devOptions.toolPolicyDiagnostics.recentBlocked.empty': 'Nessuna chiamata bloccata registrata.',
  'devOptions.toolPolicyDiagnostics.redactedSurfaces.title': 'Superfici oscurate',
  'devOptions.toolPolicyDiagnostics.redactedSurfaces.summary':
    'Scrittura abilitata: {writeCount} · Superfici della politica: {policyCount}',
  'devOptions.debugPanels': 'Pannelli di debug',
  'devOptions.debugPanelsDesc': 'Feature flag, ispezione dello stato e strumenti di debug',
  'devOptions.webhooks': 'Webhook',
  'devOptions.webhooksDesc': 'Configura e testa le integrazioni webhook',
  'devOptions.memoryInspection': 'Ispezione memoria',
  'devOptions.memoryInspectionDesc': 'Esplora, interroga e gestisci le voci di memoria',
  'voice.pushToTalk': 'Push to talk',
  'voice.recording': 'Registrazione...',
  'voice.processing': 'Elaborazione...',
  'voice.languageHint': 'Lingua',
  'misc.rehydrating': 'Caricamento dei tuoi dati...',
  'misc.checkingServices': 'Verifica servizi...',
  'misc.serviceUnavailable': 'Servizio non disponibile',
  'misc.somethingWentWrong': 'Qualcosa è andato storto',
  'misc.tryAgainLater': 'Riprova più tardi.',
  'misc.restartApp': 'Riavvia app',
  'misc.updateAvailable': 'Aggiornamento disponibile',
  'misc.updateNow': 'Aggiorna ora',
  'misc.updateLater': 'Più tardi',
  'misc.downloading': 'Download in corso...',
  'misc.installing': 'Installazione...',
  'misc.beta':
    'OpenHuman è in beta iniziale. Sentiti libero di condividere feedback o segnalare bug che incontri — ogni segnalazione ci aiuta a rilasciare più velocemente.',
  'misc.betaFeedback': 'Invia feedback',
  'mnemonic.title': 'Frase di recupero',
  'mnemonic.warning': 'Scrivi queste parole in ordine e conservale in un luogo sicuro.',
  'mnemonic.copyWarning':
    'Non condividere mai la tua frase di recupero. Chiunque abbia queste parole può accedere al tuo account.',
  'mnemonic.copied': 'Frase di recupero copiata negli appunti',
  'mnemonic.reveal': 'Mostra frase',
  'mnemonic.revealPhrase': 'Mostra frase di recupero',
  'mnemonic.hidden': 'La frase di recupero è nascosta',
  'privacy.title': 'Privacy e sicurezza',
  'privacy.description': 'Report di trasparenza sui dati inviati a servizi esterni.',
  'privacy.empty': 'Nessun trasferimento di dati esterno rilevato.',
  'privacy.whatLeavesComputer': 'Cosa esce dal tuo computer',
  'privacy.loading': 'Caricamento dettagli privacy...',
  'privacy.loadError':
    "Impossibile caricare l'elenco privacy in tempo reale. I controlli analytics sottostanti funzionano comunque.",
  'privacy.noCapabilities': 'Nessuna capacità attualmente divulga movimenti di dati.',
  'privacy.sentTo': 'Inviato a',
  'privacy.leavesDevice': 'Esce dal dispositivo',
  'privacy.staysLocal': 'Rimane locale',
  'privacy.anonymizedAnalytics': 'Analisi del prodotto',
  'privacy.shareAnonymizedData': 'Condividi analisi del prodotto e diagnostica',
  'privacy.shareAnonymizedDataDesc':
    'Aiuta a migliorare OpenHuman condividendo report di crash ed eventi di utilizzo limitati per la privacy, inclusi un ID account stabile e i metadati della versione dell’app. Messaggi, chiavi wallet, chiavi API e token di sessione non vengono mai raccolti.',
  'privacy.meetingFollowUps': 'Follow-up delle riunioni',
  'privacy.autoHandoffMeet':
    "Trasferimento automatico delle trascrizioni Google Meet all'orchestratore",
  'privacy.autoHandoffMeetDesc':
    "Quando termina una chiamata Google Meet, l'orchestratore di OpenHuman può leggere la trascrizione e svolgere azioni come redigere messaggi, pianificare follow-up o pubblicare riassunti nel tuo workspace Slack connesso. Disattivato di default.",
  'privacy.analyticsDisclaimer':
    'Quando abilitata, l’analisi del prodotto e la diagnostica possono includere report di crash ed eventi di utilizzo limitati per la privacy, un ID account stabile e metadati della versione dell’app. Messaggi, chiavi wallet, chiavi API e token di sessione non vengono mai raccolti. Puoi cambiare questa impostazione in qualsiasi momento.',
  'settings.about.version': 'Versione',
  'settings.about.updateAvailable': 'è disponibile',
  'settings.about.softwareUpdates': 'Aggiornamenti software',
  'settings.about.lastChecked': 'Ultima verifica',
  'settings.about.checking': 'Verifica in corso...',
  'settings.about.checkForUpdates': 'Verifica aggiornamenti',
  'settings.about.releases': 'Release',
  'settings.about.releasesDesc': 'Sfoglia le note di rilascio e le build precedenti su GitHub.',
  'settings.about.openReleases': 'Apri release GitHub',
  'settings.about.connection': 'Connessione',
  'settings.about.connectionMode': 'Modalità',
  'settings.about.connectionModeLocal': 'Locale',
  'settings.about.connectionModeCloud': 'Nuvola',
  'settings.about.connectionModeUnset': 'Non selezionato',
  'settings.about.serverUrl': 'URL del server',
  'settings.about.serverUrlUnavailable': 'Non disponibile',
  'settings.about.connectionHelperLocal':
    "Generato in-process dal shell Tauri all'avvio dell'app. La porta viene scelta all'avvio, quindi questo URL cambia tra gli avvii.",
  'settings.about.connectionHelperCloud':
    'Connesso a un core remoto. Cambia questo in BootCheck o nel selettore della modalità cloud.',
  'settings.heartbeat.title': 'Heartbeat e loop',
  'settings.usage.title': 'Utilizzo e limiti',
  'settings.usage.menuDesc': 'Costi, utilizzo dei token, budget e attività in background',
  'settings.costDashboard.title': 'Cruscotto dei costi',
  'settings.costDashboard.sevenDayCost': 'Costo giornaliero di 7 giorni',
  'settings.costDashboard.sevenDayTokens': 'Utilizzo del token di 7 giorni',
  'settings.costDashboard.totalSpend': 'Totale di 7 giorni',
  'settings.costDashboard.monthlyPace': 'Ritmo mensile',
  'settings.costDashboard.budgetLimit': 'Limite di budget',
  'settings.costDashboard.utilization': 'Utilizzo',
  'settings.costDashboard.modelBreakdown': 'Suddivisione per modello',
  'settings.costDashboard.model': 'Modello',
  'settings.costDashboard.provider': 'Fornitore',
  'settings.costDashboard.cost': 'Costo',
  'settings.costDashboard.tokens': 'Gettoni',
  'settings.costDashboard.requests': 'Richieste',
  'settings.costDashboard.percentOfTotal': '% del totale',
  'settings.costDashboard.inputTokens': 'Ingresso',
  'settings.costDashboard.outputTokens': 'Output',
  'settings.costDashboard.budgetNormal': 'In carreggiata',
  'settings.costDashboard.budgetWarning': 'Avviso',
  'settings.costDashboard.budgetExceeded': 'Oltre il budget',
  'settings.costDashboard.noBudget': 'Nessun limite impostato',
  'settings.costDashboard.noData': 'Nessun costo registrato negli ultimi 7 giorni.',
  'settings.costDashboard.noModels': 'Nessuna attività del modello negli ultimi 7 giorni.',
  'settings.costDashboard.loading': 'Caricamento cruscotto dei costi…',
  'settings.costDashboard.disabledHint':
    'La dashboard dei costi è disabilitata nella configurazione. Imposta [cost.dashboard] enabled = true in config.toml per riattivarla.',
  'settings.costDashboard.subtitle':
    'Spese live e distruzione di token attraverso lo sciame. Le barre si aggiornano automaticamente ogni pochi secondi — nessun bisogno di ricaricare la pagina.',
  'settings.costDashboard.summaryAriaLabel': 'Metriche riepilogative dei costi',
  'settings.costDashboard.lastSevenDays': 'ultimi 7 giorni',
  'settings.costDashboard.utilizationOf': 'di',
  'settings.costDashboard.thisMonth': 'questo mese',
  'settings.costDashboard.monthlyPaceHint':
    'Spesa mensile prevista al tasso di esecuzione giornaliero corrente (media × 30).',
  'settings.costDashboard.budgetLimitHint':
    'Budget mensile letto da cost.monthly_limit_usd in config.toml.',
  'settings.costDashboard.dailyTarget': 'Obiettivo giornaliero',
  'settings.costDashboard.today': 'Oggi',
  'settings.costDashboard.todayBadge': 'OGGI',
  'settings.costDashboard.unknownProvider': '—',
  'settings.costDashboard.justNow': 'Proprio adesso',
  'settings.costDashboard.secondsAgo': '{value}s fa',
  'settings.costDashboard.minutesAgo': '{value}m fa',
  'settings.costDashboard.hoursAgo': '{value}h fa',
  'settings.costDashboard.daysAgo': '{value}d fa',
  'settings.costDashboard.updated': 'Aggiornato',
  'settings.costDashboard.refresh': 'Aggiorna',
  'settings.costDashboard.utcNote': 'Giorni raggruppati in UTC',
  'settings.costDashboard.stackedNote': 'Ingresso + uscita impilati',
  'settings.costDashboard.modelBreakdownHint': 'Aggregato negli ultimi 7 giorni.',
  'settings.costDashboard.categoryDistribution': 'Spesa per categoria',
  'settings.costDashboard.categoryDistributionHint':
    'Dedotta dai record recenti di chat, embedding, voce, immagini e reranking.',
  'settings.costDashboard.noCategories': 'Nessuna spesa per categoria registrata.',
  'settings.costDashboard.categoryMeta': '{requests} richieste • {tokens} token',
  'settings.costDashboard.usageLog': 'Registro utilizzo',
  'settings.costDashboard.usageLogHint':
    'Record più recenti degli ultimi {days} giorni, limitati a {limit} righe.',
  'settings.costDashboard.logTotal': '{requests} richieste • {cost}',
  'settings.costDashboard.noUsageLog': 'Nessun record di utilizzo trovato per questo periodo.',
  'settings.costDashboard.when': 'Quando',
  'settings.costDashboard.category': 'Categoria',
  'settings.costDashboard.session': 'Sessione',
  'settings.costDashboard.noDataHint':
    "Invia un messaggio all'agente: l'utilizzo dei token dalla prossima chiamata al provider popolerà il grafico entro circa 10 secondi.",
  'settings.search.title': 'Motore di ricerca',
  'settings.search.menuDesc':
    'Imposta come predefinito la ricerca gestita da OpenHuman oppure collega il tuo provider con una chiave API.',
  'settings.search.description':
    "Scegli il motore di ricerca utilizzato dall'agente oppure disabilita completamente gli strumenti di ricerca. Gestito utilizza il backend di OpenHuman (nessuna configurazione). Parallelo, Brave e Querit vengono eseguiti direttamente dalla tua macchina usando la tua chiave API.",
  'settings.search.engineAria': 'Motore di ricerca',
  'settings.search.engineDisabledLabel': 'Disabled',
  'settings.search.engineDisabledDesc':
    "Rimuovi gli strumenti di ricerca dal contesto dell'agente e dall'elenco degli strumenti disponibili.",
  'settings.search.engineManagedLabel': 'OpenHuman Gestito',
  'settings.search.engineManagedDesc':
    'Predefinito. Instradato tramite il backend OpenHuman — nessuna chiave API necessaria.',
  'settings.search.localManagedUnavailable':
    'La ricerca gestita da OpenHuman non è disponibile per gli utenti locali. Aggiungi la tua chiave API Parallel o Brave per abilitare la ricerca web.',
  'settings.search.engineParallelLabel': 'parallelo',
  'settings.search.engineParallelDesc':
    'Direct Parallel API: ricerca, estrai, chatta, ricerca, arricchisci, strumenti per set di dati.',
  'settings.search.engineBraveLabel': 'Brave Cerca',
  'settings.search.engineBraveDesc':
    'Ricerca Diretta Brave API: strumenti per web, notizie, immagini e video.',
  'settings.search.engineQueritLabel': 'Querit',
  'settings.search.engineQueritDesc':
    'Direct Querit API: ricerca sul web con filtri per sito, intervallo di tempo, paese e lingua.',
  'settings.search.statusConfigured': 'Configurato',
  'settings.search.statusNeedsKey': 'Richiede la chiave API',
  'settings.search.fallbackToManaged':
    'Nessuna chiave configurata — la ricerca passerà a Gestito finché non viene salvata una chiave.',
  'settings.search.getApiKey': 'Ottieni chiave API',
  'settings.search.save': 'Salva',
  'settings.search.clear': 'Cancella',
  'settings.search.show': 'Mostra',
  'settings.search.hide': 'Nascondi',
  'settings.search.statusSaving': 'Salvataggio...',
  'settings.search.statusSaved': 'Salvato.',
  'settings.search.statusError': 'Non riuscito',
  'settings.search.parallelKeyLabel': 'Parallel API chiave',
  'settings.search.braveKeyLabel': 'Brave Cerca chiave API',
  'settings.search.queritKeyLabel': 'Chiave Querit API',
  'settings.search.placeholderStored': '•••••••• (memorizzato)',
  'settings.search.placeholderParallel': 'pk_...',
  'settings.search.placeholderBrave': 'BSA...',
  'settings.search.placeholderQuerit': 'Chiave Querit API',
  'settings.search.allowedSitesLabel': 'Siti web consentiti',
  'settings.search.allowedSitesHint':
    "Host che l'assistente può aprire e leggere — tramite recupero web e lo strumento browser — uno per riga, es. reuters.com. Un host include anche i suoi sottodomini. La ricerca web stessa non è limitata da questo elenco.",
  'settings.search.allowedSitesAllOn':
    "L'assistente può aprire qualsiasi sito web pubblico. Gli indirizzi locali e privati rimangono bloccati.",
  'settings.search.allowedSitesPlaceholder': 'reuters.com\napnews.com\ngithub.com',
  'settings.search.allowedSitesSave': 'Salva siti web',
  'settings.search.accessModeAria': 'Modalità di accesso al web',
  'settings.search.accessAllowAll': 'Consenti tutto',
  'settings.search.accessCustom': 'Personalizzato',
  'settings.search.accessBlockAll': 'Blocca tutto',
  'settings.search.accessBlockAllHint':
    "Tutti gli accessi web sono bloccati — l'assistente non può aprire o leggere alcun sito web.",
  // ─── Settings global search bar ────────────────────────────
  'settings.settingsSearch.placeholder': 'Cerca nelle impostazioni…',
  'settings.settingsSearch.ariaLabel': 'Cerca nelle impostazioni',
  'settings.settingsSearch.clear': 'Cancella ricerca',
  'settings.settingsSearch.resultsLabel': 'Risultati della ricerca',
  'settings.settingsSearch.noResults': 'Nessuna impostazione trovata per «{query}»',
  'settings.embeddings.title': 'Incorporamenti',
  'settings.embeddings.description':
    'Scegli il fornitore di embeddings che converte la memoria in vettori per la ricerca semantica. Cambiare fornitore, modello o dimensioni invalida i vettori memorizzati e richiede un reset completo della memoria.',
  'settings.embeddings.providerAria': 'Fornitore di embeddings',
  'settings.embeddings.statusConfigured': 'Configurato',
  'settings.embeddings.statusNeedsKey': 'Chiave API necessaria',
  'settings.embeddings.requiresSignIn': 'Accesso OpenHuman richiesto',
  'settings.embeddings.managedLoginRequired':
    'Gli embedding gestiti richiedono l’accesso a OpenHuman. Accedi per usare il backend OpenHuman.',
  'settings.embeddings.managedBannerIntro':
    'Gli embedding gestiti passano dal backend OpenHuman e richiedono una sessione account OpenHuman.',
  'settings.embeddings.managedBannerLocalSession':
    'Esci dalla sessione locale e accedi per usare questo provider, oppure passa a un provider di embedding locale o con chiave personale.',
  'settings.embeddings.managedBannerRemoteSession':
    'Accedi di nuovo per aggiornare la sessione OpenHuman, oppure passa a un provider di embedding locale o con chiave personale.',
  'settings.embeddings.signInAgain': 'Accedi di nuovo',
  'settings.embeddings.apiKeyLabel': 'Chiave API {provider}',
  'settings.embeddings.placeholderStored': '•••••••• (memorizzato)',
  'settings.embeddings.placeholderKey': 'Incolla la tua chiave API…',
  'settings.embeddings.keyStoredEncrypted':
    'La tua chiave API è memorizzata crittografata su questo dispositivo.',
  'settings.embeddings.show': 'Mostra',
  'settings.embeddings.hide': 'Nascondi',
  'settings.embeddings.save': 'Salva',
  'settings.embeddings.clear': 'Cancella',
  'settings.embeddings.model': 'Modello',
  'settings.embeddings.dimensions': 'Dimensioni',
  'settings.embeddings.customEndpoint': 'Endpoint personalizzato',
  'settings.embeddings.customModelPlaceholder': 'Nome modello',
  'settings.embeddings.customDimsPlaceholder': 'Dim',
  'settings.embeddings.applyCustom': 'Applica',
  'settings.embeddings.testConnection': 'Testa connessione',
  'settings.embeddings.testing': 'Test in corso…',
  'settings.embeddings.testSuccess': 'Connesso — {dims} dimensioni',
  'settings.embeddings.connectionTestFailed': 'Test non riuscito',
  'settings.embeddings.verifyFallback':
    "Impossibile verificare l'endpoint di embedding. Assicurati che sia in esecuzione e fornisca un modello di embedding, poi salva di nuovo.",
  'settings.embeddings.testFailed': 'Fallito: {error}',
  'settings.embeddings.saving': 'Salvataggio…',
  'settings.embeddings.saved': 'Salvato.',
  'settings.embeddings.errorPrefix': 'Fallito',
  'settings.embeddings.wipeTitle': 'Resettare i vettori della memoria?',
  'settings.embeddings.wipeBody':
    'Cambiare il fornitore di embeddings, il modello o le dimensioni cancellerà tutti i vettori della memoria. La memoria deve essere ricostruita prima che il recupero funzioni di nuovo. Questa operazione non può essere annullata.',
  'settings.embeddings.cancel': 'Annulla',
  'settings.embeddings.confirmWipe': 'Cancella e applica',
  'settings.embeddings.setupTitle': 'Configura {provider}',
  'settings.embeddings.saveAndSwitch': 'Salva e cambia',
  'settings.embeddings.optional': 'opzionale',
  'settings.embeddings.vectorSearchDisabled':
    'La ricerca vettoriale è disabilitata. Il richiamo della memoria utilizzerà solo il confronto delle parole chiave e la recenza — nessuna classificazione semantica.',
  'settings.embeddings.clearKey': 'Cancella chiave API',
  'pages.settings.ai.embeddings': 'Incorporamenti',
  'pages.settings.ai.embeddingsDesc':
    'Modello di codifica vettoriale per il recupero della memoria',
  'mcp.alphaBadge': 'Alfa',
  'mcp.alphaBannerText':
    'Il supporto del server MCP è in fase alpha iniziale. Il registro, il flusso di installazione e il collegamento degli strumenti potrebbero comportarsi in modo anomalo o cambiare forma tra le versioni.',
  'mcp.toolList.noTools': 'Nessuno strumento disponibile.',
  'mcp.setup.secretDialog.title': 'MCP Configurazione: inserisci il segreto',
  'mcp.setup.secretDialog.bodyPrefix': "L'agente di configurazione MCP è necessario",
  'mcp.setup.secretDialog.bodySuffix':
    '. Il tuo valore viene inviato direttamente al processo principale e non entra mai nella conversazione AI.',
  'mcp.setup.secretDialog.inputLabel': 'Valore',
  'mcp.setup.secretDialog.inputPlaceholder': 'Incolla qui',
  'mcp.setup.secretDialog.show': 'Mostra',
  'mcp.setup.secretDialog.hide': 'Nascondi',
  'mcp.setup.secretDialog.submit': 'Invia',
  'mcp.setup.secretDialog.cancel': 'Annulla',
  'mcp.setup.secretDialog.submitting': 'Invio in corso...',
  'mcp.setup.secretDialog.errorPrefix': 'Impossibile inviare:',
  'mcp.setup.secretDialog.privacyNote':
    'Memorizzato criptato nella tabella dei segreti locali MCP. Mai registrato o inviato a un modello.',
  'devices.betaBadge': 'Beta',
  'devices.betaText':
    'Questa funzionalità è attualmente in beta. Associa i telefoni iOS a questo OpenHuman per usarli come client remoto.',
  'devices.comingSoonDescription':
    "L'abbinamento dei dispositivi arriverà presto. Questa pagina sarà il punto centrale per abbinare gli iPhone e gestire i dispositivi connessi.",
  'devices.title': 'Dispositivi',
  'devices.pairIphone': 'Associa iPhone',
  'devices.noPaired': 'Nessun dispositivo associato',
  'devices.emptyState':
    'Scansiona un codice QR sul tuo iPhone per collegarlo a questa sessione OpenHuman.',
  'devices.devicePairedTitle': 'Dispositivo accoppiato.',
  'devices.devicePairedMessage': 'iPhone connesso correttamente.',
  'devices.deviceRevokedTitle': 'Dispositivo revocato',
  'devices.deviceRevokedMessage': '{label} rimosso.',
  'devices.revokeFailedTitle': 'Revoca non riuscita',
  'devices.online': 'Online',
  'devices.offline': 'Offline',
  'devices.lastSeenNever': 'Mai',
  'devices.lastSeenNow': 'Proprio ora',
  'devices.lastSeenMinutes': '{count}m fa',
  'devices.lastSeenHours': '{count}h fa',
  'devices.lastSeenDays': '{count}d fa',
  'devices.revoke': 'Revoca',
  'devices.revokeAria': 'Revoca {label}',
  'devices.confirmRevokeTitle': 'Revoca dispositivo?',
  'devices.confirmRevokeBody':
    '{label} non potrà più connettersi. Questa operazione non può essere annullata.',
  'devices.loadFailed': 'Impossibile caricare i dispositivi: {message}',
  'devices.pairModal.title': 'Accoppia iPhone',
  'devices.pairModal.loading': 'Generazione del codice di accoppiamento…',
  'devices.pairModal.instructions':
    "Apri l'app OpenHuman sul tuo iPhone e scansiona questo codice.",
  'devices.pairModal.expiresIn': 'Il codice scade tra ~{count} minuto',
  'devices.pairModal.expiresInPlural': 'Il codice scade tra ~{count} minuti',
  'devices.pairModal.showDetails': 'Mostra dettagli',
  'devices.pairModal.hideDetails': 'Nascondi dettagli',
  'devices.pairModal.channelId': 'ID canale',
  'devices.pairModal.pairingUrl': 'Associazione URL',
  'devices.pairModal.expiredTitle': 'QR code scaduto',
  'devices.pairModal.expiredBody': "Genera un nuovo codice per continuare l'associazione.",
  'devices.pairModal.generateNewCode': 'Genera nuovo codice',
  'devices.pairModal.successTitle': 'Accoppiato con iPhone',
  'devices.pairModal.autoClose': 'Chiusura automatica…',
  'devices.pairModal.errorPrefix': "Impossibile creare l'associazione: {message}",
  'devices.pairModal.errorTitle': 'Qualcosa è andato storto',
  'devices.pairModal.copyUrl': 'Copia',
  'mcp.catalog.searchAria': 'Cerca nel catalogo della fucina',
  'mcp.catalog.searchPlaceholder': 'Cerca nel catalogo della fucina...',
  'mcp.catalog.loadFailed': 'Impossibile caricare il catalogo',
  'mcp.catalog.noResults': 'Nessun server trovato.',
  'mcp.catalog.noResultsFor': 'Nessun server trovato per "{query}".',
  'mcp.catalog.loadMore': 'Carica altro',
  'mcp.configAssistant.title': 'Assistente di configurazione',
  'mcp.configAssistant.empty':
    "Chiedi della configurazione, delle variabili d'ambiente richieste o dei passaggi di configurazione.",
  'mcp.configAssistant.autoPromptCta': 'Ottieni aiuto alla configurazione passo passo',
  'mcp.configAssistant.suggestedValues': 'Valori suggeriti:',
  'mcp.configAssistant.valueHidden': '(valore nascosto)',
  'mcp.configAssistant.applySuggested': 'Applica i valori suggeriti',
  'mcp.configAssistant.reinstallHint': 'Reinstallare con questi valori per applicarli.',
  'mcp.configAssistant.thinking': 'Pensavo...',
  'mcp.configAssistant.inputPlaceholder':
    'Fai una domanda (Invio per inviare, Maiusc+Invio per andare a capo)',
  'mcp.configAssistant.send': 'Invia',
  'mcp.configAssistant.failedResponse': 'Impossibile ottenere risposta',
  'mcp.toolList.availableSingular': '{count} strumento disponibile',
  'mcp.toolList.availablePlural': '{count} strumenti disponibili',
  'mcp.toolList.tryTool': 'Provare',
  'mcp.toolList.tryToolAria': 'Apri il playground di esecuzione per {name}',
  'mcp.playground.title': 'Esegui {name}',
  'mcp.playground.close': 'Chiudere il parco giochi',
  'mcp.playground.inputSchema': 'Schema di input',
  'mcp.playground.argsLabel': 'Argomenti (JSON)',
  'mcp.playground.argsHelp':
    "Digitare JSON corrispondente allo schema di input. L'input vuoto è considerato come {}.",
  'mcp.playground.runShortcut': '⌘/Ctrl + Invio per eseguire',
  'mcp.playground.format': 'Formato',
  'mcp.playground.invalidJson': 'JSON non valido',
  'mcp.playground.run': 'Esegui strumento',
  'mcp.playground.running': 'Correndo…',
  'mcp.playground.result': 'Risultato',
  'mcp.playground.resultError': 'Lo strumento ha restituito un errore',
  'mcp.playground.copyResult': 'Copia risultato',
  'mcp.playground.copied': 'Copiato',
  'mcp.playground.history': 'Storia',
  'mcp.playground.historyEmpty': 'Nessuna invocazione ancora in questa sessione.',
  'mcp.playground.historyLoad': 'Caricare',
  'mcp.playground.unexpectedError': "Errore imprevisto durante l'invocazione dello strumento.",
  'mcp.catalog.deployed': 'Distribuito',
  'mcp.catalog.installCount': '{count} installa',
  'app.update.dismissNotification': 'Ignora notifica di aggiornamento',
  'bootCheck.rpcAuthSuffix': 'su ogni RPC.',
  'app.localAiDownload.expandAria': "Espandi l'avanzamento del download",
  'app.localAiDownload.collapseAria': "Comprimi l'avanzamento del download",
  'app.localAiDownload.dismissAria': 'Ignora notifica di download',
  'mobile.nav.ariaLabel': 'Navigazione mobile',
  'progress.stepsAria': 'Passaggi di avanzamento',
  'progress.stepAria': 'Passaggio {current} di {total}',
  'workspace.vaultsTitle': 'Depositi di conoscenza',
  'workspace.vaultsDesc':
    'Punta a una cartella locale; i file vengono suddivisi in blocchi e sottoposti a mirroring nella memoria.',
  'calls.title': 'Chiamate',
  'calls.comingSoonBody':
    "Le chiamate assistite dall'intelligenza artificiale saranno presto disponibili. Rimani sintonizzato.",
  'art.rotatingTetrahedronAria': 'Veicolo spaziale a tetraedro invertito rotante',
  'mcp.installed.title': 'Installato',
  'mcp.installed.browseCatalog': 'Sfoglia il catalogo',
  'mcp.installed.empty': 'Nessun server MCP ancora installato.',
  'mcp.installed.toolSingular': '{count} strumento',
  'mcp.installed.toolPlural': '{count} strumenti',
  'mcp.health.title': 'Salute',
  'mcp.health.summaryAria': 'Riepilogo dello stato della connessione MCP',
  'mcp.health.connectedCount': '{count} connesso',
  'mcp.health.connectingCount': '{count} collegamento',
  'mcp.health.errorCount': 'errore {count}',
  'mcp.health.disconnectedCount': '{count} inattivo',
  'mcp.health.retryAll': 'Riprova tutto ({count})',
  'mcp.health.retryAllAria': 'Riprova tutti i server {count} che hanno generato errore MCP',
  'mcp.health.disconnectAll': 'Scollegare tutto ({count})',
  'mcp.health.disconnectAllAria': 'Disconnetti tutti i server {count} collegati a MCP',
  'mcp.health.disconnectConfirm.title': 'Disconnettere tutti i server MCP?',
  'mcp.health.disconnectConfirm.body':
    'Questa azione disconnetterà {count} server MCP attualmente connessi. Le configurazioni installate e i segreti verranno mantenuti; puoi riconnettere qualsiasi server in seguito.',
  'mcp.health.disconnectConfirm.cancel': 'Annulla',
  'mcp.health.disconnectConfirm.confirm': 'Disconnetti tutto',
  'mcp.health.opErrorGeneric': 'Operazione di massa fallita. Vedere i registri.',
  'mcp.health.bulkPartialFailure': '{failed} di {total} server non riusciti. Controlla i log.',
  'mcp.installed.search.landmarkAria': 'Cerca server MCP installati',
  'mcp.installed.search.inputAria': 'Filtra i server MCP installati per nome',
  'mcp.installed.search.placeholder': 'Filtra server…',
  'mcp.installed.search.clearAria': 'Cancella filtro',
  'mcp.installed.search.countMatches': '{shown} di server {total}',
  'mcp.installed.search.noMatches': 'Nessun server corrisponde a "{query}".',
  'mcp.inventory.openButton': 'Inventario',
  'mcp.inventory.openAria': "Apri il pannello dell'inventario condivisibile MCP",
  'mcp.inventory.title': 'Inventario MCP Condivisibile',
  'mcp.inventory.subtitle':
    'Esporta i tuoi server MCP installati come un manifesto portatile senza segreti, oppure importane uno da un compagno di squadra. I valori di ambiente segreti non vengono mai inclusi o importati.',
  'mcp.inventory.close': "Chiudi il pannello dell'inventario",
  'mcp.inventory.tablistAria': "Sezioni dell'inventario",
  'mcp.inventory.tab.export': 'Esporta',
  'mcp.inventory.tab.import': 'Importa',
  'mcp.inventory.export.empty':
    'Nessun server MCP installato ancora — nulla da esportare. Installa prima uno dal catalogo.',
  'mcp.inventory.export.privacyTitle': "Cosa c'è in questo manifesto",
  'mcp.inventory.export.privacyBody':
    "Nomi dei server, nomi qualificati, nomi CHIAVE delle variabili d'ambiente e solo configurazioni non segrete. Valori segreti, identificatori della tua macchina e timestamp per installazione sono intenzionalmente rimossi.",
  'mcp.inventory.export.serverCount': 'Server {count} in questo manifesto',
  'mcp.inventory.export.copy': 'Copia',
  'mcp.inventory.export.copied': 'Copiato',
  'mcp.inventory.export.copyAria': 'Copia il manifesto JSON negli appunti',
  'mcp.inventory.export.download': 'Scarica',
  'mcp.inventory.export.downloadAria': 'Scarica il manifesto come file JSON',
  'mcp.inventory.import.trustTitle': 'Considera i manifest importati come codice non attendibile',
  'mcp.inventory.import.trustBody':
    'Un server MCP è uno strumento che concedi al tuo agente. Importa manifest solo da fonti di cui ti fidi. Ogni installazione richiede il tuo clic esplicito; nulla viene installato automaticamente.',
  'mcp.inventory.import.pasteLabel': 'Incolla il manifesto JSON',
  'mcp.inventory.import.pastePlaceholder':
    'Incolla un manifesto qui, o carica un file.json qui sotto.',
  'mcp.inventory.import.preview': 'Anteprima',
  'mcp.inventory.import.clear': 'Chiaro',
  'mcp.inventory.import.uploadFile': 'o carica un file.json',
  'mcp.inventory.import.uploadFileAria': 'Carica un file manifest.json',
  'mcp.inventory.import.fileTooLarge':
    'Il file è troppo grande (oltre 1 MB). Rifiuto di caricarlo.',
  'mcp.inventory.import.fileReadFailed': 'Impossibile leggere il file.',
  'mcp.inventory.import.parseErrorPrefix': 'Impossibile analizzare il manifesto:',
  'mcp.inventory.import.previewHeading': 'Anteprima',
  'mcp.inventory.import.previewCounts': 'Server {total} — {newly} nuovi, {already} già installati',
  'mcp.inventory.import.previewEmpty': 'Il manifesto non contiene server.',
  'mcp.inventory.import.exportedFrom': 'Esportato da {exporter}',
  'mcp.inventory.import.exportedAt': 'a {when}',
  'mcp.inventory.import.statusNew': 'Nuovo',
  'mcp.inventory.import.statusAlreadyInstalled': 'Già installato',
  'mcp.inventory.import.envKeysLabel': 'Chiavi Env',
  'mcp.inventory.import.install': 'Installa',
  'mcp.inventory.import.installAria': 'Installa {name} da questo manifesto',
  'mcp.inventory.import.skipped': 'ignorato',
  'mcp.inventory.parseError.empty': 'Il manifest è vuoto.',
  'mcp.inventory.parseError.invalidJson': 'JSON non valido.',
  'mcp.inventory.parseError.rootNotObject': 'Il manifest deve essere un oggetto JSON alla radice.',
  'mcp.inventory.parseError.unsupportedSchema':
    'Schema del manifesto non supportato — questo file non è stato prodotto da un esportatore compatibile.',
  'mcp.inventory.parseError.missingExportedAt': 'Campo `exported_at` mancante o non valido.',
  'mcp.inventory.parseError.missingExportedBy': 'Campo `exported_by` mancante o non valido.',
  'mcp.inventory.parseError.invalidServers': 'Array `servers` mancante o non valido.',
  'mcp.inventory.parseError.serverNotObject': 'Una voce del server non è un oggetto.',
  'mcp.inventory.parseError.serverMissingQualifiedName':
    'Un ingresso del server manca del suo qualified_name.',
  'mcp.inventory.parseError.serverMissingDisplayName':
    'Un ingresso del server manca del suo display_name.',
  'mcp.inventory.parseError.serverEnvKeysNotArray':
    'Una voce del server ha un campo env_keys che non è un array di stringhe.',
  'mcp.inventory.parseError.serverContainsEnv':
    'Una voce del server contiene una mappa di valori `env`. Rifiuto di importare — i manifesti devono contenere solo env_keys (nomi), mai valori segreti.',
  'mcp.inventory.parseError.duplicateQualifiedName':
    'Nome_qualificato duplicato trovato nel manifesto. Ogni server deve apparire al massimo una volta.',
  'mcp.tab.loading': 'Caricamento MCP server...',
  'mcp.tab.emptyDetail': 'Selezionare un server o sfogliare il catalogo.',
  'mcp.tab.filter.all': 'Tutti',
  'mcp.tab.filter.installed': 'Installati ({count})',
  'mcp.tab.filter.registry': 'Registro',
  'mcp.tab.column.name': 'Nome',
  'mcp.tab.column.description': 'Descrizione',
  'mcp.tab.column.type': 'Tipo',
  'mcp.tab.column.author': 'Autore',
  'mcp.tab.column.action': 'Azione',
  'mcp.tab.transport.hosted': 'Ospitato',
  'mcp.tab.transport.local': 'Stdio',
  'mcp.tab.transportFilter.label': 'Tipo',
  'mcp.tab.transportFilter.aria': 'Filtra i server per trasporto',
  'mcp.tab.link.website': 'Sito web',
  'mcp.tab.link.repo': 'Repository',
  'mcp.tab.transport.hostedHint':
    "Funziona su un server remoto: l'accesso o il token si configura durante l'installazione",
  'mcp.tab.transport.localHint':
    "Funziona sul tuo dispositivo: potrebbe richiedere un token durante l'installazione",
  'mcp.tab.officialBadge': 'Ufficiale',
  'mcp.tab.officialHint': 'Server ufficiale del fornitore',
  'mcp.tab.badge.installed': 'Installato',
  'mcp.tab.badge.registry': 'Registro',
  'mcp.tab.action.manage': 'Gestisci',
  'mcp.tab.aria.viewDetails': 'Visualizza dettagli per {name}',
  'mcp.tab.aria.installServer': 'Installa {name}',
  'mcp.install.loadingDetail': 'Caricamento dettagli server...',
  'mcp.install.back': 'Torna indietro',
  'mcp.install.title': 'Installa {name}',
  'mcp.install.requiredEnv': 'Variabili di ambiente richieste',
  'mcp.install.enterValue': 'Inserisci {key}',
  'mcp.install.show': 'Mostra',
  'mcp.install.hide': 'Nascondi',
  'mcp.install.configLabel': 'Configurazione (JSON opzionale)',
  'mcp.install.configPlaceholder': '{"key": "value"}',
  'mcp.install.missingRequired': '"{key}" è richiesto',
  'mcp.install.invalidJson': 'Configurazione JSON non è valida JSON',
  'mcp.install.failedDetail': 'Impossibile caricare i dettagli del server',
  'mcp.install.failedInstall': 'Installazione non riuscita',
  'mcp.install.button': 'Installa',
  'mcp.install.installing': 'Installazione...',
  'mcp.install.by': 'di',
  'mcp.install.useCount': '{count} installazioni',
  'mcp.install.connections': 'Connessioni disponibili',
  'mcp.install.published': 'pubblicato',
  'mcp.install.configureAndInstall': 'Configura e installa',
  'mcp.install.configureTitle': 'Configura {name}',
  'mcp.install.advancedConfig': 'Configurazione avanzata',
  'mcp.detail.suggestedEnvReady': 'Valori di ambiente suggeriti pronti',
  'mcp.detail.suggestedEnvBody':
    'Reinstalla questo server con i valori suggeriti per applicarli: {keys}',
  'mcp.detail.connect': 'Connetti',
  'mcp.detail.connecting': 'Connessione in corso...',
  'mcp.detail.authenticate': 'Accedi',
  'mcp.detail.authRequired':
    'Questo server richiede di accedere o di aggiungere un token di accesso prima di potersi connettere. Fai clic su “Accedi” per autenticarti.',
  'mcp.detail.disconnect': 'Disconnetti',
  'mcp.detail.hideAssistant': 'Nascondi assistente',
  'mcp.detail.helpConfigure': 'Aiutami a configurare',
  'mcp.detail.confirmUninstall': 'Confermi la disinstallazione?',
  'mcp.detail.confirmUninstallAction': 'Sì, disinstalla',
  'mcp.detail.uninstall': 'Disinstalla',
  'mcp.detail.envVars': 'Variabili di ambiente',
  'mcp.detail.reconfigure': 'Riconfigura',
  'mcp.detail.reconfigureHint':
    'Inserisci nuovi valori per ogni variabile, quindi riconnetti. Questo sostituisce i valori memorizzati.',
  'mcp.detail.saveReconnect': 'Salva e riconnetti',
  'mcp.detail.reconfigureSaving': 'Salvataggio…',
  'mcp.detail.reconfigureSuccess': 'Ambiente aggiornato e riconnesso.',
  'mcp.detail.reconfigureReconnectFailed':
    'Salvato, ma la riconnessione con i nuovi valori non è riuscita.',
  'mcp.detail.enable': 'Abilita',
  'mcp.detail.disable': 'Disabilita',
  'mcp.status.disabled': 'Disabilitato',
  'mcp.status.unauthorized': 'Accesso necessario',
  'mcp.detail.tools': 'Strumenti',
  'mcp.connectAuth.title': 'Connetti {name}',
  'mcp.connectAuth.hint':
    "Aggiungi l'autenticazione richiesta da questo server, poi connettiti. I token vengono memorizzati in forma cifrata. Lascia vuoto per i server che non richiedono autenticazione.",
  'mcp.connectAuth.requiredLabel': 'Obbligatorio',
  'mcp.connectAuth.customHeadersLabel': 'Intestazioni personalizzate',
  'mcp.connectAuth.customHeadersEmpty':
    "Nessuna intestazione personalizzata. Aggiungine una se questo server richiede un'intestazione di autenticazione non dichiarata dal registro.",
  'mcp.connectAuth.addHeader': '+ Aggiungi intestazione',
  'mcp.connectAuth.headerName': "Nome dell'intestazione",
  'mcp.connectAuth.headerValue': 'Valore',
  'mcp.connectAuth.removeHeader': 'Rimuovi intestazione',
  'mcp.connectAuth.howToGetToken': 'Aiuto e configurazione',
  'mcp.connectAuth.tokenProvider': 'Ottieni il token da:',
  'mcp.connectAuth.findToken': 'Dove ottengo il token?',
  'mcp.connectAuth.hideHelp': 'Nascondi aiuto',
  'mcp.connectAuth.schemeLabel': 'Come inviare il valore',
  'mcp.connectAuth.schemeBearer': 'Bearer',
  'mcp.connectAuth.schemeRaw': 'Nessuno',
  'mcp.connectAuth.reconnectFailed': 'Credenziali salvate, ma la connessione non è riuscita.',
  'mcp.connectAuth.oauthHint':
    'Questo server usa OAuth. Accedi tramite il tuo browser per autorizzare OpenHuman.',
  'mcp.connectAuth.signIn': 'Accedi con il browser',
  'mcp.connectAuth.oauthWaiting': 'In attesa dell’accesso…',
  'mcp.connectAuth.oauthOrToken':
    'Hai già un token di accesso? Incollalo invece come intestazione Authorization qui sotto.',
  'mcp.connectAuth.oauthTimeout': "Tempo scaduto in attesa dell'accesso dal browser. Riprova.",
  'mcp.connectAuth.authError.oauthRequired':
    'Questo server usa OAuth. Usa “Accedi con il browser” — un token incollato non verrà accettato.',
  'mcp.connectAuth.authError.tokenRejected':
    'Il server ha rifiutato questo token. Verifica che sia corretto e che non sia scaduto.',
  'mcp.connectAuth.authError.credentialRequired':
    "Questo server richiede l'autenticazione. Aggiungi un token oppure accedi.",
  'onboarding.skipForNow': 'Salta per ora',
  'onboarding.localAI.continueWithCloud': 'Continua con Cloud',
  'onboarding.localAI.useLocalAnyway':
    "Usa comunque l'IA locale (non consigliato per il tuo dispositivo)",
  'onboarding.localAI.useLocalInstead': "Usa invece l'IA locale (connetti Ollama ora)",
  'onboarding.localAI.setupIssue': 'Configurazione IA locale: si è verificato un problema',
  'autonomy.title': 'Autonomia agente',
  'autonomy.maxActionsLabel': 'Azioni massime per ora',
  'autonomy.maxActionsHelp':
    'Numero massimo di azioni dello strumento che un agente può eseguire per ora continuativa. Il nuovo valore si applica alla prossima chat. I cron job e i listener dei canali mantengono il limite attuale fino al riavvio di OpenHuman.',
  'autonomy.statusSaving': 'Salvataggio…',
  'autonomy.statusSaved': 'Salvato.',
  'autonomy.statusFailed': 'Non riuscito',
  'autonomy.unlimitedNote': 'Illimitato: limitazione della velocità disabilitata.',
  'autonomy.invalidIntegerMsg':
    'Deve essere un numero intero positivo (usa il preset Illimitato per nessun limite).',
  'autonomy.presetUnlimited': 'Illimitato (predefinito)',
  'triggers.toggleFailed': '{action} non riuscito per {trigger}: {message}',
  'settings.ai.overview': 'Panoramica sistema AI',
  'settings.ai.configStatus': 'Stato configurazione',
  'settings.ai.fallbackMode': 'Modalità di fallback',
  'settings.ai.loadedFromRuntime': 'Caricato dal runtime',
  'settings.ai.loadingDuration': 'Durata caricamento',
  'settings.ai.localRuntime': 'Runtime modello locale',
  'settings.ai.openManager': 'Apri manager',
  'settings.ai.retryDownload': 'Riprova download',
  'settings.ai.state': 'Stato',
  'settings.ai.targetModel': 'Modello target',
  'settings.ai.download': 'Scarica',
  'settings.ai.localModelUnavailable': 'Stato modello locale non disponibile.',
  'settings.ai.soulConfig': 'Configurazione persona SOUL',
  'settings.ai.refreshing': 'Aggiornamento...',
  'settings.ai.refreshSoul': 'Aggiorna SOUL',
  'settings.ai.loadingSoul': 'Caricamento configurazione SOUL...',
  'settings.ai.identity': 'Identità',
  'settings.ai.personality': 'Personalità',
  'settings.ai.safetyRules': 'Regole di sicurezza',
  'settings.ai.source': 'Origine',
  'settings.ai.loaded': 'Caricato',
  'settings.ai.toolsConfig': 'Configurazione TOOLS',
  'settings.ai.refreshTools': 'Aggiorna TOOLS',
  'settings.ai.toolsAvailable': 'Strumenti disponibili',
  'settings.ai.tools': 'strumenti',
  'settings.ai.activeSkills': 'Skill attive',
  'settings.ai.skills': 'skill',
  'settings.ai.skillsOverview': 'Panoramica skill',
  'settings.ai.refreshingAll': 'Aggiornamento totale...',
  'settings.ai.refreshAll': 'Aggiorna tutta la configurazione AI',
  'settings.notifications.suppressAll': 'Sopprimi tutte le notifiche',
  'settings.notifications.suppressAllDesc':
    "Blocca tutti i toast di notifica dell'OS dalle app integrate indipendentemente dallo stato di focus.",
  'settings.notifications.toggleDnd': 'Attiva/disattiva Non disturbare',
  'settings.notifications.categories': 'Categorie',
  'settings.notifications.categoryFooter':
    'Disabilitare una categoria impedisce alle nuove notifiche di quel tipo di apparire nel centro notifiche. Le notifiche esistenti rimangono finché non vengono cancellate.',
  'settings.billing.movedToWeb': 'La fatturazione è stata spostata sul web',
  'settings.billing.openDashboard': 'Apri dashboard fatturazione',
  'settings.billing.movedToWebDesc':
    "Le modifiche all'abbonamento, i metodi di pagamento, i crediti e le fatture sono ora gestiti su TinyHumans sul web.",
  'settings.billing.backToSettings': 'Torna alle impostazioni',
  'settings.billing.openingBrowser': 'Apertura del browser...',
  'settings.billing.browserNotOpen': 'Se il browser non si è aperto, usa il pulsante sopra.',
  'settings.billing.browserOpenFailed':
    'Impossibile aprire automaticamente il browser. Usa il pulsante sopra.',
  'settings.tools.chooseCapabilities': 'Scegli quali capacità OpenHuman può usare per tuo conto.',
  'settings.tools.saveChanges': 'Salva modifiche',
  'settings.tools.preferencesSaved': 'Preferenze salvate',
  'settings.tools.saveFailed': 'Salvataggio preferenze fallito. Riprova.',
  'settings.screenAwareness.mode': 'Modalità',
  'settings.screenAwareness.allExceptBlacklist': 'Tutti tranne blacklist',
  'settings.screenAwareness.whitelistOnly': 'Solo whitelist',
  'settings.screenAwareness.screenMonitoring': 'Monitoraggio schermo',
  'settings.screenAwareness.saveSettings': 'Salva impostazioni',
  'settings.screenAwareness.session': 'Sessione',
  'settings.screenAwareness.status': 'Stato',
  'settings.screenAwareness.active': 'Attivo',
  'settings.screenAwareness.stopped': 'Fermato',
  'settings.screenAwareness.remaining': 'Rimanente',
  'settings.screenAwareness.startSession': 'Avvia sessione',
  'settings.screenAwareness.stopSession': 'Ferma sessione',
  'settings.screenAwareness.analyzeNow': 'Analizza ora',
  'settings.screenAwareness.macosOnly':
    'La cattura desktop di Consapevolezza schermo e i controlli dei permessi sono attualmente supportati solo su macOS.',
  'connections.comingSoon': 'In arrivo',
  'connections.setUp': 'Configura',
  'connections.configured': 'Configurato',
  'connections.unavailable': 'Non disponibile',
  'connections.checking': 'Verifica…',
  'connections.walletConfigured':
    'Le identità locali EVM, BTC, Solana e Tron sono configurate dalla tua frase di recupero.',
  'connections.walletReady':
    "Configura identità locali EVM, BTC, Solana e Tron da un'unica frase di recupero.",
  'connections.walletError':
    'Impossibile verificare lo stato del wallet. Tocca per riprovare dal pannello Frase di recupero.',
  'connections.walletChecking': 'Verifica stato wallet...',
  'connections.walletIdentities': 'Identità wallet',
  'connections.walletDerived':
    'Derivato localmente dalla tua frase di recupero e memorizzato solo come metadato sicuro.',
  'connections.privacySecurity': 'Privacy e sicurezza',
  'connections.privacySecurityDesc':
    'Tutti i dati e le credenziali sono memorizzati localmente con una politica di zero conservazione. Le tue informazioni sono crittografate e mai condivise con terze parti.',
  'channels.status.connecting': 'Connessione',
  'channels.status.notConfigured': 'Non configurato',
  'channels.noActiveRoute': 'Nessuna route attiva',
  'channels.activeRoute': 'Route attiva',
  'channels.loadingDefinitions': 'Caricamento definizioni canali...',
  'channels.channelConnections': 'Connessioni dei canali',
  'channels.configureAuthModes':
    'Configura le modalità di autenticazione per ciascun canale di messaggistica.',
  'channels.configNotAvailable': 'Configurazione per',
  'channels.channel': 'canale',
  'devOptions.coreModeNotSet': 'Modalità core: non impostata',
  'devOptions.coreModeNotSetDesc':
    'Il selettore del controllo di avvio non è stato ancora confermato. Usa Cambia modalità sul selettore per scegliere Locale o Cloud.',
  'devOptions.local': 'Locale',
  'devOptions.embeddedCoreSidecar': 'Sidecar core integrato',
  'devOptions.sidecarSpawned': "Avviato in-process dalla shell Tauri all'avvio dell'app.",
  'devOptions.cloud': 'Nuvola',
  'devOptions.remoteCoreRpc': 'RPC core remoto',
  'devOptions.token': 'Gettone',
  'devOptions.tokenNotSet': 'non impostato — RPC restituirà 401',
  'devOptions.triggerSentryTest': 'Attiva test Sentry (staging)',
  'devOptions.triggerSentryTestDesc':
    'Genera un errore taggato per verificare la pipeline Sentry. Issue #1072 — rimuovere dopo la verifica.',
  'devOptions.sendTestEvent': 'Invia evento di test',
  'devOptions.sending': 'Invio…',
  'devOptions.eventSent': 'Evento inviato',
  'devOptions.sentryDisabled': '(nessun ID: sentinella disabilitata in questa build)',
  'devOptions.failed': 'Fallito',
  'devOptions.appLogs': "Log dell'app",
  'devOptions.appLogsDesc':
    'Apri la cartella che contiene i file di log giornalieri. Allega il file più recente quando segnali un problema.',
  'devOptions.openLogsFolder': 'Apri cartella log',
  'mnemonic.phraseSaved': 'Frase di recupero salvata',
  'mnemonic.walletReady':
    'Le identità wallet multi-chain sono pronte. Ritorno alle impostazioni...',
  'mnemonic.writeDownWords': 'Scrivi queste',
  'mnemonic.wordsInOrder':
    'parole in ordine e conservale in un luogo sicuro. Questa frase protegge la tua chiave di crittografia locale e le identità wallet EVM, BTC, Solana e Tron.',
  'mnemonic.cannotRecover':
    'Questa frase non può mai essere recuperata se persa e dovrebbe rimanere completamente locale sul tuo dispositivo.',
  'mnemonic.copyToClipboard': 'Copia negli appunti',
  'mnemonic.alreadyHavePhrase': 'Ho già una frase di recupero',
  'mnemonic.consentSaved':
    'Ho salvato questa frase e acconsento ad usarla per la configurazione del wallet locale',
  'mnemonic.enterPhraseToRestore':
    'Inserisci la tua frase di recupero qui sotto per ripristinare le identità del wallet locale, oppure incolla la frase completa in qualsiasi campo (12 parole per i nuovi backup; le frasi a 24 parole delle versioni precedenti funzionano ancora).',
  'mnemonic.words': 'Parole',
  'mnemonic.validPhrase': 'Frase di recupero valida',
  'mnemonic.generateNewPhrase': 'Genera invece una nuova frase di recupero',
  'mnemonic.securingData': 'Protezione dei tuoi dati...',
  'mnemonic.saveRecoveryPhrase': 'Salva frase di recupero',
  'mnemonic.userNotLoaded': 'Utente non caricato. Accedi di nuovo o ricarica la pagina.',
  'mnemonic.invalidPhrase': 'Frase di recupero non valida. Controlla le parole e riprova.',
  'mnemonic.somethingWentWrong': 'Qualcosa è andato storto. Riprova.',
  'mnemonic.walletAlreadyConfigured': 'Il tuo portafoglio è già configurato.',
  'mnemonic.walletSource': 'Fonte',
  'mnemonic.walletWordCount': 'Lunghezza della frase di recupero',
  'mnemonic.walletLastUpdated': 'Ultimo aggiornamento',
  'mnemonic.replaceWallet': 'Sostituisci portafoglio',
  'mnemonic.replaceWalletWarning':
    'Questo sostituirà definitivamente il tuo portafoglio attuale. Assicurati di aver salvato la tua frase di recupero prima di procedere.',
  'mnemonic.replaceWalletConfirm': 'Capisco, sostituisci il mio portafoglio',
  'mnemonic.loadingWalletStatus': 'Verifica dello stato del portafoglio...',
  'mnemonic.viewAccounts': 'Conti del portafoglio',
  'mnemonic.revealRecoveryPhrase': 'Rivela la frase di recupero',
  'mnemonic.hidePhrase': 'Nascondi frase',
  'team.failedToCreate': 'Creazione team fallita',
  'team.invalidInviteCode': 'Codice invito non valido o scaduto',
  'team.failedToSwitch': 'Cambio team fallito',
  'team.failedToLeave': 'Uscita dal team fallita',
  'team.role.owner': 'Proprietario',
  'team.role.admin': 'Amministratore',
  'team.role.billingManager': 'Responsabile fatturazione',
  'team.role.member': 'Membro',
  'team.active': 'Attivo',
  'team.personalTeam': 'Team personale',
  'team.manageTeam': 'Gestisci team',
  'team.switching': 'Cambio...',
  'team.switch': 'Cambia',
  'team.leaving': 'Uscita...',
  'team.leave': 'Lascia',
  'team.yourTeams': 'I tuoi team',
  'team.createNewTeam': 'Crea nuovo team',
  'team.teamName': 'Nome team',
  'team.creating': 'Creazione...',
  'team.joinExistingTeam': 'Unisciti a un team esistente',
  'team.personalAutoCreatedNote':
    'Il tuo team personale viene creato automaticamente. Per collaborare, unisciti a un team esistente con un codice di invito qui sotto.',
  'team.inviteCode': 'Codice invito',
  'team.joining': 'Adesione...',
  'team.join': 'Unisciti',
  'team.leaveTeam': 'Lascia team',
  'team.confirmLeave': 'Sei sicuro di voler lasciare',
  'team.leaveWarning':
    "Perderai l'accesso al team e a tutte le sue risorse. Servirà un nuovo invito per rientrare.",
  'team.management': 'Gestione team',
  'team.notFound': 'Team non trovato',
  'team.accessDenied': 'Accesso negato',
  'team.members': 'Membri',
  'team.membersDesc': 'Gestisci i membri e i ruoli del team',
  'team.invites': 'Inviti',
  'team.invitesDesc': 'Genera e gestisci i codici di invito',
  'team.settings': 'Impostazioni squadra',
  'team.settingsDesc': 'Modifica il nome e le impostazioni della squadra',
  'team.editSettings': 'Modifica impostazioni squadra',
  'team.enterName': 'Inserisci il nome della squadra',
  'team.saving': 'Salvataggio...',
  'team.saveChanges': 'Salva Modifiche',
  'team.delete': 'Elimina team',
  'team.deleteDesc': 'Elimina definitivamente questo team',
  'team.deleting': 'Eliminazione in corso...',
  'team.failedToUpdate': 'Impossibile aggiornare il team',
  'team.failedToDelete': 'Impossibile eliminare il team',
  'team.manageTitle': 'Gestisci {name}',
  'team.planCreated': '{plan} Piano • Creato {date}',
  'team.confirmDelete': 'Sei sicuro di voler eliminare {name}?',
  'team.deleteWarning':
    'Questa operazione non può essere annullata. Tutti i dati del team verranno rimossi definitivamente.',
  'voice.title': 'Dettatura vocale',
  'voice.settings': 'Impostazioni voce',
  'voice.settingsDesc': "Tieni premuta l'hotkey per dettare e inserire testo nel campo attivo.",
  'voice.hotkey': 'Tasto di scelta rapida',
  'voice.activationMode': 'Modalità di attivazione',
  'voice.tapToToggle': 'Tocca per attivare/disattivare',
  'voice.writingStyle': 'Stile di scrittura',
  'voice.verbatimTranscription': 'Trascrizione letterale',
  'voice.naturalCleanup': 'Pulizia naturale',
  'voice.autoStart': 'Avvia il server vocale automaticamente con il core',
  'voice.customDictionary': 'Dizionario personalizzato',
  'voice.customDictionaryDesc':
    "Aggiungi nomi, termini tecnici e parole di dominio per migliorare l'accuratezza del riconoscimento.",
  'voice.addWord': 'Aggiungi una parola...',
  'voice.sttDisabled':
    'La dettatura vocale è disabilitata finché il modello STT locale non è scaricato e pronto.',
  'voice.openLocalAiModel': 'Apri modello AI locale',
  'voice.serverRestarted': 'Server vocale riavviato con le nuove impostazioni.',
  'voice.settingsSaved': 'Impostazioni vocali salvate.',
  'voice.serverStarted': 'Server vocale avviato.',
  'voice.serverStopped': 'Server vocale fermato.',
  'voice.saveVoiceSettings': 'Salva impostazioni vocali',
  'voice.startVoiceServer': 'Avvia server vocale',
  'voice.stopVoiceServer': 'Ferma server vocale',
  'voice.debugTitle': 'Debug voce',
  'voice.failedToLoadSettings': 'Impossibile caricare le impostazioni vocali',
  'voice.failedToSaveSettings': 'Impossibile salvare le impostazioni vocali',
  'voice.failedToStartServer': 'Impossibile avviare il server vocale',
  'voice.failedToStopServer': 'Impossibile arrestare server vocale',
  'voice.sttDisabledPrefix':
    'La dettatura vocale è disabilitata finché il modello STT locale non viene scaricato. Usa il',
  'voice.sttDisabledSuffix': 'qui sopra per installare Whisper.',
  'voice.debug.failedToLoadVoiceDebugData': 'Impossibile caricare i dati di debug vocale.',
  'voice.debug.settingsSaved': 'Impostazioni di debug salvate.',
  'voice.debug.failedToSaveSettings': 'Impossibile salvare le impostazioni vocali',
  'voice.debug.runtimeStatus': 'Stato runtime',
  'voice.debug.runtimeStatusDesc':
    'Diagnostica in tempo reale per il server vocale e il motore di sintesi vocale.',
  'voice.debug.server': 'Server',
  'voice.debug.unavailable': 'Non disponibile',
  'voice.debug.ready': 'Pronto',
  'voice.debug.notReady': 'Non pronto',
  'voice.debug.hotkey': 'Tasto di scelta rapida',
  'voice.debug.notAvailable': 'n/d',
  'voice.debug.mode': 'Modalità',
  'voice.debug.transcriptions': 'Trascrizioni',
  'voice.debug.serverError': 'Errore server',
  'voice.debug.advancedSettings': 'Impostazioni avanzate',
  'voice.debug.advancedSettingsDesc':
    'Parametri di regolazione avanzata per la registrazione e il rilevamento del silenzio.',
  'voice.debug.minimumRecordingSeconds': 'Secondi minimi di registrazione',
  'voice.debug.silenceThreshold': 'Soglia di silenzio (RMS)',
  'voice.debug.silenceThresholdDesc':
    'Le registrazioni con energia inferiore a questa soglia vengono trattate come silenzio e saltate. Più basso = più sensibile.',
  'voice.debug.alwaysOn': 'Ascolto sempre attivo',
  'voice.debug.alwaysOnDesc':
    'Mantieni il microfono aperto e invia automaticamente ciò che dici all’agente, senza scorciatoia. Si mette in pausa quando lo schermo è bloccato.',
  'voice.providers.saved': 'Fornitori di servizi vocali salvati.',
  'voice.providers.failedToSave': 'Impossibile salvare i provider vocali',
  'voice.providers.ellipsis': '…',
  'voice.providers.installing': 'Installazione',
  'voice.providers.installingBusy': 'Installazione…',
  'voice.providers.reinstallLocally': 'Reinstalla localmente',
  'voice.providers.repair': 'Ripara',
  'voice.providers.retryLocally': 'Riprova localmente',
  'voice.providers.installLocally': 'Installa localmente',
  'voice.providers.whisperReady': 'Whisper è pronto.',
  'voice.providers.whisperInstallStarted': 'Installazione di Whisper avviata',
  'voice.providers.queued': 'in coda',
  'voice.providers.failedToInstallWhisper': 'Impossibile installare Whisper',
  'voice.providers.piperReady': 'Piper è pronto.',
  'voice.providers.piperInstallStarted': 'Installazione di Piper avviata',
  'voice.providers.failedToInstallPiper': 'Impossibile installare Piper',
  'voice.providers.title': 'Provider vocali',
  'voice.providers.desc':
    "Scegli dove vengono eseguiti la trascrizione e la sintesi. Usa i pulsanti Installa localmente per scaricare i binari e i modelli nel tuo workspace. I provider locali possono essere salvati prima del completamento dell'installazione — nessuna configurazione manuale di WHISPER_BIN o PIPER_BIN richiesta.",
  'voice.providers.sttProvider': 'Provider di sintesi vocale',
  'voice.providers.sttProviderAria': 'Provider STT',
  'voice.providers.cloudWhisperProxy': 'Cloud (proxy Whisper)',
  'voice.providers.localWhisper': 'Whisper locale',
  'voice.providers.installRequired': '(installazione richiesta)',
  'voice.providers.whisperInstalledTitle': 'Whisper è installato. Fare clic per reinstallare.',
  'voice.providers.whisperDownloadTitle':
    'Scarica whisper.cpp e il modello GGML nel tuo workspace.',
  'voice.providers.installed': 'Installato',
  'voice.providers.installFailed': 'Installazione non riuscita',
  'voice.providers.notInstalled': 'Non installato',
  'voice.providers.whisperModel': 'Modello Whisper',
  'voice.providers.whisperModelAria': 'Modello Whisper',
  'voice.providers.whisperModelTiny': 'Piccolo (39 MB, più veloce)',
  'voice.providers.whisperModelBase': 'Base (74 MB)',
  'voice.providers.whisperModelSmall': 'Piccolo (244 MB)',
  'voice.providers.whisperModelMedium': 'Medio (769 MB, consigliato)',
  'voice.providers.whisperModelLargeTurbo': 'Grande v3 Turbo (1,5 GB, massima precisione)',
  'voice.providers.ttsProvider': 'Provider di sintesi vocale',
  'voice.providers.ttsProviderAria': 'Provider di sintesi vocale',
  'voice.providers.cloudElevenLabsProxy': 'Cloud (proxy ElevenLabs)',
  'voice.providers.localPiper': 'Piper locale',
  'voice.providers.piperInstalledTitle': 'Piper è installato. Fare clic per reinstallare.',
  'voice.providers.piperDownloadTitle':
    'Scarica Piper e la voce en_US-lessac-medium inclusa nel tuo workspace.',
  'voice.providers.piperVoice': 'Voce Piper',
  'voice.providers.piperVoiceAria': 'Voce Piper',
  'voice.providers.customVoiceOption': 'Altro (digitare di seguito)…',
  'voice.providers.customVoiceAria': 'ID voce Piper (personalizzato)',
  'voice.providers.customVoicePlaceholder': 'it_US-lessac-medium',
  'voice.providers.piperVoicesDesc':
    'Le voci provengono da huggingface.co/rhasspy/piper-voices. Cambiare voce potrebbe richiedere un clic su Installa/Reinstalla per scaricare il nuovo file .onnx.',
  'voice.providers.mascotVoice': 'Voce della mascotte',
  'voice.providers.mascotVoiceDescPrefix':
    'La voce ElevenLabs usata dalla mascotte per le risposte vocali è configurata in',
  'voice.providers.mascotSettings': 'Impostazioni della mascotte',
  'voice.providers.mascotVoiceDescSuffix': '.',
  'voice.providers.hotkeyPlaceholder': 'Fn',
  'voice.providers.piperPreset.lessacMedium': 'US · Lessac (neutro, consigliato)',
  'voice.providers.piperPreset.lessacHigh': 'Stati Uniti · Lessac (qualità superiore, più grande)',
  'voice.providers.piperPreset.ryanMedium': 'Stati Uniti · Ryan (uomo)',
  'voice.providers.piperPreset.amyMedium': 'Stati Uniti · Amy (donna)',
  'voice.providers.piperPreset.librittsHigh': 'Stati Uniti · LibriTTS (multi-altoparlante)',
  'voice.providers.piperPreset.alanMedium': 'GB · Alan (maschio)',
  'voice.providers.piperPreset.jennyDiocoMedium': 'GB · Jenny Dioco (femmina)',
  'voice.providers.piperPreset.northernEnglishMaleMedium': 'GB · Inglese settentrionale (maschio)',
  'voice.providers.chip.cloud': 'OpenHuman (Gestito)',
  'voice.providers.chip.cloudAria': 'Il provider gestito da OpenHuman è sempre abilitato',
  'voice.providers.chip.whisper': 'Whisper (Locale)',
  'voice.providers.chip.enableWhisper': 'Abilita Whisper STT locale',
  'voice.providers.chip.disableWhisper': 'Disabilita Whisper STT locale',
  'voice.providers.chip.piper': 'Piper (Locale)',
  'voice.providers.chip.enablePiper': 'Abilita Piper TTS locale',
  'voice.providers.chip.disablePiper': 'Disabilita Piper TTS locale',
  'voice.providers.chip.enableProvider': 'Enable',
  'voice.providers.chip.disableProvider': 'Disable',
  'voice.providers.chip.apiKeyLabel': 'Chiave API',
  'voice.providers.chip.apiKeyPlaceholder': 'sk-…',
  'voice.providers.chip.comingSoon': 'prossimamente',
  'voice.modal.title': 'Configure',
  'voice.modal.desc':
    'Inserisci la tua chiave API per abilitare questo provider. Puoi testare la connessione prima di salvare.',
  'voice.modal.testKey': 'Testa chiave',
  'voice.modal.testing': 'Test in corso…',
  'voice.modal.saveAndEnable': 'Salva e abilita',
  'voice.modal.enable': 'Enable',
  'voice.modal.whisperDesc':
    'Scegli una dimensione del modello e installa il binario Whisper e il modello GGML nel tuo workspace. I modelli più grandi sono più accurati ma più lenti.',
  'voice.modal.piperDesc':
    'Scegli una voce e installa il binario Piper e il modello ONNX nel tuo workspace. Piper funziona completamente offline con bassa latenza.',
  'voice.routing.title': 'Routing vocale',
  'voice.routing.desc':
    'Scegli quali provider abilitati gestiscono la sintesi vocale e il testo vocale.',
  'voice.routing.save': 'Save',
  'voice.routing.testStt': 'Testa STT',
  'voice.routing.testTts': 'Testa TTS',
  'voice.routing.elevenlabsVoice': 'Voce ElevenLabs',
  'voice.routing.elevenlabsVoiceAria': 'Selezione voce ElevenLabs',
  'voice.routing.elevenlabsVoiceIdAria': 'ID voce ElevenLabs (personalizzato)',
  'voice.routing.elevenlabsVoiceDesc':
    'Scegli una voce selezionata o incolla un ID voce personalizzato dalla tua dashboard ElevenLabs.',
  'voice.externalProviders.title': 'Provider vocali esterni',
  'voice.externalProviders.desc':
    'Connetti API STT/TTS di terze parti come Deepgram, ElevenLabs o OpenAI direttamente.',
  'voice.externalProviders.keySet': 'Chiave impostata',
  'voice.externalProviders.noKey': 'Nessuna chiave API',
  'voice.externalProviders.test': 'Test',
  'voice.externalProviders.testing': 'Test in corso…',
  'voice.externalProviders.remove': 'Remove',
  'voice.externalProviders.provider': 'Provider',
  'voice.externalProviders.selectProvider': 'Seleziona un provider…',
  'voice.externalProviders.apiKey': 'Chiave API',
  'voice.externalProviders.apiKeyPlaceholder': 'sk-…',
  'voice.externalProviders.add': 'Add',
  'pttSettings.title': 'Premi per parlare',
  'pttSettings.description':
    'Tieni premuto un tasto per parlare con OpenHuman mentre sei in un’altra app. Al rilascio l’audio viene inviato; se «Leggi le risposte» è attivo, OpenHuman risponde a voce.',
  'pttSettings.shortcutLabel': 'Scorciatoia',
  'pttSettings.shortcutPlaceholder': 'Premi un tasto (es. F13)',
  'pttSettings.shortcutUnsetHint':
    'Premi per parlare è disattivato — scegli una scorciatoia per attivarlo.',
  'pttSettings.speakRepliesLabel': 'Pronuncia le risposte dell’agente',
  'pttSettings.showOverlayLabel': 'Mostra il riquadro mentre il tasto è premuto',
  'pttSettings.errorConflictsWithDictation':
    'Questa scorciatoia è già usata dalla dettatura. Scegli un tasto diverso.',
  'pttSettings.errorModifierOnly':
    'Scegli un tasto normale (es. F13) — le scorciatoie con soli modificatori non funzionano per premi per parlare.',
  'pttSettings.errorEmpty': 'Scegli un tasto da assegnare.',
  'pttSettings.errorAccessibility':
    'macOS richiede l’autorizzazione Accessibilità per questa scorciatoia. Apri Impostazioni di sistema → Privacy e sicurezza → Accessibilità e attiva OpenHuman.',
  'pttSettings.errorShortcutInUse':
    'Un’altra app utilizza già questa scorciatoia. Scegline una diversa.',
  'pttSettings.errorUnsupportedWayland':
    'Le sessioni Wayland non supportano ancora le scorciatoie globali in OpenHuman — passa a una sessione X11 o usa l’interruttore di dettatura nell’app.',
  'pttSettings.exclusiveFullscreenHint':
    'Nei giochi a schermo intero esclusivo il riquadro non verrà mostrato — sentirai solo il segnale acustico. Passa allo schermo intero senza bordi per vedere il riquadro.',
  'pttOverlay.listening': 'In ascolto…',
  'pttOverlay.idle': 'In attesa',
  'autocomplete.title': 'Autocompletamento',
  'autocomplete.settings': 'Impostazioni',
  'autocomplete.acceptWithTab': 'Accetta con Tab',
  'autocomplete.stylePreset': 'Preset di stile',
  'autocomplete.style.balanced': 'Bilanciato',
  'autocomplete.style.concise': 'Conciso',
  'autocomplete.style.formal': 'Formale',
  'autocomplete.style.casual': 'Informale',
  'autocomplete.style.custom': 'Personalizzato',
  'autocomplete.disabledApps': 'App disabilitate (un bundle/app token per riga)',
  'autocomplete.saveSettings': 'Salva impostazioni',
  'autocomplete.saving': 'Salvataggio…',
  'autocomplete.runtime': 'Runtime',
  'autocomplete.running': 'In esecuzione',
  'autocomplete.start': 'Avvia',
  'autocomplete.stop': 'Ferma',
  'autocomplete.settingsSaved': 'Impostazioni di autocompletamento salvate.',
  'autocomplete.started': 'Autocompletamento avviato.',
  'autocomplete.didNotStart': 'Autocompletamento non avviato. Verifica che sia abilitato.',
  'autocomplete.stopped': 'Autocompletamento fermato.',
  'autocomplete.advancedSettings': 'Impostazioni avanzate',
  'autocomplete.debugTitle': 'Debug autocompletamento',
  'chat.agentChat': 'Chat agente',
  'chat.overrides': 'Override',
  'chat.model': 'Modello',
  'chat.temperature': 'Temperatura',
  'chat.conversation': 'Conversazione',
  'chat.startAgentConversation': "Inizia una conversazione con l'agente.",
  'chat.you': 'Tu',
  'chat.agent': 'Agente',
  'chat.askAgent': "Chiedi qualsiasi cosa all'agente...",
  'chat.sendMessage': 'Invia messaggio',
  'composio.triageTitle': 'Trigger delle integrazioni',
  'composio.triageDesc':
    "Quando attivo, ogni trigger Composio in arrivo passa per uno step di triage AI che classifica l'evento e può avviare azioni automatiche — un turno LLM locale per trigger. Disabilita globalmente o per singola integrazione se preferisci la revisione manuale. Se la variabile d'ambiente",
  'composio.disableAllTriage': 'Disabilita il triage AI per tutti i trigger',
  'composio.triggersStillRecorded':
    'I trigger vengono comunque registrati nella cronologia — nessun turno LLM viene eseguito.',
  'composio.disableSpecificIntegrations': 'Disabilita il triage AI per integrazioni specifiche',
  'composio.settingsSaved': 'Impostazioni salvate',
  'composio.saveFailed': 'Salvataggio fallito. Riprova.',
  'cron.title': 'Cron Job',
  'cron.scheduledJobs': 'Job pianificati',
  'cron.manageCronJobs': 'Gestisci i cron job dal core scheduler.',
  'cron.refreshCronJobs': 'Aggiorna cron job',
  'localModel.modelStatus': 'Stato del modello',
  'localModel.downloadModels': 'Scarica modelli',
  'localModel.usage': 'Utilizzo',
  'localModel.usageDesc':
    'Scegli quali sottosistemi girano sul modello locale. Quelli disattivati usano il cloud.',
  'localModel.enableRuntime': 'Abilita runtime AI locale',
  'localModel.enableRuntimeDesc':
    "Interruttore principale. Disattivato di default — Ollama resta inattivo. Quando attivo, il tree summarizer, lo screen intelligence e l'autocompletamento usano sempre il modello locale.",
  'localModel.advancedSettings': 'Impostazioni avanzate',
  'localModel.debugTitle': 'Debug modello locale',
  'screenAwareness.debugTitle': 'Debug consapevolezza schermo',
  'screenAwareness.debug.debugAndDiagnostics': 'Debug e diagnostica',
  'screenAwareness.debug.collapse': 'Comprimi',
  'screenAwareness.debug.expand': 'Espandi',
  'screenAwareness.debug.failedToSave': 'Impossibile salvare i dati di Screen Intelligence',
  'screenAwareness.debug.policyTitle': 'Policy di Screen Intelligence',
  'screenAwareness.debug.baselineFps': 'FPS di base',
  'screenAwareness.debug.useVisionModel': 'Utilizza modello di visione',
  'screenAwareness.debug.useVisionModelDesc':
    'Invia gli screenshot a un LLM con visione per un contesto più ricco. Se disattivato, viene utilizzato solo il testo OCR con un LLM testuale — più veloce e senza modello visivo.',
  'screenAwareness.debug.keepScreenshots': 'Conserva screenshot',
  'screenAwareness.debug.keepScreenshotsDesc':
    "Salva gli screenshot acquisiti nell'area di lavoro invece di eliminarli dopo l'elaborazione",
  'screenAwareness.debug.allowlist': 'Lista consentita (una regola per riga)',
  'screenAwareness.debug.denylist': 'Lista vietata (una regola per riga)',
  'screenAwareness.debug.saveSettings': 'Salva impostazioni di Screen Intelligence',
  'screenAwareness.debug.sessionStats': 'Statistiche sessione',
  'screenAwareness.debug.framesEphemeral': 'Frame (effimeri)',
  'screenAwareness.debug.panicStop': 'Arresto antipanico',
  'screenAwareness.debug.defaultPanicHotkey': 'Cmd+Maiusc+.',
  'screenAwareness.debug.vision': 'Visione',
  'screenAwareness.debug.idle': 'inattiva',
  'screenAwareness.debug.visionQueue': 'Coda visioni',
  'screenAwareness.debug.lastVision': 'Ultima visione',
  'screenAwareness.debug.notAvailable': 'n/a',
  'screenAwareness.debug.visionSummaries': 'Riepiloghi visione',
  'screenAwareness.debug.refreshing': 'Aggiornamento in corso…',
  'screenAwareness.debug.noSummaries': 'Ancora nessun riepilogo.',
  'screenAwareness.debug.unknownApp': 'App sconosciuta',
  'screenAwareness.debug.macosOnly':
    'Screen Intelligence V1 è attualmente supportato solo su macOS.',
  'memory.debugTitle': 'Debug memoria',
  'memory.documents': 'Documenti',
  'memory.filterByNamespace': 'Filtra per spazio dei nomi...',
  'memory.refresh': 'Aggiorna',
  'memory.noDocumentsFound': 'Nessun documento trovato.',
  'memory.delete': 'Elimina',
  'memory.rawResponse': 'Risposta non elaborata',
  'memory.namespaces': 'Spazi dei nomi',
  'memory.noNamespacesFound': 'Nessuno spazio dei nomi trovato.',
  'memory.queryRecall': 'Query e richiamo',
  'memory.namespace': 'Spazio dei nomi',
  'memory.queryText': 'Query testo...',
  'memory.defaultMaxChunks': '10',
  'memory.maxChunks': 'blocchi massimi',
  'memory.query': 'Query',
  'memory.recall': 'Richiama',
  'memory.queryLabel': 'Query',
  'memory.recallLabel': 'Richiama',
  'memory.queryResult': 'Risultato della query',
  'memory.recallResult': 'Richiama risultato',
  'memory.clearNamespace': 'Cancella spazio dei nomi',
  'memory.clearNamespaceDescription':
    "Elimina definitivamente tutti i documenti all'interno di un namespace.",
  'memory.selectNamespace': 'Seleziona lo spazio dei nomi...',
  'memory.exampleNamespace': 'ad es. skill:gmail:user@example.com',
  'memory.clear': 'Cancella',
  'memory.deleteConfirm': 'Eliminare il documento "{documentId}" nel namespace "{namespace}"?',
  'memory.clearNamespaceConfirm':
    'Questa operazione eliminerà definitivamente TUTTI i documenti nel namespace "{namespace}". Continuare?',
  'memory.clearNamespaceSuccess': 'Spazio dei nomi "{namespace}" cancellato.',
  'memory.clearNamespaceEmpty': 'Niente da cancellare in "{namespace}".',
  'webhooks.debugTitle': 'Debug webhook',
  'webhooks.failedToLoadDebugData': 'Impossibile caricare i dati di debug del webhook',
  'webhooks.clearLogsConfirm': 'Cancellare tutti i registri di debug del webhook acquisiti?',
  'webhooks.failedToClearLogs': 'Impossibile cancellare i registri del webhook',
  'webhooks.loading': 'Caricamento...',
  'webhooks.refresh': 'Aggiorna',
  'webhooks.clearing': 'Cancellazione...',
  'webhooks.clearLogs': 'Cancella registri',
  'webhooks.registered': 'registrato',
  'webhooks.captured': 'catturato',
  'webhooks.live': 'live',
  'webhooks.disconnected': 'disconnesso',
  'webhooks.lastEvent': 'Ultimo evento',
  'webhooks.at': 'alle',
  'webhooks.registeredWebhooks': 'Webhook registrati',
  'webhooks.noActiveRegistrations': 'Nessuna registrazione attiva.',
  'webhooks.resolvingBackendUrl': 'Risoluzione del backend URL…',
  'webhooks.capturedRequests': 'Richieste catturate',
  'webhooks.noRequestsCaptured': 'Nessuna richiesta webhook ancora catturata.',
  'webhooks.unrouted': 'non indirizzato',
  'webhooks.pending': 'in sospeso',
  'webhooks.requestHeaders': 'Intestazioni della richiesta',
  'webhooks.queryParams': 'Parametri della query',
  'webhooks.requestBody': 'Corpo della richiesta',
  'webhooks.responseHeaders': 'Risposta Intestazioni',
  'webhooks.responseBody': 'Corpo della risposta',
  'webhooks.rawPayload': 'Payload non elaborato',
  'webhooks.empty': '[vuoto]',
  'providerSetup.error.defaultDetails': 'Configurazione del provider non riuscita.',
  'providerSetup.error.providerFallback': 'Il provider',
  'providerSetup.error.credentialsRejected':
    '{provider} ha rifiutato le credenziali. Controlla la chiave API e riprova.',
  'providerSetup.error.endpointNotRecognized':
    "{provider} non ha riconosciuto l'endpoint. Controlla l'URL di base e riprova.",
  'providerSetup.error.providerUnavailable':
    '{provider} non è disponibile al momento. Riprova o controlla lo stato del provider.',
  'providerSetup.error.unreachable':
    "Impossibile raggiungere {provider}. Controlla l'URL dell'endpoint e la connessione di rete, poi riprova.",
  'providerSetup.error.couldNotReachWithMessage': 'Impossibile raggiungere {provider}: {message}',
  'providerSetup.error.technicalDetails': 'Dettagli tecnici',
  'notifications.routingTitle': 'Instradamento notifiche',
  'notifications.routing.pipelineStats': 'Statistiche pipeline',
  'notifications.routing.total': 'Totale',
  'notifications.routing.unread': 'Non letti',
  'notifications.routing.unscored': 'Senza punteggio',
  'notifications.routing.intelligenceTitle': 'Intelligence di notifica',
  'notifications.routing.intelligenceDesc':
    "Ogni notifica dagli account connessi viene valutata da un modello IA locale. Le notifiche ad alta priorità vengono automaticamente inoltrate all'agente orchestratore affinché nulla di importante vada perso.",
  'notifications.routing.howItWorks': 'Come funziona',
  'notifications.routing.level.drop': 'Elimina',
  'notifications.routing.level.dropDesc': 'Rumore/spam: archiviato ma non emerso',
  'notifications.routing.level.acknowledge': 'Riconosci',
  'notifications.routing.level.acknowledgeDesc': 'Bassa priorità: mostrato nel centro notifiche',
  'notifications.routing.level.react': 'Reagisci',
  'notifications.routing.level.reactDesc':
    "Media priorità — attiva una risposta focalizzata dell'agente",
  'notifications.routing.level.escalate': 'Escalation',
  'notifications.routing.level.escalateDesc': "Alta priorità — inoltrata all'agente orchestratore",
  'notifications.routing.perProvider': 'Routing per provider',
  'notifications.routing.threshold': 'Soglia',
  'notifications.routing.routeToOrchestrator': "Inoltra all'orchestratore",
  'notifications.routing.loadSettingsError':
    'Impossibile caricare le impostazioni. Riapri questo pannello per riprovare.',
  'common.reload': 'Ricarica',
  'common.skip': 'Salta',
  'common.disable': 'Disabilita',
  'common.enable': 'Abilita',
  'chat.safetyTimeout':
    "Nessuna risposta dall'agente dopo 2 minuti. Riprova o controlla la connessione.",
  'chat.filter.general': 'Generale',
  'chat.filter.subconscious': 'Subconscio',
  'chat.filter.meetings': 'Riunioni',
  'chat.filter.tasks': 'Attività',
  'chat.selectThread': 'Seleziona un thread',
  'chat.threads': 'Thread',
  'chat.noThreads': 'Nessun thread',
  'chat.noLabelThreads': 'Nessun thread "{label}"',
  'chat.deleteThread': 'Elimina thread',
  'chat.deleteThreadConfirm': 'Sei sicuro di voler eliminare "{title}"?',
  'chat.untitledThread': 'Thread senza titolo',
  'chat.editThreadTitle': 'Modifica titolo del thread',
  'chat.hideSidebar': 'Nascondi barra laterale',
  'chat.showSidebar': 'Mostra barra laterale',
  'chat.searchThreads': 'Cerca conversazioni',
  'layout.resizeSidebar': 'Ridimensiona barra laterale',
  'layout.showSidebar': 'Mostra barra laterale',
  'chat.newThreadShortcut': 'Nuovo thread (/new)',
  'chat.new': 'Nuovo',
  'chat.failedToLoadMessages': 'Impossibile caricare i messaggi',
  'chat.thinkingIteration': 'Sto pensando... ({n})',
  'chat.thinkingDots': 'Sto pensando...',
  'chat.approachingLimit': 'Limite di utilizzo in avvicinamento',
  'chat.approachingLimitMsg': 'Hai usato il {pct}% della tua quota disponibile.',
  'chat.upgrade': 'Aggiorna',
  'chat.weeklyLimitHit': 'Hai raggiunto il limite settimanale.',
  'chat.resets': 'Reset',
  'chat.topUpToContinue': 'Ricarica per continuare.',
  'chat.budgetComplete':
    'Il tuo budget incluso è esaurito. Aggiungi crediti o passa a un piano superiore per continuare.',
  'chat.topUp': 'Ricarica',
  'chat.cycle': 'Ciclo',
  'chat.cycleSpent': 'Speso in questo ciclo',
  'chat.cycleRemaining': 'Rimanente',
  'chat.left': 'rimasti',
  'chat.setup': 'Configura',
  'chat.switchToText': 'Passa al testo',
  'chat.superContext.label': 'Super contesto',
  'chat.superContext.hint':
    'Super contesto consente a OpenHuman di raccogliere e preparare il contesto da tutti i dati a cui ha accesso per fornire una risposta altamente pertinente. Super contesto è in beta iniziale.',
  'chat.transcribing': 'Trascrizione...',
  'chat.stopAndSend': 'Ferma e invia',
  'chat.startTalking': 'Inizia a parlare',
  'chat.playingVoiceReply': 'Riproduzione risposta vocale',
  'chat.voiceHint': 'Usa il microfono per parlare',
  'chat.micUnavailable': 'Microfono non disponibile',
  'chat.turn': 'turno',
  'chat.turns': 'turni',
  'chat.openWorkerThread': 'Apri thread worker',
  'chat.attachment.attach': 'Allega immagine',
  'chat.attachment.remove': 'Rimuovi {name}',
  'chat.attachment.tooMany': 'Massimo {max} immagini per messaggio',
  'chat.attachment.tooManyFiles': 'Massimo {max} file per messaggio',
  'chat.attachment.tooManyVideos': 'Massimo {max} video per messaggio',
  'chat.attachment.videoNotSupported':
    'Questo modello non può leggere i video. Puoi usare il livello Ragionamento di OpenHuman per allegare il tuo video.',
  'chat.attachment.dropToAttach': 'Rilascia i file per allegarli',
  'chat.attachment.tooLarge': "L'immagine supera il limite di dimensione di {max}",
  'chat.attachment.unsupportedType':
    'Tipo di file non supportato. Usa un file immagine (PNG, JPEG, WebP, GIF, BMP) oppure PDF, TXT o Markdown.',
  'chat.attachment.imageNotSupported':
    'Questo modello non può leggere le immagini. Puoi usare il livello Ragionamento di OpenHuman per allegare la tua immagine.',
  'chat.attachment.readFailed': 'Impossibile leggere il file',
  'memory.searchAria': 'Cerca memoria',
  'memory.searchPlaceholder': 'Cerca voci di memoria...',
  'memory.sourceFilter.all': 'Tutte le origini',
  'memory.sourceFilter.email': 'E-mail',
  'memory.sourceFilter.calendar': 'Calendario',
  'memory.sourceFilter.telegram': 'Telegram',
  'memory.sourceFilter.aiInsight': 'Insight IA',
  'memory.sourceFilter.system': 'Sistema',
  'memory.sourceFilter.trading': 'Trading',
  'memory.sourceFilter.security': 'Sicurezza',
  'memory.ingestionActivity': 'Attività di ingestione',
  'memory.events': 'eventi',
  'memory.event': 'evento',
  'memory.overTheLast': 'negli ultimi',
  'memory.months': 'mesi',
  'memory.peak': 'Picco',
  'memory.perDay': '/giorno',
  'memory.less': 'Meno',
  'memory.more': 'Più',
  'memory.on': 'il',
  'memory.loading': 'Caricamento memoria',
  'memory.fetching': 'Recupero delle tue voci di memoria...',
  'memory.analyzing': 'Analisi della memoria',
  'memory.analyzingHint': 'Elaborazione delle tue memorie per estrarre insight...',
  'memory.noMatches': 'Nessuna corrispondenza trovata',
  'memory.noMatchesHint': 'Prova a cambiare i termini di ricerca o i filtri.',
  'memory.allCaughtUp': 'Tutto aggiornato',
  'memory.allCaughtUpHint': 'Nessuna nuova voce di memoria da elaborare.',
  'memory.noAnalysis': 'Nessuna analisi',
  'memory.noAnalysisHint': "Esegui un'analisi per scoprire pattern nelle tue memorie.",
  'memory.emptyHint': 'Inizia a interagire per creare le tue prime memorie.',
  'mic.unavailable': 'Microfono non disponibile',
  'mic.permissionDenied': 'Permesso microfono negato',
  'mic.failedToStartRecorder': 'Avvio del registratore fallito',
  'mic.deviceUnavailable':
    'Il microfono selezionato non è disponibile — prova un altro dispositivo.',
  'mic.deviceInUse': "Il microfono è in uso da un'altra applicazione.",
  'mic.error': 'Errore del microfono',
  'mic.transcribing': 'Trascrizione...',
  'mic.retryingTranscription': 'Nuovo tentativo… ({attempt} di {max})',
  'mic.tapToSend': 'Tocca per inviare',
  'mic.waitingForAgent': "In attesa dell'agente...",
  'mic.tapAndSpeak': 'Tocca e parla',
  'mic.stopRecording': 'Ferma registrazione e invia',
  'mic.startRecording': 'Avvia registrazione',
  'mic.deviceSelector': 'Dispositivo microfono',
  'mic.tapToSendCountdown': 'Tocca per inviare ({seconds}s)',
  'token.usageLimitReached': 'Limite di utilizzo raggiunto',
  'token.approachingLimit': 'Limite in avvicinamento',
  'token.planClickForDetails': 'piano - clicca per dettagli',
  'token.sessionTokens': 'Ingresso: {in} | Uscita: {out} | Turni: {turns}',
  'token.limit': 'Limite raggiunto',
  'token.inLabel': 'ENT',
  'token.outLabel': 'USC',
  'token.inputTokens': 'Token in ingresso questa sessione',
  'token.outputTokens': 'Token in uscita questa sessione',
  'token.turnsCount': 'Turni di inferenza questa sessione',
  'token.turn': 'turno',
  'token.turns': 'turni',
  'token.ctxLabel': 'CTX',
  'token.contextWindow': 'Utilizzo finestra di contesto (ultimo turno)',
  'token.cachedLabel': 'In cache',
  'token.costLabel': 'Costo',
  'token.costTitle': 'Costo stimato di questa sessione (USD)',
  'token.sessionUsageTitle': 'Utilizzo della sessione',
  'token.subAgentsHeading': 'Utilizzo dei sub-agenti',
  'token.byAgentHeading': 'Per agente',
  'token.orchestrator': 'Orchestratore',
  'token.noSubAgents': 'Nessun utilizzo di sub-agenti ancora',
  'token.popInput': 'Token di input',
  'token.popOutput': 'Token di output',
  'token.popCacheHit': 'Cache hit',
  'token.popContext': 'Finestra di contesto',
  'token.tipInput':
    'Token inviati al modello in questa sessione — i tuoi prompt più la cronologia della conversazione.',
  'token.tipOutput': 'Token generati dal modello in questa sessione.',
  'token.tipCacheHit':
    'Token di input serviti da un prefisso di prompt in cache, fatturati a tariffa ridotta.',
  'token.clickForDetails': 'Fai clic per i dettagli di utilizzo della sessione',
  'catalog.noCapabilityBinding': 'Nessun binding di capacità',
  'catalog.downloadFailed': 'Download fallito',
  'catalog.active': 'Attivo',
  'catalog.installed': 'Installato',
  'catalog.notDownloaded': 'Non scaricato',
  'catalog.inUse': 'In uso',
  'catalog.use': 'Usa',
  'catalog.deleteModel': 'Elimina modello',
  'catalog.download': 'Scarica',
  'navigator.recent': 'Recenti',
  'navigator.today': 'Oggi',
  'navigator.thisWeek': 'Questa settimana',
  'navigator.sources': 'Origini',
  'navigator.email': 'Email',
  'navigator.slack': 'Slack',
  'navigator.chat': 'Chat',
  'navigator.documents': 'Documenti',
  'navigator.people': 'Persone',
  'navigator.topics': 'Argomenti',
  'dreams.description':
    "I sogni sono riflessioni generate dall'AI che sintetizzano i pattern dalle tue memorie.",
  'dreams.comingSoon': 'In arrivo',
  'assignment.memoryLlm': 'LLM memoria',
  'assignment.memoryLlmAria': 'Selezione LLM memoria',
  'assignment.embedder': 'Incorpora',
  'assignment.loaded': 'Caricato',
  'assignment.notDownloaded': 'Non scaricato',
  'assignment.usedForExtractSummarise': 'Usato per estrazione e riassunto',
  'insights.knownFacts': 'Fatti noti',
  'insights.preferences': 'Preferenze',
  'insights.relationships': 'Relazioni',
  'insights.skills': 'Competenze',
  'insights.opinions': 'Opinioni',
  'insights.other': 'Altro',
  'insights.title': 'Insight',
  'insights.empty':
    'Nessuna insight. Le insight vengono generate man mano che la tua memoria cresce.',
  'insights.description': 'Basato su {count} relazioni nel tuo grafo di memoria.',
  'insights.items': 'elementi',
  'insights.more': 'altri',
  'calls.joiningCall': 'Accesso alla chiamata in corso',
  'calls.meetWindowOpening': 'La finestra di Meet si sta aprendo...',
  'calls.failedToStart': 'Avvio della chiamata Meet fallito',
  'calls.couldNotStart': 'Impossibile avviare la chiamata',
  'calls.failedToClose': 'Chiusura chiamata fallita',
  'calls.couldNotClose': 'Impossibile chiudere la chiamata',
  'calls.joinMeet': 'Unisciti a una chiamata Google Meet',
  'calls.joinMeetDescription': 'Inserisci un link Google Meet per unirti.',
  'calls.meetLink': 'Link Meet',
  'calls.displayName': 'Nome visualizzato',
  'calls.openingMeet': 'Apertura di Meet...',
  'calls.joinCall': 'Unisciti alla chiamata',
  'calls.activeCalls': 'Chiamate attive',
  'calls.leave': 'Esci',
  'workspace.wipeConfirm':
    'Sei sicuro di voler cancellare tutta la memoria? Questa azione non può essere annullata.',
  'workspace.resetTreeConfirm': "Sei sicuro di voler ricostruire l'albero di memoria?",
  'workspace.wipeTitle': 'Cancella memoria',
  'workspace.resetting': 'Ripristino...',
  'workspace.resetMemory': 'Ripristina memoria',
  'workspace.resetTreeTitle': 'Ricostruisci albero di memoria',
  'workspace.rebuilding': 'Ricostruzione...',
  'workspace.resetMemoryTree': 'Ripristina albero di memoria',
  'workspace.building': 'Costruzione...',
  'workspace.buildSummaryTrees': 'Costruisci alberi di riassunto',
  'workspace.viewVault': 'Visualizza vault',
  'workspace.openingVaultTitle': 'Apertura del vault in Obsidian',
  'workspace.openingVaultMessage':
    'Se Obsidian non si apre, installalo da obsidian.md oppure usa Mostra cartella. Percorso vault:',
  'workspace.openVaultFailedTitle': 'Impossibile aprire il vault in Obsidian',
  'workspace.openVaultFailedMessage':
    'Utilizzare Reveal Folder per aprire direttamente la directory del vault. Percorso del vault:',
  'workspace.revealVaultFailed': 'Impossibile mostrare la cartella vault',
  'workspace.revealFolder': 'Rivela cartella',
  'workspace.checkingVault': 'Controllo in corso…',
  'workspace.vaultNotRegisteredHelp':
    'Obsidian apre solo le cartelle che hai aggiunto come vault. In Obsidian, scegli "Apri cartella come vault" e seleziona la cartella qui sotto — devi farlo solo una volta. Poi fai clic su Visualizza vault.',
  'workspace.obsidianNotFoundHelp':
    'Non abbiamo trovato Obsidian su questo dispositivo. Installalo, oppure — se è installato in una posizione non standard — imposta la sua cartella di configurazione in Avanzate.',
  'workspace.openAnyway': 'Apri comunque in Obsidian',
  'workspace.installObsidian': 'Installa Obsidian',
  'workspace.obsidianAdvanced': 'Obsidian installato altrove?',
  'workspace.obsidianConfigDirLabel': 'Cartella di configurazione Obsidian',
  'workspace.obsidianConfigDirHint':
    'Percorso della cartella contenente obsidian.json (es. ~/.config/obsidian). Lascia vuoto per il rilevamento automatico.',
  'workspace.obsidianConfigDirPlaceholder': '~/.config/obsidian',
  'workspace.graphLoadFailed': 'Impossibile caricare il grafo di memoria',
  'workspace.loadingGraph': 'Caricamento grafo di memoria...',
  'workspace.graphViewMode': 'Modalità di visualizzazione grafo di memoria',
  'workspace.trees': 'Alberi',
  'workspace.contacts': 'Contatti',
  'graph.noContactMentions': 'Nessuna menzione di contatto',
  'graph.noMemory': 'Nessuna memoria',
  'graph.source': 'Origine',
  'graph.topic': 'Argomento',
  'graph.global': 'Globale',
  'graph.document': 'Documento',
  'graph.contact': 'Contatto',
  'graph.nodes': 'nodi',
  'graph.parentChild': 'genitore-figlio',
  'graph.documentContact': 'documento-contatto',
  'graph.link': 'collegamento',
  'graph.links': 'collegamenti',
  'graph.children': 'figli',
  'graph.clickToOpenObsidian': 'Clic per aprire in Obsidian',
  'graph.person': 'Persona',
  'graph.resetView': 'Reimposta vista',
  'modal.dontShowAgain': 'Non mostrare suggerimenti simili',
  'reflections.loading': 'Caricamento riflessioni...',
  'reflections.empty': 'Nessuna riflessione',
  'reflections.title': 'Riflessioni',
  'reflections.proposedAction': 'Azione proposta',
  'reflections.act': 'Agisci',
  'reflections.dismiss': 'Ignora',
  'reflections.viewConversation': 'Visualizza',
  'subconscious.mode.label': 'Modalità subconscio',
  'subconscious.mode.off.title': 'Disattivato',
  'subconscious.mode.off.desc': 'Il subconscio è disattivato.',
  'subconscious.mode.simple.title': 'Semplice',
  'subconscious.mode.simple.desc': 'Osservazione in sola lettura. Solo accesso a memoria e file.',
  'subconscious.mode.aggressive.title': 'Aggressivo',
  'subconscious.mode.aggressive.desc':
    'Accesso completo agli strumenti. Può scrivere, creare agenti e delegare compiti.',
  'subconscious.mode.aggressiveWarning':
    'La modalità aggressiva concede al subconscio accesso completo agli strumenti, inclusa scrittura e creazione di sotto-agenti.',
  'subconscious.interval.label': 'Frequenza',
  'subconscious.interval.minutes': '{n} min',
  'subconscious.interval.hours': '{n}h',
  'subconscious.interval.oneHour': '1 ora',
  'subconscious.interval.oneDay': '24 ore',
  'whatsapp.chatsSynced': 'chat sincronizzate',
  'whatsapp.chatSynced': 'chat sincronizzata',
  'sync.active': 'Attivo',
  'sync.recent': 'Recenti',
  'sync.idle': 'Inattivo',
  'sync.memorySources': 'Origini di memoria',
  'sync.noConnectedSources': 'Nessuna origine connessa',
  'sync.chunks': 'chunk',
  'sync.lastChunk': 'Ultimo chunk:',
  'sync.pending': 'in attesa',
  'sync.processed': 'elaborati',
  'sync.syncing': 'Sincronizzazione…',
  'sync.sync': 'Sincronizza',
  'sync.failedToLoad': 'Impossibile caricare lo stato di sincronizzazione',
  'sync.noContent':
    "Nessun contenuto è stato sincronizzato nella memoria. Connetti un'integrazione per iniziare.",
  'memorySyncInterval.title': 'Pianificazione sincronizzazione',
  'memorySyncInterval.lastSynced': 'Ultima sincronizzazione',
  'memorySyncInterval.never': 'mai',
  'memorySyncInterval.everyHours': 'Ogni {h} h',
  'memorySyncInterval.everyMinutes': 'Ogni {m} min',
  'memorySyncInterval.manual': 'Solo manuale',
  'memorySyncInterval.saveFailed':
    'Impossibile aggiornare la pianificazione della sincronizzazione',
  'memorySources.title': 'Fonti di memoria',
  'memorySources.empty':
    'Ancora nessuna fonte di memoria. Aggiungine una per iniziare a alimentare la memoria.',
  'memorySources.customSources': 'Fonti personalizzate',
  'memorySources.addSource': 'Aggiungi Fonte',
  'memorySources.noCustomSources':
    'Ancora nessuna fonte personalizzata. Aggiungi una cartella, il repository GitHub, il feed RSS o una pagina web per iniziare.',
  'memorySources.loadingConnections': 'Caricamento delle connessioni…',
  'memorySources.noConnections':
    "Nessuna connessione Composio attiva trovata. Collega prima un'integrazione.",
  'memorySources.pickConnection': 'Scegli una connessione',
  'memorySources.selectConnection': '— Seleziona una connessione —',
  'memorySources.comingSoon': 'Prossimamente',
  'memorySources.composioListFailed': 'Impossibile caricare le connessioni Composio.',
  'memorySources.browse': 'Sfoglia…',
  'memorySources.folderPathPlaceholder': '/Users/you/notes',
  'memorySources.globPatternPlaceholder': '**/*.md',
  'memorySources.repoUrlPlaceholder': 'https://github.com/org/repo',
  'memorySources.branchPlaceholder': 'main',
  'memorySources.feedUrlPlaceholder': 'https://example.com/feed.xml',
  'memorySources.pageUrlPlaceholder': 'https://example.com/article',
  'memorySources.cssSelectorPlaceholder': 'article',
  'memorySources.searchQueryPlaceholder': 'da:utente AI sicurezza',
  'memorySources.kind.composio': 'Integrazione',
  'memorySources.kind.conversation': 'Conversazione',
  'memorySources.kind.folder': 'Cartella Locale',
  'memorySources.kind.github_repo': 'GitHub Repository',
  'memorySources.kind.twitter_query': 'Ricerca su Twitter',
  'memorySources.kind.rss_feed': 'Feed RSS',
  'memorySources.kind.web_page': 'Pagina web',
  'memorySources.sync.successTitle': 'Sincronizzazione',
  'memorySources.sync.successMessage': 'Il progresso apparirà a breve.',
  'memorySources.sync.failedTitle': 'Sincronizzazione fallita:',
  'memorySources.sync.completeTitle': 'Sincronizzato',
  'memorySources.sync.itemsSynced': 'elementi sincronizzati',
  'memorySources.sync.upToDate': 'Aggiornato',
  'memorySources.sync.failedLabel': 'Non riuscito',
  'time.justNow': 'proprio ora',
  'time.secondsAgoSuffix': 's fa',
  'time.minutesAgoSuffix': 'min fa',
  'time.hoursAgoSuffix': 'h fa',
  'time.daysAgoSuffix': 'g fa',
  'memorySources.pickKind': 'Che tipo di fonte vuoi aggiungere?',
  'memorySources.backToKinds': 'Torna ai tipi di origine',
  'memorySources.label': 'Etichetta',
  'memorySources.labelPlaceholder': 'Le mie note di ricerca',
  'memorySources.add': 'Aggiungi',
  'memorySources.adding': 'Aggiungendo…',
  'memorySources.added': 'Fonte aggiunta',
  'memorySources.removed': 'Fonte rimossa',
  'memorySources.remove': 'Rimuovere',
  'memorySources.enable': 'Abilita',
  'memorySources.disable': 'Disabilita',
  'memorySources.toggleFailed': 'Commutazione fallita',
  'memorySources.removeFailed': 'Rimozione fallita',
  'memorySources.folderPath': 'Percorso della cartella',
  'memorySources.globPattern': 'Modello glob',
  'memorySources.repoUrl': 'URL del repository',
  'memorySources.branch': 'Ramo',
  'memorySources.feedUrl': 'Alimenta URL',
  'memorySources.pageUrl': 'Pagina URL',
  'memorySources.cssSelector': 'Selettore CSS (opzionale)',
  'memorySources.searchQuery': 'Query di ricerca',
  'memorySources.build.title': 'Costruisci',
  'memorySources.build.building': 'Costruzione…',
  'memorySources.build.successTitle': 'Albero costruito',
  'memorySources.build.failedTitle': 'Costruzione fallita',
  'memorySources.build.sealsMessage': 'sigillatura completata',
  'memorySources.allIn.button': 'Tutto attivo',
  'memorySources.allIn.title': 'Attivare tutto?',
  'memorySources.allIn.message':
    'Questo attiverà tutte le sorgenti di memoria e rimuoverà tutti i limiti di sincronizzazione. Costruisce il grafico di memoria più ricco, ma potrebbe utilizzare più crediti.',
  'memorySources.allIn.confirm': 'Sì',
  'memorySources.allIn.cancel': 'No',
  'memorySources.allIn.success':
    'Tutte le sorgenti attivate senza limiti. Sincronizzazione avviata.',
  'memorySources.allIn.failed': 'Impossibile attivare tutto. Riprova.',
  'memorySources.settings.button': 'Impostazioni',
  'memorySources.settings.title': 'Impostazioni di sincronizzazione',
  'memorySources.settings.maxPrs': 'Numero massimo di pull request',
  'memorySources.settings.maxIssues': 'Numero massimo di issue',
  'memorySources.settings.maxCommits': 'Numero massimo di commit',
  'memorySources.settings.maxItems': 'Numero massimo di elementi',
  'memorySources.settings.sinceDays': 'Periodo di ricerca (giorni)',
  'memorySources.settings.syncDepthDays': 'Profondità di sincronizzazione (giorni)',
  'memorySources.settings.maxTokens': 'Token massimi per sincronizzazione',
  'memorySources.settings.maxCost': 'Costo massimo per sincronizzazione (USD)',
  'memorySources.settings.unlimited': 'Illimitato',
  'memorySources.settings.unlimitedTooltip':
    'Hai scelto di sincronizzare il massimo per {toolkit}. Puoi modificare i limiti qui.',
  'memorySources.settings.maxed': 'Pieno',
  'memorySources.settings.save': 'Salva',
  'memorySources.settings.saving': 'Salvataggio…',
  'memorySources.settings.saved': 'Impostazioni salvate',
  'memorySources.settings.saveFailed': 'Impossibile salvare le impostazioni',
  'backend.aiBackend': 'Backend AI',
  'backend.cloud': 'Cloud',
  'backend.recommended': 'Consigliato',
  'backend.cloudDescription':
    "Modelli veloci e potenti instradati attraverso il backend di OpenHuman. Pronti all'uso immediatamente.",
  'backend.privacyNote':
    'Nessun dato personale, messaggio o chiave viene mai inviato ai nostri server.',
  'backend.local': 'Locale',
  'backend.advanced': 'Avanzato',
  'backend.localDescription':
    'Esegui i modelli sulla tua macchina con Ollama. Privacy totale, richiede configurazione.',
  'backend.ramRecommended': '16GB+ di RAM consigliati',
  'subconscious.tasks': 'attività',
  'subconscious.ticks': 'tick',
  'subconscious.last': 'Ultimo',
  'subconscious.failed': 'fallito',
  'subconscious.tickInterval': 'Intervallo di tick',
  'subconscious.runNow': 'Esegui ora',
  'subconscious.providerUnavailableTitle': 'Subconscio in pausa',
  'subconscious.providerSettings': 'Impostazioni IA',
  'subconscious.scratchpadInfo':
    'A ogni ciclo il subconscio verifica cosa è cambiato nelle tue fonti collegate, poi registra attività di follow-up nella tua lista di cose da fare, aggiorna i tuoi obiettivi o ti avvisa quando qualcosa richiede attenzione. Controlla Impostazioni → Accesso agente per configurare modalità e frequenza.',
  'subconscious.approvalNeeded': 'Approvazione necessaria',
  'subconscious.requiresApproval': 'Richiede approvazione',
  'subconscious.fixInConnections': 'Correggi in Connessioni',
  'subconscious.goAhead': 'Procedi',
  'subconscious.activeTasks': 'Attività attive',
  'subconscious.noActiveTasks': 'Nessuna attività attiva',
  'subconscious.default': 'Predefinito',
  'subconscious.addTaskPlaceholder': 'Aggiungi una nuova attività...',
  'subconscious.activityLog': 'Log attività',
  'subconscious.noActivity': 'Nessuna attività',
  'subconscious.decision.nothingNew': 'Niente di nuovo',
  'subconscious.decision.completed': 'Completato',
  'subconscious.decision.evaluating': 'Valutazione',
  'subconscious.decision.waitingApproval': 'In attesa di approvazione',
  'subconscious.decision.failed': 'Fallito',
  'subconscious.decision.cancelled': 'Annullato',
  'subconscious.decision.skipped': 'Saltato',
  // Subconscious triggers (event-driven orchestrator) debug panel
  'subconsciousTriggers.title': 'Trigger del subconscio',
  'subconsciousTriggers.subtitle': 'Orchestratore in background guidato dagli eventi',
  'subconsciousTriggers.pipeline': 'Pipeline',
  'subconsciousTriggers.mode': 'Modalità',
  'subconsciousTriggers.orchestrator': 'Orchestratore',
  'subconsciousTriggers.running': 'In esecuzione',
  'subconsciousTriggers.stopped': 'Arrestato',
  'subconsciousTriggers.promotionsPerHour': 'Promozioni / ora',
  'subconsciousTriggers.queueDepth': 'Profondità della coda',
  'subconsciousTriggers.orchestratorThread': "Thread dell'orchestratore",
  'subconsciousTriggers.userThread': "Thread dell'utente",
  'subconsciousTriggers.disabledHint':
    'Attiva la modalità guidata dagli eventi per avviare la pipeline.',
  'subconsciousTriggers.enable': 'Attiva',
  'subconsciousTriggers.disable': 'Disattiva',
  'actionable.complete': 'Completa',
  'actionable.dismiss': 'Ignora',
  'actionable.snooze': 'Posticipa',
  'actionable.new': 'Nuovo',
  'stats.storage': 'Archiviazione',
  'stats.files': 'file',
  'stats.documents': 'Documenti',
  'stats.today': 'oggi',
  'stats.namespaces': 'Namespace',
  'stats.relations': 'Relazioni',
  'stats.firstMemory': 'Prima memoria',
  'stats.latest': 'Ultime',
  'stats.sessions': 'Sessioni',
  'stats.tokens': 'token',
  'bootCheck.invalidUrl': 'Inserisci un URL di runtime.',
  'bootCheck.urlMustStartWith': "L'URL deve iniziare con http:// o https://",
  'bootCheck.validUrlRequired': 'Non sembra un URL valido (prova https://core.example.com/rpc)',
  'bootCheck.tokenRequired': 'Servirà un token di autenticazione per connettersi.',
  'bootCheck.httpPublicWarning':
    'Questo è un URL HTTP in chiaro su un host pubblico — il traffico non sarà cifrato. Usa HTTPS a meno che tu non ti fidi di questa rete.',
  'bootCheck.chooseCoreMode': 'Seleziona un runtime',
  'bootCheck.connectToCore': 'Connetti al tuo runtime',
  'bootCheck.desktopDescription':
    'OpenHuman ha bisogno di un runtime per pensare. Scegli dove farlo girare.',
  'bootCheck.webDescription':
    "Sul web, OpenHuman si connette a un runtime che controlli tu. Inserisci sotto URL e token di autenticazione, oppure scarica l'app desktop per farne girare uno direttamente sulla tua macchina.",
  'bootCheck.preferDesktop': 'Preferisci tenere tutto sul tuo dispositivo?',
  'bootCheck.downloadDesktop': "Scarica l'app desktop",
  'bootCheck.localRecommended': 'Esegui localmente (consigliato)',
  'bootCheck.localDescription':
    'Gira direttamente sul tuo computer. Più veloce, completamente privato, niente da configurare.',
  'bootCheck.cloudMode': 'Esegui sul cloud (complesso)',
  'bootCheck.cloudDescription':
    'Connettiti a un runtime che stai ospitando altrove. Resta online 24×7 così non devi tenere acceso questo dispositivo.',
  'bootCheck.coreRpcUrl': 'URL runtime',
  'bootCheck.rpcUrlPlaceholder': 'https://core.example.com/rpc',
  'bootCheck.authToken': 'Token di autenticazione',
  'bootCheck.bearerTokenPlaceholder': 'Il bearer token del tuo runtime remoto',
  'bootCheck.storedLocally': 'Conservato solo su questo dispositivo. Inviato come ',
  'bootCheck.testing': 'Test in corso…',
  'bootCheck.testConnection': 'Prova connessione',
  'bootCheck.connectedOk': 'Connesso. Tutto a posto.',
  'bootCheck.authFailed': 'Token non valido. Controllalo e riprova.',
  'bootCheck.unreachablePrefix': 'Impossibile raggiungerlo:',
  'bootCheck.checkingCore': 'Attivazione del runtime…',
  'bootCheck.cannotReach': 'Impossibile raggiungere il runtime',
  'bootCheck.cannotReachDesc':
    'Non siamo riusciti a connetterci al tuo runtime. Vuoi provarne uno diverso?',
  'bootCheck.switchMode': 'Scegli un runtime diverso',
  'bootCheck.quit': 'Esci',
  'bootCheck.legacyDetected': 'Runtime in background legacy rilevato',
  'bootCheck.legacyDescription':
    'Un daemon OpenHuman installato separatamente è già in esecuzione su questo dispositivo. Dobbiamo rimuoverlo prima che il runtime integrato possa subentrare.',
  'bootCheck.removing': 'Rimozione…',
  'bootCheck.removeContinue': 'Rimuovi e continua',
  'bootCheck.localNeedsRestart': 'Il runtime locale necessita di un riavvio',
  'bootCheck.localNeedsRestartDesc':
    "Il tuo runtime locale ha una versione diversa da quella dell'app. Un riavvio rapido li riallineerà.",
  'bootCheck.restarting': 'Riavvio…',
  'bootCheck.restartCore': 'Riavvia runtime',
  'bootCheck.cloudNeedsUpdate': 'Il runtime cloud necessita di un aggiornamento',
  'bootCheck.cloudNeedsUpdateDesc':
    "Il tuo runtime cloud ha una versione diversa da quella dell'app. Esegui l'updater per riallinearli.",
  'bootCheck.updating': 'Aggiornamento…',
  'bootCheck.updateCloudCore': 'Aggiorna runtime cloud',
  'bootCheck.versionCheckFailed': 'Verifica versione runtime fallita',
  'bootCheck.versionCheckFailedDesc':
    'Il runtime è attivo ma non comunica la sua versione. Potrebbe essere obsoleto. Riavvialo o aggiornalo per continuare.',
  'bootCheck.working': 'Elaborazione…',
  'bootCheck.restartUpdateCore': 'Riavvia / aggiorna runtime',
  'bootCheck.unexpectedError': 'Errore inatteso del controllo di avvio',
  'bootCheck.actionFailed': 'Qualcosa è andato storto. Riprova.',
  'bootCheck.portConflictTitle': "Impossibile avviare il motore dell'app",
  'bootCheck.portConflictBody':
    'Un altro processo sta usando la porta di rete necessaria a OpenHuman. Tenteremo di risolvere il problema automaticamente.',
  'bootCheck.portConflictFixButton': 'Correzione automatica',
  'bootCheck.portConflictFixing': 'Correzione in corso…',
  'bootCheck.portConflictFixFailed':
    'La correzione automatica non ha funzionato. Riavvia il computer e riprova.',
  'bootCheck.portConflictOwner':
    '{name} (PID {pid}) sta usando la porta di rete necessaria a OpenHuman.',
  'bootCheck.portConflictGuidance':
    'Chiudi quel programma per liberare la porta, oppure forzane la chiusura qui sotto, poi riprova.',
  'bootCheck.portConflictForceQuit': 'Forza chiusura di {name}',
  'bootCheck.portConflictForceQuitting': 'Chiusura di {name}…',
  'bootCheck.portConflictForceQuitFailed':
    'Impossibile chiudere quel programma. Potrebbe essere necessario chiuderlo manualmente e riprovare.',
  'notifications.justNow': 'adesso',
  'notifications.minAgo': '{n}m fa',
  'notifications.hrAgo': '{n}h fa',
  'notifications.dayAgo': '{n}g fa',
  'notifications.category.messages': 'Messaggi',
  'notifications.category.agents': 'Agenti',
  'notifications.category.skills': 'Skill',
  'notifications.category.system': 'Sistema',
  'notifications.category.meetings': 'Riunioni',
  'notifications.category.reminders': 'Promemoria',
  'notifications.category.important': 'Importanti',
  'notifications.filterAll': 'Tutte',
  'notifications.filterEmpty': 'Nessun avviso in questa categoria',
  'about.update.status.checking': 'Verifica in corso...',
  'about.update.status.available': 'v{version} disponibile',
  'about.update.status.availableNoVersion': 'Aggiornamento disponibile',
  'about.update.status.downloading': 'Download in corso...',
  'about.update.status.readyToInstall': "v{version} pronta per l'installazione",
  'about.update.status.readyToInstallNoVersion':
    'Una nuova versione è stata scaricata ed è pronta. Riavvia per applicare.',
  'about.update.status.installing': 'Installazione...',
  'about.update.status.restarting': 'Riavvio in corso...',
  'about.update.status.upToDate': "Stai utilizzando l'ultima versione.",
  'about.update.status.error': 'Verifica aggiornamento fallita',
  'about.update.status.default': 'Verifica aggiornamenti',
  'welcome.connectionFailed': 'Connessione fallita: {status} {statusText}',
  'welcome.connectionFailedMsg': 'Connessione fallita: {message}',
  'welcome.continueLocally': 'Continua localmente',
  'welcome.continueLocallyExperimental': 'Continua Localmente (Sperimentale)',
  'welcome.localSessionStarting': 'Avvio sessione locale...',
  'welcome.localSessionDesc': 'Utilizza un profilo locale offline e salta TinyHumans OAuth.',
  'chat.agentChatDesc': "Apri una sessione di chat diretta con l'agente.",
  'chat.modelPlaceholder': 'gpt-4o',
  'channels.activeRouteValue': '{channel} tramite {authMode}',
  'privacy.dataKind.messages': 'Messaggi',
  'privacy.dataKind.agents': 'Agenti',
  'privacy.dataKind.skills': 'Skill',
  'privacy.dataKind.system': 'Sistema',
  'privacy.dataKind.meetings': 'Riunioni',
  'privacy.dataKind.reminders': 'Promemoria',
  'privacy.dataKind.important': 'Importante',
  'onboarding.enableLocalAI': 'Abilita AI locale',
  'onboarding.skills.status.available': 'Disponibile',
  'onboarding.skills.status.connected': 'Connesso',
  'onboarding.skills.status.connecting': 'Connessione',
  'onboarding.skills.status.error': 'Errore',
  'onboarding.skills.status.unavailable': 'Non disponibile',
  'composio.statusUnavailable': 'Stato non disponibile',
  'composio.authExpired': 'Autenticazione scaduta',
  'composio.reconnect': 'Riconnetti',
  'composio.expiredAuthorization': '{name} autorizzazione scaduta',
  'composio.expiredDescription':
    "Riconnettiti per riattivare gli strumenti {name}. OpenHuman manterrà questa integrazione non disponibile finché non aggiornerai l'accesso a OAuth.",
  'composio.envVarOverrides': 'è impostata, sovrascrive questa impostazione.',
  'composio.previewBadge': 'Anteprima',
  'composio.previewTooltip':
    "Integrazione dell'agente disponibile a breve: puoi connetterti, ma l'agente non può ancora utilizzare questo toolkit.",
  'memory.day.sun': 'Dom',
  'memory.day.mon': 'Lun',
  'memory.day.tue': 'Mar',
  'memory.day.wed': 'Mer',
  'memory.day.thu': 'Gio',
  'memory.day.fri': 'Ven',
  'memory.day.sat': 'Sab',
  'memory.ingesting': 'Ingestione',
  'memory.ingestionQueued': 'In coda',
  'memory.ingestingTitle': 'Ingestione di {title}',
  'mic.noAudioCaptured': 'Nessun audio catturato',
  'mic.noSpeechDetected': 'Nessun parlato rilevato',
  'mic.lowConfidenceResult': "Impossibile comprendere l'audio chiaramente — riprova",
  'mic.failedToStopRecording': 'Impossibile fermare la registrazione: {message}',
  'mic.transcriptionFailed': 'Trascrizione fallita: {message}',
  'reflections.kind.retrospective': 'Retrospettiva',
  'reflections.kind.derivedFact': 'Fatto derivato',
  'reflections.kind.moodInsight': "Insight sull'umore",
  'reflections.kind.relationshipInsight': 'Insight relazionale',
  'graph.tooltip.summary': 'Riassunto',
  'graph.tooltip.contact': 'Contatto',
  'localModel.usage.never': 'Mai',
  'localModel.usage.mediumLoad': 'Carico medio',
  'localModel.usage.lowLoad': 'Carico basso',
  'localModel.usage.idleMode': 'Modalità inattiva',
  'localModel.rebootstrapComplete': 'Re-bootstrap del modello completato.',
  'localModel.modelsVerified': 'Modelli locali verificati.',
  'accounts.addModal.allConnected': 'Tutti connessi',
  'accounts.addModal.title': 'Aggiungi account',
  'accounts.respondQueue.empty': 'Vuota',
  'accounts.respondQueue.hide': 'Nascondi coda di risposta',
  'accounts.respondQueue.loadFailed': 'Impossibile caricare la coda di risposta',
  'accounts.respondQueue.loading': 'Caricamento coda…',
  'accounts.respondQueue.pending': 'In attesa',
  'accounts.respondQueue.show': 'Mostra coda di risposta',
  'accounts.respondQueue.title': 'Coda di risposta',
  'accounts.webviewHost.almostReady': 'Quasi pronto...',
  'accounts.webviewHost.loadTimeout': 'Timeout caricamento webview',
  'accounts.webviewHost.loading': 'Caricamento di {providerName}...',
  'accounts.webviewHost.loadingAccount': 'Caricamento account',
  'accounts.webviewHost.restoringSession': 'Ripristino sessione...',
  'accounts.webviewHost.retryLoading': 'Riprova caricamento',
  'accounts.webviewHost.takingLonger': '{providerName} sta impiegando più tempo del previsto.',
  'accounts.webviewHost.timeoutHint': 'Suggerimento timeout',
  'app.connectionBadge.composio': 'Composio',
  'app.connectionBadge.messaging': 'Messaggistica',
  'app.connectionIndicator.connected': 'Connesso a OpenHuman AI 🚀',
  'app.connectionIndicator.connecting': 'Connessione',
  'app.connectionIndicator.coreOffline': 'Core non in linea',
  'app.connectionIndicator.disconnected': 'Disconnesso',
  'app.connectionIndicator.offline': 'Offline',
  'app.connectionIndicator.reconnecting': 'Riconnessione…',
  'app.errorFallback.componentStack': 'Stack del componente',
  'app.errorFallback.contactSupport': "Contatta l'assistenza",
  'app.errorFallback.copyEventId': 'Copia',
  'app.errorFallback.eventIdCopied': 'Copiato',
  'app.errorFallback.eventIdLabel': 'ID errore',
  'app.errorFallback.revealLogs': 'Mostra i log',
  'app.errorFallback.downloadLatest': "Scarica l'ultima versione",
  'app.errorFallback.heading': 'Intestazione',
  'app.errorFallback.hint': 'Suggerimento',
  'app.errorFallback.reloadApp': 'Ricarica app',
  'app.errorFallback.subheading': 'Sottotitolo',
  'app.errorFallback.tryRecover': 'Prova a ripristinare',
  'app.localAiDownload.installing': 'Installazione...',
  'app.localAiDownload.preparing': 'Preparazione...',
  'app.openhumanLink.accounts.continueWith': 'Continua con accesso {label}',
  'app.openhumanLink.accounts.done': 'Fatto',
  'app.openhumanLink.accounts.intro': 'Introduzione',
  'app.openhumanLink.accounts.webviewNote': 'Nota webview',
  'app.openhumanLink.billing.openDashboard': 'Apri dashboard',
  'app.openhumanLink.billing.stayOnTrial': 'Rimani in prova',
  'app.openhumanLink.billing.trialCredit': 'Crediti di iscrizione',
  'app.openhumanLink.billing.trialDesc':
    "Le offerte di crediti possono variare in base alla promozione e all'idoneità dell'account.",
  'app.openhumanLink.defaultBody':
    'Non ancora pronto nel popup. Apri la pagina completa delle impostazioni quando ti serve.',
  'app.openhumanLink.discord.intro': 'Introduzione',
  'app.openhumanLink.discord.openInvite': 'Apri invito',
  'app.openhumanLink.discord.perk1': 'Vantaggio 1',
  'app.openhumanLink.discord.perk2': 'Vantaggio 2',
  'app.openhumanLink.discord.perk3': 'Vantaggio 3',
  'app.openhumanLink.discord.perk4': 'Vantaggio 4',
  'app.openhumanLink.discordReport.intro':
    'Ci scusiamo — qualcosa è andato storto da parte nostra. Proviamo a registrare questi errori automaticamente, ma condividere i dettagli su Discord ci aiuta a risolverli più velocemente.',
  'app.openhumanLink.discordReport.openDiscord': 'Apri Discord',
  'app.openhumanLink.done': 'Fatto',
  'app.openhumanLink.notifications.desktopOnly':
    "Le notifiche native sono disponibili solo nell'app desktop (esegui `pnpm dev:app`).",
  'app.openhumanLink.notifications.permissionOff':
    "L'autorizzazione alle notifiche è disattivata. Abilita OpenHuman in Impostazioni di sistema → Notifiche, quindi riprova.",
  'app.openhumanLink.notifications.triggerFailed':
    'OpenHuman non è riuscito ad attivare una notifica di sistema. Controlla le impostazioni di notifica del sistema operativo e riprova.',
  'app.openhumanLink.notifications.welcomeBody':
    'Riceverai avvisi qui quando qualcosa richiederà la tua attenzione.',
  'app.openhumanLink.notifications.welcomeTitle': "OpenHuman è pronto all'uso",
  'app.openhumanLink.status.closed': 'Chiuso',
  'app.openhumanLink.status.connected': 'Connesso',
  'app.openhumanLink.status.error': 'Errore',
  'app.openhumanLink.status.loading': 'Caricamento…',
  'app.openhumanLink.status.needsSignIn': 'Accesso richiesto',
  'app.openhumanLink.status.timedOut': 'Tempo scaduto',
  'app.openhumanLink.loadingChannelSetup': 'Caricamento configurazione canale',
  'app.openhumanLink.maybeLater': 'Forse più tardi',
  'app.openhumanLink.notifications.asking': 'Richiesta al tuo OS…',
  'app.openhumanLink.notifications.blocked': 'Bloccato',
  'app.openhumanLink.notifications.blockedStep1': 'Passo 1 bloccato',
  'app.openhumanLink.notifications.blockedStep2': 'Passo 2 bloccato',
  'app.openhumanLink.notifications.blockedStep3': 'Passo 3 bloccato',
  'app.openhumanLink.notifications.intro': 'Introduzione',
  'app.openhumanLink.notifications.promptHint': 'Suggerimento prompt',
  'app.openhumanLink.notifications.retry': 'Riprova notifica di test',
  'app.openhumanLink.notifications.send': 'Invia notifica di test',
  'app.openhumanLink.notifications.sendFailed': 'Impossibile inviare: {error}',
  'app.openhumanLink.notifications.sent':
    "Notifica di test inviata. Se non l'hai ricevuta, vai in Impostazioni di Sistema → Notifiche → OpenHuman, attiva Consenti notifiche e imposta lo Stile banner su Persistente.",
  'app.openhumanLink.skipForNow': 'Salta per ora',
  'app.openhumanLink.telegramUnavailable': 'Telegram non disponibile',
  'app.openhumanLink.title.accounts': 'Connetti le tue app',
  'app.openhumanLink.title.billing': 'Fatturazione e crediti',
  'app.openhumanLink.title.discord': 'Unisciti alla community',
  'app.openhumanLink.title.discordReport': 'Segnala questo errore',
  'app.openhumanLink.title.messaging': 'Connetti un canale di chat',
  'app.openhumanLink.title.notifications': 'Consenti notifiche',
  'app.persistRehydration.body': 'Corpo',
  'app.persistRehydration.heading': 'Intestazione',
  'app.persistRehydration.resetCta': 'Ripristino…',
  'app.persistRehydration.resetting': 'Ripristino…',
  'app.routeLoading.initializing': 'Inizializzazione di OpenHuman...',
  'app.update.currentlyOn': '{version}',
  'app.update.errorFallback': "Si è verificato un errore durante l'aggiornamento.",
  'app.update.header.default': 'Aggiornamento',
  'app.update.header.error': 'Aggiornamento fallito',
  'app.update.header.installing': 'Installazione aggiornamento',
  'app.update.header.readyToInstall': "Aggiornamento pronto per l'installazione",
  'app.update.header.restarting': 'Riavvio…',
  'app.update.later': 'Più tardi',
  'app.update.newVersionReady': "Una nuova versione è pronta per l'installazione.",
  'app.update.progress.downloaded': '{amount} scaricati',
  'app.update.progress.installing': 'Installazione della nuova versione…',
  'app.update.progress.restarting': "Riavvio dell'app…",
  'app.update.progress.working': '{percent}%',
  'app.update.restartNote': 'Nota sul riavvio',
  'app.update.restartNow': 'Riavvia ora',
  'app.update.versionReady': "La versione {newVersion} è pronta per l'installazione.",
  'channels.discord.accountLinked': 'Account collegato',
  'channels.discord.connect': 'Connetti',
  'channels.discord.linkTokenExpired': 'Token di collegamento scaduto. Riprova.',
  'channels.discord.linkTokenInstruction': '{token}',
  'channels.discord.linkTokenLabel': 'Etichetta token di collegamento',
  'channels.discord.linkTokenOnce': 'Token di collegamento monouso',
  'channels.discord.picker.allPermissionsOk':
    'Il bot ha tutte le autorizzazioni richieste in questo canale.',
  'channels.discord.picker.botNotInServers': 'Bot non presente nei server',
  'channels.discord.picker.category': 'Categoria',
  'channels.discord.picker.channel': 'Canale',
  'channels.discord.picker.checkingPermissions': 'Verifica autorizzazioni',
  'channels.discord.picker.loadingChannels': 'Caricamento canali...',
  'channels.discord.picker.loadingServers': 'Caricamento server...',
  'channels.discord.picker.missingPermissions': 'Autorizzazioni mancanti',
  'channels.discord.picker.noChannels': 'Nessun canale di testo trovato',
  'channels.discord.picker.noServers': 'Nessun server trovato',
  'channels.discord.picker.selectChannel': 'Seleziona un canale',
  'channels.discord.picker.selectServer': 'Seleziona un server',
  'channels.discord.picker.server': 'Server',
  'channels.discord.picker.serverChannelSelection': 'Selezione server e canale',
  'channels.discord.savedRestartRequired': "Canale salvato. Riavvia l'app per attivarlo.",
  'channels.telegram.connect': 'Connetti',
  'channels.telegram.managedDmConnecting': 'Connessione DM gestiti',
  'channels.telegram.managedDmTimeout': 'Timeout DM gestiti',
  'channels.telegram.reconnect': 'Riconnetti',
  'channels.telegram.savedRestartRequired': "Canale salvato. Riavvia l'app per attivarlo.",
  'channels.web.alwaysAvailable': 'Sempre disponibile',
  'chat.approval.approve': 'Approvare',
  'chat.approval.alwaysAllow': 'Consenti sempre',
  'chat.approval.alwaysAllowHint':
    'Smettila di chiedere questo strumento — aggiungilo alla tua lista Sempre consentito',
  'chat.approval.deciding': 'Lavorando…',
  'chat.approval.deny': 'Negare',
  'chat.approval.error': 'Impossibile registrare la tua decisione — riprova.',
  'chat.approval.fallback':
    "L'agente vuole eseguire un'azione che necessita della tua approvazione.",
  'chat.approval.title': 'Approvazione necessaria',
  'chat.approval.tool': 'Strumento:',
  'channels.authMode.managed_dm': 'Accedi con OpenHuman',
  'channels.authMode.oauth': 'OAuth Accedi',
  'channels.authMode.bot_token': 'Usa il tuo token Bot',
  'channels.authMode.api_key': 'Usa la tua chiave API',
  'channels.fieldRequired': '{field} è richiesto',
  'channels.mcp.title': 'MCP Server',
  'channels.mcp.description':
    "Sfoglia e gestisci i server del Model Context Protocol che estendono l'IA con nuovi strumenti.",
  'channels.discord.displayName': 'Discord',
  'channels.discord.description': 'Invia e ricevi messaggi tramite Discord.',
  'channels.discord.authMode.bot_token.description': 'Fornisci il tuo token bot Discord.',
  'channels.discord.authMode.oauth.description':
    'Installa il bot OpenHuman sul tuo server Discord tramite OAuth.',
  'channels.discord.authMode.managed_dm.description':
    'Collega il tuo account personale Discord al bot OpenHuman.',
  'channels.discord.fields.bot_token.label': 'Token bot',
  'channels.discord.fields.bot_token.placeholder': 'Il tuo token bot Discord',
  'channels.discord.fields.guild_id.label': 'ID server (gilda)',
  'channels.discord.fields.guild_id.placeholder': 'Facoltativo: limita a un server specifico',
  'channels.telegram.displayName': 'Telegram',
  'channels.telegram.description': 'Invia e ricevi messaggi tramite Telegram.',
  'channels.telegram.authMode.managed_dm.description':
    'Invia un messaggio direttamente al bot OpenHuman Telegram.',
  'channels.telegram.authMode.bot_token.description':
    'Fornisci il tuo token Bot Telegram da @BotFather.',
  'channels.telegram.fields.bot_token.label': 'Token bot',
  'channels.telegram.fields.bot_token.placeholder': '123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11',
  'channels.telegram.fields.allowed_users.label': 'Utenti consentiti',
  'channels.telegram.fields.allowed_users.placeholder': 'Separati da virgole Telegram nomi utente',
  'channels.telegram.remoteControlTitle': 'Controllo remoto (Telegram)',
  'channels.telegram.remoteControlBody':
    'Da una chat Telegram consentita, inviare /status, /sessions, /new o /help. Il routing del modello utilizza ancora /model e /models.',
  'channels.web.displayName': 'Web',
  'channels.web.description': "Chatta tramite l'interfaccia utente Web integrata.",
  'channels.web.authMode.managed_dm.description':
    'Utilizza la chat web incorporata: non è richiesta alcuna configurazione.',
  'channels.yuanbao.connect': 'Connect',
  'channels.yuanbao.connecting': 'Connessione in corso…',
  'channels.yuanbao.fieldRequired': '{field} è obbligatorio',
  'channels.yuanbao.reconnect': 'Reconnect',
  'channels.yuanbao.savedRestartRequired': "Canale salvato. Riavvia l'app per attivarlo.",
  'channels.yuanbao.unexpectedStatus': 'Stato di connessione imprevisto: {status}',
  'chat.unsubscribeApproval.approve': 'Approva e annulla iscrizione',
  'chat.unsubscribeApproval.approved': '✓ Iscrizione annullata con successo.',
  'chat.unsubscribeApproval.denied': '✕ Richiesta rifiutata.',
  'chat.unsubscribeApproval.deny': 'Rifiuta',
  'chat.unsubscribeApproval.processing': 'Elaborazione...',
  'chat.unsubscribeApproval.title': 'Richiesta di annullamento iscrizione',
  'commandPalette.ariaLabel': 'Palette dei comandi',
  'commandPalette.description': 'Descrizione',
  'commandPalette.label': 'Comandi',
  'commandPalette.noResults': 'Nessun risultato',
  'commandPalette.placeholder': 'Digita un comando o cerca…',
  'commandPalette.searchAria': 'Cerca comandi',
  'commandPalette.shortcutHint': 'Premi ? per tutte le scorciatoie',
  'commandPalette.title': 'Palette dei comandi',
  'kbd.ariaLabel': 'Scorciatoia da tastiera: {shortcut}',
  'shortcuts.title': 'Scorciatoie da tastiera',
  'shortcuts.subtitle': 'Velocizza il tuo lavoro con queste scorciatoie da tastiera.',
  'shortcuts.menuDesc': 'Esplora tutte le scorciatoie da tastiera dell’app.',
  'shortcuts.empty': 'Al momento non è disponibile alcuna scorciatoia da tastiera.',
  'shortcuts.openHint': 'Apri questo elenco in qualsiasi momento con',
  'shortcuts.group.navigation': 'Navigazione',
  'shortcuts.group.profiles': 'Profili',
  'shortcuts.group.chat': 'Chat',
  'shortcuts.group.view': 'Vista',
  'shortcuts.group.general': 'Generale',
  'shortcuts.group.help': 'Aiuto',
  'shortcuts.action.home': 'Vai alla home',
  'shortcuts.action.chat': 'Vai alla chat',
  'shortcuts.action.knowledge': 'Vai a Conoscenza e memoria',
  'shortcuts.action.connections': 'Vai a Connessioni',
  'shortcuts.action.activity': 'Vai ad Attività',
  'shortcuts.action.settings': 'Apri Impostazioni',
  'shortcuts.action.newChat': 'Nuova chat',
  'shortcuts.action.toggleSidebar': 'Attiva/disattiva barra laterale',
  'shortcuts.action.commandPalette': 'Palette dei comandi',
  'iosMascot.connectedTo': 'Connesso a',
  'iosMascot.defaultPairedLabel': 'Desktop',
  'iosMascot.disconnect': 'Disconnetti',
  'iosMascot.error.generic': 'Qualcosa è andato storto. Per favore riprova.',
  'iosMascot.error.sendFailed': 'Impossibile inviare. Controlla la tua connessione.',
  'iosMascot.pushToTalk': 'Push-to-talk',
  'iosMascot.sendMessage': 'Invia messaggio',
  'iosMascot.thinking': 'In pensiero...',
  'iosMascot.typeMessage': 'Digita un messaggio...',
  'iosPair.connectedLoading': 'Connesso! Caricamento...',
  'iosPair.connecting': 'Connessione al desktop...',
  'iosPair.desktopLabel': 'Desktop',
  'iosPair.error.camera':
    'Scansione fotocamera fallita. Controlla i permessi della fotocamera e riprova.',
  'iosPair.error.connectionFailed':
    "Connessione fallita. Assicurati che l'app desktop sia in esecuzione e riprova.",
  'iosPair.error.invalidQr':
    'Codice QR non valido. Assicurati di scansionare un codice di abbinamento OpenHuman.',
  'iosPair.error.unreachableDesktop':
    'Impossibile raggiungere il desktop. Assicurati che entrambi i dispositivi siano online e riprova.',
  'iosPair.expired': 'QR code scaduto. Chiedi al desktop di rigenerare il codice.',
  'iosPair.instructions':
    'Apri OpenHuman sul desktop, vai in Impostazioni > Dispositivi e tocca "Associa telefono" per mostrare il codice QR.',
  'iosPair.retryScan': 'Riprova la scansione',
  'iosPair.scanQrCode': 'Scansione QR code',
  'iosPair.scannerOpening': 'Apertura scanner...',
  'iosPair.step.openDesktop': 'Apri OpenHuman sul desktop',
  'iosPair.step.openSettings': 'Vai a Impostazioni > Dispositivi',
  'iosPair.step.showQr': 'Tocca "Accoppia telefono" per visualizzare QR',
  'iosPair.title': 'Accoppia con il tuo desktop',
  'composio.connect.additionalConfigRequired': 'Configurazione aggiuntiva richiesta',
  'composio.connect.atlassianSubdomainHint': 'acme',
  'composio.connect.atlassianSubdomainLabel': 'Etichetta sottodominio Atlassian',
  'composio.connect.connect': 'Connetti',
  'composio.connect.connectedAccounts': 'Account collegati',
  'composio.connect.defaultLabel': 'Predefinito',
  'composio.connect.disconnectAccount': 'Rimuovi',
  'composio.connect.addAnotherAccount': 'Aggiungi un altro account',
  'composio.connect.dynamicsOrgNameHint':
    'Per esempio, "myorg" per myorg.crm.dynamics.com. Inserisci solo il nome breve dell\'organizzazione, non l\'URL completo.',
  'composio.connect.dynamicsOrgNameLabel': "Nome dell'organizzazione Dynamics 365",
  'composio.connect.connectionFailed': 'Connessione fallita (stato: {status}).',
  'composio.connect.disconnectFailed': 'Disconnessione fallita: {msg}',
  'composio.connect.disconnecting': 'Disconnessione…',
  'composio.connect.idleDescription': 'Connetti il tuo',
  'composio.connect.idleDescriptionSuffix':
    "account. Apriremo una finestra del browser, autorizzerai l'accesso lì, e l'app rileverà automaticamente la connessione.",
  'composio.connect.isConnected': 'è connesso.',
  'composio.connect.manage': 'Gestisci',
  'composio.connect.needsFieldsPrefix': 'Per connettere',
  'composio.connect.needsFieldsSuffix':
    'ci servono altre informazioni. Compila i campi mancanti qui sotto e riprova.',
  'composio.connect.needsSubdomain': 'Per connettere',
  'composio.connect.needsSubdomainSuffix':
    'inserisci il tuo sottodominio Atlassian (es. acme per acme.atlassian.net) e riprova.',
  'composio.connect.oauthComplete': 'OAuth da completare…',
  'composio.connect.oauthTimeout': 'Timeout OAuth',
  'composio.connect.permissions': 'Autorizzazioni',
  'composio.connect.permissionsDefault': 'Lettura + scrittura abilitate di default',
  'composio.connect.permissionsNote': 'può esporre',
  'composio.connect.permissionsNoteSuffix':
    "Le autorizzazioni proprie dell'agente OpenHuman sono controllate sotto come toggle di lettura, scrittura e admin.",
  'composio.connect.reopenBrowser': 'Riapri browser',
  'composio.connect.requestingUrl': 'Richiesta URL di connessione…',
  'composio.connect.requiredFieldEmpty': 'Questo campo è obbligatorio.',
  'composio.connect.retryConnection': 'Riprova connessione',
  'composio.connect.scopeLoadError': 'Impossibile caricare preferenze degli scope: {msg}',
  'composio.connect.scopeSaveError': 'Impossibile salvare lo scope {key}: {msg}',
  'composio.connect.scope.read': 'Lettura',
  'composio.connect.scope.readHint':
    "Consenti all'agente di leggere i dati da questo collegamento.",
  'composio.connect.scope.write': 'Scrivi',
  'composio.connect.scope.writeHint':
    "Consenti all'agente di creare o modificare i dati tramite questa connessione.",
  'composio.connect.scope.admin': 'Amministratore',
  'composio.connect.scope.adminHint':
    "Consenti all'agente di gestire impostazioni, autorizzazioni o azioni distruttive.",
  'composio.connect.subdomainInvalid':
    'Inserisci solo il sottodominio breve (es. "acme"), non l\'URL completo. Deve contenere solo lettere, numeri e trattini.',
  'composio.connect.subdomainRequired': 'Inserisci il tuo sottodominio Atlassian per continuare.',
  'composio.connect.wabaIdHint':
    'Trovalo tramite GET /me/businesses poi GET /{business_id}/owned_whatsapp_business_accounts usando il tuo token di accesso Meta.',
  'composio.connect.wabaIdLabel': 'Etichetta WABA ID',
  'composio.connect.atlassianSubdomainPlaceholder': 'your-subdomain',
  'composio.connect.dynamicsOrgNamePlaceholder': 'myorg',
  'composio.connect.wabaIdPlaceholder': 'e.g. 123456789012345',
  'composio.connect.wabaIdRequired':
    'Inserisci il tuo ID WhatsApp Business Account (WABA ID) per continuare.',
  'composio.connect.waitingFor': 'In attesa di',
  'composio.connect.waitingHint': 'Suggerimento di attesa',
  'composio.triggers.heading': 'Trigger',
  'composio.triggers.listenFrom': 'Ascolta eventi da',
  'composio.triggers.loadError': 'Impossibile caricare i trigger',
  'composio.triggers.sessionExpired':
    'La tua sessione OpenHuman è scaduta. Accedi di nuovo per caricare i trigger.',
  'composio.triggers.needsConfiguration': 'Richiede configurazione',
  'composio.triggers.noneAvailable': 'Nessun trigger attualmente disponibile per',
  'conversations.taskKanban.moveLeft': 'Sposta a sinistra',
  'conversations.taskKanban.moveRight': 'Sposta a destra',
  'conversations.taskKanban.title': 'Attività',
  'conversations.threadTodo.title': 'Piano',
  'conversations.planReview.title': 'Rivedi il piano',
  'conversations.planReview.subtitle':
    'Approva per eseguirlo, rifiuta per scartarlo o invia un feedback per rivederlo.',
  'conversations.planReview.approve': 'Approva ed esegui',
  'conversations.planReview.reject': 'Rifiuta',
  'conversations.planReview.feedbackLabel': 'Richiedi modifiche',
  'conversations.planReview.feedbackPlaceholder': 'Descrivi cosa cambiare…',
  'conversations.planReview.sendFeedback': 'Invia feedback',
  'conversations.threadGoal.label': 'Obiettivo',
  'conversations.threadGoal.setCta': 'Imposta obiettivo',
  'conversations.threadGoal.placeholder': 'Cosa deve realizzare questa conversazione?',
  'conversations.threadGoal.save': 'Salva',
  'conversations.threadGoal.cancel': 'Annulla',
  'conversations.threadGoal.edit': 'Modifica obiettivo',
  'conversations.threadGoal.clear': 'Cancella obiettivo',
  'conversations.threadGoal.complete': 'Segna come completato',
  'conversations.threadGoal.pause': 'Sospendi',
  'conversations.threadGoal.resume': 'Riprendi',
  'conversations.threadGoal.tokensSuffix': 'token',
  'conversations.threadGoal.status.active': 'Attivo',
  'conversations.threadGoal.status.paused': 'In pausa',
  'conversations.threadGoal.status.budget_limited': 'Budget raggiunto',
  'conversations.threadGoal.status.complete': 'Completato',
  'conversations.taskKanban.approval.default': 'Predefinito',
  'conversations.taskKanban.approval.notRequired': 'Non richiesto',
  'conversations.taskKanban.approval.notRequiredBadge': 'nessuna approvazione',
  'conversations.taskKanban.approval.required': 'Obbligatorio',
  'conversations.taskKanban.approval.requiredBadge': 'approvazione',
  'conversations.taskKanban.approval.requiredBeforeExecution': "Richiesto prima dell'esecuzione",
  'conversations.taskKanban.briefButton': 'Breve compito',
  'conversations.taskKanban.briefTitle': 'Breve compito',
  'conversations.taskKanban.closeBrief': 'Chiudi riepilogo attività',
  'conversations.taskKanban.field.acceptanceCriteria': 'Criteri di accettazione',
  'conversations.taskKanban.field.allowedTools': 'Strumenti consentiti',
  'conversations.taskKanban.field.approval': 'Approvazione',
  'conversations.taskKanban.field.assignedAgent': 'Agente assegnato',
  'conversations.taskKanban.field.blocker': 'Bloccatore',
  'conversations.taskKanban.field.evidence': 'Prova',
  'conversations.taskKanban.field.notes': 'Note',
  'conversations.taskKanban.field.objective': 'Obiettivo',
  'conversations.taskKanban.field.plan': 'Piano',
  'conversations.taskKanban.field.status': 'Stato',
  'conversations.taskKanban.field.title': 'Titolo',
  'conversations.taskKanban.saveChanges': 'Salva modifiche',
  'conversations.taskKanban.deleteCard': 'Elimina',
  'conversations.taskKanban.workTask': "Lavora sull'attività",
  'conversations.taskKanban.viewWork': 'Visualizza lavoro',
  'conversations.taskKanban.startingTask': 'Avvio…',
  'conversations.taskKanban.updateFailed':
    "Impossibile aggiornare l'attività; le modifiche non sono state salvate.",
  'conversations.taskKanban.sourcesButton': 'Fonti',
  'conversations.taskKanban.source.openExternal': 'Apri attività esterna',
  'conversations.taskKanban.source.openExternalShort': 'Apri',
  'conversations.taskKanban.source.unknownProvider': 'Fonte sconosciuta',
  'conversations.taskKanban.source.urgencyValue': 'Urgenza {percent}%',
  'conversations.taskKanban.sources.desktopOnly':
    'I controlli delle fonti attività sono disponibili nell’app desktop.',
  'conversations.taskKanban.sources.title': 'Fonti attività',
  'conversations.taskKanban.sources.statusEnabled': 'Polling automatico attivo',
  'conversations.taskKanban.sources.manage': 'Gestisci fonti',
  'conversations.taskKanban.source.title': 'Fonte',
  'conversations.taskKanban.source.sourceId': 'ID fonte',
  'conversations.taskKanban.source.externalId': 'ID esterno',
  'conversations.taskKanban.source.repo': 'Repository',
  'conversations.taskKanban.source.urgency': 'Urgenza',
  'conversations.toolTimeline.turn': 'turno',
  'conversations.toolTimeline.step': 'Passo',
  'conversations.toolTimeline.workerThread': 'thread worker',
  'conversations.subagent.viewProcessing': 'Visualizza elaborazione completa',
  'conversations.subagent.parent': 'Principale',
  'conversations.subagent.thinking': 'Ragionamento',
  'conversations.subagent.thoughts': 'Pensieri',
  'conversations.subagent.response': 'Risposta',
  'conversations.subagent.toolCalls': 'Chiamate agli strumenti',
  'conversations.subagent.working': 'In corso…',
  'conversations.subagent.noOutputYet': 'Ancora nessun output',
  'conversations.subagent.input': 'Input',
  'conversations.subagent.output': 'Output',
  'conversations.subagent.noOutput': 'Nessun output restituito',
  'conversations.subagent.close': 'Chiudi',
  'conversations.subagent.cancel': 'Annulla attività',
  'conversations.subagent.cancelling': 'Annullamento…',
  'conversations.subagent.cancelFailed': "Impossibile annullare l'attività. Riprova.",
  'conversations.subagent.statusRunning': 'in esecuzione',
  'conversations.subagent.statusCompleted': 'completato',
  'conversations.subagent.statusFailed': 'non riuscito',
  'conversations.subagent.statusAwaitingUser': "in attesa dell'utente",
  'conversations.subagent.statusCancelled': 'annullato',
  'conversations.agentTaskInsights.title': 'Approfondimenti attività agente',
  'conversations.agentTaskInsights.response': 'Risposta',
  'conversations.agentTaskInsights.processSourceTitle': "Origine del processo dell'agente",
  'conversations.agentTaskInsights.stepsHeading': 'Passaggi',
  'conversations.agentTaskInsights.sourcesHeading': 'Fonti',
  'conversations.agentTaskInsights.noSteps': 'Nessun passaggio registrato',
  'conversations.agentTaskInsights.viewProcessSource':
    "Visualizza l'origine completa del processo dell'agente",
  'conversations.agentTaskInsights.processing': 'Elaborazione',
  'conversations.agentTaskInsights.done': 'Completato',
  'conversations.agentTaskInsights.failed': 'Non riuscito',
  'conversations.agentTaskInsights.running': 'In corso',
  'conversations.agentTaskInsights.cancelled': 'Annullato',
  'conversations.agentTaskInsights.awaitingUser': 'In attesa di input',
  'conversations.agentTaskInsights.viewDetails': 'Vedi dettagli',
  'conversations.agentTaskInsights.subagentsHeading': 'Sotto-agenti',
  'daemon.serviceBlockingGate.body': 'Corpo',
  'daemon.serviceBlockingGate.downloadHint': 'Suggerimento di download',
  'daemon.serviceBlockingGate.downloadLatest': "Scarica l'ultima versione",
  'daemon.serviceBlockingGate.retryCore': 'Riprova core',
  'daemon.serviceBlockingGate.retryFailed':
    "Tentativo fallito. Scarica l'ultima build dell'app e riprova.",
  'daemon.serviceBlockingGate.retrying': 'Nuovo tentativo...',
  'daemon.serviceBlockingGate.title': 'Il core di OpenHuman non è disponibile',
  'home.banners.discordSubtitle': 'Sottotitolo Discord',
  'home.banners.discordTitle': 'Unisciti al nostro Discord',
  'home.banners.earlyBirdDismiss': 'Ignora banner early bird',
  'home.banners.earlyBirdFirstSub': 'primo abbonamento.',
  'home.banners.earlyBirdOn': 'Early bird attivo',
  'home.banners.earlyBirdTitle': 'I primi 1.000 utenti ottengono il 60% di sconto.',
  'home.banners.earlyBirdUseCode': 'Codice early bird',
  'home.banners.getSubscription': 'ottieni un abbonamento',
  'home.banners.promoCreditsBody': 'Hai {amount} di crediti promozionali. Puoi',
  'home.banners.promoCreditsUsage': 'Uso crediti promozionali',
  'intelligence.memoryChunk.detail.chunk': 'Pezzo',
  'intelligence.memoryChunk.detail.copyChunkId': 'Copia ID chunk',
  'intelligence.memoryChunk.detail.embeddingInfo': 'bge-m3 1024dim',
  'intelligence.memoryChunk.detail.noEmbedding': 'Nessun embedding',
  'intelligence.memoryChunk.letterhead.from': 'da',
  'intelligence.memoryChunk.letterhead.to': 'a',
  'intelligence.memoryChunk.mentioned.chunkOne': '1 pezzo',
  'intelligence.memoryChunk.mentioned.chunkOther': '{count} chunk',
  'intelligence.memoryChunk.mentioned.heading': 'm e n z i o n a t i',
  'intelligence.memoryChunk.scoreBars.ariaScore': 'punteggio {name} {pct} percento',
  'intelligence.memoryChunk.scoreBars.atThreshold': 'a {threshold}',
  'intelligence.memoryChunk.scoreBars.dropped': 'scartati',
  'intelligence.memoryChunk.scoreBars.heading': 'p e r c h é   t e n u t i',
  'intelligence.memoryChunk.scoreBars.kept': 'tenuti',
  'intelligence.diagram.title': "Diagramma dell'architettura",
  'intelligence.diagram.description':
    "Ultimo output dell'architettura locale dall'endpoint del diagramma configurato.",
  'intelligence.diagram.refresh': 'Refresh',
  'intelligence.diagram.refreshAria': 'Aggiorna diagramma',
  'intelligence.diagram.emptyTitle': 'Nessun diagramma disponibile',
  'intelligence.diagram.emptyDescription':
    "Genera un diagramma dell'architettura dall'orchestratore e questo pannello si aggiornerà dall'endpoint locale configurato.",
  'intelligence.diagram.skillInstallCommand': 'npx skills add yizhiyanhua-ai/fireworks-tech-graph',
  'intelligence.diagram.promptExample':
    "Genera un diagramma dell'architettura dello swarm attuale in stile terminale scuro",
  'intelligence.diagram.imageAlt': "Ultimo diagramma dell'architettura OpenHuman generato",
  'intelligence.diagram.refreshesEvery': 'Si aggiorna ogni {seconds}s',
  'intelligence.memoryText.entityTypePrefix': 'Tipo di entità',
  'intelligence.screenDebug.active': 'Attivo',
  'intelligence.screenDebug.app': 'App',
  'intelligence.screenDebug.bounds': 'Limiti',
  'intelligence.screenDebug.captureAlt': 'Risultato test di cattura',
  'intelligence.screenDebug.captureFailed': 'Fallito',
  'intelligence.screenDebug.captureSuccess': 'Successo',
  'intelligence.screenDebug.captureTest': 'Test di cattura',
  'intelligence.screenDebug.capturing': 'Cattura in corso',
  'intelligence.screenDebug.frames': 'Frame',
  'intelligence.screenDebug.idle': 'Inattivo',
  'intelligence.screenDebug.lastApp': 'Ultima app',
  'intelligence.screenDebug.mode': 'Modalità',
  'intelligence.screenDebug.permAccessibility': 'Permesso accessibilità',
  'intelligence.screenDebug.permInput': 'Permesso input',
  'intelligence.screenDebug.permScreen': 'Accessibilità',
  'intelligence.screenDebug.permissions': 'Permessi',
  'intelligence.screenDebug.platformNotSupported': 'Piattaforma non supportata',
  'intelligence.screenDebug.recentVisionSummaries': 'Riassunti vision recenti',
  'intelligence.screenDebug.session': 'Sessione',
  'intelligence.screenDebug.size': 'Dimensione',
  'intelligence.screenDebug.status': 'Stato',
  'intelligence.screenDebug.testCapture': 'Test cattura',
  'intelligence.screenDebug.time': 'Ora',
  'intelligence.screenDebug.title': 'Titolo',
  'intelligence.screenDebug.unknown': 'Sconosciuto',
  'intelligence.screenDebug.visionQueue': 'Coda vision',
  'intelligence.screenDebug.visionState': 'Stato vision',
  'intelligence.tasks.activeBoardOne': '1 board attiva tra le conversazioni',
  'intelligence.tasks.activeBoardOther': '{count} board attive tra le conversazioni',
  'intelligence.tasks.empty': "Nessuna board di attività dell'agente",
  'intelligence.tasks.emptyHint': 'Suggerimento vuoto',
  'intelligence.tasks.failedToLoad': 'Caricamento fallito',
  'intelligence.tasks.live': 'in tempo reale',
  'intelligence.tasks.loadingBoards': 'Caricamento board attività…',
  'intelligence.tasks.threadPrefix': 'Discussione {thread}',
  'intelligence.tasks.subtitle':
    'I tuoi compiti e le bacheche dei compiti degli agenti in tutto lo spazio di lavoro.',
  'intelligence.tasks.newTask': 'Nuovo compito',
  'intelligence.tasks.personalBoardTitle': "Compiti dell'agente",
  'intelligence.tasks.personalEmpty': 'Ancora nessun compito personale',
  'intelligence.tasks.composer.title': 'Nuovo compito',
  'intelligence.tasks.composer.titleLabel': 'Titolo',
  'intelligence.tasks.composer.titlePlaceholder': 'Cosa deve essere fatto?',
  'intelligence.tasks.composer.statusLabel': 'Stato',
  'intelligence.tasks.composer.attachLabel': 'Allega alla conversazione',
  'intelligence.tasks.composer.attachNone': 'Personale (nessuna conversazione)',
  'intelligence.tasks.composer.objectiveLabel': 'Obiettivo',
  'intelligence.tasks.composer.objectivePlaceholder': 'Facoltativo — il risultato desiderato',
  'intelligence.tasks.composer.notesLabel': 'Note',
  'intelligence.tasks.composer.notesPlaceholder': 'Note opzionali',
  'intelligence.tasks.composer.create': 'Crea attività',
  'intelligence.tasks.composer.creating': 'Creando…',
  'intelligence.tasks.composer.createFailed': 'Impossibile creare il task',
  'intelligence.tasks.composer.assignAgentLabel':
    'Lascia che un agente se ne occupi automaticamente',
  'intelligence.tasks.composer.assignAgentHint':
    'La bacheca delle attività la prende in carico e la esegue per te. Lascia disattivato per una semplice attività personale.',
  'intelligence.tasks.sourceList.subtitle':
    "Attività dalle fonti in attesa di diventare lavoro dell'agente.",
  'intelligence.tasks.sourceList.empty': 'Nessuna attività da fonti in attesa.',
  'intelligence.tasks.sourceList.queued': 'In coda',
  'intelligence.tasks.sourceList.workOnTask': 'Lavora sull’attività',
  'intelligence.tasks.sourcePlan.title': 'Perfeziona attività sorgente',
  'intelligence.tasks.sourcePlan.subtitle':
    "Rivedi la bozza di ricerca prima di creare un'attività agente.",
  'intelligence.tasks.sourcePlan.researchAgent': "Bozza dell'agente di ricerca",
  'intelligence.tasks.sourcePlan.approve': 'Approva piano',
  'intelligence.tasks.sourcePlan.creating': 'Creazione attività…',
  'intelligence.tasks.sourcePlan.createFailed': "Impossibile creare l'attività agente",
  'intelligence.tasks.workTaskFailed': "Impossibile avviare il lavoro sull'attività",
  'intelligence.workTask.sourceTaskHeading': 'Attività di origine:',
  'intelligence.workTask.repositoryLine': '- Repository (deposito): {repo}',
  'intelligence.workTask.externalIdLine': '- ID esterno: {externalId}',
  'intelligence.workTask.urlLine': '- Indirizzo: {url}',
  'intelligence.workTask.closingInstruction':
    'Inizia riformulando brevemente il piano di implementazione concreto, poi eseguilo. Mantieni i progressi visibili in questo thread e aggiorna la bacheca delle attività quando cambia lo stato del lavoro.',
  'intelligence.agentWork.subtitle':
    'Ogni esecuzione di agente in background, raggruppata per stato del ciclo di vita.',
  'intelligence.agentWork.loading': "Caricamento del lavoro dell'agente…",
  'intelligence.agentWork.failedToLoad': "Impossibile caricare il lavoro dell'agente",
  'intelligence.agentWork.empty': 'Ancora nessuna esecuzione di agente in background.',
  'intelligence.agentWork.bucket.needsInput': 'Richiede intervento',
  'intelligence.agentWork.bucket.working': 'In corso',
  'intelligence.agentWork.bucket.completed': 'Completato',
  'intelligence.agentWork.bucket.failed': 'Fallito',
  'intelligence.agentWork.bucket.stopped': 'Fermato',
  'intelligence.agentWork.column.agent': 'Agente',
  'intelligence.agentWork.column.status': 'Stato',
  'intelligence.agentWork.column.elapsed': 'Trascorso',
  'intelligence.agentWork.column.cost': 'Costo',
  'intelligence.agentWork.column.tokens': 'Gettoni',
  'intelligence.agentWork.status.pending': 'In sospeso',
  'intelligence.agentWork.status.running': 'In esecuzione',
  'intelligence.agentWork.status.awaitingUser': 'Richiede intervento',
  'intelligence.agentWork.status.paused': 'In pausa',
  'intelligence.agentWork.status.completed': 'Completato',
  'intelligence.agentWork.status.failed': 'Fallito',
  'intelligence.agentWork.status.cancelled': 'Annullato',
  'intelligence.agentWork.status.interrupted': 'Interrotto',
  'intelligence.agentWork.kind.subagent': 'Sottoagente',
  'intelligence.agentWork.kind.workerThread': 'Thread worker',
  'intelligence.agentWork.kind.backgroundAgent': 'Agente in background',
  'intelligence.agentWork.kind.teamMember': 'Membro del team',
  'intelligence.agentWork.kind.workflowChild': 'Figlio del flusso di lavoro',
  'intelligence.agentWork.openThread': 'Apri thread',
  'intelligence.agentWork.openWorker': 'Apri worker',
  'worktree.label': 'Worktree',
  'worktree.dirty': 'Modifiche non sottoposte a commit',
  'worktree.clean': 'Pulito',
  'worktree.changedFile': 'file modificato',
  'worktree.changedFiles': 'file modificati',
  'worktree.removing': 'Rimozione…',
  'worktree.removeFailed': 'Impossibile rimuovere il worktree',
  'worktree.diffFailed': 'Impossibile caricare il diff',
  'worktree.diffLoading': 'Caricamento del diff…',
  'worktree.diffEmpty': 'Nessuna modifica rispetto a HEAD.',
  'worktree.dirtyConfirm':
    'Questo worktree ha modifiche non sottoposte a commit. Rimuoverlo scarta quel lavoro. Il branch del worker viene mantenuto.',
  'worktree.action.open': 'Apri cartella',
  'worktree.action.diff': 'Diff',
  'worktree.action.hideDiff': 'Nascondi diff',
  'worktree.action.remove': 'Rimuovi',
  'worktree.action.removeAnyway': 'Scarta e rimuovi',
  'worktree.action.preserve': 'Conserva',
  'worktree.panel.subtitle': 'Worktree git isolati creati da worker di agenti paralleli.',
  'worktree.panel.loading': 'Caricamento dei worktree…',
  'worktree.panel.failedToLoad': 'Impossibile caricare i worktree',
  'worktree.panel.empty':
    'Nessun worktree isolato. I worker paralleli con isolamento tramite worktree appariranno qui.',
  'worktree.panel.overlapsTitle': 'Modifiche sovrapposte',
  'worktree.panel.overlapHint':
    'Questi file sono stati modificati da più di un worktree: riconcilia prima di unire.',
  'intelligence.agentWork.action.stop': 'Interrompi',
  'intelligence.agentWork.action.retry': 'Riprova',
  'intelligence.agentWork.action.continue': 'Continua',
  'intelligence.agentWork.action.followUp': 'Dai seguito',
  'intelligence.agentWork.action.send': 'Invia',
  'intelligence.agentWork.action.cancel': 'Annulla',
  'intelligence.agentWork.action.continuePlaceholder': 'Rispondi per sbloccare questo agente…',
  'intelligence.agentWork.action.followUpPlaceholder': 'Invia un’istruzione di follow-up…',
  'intelligence.agentWork.action.failed': 'Azione non riuscita',
  'intelligence.teams.subtitle': 'Team di agenti coordinati e le attività che condividono.',
  'intelligence.teams.loading': 'Caricamento dei team…',
  'intelligence.teams.failedToLoad': 'Impossibile caricare i team',
  'intelligence.teams.empty': 'Ancora nessun team di agenti',
  'intelligence.teams.emptyHint':
    'I team compaiono qui quando un agente genera sotto-agenti coordinati per condividere un obiettivo.',
  'intelligence.teams.refresh': 'Aggiorna',
  'intelligence.teams.backToList': 'Tutti i team',
  'intelligence.teams.status.active': 'Attivo',
  'intelligence.teams.status.closed': 'Chiuso',
  'intelligence.teams.header.lead': 'responsabile',
  'intelligence.teams.header.taskCount': '{count} attività',
  'intelligence.teams.header.memberCount': '{count} membri',
  'intelligence.teams.member.active': 'Attivo',
  'intelligence.teams.member.pending': 'In attesa',
  'intelligence.teams.member.idle': 'Inattivo',
  'intelligence.teams.member.stopped': 'Interrotto',
  'intelligence.teams.column.todo': 'Da fare',
  'intelligence.teams.column.ready': 'Pronto',
  'intelligence.teams.column.inProgress': 'In corso',
  'intelligence.teams.column.blocked': 'Bloccato',
  'intelligence.teams.column.done': 'Fatto',
  'intelligence.teams.emptyColumn': 'Vuoto',
  'intelligence.teams.unclaimed': 'Non assegnato',
  'intelligence.teams.pickedUpBy': 'Preso in carico da {name}',
  'intelligence.teams.depLockTitle': '{count} dipendenze non soddisfatte',
  'intelligence.teams.gate.pending': 'Controllo in attesa',
  'intelligence.teams.gate.passed': 'Controllo superato',
  'intelligence.teams.gate.failed': 'Controllo fallito',
  'intelligence.teams.gate.label': 'Controllo: {status}',
  'intelligence.teams.activity.title': 'Attività del team',
  'intelligence.teams.activity.empty': 'Nessun messaggio',
  'intelligence.teams.activity.toTeam': 'team',
  'intelligence.teams.member.start': 'Avvia',
  'intelligence.teams.composer.placeholder': 'Messaggio a un compagno…',
  'intelligence.teams.composer.send': 'Invia',
  'intelligence.teams.composer.recipient': 'Destinatario',
  'intelligence.teams.composer.toTeam': 'Tutto il team',
  'intelligence.teams.action.blocked': 'In attesa di dipendenze',
  'intelligence.teams.action.alreadyClaimed': 'Già presa da un altro compagno',
  'intelligence.teams.action.alreadyActive': 'Il compagno è già in esecuzione',
  'intelligence.teams.action.noClaimableTask': 'Nessuna attività pronta per questo compagno',
  'intelligence.teams.action.unknownTask': 'Attività non trovata',
  'intelligence.refine.objectiveDefault':
    "Trasforma l'attività di origine in un'attività dell'agente pronta per l'implementazione: {title}",
  'intelligence.refine.sourceLine': 'Origine: {url}',
  'intelligence.refine.sourceIntake': 'Origine: acquisizione delle fonti delle attività',
  'intelligence.refine.repositoryLine': 'Repository (deposito): {repo}',
  'intelligence.refine.externalTaskLine': 'Attività esterna: {externalId}',
  'intelligence.refine.planStep1':
    "Leggi l'attività di origine collegata e conferma il comportamento esatto richiesto.",
  'intelligence.refine.planStep2':
    'Esamina i percorsi di codice rilevanti e individua il confine di implementazione più piccolo.',
  'intelligence.refine.planStep3':
    "Implementa la modifica con test mirati sul comportamento visibile all'utente.",
  'intelligence.refine.planStep4':
    'Esegui una validazione mirata e annota eventuali rischi residui o lavoro di follow-up.',
  'intelligence.refine.acceptance1':
    "I requisiti dell'attività di origine sono rappresentati nell'implementazione finale.",
  'intelligence.refine.acceptance2':
    'I test unitari o di integrazione pertinenti coprono il comportamento modificato.',
  'intelligence.refine.acceptance3':
    'I risultati della validazione e gli eventuali rischi irrisolti vengono registrati al completamento.',
  'notifications.card.dismiss': 'Ignora notifica',
  'notifications.card.importanceTitle': 'Importanza: {pct}%',
  'notifications.center.empty': 'Nessuna notifica',
  'notifications.center.emptyHint': 'Suggerimento vuoto',
  'notifications.center.filterAll': 'Filtra tutte',
  'notifications.center.markAllRead': 'Segna tutte come lette',
  'notifications.center.title': 'Notifiche',
  'notifications.meeting.joinListen': 'Partecipa (solo ascolto)',
  'notifications.meeting.joinActive': 'Partecipa e rispondi',
  'notifications.meeting.skip': 'Non questa',
  'notifications.meeting.alwaysJoin': 'Partecipa sempre',
  'notifications.meeting.actionError': 'Impossibile completare questa azione. Riprova.',
  'oauth.button.connecting': 'Connessione...',
  'oauth.button.loopbackTimeout':
    'Accesso scaduto — il browser non ha completato il reindirizzamento OAuth. Riprova.',
  'oauth.login.continueWith': 'Continua con',
  'onboarding.contextGathering.buildingDesc': 'Descrizione costruzione',
  'onboarding.contextGathering.buildingProfile': 'Costruzione del tuo profilo...',
  'onboarding.contextGathering.continueToChat': 'Continua alla chat',
  'onboarding.contextGathering.coreAlive':
    'Il core è raggiungibile — il primo avvio può richiedere un minuto.',
  'onboarding.contextGathering.coreAliveProbing': 'Verifica della connessione al core…',
  'onboarding.contextGathering.coreUnreachable':
    'Il core non risponde. Puoi continuare e riprovare più tardi.',
  'onboarding.contextGathering.errorDesc':
    'Non siamo riusciti a costruire il tuo profilo completo ora, ma va bene — puoi continuare e il tuo profilo si svilupperà nel tempo.',
  'onboarding.contextGathering.stillWorkingDesc':
    'Il primo avvio può richiedere 30–60 secondi mentre prepariamo il tuo modello locale e gli strumenti. Puoi continuare la chat in qualsiasi momento — la costruzione del profilo continua in background.',
  'onboarding.contextGathering.stillWorkingTitle': 'Stiamo ancora preparando il tuo profilo…',
  'onboarding.contextGathering.title': 'Raccolta del contesto',
  'openhuman.team_list_teams': 'Elenco team',
  'overlay.ariaAttention': 'Messaggio di attenzione',
  'overlay.ariaCompanion': 'Companion attivo',
  'overlay.ariaOrb': 'Overlay OpenHuman',
  'overlay.ariaVoiceActive': 'Input vocale attivo',
  'overlay.companion.error': 'Errore',
  'overlay.companion.listening': 'In ascolto…',
  'overlay.companion.pointing': 'Sta puntando…',
  'overlay.companion.speaking': 'Sta parlando…',
  'overlay.companion.thinking': 'Sta pensando…',
  'overlay.orbTitle': 'Trascina per spostare · Doppio clic per ripristinare la posizione',
  'pages.settings.account.connections': 'Connessioni',
  'pages.settings.account.connectionsDesc': 'Descrizione connessioni',
  'pages.settings.account.migration': 'Importa da un altro assistente',
  'pages.settings.account.migrationDesc':
    'Migra memoria e note da OpenClaw (e presto Hermes) in questo spazio di lavoro.',
  'pages.settings.account.privacy': 'Privacy',
  'pages.settings.account.privacyDesc': 'Descrizione privacy',
  'pages.settings.account.recoveryPhrase': 'Frase di recupero',
  'pages.settings.account.recoveryPhraseDesc': 'Descrizione frase di recupero',
  'pages.settings.account.team': 'Team',
  'pages.settings.account.teamDesc': 'Descrizione team',
  'pages.settings.accountSection.description':
    'Frase di recupero, team, connessioni e impostazioni privacy.',
  'pages.settings.accountSection.title': 'Account',
  'pages.settings.ai.llm': 'LLM',
  'pages.settings.ai.llmDesc': 'Descrizione LLM',
  'pages.settings.ai.voice': 'Voce',
  'pages.settings.ai.voiceDesc': 'Descrizione voce',
  'pages.settings.aiSection.description':
    'Provider di modelli linguistici, Ollama locale e voce (STT / TTS).',
  'pages.settings.aiSection.title': 'AI',
  'settings.developerMenu.composio.title': 'Composio',
  'settings.developerMenu.composio.desc':
    'Modalità di routing, trigger di integrazione e archivio cronologico dei trigger.',
  'pages.settings.features.desktopCompanion': 'Companion Desktop',
  'pages.settings.features.desktopCompanionDesc':
    'Assistente vocale con consapevolezza dello schermo — ascolta, vede, parla, indica',
  'pages.settings.features.messagingChannels': 'Canali di messaggistica',
  'pages.settings.features.messagingChannelsDesc': 'Descrizione canali di messaggistica',
  'pages.settings.features.notifications': 'Notifiche',
  'pages.settings.features.notificationsDesc': 'Descrizione notifiche',
  'pages.settings.features.screenAwareness': 'Consapevolezza schermo',
  'pages.settings.features.screenAwarenessDesc': 'Descrizione consapevolezza schermo',
  'pages.settings.features.tools': 'Strumenti',
  'pages.settings.features.toolsDesc': 'Descrizione strumenti',
  'pages.settings.featuresSection.description':
    'Consapevolezza schermo, messaggistica e strumenti.',
  'pages.settings.featuresSection.title': 'Funzionalità',
  'privacy.dataKind.credentials': 'Credenziali',
  'privacy.dataKind.derived': 'Derivati',
  'privacy.dataKind.diagnostics': 'Diagnostica',
  'privacy.dataKind.metadata': 'Metadati',
  'privacy.dataKind.raw': 'Grezzi',
  'privacy.whatLeaves.link.label': 'Cosa esce dal mio computer?',
  'rewards.community.achievementsUnlocked': '{unlocked} di {total} obiettivi sbloccati',
  'rewards.community.connectDiscord': 'Connetti Discord',
  'rewards.community.connectDiscordError': 'Impossibile avviare la connessione a Discord. Riprova.',
  'rewards.community.connectingDiscord': 'Connessione…',
  'rewards.community.cumulativeTokens': 'Token cumulativi',
  'rewards.community.currentStreak': 'Streak attuale',
  'rewards.community.disconnectDiscord': 'Disconnetti',
  'rewards.community.disconnectDiscordError': 'Impossibile disconnettere Discord. Riprova.',
  'rewards.community.disconnectingDiscord': 'Disconnessione…',
  'rewards.community.discordAccount': 'Account Discord',
  'rewards.community.discordConnected': 'Discord connesso',
  'rewards.community.discordConnectedAs': 'Connesso come {username}',
  'rewards.community.discordLinkedNotInGuild': 'Discord collegato ma non nella gilda',
  'rewards.community.discordMember': 'Sei entrato nel server',
  'rewards.community.discordNotLinked': 'Discord non collegato',
  'rewards.community.discordServer': 'Server Discord',
  'rewards.community.discordStatusUnavailable': 'Stato Discord non disponibile',
  'rewards.community.discordWaiting': 'Attesa Discord',
  'rewards.community.heroSubtitle': 'Sottotitolo hero',
  'rewards.community.heroTitle': 'Titolo hero',
  'rewards.community.joinDiscord': 'Unisciti a Discord',
  'rewards.community.loadingRewards': 'Caricamento premi…',
  'rewards.community.locked': 'Bloccato',
  'rewards.community.retrying': 'Nuovo tentativo…',
  'rewards.community.roleAssigned': 'Ruolo assegnato',
  'rewards.community.roleAssignmentCount': '{assigned} di {unlocked} ruoli assegnati',
  'rewards.community.roleClaimDesc':
    'Hai sbloccato i ruoli Discord ma non ti sei ancora unito al server OpenHuman. Unisciti per assegnarli automaticamente.',
  'rewards.community.roleClaimTitle': 'Riscatta i tuoi ruoli Discord',
  'rewards.community.roleJoinToClaim': 'Unisciti al server per riscattare',
  'rewards.community.rolePending': 'Sincronizzazione ruolo…',
  'rewards.community.rolesAndRewards': 'Ruoli e premi',
  'rewards.community.streakDays': '{n}',
  'rewards.community.syncPending': 'Sincronizzazione premi in attesa',
  'rewards.community.syncPendingDesc': 'Descrizione sincronizzazione in attesa',
  'rewards.community.syncUnavailable': 'Sincronizzazione non disponibile',
  'rewards.community.tryAgain': 'Nuovo tentativo…',
  'rewards.community.unknown': 'Sconosciuto',
  'rewards.community.unlocked': 'Sbloccato',
  'rewards.community.yourProgress': 'Il tuo progresso',
  'rewards.coupon.colCode': 'Codice',
  'rewards.coupon.colRedeemed': 'Riscattato',
  'rewards.coupon.colReward': 'Premio',
  'rewards.coupon.colStatus': 'Stato',
  'rewards.coupon.loadingHistory': 'Caricamento cronologia premi…',
  'rewards.coupon.noCodes': 'Nessun codice premio riscattato.',
  'rewards.coupon.pending': 'In attesa',
  'rewards.coupon.placeholder': 'Codice coupon',
  'rewards.coupon.promoCredits': 'Crediti promozionali',
  'rewards.coupon.recentRedemptions': 'Riscatti recenti',
  'rewards.coupon.redeemAccepted':
    "{code} accettato. {amount} verrà sbloccato dopo il completamento dell'azione richiesta.",
  'rewards.coupon.redeemButton': 'Riscatta codice',
  'rewards.coupon.redeemSuccess': '{code} riscattato. {amount} è stato aggiunto ai tuoi crediti.',
  'rewards.coupon.redeemedCodes': 'Codici riscattati',
  'rewards.coupon.redeeming': 'Riscatto in corso...',
  'rewards.coupon.statusApplied': 'Applicato',
  'rewards.coupon.statusPendingAction': 'Azione in attesa',
  'rewards.coupon.statusRedeemed': 'Riscattato',
  'rewards.coupon.subtitle': 'Sottotitolo',
  'rewards.coupon.title': 'Riscatta un codice coupon',
  'rewards.referralSection.activity': 'Attività referral',
  'rewards.referralSection.apply': 'Applicazione…',
  'rewards.referralSection.applying': 'Applicazione…',
  'rewards.referralSection.colReferredUser': 'Utente referenziato',
  'rewards.referralSection.colReward': 'Premio',
  'rewards.referralSection.colStatus': 'Stato',
  'rewards.referralSection.colUpdated': 'Aggiornato',
  'rewards.referralSection.completed': 'Completato',
  'rewards.referralSection.copyCode': 'Copia codice',
  'rewards.referralSection.copyFailed': 'Copia fallita',
  'rewards.referralSection.haveCode': 'Hai un codice referral?',
  'rewards.referralSection.haveCodeDesc': 'Descrizione codice',
  'rewards.referralSection.linked': 'Collegato',
  'rewards.referralSection.linkedCode': '(codice {code})',
  'rewards.referralSection.loading': 'Caricamento programma referral…',
  'rewards.referralSection.retry': 'Riprova',
  'rewards.referralSection.noReferrals': 'Nessun referral',
  'rewards.referralSection.pendingReferrals': 'Referral in attesa',
  'rewards.referralSection.placeholder': 'Codice referral',
  'rewards.referralSection.share': 'Condividi',
  'rewards.referralSection.statusCompleted': 'Stato completato',
  'rewards.referralSection.statusExpired': 'Stato scaduto',
  'rewards.referralSection.statusJoined': 'Stato iscritto',
  'rewards.referralSection.subtitle': 'Sottotitolo',
  'rewards.referralSection.title': 'Invita amici, guadagna crediti',
  'rewards.referralSection.totalEarned': 'Totale guadagnato',
  'rewards.referralSection.yourCode': 'Il tuo codice',
  'settings.ai.addCloudProvider': 'Aggiungi provider cloud',
  'settings.ai.addProvider': 'Salvataggio…',
  'settings.ai.apiKeyFieldLabel': 'Etichetta campo chiave API',
  'settings.ai.apiKeyRequired': 'Incolla la tua chiave API per continuare.',
  'settings.ai.apiKeyStoredEncrypted': 'Chiave API memorizzata crittografata',
  'settings.ai.apiKeysEncrypted': 'auth-profiles.json',
  'settings.ai.clearStoredKey': 'Cancella chiave memorizzata',
  'settings.ai.connectProvider': 'Connetti provider',
  'settings.ai.customRouting': 'Instradamento personalizzato',
  'settings.ai.defaultResolvesTo': 'Il valore predefinito si risolve in',
  'settings.ai.discard': 'Scarta',
  'settings.ai.editProvider': 'Modifica provider',
  'settings.ai.llmProviders': 'Provider LLM',
  'settings.ai.llmProvidersDesc': 'Descrizione provider LLM',
  'settings.ai.localOllama': 'Locale (Ollama)',
  'settings.ai.modelLabel': 'Modello',
  'settings.ai.noCustomProviders': 'Nessun provider personalizzato',
  'settings.ai.openAiCompat.authHeaderExample': 'Authorization: Bearer <la tua chiave>',
  'settings.ai.openAiCompat.authHeaderLabel': 'Intestazione autenticazione',
  'settings.ai.openAiCompat.baseUrlLabel': 'URL base',
  'settings.ai.openAiCompat.baseUrlUnavailable': 'Non disponibile',
  'settings.ai.openAiCompat.clearKey': 'Cancella chiave',
  'settings.ai.openAiCompat.description':
    "Indirizza gli harness locali a questo server /v1 per instradare tramite i provider configurati qui sotto. L'autenticazione utilizza una chiave stabile che imposti qui, non il bearer interno del core dell'app.",
  'settings.ai.openAiCompat.keyConfigured': 'Chiave configurata',
  'settings.ai.openAiCompat.keyRequired': 'Chiave richiesta',
  'settings.ai.openAiCompat.rotateKey': 'Ruota chiave',
  'settings.ai.openAiCompat.setKey': 'Imposta chiave',
  'settings.ai.openAiCompat.title': 'Endpoint compatibile con OpenAI',
  'settings.ai.providerLabel': 'Fornitore',
  'skills.mcpComingSoon.title': 'MCP Server',
  'skills.mcpComingSoon.description':
    'La gestione dei server MCP è in arrivo. Questa scheda sarà il punto di riferimento per scoprire, connettere e monitorare le integrazioni con i server MCP.',
  'settings.ai.routing': 'Instradamento',
  'settings.ai.claudeCode.button': 'Claude Code',
  'settings.ai.claudeCode.inlineNotConnected':
    'Non connesso — instrada la chat tramite la tua Claude Code CLI locale.',
  'settings.ai.claudeCode.checkingSignIn': "Verifica dell'accesso…",
  'settings.ai.claudeCode.inlineConnected': 'Connesso.',
  'settings.ai.claudeCode.signedInAs': 'Accesso effettuato come',
  'settings.ai.claudeCode.subscriptionFallback': 'Abbonamento Claude',
  'settings.ai.claudeCode.usingApiKeyEnv': 'Usa ANTHROPIC_API_KEY',
  'settings.ai.claudeCode.cliNotInstalled': 'CLI non installata',
  'settings.ai.claudeCode.signInUnknown': 'Stato di accesso sconosciuto',
  'settings.ai.claudeCode.connectedNotSignedIn': 'Connesso · accesso non effettuato',
  'settings.ai.claudeCode.modalTitle': 'Claude Code CLI',
  'settings.ai.claudeCode.modalDescription':
    'Instrada i carichi di chat, agentici e di ragionamento tramite la tua Claude Code CLI installata localmente. Nessuna chiave API — usa il login della CLI stessa.',
  'settings.ai.claudeCode.close': 'Chiudi',
  'settings.ai.claudeCode.connection': 'Connessione',
  'settings.ai.claudeCode.enabled': 'Abilitato',
  'settings.ai.claudeCode.notEnabled': 'Non abilitato',
  'settings.ai.claudeCode.disconnect': 'Disconnetti',
  'settings.ai.claudeCode.disconnecting': 'Disconnessione…',
  'settings.ai.claudeCode.enable': 'Abilita Claude Code',
  'settings.ai.claudeCode.enabling': 'Abilitazione…',
  'settings.ai.claudeCode.authentication': 'Autenticazione',
  'settings.ai.claudeCode.recheck': 'Ricontrolla',
  'settings.ai.claudeCode.checking': 'Verifica…',
  'settings.ai.claudeCode.openingTerminal': 'Apertura del terminale…',
  'settings.ai.claudeCode.signIn': 'Accedi con Claude',
  'settings.ai.claudeCode.reconnect': 'Riconnetti',
  'settings.ai.claudeCode.loginHint':
    'Apre un terminale che esegue claude login. Al termine, fai clic su Ricontrolla.',
  'settings.ai.claudeCode.loginError': 'Impossibile aprire il terminale di accesso. Riprova.',
  'settings.ai.claudeCode.fullAccess': 'Accesso completo',
  'settings.ai.claudeCode.fullAccessOn':
    'Claude Code può eseguire comandi, usare la rete e generare subagenti.',
  'settings.ai.claudeCode.fullAccessOff':
    'Accetta solo le modifiche — applica automaticamente le modifiche ai file, limita comandi e rete.',
  'settings.ai.claudeCode.sandboxNoteMac':
    'Su macOS, ~/.openhuman rimane protetto dalla sandbox in entrambe le modalità.',
  'settings.ai.claudeCode.sandboxNoteOther':
    "L'accesso completo non è confinato su questa piattaforma — abilitalo solo se ti fidi dello spazio di lavoro.",
  'settings.ai.claudeCode.enableToCheck': "Abilita Claude Code per verificare l'accesso.",
  'settings.ai.claudeCode.usingApiKeyEnvDetail': "Usa ANTHROPIC_API_KEY dall'ambiente.",
  'settings.ai.claudeCode.notFoundInstall':
    'Claude Code CLI non trovata — installa con: npm install -g @anthropic-ai/claude-code',
  'settings.ai.claudeCode.unknownDetail':
    'Impossibile determinare lo stato di accesso. La tua claude CLI potrebbe essere precedente allo stato di autenticazione — prova Riconnetti, poi Ricontrolla.',
  'settings.ai.claudeCode.notSignedIn': 'Accesso non effettuato.',
  'settings.ai.routingCustom': 'Instradamento personalizzato',
  'settings.ai.routingDefault': 'Predefinito',
  'settings.ai.routingDesc': 'Descrizione instradamento',
  'settings.ai.saveChanges': 'Salvataggio…',
  'settings.ai.saving': 'Salvataggio…',
  'settings.ai.unsavedChange': 'modifica non salvata',
  'settings.ai.unsavedChanges': 'modifiche non salvate',
  'settings.ai.workloadGroupBackground': 'Gruppo carico di lavoro background',
  'settings.ai.workloadGroupChat': 'Gruppo carico di lavoro chat',
  'settings.ai.disconnectProvider': 'Disconnetti {label}',
  'settings.ai.connectProviderLabel': 'Connetti {label}',
  'settings.ai.editProviderEndpoint': 'Modifica punto finale di {label}',
  'settings.ai.defaultLocalEndpoint': 'http://localhost:11434/v1',
  'settings.ai.editEndpoint': "Modifica l'endpoint",
  'settings.ai.endpointUrlLabel': "URL dell'endpoint",
  'settings.ai.localRuntimeHelper':
    "Dove {label} è raggiungibile. Il valore predefinito è localhost; punta questo a un host remoto (per esempio, http://10.0.0.4:11434/v1) per utilizzare un'istanza condivisa.",
  'settings.ai.endpointUrlRequired': "È richiesto l'endpoint URL.",
  'settings.ai.endpointProtocolRequired': "L'endpoint deve iniziare con http:// o https://.",
  'settings.ai.connectProviderDialog': 'Connetti {label}',
  'settings.ai.getProviderApiKey': 'Ottieni API Key',
  'settings.ai.or': 'Oppure',
  'settings.ai.codexOauthMissingAuthUrl':
    'Codex OAuth non ha restituito un URL di autorizzazione. Prova ad accedere di nuovo.',
  'settings.ai.codexOauthMissingCallbackUrl':
    "Incolla l'URL di reindirizzamento dal tuo browser dopo aver effettuato l'accesso.",
  'settings.ai.openRouterOauthDescription':
    "Accedi con OpenRouter e importa una chiave API controllata dall'utente usando PKCE.",
  'settings.ai.connecting': 'Connessione in corso...',
  'settings.ai.backgroundLoops': 'Loop in background',
  'settings.ai.backgroundLoopsDesc':
    'Vedi cosa funziona senza un messaggio di chat, metti in pausa il lavoro del battito cardiaco e ispeziona le righe recenti del libro mastro dei crediti.',
  'settings.ai.heartbeatControls': 'Controlli del battito cardiaco',
  'settings.ai.heartbeatControlsDesc':
    "Predefinito spento. L'attivazione avvia il ciclo; la disattivazione interrompe il compito in corso.",
  'settings.ai.heartbeatLoop': 'Ciclo del battito cardiaco',
  'settings.ai.heartbeatLoopDesc':
    'Programmatore principale per pianificatore + inferenza subconscia opzionale.',
  'settings.ai.subconsciousInference': 'Inferenza subconscia',
  'settings.ai.subconsciousInferenceDesc':
    'Esegue la valutazione task/reflection supportata dal modello sui tic del battito cardiaco.',
  'settings.ai.calendarMeetingChecks': 'Controlli delle riunioni del calendario',
  'settings.ai.calendarMeetingChecksDesc':
    "Chiama l'elenco degli eventi del calendario per le connessioni del calendario Google attive.",
  'settings.ai.calendarCap': 'Limite calendario',
  'settings.ai.connectionsPerTick': '{count} conn/tick',
  'settings.ai.meetingLookahead': 'Previsione riunione',
  'settings.ai.minutesShort': '{count} min',
  'settings.ai.reminderLookahead': 'Previsione promemoria',
  'settings.ai.cronReminderChecks': 'Controlli del promemoria cron',
  'settings.ai.cronReminderChecksDesc':
    'Scansiona i cron job abilitati per elementi imminenti simili a promemoria.',
  'settings.ai.relevantNotificationChecks': 'Controlli delle notifiche pertinenti',
  'settings.ai.relevantNotificationChecksDesc':
    'Promuove le notifiche locali urgenti in avvisi proattivi.',
  'settings.ai.externalDelivery': 'Consegna esterna',
  'settings.ai.externalDeliveryDesc':
    'Lasciamo che gli avvisi del battito cardiaco inviino messaggi proattivi a canali esterni.',
  'settings.ai.interval': 'Intervallo',
  'settings.ai.running': 'In esecuzione...',
  'settings.ai.plannerTickNow': 'Pianificatore seleziona ora',
  'settings.ai.loadingHeartbeatControls': 'Caricamento controlli heartbeat...',
  'settings.ai.heartbeatControlsUnavailable': 'Controlli heartbeat non disponibili.',
  'settings.ai.loopMap': 'Mappa del ciclo',
  'settings.ai.plannerSummary':
    'Pianificatore: {sourceEvents} eventi origine, {sent} inviati, {deduped} deduplicato.',
  'settings.ai.routeLabel': 'percorso: {route}',
  'settings.ai.on': 'acceso',
  'settings.ai.off': 'disattivato',
  'settings.ai.recentUsageLedger': 'Registro utilizzo recente',
  'settings.ai.recentUsageLedgerDesc':
    'Le righe del backend espongono action/time oggi; i tag sorgente necessitano del supporto del backend.',
  'settings.ai.latestSpend': 'Ultima spesa: {amount} alle {time} ({action})',
  'settings.ai.topActions': 'Azioni principali',
  'settings.ai.noSpendRows': 'Nessuna riga di spesa caricata.',
  'settings.ai.topHours': 'Ore principali',
  'settings.ai.noHourlySpend': 'Ancora nessuna spesa oraria.',
  'settings.ai.openhumanDefault': 'OpenHuman (predefinito)',
  'settings.ai.localModelResolved': 'Ollama · {model}',
  'settings.ai.customRoutingForWorkload': 'Routing personalizzato per {label}',
  'settings.ai.loadingModels': 'Caricamento modelli...',
  'settings.ai.enterModelIdManually': "oppure inserisci manualmente l'ID del modello:",
  'settings.ai.modelIdPlaceholderForProvider': '{slug} ID modello',
  'settings.ai.modelIdPlaceholder': 'model-id',
  'settings.ai.selectModel': 'Seleziona un modello...',
  'settings.ai.temperatureOverride': 'Ignora temperatura',
  'settings.ai.temperatureOverrideSlider': 'Ignora temperatura (cursore)',
  'settings.ai.temperatureOverrideValue': 'Ignora temperatura (valore)',
  'settings.ai.temperatureOverrideDesc':
    'Più basso = più deterministico. Lascia deselezionato per usare il valore predefinito del provider.',
  'settings.ai.modelVision': 'Supporta la visione (input immagini)',
  'settings.ai.modelVisionDesc':
    'Attiva se questo modello accetta immagini. Consente di allegare immagini nella chat quando è selezionato questo modello.',
  'settings.ai.testFailed': 'Test non riuscito',
  'settings.ai.testingModel': 'Test del modello...',
  'settings.ai.modelResponse': 'Risposta del modello',
  'settings.ai.providerWithValue': 'Fornitore: {value}',
  'settings.ai.noneDash': '—',
  'settings.ai.promptHelloWorld': 'Prompt: Ciao mondo',
  'settings.ai.startedAt': 'Avviato: {value}',
  'settings.ai.waitingForModelResponse': 'In attesa di risposta dal modello selezionato...',
  'settings.ai.response': 'Risposta',
  'settings.ai.testing': 'Test...',
  'settings.ai.test': 'Test',
  'settings.ai.slugMissingError': 'Immettere il nome di un provider per generare uno slug.',
  'settings.ai.slugInUseError': 'Il nome del provider è già in uso.',
  'settings.ai.slugReservedError': 'Scegli un nome provider diverso.',
  'settings.ai.providerNamePlaceholder': 'Il mio provider',
  'settings.ai.slugLabel': 'Lumaca:',
  'settings.ai.openAiUrlLabel': 'URL OpenAI',
  'settings.ai.openAiUrlPlaceholder': 'https://api.openai.com/v1',
  'settings.ai.keepExistingKeyPlaceholder': 'Lascia vuoto per mantenere la chiave esistente',
  'settings.ai.reindexingMemory': 'Reindicizzazione della memoria',
  'settings.ai.reindexingMemoryMessage':
    "Gli embeddings stanno venendo rielaborati. L'elemento di memoria {pending} viene ri-embedded sotto il modello attuale — il richiamo semantico è ridotto fino al completamento di questa operazione. La ricerca per parole chiave continua a funzionare e il ri-embedding continua in background se chiudi questo.",
  'settings.ai.signInWithOpenRouter': 'Accedi con OpenRouter',
  'settings.ai.weekBudget': 'Budget settimanale',
  'settings.ai.cycleRemaining': 'Ciclo rimanente',
  'settings.ai.cycleTotalSpend': 'Ciclo di spesa totale',
  'settings.ai.avgSpendRow': 'Riga di spesa media',
  'settings.ai.backgroundApiReads': 'Bg API letture',
  'settings.ai.backgroundWakeups': 'Risvegli Bg',
  'settings.ai.budgetMath': 'Matematica del budget',
  'settings.ai.rowsLeft': 'Righe rimaste',
  'settings.ai.rowsPerFullWeekBudget': 'Righe per budget settimanale intero',
  'settings.ai.sampleBurnRate': 'Velocità di combustione del campione',
  'settings.ai.projectedEmpty': 'Vuoto previsto',
  'settings.ai.apiReadsPerDollarRemaining': 'API letture per $ rimanenti',
  'settings.ai.loopCallBudget': 'Budget delle chiamate in loop',
  'settings.ai.heartbeatTicks': 'Tick del battito cardiaco',
  'settings.ai.calendarPlannerCalls': 'Chiamate del pianificatore del calendario',
  'settings.ai.calendarFanoutCap': 'Limite fanout del calendario',
  'settings.ai.subconsciousModelCalls': 'Chiamate del modello subconscio',
  'settings.ai.composioSyncScans': 'Composio scansioni di sincronizzazione',
  'settings.ai.totalBackgroundApiReadBudget': 'Totale bg API budget letto',
  'settings.ai.memoryWorkerPolls': 'Sondaggi del Memory Worker',
  'settings.ai.defaultProviderName': 'OpenHuman',
  'settings.ai.routing.managed': 'Gestiti',
  'settings.ai.routing.managedAlwaysOn': 'Always on',
  'settings.ai.routing.managedHint':
    'Managed is always available as a fallback. To use your own model, choose a routing mode below.',
  'settings.ai.routing.managedDesc':
    'OpenHuman eseguirà tutte le inferenze nel cloud, sceglierà il miglior modello per il compito, ottimizzerà i costi e manterrà le impostazioni di routing più sicure.',
  'settings.ai.routing.managedMsg':
    'OpenHuman gestirà tutte le inferenze per ogni carico di lavoro e sceglierà automaticamente il percorso migliore in termini di costo, qualità e sicurezza.',
  'settings.ai.routing.useYourOwn': 'Utilizza i tuoi modelli',
  'settings.ai.routing.useYourOwnDesc':
    'Scegli un fornitore + modello e instrada ogni carico di lavoro attraverso di esso. Questo è semplice, ma può essere inefficiente perché tutte le inferenze leggere e pesanti condividono lo stesso percorso.',
  'settings.ai.routing.advanced': 'Avanzato',
  'settings.ai.routing.advancedDesc':
    "Scegli modelli diversi per compiti diversi. Questa è l'opzione migliore per un'ottimizzazione dei costi stretta e per avere il massimo controllo.",
  'settings.ai.routing.customDesc':
    'Il routing dettagliato ti offre la migliore ottimizzazione dei costi e il massimo controllo. Usa le righe qui sotto per decidere quali carichi di lavoro rimangono gestiti, quali utilizzano il tuo predefinito condiviso e quali vengono assegnati a un modello specifico.',
  'settings.ai.routing.chatAndConversations': 'Chat e conversazioni',
  'settings.ai.routing.chatDesc':
    "Modelli utilizzati durante l'interazione diretta con l'utente, risposte, ragionamento, cicli dell'agente e assistenza alla codifica.",
  'settings.ai.routing.backgroundTasks': 'Attività in background',
  'settings.ai.routing.bgTasksDesc':
    'Modelli utilizzati al di fuori del flusso principale della conversazione per sintesi, battito, apprendimento e valutazione subconscia.',
  'settings.ai.routing.workload.chat.label': 'Chat',
  'settings.ai.routing.workload.chat.description':
    'Direct conversational back-and-forth — “Quick” mode in Conversations',
  'settings.ai.routing.workload.chat.hint':
    'Recommended: a cheap or mid-cost fast chat model with high tokens/sec and low latency. Open-source local models can work well here if they feel responsive.',
  'settings.ai.routing.workload.reasoning.label': 'Reasoning',
  'settings.ai.routing.workload.reasoning.description':
    'Main chat agent, meeting summarizer — “Reasoning” mode in Conversations',
  'settings.ai.routing.workload.reasoning.hint':
    'Recommended: a more expensive frontier or strong reasoning model for deep thinking. This is used for the main chat agent, meeting summaries, and heavier answer synthesis.',
  'settings.ai.routing.workload.agentic.label': 'Agentic',
  'settings.ai.routing.workload.agentic.description':
    'Sub-agent runners, tool loops, GIF decisions',
  'settings.ai.routing.workload.agentic.hint':
    'Recommended: a reliable instruction-following model with strong tool use. Mid-cost frontier models are usually safest; capable open-source models can work if tool calling is stable.',
  'settings.ai.routing.workload.coding.label': 'Coding',
  'settings.ai.routing.workload.coding.description': 'Code generation and refactor passes',
  'settings.ai.routing.workload.coding.hint':
    'Recommended: a coding-tuned model with strong instruction following, edit quality, and long-context performance. This is usually worth spending more on.',
  'settings.ai.routing.workload.vision.label': 'Vision',
  'settings.ai.routing.workload.vision.description':
    'Image understanding for the vision sub-agent — always multimodal',
  'settings.ai.routing.workload.vision.hint':
    'Recommended: a multimodal model that accepts image input. The managed default (vision-v1) is image-capable; any provider you route here is always treated as vision-enabled.',
  'settings.ai.routing.workload.memory.label': 'Memory summarization',
  'settings.ai.routing.workload.memory.description': 'Tree-extracts and consolidations',
  'settings.ai.routing.workload.memory.hint':
    'Recommended: a cheaper summarization model. It should be consistent and compact, but it does not need premium frontier-level reasoning.',
  'settings.ai.routing.workload.heartbeat.label': 'Heartbeat',
  'settings.ai.routing.workload.heartbeat.description': 'Background reasoning between user turns',
  'settings.ai.routing.workload.heartbeat.hint':
    'Recommended: a cheap, efficient background model. This runs often between turns, so low cost matters more than maximum intelligence.',
  'settings.ai.routing.workload.learning.label': 'Learning · Reflections',
  'settings.ai.routing.workload.learning.description': 'Periodic reflection over recent history',
  'settings.ai.routing.workload.learning.hint':
    'Recommended: a stronger reflective model. This can be mid-cost or premium because it benefits from better synthesis over recent history.',
  'settings.ai.routing.workload.subconscious.label': 'Subconscious',
  'settings.ai.routing.workload.subconscious.description': 'Eventfulness scoring + drift checks',
  'settings.ai.routing.workload.subconscious.hint':
    'Recommended: a very cheap monitoring model, ideally one that is lightweight and predictable. This is for eventfulness scoring, drift checks, and quiet background evaluation.',
  'settings.ai.routing.addCustomProvider': 'Aggiungi provider personalizzato',
  'settings.ai.globalModel.title': 'Scegli un modello per tutto',
  'settings.ai.globalModel.desc':
    "Questo instrada tutta l'inferenza attraverso un modello. È più semplice, ma può essere inefficiente per quanto riguarda i costi e la qualità perché compiti leggeri e pesanti utilizzeranno tutti lo stesso percorso.",
  'settings.ai.globalModel.noProviders':
    'Aggiungi o collega prima un fornitore. Poi puoi instradare ogni carico di lavoro attraverso un modello qui.',
  'settings.ai.globalModel.provider': 'Fornitore',
  'settings.ai.globalModel.model': 'Modello',
  'settings.ai.globalModel.loadingModels': 'Caricamento modelli…',
  'settings.ai.globalModel.enterModelId': 'Inserisci ID modello',
  'settings.ai.globalModel.appliesToAll':
    'Applica lo stesso provider + modello a chat, ragionamento, codifica, memoria, battito cardiaco, apprendimento e subconscio. Le embeddings sono configurate separatamente. Le modifiche vengono salvate quando clicchi su salva.',
  'settings.ai.globalModel.saving': 'Salvataggio…',
  'settings.ai.globalModel.saved': 'Salvato',
  'settings.ai.workload.noModel': 'Nessun modello selezionato',
  'settings.ai.workload.changeModel': 'Cambia modello',
  'settings.ai.workload.chooseModel': 'Scegli modello',
  'settings.ai.provider.ollama': 'Ollama',
  'settings.autocomplete.appFilter.acceptSuggestion': 'Accetta suggerimento',
  'settings.autocomplete.appFilter.app': 'App',
  'settings.autocomplete.appFilter.currentSuggestion': 'Suggerimento corrente',
  'settings.autocomplete.appFilter.contextOverride': 'Override contesto (opzionale)',
  'settings.autocomplete.appFilter.debounce': 'Antirimbalzo',
  'settings.autocomplete.appFilter.debugFocus': 'Focus debug',
  'settings.autocomplete.appFilter.enabled': 'Abilitato',
  'settings.autocomplete.appFilter.getSuggestion': 'Ottieni suggerimento',
  'settings.autocomplete.appFilter.lastError': 'Ultimo errore',
  'settings.autocomplete.appFilter.liveLogs': 'Log live',
  'settings.autocomplete.appFilter.model': 'Modello',
  'settings.autocomplete.appFilter.noLogs': 'Nessun log',
  'settings.autocomplete.appFilter.phase': 'Fase',
  'settings.autocomplete.appFilter.platformSupported': 'Piattaforma supportata',
  'settings.autocomplete.appFilter.refreshStatus': 'Aggiornamento…',
  'settings.autocomplete.appFilter.refreshing': 'Aggiornamento…',
  'settings.autocomplete.appFilter.running': 'In esecuzione',
  'settings.autocomplete.appFilter.runtime': 'Tempo di esecuzione',
  'settings.autocomplete.appFilter.test': 'Test',
  'settings.autocomplete.completionStyle.acceptedCompletion':
    '{count} completamento accettato memorizzato — usato per personalizzare i futuri suggerimenti.',
  'settings.autocomplete.completionStyle.acceptedCompletions':
    '{count} completamenti accettati memorizzati — usati per personalizzare i futuri suggerimenti.',
  'settings.autocomplete.completionStyle.clearHistory': 'Cancellazione…',
  'settings.autocomplete.completionStyle.clearing': 'Cancellazione…',
  'settings.autocomplete.completionStyle.debounce': 'Rimbalzo (ms)',
  'settings.autocomplete.completionStyle.enabled': 'Abilitato',
  'settings.autocomplete.completionStyle.maxChars': 'Caratteri max',
  'settings.autocomplete.completionStyle.noHistory':
    'Nessun completamento accettato. Accetta i suggerimenti con Tab per iniziare a personalizzare.',
  'settings.autocomplete.completionStyle.overlayTtl': 'TTL overlay (ms)',
  'settings.autocomplete.completionStyle.personalizationHistory': 'Cronologia personalizzazione',
  'settings.autocomplete.completionStyle.styleExamples': 'Esempi di stile (uno per riga)',
  'settings.autocomplete.completionStyle.styleInstructions': 'Istruzioni di stile',
  'settings.autocomplete.debug.acceptedPrefix': 'Accettato: {value}',
  'settings.autocomplete.debug.acceptFailed': 'Impossibile accettare il suggerimento',
  'settings.autocomplete.debug.alreadyRunning': 'Il completamento automatico è già in esecuzione.',
  'settings.autocomplete.debug.clearHistoryFailed': 'Impossibile cancellare la cronologia.',
  'settings.autocomplete.debug.didNotStart': 'Il completamento automatico non è stato avviato.',
  'settings.autocomplete.debug.disabledInSettings':
    'Il completamento automatico è disabilitato nelle impostazioni. Abilitalo e salva prima.',
  'settings.autocomplete.debug.fetchSuggestionFailed':
    'Impossibile recuperare il suggerimento corrente',
  'settings.autocomplete.debug.inspectFocusedElementFailed':
    "Impossibile controllare l'elemento selezionato",
  'settings.autocomplete.debug.loadSettingsFailed':
    'Impossibile caricare le impostazioni di completamento automatico',
  'settings.autocomplete.debug.noSuggestionApplied': 'Nessun suggerimento è stato applicato.',
  'settings.autocomplete.debug.noSuggestionReturned': 'Nessun suggerimento restituito.',
  'settings.autocomplete.debug.refreshStatusFailed':
    'Impossibile aggiornare lo stato del completamento automatico',
  'settings.autocomplete.debug.saveAdvancedSettingsFailed':
    'Impossibile salvare le impostazioni avanzate',
  'settings.autocomplete.debug.startFailed': 'Impossibile avviare il completamento automatico',
  'settings.autocomplete.debug.stopFailed': 'Impossibile arrestare il completamento automatico',
  'settings.autocomplete.debug.suggestionPrefix': 'Suggerimento: {value}',
  'settings.autocomplete.shared.none': 'Nessuno',
  'settings.autocomplete.shared.notApplicable': 'n/a',
  'settings.autocomplete.shared.unknown': 'Sconosciuto',
  'settings.billing.autoRecharge.addAmount': 'Aggiungi questo importo',
  'settings.billing.autoRecharge.addCard': 'Aggiungi carta',
  'settings.billing.autoRecharge.amountHint': 'Suggerimento importo',
  'settings.billing.autoRecharge.defaultCard': 'Carta predefinita',
  'settings.billing.autoRecharge.lastRechargeFailed': 'Ultima ricarica fallita',
  'settings.billing.autoRecharge.lastRecharged': 'Ultima ricarica',
  'settings.billing.autoRecharge.expires': 'Scadenza {date}',
  'settings.billing.autoRecharge.noCards': 'Nessuna carta',
  'settings.billing.autoRecharge.paymentMethods': 'Metodi di pagamento',
  'settings.billing.autoRecharge.rechargeInProgress': 'Ricarica in corso',
  'settings.billing.autoRecharge.spentThisWeek': '${spent} di ${limit} utilizzato questa settimana',
  'settings.billing.autoRecharge.rechargeWhen': 'Ricarica quando il saldo scende sotto',
  'settings.billing.autoRecharge.saveSettings': 'Salvataggio…',
  'settings.billing.autoRecharge.saving': 'Salvataggio…',
  'settings.billing.autoRecharge.setDefault': 'Imposta come predefinita',
  'settings.billing.autoRecharge.subtitle': 'Sottotitolo',
  'settings.billing.autoRecharge.title': 'Abilita ricarica automatica',
  'settings.billing.autoRecharge.toggleAriaLabel': 'Attiva/disattiva ricarica automatica',
  'settings.billing.autoRecharge.weeklyLimit': 'Limite di spesa settimanale',
  'settings.billing.history.desc': 'Descrizione',
  'settings.billing.history.empty': 'Vuoto',
  'settings.billing.history.openPortal': 'Apri portale',
  'settings.billing.history.posted': 'Registrato',
  'settings.billing.history.title': 'Titolo',
  'settings.billing.inferenceBudget.cycleEnds': 'Fine ciclo',
  'settings.billing.inferenceBudget.exhausted': 'Esaurito',
  'settings.billing.inferenceBudget.loadError': 'Errore di caricamento',
  'settings.billing.inferenceBudget.noBudgetDesc': 'Nessuna descrizione budget',
  'settings.billing.inferenceBudget.noRecurringBudget': 'Nessun budget ricorrente',
  'settings.billing.inferenceBudget.noRecurringPlanBudget': 'Nessun budget del piano ricorrente',
  'settings.billing.inferenceBudget.noRecurringWeeklyDesc':
    "Il tuo piano attuale non include un budget ricorrente settimanale per le inferenze. L'utilizzo viene invece pagato dai crediti disponibili.",
  'settings.billing.inferenceBudget.remaining': 'Rimanente',
  'settings.billing.inferenceBudget.remainingSummary': '{remaining} / {budget} rimanente',
  'settings.billing.inferenceBudget.spentThisCycle': 'Speso {amount} in questo ciclo',
  'settings.billing.inferenceBudget.cycleEndsOn': 'Il ciclo termina {date}',
  'settings.billing.inferenceBudget.exhaustedDesc':
    "L'utilizzo dell'abbonamento incluso è esaurito. Ricarica i crediti per continuare a usare AI senza aspettare il ciclo successivo.",
  'settings.billing.inferenceBudget.discountVsPayg':
    '{pct}% più economico per chiamata rispetto al pagamento a consumo.',
  'settings.billing.inferenceBudget.cycleSpend': 'Ciclo di spesa',
  'settings.billing.inferenceBudget.totalAmount': '{amount} totale',
  'settings.billing.inferenceBudget.inference': 'Inferenza',
  'settings.billing.inferenceBudget.integrations': 'Integrazioni',
  'settings.billing.inferenceBudget.calls': '{count} chiamate',
  'settings.billing.inferenceBudget.dailySpend': 'Spesa giornaliera',
  'settings.billing.inferenceBudget.dailySpendPoint': '{date}: {amount}',
  'settings.billing.inferenceBudget.topModels': 'Modelli principali',
  'settings.billing.inferenceBudget.noInferenceUsage':
    "Nessun utilizzo dell'inferenza in questo ciclo.",
  'settings.billing.inferenceBudget.topIntegrations': 'Integrazioni principali',
  'settings.billing.inferenceBudget.noIntegrationUsage':
    "Nessun utilizzo dell'integrazione in questo ciclo.",
  'settings.billing.inferenceBudget.tenHourCap': 'Limite di 10 ore',
  'settings.billing.inferenceBudget.title': 'Titolo',
  'settings.billing.inferenceBudget.unableToLoad': 'Impossibile caricare i dati di utilizzo',
  'settings.billing.inferenceBudget.notAvailable': 'n/a',
  'settings.billing.payAsYouGo.available': 'Disponibile',
  'settings.billing.payAsYouGo.chargeCustomAmount': 'Apertura…',
  'settings.billing.payAsYouGo.chooseTopUpDesc': 'Descrizione scelta ricarica',
  'settings.billing.payAsYouGo.chooseTopUpTitle': 'Titolo scelta ricarica',
  'settings.billing.payAsYouGo.creditBalanceDesc': 'Descrizione saldo crediti',
  'settings.billing.payAsYouGo.creditBalanceTitle': 'Titolo saldo crediti',
  'settings.billing.payAsYouGo.customAmount': 'Importo personalizzato',
  'settings.billing.payAsYouGo.enterAmount': 'Inserisci importo',
  'settings.billing.payAsYouGo.opening': 'Apertura',
  'settings.billing.payAsYouGo.promotionalCredits': 'Crediti promozionali',
  'settings.billing.payAsYouGo.topUpBalance': 'Saldo ricarica',
  'settings.billing.payAsYouGo.topUpCredits': 'Ricarica crediti',
  'settings.billing.payAsYouGo.unableToLoad': 'Impossibile caricare il saldo.',
  'settings.billing.subscription.annual': 'Annuale',
  'settings.billing.subscription.billedAnnually': 'Fatturato annualmente',
  'settings.billing.subscription.chooseSubtitle': 'Sottotitolo scelta',
  'settings.billing.subscription.chooseTitle': 'Titolo scelta',
  'settings.billing.subscription.cryptoDesc': 'Descrizione crypto',
  'settings.billing.subscription.cryptoQuestion': 'Domanda crypto',
  'settings.billing.subscription.current': 'Attuale',
  'settings.billing.subscription.currentPlan': 'Piano attuale',
  'settings.billing.subscription.monthly': 'Mensile',
  'settings.billing.subscription.paymentConfirmed': 'Pagamento confermato',
  'settings.billing.subscription.perMonth': 'Al mese',
  'settings.billing.subscription.popular': 'Popolare',
  'settings.billing.subscription.save': '{pct}',
  'settings.billing.subscription.upgrade': 'Aggiorna',
  'settings.billing.subscription.waiting': 'In attesa',
  'settings.billing.subscription.waitingPayment': 'In attesa di pagamento',
  'settings.composio.apiKeyDesc':
    'Una chiave API Composio è attualmente memorizzata su questo dispositivo.',
  'settings.composio.apiKeyExamplePlaceholder': 'ck_live_xxxxxxxxxxxxxxxxx',
  'settings.composio.apiKeyLabel': 'Chiave API Composio',
  'settings.composio.apiKeyStored': 'Chiave API memorizzata',
  'settings.composio.apiKeyStoredPlaceholder': '••••••••••••••••',
  'settings.composio.clearedToBackend': 'Passato alla modalità Backend',
  'settings.composio.confirmItem1': 'Un account su app.composio.dev con una chiave API',
  'settings.composio.confirmItem2':
    'Per ricollegare ogni integrazione tramite il tuo account Composio personale',
  'settings.composio.confirmItem3':
    'Nota: i trigger Composio (webhook in tempo reale) non funzionano ancora in modalità Diretta — solo le chiamate sincrone agli strumenti',
  'settings.composio.confirmNeedItems': 'Ti serviranno:',
  'settings.composio.confirmSwitch': 'Ho capito, passa a Diretta',
  'settings.composio.confirmTitle': '⚠️ Passaggio alla modalità Diretta',
  'settings.composio.confirmWarning':
    'Le tue integrazioni esistenti (Gmail, Slack, GitHub, ecc. collegate tramite OpenHuman) non saranno visibili — risiedono nel tenant Composio gestito da OpenHuman.',
  'settings.composio.intro':
    'Composio integra oltre 250 app esterne come strumenti che il tuo agente può chiamare. Scegli come instradare queste chiamate.',
  'settings.composio.title': 'Composio',
  'settings.composio.modeDirect': 'Diretta (usa la tua chiave API)',
  'settings.composio.modeDirectDesc':
    "Le chiamate vanno direttamente a backend.composio.dev. Sovrana / offline-friendly. L'esecuzione degli strumenti funziona in modo sincrono; i webhook dei trigger in tempo reale non sono ancora instradati in modalità diretta (issue di follow-up).",
  'settings.composio.modeManaged': 'Gestita (OpenHuman lo gestisce per te)',
  'settings.composio.modeManagedDesc':
    "OpenHuman fa da proxy per le chiamate degli strumenti tramite il nostro backend (consigliato). L'autenticazione è mediata; non incolli mai una chiave API Composio. I webhook sono completamente instradati.",
  'settings.composio.routingMode': 'Modalità di instradamento',
  'settings.composio.saveErrorNoKey':
    'Salvataggio fallito. La modalità Diretta richiede una chiave API non vuota.',
  'settings.composio.saving': 'Salvataggio…',
  'settings.composio.switching': 'Passaggio…',
  'settings.companion.title': 'Compagno da scrivania',
  'settings.companion.session': 'Sessione',
  'settings.companion.activeLabel': 'Attivo',
  'settings.companion.inactiveStatus': 'Inattivo',
  'settings.companion.stopping': 'Arresto…',
  'settings.companion.stopSession': 'Interrompi sessione',
  'settings.companion.starting': 'Avvio…',
  'settings.companion.startSession': 'Avvia sessione',
  'settings.companion.sessionId': 'ID sessione',
  'settings.companion.turns': 'Turni',
  'settings.companion.remaining': 'Rimanenti',
  'settings.companion.configuration': 'Configurazione',
  'settings.companion.hotkey': 'Tasto di scelta rapida',
  'settings.companion.activationMode': 'Modalità di attivazione',
  'settings.companion.sessionTtl': 'Sessione TTL',
  'settings.companion.screenCapture': 'Acquisizione schermata',
  'settings.companion.appContext': 'Contesto app',
  'settings.cron.jobs.commandRequired': 'Il comando è obbligatorio per i job shell',
  'settings.cron.jobs.createJob': 'Nuovo job pianificato',
  'settings.cron.jobs.created': 'Job creato',
  'settings.cron.jobs.custom': 'Personalizzato',
  'settings.cron.jobs.desc': 'Descrizione',
  'settings.cron.jobs.edit': 'Modifica',
  'settings.cron.jobs.editJob': 'Modifica job pianificato',
  'settings.cron.jobs.empty': 'Nessun cron job core trovato.',
  'settings.cron.jobs.errorCreate': 'Impossibile creare il job cron: {message}',
  'settings.cron.jobs.errorLoadList': 'Impossibile caricare i job cron del core: {message}',
  'settings.cron.jobs.errorLoadRuns':
    'Impossibile caricare la cronologia delle esecuzioni: {message}',
  'settings.cron.jobs.errorRemove': 'Impossibile rimuovere il job cron del core: {message}',
  'settings.cron.jobs.errorRun': 'Impossibile eseguire il job cron del core: {message}',
  'settings.cron.jobs.errorToggle': 'Impossibile aggiornare il job cron del core: {message}',
  'settings.cron.jobs.errorUpdate': 'Impossibile aggiornare il job cron: {message}',
  'settings.cron.jobs.formAtLabel': 'Esegui alle',
  'settings.cron.jobs.formCancel': 'Annulla',
  'settings.cron.jobs.formCommand': 'Comando shell',
  'settings.cron.jobs.formCommandPlaceholder': 'es. curl https://example.com/health',
  'settings.cron.jobs.formCreate': 'Crea',
  'settings.cron.jobs.formCronCustom': 'Espressione personalizzata',
  'settings.cron.jobs.formCronCustomPlaceholder': 'es. */30 * * * *',
  'settings.cron.jobs.formCronPreset': 'Preimpostazione',
  'settings.cron.jobs.formCronPreview': 'Esecuzioni: {preview}',
  'settings.cron.jobs.formDeleteAfterRun': 'Elimina dopo la prima esecuzione',
  'settings.cron.jobs.formDelivery': 'Modalità di consegna',
  'settings.cron.jobs.formDeliveryNone': 'Nessuna (solo output)',
  'settings.cron.jobs.formDeliveryProactive': 'Proattiva (notifica push)',
  'settings.cron.jobs.formError': 'Impossibile salvare il job',
  'settings.cron.jobs.formEveryLabel': 'Intervallo (millisecondi)',
  'settings.cron.jobs.formEveryPlaceholder': 'es. 3600000',
  'settings.cron.jobs.formJobType': 'Tipo di job',
  'settings.cron.jobs.formJobTypeAgent': 'Agent (prompt AI)',
  'settings.cron.jobs.formJobTypeShell': 'Comando shell',
  'settings.cron.jobs.formName': 'Nome del job',
  'settings.cron.jobs.formNamePlaceholder': 'es. daily-report, cleanup-task',
  'settings.cron.jobs.formPrompt': "Prompt dell'agent",
  'settings.cron.jobs.formPromptPlaceholder': "Cosa deve fare l'agent a ogni esecuzione?",
  'settings.cron.jobs.formPromptRequired': 'Il prompt è obbligatorio per i job agent',
  'settings.cron.jobs.formSave': 'Salva',
  'settings.cron.jobs.formSaving': 'Salvataggio…',
  'settings.cron.jobs.formScheduleAt': 'Una tantum (esegui alle)',
  'settings.cron.jobs.formScheduleCron': 'Ricorrente (cron)',
  'settings.cron.jobs.formScheduleEvery': 'Intervallo (ogni N ms)',
  'settings.cron.jobs.formScheduleRequired': 'La pianificazione è obbligatoria',
  'settings.cron.jobs.formScheduleType': 'Tipo di pianificazione',
  'settings.cron.jobs.formSessionIsolated': 'Isolata (consigliata)',
  'settings.cron.jobs.formSessionMain': 'Sessione principale',
  'settings.cron.jobs.formSessionTarget': 'Sessione di destinazione',
  'settings.cron.jobs.lastStatus': 'Ultimo stato',
  'settings.cron.jobs.loading': 'Caricamento cron job...',
  'settings.cron.jobs.loadingRuns': 'Caricamento esecuzioni',
  'settings.cron.jobs.nextRun': 'Prossima esecuzione',
  'settings.cron.jobs.pause': 'Pausa',
  'settings.cron.jobs.paused': 'In pausa',
  'settings.cron.jobs.recentRuns': 'Esecuzioni recenti',
  'settings.cron.jobs.removing': 'Rimozione',
  'settings.cron.jobs.resume': 'Riprendi',
  'settings.cron.jobs.runningNow': 'In esecuzione ora',
  'settings.cron.jobs.saving': 'Salvataggio…',
  'settings.cron.jobs.schedule': 'Pianificazione',
  'settings.cron.jobs.title': 'Cron Job core',
  'settings.cron.jobs.updated': 'Job aggiornato',
  'settings.cron.jobs.viewRuns': 'Visualizza esecuzioni',
  'settings.cron.schedule.every2hours': 'Ogni 2 ore',
  'settings.cron.schedule.every30min': 'Ogni 30 minuti',
  'settings.cron.schedule.every6hours': 'Ogni 6 ore',
  'settings.cron.schedule.everyHour': 'Ogni ora',
  'settings.cron.schedule.onceDaily': 'Una volta al giorno (9:00)',
  'settings.localModel.deviceCapability.active': 'Attivo',
  'settings.localModel.deviceCapability.appliedTier': 'Tier applicato',
  'settings.localModel.deviceCapability.applying': 'Applicazione',
  'settings.localModel.deviceCapability.cores': '{count}',
  'settings.localModel.deviceCapability.couldNotLoadPresets': 'Impossibile caricare i preset',
  'settings.localModel.deviceCapability.cpu': 'CPU',
  'settings.localModel.deviceCapability.customModelIds': 'ID modello personalizzati',
  'settings.localModel.deviceCapability.detected': 'Rilevato',
  'settings.localModel.deviceCapability.disabled': 'Disabilitato',
  'settings.localModel.deviceCapability.disabledDesc': 'Descrizione disabilitato',
  'settings.localModel.deviceCapability.downloadingModels': '(download modelli)',
  'settings.localModel.deviceCapability.downloadingSetupDesc':
    "Download dell'installer OllamaSetup (~2 GB) e scompattazione. Al primo avvio può richiedere un minuto.",
  'settings.localModel.deviceCapability.failedToApplyPreset': 'Impossibile applicare il preset',
  'settings.localModel.deviceCapability.gpu': 'GPU',
  'settings.localModel.deviceCapability.installFailed': 'Installazione Ollama fallita',
  'settings.localModel.deviceCapability.installFailedDesc':
    "L'installer è uscito prima che Ollama fosse utilizzabile. Clicca riprova oppure installa manualmente da ollama.com.",
  'settings.localModel.deviceCapability.installFirst': 'Esegui prima Ollama.',
  'settings.localModel.deviceCapability.installFirstDesc':
    'I tier locali dipendono da un endpoint Ollama gestito esternamente. Avvialo tu, scarica i modelli che vuoi e continua a usare "Disabilitato (fallback cloud)" finché il runtime non è raggiungibile.',
  'settings.localModel.deviceCapability.installOllamaFirst':
    'Esegui prima Ollama per usare questo tier',
  'settings.localModel.deviceCapability.installingOllama': 'Installazione Ollama',
  'settings.localModel.deviceCapability.loadingDeviceInfo': 'Caricamento info dispositivo',
  'settings.localModel.deviceCapability.localAiDisabled':
    'AI locale disabilitata — uso il fallback cloud.',
  'settings.localModel.deviceCapability.modelTier': 'Tier del modello',
  'settings.localModel.deviceCapability.needsOllama': 'Richiede Ollama',
  'settings.localModel.deviceCapability.notDetected': 'Non rilevato',
  'settings.localModel.deviceCapability.disabledLowercase': 'disabilitato',
  'settings.localModel.deviceCapability.presetDetails':
    'Chat: {chatModel} · Visione: {visionModel} · RAM di destinazione: {targetRamGb} GB',
  'settings.localModel.deviceCapability.ram': 'RAM',
  'settings.localModel.deviceCapability.recommended': 'Consigliato',
  'settings.localModel.deviceCapability.retryInstall': 'Nuovo tentativo…',
  'settings.localModel.deviceCapability.retrying': 'Nuovo tentativo…',
  'settings.localModel.deviceCapability.starting': 'Avvio…',
  'settings.localModel.download.audioPathPlaceholder': 'Percorso assoluto al file audio',
  'settings.localModel.download.capabilityChat': 'Chat',
  'settings.localModel.download.capabilityEmbedding': 'Incorporamento',
  'settings.localModel.download.capabilityAssets': 'Asset di capacità',
  'settings.localModel.download.capabilityStt': 'STT',
  'settings.localModel.download.capabilityTts': 'TTS',
  'settings.localModel.download.capabilityVision': 'Visione',
  'settings.localModel.download.downloading': 'Download in corso...',
  'settings.localModel.download.embeddingDimensions': 'Dimensioni: {dimensions}',
  'settings.localModel.download.embeddingModel': 'Modello: {modelId}',
  'settings.localModel.download.embeddingPlaceholder': 'Una stringa di input per riga...',
  'settings.localModel.download.embeddingVectors': 'Vettori: {count}',
  'settings.localModel.download.noThinkMode': 'Modalità no-think',
  'settings.localModel.download.notAvailable': 'n/a',
  'settings.localModel.download.promptPlaceholder':
    'Scrivi un prompt qualsiasi ed eseguilo sul modello locale...',
  'settings.localModel.download.quantizationPref': 'Preferenza quantizzazione',
  'settings.localModel.download.runEmbeddingTest': 'Esecuzione...',
  'settings.localModel.download.runPromptTest': 'Esegui test prompt',
  'settings.localModel.download.runSummaryTest': 'Esegui test riassunto',
  'settings.localModel.download.runTranscriptionTest': 'Esecuzione...',
  'settings.localModel.download.runTtsTest': 'Esecuzione...',
  'settings.localModel.download.runVisionTest': 'Esecuzione...',
  'settings.localModel.download.running': 'Esecuzione...',
  'settings.localModel.download.runningPrompt': 'Esecuzione prompt',
  'settings.localModel.download.summaryHelper':
    'Chiama `openhuman.inference_summarize` tramite Rust core',
  'settings.localModel.download.summarizePlaceholder':
    'Incolla il testo da riassumere con il modello locale...',
  'settings.localModel.download.testCustomPrompt': 'Test prompt personalizzato',
  'settings.localModel.download.testEmbeddings': 'Test embedding',
  'settings.localModel.download.testSummarization': 'Test riassunto',
  'settings.localModel.download.testVisionPrompt': 'Test prompt vision',
  'settings.localModel.download.testVoiceInput': 'Test input vocale (STT)',
  'settings.localModel.download.testVoiceOutput': 'Test output vocale (TTS)',
  'settings.localModel.download.transcript': 'Trascrizione:',
  'settings.localModel.download.ttsOutput': 'Output: {outputPath}',
  'settings.localModel.download.ttsOutputPlaceholder': 'Percorso WAV di output opzionale',
  'settings.localModel.download.ttsPlaceholder': 'Inserisci il testo da sintetizzare...',
  'settings.localModel.download.ttsVoice': 'Voce: {voiceId}',
  'settings.localModel.download.visionImagePlaceholder':
    'Un riferimento immagine per riga (data URI, URL o marcatore di percorso locale)',
  'settings.localModel.download.visionPromptPlaceholder':
    'Inserisci un prompt per il modello vision...',
  'settings.localModel.status.allChecksPassed': 'Tutti i controlli superati',
  'settings.localModel.status.artifact': 'Artefatto',
  'settings.localModel.status.backend': 'Backend',
  'settings.localModel.status.binary': 'Binario',
  'settings.localModel.status.bootstrapResume': 'Bootstrap / ripresa',
  'settings.localModel.status.checking': 'Verifica in corso...',
  'settings.localModel.status.checkingOllama': 'Verifica Ollama',
  'settings.localModel.status.contextBelowMinimumBadge':
    '{contextLength} ctx - inferiore a {required} min',
  'settings.localModel.status.contextBelowMinimumTitle':
    'Rifiutato: i token {contextLength} della finestra di contesto sono al di sotto del minimo {required}-token richiesto dal livello di memoria. Il richiamo verrebbe danneggiato dal troncamento silenzioso.',
  'settings.localModel.status.contextOkBadge': '{contextLength} ctx ✓',
  'settings.localModel.status.contextOkTitle':
    'I token {contextLength} della finestra di contesto soddisfano il livello minimo di memoria di token {required}.',
  'settings.localModel.status.contextUnknownBadge': 'ctx sconosciuto',
  'settings.localModel.status.contextUnknownTitle':
    'Finestra di contesto sconosciuta; non è stato possibile confermare che soddisfi il livello minimo di memoria {required}-token.',
  'settings.localModel.status.customLocation': 'Posizione personalizzata',
  'settings.localModel.status.customLocationDesc': 'Descrizione posizione personalizzata',
  'settings.localModel.status.diagnosticsHint':
    'Clicca "Esegui diagnostica" per verificare che Ollama sia in esecuzione e i modelli installati.',
  'settings.localModel.status.downloadingUnknown': 'Download (dimensione sconosciuta)',
  'settings.localModel.status.eta': 'ETA',
  'settings.localModel.status.expectedModels': 'Modelli attesi',
  'settings.localModel.status.expectedChat': 'Chat: {model}',
  'settings.localModel.status.expectedEmbedding': 'Incorporamento: {model}',
  'settings.localModel.status.expectedVision': 'Visione: {model}',
  'settings.localModel.status.externalProcess': 'Processo esterno',
  'settings.localModel.status.forceRebootstrap': 'Forza re-bootstrap',
  'settings.localModel.status.generationTps': 'TPS di generazione',
  'settings.localModel.status.hideErrorDetails': 'Nascondi dettagli errore',
  'settings.localModel.status.installManually': 'Installa manualmente',
  'settings.localModel.status.installManuallyFrom': 'Installa manualmente da',
  'settings.localModel.status.installOllama': 'Avvio…',
  'settings.localModel.status.installedModels': 'Modelli installati',
  'settings.localModel.status.installing': 'Installazione...',
  'settings.localModel.status.installingOllama': 'Installazione runtime Ollama...',
  'settings.localModel.status.issues': 'Problemi',
  'settings.localModel.status.issuesFound': '{count} problema/i trovato/i',
  'settings.localModel.status.lastLatency': 'Ultima latenza',
  'settings.localModel.status.model': 'Modello',
  'settings.localModel.status.notAvailable': 'n/a',
  'settings.localModel.status.notFound': 'Non trovato',
  'settings.localModel.status.notRunning': 'Non in esecuzione',
  'settings.localModel.status.ollamaBinaryPath': 'Percorso binario Ollama',
  'localModel.ollamaServer.helperText': 'Esempio: http://192.168.1.5:11434',
  'localModel.ollamaServer.label': 'URL del server Ollama',
  'localModel.ollamaServer.modelCount': 'modelli',
  'localModel.ollamaServer.placeholder': 'http://localhost:11434',
  'localModel.ollamaServer.reachable': 'Raggiungibile',
  'localModel.ollamaServer.resetButton': 'Ripristina predefinito',
  'localModel.ollamaServer.saveButton': 'Salva',
  'localModel.ollamaServer.testButton': 'Testa connessione',
  'localModel.ollamaServer.unreachable': 'Non raggiungibile',
  'localModel.ollamaServer.validationError': 'Deve essere un URL http:// o https:// valido',
  'settings.localModel.status.ollamaDiagnostics': 'Diagnostica Ollama',
  'settings.localModel.status.ollamaNotInstalled': 'Runtime Ollama non disponibile',
  'settings.localModel.status.ollamaNotInstalledDesc':
    "OpenHuman ora tratta Ollama come un runtime di inferenza esterno. Avvia il tuo server Ollama, scarica i modelli che vuoi e punta l'instradamento dei carichi di lavoro su di esso.",
  'settings.localModel.status.progress': 'Progresso',
  'settings.localModel.status.provider': 'Fornitore',
  'settings.localModel.status.retryBootstrap': 'Riprova bootstrap',
  'settings.localModel.status.runDiagnostics': 'Verifica in corso...',
  'settings.localModel.status.running': 'In esecuzione',
  'settings.localModel.status.runningExternalProcess': 'In esecuzione tramite processo esterno',
  'settings.localModel.status.runtimeStatus': 'Stato runtime',
  'settings.localModel.status.server': 'Server',
  'settings.localModel.status.setPath': 'Impostazione...',
  'settings.localModel.status.setting': 'Impostazione...',
  'settings.localModel.status.showErrorDetails': 'Mostra dettagli errore',
  'settings.localModel.status.showInstallErrorDetails': 'Mostra dettagli errore di installazione',
  'settings.localModel.status.suggestedFixes': 'Soluzioni suggerite',
  'settings.localModel.status.thenSetPath': 'Poi imposta il percorso',
  'settings.localModel.status.triggering': 'Attivazione...',
  'settings.localModel.status.unavailable': 'Non disponibile',
  'settings.localModel.status.working': 'Elaborazione...',
  'settings.developerMenu.ai.title': 'Configurazione IA',
  'settings.developerMenu.ai.desc':
    'Provider cloud, modelli Ollama locali e routing per carico di lavoro',
  'settings.developerMenu.screenAwareness.title': 'Consapevolezza schermo',
  'settings.developerMenu.screenAwareness.desc':
    'Permessi di cattura schermo, criteri di monitoraggio e controlli di sessione',
  'settings.developerMenu.messagingChannels.title': 'Canali di messaggistica',
  'settings.developerMenu.messagingChannels.desc':
    'Configura le modalità di autenticazione Telegram/Discord e il routing predefinito del canale',
  'settings.developerMenu.tools.title': 'Strumenti',
  'settings.developerMenu.tools.desc':
    'Abilita o disabilita le capacità che OpenHuman può usare per tuo conto',
  'settings.developerMenu.agentChat.title': 'Chat agente',
  'settings.developerMenu.agentChat.desc':
    "Testa conversazioni dell'agente con override di modello e temperatura",
  'settings.developerMenu.devWorkflow.title': 'Flusso di lavoro di sviluppo',
  'settings.developerMenu.devWorkflow.desc':
    'Agente autonomo che seleziona i tuoi problemi GitHub e crea PR secondo un calendario',
  'settings.developerMenu.devWorkflow.panelDesc':
    'Configura un agente sviluppatore autonomo che seleziona i problemi GitHub assegnati a te e crea automaticamente richieste di pull su un programma prestabilito.',
  'settings.developerMenu.skillsRunner.title': 'Corritore di abilità',
  'settings.developerMenu.skillsRunner.desc':
    "Esegui qualsiasi skill inclusa ad hoc — compila i suoi input e avvia un'esecuzione autonoma in background",
  'settings.developerMenu.skillsRunner.panelDesc':
    "Seleziona una skill inclusa, compila i suoi input dichiarati e avvia un'esecuzione in background di tipo fire-and-forget. Usa invece Dev Workflow se desideri un lavoro ricorrente pianificato con cron.",
  'settings.skillsRunner.skill': 'Abilità',
  'settings.skillsRunner.selectSkill': 'Seleziona una competenza…',
  'settings.skillsRunner.loadingSkills': 'Caricamento delle competenze…',
  'settings.skillsRunner.loadingDescription': 'Caricamento input delle abilità…',
  'settings.skillsRunner.noInputs': 'Questa abilità non dichiara input.',
  'settings.skillsRunner.placeholder.required': 'richiesto',
  'settings.skillsRunner.runNow': 'Corri adesso',
  'settings.skillsRunner.starting': 'Avviamento…',
  'settings.skillsRunner.started': 'Avviato — id esecuzione:',
  'settings.skillsRunner.logPath': 'Registro:',
  'settings.skillsRunner.error.listSkills': 'Impossibile caricare le competenze:',
  'settings.skillsRunner.error.describe': 'Impossibile caricare gli input:',
  'settings.skillsRunner.error.missingRequired': 'Input richiesto mancante:',
  'settings.skillsRunner.error.run': "Esecuzione fallita all'avvio:",
  'settings.skillsRunner.error.preflightGate': 'Il gate di prevolo non è riuscito',
  'settings.skillsRunner.error.runtimeUnavailable': 'Runtime non disponibile',
  'settings.skillsRunner.error.runtimeUnavailableDefault': 'non disponibile',
  'settings.skillsRunner.schedule.heading': 'Programma (ricorrente)',
  'settings.skillsRunner.schedule.help':
    "Salva questa abilità + input come un lavoro cron ricorrente. L'agente chiamerà run_workflow ad ogni ciclo.",
  'settings.skillsRunner.schedule.frequency': 'Frequenza',
  'settings.skillsRunner.schedule.every30min': 'Ogni 30 minuti',
  'settings.skillsRunner.schedule.everyHour': 'Ogni ora',
  'settings.skillsRunner.schedule.every2hours': 'Ogni 2 ore',
  'settings.skillsRunner.schedule.every6hours': 'Ogni 6 ore',
  'settings.skillsRunner.schedule.onceDaily': 'Una volta al giorno (9:00)',
  'settings.skillsRunner.schedule.save': 'Salva programma',
  'settings.skillsRunner.schedule.saving': 'Salvataggio…',
  'settings.skillsRunner.schedule.saved': 'Programma salvato.',
  'settings.skillsRunner.schedule.error': 'Salvataggio programma fallito:',
  'settings.skillsRunner.schedule.loadingJobs': 'Caricamento degli orari esistenti…',
  'settings.skillsRunner.schedule.noJobs': 'Nessun programma salvato per questa competenza ancora.',
  'settings.skillsRunner.schedule.existing': 'Attività programmate per questa competenza:',
  'settings.skillsRunner.schedule.inputsLabel': 'Input',
  'settings.skillsRunner.schedule.inputsNone': 'Nessun input',
  'settings.skillsRunner.schedule.runNow': 'Corri',
  'settings.skillsRunner.schedule.remove': 'Rimuovere',
  'settings.skillsRunner.scheduleEnabled': 'Abilitato',
  'settings.skillsRunner.scheduleDisabled': 'In pausa',
  'settings.skillsRunner.scheduleToggleAria': 'Attiva/disattiva il programma abilitato',
  'settings.skillsRunner.schedule.history': 'Storia',
  'settings.skillsRunner.schedule.historyLoading': 'Caricamento cronologia…',
  'settings.skillsRunner.schedule.historyEmpty': 'Ancora nessuna corsa per questo programma.',
  'settings.skillsRunner.schedule.historyNoOutput': 'Nessun output catturato.',
  'settings.skillsRunner.schedule.active': 'Attivo',
  'settings.skillsRunner.schedule.lastRunLabel': 'ultimo:',
  'settings.skillsRunner.recentRuns.headingForSkill': 'Esecuzioni recenti per questa abilità',
  'settings.skillsRunner.recentRuns.headingAll': 'Esecuzioni di abilità recenti (tutte)',
  'settings.skillsRunner.recentRuns.refresh': 'Aggiorna',
  'settings.skillsRunner.recentRuns.loading': 'Caricamento delle corse recenti…',
  'settings.skillsRunner.recentRuns.empty': 'Nessuna corsa recente.',
  'settings.skillsRunner.viewer.loading': 'Caricamento registro…',
  'settings.skillsRunner.viewer.tailing': 'Monitoraggio in tempo reale',
  'settings.skillsRunner.viewer.fetching': 'recupero',
  'settings.skillsRunner.viewer.error': 'Lettura del registro fallita:',
  'settings.skillsRunner.repoPicker.loading': 'Caricamento dei repository…',
  'settings.skillsRunner.repoPicker.select': 'Seleziona un repository…',
  'settings.skillsRunner.repoPicker.empty':
    'Nessun repository restituito. Collega GitHub tramite Composio per popolare questa lista.',
  'settings.skillsRunner.repoPicker.notConnected':
    'GitHub non è connesso tramite Composio. Connettilo prima sotto Competenze → Composio.',
  'settings.skillsRunner.repoPicker.privateTag': '(privato)',
  'settings.skillsRunner.branchPicker.needRepo': 'Scegli prima un repository…',
  'settings.skillsRunner.branchPicker.loading': 'Caricamento dei rami…',
  'settings.skillsRunner.branchPicker.select': 'Seleziona un ramo…',
  'settings.devWorkflow.githubRepository': 'Repository GitHub',
  'settings.devWorkflow.loadingRepositories': 'Caricamento dei repository...',
  'settings.devWorkflow.selectRepository': 'Seleziona un repository',
  'settings.devWorkflow.privateTag': '(privato)',
  'settings.devWorkflow.detectingForkInfo': 'Rilevamento informazioni sul fork...',
  'settings.devWorkflow.forkDetected': 'Forchetta rilevata',
  'settings.devWorkflow.upstream': 'A monte:',
  'settings.devWorkflow.forkPrNote': 'Le PR saranno sollevate contro il repository upstream.',
  'settings.devWorkflow.notForkNote':
    'Non un fork. Le PR verranno inviate direttamente a questo repository.',
  'settings.devWorkflow.targetBranch': 'Branch di destinazione',
  'settings.devWorkflow.targetBranchNote': 'Le PR saranno create contro questo branch',
  'settings.devWorkflow.loadingBranches': 'Caricamento dei rami...',
  'settings.devWorkflow.runFrequency': 'Frequenza di esecuzione',
  'settings.devWorkflow.runFrequencyNote':
    "Quanto spesso l'agente dovrebbe controllare la presenza di problemi e aprire PR.",
  'settings.devWorkflow.updateConfiguration': 'Aggiorna configurazione',
  'settings.devWorkflow.saveConfiguration': 'Salva configurazione',
  'settings.devWorkflow.remove': 'Rimuovere',
  'settings.devWorkflow.saved': 'Salvato',
  'settings.devWorkflow.activeConfiguration': 'Configurazione Attiva',
  'settings.devWorkflow.activeConfigRepository': 'Repository:',
  'settings.devWorkflow.activeConfigUpstream': 'A monte:',
  'settings.devWorkflow.activeConfigTargetBranch': 'Ramo di destinazione:',
  'settings.devWorkflow.activeConfigSchedule': 'Programma:',
  'settings.devWorkflow.enabled': 'Abilitato',
  'settings.devWorkflow.paused': 'In pausa',
  'settings.devWorkflow.nextRun': 'Prossima corsa',
  'settings.devWorkflow.lastRun': 'Ultima esecuzione',
  'settings.devWorkflow.runNow': 'Corri adesso',
  'settings.devWorkflow.running': 'Correndo…',
  'settings.devWorkflow.recentRuns': 'Corse recenti',
  'settings.devWorkflow.cronSaveError': 'Salvataggio della configurazione non riuscito',
  'settings.devWorkflow.lastOutput': 'Ultima uscita',
  'settings.devWorkflow.noOutput': 'Nessun output catturato',
  'settings.devWorkflow.runningStatus':
    "L'agente è in esecuzione — sta selezionando un problema e lavorando a una soluzione...",
  'settings.devWorkflow.errorNotConnected':
    'GitHub non è connesso. Per favore, collega GitHub tramite Impostazioni > Avanzate > Composio prima.',
  'settings.devWorkflow.errorToolNotEnabled':
    "Lo strumento GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER non è abilitato su questo backend. Si prega di chiedere al proprio amministratore di abilitarlo nell'integrazione Composio (backend#842).",
  'settings.devWorkflow.errorNotAuthenticated': "Non autenticato. Effettua prima l'accesso.",
  'settings.devWorkflow.errorNoRepositories':
    'Nessun repository trovato per questo account GitHub.',
  'settings.devWorkflow.schedule.every30min': 'Ogni 30 minuti',
  'settings.devWorkflow.schedule.everyHour': 'Ogni ora',
  'settings.devWorkflow.schedule.every2hours': 'Ogni 2 ore',
  'settings.devWorkflow.schedule.every6hours': 'Ogni 6 ore',
  'settings.devWorkflow.schedule.onceDaily': 'Una volta al giorno (ore 9)',
  'settings.developerMenu.tasks.title': 'Attività',
  'settings.developerMenu.tasks.desc':
    'Esplora e gestisci le bacheche delle attività — i tuoi to-do e le bacheche create dagli agenti nelle conversazioni.',
  'settings.developerMenu.cronJobs.title': 'Processi cron',
  'settings.developerMenu.cronJobs.desc':
    'Visualizza e configura processi pianificati per le skill di runtime',
  'settings.developerMenu.localModelDebug.title': 'Debug modello locale',
  'settings.developerMenu.localModelDebug.desc':
    'Configurazione Ollama, download asset, test del modello e diagnostica',
  'settings.developerMenu.webhooks.title': 'Webhook',
  'settings.developerMenu.webhooks.desc':
    'Ispeziona registrazioni webhook di runtime e log delle richieste catturate',
  'settings.developerMenu.eventLog.title': 'Registro eventi',
  'settings.developerMenu.eventLog.desc':
    'Flusso in diretta codificato a colori di tutti gli eventi di agenti, strumenti e sistemi',
  'settings.developerMenu.eventLog.allTypes': 'Tutti i tipi',
  'settings.developerMenu.eventLog.filterAgent': 'Filtro...',
  'settings.developerMenu.eventLog.download': 'Scarica',
  'settings.developerMenu.eventLog.events': 'eventi',
  'settings.developerMenu.eventLog.live': 'Vivere',
  'settings.developerMenu.eventLog.disconnected': 'Disconnesso',
  'settings.developerMenu.eventLog.waiting': 'In attesa degli eventi...',
  'settings.developerMenu.eventLog.notConnected': 'Non connesso al nucleo',
  'settings.developerMenu.eventLog.jumpToLatest': "Vai all'ultimo",
  'settings.developerMenu.eventLog.badge.tool': 'TOOL',
  'settings.developerMenu.eventLog.badge.agent': 'AGENT',
  'settings.developerMenu.eventLog.badge.info': 'INFO',
  'settings.developerMenu.eventLog.badge.mem': 'MEM',
  'settings.developerMenu.eventLog.badge.chan': 'CHAN',
  'settings.developerMenu.eventLog.badge.cron': 'CRON',
  'settings.developerMenu.eventLog.badge.hook': 'HOOK',
  'settings.developerMenu.eventLog.badge.warn': 'WARN',
  'settings.developerMenu.eventLog.badge.skill': 'SKILL',
  'settings.developerMenu.eventLog.badge.comp': 'COMP',
  'settings.developerMenu.eventLog.badge.mcp': 'MCP',
  'settings.developerMenu.intelligence.title': 'Intelligenza',
  'settings.developerMenu.intelligence.desc':
    'Area di lavoro memoria, motore subconscio, sogni e impostazioni',
  'settings.developerMenu.notificationRouting.title': 'Routing notifiche',
  'settings.developerMenu.notificationRouting.desc':
    "Punteggio di importanza IA ed escalation dell'orchestratore per avvisi di integrazione",
  'settings.developerMenu.composeioTriggers.title': 'Trigger ComposeIO',
  'settings.developerMenu.composeioTriggers.desc':
    'Visualizza cronologia e archivio dei trigger ComposeIO',
  'settings.developerMenu.composioRouting.title': 'Routing Composio (modalità diretta)',
  'settings.developerMenu.composioRouting.desc':
    'Usa la tua chiave API Composio e instrada le chiamate direttamente a backend.composio.dev',
  'settings.developerMenu.integrationTriggers.title': 'Trigger di integrazione',
  'settings.developerMenu.integrationTriggers.desc':
    'Configura le impostazioni di triage IA per i trigger di integrazione Composio',
  'settings.developerMenu.mcpServer.title': 'Server MCP',
  'settings.developerMenu.mcpServer.desc':
    'Configura i client MCP esterni per connettersi a OpenHuman',
  'settings.developerMenu.autonomy.title': 'Autonomia agente',
  'settings.developerMenu.autonomy.desc':
    'Limiti di frequenza delle azioni degli strumenti e soglie di sicurezza',
  'settings.developerMenu.autocomplete.title': 'Completamento automatico',
  'settings.developerMenu.autocomplete.desc':
    'Impostazioni del completamento automatico AI in linea e pannello di debug',
  'settings.developerMenu.voiceDebug.title': 'Voce (debug)',
  'settings.developerMenu.voiceDebug.desc':
    'Stato di runtime della dettatura vocale e impostazioni di debug',
  'settings.mcpServer.title': 'Server MCP',
  'settings.mcpServer.toolsSectionTitle': 'Strumenti disponibili',
  'settings.mcpServer.toolsSectionDesc':
    "Strumenti esposti tramite il server MCP stdio durante l'esecuzione di openhuman-core mcp",
  'settings.mcpServer.configSectionTitle': 'Configurazione client',
  'settings.mcpServer.configSectionDesc':
    'Seleziona il tuo client MCP per generare lo snippet di configurazione corretto',
  'settings.mcpServer.copySnippet': 'Copia negli appunti',
  'settings.mcpServer.copied': 'Copiato!',
  'settings.mcpServer.openConfigFile': 'Apri file di configurazione',
  'settings.mcpServer.binaryPathNotFound':
    'OpenHuman binario non trovato. Se esegui dal sorgente, compila con: cargo build --bin openhuman-core',
  'settings.mcpServer.openConfigError': 'Impossibile aprire il file di configurazione',
  'settings.mcpServer.clientClaudeDesktop': 'Claude Desktop',
  'settings.mcpServer.clientCursor': 'Cursore',
  'settings.mcpServer.clientCodex': 'Codice',
  'settings.mcpServer.clientZed': 'Zed',
  'settings.mcpServer.configFilePath': 'File di configurazione',
  'settings.mcpServer.clientSelectorAriaLabel': 'MCP selettore client',
  'settings.appearance.menuDesc': 'Scegli chiaro, scuro o il tema del sistema',
  'settings.agentAccess.title': "Accesso dell'agente al sistema operativo",
  'settings.agentAccess.menuDesc':
    "Controlla dove l'agente può read/write e se può usare la shell.",
  'settings.agentAccess.loadError': 'Impossibile caricare le impostazioni di accesso',
  'settings.agentAccess.saveError': 'Impossibile salvare le impostazioni di accesso',
  'settings.agentAccess.saved': 'Salvato — si applica al tuo prossimo messaggio.',
  'settings.agentAccess.desktopOnly':
    "Le impostazioni di accesso sono disponibili solo nell'app desktop.",
  'settings.agentAccess.loading': 'Caricamento…',
  'settings.agentAccess.accessMode': 'Modalità di accesso',
  'settings.agentAccess.tier.readonly.title': 'Sola lettura',
  'settings.agentAccess.tier.readonly.desc':
    'Legge file ed esegue comandi in sola lettura per esplorare, ma non scrive mai, modifica né esegue nulla che cambi lo stato.',
  'settings.agentAccess.tier.supervised.title': 'Chiedi prima di modificare',
  'settings.agentAccess.tier.supervised.desc':
    'Crea nuovi file liberamente, ma chiede la tua approvazione prima di modificare un file esistente, eseguire un comando, accedere alla rete o installare qualsiasi cosa.',
  'settings.agentAccess.tier.full.title': 'Accesso completo',
  'settings.agentAccess.tier.full.desc':
    "Esegue comandi con accesso completo al tuo account utente — può read/write ovunque consentito, eccetto nei depositi di credenziali e di sistema. I comandi distruttivi, l'accesso alla rete e le installazioni richiedono ancora l'approvazione.",
  'settings.agentAccess.defaultTag': '(predefinito)',
  'settings.agentAccess.fullWarning':
    "⚠ L'accesso completo esegue comandi con l'accesso completo al tuo account e non è isolato. Attivalo solo quando ti fidi dell'agente con questa macchina. Le directory delle credenziali e di sistema rimangono bloccate, e le azioni distruttive, di rete e di installazione richiedono comunque l'approvazione.",
  'settings.agentAccess.confine.label': "Limita all'area di lavoro",
  'settings.agentAccess.confine.desc':
    "Restringi l'agente alla directory di lavoro (più eventuali cartelle concesse), qualunque modalità di accesso sia selezionata. Quando è disattivato, può raggiungere ovunque l'utente possa — tranne le directory delle credenziali e di sistema sempre bloccate.",
  'settings.agentAccess.requireTaskPlanApproval.label':
    "Richiedere l'approvazione del piano di lavoro",
  'settings.agentAccess.requireTaskPlanApproval.desc':
    "Pausa prima che un agente assegnato esegua un brief del compito scritto dall'agente.",
  'settings.agentAccess.tinyplaceAutopilot.title': 'Agente tiny.place autonomo',
  'settings.agentAccess.tinyplaceAutopilot.desc':
    'Lascia che OpenHuman agisca su tiny.place da solo: in modo pianificato cerca lavoro utile — prima le taglie aperte —, fa ciò che si adatta alle sue competenze e agisce dalla tua identità. Funziona senza supervisione e può spendere, quindi tienilo su devnet durante i test. Disattivato per impostazione predefinita.',
  'settings.agentAccess.tinyplaceAutopilot.label': 'Esegui automaticamente',
  'settings.agentAccess.timeout.label': "Timeout dell'azione",
  'settings.agentAccess.timeout.desc':
    'Per quanto tempo un singolo strumento o azione può essere eseguito prima di essere annullato. Aumenta questo valore se un modello locale di grandi dimensioni viene interrotto prima di completare la risposta.',
  'settings.agentAccess.timeout.unit': 'secondi',
  'settings.agentAccess.timeout.invalid':
    "Inserisci un numero intero di secondi entro l'intervallo consentito",
  'settings.agentAccess.timeout.envOverride':
    "La variabile d'ambiente OPENHUMAN_TOOL_TIMEOUT_SECS sta sovrascrivendo questa impostazione, quindi le modifiche qui non avranno effetto finché non viene rimossa.",
  'settings.agentAccess.grantedFolders': 'Cartelle concesse',
  'settings.agentAccess.alwaysAllow': 'Strumenti sempre consentiti',
  'settings.agentAccess.alwaysAllowDesc':
    'Gli strumenti che hai contrassegnato come "Consenti sempre" in chat funzionano senza chiedere. Rimuovine uno per ricevere nuovamente la richiesta.',
  'settings.agentAccess.alwaysAllowNone': 'Ancora nessuno strumento sempre consentito.',
  'settings.agentAccess.grantedDesc':
    "Cartelle che l'agente può leggere e scrivere, oltre all'area di lavoro. Archivi di credenziali (~/.ssh, ~/.gnupg, ~/.aws, portachiavi) e directory di sistema (/etc, /System, C:\\Windows,…) sono sempre bloccati, anche all'interno di una cartella concessa.",
  'settings.agentAccess.noneGranted': 'Nessuna cartella concessa.',
  'settings.agentAccess.readWrite': 'leggere + scrivere',
  'settings.agentAccess.readOnly': 'sola lettura',
  'settings.agentAccess.remove': 'Rimuovere',
  'settings.agentAccess.pathPlaceholder': 'Percorso assoluto della cartella',
  'settings.agentAccess.accessLevelLabel': 'Livello di accesso',
  'settings.agentAccess.add': 'Aggiungi',
  'settings.agentAccess.saving': 'Salvataggio…',
  'settings.agentAccess.changesApply': 'Le modifiche verranno applicate al tuo prossimo messaggio.',
  'settings.agentAccess.directories': 'Directory',
  'settings.agentAccess.actionSandbox': 'Sandbox azioni',
  'settings.agentAccess.readWriteAccess': 'lettura + scrittura',
  'settings.agentAccess.actionSandboxDesc':
    'Directory di lavoro predefinita per gli strumenti shell, file e git.',
  'settings.agentAccess.actionDir.edit': 'Modifica',
  'settings.agentAccess.actionDir.save': 'Salva',
  'settings.agentAccess.actionDir.cancel': 'Annulla',
  'settings.agentAccess.actionDir.placeholder': 'Percorso assoluto, es. /Users/you/Projects',
  'settings.agentAccess.actionDir.envLocked':
    'Impostato da OPENHUMAN_ACTION_DIR. Modifica la variabile d’ambiente per sostituirlo.',
  'settings.agentAccess.actionDir.saved': 'Directory delle azioni aggiornata.',
  'settings.agentAccess.internalState': 'Stato interno',
  'settings.agentAccess.agentBlocked': "bloccato per l'agente",
  'settings.agentAccess.internalStateDesc':
    "Database memoria, sessioni, token e altri dati fondamentali. Non accessibile dagli strumenti dell'agente.",
  'settings.agentAccess.actionDirInputLabel': 'Percorso della sandbox delle azioni',
  'settings.agentAccess.actionDirSave': 'Salva',
  'settings.agentAccess.actionDirSaving': 'Salvataggio…',
  'settings.agentAccess.actionDirSaved': 'Sandbox delle azioni aggiornata.',
  'settings.agentAccess.actionDirEmptyError': 'Il percorso non può essere vuoto.',
  'settings.agentAccess.actionDirSaveError': 'Impossibile aggiornare la sandbox delle azioni.',
  'settings.agentAccess.actionDirEnvOverrideError':
    "OPENHUMAN_ACTION_DIR è impostata — rimuovi la variabile d'ambiente per modificarla dalle Impostazioni.",
  'settings.agentAccess.actionDirEnvOverrideNote':
    "Sovrascritta da OPENHUMAN_ACTION_DIR — rimuovi la variabile d'ambiente per gestirla dalle Impostazioni.",
  'settings.agentAccess.approvalHistory': 'Cronologia approvazioni',
  'settings.agentAccess.approvalHistoryDesc':
    "Rivedi le decisioni Approva / Nega precedenti richieste dall'agente.",
  'settings.agentAccess.viewApprovalHistory': 'Visualizza cronologia approvazioni',

  // ── Pannello Autorizzazioni ───────────────────────────────────────
  'settings.permissions.title': 'Autorizzazioni',
  'settings.permissions.menuDesc': 'Scegli cosa può fare il tuo assistente e dove può lavorare.',
  'settings.permissions.accessMode': "Cosa può fare l'assistente?",
  'settings.permissions.accessModeDesc':
    "Scegli quanta libertà ha l'assistente quando esegue azioni sul tuo computer.",
  'settings.permissions.preset.readonly.title': 'Guarda, non toccare',
  'settings.permissions.preset.readonly.desc':
    "L'assistente può leggere file ed esplorare, ma non può mai scrivere, modificare o eseguire nulla che cambi lo stato.",
  'settings.permissions.preset.supervised.title': 'Chiedimi prima',
  'settings.permissions.preset.supervised.desc':
    'Può creare nuovi file liberamente, ma chiede sempre la tua approvazione prima di modificare, eseguire comandi o accedere alla rete.',
  'settings.permissions.preset.full.title': 'Controllo completo',
  'settings.permissions.preset.full.desc':
    "Opera con il tuo pieno accesso all'account. Comandi distruttivi, accesso alla rete e installazioni richiedono ancora approvazione.",
  'settings.permissions.folders': 'Dove può lavorare?',
  'settings.permissions.foldersDesc':
    "La cartella predefinita che l'assistente legge e scrive. Puoi aggiungere altre cartelle nelle impostazioni avanzate.",

  'settings.meetings.title': 'Riunioni',
  'settings.meetings.menuDesc':
    'Accesso automatico, riepiloghi e trascrizioni di Assistente riunioni',
  'settings.meetings.desktopOnly':
    'Le impostazioni delle riunioni sono disponibili solo su desktop.',
  'settings.meetings.loading': 'Caricamento…',
  'settings.meetings.loadError': 'Impossibile caricare le impostazioni delle riunioni.',
  'settings.meetings.saveError': 'Impossibile salvare le impostazioni delle riunioni.',
  'settings.meetings.saved': 'Salvato',
  'settings.meetings.saving': 'Salvataggio…',
  'settings.meetings.autoJoin.title': 'Criterio di accesso automatico',
  'settings.meetings.autoJoin.desc': 'Quando un evento del calendario ha un link Google Meet',
  'settings.meetings.autoJoin.askEachTime': 'Chiedi ogni volta',
  'settings.meetings.autoJoin.always': 'Partecipa sempre',
  'settings.meetings.autoJoin.never': 'Non partecipare mai',
  'settings.meetings.autoSummarize.title': 'Riepilogo dopo la chiamata',
  'settings.meetings.autoSummarize.desc': 'Genera un riepilogo al termine della chiamata',
  'settings.meetings.autoSummarize.ask': 'Chiedi dopo la chiamata',
  'settings.meetings.autoSummarize.always': 'Riepiloga sempre',
  'settings.meetings.autoSummarize.never': 'Non riepilogare mai',
  'settings.meetings.listenOnly': 'Modalità solo ascolto',
  'settings.meetings.listenOnlyDesc': 'Partecipa con il microfono disattivato',
  'settings.meetings.ingestTranscripts': 'Acquisisci trascrizioni backend',
  'settings.meetings.ingestTranscriptsDesc': 'Memorizza le trascrizioni delle riunioni',
  'settings.sandbox.title': 'Esecuzione in sandbox',
  'settings.sandbox.menuDesc':
    "Configura i backend sandbox per l'isolamento degli strumenti agente.",
  'settings.sandbox.loading': 'Caricamento…',
  'settings.sandbox.desktopOnly': "Le impostazioni sandbox sono disponibili solo nell'app desktop.",
  'settings.sandbox.loadError': 'Caricamento delle impostazioni sandbox non riuscito.',
  'settings.sandbox.saveError': 'Salvataggio delle impostazioni sandbox non riuscito.',
  'settings.sandbox.saved': 'Salvato — si applica alle nuove sessioni agente.',
  'settings.sandbox.saving': 'Salvataggio…',
  'settings.sandbox.status': 'Stato',
  'settings.sandbox.dockerStatus': 'Docker',
  'settings.sandbox.available': 'Disponibile',
  'settings.sandbox.unavailable': 'Non disponibile',
  'settings.sandbox.detectedBackend': 'Backend del sistema operativo',
  'settings.sandbox.enableLabel': 'Abilita esecuzione in sandbox',
  'settings.sandbox.enableDesc': 'Esegui gli strumenti agente in un ambiente sandbox isolato.',
  'settings.sandbox.backendLabel': 'Backend',
  'settings.sandbox.backendDesc':
    "Scegli quale backend di isolamento utilizzare per l'esecuzione in sandbox.",
  'settings.sandbox.backend.auto': 'Automatico (rileva il migliore disponibile)',
  'settings.sandbox.backend.docker': 'Docker',
  'settings.sandbox.backend.landlock': 'Landlock (Linux)',
  'settings.sandbox.backend.firejail': 'Firejail (Linux)',
  'settings.sandbox.backend.bubblewrap': 'Bubblewrap (Linux)',
  'settings.sandbox.backend.none': 'Nessuno (senza sandbox)',
  'settings.sandbox.dockerSettings': 'Impostazioni Docker',
  'settings.sandbox.dockerImage': 'Immagine',
  'settings.sandbox.dockerImagePlaceholder': 'alpine:3.20',
  'settings.sandbox.memoryLimit': 'Limite di memoria',
  'settings.sandbox.memoryUnit': 'MB',
  'settings.sandbox.cpuLimit': 'Limite CPU',
  'settings.sandbox.cpuUnit': 'core',
  'settings.sandbox.envPassthrough': "Passthrough variabili d'ambiente",
  'settings.sandbox.envPassthroughDesc': "Variabili d'ambiente inoltrate nella sandbox.",
  'settings.sandbox.noEnvVars': "Nessuna variabile d'ambiente configurata.",
  'settings.approvalHistory.title': 'Cronologia approvazioni',
  'settings.approvalHistory.subtitle':
    'Decisioni recenti di approvazione degli strumenti, le più recenti per prime.',
  'settings.approvalHistory.refresh': 'Refresh',
  'settings.approvalHistory.loading': 'Caricamento cronologia approvazioni…',
  'settings.approvalHistory.retry': 'Retry',
  'settings.approvalHistory.emptyState': 'Nessuna decisione di approvazione registrata.',
  'settings.approvalHistory.errorGeneric':
    'Impossibile caricare la cronologia delle approvazioni. Riprova.',
  'settings.approvalHistory.decidedAt': 'Deciso il {date}',
  'settings.approvalHistory.decision.approveOnce': 'Approvato una volta',
  'settings.approvalHistory.decision.approveAlways': 'Sempre consentito',
  'settings.approvalHistory.decision.deny': 'Denied',
  'settings.theme.variantLight': 'Chiaro',
  'settings.theme.variantDark': 'Scuro',
  'settings.theme.variantAuto': 'Automatico',
  'settings.theme.variantAria': 'Variante del tema',
  'settings.theme.backdropHeading': 'Sfondo',
  'settings.theme.backdrop.mesh': 'Reticolo',
  'settings.theme.backdrop.solid': 'Tinta unita',
  'settings.theme.backdrop.image': 'Immagine',
  'settings.theme.backdropImageUrl': "URL dell'immagine di sfondo",
  'settings.theme.backdropDots': 'Mostra punti di sfondo',
  'settings.theme.backdropHint':
    'Il reticolo mostra il gradiente animato; Tinta unita usa uno sfondo piatto; Immagine usa la tua.',
  'settings.theme.autoForkHint':
    'Modificando un preset le tue modifiche vengono salvate automaticamente come nuovo tema personalizzato.',
  'settings.theme.title': 'Studio Temi',
  'settings.theme.menuDesc':
    'Personalizza completamente colori e caratteri, oppure scegli un tema predefinito.',
  'settings.theme.presetsHeading': 'Temi',
  'settings.theme.builtInBadge': 'Predefinito',
  'settings.theme.customBadge': 'Personalizzato',
  'settings.theme.customizeHint':
    'I temi predefiniti sono di sola lettura. Duplica questo tema per modificarne colori e caratteri.',
  'settings.theme.duplicate': 'Duplica e personalizza',
  'settings.theme.copyName': '{name} (personalizzato)',
  'settings.theme.importedName': 'Tema importato',
  'settings.theme.contrastWarn':
    'Contrasto ridotto tra testo e sfondo — questo tema potrebbe risultare difficile da leggere.',
  'settings.theme.group.surfaces': 'Superfici',
  'settings.theme.group.text': 'Testo',
  'settings.theme.group.borders': 'Bordi',
  'settings.theme.group.accents': "Colori d'accento",
  'settings.theme.showShades': "Mostra tutte le tonalità d'accento",
  'settings.theme.hideShades': "Nascondi tutte le tonalità d'accento",
  'settings.theme.fontsHeading': 'Caratteri',
  'settings.theme.fontRole.title': 'Titolo',
  'settings.theme.fontRole.heading': 'Intestazione',
  'settings.theme.fontRole.body': 'Corpo',
  'settings.theme.fontRole.mono': 'Monospazio',
  'settings.theme.fontRole.serif': 'Con grazie',
  'settings.theme.fontCurrent': 'Attuale',
  'settings.theme.actions': 'Gestisci tema',
  'settings.theme.reset': 'Reimposta personalizzazioni',
  'settings.theme.delete': 'Elimina tema',
  'settings.theme.export': 'Copia JSON',
  'settings.theme.copied': 'Copiato!',
  'settings.theme.import': 'Importa tema',
  'settings.theme.importHint':
    'Incolla il JSON di un tema esportato per aggiungerlo come tema personalizzato.',
  'settings.theme.importApply': 'Importa',
  'settings.theme.importError': 'Impossibile analizzare quel JSON del tema.',
  'settings.appearance.title': 'Aspetto',
  'settings.appearance.themeHeading': 'Tema',
  'settings.appearance.themeAria': 'Tema',
  'settings.appearance.modeLight': 'Luce',
  'settings.appearance.modeLightDesc': 'Superfici luminose, testo scuro.',
  'settings.appearance.modeDark': 'Scuro',
  'settings.appearance.modeDarkDesc': 'Superfici scure, più facili per gli occhi dopo il tramonto.',
  'settings.appearance.modeSystem': 'Sistema di corrispondenza',
  'settings.appearance.modeSystemDesc':
    "Segui l'impostazione dell'aspetto del tuo sistema operativo.",
  'settings.appearance.helperText':
    'La modalità oscura trasforma l\'intera app (chat, impostazioni, pannelli) in una tavolozza scura. Il "sistema di corrispondenza" segue l\'aspetto del tuo sistema operativo e si aggiorna in tempo reale.',
  'settings.appearance.fontSizeHeading': 'Dimensione del carattere',
  'settings.appearance.fontSizeAria': 'Dimensione del carattere',
  'settings.appearance.fontSizeSmall': 'Piccolo',
  'settings.appearance.fontSizeSmallDesc': 'Testo compatto — più contenuti sullo schermo.',
  'settings.appearance.fontSizeMedium': 'Medio',
  'settings.appearance.fontSizeMediumDesc': 'La dimensione predefinita ed equilibrata.',
  'settings.appearance.fontSizeLarge': 'Grande',
  'settings.appearance.fontSizeLargeDesc': 'Testo più grande per una lettura più facile.',
  'settings.appearance.fontSizeXLarge': 'Molto grande',
  'settings.appearance.fontSizeXLargeDesc': 'Il testo più grande, per la massima leggibilità.',
  'settings.appearance.fontSizeHelperText':
    'Ridimensiona il testo in tutta l’app — chat, impostazioni e pannelli — indipendentemente dall’impostazione del carattere del sistema.',
  'settings.appearance.tabBarHeading': 'Barra delle schede inferiore',
  'settings.appearance.tabBarAlwaysShowLabels': 'Mostra sempre le etichette',
  'settings.appearance.tabBarAlwaysShowLabelsDesc':
    'Quando disattivata, le etichette vengono visualizzate solo al passaggio del mouse o per la scheda attiva.',
  'settings.appearance.chatHeading': 'Chat',
  'settings.appearance.assistantTextMode': "Risposte dell'assistente in testo",
  'settings.appearance.hideAgentInsights': 'Nascondi il ragionamento dell’agente',
  'settings.appearance.hideAgentInsightsDesc':
    'Comprime la cronologia in tempo reale dei passaggi dell’agente nella chat. Un link lampeggiante «Elaborazione» consente comunque di aprire l’intero processo.',
  'settings.appearance.assistantTextModeDesc':
    "Mostra le risposte dell'assistente come testo senza cornice mantenendo i tuoi messaggi nei fumetti.",
  'settings.mascot.active': 'Attivo',
  'settings.mascot.characterDesc': 'Descrizione personaggio',
  'settings.mascot.characterDraft': 'Bozza',
  'settings.mascot.characterHeading': 'Intestazione personaggio',
  'settings.mascot.customGifError':
    'Immettere un HTTPS .gif URL, loopback HTTP .gif URL, file:// .gif URL o un percorso .gif locale.',
  'settings.mascot.customGifHeading': 'Avatar GIF personalizzato',
  'settings.mascot.customGifLabel': 'Avatar GIF personalizzato URL',
  'settings.mascot.customGifPlaceholder': 'https://example.com/avatar.gif',
  'settings.mascot.characterPreview': 'Anteprima',
  'settings.mascot.characterStates': 'stati',
  'settings.mascot.characterVisemes': 'visemi',
  'settings.mascot.colorAria': 'OpenHuman colore',
  'settings.mascot.colorDesc': 'Descrizione colore',
  'settings.mascot.colorHeading': 'Intestazione colore',
  'settings.mascot.colorBlack': 'Nero',
  'settings.mascot.colorBurgundy': 'Borgogna',
  'settings.mascot.colorCustom': 'Personalizzato',
  'settings.mascot.colorNavy': 'Blu marino',
  'settings.mascot.primaryColor': 'Colore primario',
  'settings.mascot.secondaryColor': 'Colore secondario',
  'settings.mascot.colorYellow': 'Giallo',
  'settings.mascot.libraryUnavailable': 'OpenHuman libreria non disponibile',
  'settings.mascot.title': 'OpenHuman',
  'settings.mascot.loadingLibrary': 'Caricamento libreria OpenHuman…',
  'settings.mascot.loadDetailError': 'Impossibile caricare la mascotte.',
  'settings.mascot.loadLibraryError': 'Impossibile caricare la libreria delle mascotte.',
  'settings.mascot.localDefault': 'OpenHuman locale (predefinito)',
  'settings.mascot.menuTitle': 'Mascotte',
  'settings.mascot.menuDesc': "Scegli il colore della mascotte usato in tutta l'app",
  'settings.mascot.noCharacters': 'Nessun personaggio OpenHuman disponibile',
  'settings.mascot.noColorVariants': 'Nessuna variante di colore',
  'settings.mascot.voice.current': 'attuale',
  'settings.mascot.voice.customDesc':
    "Trova gli ID vocali su api.elevenlabs.io/v1/voices o nel tuo dashboard ElevenLabs. Viene salvato solo l'ID — la tua chiave API rimane sul backend.",
  'settings.mascot.voice.customHeading': 'ID vocale personalizzato',
  'settings.mascot.voice.customOption': 'Altro (incolla ID vocale)…',
  'settings.mascot.voice.customPlaceholder': 'ad es. 21m00Tcm4TlvDq8ikWAM',
  'settings.mascot.voice.desc':
    "Scegli la voce ElevenLabs che la mascotte usa per le risposte parlate. Filtra per genere, scegli dall'elenco curato, incolla un ID personalizzato, oppure lascia che l'app scelga una voce che corrisponda alla lingua dell'interfaccia.",
  'settings.mascot.voice.genderFemale': 'Femminile',
  'settings.mascot.voice.genderHeading': 'Genere della voce',
  'settings.mascot.voice.genderMale': 'Maschile',
  'settings.mascot.voice.heading': 'Voce',
  'settings.mascot.voice.preset': 'Preimpostazione voce',
  'settings.mascot.voice.presetHeading': 'Preimpostazione voce',
  'settings.mascot.voice.preview': 'Anteprima voce',
  'settings.mascot.voice.previewError': 'Anteprima voce non riuscita',
  'settings.mascot.voice.previewText':
    "Ciao, sono il tuo assistente. Questa è un'anteprima vocale.",
  'settings.mascot.voice.previewing': 'Anteprima in corso…',
  'settings.mascot.voice.reset': 'Ripristina ai valori predefiniti',
  'settings.mascot.voice.useLocaleDefault': "Abbina la lingua dell'app",
  'settings.mascot.voice.useLocaleDefaultDesc':
    "Scegli automaticamente una voce per la lingua dell'interfaccia corrente.",
  'settings.persona.title': 'Persona',
  'settings.persona.menuTitle': 'Persona',
  'settings.persona.menuDesc':
    "Nome, personalità, avatar e voce — il tuo assistente come un'unica identità",
  'settings.persona.identityHeading': 'Identità',
  'settings.persona.identityDesc':
    "Un nome visualizzato e una breve descrizione per il tuo assistente. Visualizzati nell'app; non cambiano il modo in cui l'assistente ragiona.",
  'settings.persona.displayNameLabel': 'Nome visualizzato',
  'settings.persona.displayNamePlaceholder': 'ad es. Nova',
  'settings.persona.descriptionLabel': 'Descrizione',
  'settings.persona.descriptionPlaceholder':
    'ad esempio. Un assistente calmo e conciso per il mio team.',
  'settings.persona.soul.heading': 'Personalità (ANIMA.md)',
  'settings.persona.soul.desc':
    "La personalità che l'assistente segue in ogni conversazione. Le modifiche vengono salvate nel tuo workspace e avranno effetto alla risposta successiva.",
  'settings.persona.soul.editorLabel': 'Contenuti di SOUL.md',
  'settings.persona.soul.reset': 'Ripristina impostazioni predefinite',
  'settings.persona.soul.usingDefault': 'Usando il predefinito incluso',
  'settings.persona.soul.loadError': 'Impossibile caricare SOUL.md',
  'settings.persona.soul.saveError': 'Impossibile salvare SOUL.md',
  'settings.persona.soul.resetError': 'Impossibile reimpostare SOUL.md',
  'settings.persona.appearanceHeading': 'Avatar e Voce',
  'settings.persona.appearanceDesc':
    "Il colore della mascotte, l'avatar personalizzato GIF e la voce di risposta sono configurati nelle impostazioni della mascotte.",
  'settings.persona.openMascotSettings': 'Apri le impostazioni del Mascotte',
  'settings.memoryWindow.balanced.badge': 'Consigliato',
  'settings.memoryWindow.balanced.hint':
    'Predefinito sensato — buona continuità senza bruciare token extra a ogni esecuzione.',
  'settings.memoryWindow.balanced.label': 'Bilanciato',
  'settings.memoryWindow.description':
    "Quanto contesto ricordato OpenHuman inietta in ogni nuova esecuzione dell'agente. Finestre più grandi fanno sentire l'agente più consapevole delle conversazioni passate ma usano più token — e costano di più — a ogni esecuzione.",
  'settings.memoryWindow.extended.badge': 'Più contesto',
  'settings.memoryWindow.extended.hint':
    'Più memoria a lungo termine iniettata in ogni esecuzione. Costo token più alto per turno.',
  'settings.memoryWindow.extended.label': 'Esteso',
  'settings.memoryWindow.maximum.badge': 'Costo più alto',
  'settings.memoryWindow.maximum.hint':
    'La più grande finestra sicura. Migliore continuità, bolletta token significativamente più alta a ogni esecuzione.',
  'settings.memoryWindow.maximum.label': 'Massimo',
  'settings.memoryWindow.minimal.badge': 'Più economico',
  'settings.memoryWindow.minimal.hint':
    'Finestra di memoria minima. Più economico, più veloce, minore continuità tra esecuzioni.',
  'settings.memoryWindow.minimal.label': 'Minimo',
  'settings.memoryWindow.title': 'Finestra di memoria a lungo termine',
  'settings.agentbox.title': 'AgentBox',
  'settings.agentbox.desc':
    "Stato dell'adattatore del marketplace GMI Cloud e configurazione del provider",
  'settings.agentbox.intro':
    "Stato di sola lettura dell'adattatore del marketplace AgentBox. La modalità e il provider GMI MaaS vengono impostati tramite variabili d'ambiente all'avvio del core.",
  'settings.agentbox.modeLabel': 'Modalità marketplace',
  'settings.agentbox.providerHeading': 'Provider GMI MaaS',
  'settings.agentbox.slug': 'Identificativo del provider',
  'settings.agentbox.baseUrl': 'URL di base',
  'settings.agentbox.model': 'Modello',
  'settings.agentbox.notConfigured':
    "Non configurato. Imposta le variabili d'ambiente GMI_MAAS_BASE_URL, GMI_MAAS_API_KEY e GMI_MODELS.",
  'settings.agentbox.unavailable': 'Stato di AgentBox non disponibile',
  'settings.modelHealth.title': 'Salute del modello',
  'settings.modelHealth.desc':
    'Qualità per modello, tasso di allucinazione e confronto dei costi tra modelli attivi',
  'settings.modelHealth.allStatuses': 'Tutti gli stati',
  'settings.modelHealth.models': 'modelli',
  'settings.modelHealth.loading': 'Caricamento dei dati del modello...',
  'settings.modelHealth.empty': 'Nessun modello registrato',
  'settings.modelHealth.col.model': 'Modello',
  'settings.modelHealth.col.quality': 'Qualità',
  'settings.modelHealth.col.halluc': 'Tasso di allucinazioni',
  'settings.modelHealth.col.cost': 'Costo / 1M fuori',
  'settings.modelHealth.col.agents': 'Agenti',
  'settings.modelHealth.col.status': 'Stato',
  'settings.modelHealth.badge.keep': 'Tenere',
  'settings.modelHealth.badge.replace': 'Sostituire',
  'settings.modelHealth.badge.staging': 'Test di staging',
  'settings.modelHealth.badge.vision': 'Solo visione',
  'settings.modelHealth.swap': 'Scambiare?',
  'settings.modelHealth.modal.title': 'Sostituire il modello?',
  'settings.modelHealth.modal.hallucRate': 'Tasso di allucinazione',
  'settings.modelHealth.modal.cancel': 'Annulla',
  'settings.modelHealth.modal.apply': 'Applica sostituzione',
  'settings.modelHealth.tag.cheaper': 'CHEAPER',
  'settings.modelHealth.tag.better': 'BETTER',
  'settings.desktopAgent.title': 'Agente desktop',
  'settings.desktopAgent.description':
    'Verifica e concedi le autorizzazioni necessarie all’agente desktop.',
  'settings.desktopAgent.microphone': 'Microfono',
  'settings.desktopAgent.grant': 'Concedi',
  'settings.desktopAgent.notRequiredOnOs': 'Non necessario su questo sistema operativo',
  'settings.desktopAgent.allGranted':
    'Tutto pronto: l’agente desktop dispone di tutte le autorizzazioni necessarie.',
  'settings.desktopAgent.recheck': 'Verifica di nuovo',
  'settings.desktopAgent.restartAndRecheck': 'Riavvia il core e verifica di nuovo',
  'settings.desktopAgent.seamless.title': 'Azioni dell’agente',
  'settings.desktopAgent.seamless.label': 'Lascia che l’agente agisca senza chiedere',
  'settings.desktopAgent.seamless.description':
    'Concedi l’accesso completo e approva automaticamente le azioni desktop (aprire app, controllarne le interfacce) così l’agente le esegue senza una richiesta di conferma.',
  'settings.desktopAgent.seamless.note':
    'Solo le azioni desktop saltano la richiesta — eseguire comandi shell, modificare file, le richieste di rete e l’installazione di software continuano a chiedere. Disattivando questa opzione si interrompe l’approvazione automatica delle azioni desktop, ma il livello di accesso resta invariato.',
  'settings.desktopAgent.beta':
    'Beta — l’agente desktop è sperimentale e potrebbe non funzionare sempre come previsto.',
  'settings.desktopAgent.wakeWordHint': 'Di’ “Hey Tiny” prima del comando per attivare l’agente.',
  'settings.screenIntel.permissions.accessibility': 'Accessibilità',
  'settings.screenIntel.permissions.grantHint': 'Suggerimento concessione',
  'settings.screenIntel.permissions.inputMonitoring': 'Monitoraggio input',
  'settings.screenIntel.permissions.macosAppliesPrivacy': 'macOS applica privacy',
  'settings.screenIntel.permissions.openInputMonitoring': 'Richiesta…',
  'settings.screenIntel.permissions.refreshStatus': 'Aggiornamento…',
  'settings.screenIntel.permissions.refreshing': 'Aggiornamento…',
  'settings.screenIntel.permissions.requestAccessibility': 'Richiesta…',
  'settings.screenIntel.permissions.requestScreenRecording': 'Richiesta…',
  'settings.screenIntel.permissions.requesting': 'Richiesta…',
  'settings.screenIntel.permissions.restartRefresh': 'Riavvio core…',
  'settings.screenIntel.permissions.restartingCore': 'Riavvio core…',
  'settings.screenIntel.permissions.screenRecording': 'Registrazione schermo',
  'settings.screenIntel.permissions.title': 'Permessi',
  'skills.card.moreActions': 'Altre azioni',
  'skills.channelIcon.discord': 'Discord',
  'skills.channelIcon.imessage': 'iMessage',
  'skills.channelIcon.telegram': 'Telegram',
  'skills.channelIcon.web': 'Web',
  'skills.channelIcon.yuanbao': 'Yuanbao',
  'skills.composio.poweredBy': 'Offerto da Composio',
  'skills.composio.staleStatusTitle': 'Le connessioni mostrano uno stato obsoleto',
  'skills.create.allowedTools': 'Strumenti consentiti',
  'skills.create.allowedToolsHelp': 'Resi nel frontmatter SKILL.md come',
  'skills.create.allowedToolsPlaceholder': 'node_exec, fetch',
  'skills.create.author': 'Autore',
  'skills.create.authorPlaceholder': 'Il tuo nome',
  'skills.create.commaSeparated': '(separati da virgole)',
  'skills.create.createBtn': 'Crea skill',
  'skills.create.createError': 'Impossibile creare la skill',
  'skills.create.creating': 'Creazione…',
  'skills.create.description': 'Descrizione',
  'skills.create.descriptionPlaceholder': 'Cosa fa questa skill?',
  'skills.create.optional': '(facoltativo)',
  'skills.create.inputs.heading': 'Inputs',
  'skills.create.inputs.help':
    "Dichiara i parametri necessari alla skill. Lo Skills Runner visualizzerà un modulo per questi al momento dell'esecuzione.",
  'skills.create.inputs.add': 'Aggiungi input',
  'skills.create.inputs.row.name': "Nome dell'input",
  'skills.create.inputs.row.namePlaceholder': 'es. repo',
  'skills.create.inputs.row.nameError':
    'Solo lettere, cifre, underscore e trattini; deve iniziare con una lettera.',
  'skills.create.inputs.row.description': "Descrizione dell'input",
  'skills.create.inputs.row.descriptionPlaceholder': 'Cosa va in questo campo?',
  'skills.create.inputs.row.type': 'Type',
  'skills.create.inputs.row.required': 'Required',
  'skills.create.inputs.row.remove': 'Rimuovi input',
  'skills.create.inputs.type.string': 'Text',
  'skills.create.inputs.type.integer': 'Number',
  'skills.create.inputs.type.boolean': 'Sì / No',
  'skills.create.license': 'Licenza',
  'skills.create.licensePlaceholder': 'MIT',
  'skills.create.name': 'Nome',
  'skills.create.namePlaceholder': 'es. Trade Journal',
  'skills.create.scope': 'Ambito',
  'skills.create.scopeProjectHint': '/.openhuman/skills/',
  'skills.create.scopeUserHint':
    'Scritto in ~/.openhuman/skills/<slug>/SKILL.md — disponibile in tutti i workspace.',
  'skills.create.slugLabel': 'Etichetta slug',
  'skills.create.subtitle': 'SKILL.md',
  'skills.create.tags': 'Tag',
  'skills.create.tagsPlaceholder': 'trading, ricerca',
  'skills.create.title': 'Nuova skill',
  'skills.detail.allowedTools': 'Strumenti consentiti',
  'skills.detail.author': 'Autore',
  'skills.detail.license': 'Licenza',
  'skills.detail.bundledResources': 'Risorse incluse',
  'skills.detail.description': 'Descrizione',
  'skills.detail.closeAriaLabel': 'Chiudi dettagli skill',
  'skills.detail.location': 'Posizione',
  'skills.detail.noBundledResources': 'Nessuna risorsa inclusa.',
  'skills.detail.platforms': 'Piattaforme',
  'skills.detail.relatedSkills': 'Skill correlate',
  'skills.detail.source': 'URL sorgente',
  'skills.detail.sourceFormat': 'Formato',
  'skills.detail.stars': 'Stelle',
  'skills.detail.tags': 'Tag',
  'skills.detail.warnings': 'Avvertenze',
  'skills.detail.version': 'Versione',
  'skills.install.errors.alreadyInstalledHint':
    "Una skill con questo slug esiste già nell'area di lavoro. Rimuovilo prima o modifica il frontmatter `metadata.id` / `name`.",
  'skills.install.errors.alreadyInstalledTitle': 'Competenza già installata',
  'skills.install.errors.fetchFailedHint':
    "La richiesta non è stata completata correttamente. Controlla che URL punti a un file pubblico raggiungibile e che l'host abbia restituito una risposta 2xx.",
  'skills.install.errors.fetchFailedTitle': 'Recupero non riuscito',
  'skills.install.errors.fetchTimedOutHint':
    "L'host remoto non ha risposto in tempo. Riprovare o aumentare il timeout (1-600 s).",
  'skills.install.errors.fetchTimedOutTitle': 'Recupero scaduto',
  'skills.install.errors.fetchTooLargeHint':
    'SKILL.md deve essere inferiore a 1 MiB. Dividi le risorse raggruppate in file "riferimenti/" o "script/" invece di incorporarle.',
  'skills.install.errors.fetchTooLargeTitle': 'SKILL.md troppo grande',
  'skills.install.errors.genericHint':
    'Il backend ha restituito un errore. Il messaggio grezzo è mostrato di seguito.',
  'skills.install.errors.genericTitle': 'Impossibile installare la competenza',
  'skills.install.errors.invalidSkillHint':
    'Il frontmatter deve essere YAML valido con campi `nome` e `descrizione` non vuoti, terminati da `---`.',
  'skills.install.errors.invalidSkillTitle': 'SKILL.md non ha analizzato',
  'skills.install.errors.invalidUrlHint':
    'Sono consentiti solo HTTPS URL pubblici. Gli host privati, di loopback e di metadati sono bloccati.',
  'skills.install.errors.invalidUrlTitle': 'URL rifiutato',
  'skills.install.errors.unsupportedUrlHint':
    "Funzionano solo i collegamenti diretti `.md`. Per GitHub, collegamento a un file (github.com/owner/repo/blob/.../SKILL.md): l'albero e le radici del repository non sono installati.",
  'skills.install.errors.unsupportedUrlTitle': 'URL modulo non supportato',
  'skills.install.errors.writeFailedHint':
    "La directory delle competenze dell'area di lavoro non era scrivibile. Controlla i permessi del filesystem per `<workspace>/.openhuman/skills/`.",
  'skills.install.errors.writeFailedTitle': 'Impossibile scrivere SKILL.md',
  'skills.install.fetchLog': 'Log di fetch',
  'skills.install.fetchingPrefix': 'Recupero di',
  'skills.install.fetchingSuffix': 'ciò può richiedere fino al timeout configurato.',
  'skills.install.installBtn': 'Installazione…',
  'skills.install.installComplete': 'Installazione completata',
  'skills.install.installing': 'Installazione…',
  'skills.install.parseWarnings': 'Avvertenze di parsing',
  'skills.install.rawError': 'Errore grezzo',
  'skills.install.subtitleMiddle': 'su HTTPS e lo installa in',
  'skills.install.subtitlePrefix': 'Recupera un singolo',
  'skills.install.subtitleSuffix': 'solo HTTPS; gli host privati ​​e di loopback sono bloccati.',
  'skills.install.successDiscovered': 'Scoperto {count} nuove abilità.',
  'skills.install.successNoNewIds':
    "Abilità installata, ma non sono apparsi nuovi ID abilità: il catalogo potrebbe già contenere un'abilità con lo stesso slug.",
  'skills.install.timeoutHint': '(secondi, opzionale)',
  'skills.install.timeoutHelp':
    'Il valore predefinito è 60 secondi. I valori esterni a 1-600 sono bloccati sul lato server.',
  'skills.install.timeoutInvalid': 'Deve essere un numero intero compreso tra 1 e 600.',
  'skills.install.timeoutLabel': 'Etichetta timeout',
  'skills.install.timeoutPlaceholder': '60',
  'skills.install.title': 'Installa skill da URL',
  'skills.install.urlHelpMiddle': 'file.',
  'skills.install.urlHelpPrefix': 'Collegamento diretto a un',
  'skills.install.urlHelpSuffix': 'URLs riscrittura automatica in',
  'skills.install.urlInvalidPrefix': 'URL deve essere un collegamento',
  'skills.install.urlInvalidSuffix': 'ben formato.',
  'skills.install.urlLabel': 'URL skill',
  'skills.install.urlPlaceholder': 'https://raw.githubusercontent.com/owner/repo/main/SKILL.md',
  'skills.meetingBots.bannerDesc': 'Descrizione banner',
  'skills.meetingBots.bannerTitle': 'Titolo banner',
  'skills.meetingBots.busyTitle': 'OpenHuman è occupato',
  'skills.meetingBots.comingSoon': 'In arrivo',
  'skills.meetingBots.couldNotLeaveTitle': 'Impossibile uscire dalla riunione',
  'skills.meetingBots.couldNotStartTitle': 'Impossibile avviare OpenHuman',
  'skills.meetingBots.displayName': 'Nome visualizzato',
  'skills.meetingBots.failedToStart': 'Avvio di OpenHuman fallito.',
  'skills.meetingBots.joiningMessage': 'Apparirà come partecipante tra qualche secondo.',
  'skills.meetingBots.joiningTitle': 'OpenHuman si sta unendo alla riunione',
  'skills.meetingBots.meetingLink': 'Link della riunione',
  'skills.meetingBots.modalAriaLabel': 'Invia OpenHuman a una riunione',
  'skills.meetingBots.modalDesc': 'Descrizione modale',
  'skills.meetingBots.modalTitle': 'Invia OpenHuman a una riunione',
  'skills.meetingBots.newBadge': 'Nuovo',
  'skills.meetingBots.platformComingSoon': 'Il supporto {label} sarà presto disponibile.',
  'skills.meetingBots.platformHints.gmeet': 'meet.google.com/abc-defg-hij',
  'skills.meetingBots.platformHints.teams': 'teams.microsoft.com/...',
  'skills.meetingBots.platformHints.webex': 'webex.com/meet/...',
  'skills.meetingBots.platformHints.zoom': 'zoom.us/j/...',
  'skills.meetingBots.platforms.gmeet': 'Google Incontra',
  'skills.meetingBots.platforms.teams': 'Microsoft Teams',
  'skills.meetingBots.platforms.webex': 'Webex',
  'skills.meetingBots.platforms.zoom': 'Zoom',
  'skills.meetingBots.sendTo': 'Invia a',
  'skills.meetingBots.serverOverloaded':
    'OpenHuman è sottoposto a un carico elevato in questo momento. Riprova tra qualche minuto.',
  'skills.meetingBots.soonSuffix': 'presto',
  'skills.meetingBots.starting': 'Avvio…',
  'skills.meetingBots.recentCallsAriaLabel': 'Chiamate recenti delle riunioni',
  'skills.meetingBots.recentCallsHeading': 'Chiamate recenti',
  'skills.meetingBots.recentCallsEmpty':
    'Nessuna chiamata precedente — la cronologia delle riunioni apparirà qui.',
  'skills.meetingBots.recentCallsLoading': 'Caricamento\u2026',
  'skills.meetingBots.recentCallAddedBy': 'Aggiunto da {name}',
  'skills.meetingBots.recentCallParticipants': 'Con {names}',
  'skills.meetingBots.recentCallTurnSingular': '{count} turno',
  'skills.meetingBots.recentCallTurnPlural': '{count} turni',
  'skills.meetingBots.recentCallDuration': '{seconds}s in chiamata',
  'skills.meetingBots.callDetailLoading': 'Caricamento della trascrizione…',
  'skills.meetingBots.callDetailError': 'Impossibile caricare la trascrizione.',
  'skills.meetingBots.callDetailRetry': 'Riprova',
  'skills.meetingBots.callDetailEmpty':
    'Per questa chiamata non è stata registrata alcuna trascrizione o riepilogo.',
  'skills.meetingBots.callSummaryHeading': 'Riepilogo',
  'skills.meetingBots.callKeyPointsHeading': 'Punti chiave',
  'skills.meetingBots.callActionItemsHeading': 'Azioni da svolgere',
  'skills.meetingBots.callTranscriptHeading': 'Trascrizione',
  'skills.meetingBots.liveBadge': 'In diretta',
  'skills.meetingBots.liveTitle': 'In Riunione',
  'skills.meetingBots.liveStatusJoining': 'Partecipando\u2026',
  'skills.meetingBots.liveStatusActive': 'In diretta nella riunione',
  'skills.meetingBots.liveStatusListening': 'In ascolto (muto)',
  'skills.meetingBots.liveStatusEnded': 'Riunione terminata',
  'skills.meetingBots.liveStatusError': 'Partecipazione fallita',
  'skills.meetingBots.liveTranscriptHeading': 'Trascrizione dal vivo',
  'skills.meetingBots.liveTranscriptEmpty': 'In attesa di parlato…',
  'skills.meetingBots.leaveButton': 'Esci',
  'skills.meetingBots.leavingButton': 'Uscita in corso…',
  'skills.meetingBots.respondToParticipant': 'Il tuo nome in questa riunione',
  'skills.meetingBots.respondToParticipantHint':
    'es. Mario (il tuo nome visualizzato nella chiamata)',
  'skills.meetingBots.respondToParticipantDesc':
    'Inserisci il tuo nome visualizzato esatto nella riunione. Il bot risponde solo quando pronunci il suo nome (frase di attivazione).',
  'skills.meetingBots.wakePhrase': 'Frase di attivazione',
  'skills.meetingBots.wakePhraseHint': 'Hey OpenHuman',
  'skills.meetingBots.wakePhraseDesc': 'Il partecipante deve dirlo prima che il bot risponda.',
  'skills.meetingBots.activeMode': 'Rispondi quando mi rivolgo a lui',
  'skills.meetingBots.activeModeDesc':
    'Se attivo, il bot risponde ad alta voce dopo che pronunci la sua frase di attivazione. Se disattivato, si limita ad ascoltare e trascrivere.',
  'skills.meetingBots.history.allPlatforms': 'Tutte le piattaforme',
  'skills.meetingBots.history.copyTranscript': 'Copia',
  'skills.meetingBots.history.downloadTranscript': 'Scarica',
  'skills.meetingBots.history.earlier': 'Prima',
  'skills.meetingBots.history.participantCount': '{count} partecipante',
  'skills.meetingBots.history.participantCountPlural': '{count} partecipanti',
  'skills.meetingBots.history.runWithOpenHuman': 'Esegui con OpenHuman',
  'skills.meetingBots.history.searchPlaceholder': 'Cerca chiamate…',
  'skills.meetingBots.history.selectPrompt':
    'Seleziona una chiamata per vedere il riepilogo e la trascrizione.',
  'skills.meetingBots.history.today': 'Oggi',
  'skills.meetingBots.history.yesterday': 'Ieri',
  'skills.meetingBots.upcoming.heading': 'In arrivo',
  'skills.meetingBots.upcoming.when': 'Quando',
  'skills.meetingBots.upcoming.meeting': 'Riunione',
  'skills.meetingBots.upcoming.platform': 'Piattaforma',
  'skills.meetingBots.upcoming.people': 'Persone',
  'skills.meetingBots.upcoming.joinPolicy': 'Politica di partecipazione',
  'skills.meetingBots.upcoming.joinNow': 'Partecipa ora',
  'skills.meetingBots.upcoming.joinNowAriaLabel': 'Partecipa a {title}',
  'skills.meetingBots.upcoming.join': 'Partecipa',
  'skills.meetingBots.upcoming.auto': 'Auto',
  'skills.meetingBots.upcoming.ask': 'Chiedi',
  'skills.meetingBots.upcoming.skip': 'Salta',
  'skills.meetingBots.upcoming.today': 'Oggi',
  'skills.meetingBots.upcoming.tomorrow': 'Domani',
  'skills.meetingBots.upcoming.empty':
    'Nessuna riunione in arrivo — collega Google Calendar per vederle qui.',
  'skills.meetingBots.upcoming.error': 'Impossibile caricare le riunioni in arrivo.',
  'skills.meetingBots.upcoming.retry': 'Riprova',
  'skills.meetingBots.upcoming.refresh': 'Aggiorna',
  'skills.meetingBots.upcoming.filterAll': 'Tutte le piattaforme',
  'skills.meetingBots.upcoming.participants': '{count} partecipanti',
  'skills.meetingBots.upcoming.imminent': 'Inizia presto',
  'skills.meetingBots.upcoming.autoJoinsAt': 'Partecipazione automatica ~alle {time}',
  'skills.meetingBots.upcoming.asksAtStart': "Chiede all'inizio",
  'skills.meetingBots.upcoming.watchCalendarHint':
    "Attiva 'Monitora il mio calendario' nelle Impostazioni predefinite (icona a ingranaggio) affinché Auto/Chiedi abbiano effetto — altrimenti queste politiche vengono salvate ma non si attivano.",
  'skills.meetingBots.relative.now': 'adesso',
  'skills.meetingBots.relative.inMinutes': 'tra {count}m',
  'skills.meetingBots.relative.inHours': 'tra {count}h',
  'skills.meetingBots.relative.minutesAgo': '{count}m fa',
  'skills.meetingBots.relative.hoursAgo': '{count}h fa',
  'skills.meetingBots.relative.daysAgo': '{count}g fa',
  'skills.meetingBots.relative.yesterday': 'ieri',
  'skills.meetingBots.defaults.drawerTitle': 'Impostazioni riunione',
  'skills.meetingBots.defaults.closeDrawer': 'Chiudi',
  'skills.meetingBots.defaults.openDefaults': 'Impostazioni riunione',
  'skills.meetingBots.defaults.watchCalendar': 'Monitora il mio calendario',
  'skills.meetingBots.defaults.watchCalendarDesc':
    'Consenti a OpenHuman di monitorare il tuo calendario connesso per poter partecipare automaticamente o richiedere conferma per le riunioni in base alle politiche seguenti. Questo è separato dalle notifiche di promemoria delle riunioni.',
  'skills.meetingBots.defaults.globalPolicy': 'Politica di partecipazione automatica globale',
  'skills.meetingBots.defaults.perPlatformTitle': 'Impostazioni per piattaforma',
  'skills.meetingBots.defaults.perPlatformDesc':
    'Sostituire la politica globale per piattaforme specifiche.',
  'skills.meetingBots.defaults.useDefault': 'Usa predefinito',
  'skills.resource.preview.closeAriaLabel': 'Chiudi anteprima',
  'skills.resource.preview.failed': 'Anteprima fallita',
  'skills.resource.preview.loading': 'Caricamento anteprima…',
  'skills.resource.tree.assets': 'Risorse',
  'skills.resource.tree.examples': 'Esempi',
  'skills.resource.tree.other': 'Altro',
  'skills.resource.tree.prompts': 'Prompt',
  'skills.resource.tree.references': 'Riferimenti',
  'skills.resource.tree.scripts': 'Script',
  'skills.resource.tree.templates': 'Modelli',
  'skills.resource.tree.empty': 'Nessuna risorsa inclusa.',
  'skills.search.placeholder': 'Segnaposto',
  'skills.setup.autocomplete.acceptKey': 'Tasto di accettazione',
  'skills.setup.autocomplete.activeDesc': 'Descrizione attivo',
  'skills.setup.autocomplete.activeTitle': 'Autocompletamento attivo',
  'skills.setup.autocomplete.customizeSettings': 'Personalizza impostazioni',
  'skills.setup.autocomplete.debounce': 'Antirimbalzo',
  'skills.setup.autocomplete.description': 'Descrizione',
  'skills.setup.autocomplete.enableBtn': 'Abilitazione...',
  'skills.setup.autocomplete.enableError': 'Abilitazione autocompletamento fallita',
  'skills.setup.autocomplete.enabling': 'Abilitazione...',
  'skills.setup.autocomplete.notSupported': 'Non supportato',
  'skills.setup.autocomplete.stepEnable': 'Abilita completamenti inline',
  'skills.setup.autocomplete.stepSuccess': 'Pronto',
  'skills.setup.autocomplete.stylePreset': 'Preset di stile',
  'skills.setup.autocomplete.stylePresetValue': 'Bilanciato (configurabile in seguito)',
  'skills.setup.autocomplete.title': 'Autocompletamento testo',
  'skills.setup.screenIntel.activeDesc': 'Descrizione attivo',
  'skills.setup.screenIntel.activeTitle': 'Screen Intelligence abilitato',
  'skills.setup.screenIntel.advancedSettings': 'Impostazioni avanzate',
  'skills.setup.screenIntel.allGranted': 'Tutti i permessi concessi',
  'skills.setup.screenIntel.captureMode': 'Modalità di cattura',
  'skills.setup.screenIntel.captureModeValue': 'Tutte le finestre (configurabile in seguito)',
  'skills.setup.screenIntel.deniedHint':
    'Dopo aver concesso i permessi in Impostazioni di sistema, clicca sotto per riavviare e raccogliere le modifiche.',
  'skills.setup.screenIntel.enableBtn': 'Abilitazione...',
  'skills.setup.screenIntel.enableDesc':
    's sul tuo schermo e fornisce contesto utile al tuo agente',
  'skills.setup.screenIntel.enableError': 'Abilitazione Screen Intelligence fallita',
  'skills.setup.screenIntel.enabling': 'Abilitazione...',
  'skills.setup.screenIntel.grant': 'Apertura...',
  'skills.setup.screenIntel.granted': 'Concesso',
  'skills.setup.screenIntel.macosOnly': 'Solo macOS',
  'skills.setup.screenIntel.opening': 'Apertura...',
  'skills.setup.screenIntel.panicHotkey': 'Hotkey panico',
  'skills.setup.screenIntel.permAccessibility': 'Accessibilità',
  'skills.setup.screenIntel.permInputMonitoring': 'Monitoraggio input',
  'skills.setup.screenIntel.permScreenRecording': 'Registrazione schermo',
  'skills.setup.screenIntel.permissionsDesc': 'Descrizione permessi',
  'skills.setup.screenIntel.permissionPathLabel': 'macOS applica la privacy a:',
  'skills.setup.screenIntel.refreshStatus': 'Aggiorna stato',
  'skills.setup.screenIntel.restartRefresh': 'Riavvio...',
  'skills.setup.screenIntel.restarting': 'Riavvio...',
  'skills.setup.screenIntel.stepEnable': 'Abilita la skill',
  'skills.setup.screenIntel.stepPermissions': 'Concedi permessi',
  'skills.setup.screenIntel.stepSuccess': 'Pronto',
  'skills.setup.screenIntel.title': 'Intelligenza dello schermo',
  'skills.setup.screenIntel.visionModel': 'Modello vision',
  'skills.setup.voice.activation': 'Attivazione',
  'skills.setup.voice.activeDescPrefix': 'Fn',
  'skills.setup.voice.activeDescSuffix': 'Fn',
  'skills.setup.voice.activeTitle': 'Voice Intelligence attivo',
  'skills.setup.voice.customizeSettings': 'Personalizza impostazioni',
  'skills.setup.voice.downloadSttBtn': 'Scarica STT',
  'skills.setup.voice.enableDesc': 'Descrizione abilitazione',
  'skills.setup.voice.hotkey': 'Tasto di scelta rapida',
  'skills.setup.voice.startBtn': 'Avvio...',
  'skills.setup.voice.startError': 'Avvio del server vocale fallito',
  'skills.setup.voice.starting': 'Avvio...',
  'skills.setup.voice.stepEnable': 'Avvia il server vocale',
  'skills.setup.voice.stepSetup': 'Download modello richiesto',
  'skills.setup.voice.stepSuccess': 'Pronto',
  'skills.setup.voice.sttNotReady': 'Modello speech-to-text non pronto',
  'skills.setup.voice.sttNotReadyDesc':
    'Voice Intelligence richiede un modello Whisper locale per la trascrizione. Scaricalo dalle impostazioni Modello locale.',
  'skills.setup.voice.sttReady': 'Modello speech-to-text pronto',
  'skills.setup.voice.sttReturnHint': 'Suggerimento ritorno STT',
  'skills.setup.voice.title': 'Intelligenza vocale',
  'skills.uninstall.couldNotUninstall': 'Impossibile disinstallare',
  'skills.uninstall.description':
    "Questa operazione elimina permanentemente la directory della skill e tutte le sue risorse incluse. L'agente smetterà di vederla al turno successivo.",
  'skills.uninstall.title': 'Disinstalla',
  'skills.uninstall.uninstallBtn': 'Disinstalla',
  'skills.uninstall.uninstalling': 'Disinstallazione…',
  'upsell.global.limitMessage': 'Aggiorna il tuo piano o ricarica i crediti per continuare',
  'upsell.global.limitTitle': 'Tu',
  'upsell.global.nearLimitMessage':
    'Hai usato il {pct}% del tuo limite di utilizzo. Aggiorna per limiti più alti.',
  'upsell.global.nearLimitTitle': 'Limite di utilizzo in avvicinamento',
  'upsell.usageLimit.bodyBudget':
    'Hai raggiunto il limite settimanale.{reset} Aggiorna il piano o ricarica crediti per evitare i limiti.',
  'upsell.usageLimit.bodyRate':
    'Hai raggiunto il limite di velocità di inferenza di 10 ore.{reset} Aggiorna per limiti più alti.',
  'upsell.usageLimit.heading': 'Limite di utilizzo raggiunto',
  'upsell.usageLimit.notNow': 'Non ora',
  'upsell.usageLimit.perWindow': '{amount}',
  'upsell.usageLimit.planIncludes': '{plan}',
  'upsell.usageLimit.resetsIn': 'Si resetta {time}.',
  'upsell.usageLimit.upgradePlan': 'Aggiorna piano',
  'upsell.usageLimit.weeklyInference': '{amount}',
  'walkthrough.steps.startChat.title': 'Inizia dalla chat',
  'walkthrough.steps.startChat.content':
    'La chat è il tuo punto di partenza. Le nuove finestre si aprono con lo stesso saluto e le azioni rapide viste durante la configurazione.',
  'walkthrough.steps.sayHello.title': 'Saluta',
  'walkthrough.steps.sayHello.content':
    'Tocca qui per avviare una conversazione con il tuo assistente IA in qualsiasi momento.',
  'walkthrough.steps.meetAi.title': 'Conosci la tua IA',
  'walkthrough.steps.meetAi.content':
    'Qui avvengono le conversazioni. Fai domande, ottieni riassunti o sviluppa idee. Tutto resta ricercabile.',
  'walkthrough.steps.connectWorld.title': 'Connetti il tuo mondo',
  'walkthrough.steps.connectWorld.content':
    'Gmail, Slack, WhatsApp e altro: ogni connessione dà nuovi poteri al tuo assistente.',
  'walkthrough.steps.messagingApps.title': 'Chatta dove sei già',
  'walkthrough.steps.messagingApps.content':
    'WhatsApp, Telegram, Slack, Discord: collega le app di messaggistica così il tuo assistente può raggiungerti ovunque.',
  'walkthrough.steps.settings.title': 'Rendilo tuo',
  'walkthrough.steps.settings.content':
    'Preferenze, privacy e notifiche sono qui. Puoi riavviare questo tour da questa pagina in qualsiasi momento.',
  'walkthrough.steps.chatTab.title': 'Torna alla chat',
  'walkthrough.steps.chatTab.content': 'Usa la scheda Chat quando vuoi tornare alle conversazioni.',
  'walkthrough.steps.humanTab.title': 'Scopri il tuo profilo umano',
  'walkthrough.steps.humanTab.content':
    'Human riunisce contesto personale, identità e profilo visibile all’assistente.',
  'walkthrough.steps.brainTab.title': 'Apri il tuo Brain',
  'walkthrough.steps.brainTab.content':
    'Brain è il grafo della memoria: il posto dove vedere cosa sa OpenHuman e come si collegano le idee.',
  'walkthrough.steps.agentWorldTab.title': 'Esplora Agent World',
  'walkthrough.steps.agentWorldTab.content':
    'Agent World ospita agenti riutilizzabili e automazioni condivise.',
  'walkthrough.steps.connectionsTab.title': 'Gestisci connessioni',
  'walkthrough.steps.connectionsTab.content':
    'Connections è sempre nella navigazione principale quando vuoi aggiungere o modificare servizi.',
  'walkthrough.steps.feedbackTab.title': 'Invia feedback',
  'walkthrough.steps.feedbackTab.content':
    'Feedback è il luogo diretto per segnalare problemi o chiedere miglioramenti.',
  'walkthrough.steps.allSet.title': 'Tutto pronto!',
  'walkthrough.steps.allSet.content':
    'Il tuo assistente ti ha lasciato una nota di benvenuto: qui puoi chattare, fare domande o sviluppare idee. Buon divertimento!',
  'walkthrough.tooltip.letsGo': 'Andiamo!',
  'walkthrough.tooltip.next': 'Avanti →',
  'walkthrough.tooltip.skip': 'Salta tour',
  'walkthrough.tooltip.stepCounter': '{n} di {total}',
  'webhooks.activity.empty': 'Vuoto',
  'webhooks.activity.title': 'Attività recente',
  'webhooks.composioHistory.empty': 'Vuoto',
  'webhooks.composioHistory.metadataId': 'ID metadati',
  'webhooks.composioHistory.metadataUuid': 'UUID metadati',
  'webhooks.composioHistory.payload': 'Payload',
  'webhooks.composioHistory.title': 'Cronologia trigger Composio',
  'webhooks.tunnels.active': 'Attivo',
  'webhooks.tunnels.createFailed': 'Creazione tunnel fallita',
  'webhooks.tunnels.creating': 'Creazione...',
  'webhooks.tunnels.deleteFailed': 'Eliminazione tunnel fallita',
  'webhooks.tunnels.descriptionPlaceholder': 'Descrizione (opzionale)',
  'webhooks.tunnels.echo': 'Echo',
  'webhooks.tunnels.empty': 'Vuoto',
  'webhooks.tunnels.enableEcho': 'Abilita echo',
  'webhooks.tunnels.inactive': 'Inattivo',
  'webhooks.tunnels.namePlaceholder': 'Nome tunnel (es. telegram-bot)',
  'webhooks.tunnels.newTunnel': 'Nuovo tunnel',
  'webhooks.tunnels.removeEcho': 'Rimuovi echo',
  'webhooks.tunnels.title': 'Tunnel webhook',
  'webhooks.tunnels.toggleFailed': 'Attivazione echo fallita',
  'composio.directModeRequiresKey':
    'Salvataggio fallito. La modalità Diretta richiede una chiave API non vuota.',
  'composio.integrationSlugsHelp': 'Slug di integrazione separati da virgole, ad es.',
  'composio.integrationSlugsExample': 'Gmail, slack',
  'composio.integrationSlugsCaseInsensitive': 'Senza distinzione tra maiuscole e minuscole.',
  'composio.integrationSlugsPlaceholder': 'gmail, slack, ...',
  'composio.notYetRouted': 'non ancora instradato',
  'composio.triggers.loading': 'Caricamento…',
  'conversations.taskKanban.todo': 'Da fare',
  'chat.addReaction': 'Aggiungi reazione',
  'chat.agentProfile.create': 'Crea profilo agente',
  'chat.agentProfile.createFailed': 'Impossibile creare il profilo agente.',
  'chat.agentProfile.customDescription': 'Profilo agente personalizzato',
  'chat.agentProfile.defaultAgentLabel': 'Orchestrator',
  'chat.agentProfile.exists': 'Il profilo agente "{name}" esiste già.',
  'chat.agentProfile.label': 'Profilo agente',
  'chat.agentProfile.quick': 'Veloce',
  'chat.agentProfile.reasoning': 'Ragionamento',
  'chat.agentProfile.namePlaceholder': 'Nome profilo',
  'chat.agentProfile.promptStylePlaceholder': 'Stile prompt',
  'chat.agentProfile.allowedToolsPlaceholder': 'Strumenti consentiti',
  'chat.backToThread': 'torna a {title}',
  'chat.parentThread': 'thread principale',
  'chat.removeReaction': 'Rimuovi {emoji}',
  'settings.composio.loading': 'Caricamento…',
  'settings.mascot.noCharactersAvailable': 'Nessun personaggio OpenHuman disponibile',
  'skills.uninstall.confirmTitle': 'Disinstallare {name}?',
  'conversations.taskKanban.blocked': 'Bloccato',
  'conversations.taskKanban.done': 'Fatto',
  'conversations.taskKanban.pending': 'In sospeso',
  'conversations.taskKanban.working': 'Lavorando',
  'conversations.taskKanban.awaitingApproval': 'In attesa di approvazione',
  'conversations.taskKanban.ready': 'Pronto',
  'conversations.taskKanban.rejected': 'Rifiutato',
  'conversations.taskKanban.inProgress': 'In corso',
  'conversations.taskKanban.awaitingApprovalColumn': 'In attesa di approvazione',
  'conversations.taskKanban.blockedColumn': 'Bloccato',
  'conversations.taskKanban.evidenceBadge': 'Prove ({count})',
  'conversations.taskKanban.needsInput': 'Queste attività richiedono il tuo contributo',
  'conversations.taskKanban.emptyColumn': 'Nessuna attività',
  'conversations.taskKanban.dragHint': 'Trascina per spostare tra le colonne',
  'conversations.taskKanban.movingCard': 'Spostamento…',
  'conversations.taskKanban.statusBadge.ready': 'Pronto per iniziare',
  'conversations.taskKanban.statusBadge.rejected': 'Rifiutato',
  'intelligence.memoryChunk.detail.copiedHint': 'copiato',
  'settings.composio.notYetRouted': 'non ancora instradato',
  'settings.localModel.download.manageExternal': 'Gestisci questo modello nel tuo runtime esterno.',
  'settings.localModel.status.manageOllamaExternal':
    'Gestisci il processo Ollama e i pull dei modelli al di fuori di OpenHuman, poi riesegui la diagnostica.',
  'settings.localModel.status.ollamaDocs': 'Documentazione Ollama',
  'settings.localModel.status.thenRetry':
    'per le istruzioni di configurazione, poi riprova quando il runtime è raggiungibile.',
  'devOptions.menuAi': 'Configurazione AI',
  'devOptions.menuAiDesc': 'Provider cloud, modelli Ollama locali e routing per carico di lavoro',
  'devOptions.menuScreenAware': 'Riconoscimento schermo',
  'devOptions.menuScreenAwareDesc':
    "Autorizzazioni per l'acquisizione dello schermo, policy di monitoraggio e controlli della sessione",
  'devOptions.menuMessaging': 'Canali di messaggistica',
  'devOptions.menuMessagingDesc':
    'Configura le modalità di autenticazione Telegram/Discord e il routing del canale predefinito',
  'devOptions.menuTools': 'Strumenti',
  'devOptions.menuToolsDesc':
    'Abilita o disabilita le funzionalità che OpenHuman può utilizzare per tuo conto',
  'devOptions.menuAgentChat': "Chat dell'agente",
  'devOptions.menuAgentChatDesc':
    "Conversazione dell'agente di test con override di modello e temperatura",
  'devOptions.menuCronJobs': 'Processi cron',
  'devOptions.menuCronJobsDesc':
    'Visualizza e configura processi pianificati per le competenze di runtime',
  'devOptions.menuLocalModelDebug': 'Debug modello locale',
  'devOptions.menuLocalModelDebugDesc':
    'Ollama configurazione, download di risorse, test del modello e diagnostica',
  'devOptions.menuWebhooksDebug': 'Webhook',
  'devOptions.menuWebhooksDebugDesc':
    'Esamina le registrazioni dei webhook di runtime e i registri delle richieste acquisite',
  'devOptions.menuIntelligence': 'Intelligenza',
  'devOptions.menuIntelligenceDesc':
    'Spazio di lavoro della memoria, motore subconscio, sogni e impostazioni',
  'devOptions.menuNotificationRouting': 'Routing delle notifiche',
  'devOptions.menuNotificationRoutingDesc':
    "Punteggio di importanza AI ed escalation dell'agente di orchestrazione per gli avvisi di integrazione",
  'devOptions.menuComposeIOTriggers': 'Trigger ComposeIO',
  'devOptions.menuComposeIOTriggersDesc':
    "Visualizza la cronologia e l'archivio dei trigger ComposeIO",
  'devOptions.menuComposioRouting': 'Composio Routing (modalità diretta)',
  'devOptions.menuComposioRoutingDesc':
    'Porta la tua chiave Composio API e instrada le chiamate direttamente a backend.composio.dev',
  'devOptions.menuComposioTriggers': 'Trigger di integrazione',
  'devOptions.menuComposioTriggersDesc':
    'Configura le impostazioni di triage AI per i trigger di integrazione Composio',
  'memory.sourceFilterAria': 'Filtra per origine',
  'calls.comingSoonDescription':
    "Le chiamate assistite dall'IA sono in arrivo. Resta sintonizzato.",
  'whatsapp.title': 'WhatsApp',
  'subconscious.priority.critical': 'critico',
  'subconscious.priority.important': 'importante',
  'subconscious.priority.normal': 'normale',
  'subconscious.durationSeconds': '{seconds}s',
  'subconscious.durationMilliseconds': '{milliseconds}ms',
  'settings.appearance': 'Aspetto',
  'settings.appearanceDesc': 'Scegli la luce, scuro o abbina il tema del tuo sistema',
  'settings.mascot': 'Mascotte',
  'settings.mascotDesc': "Scegli il colore della mascotte utilizzato in tutta l'app",
  'pages.settings.account.walletBalances': 'Saldi portafoglio',
  'pages.settings.account.walletBalancesDesc':
    'Visualizza i saldi multi-chain del tuo portafoglio locale',
  'walletBalances.title': 'Saldi portafoglio',
  'walletBalances.refresh': 'Refresh',
  'walletBalances.loading': 'Caricamento saldi…',
  'walletBalances.retry': 'Retry',
  'walletBalances.emptyState':
    'Nessun account portafoglio ancora — configura un portafoglio in Frase di recupero.',
  'walletBalances.copyAddress': 'Copia indirizzo',
  'walletBalances.providerMissing': 'provider non disponibile',
  'walletBalances.rawBalance': 'Grezzo: {raw}',
  'walletBalances.errorGeneric':
    'Impossibile caricare i saldi del portafoglio. Configura il tuo portafoglio in Frase di recupero e riprova.',
  'walletBalances.setupHint':
    'La tua frase di recupero non è ancora configurata. Configurala per attivare il tuo wallet e vedere i saldi in tempo reale.',
  'walletBalances.setupCta': 'Configura la frase di recupero',
  'walletBalances.notSetUp': 'Non configurato',
  'walletBalances.send': 'Invia',
  'walletBalances.receive': 'Ricevi',
  'walletReceive.scanHint':
    'Scansiona questo codice o copia l’indirizzo qui sotto per ricevere fondi.',
  'walletReceive.addressLabel': 'Indirizzo {network}',
  'walletReceive.onlyChainWarning':
    'Invia solo asset {network} a questo indirizzo. Inviare asset da un’altra rete può causare una perdita permanente.',
  'walletSend.available': 'Disponibile',
  'walletSend.recipient': 'Indirizzo del destinatario',
  'walletSend.recipientPlaceholder': 'Incolla l’indirizzo di destinazione',
  'walletSend.recipientRequired': 'Inserisci un indirizzo del destinatario',
  'walletSend.amount': 'Importo',
  'walletSend.invalidAmount': 'Inserisci un importo valido',
  'walletSend.review': 'Rivedi',
  'walletSend.preparing': 'Preparazione…',
  'walletSend.confirmHint':
    'Rivedi i dettagli qui sotto. La firma avviene localmente: nulla viene trasmesso finché non confermi.',
  'walletSend.estimatedFee': 'Commissione di rete stimata',
  'walletSend.confirmSend': 'Conferma e invia',
  'walletSend.sending': 'Invio…',
  'walletSend.sent': 'Transazione inviata',
  'walletSend.txHash': 'Hash della transazione',
  'walletSend.viewExplorer': 'Vedi nell’explorer',
  'walletSend.done': 'Fatto',
  'walletSend.genericError': 'Impossibile completare il trasferimento. Riprova.',
  'settings.taskSources.title': 'Fonti del compito',
  'settings.integrations.title': 'Integrazioni',
  'settings.integrations.menuDesc': 'Sorgenti di attività, routing Composio e trigger webhook',
  'settings.taskSources.subtitle':
    "Estrai le attività dai tuoi strumenti sulla lavagna delle cose da fare dell'agente",
  'settings.taskSources.description':
    "Raccogliere elementi di lavoro da GitHub, Notion, Linear e ClickUp, arricchirli e instradarli sulla bacheca delle cose da fare dell'agente.",
  'settings.taskSources.connectHint':
    'Le origini dei compiti utilizzano i tuoi account collegati. Collegali prima sotto Integrazioni.',
  'settings.taskSources.disabledBanner':
    'Le fonti delle attività sono disattivate nelle impostazioni. Attivale per eseguire il polling automaticamente.',
  'settings.taskSources.loadError': 'Impossibile caricare le fonti del compito',
  'settings.taskSources.addTitle': 'Aggiungi una fonte di attività',
  'settings.taskSources.provider': 'Fornitore',
  'settings.taskSources.name': 'Nome (opzionale)',
  'settings.taskSources.namePlaceholder': 'ad esempio, i miei problemi aperti',
  'settings.taskSources.github.repo': 'Repository (proprietario/nome, facoltativo)',
  'settings.taskSources.github.labels': 'Etichette (separate da virgola)',
  'settings.taskSources.notion.database': 'ID del database (board)',
  'settings.taskSources.notion.browseDatabases': 'Sfoglia i database',
  'settings.taskSources.notion.loadingDatabases': 'Caricamento dei database…',
  'settings.taskSources.notion.selectDatabase': 'Seleziona un database…',
  'settings.taskSources.notion.noDatabases': 'Nessun database trovato per questa connessione.',
  'settings.taskSources.linear.team': 'ID del team (opzionale)',
  'settings.taskSources.clickup.team': 'ID dello spazio di lavoro (team) (opzionale)',
  'settings.taskSources.assignedToMe': 'Solo gli articoli assegnati a me',
  'settings.taskSources.add': 'Aggiungi fonte',
  'settings.taskSources.adding': 'Aggiungendo…',
  'settings.taskSources.preview': 'Anteprima',
  'settings.taskSources.previewResult': 'Il/i compito/i {count} corrispondono a questo filtro',
  'settings.taskSources.fetchNow': 'Prendi adesso',
  'settings.taskSources.fetching': 'Recupero…',
  'settings.taskSources.fetchResult':
    'Instradate {routed} di {fetched} attività; rimosse {pruned} attività obsolete',
  'settings.taskSources.syncAll': 'Sincronizza tutto',
  'settings.taskSources.syncing': 'Sincronizzazione…',
  'settings.taskSources.configured': 'Fonti configurate',
  'settings.taskSources.empty': 'Nessuna fonte attività configurata ancora.',
  'settings.taskSources.proactive': 'Proattivo',
  'settings.taskSources.lastFetch': 'Ultimo recupero',
  'settings.taskSources.never': 'Mai',
  'settings.taskSources.statusEnabled': 'Abilitato',
  'settings.taskSources.statusDisabled': 'Disabilitato',
  'settings.taskSources.enable': 'Abilita',
  'settings.taskSources.disable': 'Disabilita',
  'settings.taskSources.remove': 'Rimuovere',
  'settings.taskSources.removeConfirm':
    'Rimuovere questa fonte del compito? Tutta la cronologia dei compiti importati sarà eliminata e non potrà essere annullata.',
  'settings.taskSources.refresh': 'Aggiorna',
  'settings.taskSources.providers.github': 'GitHub',
  'settings.taskSources.providers.notion': 'Nozione',
  'settings.taskSources.providers.linear': 'Lineare',
  'settings.taskSources.providers.clickup': 'ClickUp',
  'skills.dashboard.enable': 'Abilita workflow pianificato',
  'skills.dashboard.disable': 'Disabilita workflow pianificato',
  'skills.dashboard.lastRun': 'Ultima esecuzione',
  'skills.dashboard.nextRun': 'Prossima esecuzione',
  'skills.dashboard.cardOpenRunner': 'Apri nel runner',
  'skills.new.title': 'Crea un workflow',
  'settings.agents.title': 'Agenti',
  'settings.agents.subtitle':
    'Gestisci gli agenti disponibili per la delega — quelli predefiniti integrati e i tuoi agenti personalizzati.',
  'settings.agents.menuDesc': 'Gestisci agenti integrati e personalizzati',
  'settings.agents.newAgent': 'Nuovo agente',
  'settings.agents.loadError': 'Impossibile caricare gli agenti',
  'settings.agents.empty': 'Ancora nessun agente',
  'settings.agents.sourceDefault': 'Integrato',
  'settings.agents.sourceCustom': 'Personalizzato',
  'settings.agents.enable': 'Abilita agente',
  'settings.agents.disable': 'Disabilita agente',
  'settings.agents.edit': 'Modifica',
  'settings.agents.delete': 'Elimina',
  'settings.agents.reset': 'Ripristina impostazioni predefinite',
  'settings.agents.modelLabel': 'Modello',
  'settings.agents.toolsLabel': 'Strumenti',
  'settings.agents.toolsAll': 'Tutti gli strumenti',
  'settings.agents.toolsCount': 'strumenti {count}',
  'settings.agents.actionFailed': "Impossibile aggiornare l'agente",
  'settings.agents.orchestratorLocked': "L'orchestratore è sempre abilitato.",
  'settings.agents.editor.createTitle': 'Nuovo agente',
  'settings.agents.editor.editTitle': 'Modifica agente',
  'settings.agents.editor.id': 'ID',
  'settings.agents.editor.idHint': 'Solo lettere minuscole, numeri, _ e -.',
  'settings.agents.editor.name': 'Nome',
  'settings.agents.editor.description': 'Descrizione',
  'settings.agents.editor.model': 'Modello (opzionale)',
  'settings.agents.editor.modelPlaceholder':
    'ad esempio eredita, suggerimento:veloce, o un id modello',
  'settings.agents.editor.systemPrompt': 'Prompt di sistema (opzionale)',
  'settings.agents.editor.tools': 'Strumenti consentiti',
  'settings.agents.editor.toolsHint':
    'Un nome di strumento per riga. Usa * per tutti gli strumenti.',
  'settings.agents.editor.defaultsNote':
    'Modificare un agente integrato salva una sovrascrittura che puoi ripristinare in seguito.',
  'settings.agents.editor.save': 'Salva',
  'settings.agents.editor.create': 'Crea agente',
  'settings.agents.editor.saving': 'Salvataggio…',
  'nav.workflows': 'Workflows',
  'workflows.title': 'Workflow',
  'workflows.subtitle':
    'Procedure riutilizzabili ed eseguibili — un obiettivo e i passaggi per raggiungerlo. Creane uno, installa da un URL o apri un workflow per eseguirlo.',
  'workflows.createNew': 'Nuovo workflow',
  'workflows.listHeading': 'Workflows',
  'workflows.delete': 'Elimina Workflow',
  'workflows.deleteError': 'Eliminazione del workflow fallita',
  'workflows.warnings': '{count} avviso/i',
  'workflows.empty.title': 'Nessun workflow ancora',
  'workflows.empty.body':
    'Crea un workflow per definire regole e script per le fasi del ciclo di vita delle attività.',
  'workflows.create.title': 'Nuovo Workflow',
  'workflows.create.subtitle':
    "Definisci un insieme di regole legate al ciclo di vita dell'agente.",
  'workflows.create.name': 'Name',
  'workflows.create.namePlaceholder': 'es. Workflow progetto Python',
  'workflows.create.description': 'Description',
  'workflows.create.descriptionPlaceholder': 'Cosa fa questo workflow?',
  'workflows.create.whenToUse': 'Quando usare',
  'workflows.create.whenToUsePlaceholder': "Quando l'agente dovrebbe utilizzare questo workflow?",
  'workflows.create.optional': '(facoltativo)',
  'workflows.create.createBtn': 'Crea workflow',
  'workflows.create.creating': 'Creating…',
  'workflows.create.createError': 'Impossibile creare il workflow',
  'workflows.create.successTitle': 'Workflow creato',
  'workflows.create.successMessage': 'è stato creato con successo.',
  'workflows.deleteConfirm.title': 'Elimina workflow',
  'workflows.deleteConfirm.body': 'Rimuovere "{name}"? Questa azione non può essere annullata.',
  'workflows.detail.tags': 'Tags',
  'workflows.detail.location': 'Location',
  'workflows.detail.warnings': 'Warnings',
  'workflows.detail.phases': 'Phases',
  'workflows.detail.noPhases': 'Nessuna fase definita.',
  'workflows.detail.loadError': 'Caricamento completo del workflow fallito',
  'workflows.phase.rules': 'Rules',
  'workflows.phase.rules.empty': 'Nessuna regola.',
  'workflows.phase.scripts': 'Scripts',
  'workflows.phase.scripts.empty': 'Nessuno script.',
  'workflows.phase.toolScope': 'Ambito degli strumenti',
  'workflows.phase.toolScope.allow': 'Allow',
  'workflows.phase.toolScope.deny': 'Deny',
  'workflows.phase.toolScope.inherited': 'Ereditato dalle impostazioni predefinite del workflow.',
  'workflows.phase.toolScope.empty': 'Nessuna restrizione sugli strumenti.',
  'workflows.phase.context': 'Context',
  'workflows.phase.context.empty': 'Nessun fornitore di contesto.',
  'settings.agentsSection.title': 'Agents',
  'settings.agentsSection.description':
    'Gestisci i tuoi agenti, la loro autonomia e a cosa possono accedere su questo computer.',
  'settings.agentsSection.menuDesc': 'Registro, autonomia e accesso al sistema operativo',
  'settings.cryptoSection.title': 'Cripto',
  'settings.cryptoSection.description':
    'Gestisci la tua frase di recupero e visualizza i saldi dei tuoi account wallet.',
  'settings.cryptoSection.menuDesc': 'Frase di recupero e saldi del wallet',
  'settings.notificationsHub.title': 'Notifiche',
  'settings.notificationsHub.description':
    'Visualizza la tua casella degli avvisi e gestisci le preferenze di notifica e l’instradamento.',
  'settings.notificationsHub.menuDesc': 'Casella degli avvisi e preferenze di notifica',
  'settings.notificationsHub.settingsItem': 'Impostazioni di notifica',
  'settings.notificationsHub.settingsItemDesc': 'Preferenze e instradamento',
  'settings.agents.editor.notFound': 'Agente non trovato.',
  'settings.agents.editor.modelInherit': 'Eredita (predefinito della piattaforma)',
  'settings.agents.editor.modelHints': 'Suggerimenti di instradamento',
  'settings.agents.editor.modelTiers': 'Livelli di modello',
  'settings.agents.editor.modelCustom': 'ID modello personalizzato…',
  'settings.agents.editor.modelCustomPlaceholder': 'es. anthropic/claude-sonnet-4',
  'settings.agents.editor.selectTools': 'Aggiungi strumenti',
  'settings.agents.editor.toolsAllSelected': 'Tutti gli strumenti',
  'settings.agents.editor.toolsNoneSelected': 'Nessuno strumento selezionato',
  'settings.agents.editor.removeToolAria': 'Rimuovi {tool}',
  'settings.agents.editor.toolsModalTitle': 'Strumenti consentiti',
  'settings.agents.editor.toolsSelectedCount': '{count} selezionati',
  'settings.agents.editor.toolsSearchPlaceholder': 'Cerca strumenti…',
  'settings.agents.editor.toolsAllowAll': 'Consenti tutti gli strumenti (*)',
  'settings.agents.editor.toolsAllowAllHint':
    'Questo agente può utilizzare tutti gli strumenti disponibili.',
  'settings.agents.editor.toolsLoading': 'Caricamento strumenti…',
  'settings.agents.editor.toolsLoadError': 'Impossibile caricare gli strumenti',
  'settings.agents.editor.toolsEmpty': 'Nessuno strumento corrisponde alla ricerca.',
  'settings.agents.editor.toolsDone': 'Done',
  'settings.agents.editor.builtInReadonly':
    "Gli agenti integrati non possono essere modificati. Puoi abilitarli, disabilitarli o reimpostarli dall'elenco degli agenti.",
  // Chat — agent-generated artifacts (#2779)
  'chat.artifact.aria': 'Artefatto: {title}',
  'chat.artifact.generating': 'Generazione {kind}…',
  'chat.artifact.ready': 'Pronto',
  'chat.artifact.failed': 'Generazione fallita',
  'chat.artifact.download': 'Scarica',
  'chat.artifact.downloading': 'Scaricamento…',
  'chat.artifact.downloaded': 'Salvato in {path}',
  'chat.artifact.download_failed': 'Download fallito: {reason}',
  'chat.artifact.retry': 'Riprova',
  'chat.artifact.reveal': 'Mostra nella cartella',
  'chat.artifact.show_more': 'Mostra altro',
  'chat.artifact.show_less': 'Mostra meno',

  // Chat — files panel (#3024)
  'chat.files.chip.aria.one': '{count} file in questa chat',
  'chat.files.chip.aria.other': '{count} file in questa chat',
  'chat.files.panel.aria': 'File in questa chat',
  'chat.files.panel.title': 'File ({count})',
  'chat.files.panel.empty': 'Ancora nessun file. Chiedi all’agente di generarne uno.',
  'chat.files.panel.close': 'Chiudi pannello file',
  'chat.files.delete.aria': 'Elimina {title}',
  'chat.files.delete.confirm': 'Eliminare questo file?',
  'chat.files.delete.cancel': 'Annulla',
  'chat.files.delete.action': 'Elimina',
  'chat.files.delete.failed': 'Impossibile eliminare il file. Riprova.',
  'chat.files.error.not_desktop': 'I download sono disponibili solo nell’app desktop.',
  'chat.files.error.missing_artifact_id': 'ID dell’artefatto mancante.',
  'chat.files.error.missing_artifact_path':
    'Percorso dell’artefatto mancante nella risposta del core.',
  'chat.files.error.resolve_failed': 'Impossibile risolvere l’artefatto. Riprova.',
  'chat.files.error.download_failed': 'Download non riuscito. Riprova.',
  'chat.files.error.delete_failed': 'Impossibile eliminare il file. Riprova.',
  'autocomplete.debounceMs': 'Ritardo (ms)',
  'autocomplete.maxChars': 'Caratteri massimi di contesto',
  'autocomplete.overlayTtlMs': 'Timeout overlay (ms)',
  'memory.tab.council': 'Council',
  'activity.tabs.automations': 'Automazioni',
  'activity.tabs.automationsDescription':
    'Procedure riutilizzabili ed eseguibili — un obiettivo e i passi per raggiungerlo.',
  'activity.tabs.backgroundActivity': 'Subconscio',
  'activity.tabs.alerts': 'Avvisi',

  'intelligence.agents.title': 'Libreria agenti',
  'intelligence.agents.subtitle':
    'Ispeziona specialisti eseguibili e invia un compito a un agente specifico.',
  'intelligence.agents.refresh': 'Aggiorna',
  'intelligence.agents.loading': 'Caricamento agenti…',
  'intelligence.agents.failedToLoad': 'Impossibile caricare gli agenti',
  'intelligence.agents.empty': 'Nessun agente eseguibile disponibile.',
  'intelligence.agents.readOnly': 'Sola lettura',
  'intelligence.agents.writeCapable': 'Può scrivere',
  'intelligence.agents.allTools': 'Tutti gli strumenti',
  'intelligence.agents.toolCountOne': '{count} strumento',
  'intelligence.agents.toolCountOther': '{count} strumenti',
  'intelligence.agents.subagentCountOne': '{count} sottoagente',
  'intelligence.agents.subagentCountOther': '{count} sottoagenti',
  'intelligence.agents.startChat': 'Avvia chat',
  'intelligence.agents.startChatPrompt':
    'Avvia una chat con questo agente. Presenta la tua specialità, chiedi cosa devi sapere e attendi il mio compito.',
  'intelligence.agents.copyId': 'Copia ID',
  'intelligence.agents.copied': 'Copiato',
  'intelligence.agents.taskPlaceholder': 'Compito per questo agente',
  'intelligence.agents.runTask': 'Esegui compito',
  'intelligence.agents.running': 'In esecuzione…',
  'intelligence.agents.runFailed': 'Impossibile avviare l’agente selezionato',
  'intelligence.agents.model.inherit': 'Eredita',
  'intelligence.agents.tier.chat': 'Chat',
  'intelligence.agents.tier.reasoning': 'Ragionamento',
  'intelligence.agents.tier.worker': 'Worker',
  'modelCouncil.title': 'Consiglio dei modelli',
  'modelCouncil.intro':
    'Fai una domanda, ottieni risposte indipendenti da più modelli in parallelo, poi il modello presidente sintetizza dove concordano, dove divergono e cosa aggiunge ciascuno di unico.',
  'modelCouncil.listTitle': 'Councils',
  'modelCouncil.listIntro':
    'Scegli un consiglio salvato, modifica i suoi agenti e il giudice, oppure creane uno nuovo per un tipo specifico di decisione.',
  'modelCouncil.addCouncil': 'Nuovo consiglio',
  'modelCouncil.openCouncil': 'Apri consiglio',
  'modelCouncil.editCouncil': 'Modifica consiglio',
  'modelCouncil.editCurrentCouncil': 'Modifica consiglio attuale',
  'modelCouncil.editCouncilAria': 'Modifica {name}',
  'modelCouncil.deleteCouncilAria': 'Elimina {name}',
  'modelCouncil.backToCouncils': 'Torna ai consigli',
  'modelCouncil.saveCouncil': 'Salva consiglio',
  'modelCouncil.savingCouncil': 'Saving…',
  'modelCouncil.cancelEdit': 'Cancel',
  'modelCouncil.loadingCouncils': 'Caricamento dei consigli…',
  'modelCouncil.noCouncils': 'Nessun consiglio ancora. Aggiungine uno per iniziare.',
  'modelCouncil.noCouncilDescription': 'Nessuna descrizione',
  'modelCouncil.registryErrorPrefix': 'Registro del consiglio fallito:',
  'modelCouncil.councilNameLabel': 'Nome del consiglio',
  'modelCouncil.councilDescriptionLabel': 'Description',
  'modelCouncil.councilDescriptionPlaceholder': 'Quando usare questo consiglio',
  'modelCouncil.selectModel': 'Select',
  'modelCouncil.modelPickerHelp':
    'Seleziona un suggerimento di routing o fissa un modello fornitore esatto.',
  'modelCouncil.closeModelPicker': 'Close',
  'modelCouncil.hint.chat': 'Chat',
  'modelCouncil.hint.code': 'Codice',
  'modelCouncil.hint.default': 'Predefinito',
  'modelCouncil.hint.reasoning': 'Ragionamento',
  'modelCouncil.hint.summarize': 'Riassunto',
  'modelCouncil.modelPickerHints': 'Hints',
  'modelCouncil.modelPickerProviderModel': 'Fornitore + modello',
  'modelCouncil.modelProviderLabel': 'Fornitore del modello',
  'modelCouncil.modelIdLabel': 'ID modello',
  'modelCouncil.useProviderModel': 'Usa modello del fornitore',
  'modelCouncil.questionLabel': 'Question',
  'modelCouncil.questionPlaceholder': 'Fai una domanda al consiglio…',
  'modelCouncil.membersLabel': 'Modelli membri',
  'modelCouncil.maxMembersNote': 'fino a {max}',
  'modelCouncil.memberPlaceholder': 'es. gpt-5.2',
  'modelCouncil.memberAria': 'Modello membro {n}',
  'modelCouncil.removeMemberAria': 'Rimuovi modello membro {n}',
  'modelCouncil.addMember': '+ Aggiungi modello',
  'modelCouncil.settingsTitle': 'Impostazioni del consiglio',
  'modelCouncil.settingsSummary': '{count} giurati · giudice: {judge}',
  'modelCouncil.juryCountLabel': 'Numero di giurati',
  'modelCouncil.debateRoundsLabel': 'Turni di dibattito',
  'modelCouncil.debateRoundsHelp':
    'Ogni giurato continua a dibattere per più turni prima che il giudice scriva la sintesi finale.',
  'modelCouncil.judgeAgentLabel': 'Agente giudice',
  'modelCouncil.defaultJudge': 'Giudice predefinito',
  'modelCouncil.savedProfile': 'Profilo salvato',
  'modelCouncil.customAgent': 'Agente personalizzato',
  'modelCouncil.judgeProfileLabel': 'Profilo del giudice',
  'modelCouncil.chooseProfile': 'Scegli un profilo',
  'modelCouncil.judgeNameLabel': 'Nome del giudice',
  'modelCouncil.judgeNamePlaceholder': 'Giudice capo',
  'modelCouncil.rosterHeading': 'Roster del consiglio',
  'modelCouncil.rosterHelp':
    'Ogni giurato può ereditare l’agente predefinito, usare un profilo salvato o diventare un profilo personalizzato per questa esecuzione.',
  'modelCouncil.loadingProfiles': 'Caricamento profili…',
  'modelCouncil.jurorLabel': 'Giurato {n}',
  'modelCouncil.profileModeLabel': 'Origine del profilo',
  'modelCouncil.mode.default': 'Predefinito',
  'modelCouncil.mode.profile': 'Profilo',
  'modelCouncil.mode.custom': 'Personalizzato',
  'modelCouncil.memberProfileAria': 'Profilo del giurato {n}',
  'modelCouncil.memberNameAria': 'Nome del giurato {n}',
  'modelCouncil.memberNamePlaceholder': 'Nome agente',
  'modelCouncil.profileModelPlaceholder': 'Sovrascrivi modello del profilo',
  'modelCouncil.memberBriefAria': 'Brief del giurato {n}',
  'modelCouncil.memberBriefPlaceholder': 'Prospettiva di questo giurato',
  'modelCouncil.jurorFallback': 'Giurato',
  'modelCouncil.sharedReasoningLabel': 'File di ragionamento condiviso',
  'modelCouncil.sharedReasoningHelp':
    'Il consiglio lavora su questa bozza condivisa prima che il giudice scriva la sintesi.',
  'modelCouncil.liveScratchpadHelp':
    'Gli aggiornamenti dei giurati vengono aggiunti qui dopo ogni turno e alimentano il turno successivo.',
  'modelCouncil.liveScratchpadBadge': 'Live',
  'modelCouncil.scratchpadRoundHeading': 'Aggiornamenti turno {round}',
  'modelCouncil.scratchpadNoResponse': 'Nessuna risposta',
  'modelCouncil.chairLabel': 'Modello presidente',
  'modelCouncil.chairPlaceholder': 'es. claude-opus-4-8',
  'modelCouncil.chairHelp': 'Il presidente legge ogni risposta dei membri e scrive la sintesi.',
  'modelCouncil.run': 'Convoca consiglio',
  'modelCouncil.running': 'Convening…',
  'modelCouncil.runningHint': 'Interrogazione dei membri in parallelo, poi sintesi…',
  'modelCouncil.deliberationHeading': 'Deliberazione del consiglio',
  'modelCouncil.deliberationHelp':
    'Le mascotte mostrano ogni agente che riflette mentre il file di ragionamento condiviso è in uso.',
  'modelCouncil.debateRoundInstruction':
    'Rispondi agli altri giurati. Mantieni i disaccordi, rivedi la tua posizione quando giustificato e mantieni esplicita la tua conclusione attuale.',
  'modelCouncil.debateFinalInstruction':
    'Questo è il tuo ultimo turno da giurato. Convergi dove le prove lo supportano, segnala i disaccordi rimanenti e fornisci al giudice una conclusione chiara.',
  'modelCouncil.roundLabel': 'Turno {round}',
  'modelCouncil.currentRoundThinking': 'Prosecuzione del turno successivo…',
  'modelCouncil.thinkingBadge': 'Thinking',
  'modelCouncil.thinkingWithBrief': 'Lavoro da questa prospettiva: {brief}',
  'modelCouncil.thought.evidence':
    'Verifica delle prove, delle ipotesi e di quanto il file di ragionamento condiviso già contiene.',
  'modelCouncil.thought.plan': 'Delineazione del percorso pratico e dei possibili punti di blocco.',
  'modelCouncil.thought.risk':
    'Ricerca di modalità di fallimento, contesto mancante e conclusioni fragili.',
  'modelCouncil.thought.tradeoffs':
    'Confronto dei compromessi prima di consegnare al giudice una posizione concisa.',
  'modelCouncil.thought.synthesis':
    'Preparazione di un punto di vista distinto affinché il giudice possa confrontare i veri disaccordi.',
  'modelCouncil.judgeWaitingBadge': 'Judge',
  'modelCouncil.judgeWaitingThought':
    'In attesa delle risposte dei giurati, poi lettura del file di ragionamento condiviso per la sintesi.',
  'modelCouncil.judgeSynthesizingBadge': 'Synthesizing',
  'modelCouncil.judgeSynthesizingThought':
    'Lettura dei pensieri in tempo reale dei giurati e stesura della sintesi finale del consiglio.',
  'modelCouncil.errorPrefix': 'Il consiglio è fallito:',
  'modelCouncil.resultsHeading': 'Risultati del consiglio',
  'modelCouncil.memberAnswered': 'Answered',
  'modelCouncil.memberFailed': 'Failed',
  'modelCouncil.synthesisHeading': 'Synthesis',
  'modelCouncil.synthesisBy': 'di {model}',
  'modelCouncil.usageHeading': 'Utilizzo del dibattito',
  'modelCouncil.usageEstimated':
    'Conteggio stimato dei token da prompt e risposte del dibattito. Il prezzo effettivo richiede i dati di utilizzo del fornitore tramite RPC del consiglio.',
  'modelCouncil.usageEstimatedBadge': 'Token stimati',
  'modelCouncil.usageInputTokens': 'Input',
  'modelCouncil.usageOutputTokens': 'Output',
  'modelCouncil.usageTotalTokens': 'Total',
  'graphCohesion.brokerBadge': 'broker',
  'graphCohesion.brokerTitle':
    "Buco strutturale: i vicini di questa entità non sono collegati tra loro — essa è l'unico collegamento tra loro.",
  'graphCohesion.colCohesion': 'Coesione',
  'graphCohesion.colEntity': 'Entità',
  'graphCohesion.colLinks': 'Collegamenti',
  'graphCohesion.colRank': '#',
  'graphCohesion.empty': 'Ancora nessun grafo della conoscenza.',
  'graphCohesion.emptyHint':
    "Man mano che l'assistente registra fatti connessi su di te, qui apparirà la loro struttura di raggruppamento.",
  'graphCohesion.errorPrefix': 'Impossibile caricare il grafo:',
  'graphCohesion.intro':
    'Quanto è fittamente intrecciato il vicinato attorno a ciascuna entità. I broker — entità i cui vicini non sono collegati tra loro — sono i punti singoli che tengono uniti gruppi altrimenti separati, cosa che un ordinamento per frequenza o PageRank non può rivelare.',
  'graphCohesion.loading': 'Calcolo della coesione…',
  'graphCohesion.metricConnections': 'Connessioni',
  'graphCohesion.metricEntities': 'Entità',
  'graphCohesion.metricTriangles': 'Triangoli',
  'graphCohesion.namespaceAll': 'Tutti gli spazi dei nomi',
  'graphCohesion.namespaceLabel': 'Spazio dei nomi',
  'graphCohesion.noBrokers': 'Ancora nessuna entità con due o più connessioni.',
  'graphCohesion.rankedHeading': 'Broker — vicinati più radi',
  'graphCohesion.retry': 'Riprova',
  'graphCohesion.summaryCaption': 'Raggruppamento medio {avg} · transitività {transitivity}',
  'graphCohesion.title': 'Coesione del grafo',
  'memory.tab.cohesion': 'Cohesion',

  'harnessInit.title': 'Preparazione in corso',

  'announcement.gotIt': 'Ho capito',
  'harnessInit.subtitle': 'OpenHuman sta preparando i componenti necessari al primo avvio.',
  'harnessInit.stepPython': 'Ambiente di esecuzione Python',
  'harnessInit.stepSpacy': 'Modello linguistico',
  'harnessInit.stepNode': 'Ambiente di esecuzione Node.js',
  'harnessInit.statePending': 'In attesa',
  'harnessInit.stateRunning': 'Installazione…',
  'harnessInit.stateDone': 'Pronto',
  'harnessInit.stateSkipped': 'Saltato',
  'harnessInit.stateFailed': 'Non riuscito',
  'harnessInit.failedMessage':
    "Alcuni passaggi di configurazione non sono stati completati. Puoi riprovare o continuare — OpenHuman userà un'alternativa integrata.",
  'harnessInit.retry': 'Riprova',
  'harnessInit.continueAnyway': 'Continua comunque',
  'harnessInit.runInBackground': 'Esegui in background',
  'harnessInit.backgroundHint':
    'Puoi continuare a usare OpenHuman mentre questa operazione termina.',

  'keyring.consent.title': 'Archivio sicuro non disponibile',
  'keyring.consent.description':
    "Il portachiavi del sistema operativo non è accessibile. OpenHuman necessita del tuo permesso per archiviare i segreti utilizzando l'archiviazione locale crittografata.",
  'keyring.consent.reasonPrefix': 'Motivo:',
  'keyring.consent.showDetails': 'Cosa significa?',
  'keyring.consent.hideDetails': 'Nascondi dettagli',
  'keyring.consent.tradeoffTitle': 'Compromesso di sicurezza',
  'keyring.consent.tradeoffBody':
    "Con l'archiviazione locale crittografata, i tuoi segreti vengono crittografati su disco utilizzando una chiave master archiviata insieme ai dati. Questo è meno sicuro del portachiavi del SO, che utilizza protezione hardware. I backup o la sincronizzazione dei file possono includere i dati crittografati.",
  'keyring.consent.consentButton': 'Usa archiviazione locale crittografata',
  'keyring.consent.retryButton': 'Riprova OS Keychain',
  'keyring.consent.declineButton': 'Rifiuta',
  'keyring.consent.retrying': 'Nuovo tentativo…',
  'keyring.consent.error': 'Impossibile salvare la preferenza. Riprova.',
  'keyring.consent.retryFailed': 'Il portachiavi è ancora non disponibile.',
  'keyring.settings.title': 'Sicurezza',
  'keyring.settings.storageMode': 'Modalità archiviazione segreti',
  'keyring.settings.mode.osKeychain': 'Portachiavi del SO',
  'keyring.settings.mode.encryptedFile': 'Locale crittografato',
  'keyring.settings.mode.consentPending': 'Non configurato',
  'keyring.settings.mode.declined': 'Rifiutato',
  'keyring.settings.availability': 'Disponibilità portachiavi',
  'keyring.settings.available': 'Il portachiavi del SO è disponibile',
  'keyring.settings.unavailable': 'Il portachiavi del SO non è disponibile',
  'keyring.settings.backend': 'Motore',
  'keyring.settings.retryButton': 'Riprova rilevamento portachiavi',
  'keyring.settings.retryFailed': 'Tentativo fallito. Il portachiavi è ancora non disponibile.',
  'keyring.settings.consentTitle': 'Consenso archiviazione',
  'keyring.settings.consentDescription':
    'Scegli come vengono archiviati i segreti quando il portachiavi del SO non è disponibile.',
  'keyring.settings.grantConsent': 'Consenti archiviazione locale crittografata',
  'keyring.settings.revokeConsent': 'Rifiuta archiviazione locale',
  'pages.settings.account.security': 'Sicurezza',
  'pages.settings.account.securityDesc': 'Modalità archiviazione segreti e stato del portachiavi',
  // #002 memory-pipeline-hardening: degraded badges + typed remediation.
  'memoryTree.status.statusDegraded': 'Degradato',
  'memoryTree.status.degradedRecall': 'Richiamo semantico disattivato',
  'memoryTree.status.degradedStructure': 'Struttura del wiki incompleta',
  'memoryTree.status.extractionCoverage':
    'Copertura di estrazione: {pct}% dei frammenti ha una struttura',
  'memory.health.remediation.budget_exhausted':
    'Gli embedding della memoria hanno raggiunto il budget gestito. Configura embedding Ollama locali (Impostazioni → IA → Incorporamenti) o aggiungi la tua chiave API per gli embedding per continuare a costruire la memoria.',
  'memory.health.remediation.auth_missing':
    'Nessuna credenziale per gli embedding trovata. Accedi a OpenHuman o configura embedding Ollama locali in Impostazioni → IA → Incorporamenti.',
  'memory.health.remediation.auth_invalid':
    'Le tue credenziali per gli embedding sono state rifiutate. Autenticati di nuovo o passa agli embedding Ollama locali in Impostazioni → IA → Incorporamenti.',
  'memory.health.remediation.embeddings_unconfigured':
    'Nessun provider di embedding è configurato, quindi il richiamo semantico è disattivato. Configura embedding Ollama locali (consigliato) o aggiungi una chiave per gli embedding in Impostazioni → IA → Incorporamenti.',
  'memory.health.remediation.embedding_dim_mismatch':
    'Il modello di embedding restituisce una dimensione del vettore errata (la memoria prevede 1024 dimensioni). Scegli un modello a 1024 dimensioni o richiedi 1024 dimensioni al tuo provider.',
  'memory.health.remediation.local_model_unavailable':
    'Un modello locale richiesto non è disponibile. Installa/avvia Ollama e scarica il modello, oppure passa questo carico di lavoro a un provider cloud in Impostazioni → IA.',
  'memory.health.remediation.extraction_timeout':
    'Il modello di estrazione della memoria sta andando in timeout, quindi il wiki ha poca struttura. Passa a un modello di estrazione della memoria più veloce in Impostazioni → IA.',
  'memory.health.remediation.summarizer_unavailable':
    "Nessun provider di riepilogo è disponibile per Crea alberi di riepilogo. Abilita l'IA locale (Ollama) o abilita il riepilogo cloud in Impostazioni → IA → Memoria.",
  'memory.health.remediation.empty_input_refused':
    'Un elemento di memoria è stato saltato perché il suo testo era vuoto. Nessuna azione necessaria — i nuovi elementi continuano a essere incorporati normalmente.',
  'memory.health.remediation.storage_unavailable':
    "OpenHuman non riesce a scrivere nella sua memoria — il disco o la scheda SD sembra guasto, pieno o di sola lettura. Controlla l'unità e libera spazio; l'elaborazione della memoria riprenderà automaticamente quando lo spazio di archiviazione tornerà scrivibile.",
  'memory.health.remediation.transient':
    "Un errore temporaneo ha interrotto l'elaborazione della memoria. Verrà riprovato automaticamente.",
  'memory.health.remediation.unknown':
    "L'elaborazione della memoria ha riscontrato un problema. Controlla Impostazioni → IA per la configurazione.",
  // Chat — agent-generated artifacts (#2779)

  // Chat composer toolbar
  'composer.attachFile': 'Allega file',
  'composer.modelSelector': 'Modello',
  'composer.voiceMode': 'Modalità vocale',
  'composer.qualityHigh': 'Alta',
  // Agent activity level
  'activityLevel.title': "Livello di attività dell'agente",
  'activityLevel.description':
    'Controlla quanto è proattivo il tuo agente. I livelli più alti usano più token.',
  'activityLevel.off': 'Disattivato',
  'activityLevel.offDesc':
    'Nessuna elaborazione in background. Sincronizza solo alla pressione del pulsante.',
  'activityLevel.minimal': 'Minimo',
  'activityLevel.minimalDesc':
    'Sincronizza le sorgenti una volta al giorno. Nessun messaggio proattivo.',
  'activityLevel.moderate': 'Moderato',
  'activityLevel.moderateDesc': 'Sincronizza ogni ora. Riepilogo giornaliero. Suggerisce azioni.',
  'activityLevel.active': 'Attivo',
  'activityLevel.activeDesc':
    'Sincronizza ogni 10 min. Monitora i canali, ordina e redige risposte.',
  'activityLevel.alwaysOn': 'Sempre attivo',
  'activityLevel.alwaysOnDesc':
    'Sincronizzazione in tempo reale. Piena autonomia entro i limiti definiti.',
  'activityLevel.currentMonth': 'Questo mese: ${amount}',
  'activityLevel.saved': 'Livello di attività aggiornato.',
  'activityLevel.default': 'predefinito',
  'activityLevel.costFree': '0 $',
  'activityLevel.costRange': '~${min}–${max}/mese',

  // Sync budget dialog
  'syncBudget.title': 'Budget di sincronizzazione',
  'syncBudget.maxTokens': 'Token massimi per sincronizzazione',
  'syncBudget.maxTokensHelp':
    'Ferma la sincronizzazione dopo aver consumato questo numero di token.',
  'syncBudget.maxCost': 'Costo massimo per sincronizzazione (USD)',
  'syncBudget.maxCostHelp': 'Limite assoluto in dollari per ogni esecuzione di sincronizzazione.',
  'syncBudget.syncDepth': 'Profondità di sincronizzazione',
  'syncBudget.syncDepthHelp': 'Recupera solo gli elementi di questa finestra temporale.',
  'syncBudget.days7': 'Ultimi 7 giorni',
  'syncBudget.days30': 'Ultimi 30 giorni',
  'syncBudget.days90': 'Ultimi 90 giorni',
  'syncBudget.allTime': 'Sempre',
  'syncBudget.unlimited': 'Illimitato',
  'syncBudget.saved': 'Budget salvato.',

  // Sync confirm dialog
  'syncConfirm.title': 'Conferma sincronizzazione',
  'syncConfirm.message':
    'Questa sincronizzazione elaborerà ~{items} elementi (~{tokens} token, stima ${cost}).',
  'syncConfirm.budgetNote': 'Limite budget: ${max}',
  'syncConfirm.proceed': 'Procedi',
  'syncConfirm.cancel': 'Annulla',
  'syncConfirm.estimating': 'Stima del costo in corso...',

  // Monthly cost badge
  'monthlyCost.badge': '${amount} questo mese',
  'monthlyCost.noData': 'Nessuna sincronizzazione questo mese',

  // Onboarding: Custom > Activity
  'onboarding.custom.stepperActivity': 'Attività',
  'onboarding.custom.stepperVault': 'Vault',
  'onboarding.custom.activity.title': "Attività dell'agente",
  'onboarding.custom.activity.subtitle':
    'Quanto proattivamente il tuo agente monitora e agisce in background.',
  'onboarding.custom.activity.defaultDesc':
    'Attività moderata — sincronizzazione oraria, riepilogo giornaliero.',
  'onboarding.custom.activity.configureDesc':
    "Scegli il tuo livello di attività. Configura in Impostazioni › Livello di attività dell'agente.",

  // Onboarding: Custom > Vault
  'onboarding.custom.vault.title': 'Configurazione memoria e Vault',
  'onboarding.custom.vault.subtitle':
    'Conferma dove vengono scritte le note di memoria, come vengono letti i dati sorgente e se la pipeline del vault è integra.',
  'onboarding.custom.vault.defaultDesc':
    'Usa le impostazioni di memoria predefinite gestite da OpenHuman. Il percorso del vault e la salute della sincronizzazione possono essere verificati in seguito.',
  'onboarding.custom.vault.configureDesc':
    'Verifica la proprietà del vault, esegui controlli di integrità e ottimizza i controlli della memoria ora.',
  'onboarding.custom.vault.localDisabledReason':
    'La configurazione gestita richiede il login a OpenHuman e non è disponibile in modalità locale.',
  'onboarding.custom.vault.exitError': "Impossibile completare l'onboarding. Riprova.",

  // Vault Health
  'vaultHealth.title': 'Checklist integrità vault',
  'vaultHealth.setupTitle': 'Integrità configurazione vault',
  'vaultHealth.workspaceVault': 'Vault workspace:',
  'vaultHealth.refresh': 'Aggiorna',
  'vaultHealth.refreshing': 'Aggiornamento in corso…',
  'vaultHealth.revealFolder': 'Mostra cartella',
  'vaultHealth.openInObsidian': 'Apri in Obsidian',
  'vaultHealth.installObsidian': 'Installa Obsidian',
  'vaultHealth.openObsidianError': 'Impossibile aprire Obsidian',
  'vaultHealth.revealError': 'Impossibile mostrare la cartella del vault',
  'vaultHealth.downloadError': 'Impossibile aprire la pagina di download di Obsidian',
  'vaultHealth.loadError': "Impossibile caricare l'integrità del vault:",
  'vaultHealth.lastSync': 'Ultima sincronizzazione:',
  'vaultHealth.passed': 'Superato',
  'vaultHealth.needsAttention': 'Richiede attenzione',
  'vaultHealth.existsLabel': 'Il percorso del vault workspace esiste',
  'vaultHealth.existsRecovery':
    'La cartella del vault è assente. Avvia una sincronizzazione o crea questa cartella, poi aggiorna la checklist.',
  'vaultHealth.writableLabel': 'Il vault è scrivibile da OpenHuman',
  'vaultHealth.writableRecovery':
    'OpenHuman non riesce ancora a scrivere in questo vault. Concedi i permessi di scrittura e aggiorna.',
  'vaultHealth.obsidianLabel': 'Il vault è registrato in Obsidian',
  'vaultHealth.obsidianRecovery':
    'In Obsidian, scegli "Apri cartella come vault" per questo percorso, poi aggiorna la checklist.',
  'vaultHealth.pipelineLabel': 'La pipeline di memoria è integra',
  'vaultHealth.pipelineRecovery':
    'La pipeline di memoria è in pausa o in errore. Riattiva la sincronizzazione automatica nello stato del Memory Tree e riprova.',
  'vaultHealth.timeNever': 'Mai',
  'vaultHealth.timeJustNow': 'poco fa',
  'vaultHealth.timeMinAgo': '{n} min fa',
  'vaultHealth.timeHrAgo': '{n} ora fa',
  'vaultHealth.timeDayAgo': '{n} giorno fa',
  'vaultHealth.timeDaysAgo': '{n} giorni fa',

  // Memory Data
  'memoryData.howItWorks': 'Come funziona la memorizzazione',
  'memoryData.workspaceVault': 'Vault workspace · scrittura',
  'memoryData.workspaceVaultDesc':
    'OpenHuman scrive le note di memoria generate in memory_tree/content.',
  'memoryData.connectedSources': 'Fonti collegate · lettura',
  'memoryData.connectedSourcesDesc':
    "Cartelle, caselle di posta, chat e repository vengono importati per l'indicizzazione della memoria — i file originali non vengono mai riscritti.",
  'memoryData.internalFiles': 'File interni del memory-tree',
  'memoryData.internalFilesDesc':
    'Indici, stato della coda e riepiloghi sono gestiti da OpenHuman per mantenere efficiente il richiamo e la sincronizzazione.',
  'memoryData.windowError': 'Finestra di memoria',
  'memoryData.windowUpdated': 'Finestra di memoria aggiornata',
  'memoryData.windowUpdatedMsg': 'Impostata su {window}.',
  'skills.create.whenToUse': 'Quando usarlo',
  'skills.create.whenToUsePlaceholder':
    "es. quando l'utente chiede di organizzare la posta in arrivo",
  'skills.create.whenToUseHelp':
    "L'attivatore che un agente riconosce per decidere di eseguire questo workflow. Lascia vuoto per riutilizzare la descrizione.",
  'skills.create.inputs.row.descriptionError': 'È richiesta una descrizione per ogni input.',
  'skills.detail.run': 'Esegui',
  'skills.detail.runAriaLabel': 'Esegui questo workflow',
  'skills.run.title': 'Workflow',
  'workflows.installFromUrl': 'Installa da URL',
  // Security banner (approval-gate host-aware boot state)
  'security.approvalGateDisabled.title': 'Porta di approvazione disattivata',
  'security.approvalGateDisabled.body':
    'OPENHUMAN_APPROVAL_GATE=0 è impostato nel tuo ambiente. Gli strumenti con effetti esterni verranno eseguiti senza chiedere conferma.',
  'security.approvalGateOverrideIgnored.title': 'Override bloccato',
  'security.approvalGateOverrideIgnored.body':
    "È stato rilevato un override OPENHUMAN_APPROVAL_GATE=0 ma è stato ignorato: l'app desktop mantiene sempre attiva la porta di approvazione.",

  // Run queue
  'runQueue.mode.interrupt': 'Interrompi',
  'runQueue.mode.steer': 'Guida',
  'runQueue.mode.followup': 'Seguito',
  'runQueue.mode.collect': 'Aggiungi contesto',
  'runQueue.queued': 'Messaggio in coda',
  'runQueue.steerHint': 'Guida il turno corrente',
  'runQueue.followupHint': 'Metti in coda come seguito',
  'runQueue.collectHint': 'Aggiungi come contesto extra',
  'runQueue.status': '{total} in coda',
  'runQueue.cleared': 'Coda svuotata',
  'notch.ready': 'Pronto',
  'notch.processing': 'Elaborazione…',
  'notch.listening': 'Ascolto…',
  'notch.thinking': 'Penso…',
  'notch.speaking': 'Parlo…',
  'notch.transcribing': 'Trascrizione…',
  'notch.executing': 'Eseguendo…',
  'memory.tab.orchestration': 'Orchestrazione',
  'memory.tab.orchestrationDescription':
    'Esegui flussi di lavoro multi-agente — distribuisci una domanda tra agenti paralleli, confronta i loro risultati e osserva ogni fase concludersi in un’unica risposta sintetizzata.',
  'orchestration.subtitle':
    'Avvia un flusso di lavoro multi-agente, osserva l’avanzamento delle sue fasi e leggi il risultato sintetizzato.',
  'orchestration.loading': 'Caricamento dei flussi di lavoro…',
  'orchestration.failedToLoad': 'Impossibile caricare i flussi di lavoro',
  'orchestration.definitions': 'Flussi di lavoro disponibili',
  'orchestration.noDefinitions': 'Nessuna definizione di flusso di lavoro disponibile.',
  'orchestration.approvalRequired': 'Approvazione richiesta',
  'orchestration.start': 'Avvia',
  'orchestration.confirmStart': 'Avvia esecuzione',
  'orchestration.starting': 'Avvio in corso…',
  'orchestration.questionLabel': 'Domanda di ricerca (facoltativa)',
  'orchestration.questionPlaceholder': 'Cosa devono ricercare gli agenti?',
  'orchestration.runProgress': 'Avanzamento esecuzione',
  'orchestration.recentRuns': 'Esecuzioni recenti',
  'orchestration.noRuns': 'Ancora nessuna esecuzione di flussi di lavoro.',
  'orchestration.close': 'Chiudi',
  'orchestration.tier.readOnly': 'Sola lettura',
  'orchestration.tier.standard': 'Standard',
  'orchestration.tier.editCapable': 'Con capacità di modifica',
  'orchestration.approval.title': 'Approva questa esecuzione del flusso di lavoro',
  'orchestration.approval.body':
    'Questa è un’esecuzione ad alto costo o ad alta concorrenza e richiede la tua approvazione esplicita prima di iniziare:',
  'orchestration.approval.reason.tier':
    'I suoi agenti possono compiere azioni oltre la ricerca in sola lettura.',
  'orchestration.approval.reason.concurrency': 'Esegue molti agenti contemporaneamente.',
  'orchestration.approval.reason.children': 'Può generare un gran numero di agenti in totale.',
  'orchestration.approval.tier': 'Livello di sicurezza',
  'orchestration.approval.concurrency': 'Concorrenza',
  'orchestration.approval.maxChildren': 'Numero massimo di agenti',
  'orchestration.approval.approve': 'Approva e avvia',
  'orchestration.approval.starting': 'Avvio in corso…',
  'orchestration.approval.cancel': 'Annulla',
  'orchestration.runStatus.pending': 'In attesa',
  'orchestration.runStatus.running': 'In esecuzione',
  'orchestration.runStatus.completed': 'Completata',
  'orchestration.runStatus.failed': 'Non riuscita',
  'orchestration.runStatus.cancelled': 'Annullata',
  'orchestration.runStatus.interrupted': 'Interrotta',
  'orchestration.phaseStatus.pending': 'In attesa',
  'orchestration.phaseStatus.running': 'In esecuzione',
  'orchestration.phaseStatus.completed': 'Completata',
  'orchestration.phaseStatus.failed': 'Non riuscita',
  'orchestration.detail.stop': 'Arresta',
  'orchestration.detail.resume': 'Riprendi',
  'orchestration.detail.agents': 'agenti',
  'orchestration.detail.childRefs': 'Agenti figli',
  'orchestration.detail.synthesis': 'Sintesi finale',
  // ── Agent Profiles ───────────────────────────────────────────────────────
  'settings.profiles.title': 'Profili agente',
  'settings.profiles.subtitle':
    'Agenti con carattere: ognuno con la propria anima, memoria, connettori e competenze.',
  'settings.profiles.menuDesc': 'Crea e gestisci i profili agente',
  'settings.profiles.new': 'Nuovo profilo',
  'settings.profiles.empty': 'Ancora nessun profilo agente',
  'settings.profiles.loadError': 'Impossibile caricare i profili',
  'settings.profiles.active': 'Attivo',
  'settings.profiles.setActive': 'Imposta come attivo',
  'settings.profiles.sourceBuiltIn': 'Integrato',
  'settings.profiles.sourceCustom': 'Personalizzato',
  'settings.profiles.deleteConfirm': 'Eliminare questo profilo? Operazione irreversibile.',
  'settings.profiles.editor.createTitle': 'Nuovo profilo',
  'settings.profiles.editor.editTitle': 'Modifica profilo',
  'settings.profiles.editor.name': 'Nome',
  'settings.profiles.editor.id': 'Identificativo',
  'settings.profiles.editor.idHint': 'Solo lettere minuscole, numeri e trattini.',
  'settings.profiles.editor.description': 'Descrizione',
  'settings.profiles.editor.soul': 'Anima (SOUL.md)',
  'settings.profiles.editor.soulHint':
    "Identità personalizzata di questo profilo. Vuoto ricorre al SOUL.md dell'area di lavoro.",
  'settings.profiles.editor.baseAgent': 'Agente di base',
  'settings.profiles.editor.baseAgentHint':
    'Con quale definizione di agente viene eseguito questo profilo (ad es. orchestrator).',
  'settings.profiles.editor.model': 'Modello',
  'settings.profiles.editor.modelHint':
    'Override del modello opzionale. Vuoto eredita il valore predefinito.',
  'settings.profiles.editor.temperature': 'Temperatura',
  'settings.profiles.editor.systemPromptSuffix': 'Suffisso del prompt di sistema',
  'settings.profiles.editor.agentConversations': "Richiamare le conversazioni dell'agente",
  'settings.profiles.editor.agentConversationsHint':
    'Includere la memoria delle chat precedenti e incrociate nel contesto di questo profilo.',
  'settings.profiles.editor.memorySources': 'Fonti di memoria',
  'settings.profiles.editor.memorySourcesHint': 'Fonti di memoria da cui questo profilo richiama.',
  'settings.profiles.editor.connectors': 'Connettori',
  'settings.profiles.editor.connectorsHint': 'Toolkit Composio utilizzabili da questo profilo.',
  'settings.profiles.editor.skills': 'Competenze',
  'settings.profiles.editor.skillsHint':
    'Flussi di lavoro che questo profilo può elencare ed eseguire.',
  'settings.profiles.editor.mcpServers': 'Server MCP',
  'settings.profiles.editor.mcpServersHint': 'Server MCP raggiungibili da questo profilo.',
  'settings.profiles.editor.all': 'Tutti',
  'settings.profiles.editor.selected': 'Selezionati',
  'settings.profiles.editor.addPlaceholder': 'Digita un identificativo e premi Invio',
  'settings.profiles.editor.removeAria': 'Rimuovi {item}',
  'settings.profiles.editor.notFound': 'Profilo non trovato',
  'settings.profiles.editor.saving': 'Salvataggio…',
  'settings.profiles.editor.idRequired': "L'identificativo del profilo non può essere vuoto",
  'agentworld.jobs.applyModal.title': 'Candidati al lavoro',
  'agentworld.jobs.applyModal.successHeading': 'Proposta inviata con successo!',
  'agentworld.jobs.applyModal.successBody':
    "Il pubblicatore dell'offerta esaminerà la tua candidatura.",
  'agentworld.jobs.applyModal.coverLetterLabel': 'Lettera di presentazione',
  'agentworld.jobs.applyModal.coverLetterPlaceholder':
    'Descrivi la tua esperienza e perché sei adatto a questo ruolo',
  'agentworld.jobs.applyModal.bidAmountLabel': 'Importo offerta',
  'agentworld.jobs.applyModal.bidAmountPlaceholder': 'es. 450 USDC',
  'agentworld.jobs.applyModal.deliveryLabel': 'Consegna stimata',
  'agentworld.jobs.applyModal.deliveryPlaceholder': 'es. 2 settimane',
  'agentworld.jobs.applyModal.cancel': 'Annulla',
  'agentworld.jobs.applyModal.submit': 'Invia candidatura',
  'agentworld.jobs.applyModal.submitting': 'Candidatura in corso…',
  'agentworld.messaging.missingSignalBundle':
    'Questo utente non ha ancora attivato la messaggistica crittografata. Chiedigli di aprire Agent World e attivare i DM sicuri prima di inviare un messaggio.',

  // User-actionable runtime errors (#3931)
  'userErrors.title': 'Azione necessaria',
  'userErrors.dismiss': 'Ignora',
  'userErrors.action.openBilling': 'Apri fatturazione',
  'userErrors.action.openProviderSettings': 'Impostazioni del provider',
  'userErrors.budgetExceeded.title': 'Budget gestito esaurito',
  'userErrors.budgetExceeded.body':
    'Il tuo budget IA gestito è esaurito. Aggiungi budget o cambia piano.',
  'userErrors.insufficientCredits.title': 'Crediti del provider necessari',
  'userErrors.insufficientCredits.body':
    'Il tuo provider IA ha esaurito i crediti. Ricaricalo o aggiorna la chiave API.',
  'userErrors.apiKeyMissing.title': 'Chiave API richiesta',
  'userErrors.apiKeyMissing.body':
    'Il tuo provider IA non ha una chiave API impostata. Aggiungine una nelle impostazioni del provider per continuare.',
  'userErrors.scope.chat': 'Chat',
  'userErrors.scope.cron': 'Attività pianificata',
  // Agent World — Identity trading (confirm-before-spend + balance gate)
  'agentWorld.trading.amountLabel': 'Importo',
  'agentWorld.trading.networkLabel': 'Rete',
  'agentWorld.trading.balanceLabel': 'Il tuo saldo',
  'agentWorld.trading.walletLabel': 'Portafoglio',
  'agentWorld.trading.balanceUnknown': 'Sconosciuto',
  'agentWorld.trading.cancel': 'Annulla',
  'agentWorld.trading.addFunds': 'Aggiungi fondi',
  'agentWorld.trading.confirmPay': 'Conferma e paga',
  'agentWorld.trading.confirmCommit': 'Conferma',
  'agentWorld.trading.continue': 'Continua',
  'agentWorld.trading.submitting': 'Invio in corso…',
  'agentWorld.trading.placeBid': 'Fai un’offerta',
  'agentWorld.trading.submitOffer': 'Invia offerta',
  'agentWorld.trading.bidTitlePrefix': 'Offerta per',
  'agentWorld.trading.offerTitlePrefix': 'Proposta per',
  'agentWorld.trading.bidReviewTitlePrefix': 'Conferma offerta per',
  'agentWorld.trading.offerReviewTitlePrefix': 'Conferma proposta per',
  'agentWorld.trading.spendInsufficient':
    'Saldo insufficiente per completare questo pagamento. Aggiungi fondi al tuo portafoglio per continuare.',
  'agentWorld.trading.spendBroadcastNote':
    'Il tuo portafoglio firmerà e trasmetterà questo pagamento su',
  'agentWorld.trading.commitInsufficientWarning':
    'Il tuo saldo potrebbe non coprire questo importo se l’impegno viene accettato. Puoi comunque inviarlo: i fondi si spostano solo all’accettazione.',
  'agentWorld.trading.commitSettleNote':
    'Questo è un impegno firmato: i fondi si spostano solo se viene accettato.',
  'agentWorld.trading.commitReviewSubtitle': 'Controlla il tuo impegno prima di inviarlo.',
  'agentWorld.trading.balanceUnverified':
    'Non siamo riusciti a verificare il saldo del tuo portafoglio. Puoi comunque continuare: il pagamento viene verificato all’invio.',
  'agentWorld.trading.amountTooManyDecimals': 'Questo importo ha troppe cifre decimali.',
  'agentWorld.trading.amountMustBePositive': 'Inserisci un importo maggiore di zero.',
  'agentWorld.trading.amountInvalid': 'Inserisci un importo valido.',

  // Code block chrome
  'codeBlock.copy': 'Copia',
  'codeBlock.copied': 'Copiato!',
};

export default messages;
