"""VoxCast UI strings: Italian. Key/placeholder parity with en.py enforced."""

STRINGS: dict[str, str] = {
    # ── Panel (main.qml) ────────────────────────────────────────────────
    "panel_ready": "Pronto",
    "panel_transcribing": "Trascrizione...",
    "panel_correcting": "Correzione...",
    "panel_enhancing": "Perfezionamento (IA)…",
    "panel_converting": "Conversione...",
    "panel_error": "Errore",
    "panel_drop_file": "Rilascia file → Markdown",
    "panel_acc_ai_mode": "Modalità IA",
    "panel_acc_settings": "Impostazioni",
    "panel_acc_undock": "Sgancia",
    "panel_acc_hide": "Nascondi",

    # ── Settings window ─────────────────────────────────────────────────
    "settings_title": "Impostazioni",
    "sec_interface": "INTERFACCIA",
    "row_ui_language": "Lingua",
    "sec_audio": "AUDIO",
    "row_microphone": "Microfono",
    "opt_system_default": "Predefinito di sistema",
    "row_voice_test": "Test vocale",
    "btn_test": "Prova",
    "btn_stop": "Stop",
    "btn_play": "Riproduci",
    "sec_recognition": "RICONOSCIMENTO",
    "row_model": "Modello",
    "model_swift": "Swift",
    "model_precise": "Precise",
    "model_ultra": "Ultra",
    "hint_model_swift": "Veloce e leggero, la scelta giusta per laptop e PC senza scheda grafica.",
    "hint_model_precise": "Precisione equilibrata, scelta solida per l'uso quotidiano, funziona bene sulla maggior parte dei PC.",
    "hint_model_ultra": "Massima precisione, ideale con una scheda grafica (4 GB); notevolmente più lento senza.",
    "compat_gpu_ok": "Funzionerà sulla tua scheda grafica ({vram} GB).",
    "compat_gpu_low": "La tua scheda grafica ({vram} GB) ha troppa poca memoria per questo modello, funzionerà sul processore (più lento).",
    "compat_cpu": "Nessuna scheda grafica compatibile rilevata, questo modello funzionerà sul processore.",
    "compat_cpu_forced": "Funzionerà sul processore (impostato nelle impostazioni).",
    "row_language": "Lingua",
    "row_lang_auto": "Rilevamento automatico della lingua",
    "hint_lang_auto": "Rileva la lingua a ogni dettatura. Una lingua fissa è più veloce e precisa.",
    "row_live_mode": "Trascrizione live",
    "hint_live_mode": "Il testo appare al cursore mentre parli, invece che dopo lo stop. In questa modalità nessun perfezionamento IA; il testo viene digitato al cursore.",
    "hint_output_live": "La trascrizione live è attiva: il testo viene digitato al cursore mentre parli, quindi queste opzioni di output non si applicano.",
    "hint_live_cpu": "Funziona al meglio con una scheda grafica; sul processore può restare indietro rispetto alla tua voce.",
    "live_cpu_warning": "La modalità live gira sul processore e può accumulare ritardo; si consiglia una scheda grafica.",
    "sec_output": "OUTPUT",
    "row_text_output": "Output del testo",
    "opt_clipboard": "Appunti",
    "opt_type_at_cursor": "Digita al cursore",
    "opt_both": "Entrambi",
    "row_insert_method": "Metodo di inserimento",
    "opt_paste": "Incolla (Ctrl+V)",
    "opt_typing": "Digitazione",
    "hint_typing": "Simula l'input da tastiera. Funziona anche nei terminali.",
    "sec_controls": "COMANDI",
    "row_hotkey": "Scorciatoia",
    "row_mode": "Modalità",
    "opt_hold": "Tieni premuto",
    "opt_toggle": "Attiva/disattiva",
    "sec_performance": "PRESTAZIONI",
    "row_compute": "Calcolo",
    "opt_auto": "Automatico",
    "opt_gpu": "GPU",
    "opt_cpu": "CPU",
    "hint_cpu_slow": "La modalità CPU è più lenta.",
    "sec_system": "SISTEMA",
    "row_autostart": "Avvio automatico",
    "row_startup_sound": "Suono di avvio",
    "row_recording_sound": "Suono di registrazione",
    "row_shutdown_sound": "Suono di chiusura",
    "row_always_on_top": "Sempre in primo piano",
    "row_small_panel": "Pannello piccolo",
    "sec_file_conversion": "CONVERSIONE FILE",
    "row_save_mode": "Modalità di salvataggio",
    "opt_ask": "Chiedi",
    "opt_beside_file": "Accanto al file",
    "opt_folder": "Cartella",
    "row_folder": "Cartella",
    "btn_browse": "Sfoglia",
    "row_timestamps": "Timestamp",
    "row_open_after": "Apri al termine",
    "row_context_menu": "Menu del tasto destro",
    "hint_context_menu": "Aggiunge “Converti in Markdown” al menu del tasto destro di Esplora file.",
    "sec_ai": "PERFEZIONAMENTO IA",
    "row_enable": "Attiva",
    "hint_ai": "Perfeziona le dettature con l'IA (pulizia, e-mail, risposta…). Scegli la modalità attiva con un clic destro sul pannello o tramite il pulsante IA del pannello.",
    "row_provider": "Provider",
    "row_api_key": "Chiave API",
    "ph_api_key": "Incolla la chiave API",
    "ph_api_key_saved": "•••••••• salvata, digita per sostituirla",
    "btn_save": "Salva",
    "hint_key_stored": "Chiave salvata in modo sicuro nel Gestore credenziali di Windows.",
    "btn_clear": "Rimuovi",
    "btn_load": "Carica",
    "btn_loading": "Caricamento",
    "row_active_mode": "Modalità attiva",
    "mode_normal": "Normale (senza IA)",
    # Display names of the built-in AI modes (shown while the user hasn't
    # renamed them; the stored name stays the English default).
    "mode_cleanup": "Pulizia",
    "mode_email": "E-mail",
    "mode_reply": "Risposta",
    "mode_todo": "Elenco attività",
    "mode_notes": "Note",
    "mode_formal": "Formale",
    "lbl_custom_modes": "Modalità personalizzate",
    "sec_license": "LICENZA",
    "row_status": "Stato",
    "lic_activated": "● Attivato",
    "lic_not_activated": "○ Non attivato",
    "btn_activate": "Attiva",
    "sec_updates": "AGGIORNAMENTI",
    "row_version": "Versione",
    "btn_check_updates": "Cerca aggiornamenti",
    "btn_checking": "Controllo",
    "btn_downloading_pct": "{pct}%  in download…",
    "btn_download_install": "Scarica e installa v{version}",
    "btn_reset": "Ripristina",
    "reset_title": "Ripristina impostazioni",
    "reset_question": "Ripristinare tutte le impostazioni ai valori predefiniti?",
    "dlg_model_dl_title": "Download necessario",
    "dlg_model_dl_text": "Il modello selezionato non è ancora installato. VoxCast scaricherà circa {size} di dati vocali e passerà al nuovo modello. Avviare il download adesso?",

    # ── Mode editor ─────────────────────────────────────────────────────
    "ph_mode_name": "Nome modalità",
    "tip_remove_mode": "Rimuovi modalità",
    "ph_system_prompt": "Prompt di sistema, dice all'IA come trasformare la trascrizione.",
    "btn_add_mode": "Aggiungi modalità",
    "mode_new": "Nuova modalità",

    # ── Mode menu (panel) ───────────────────────────────────────────────
    "menu_ai_mode": "MODALITÀ IA",
    "menu_ai_mode_off": "MODALITÀ IA  ·  OFF",
    "menu_ai_settings": "Impostazioni…",
    "menu_copy_raw": "Copia trascrizione originale",
    "tray_raw_copied": "La trascrizione originale è stata copiata negli appunti.",

    # ── Activation overlay ──────────────────────────────────────────────
    "act_title": "Attiva VoxCast",
    "act_intro": "Inserisci la tua chiave di licenza per attivare questo dispositivo. L'attivazione è un passaggio online una tantum, dopo VoxCast funziona completamente offline.",
    "act_enter_key": "Inserisci la tua chiave di licenza.",
    "act_button": "Attiva",
    "act_button_busy": "Attivazione…",
    "act_update_available": "È disponibile la versione {version}.",
    "act_update_now": "Aggiorna ora",
    "act_device": "Dispositivo: ",
    "act_quit": "Esci",

    # ── First-run overlay ───────────────────────────────────────────────
    "fr_title": "Configurazione di VoxCast",
    "fr_pick_language": "Seleziona la lingua per il riconoscimento vocale.\nCosì eviti la lenta rilevazione automatica a ogni utilizzo.",
    "fr_continue": "Continua",
    "fr_preparing": "Preparazione dei modelli...",
    "fr_hint_label": "Suggerimento:",
    "status_hw_check": "Controllo dell'hardware...",
    "fr_hw_gpu": "Scheda grafica rilevata ({vram} GB): verrà configurato il modello {model}.",
    "fr_hw_cpu": "Nessuna scheda grafica dedicata rilevata: verrà configurato il modello {model}.",
    "fr_hint_download": "I modelli si scaricano una sola volta e restano sul tuo dispositivo, nessun cloud necessario.",
    "fr_hint_hotkey": "Premi Ctrl+Shift+Space per iniziare a dettare, premi di nuovo per fermarti.",
    "fr_hint_ai": "Clic destro sul pannello per scegliere una modalità IA (es. E-mail, Risposta).",
    "fr_hint_dragfile": "Trascina un file sul pannello per trasformarlo in Markdown.",
    "fr_hint_audio": "Rilascia un file audio (mp3, ogg, m4a…) per trascriverlo.",
    "fr_hint_explorer": "In Esplora file, clic destro su un file → “Converti in Markdown”.",
    "fr_hint_dock": "Aggancia il pannello a un bordo dello schermo, scivola via finché non ti serve.",
    "fr_hint_settings": "Apri le Impostazioni per cambiare modello, lingua o scorciatoia in qualsiasi momento.",

    # ── Status messages (Python → panel) ────────────────────────────────
    "status_init_services": "Inizializzazione dei servizi...",
    "status_loading_vad": "Caricamento del rilevamento vocale...",
    "status_loading_model": "Caricamento del modello di riconoscimento vocale...",
    "status_init_models": "Inizializzazione dei modelli...",
    "status_loading": "Caricamento del modello...",
    "status_switching_model": "Cambio del modello...",
    "status_downloading_engine": "Download del motore di riconoscimento vocale...",
    "status_engine_ready": "Motore di riconoscimento vocale pronto",
    "status_downloading_correction": "Download del modello di correzione...",
    "status_correction_ready": "Modello di correzione scaricato",

    # ── Meeting recording ────────────────────────────────────────────────
    "menu_meeting_start": "Registra riunione",
    "menu_meeting_stop": "Interrompi registrazione riunione",
    "meeting_consent_title": "Registrare riunioni",
    "meeting_consent_body": "VoxCast registra l'audio di sistema e il tuo microfono così puoi trascrivere chiamate e riunioni.\n\nAssicurati che tutti i partecipanti acconsentano alla registrazione, in molti paesi (inclusa la Germania) registrare una chiamata senza consenso è un reato.",
    "meeting_consent_accept": "Ho capito, avvia la registrazione",
    "meeting_consent_cancel": "Annulla",
    "status_meeting_recording": "Registrazione riunione in corso",
    "status_meeting_transcribing": "Trascrizione della riunione… {pct}%",
    "meeting_done_title": "Riunione trascritta",
    "meeting_done_body": "La trascrizione è stata salvata, clicca qui per aprirla.",
    "meeting_resume_note": "È stata trovata una registrazione di riunione incompleta, viene trascritta ora.",
    "menu_meeting_folder": "Apri cartella riunioni",
    "meeting_source_title": "Cosa registrare?",
    "meeting_source_system": "Intero sistema",
    "meeting_source_empty": "Nessuna app sta riproducendo audio al momento",
    "meeting_app_fallback": "La registrazione della singola app non è partita, viene registrato invece l'intero sistema.",
    "md_meeting_source": "Fonte",
    "meeting_partial_note": "La registrazione si è interrotta in anticipo, la parte registrata è stata comunque elaborata.",
    "meeting_system_silent": "Non è stato catturato audio di sistema, controlla il dispositivo di riproduzione. Alcune cuffie riproducono l'audio in un modo che Windows non può registrare; cambiare il dispositivo di uscita predefinito aiuta.",
    "meeting_summary_failed": "Riepilogo IA non riuscito, la trascrizione è stata salvata senza.",
    "err_meeting_folder": "Impossibile creare la cartella delle riunioni. Controlla la cartella nelle Impostazioni.",
    "err_meeting_disk": "Spazio libero su disco insufficiente, registrazione della riunione interrotta.",
    "err_meeting_maxlen": "Durata massima della riunione raggiunta (4 h), registrazione interrotta.",
    "err_meeting_capture": "Registrazione della riunione non riuscita, non è stato possibile catturare audio.",
    "err_meeting_transcribe": "Trascrizione della riunione non riuscita. Il file audio è stato conservato, puoi riprovare.",
    "md_meeting_title": "Riunione",
    "md_meeting_date": "Data",
    "md_meeting_duration": "Durata",
    "md_meeting_summary": "Riepilogo",
    "md_meeting_transcript": "Trascrizione",
    "sec_remote": "Server remoto",
    "row_remote_enable": "Usa server remoto",
    "hint_remote": "Esegui la trascrizione su un altro computer con GPU o CPU più potente. Dettatura, conversione dei file e riunioni vengono elaborate sul server.",
    "hint_recognition_remote": "Il server remoto gestisce il riconoscimento, quindi il modello locale qui sotto è disattivato. Scegli il modello sul server.",
    "row_remote_url": "Indirizzo del server",
    "ph_remote_url": "http://192.168.1.10:8590",
    "row_remote_key": "Chiave API",
    "ph_remote_key": "Incolla la chiave API del server",
    "btn_remote_test": "Prova connessione",
    "remote_testing": "Prova in corso...",
    "btn_remote_discover": "Cerca server",
    "remote_discovering": "Ricerca in corso...",
    "remote_discover_none": "Nessun server trovato. Assicurati che il server sia in esecuzione, che entrambi i dispositivi siano sulla stessa rete e che il firewall del server consenta VoxCast Server sulla rete locale.",
    "remote_enhance_available": "Perfezionamento IA disponibile",
    "remote_update_available": "Aggiornamento del server disponibile: {version}",
    "row_tls_mode": "Certificato",
    "tls_verify": "Richiedi un certificato valido",
    "tls_pinned": "Fidati di questo server",
    "tls_insecure": "Consenti qualsiasi certificato",
    "btn_trust_cert": "Verifica certificato",
    "tls_trust_title": "Fidarsi di questo server?",
    "tls_trust_body": "Il server ha presentato questa impronta del certificato. Conferma che corrisponda al tuo server prima di fidarti.",
    "tls_trust_confirm": "Fidati",
    "tls_trust_failed": "Impossibile leggere il certificato del server. Controlla l'indirizzo e che HTTPS sia attivo.",
    "tls_insecure_warning": "La connessione non è verificata. Usala solo su una rete di cui ti fidi.",
    "row_enhance_source": "Perfezionamento IA",
    "enhance_own": "La mia chiave API",
    "enhance_server": "Usa il server",
    "hint_enhance_server": "Il server perfeziona con la propria chiave IA, quindi non devi inserirne una qui.",
    "lbl_server_modes": "Modalità aziendali (dal server)",
    "managed_locked": "Gestito dalla tua organizzazione",
    "remote_http_warn": "Questa connessione non è cifrata. Usala solo in una rete locale attendibile.",
    "remote_live_hint": "I sottotitoli in diretta vengono eseguiti su questo dispositivo; richiedono un modello installato localmente.",
    "remote_connected": "Connesso: {model} su {where}",
    "remote_on_gpu": "GPU ({vram} GB)",
    "remote_on_cpu": "CPU",
    "err_remote_unreachable": "Impossibile raggiungere il server remoto. Controlla l'indirizzo e la tua rete.",
    "err_remote_auth": "Il server remoto ha rifiutato la chiave API.",
    "err_remote_busy": "Il server remoto è occupato. Riprova tra un momento.",
    "err_remote_failed": "Il server remoto non ha potuto elaborare questo audio.",
    "sec_meeting": "RIUNIONI",
    "row_meeting_mic": "Registra microfono",
    "hint_meeting_mic": "Cattura anche la tua voce, non solo gli altri partecipanti.",
    "row_meeting_language": "Lingua",
    "lang_meeting_auto": "Rilevamento automatico",
    "row_convert_language": "Lingua dell'audio",
    "lang_convert_auto": "Rilevamento automatico",
    "err_convert_engine_loading": "Il motore vocale si sta ancora caricando. Riprova la conversione tra un attimo.",
    "err_convert_no_speech": "In questo file non è stato riconosciuto alcun parlato. Nessun file Markdown è stato creato.",
    "err_convert_engine_error": "Il motore vocale ha segnalato un errore durante la trascrizione.",
    "tray_convert_failed": "Impossibile convertire {name}: {error}",
    "hint_meeting_language": "Il rilevamento automatico gestisce riunioni in qualsiasi lingua, anche quando cambia a metà chiamata. Scegli una lingua solo se il rilevamento ha difficoltà.",
    "row_meeting_keep": "Conserva file audio",
    "hint_meeting_keep": "Salva la registrazione come file .wav accanto alla trascrizione.",
    "row_meeting_summary": "Riepilogo IA",
    "hint_meeting_summary": "Aggiunge un riepilogo generato dall'IA sopra la trascrizione (richiede che il perfezionamento IA sia configurato).",
    "hint_meeting_summary_nokey": "Il perfezionamento IA non è configurato, i riepiloghi verranno saltati.",
    "row_meeting_folder": "Salva in",
    "meeting_folder_default": "Documenti\\VoxCast\\Meetings",
    "btn_open": "Apri",

    # ── Errors / tray (Python) ──────────────────────────────────────────
    "err_audio_lib": "Libreria audio non disponibile",
    "err_gpu_oom": "Memoria della GPU esaurita. Riavvia in modalità CPU.",
    "err_gpu_fallback": "Scheda grafica non disponibile, VoxCast gira sul processore (più lento).",
    "err_hotkey_init": "Sistema delle scorciatoie non inizializzato",
    "err_mic": "Errore del microfono. Controlla il tuo dispositivo audio.",
    "err_mic_test_busy": "È già in corso una registrazione. Interrompila prima di testare il microfono.",
    "err_model_switch": "Cambio del modello non riuscito. Riprova.",
    "err_model_download": "Download del modello vocale non riuscito. Controlla la connessione a internet.",
    "err_speech_start": "Impossibile avviare il riconoscimento vocale.",
    "err_transcription": "Trascrizione non riuscita. Riprova.",
    "err_model_missing": "Modello vocale non trovato. Seleziona un modello nelle Impostazioni.",
    "tray_cpu_fallback": "Nessuna GPU compatibile trovata. VoxCast gira sulla CPU.\nLa trascrizione sarà più lenta rispetto all'accelerazione GPU.",
    "tray_cpu_configured": "Gira sulla CPU come configurato nelle impostazioni.",
    "tray_cpu_detected": "Nessuna GPU compatibile rilevata. VoxCast gira sulla CPU.\nPer una trascrizione più veloce si consiglia una GPU dedicata.",
    "tray_file_not_found": "File non trovato.",
    "tray_no_supported_files": "Nessun file supportato da convertire.",
    "tray_still_starting": "VoxCast si sta ancora avviando, riprova tra poco.",
    "tray_no_output_folder": "Cartella di destinazione non impostata, scegli dove salvare.",
    "tray_context_menu_failed": "Impossibile aggiornare il menu del tasto destro.",
    "tray_need_api_key": "Prima inserisci e salva una chiave API.",
    "tray_models_load_failed": "Impossibile caricare i modelli.",
    "tray_show_hide": "Mostra/Nascondi",

    # ── License (Python user messages) ──────────────────────────────────
    "lic_enter_key": "Inserisci la tua chiave di licenza.",
    "lic_saved_failed": "Attivato, ma non è stato possibile salvare la licenza su questo PC.",
    "lic_success": "VoxCast è attivato. Grazie!",
    "lic_check_failed": "Attivazione non riuscita. Controlla la tua chiave.",
    "lic_no_server": "Impossibile raggiungere il server di attivazione. Controlla la connessione a internet.",
    "lic_unexpected": "Attivazione non riuscita per un errore imprevisto. Riprova.",

    # ── Updates (Python user messages) ──────────────────────────────────
    "upd_checking": "Ricerca aggiornamenti…",
    "upd_latest": "Hai già l'ultima versione.",
    "upd_available": "È disponibile la versione {version}.",
    "upd_dialog_title": "Aggiornamento disponibile",
    "upd_whats_new": "Novità",
    "upd_required": "Obbligatorio",
    "upd_no_notes": "Miglioramenti generali e correzioni.",
    "upd_later": "Più tardi",
    "upd_install_now": "Scarica e installa",
    "upd_install_note": "L'aggiornamento sostituisce automaticamente la versione attuale, non devi fare altro.",
    "upd_downloading": "Download della versione {version}…",
    "upd_failed": "Aggiornamento non riuscito. Riprova.",
    "upd_starting_installer": "Avvio del programma di installazione…",
    "upd_installer_failed": "Impossibile avviare il programma di installazione.",
    "upd_err_filename": "Nome file del programma di installazione inatteso nel manifest di aggiornamento.",
    "upd_err_https": "Il download dell'aggiornamento deve usare HTTPS.",
    "upd_err_response": "Il server degli aggiornamenti ha restituito una risposta non valida.",
    "upd_err_no_url": "Nessun URL di download fornito.",
    "upd_err_no_checksum": "Nel manifest di aggiornamento manca il checksum. Operazione annullata.",
    "upd_err_redirect": "Il server degli aggiornamenti ha restituito un reindirizzamento inatteso.",
    "upd_err_integrity": "Il file scaricato non ha superato il controllo di integrità. Operazione annullata.",
    "upd_err_check": "Impossibile cercare aggiornamenti: {error}",
    "upd_err_download": "Download non riuscito: {error}",
    "upd_err_save": "Impossibile salvare l'aggiornamento: {error}",
    "upd_err_host": "Download dell'aggiornamento rifiutato dall'host non attendibile '{host}'.",

    # ── LLM (user messages) ─────────────────────────────────────────────
    # ── Late additions (review sweep) ───────────────────────────────────
    "act_first": "Attiva prima VoxCast.",
    "llm_enhance_failed": "Perfezionamento IA non riuscito: {error}",
    "llm_truncated": "La risposta dell'IA è stata troncata, è stata usata la trascrizione originale.",
    "llm_mode_needs_key": "Modalità IA selezionata, aggiungi una chiave API nelle Impostazioni per attivare il perfezionamento.",
    "tt_recording": "Registrazione...",
    "tray_saved": "Salvato: {name}",
    "tray_converted": "{n} file convertiti in Markdown.",
    "hk_press_key": "Premi un tasto...",
    "hk_acc_record": "Premi i tasti per la scorciatoia",
    "no_folder": "Nessuna cartella selezionata",
    "llm_load_models_ph": "Carica modelli →",

    "llm_no_key": "Nessuna chiave API fornita.",
    "llm_no_key_configured": "Nessuna chiave API configurata.",
    "llm_bad_key": "Chiave API non valida o non autorizzata.",
    "llm_rate_limit": "Limite di richieste raggiunto. Riprova tra poco.",
    "llm_provider_down": "Il provider IA è temporaneamente non disponibile.",
    "llm_request_failed": "Richiesta non riuscita ({code}).",
    "llm_network": "Errore di rete: {error}",
    "llm_no_model": "Nessun modello IA utilizzabile trovato per questa chiave API.",
}
