Ver código fonte

Added Italian localisation

Matteo Parenti 3 meses atrás
pai
commit
b4dcd5b23b
2 arquivos alterados com 2601 adições e 1 exclusões
  1. 4 1
      frontend/src/i18n/index.ts
  2. 2597 0
      frontend/src/i18n/locales/it.ts

+ 4 - 1
frontend/src/i18n/index.ts

@@ -6,11 +6,13 @@ import LanguageDetector from 'i18next-browser-languagedetector';
 import en from './locales/en';
 import de from './locales/de';
 import ja from './locales/ja';
+import it from './locales/it';
 
 const resources = {
   en: { translation: en },
   de: { translation: de },
   ja: { translation: ja },
+  it: { translation: it },
 };
 
 i18n
@@ -19,7 +21,7 @@ i18n
   .init({
     resources,
     fallbackLng: 'en',
-    supportedLngs: ['en', 'de', 'ja'],
+    supportedLngs: ['en', 'de', 'ja', 'it'],
 
     detection: {
       // Order of detection methods
@@ -46,4 +48,5 @@ export const availableLanguages = [
   { code: 'en', name: 'English', nativeName: 'English' },
   { code: 'de', name: 'German', nativeName: 'Deutsch' },
   { code: 'ja', name: 'Japanese', nativeName: '日本語' },
+  { code: 'it', name: 'Italian', nativeName: 'Italiano' },
 ];

+ 2597 - 0
frontend/src/i18n/locales/it.ts

@@ -0,0 +1,2597 @@
+export default {
+    // Navigation
+    nav: {
+        printers: 'Stampanti',
+        archives: 'Archivi',
+        queue: 'Coda',
+        stats: 'Statistiche',
+        profiles: 'Profili',
+        maintenance: 'Manutenzione',
+        projects: 'Progetti',
+        files: 'File',
+        settings: 'Impostazioni',
+        system: 'Sistema',
+        collapseSidebar: 'Comprimi barra laterale',
+        expandSidebar: 'Espandi barra laterale',
+        update: 'Aggiorna',
+        updateAvailable: 'Aggiornamento disponibile: v{{version}}',
+        updateAvailableBanner: 'Versione {{version}} disponibile!',
+        viewUpdate: 'Vedi aggiornamento',
+        viewOnGithub: 'Vedi su GitHub',
+        keyboardShortcuts: 'Scorciatoie da tastiera (?)',
+        switchToLight: 'Passa a tema chiaro',
+        switchToDark: 'Passa a tema scuro',
+        smartSwitches: 'Interruttori Smart',
+        logout: 'Esci',
+    },
+
+    // Common
+    common: {
+        save: 'Salva',
+        saving: 'Salvataggio...',
+        cancel: 'Annulla',
+        delete: 'Elimina',
+        edit: 'Modifica',
+        add: 'Aggiungi',
+        close: 'Chiudi',
+        confirm: 'Conferma',
+        loading: 'Caricamento...',
+        error: 'Errore',
+        success: 'Successo',
+        warning: 'Avviso',
+        enabled: 'Abilitato',
+        disabled: 'Disabilitato',
+        yes: 'Si',
+        no: 'No',
+        on: 'On',
+        off: 'Off',
+        all: 'Tutti',
+        none: 'Nessuno',
+        search: 'Cerca',
+        filter: 'Filtro',
+        sort: 'Ordina',
+        refresh: 'Aggiorna',
+        download: 'Scarica',
+        upload: 'Carica',
+        actions: 'Azioni',
+        status: 'Stato',
+        name: 'Nome',
+        description: 'Descrizione',
+        date: 'Data',
+        time: 'Ora',
+        hours: 'ore',
+        minutes: 'minuti',
+        seconds: 'secondi',
+        days: 'giorni',
+        enable: 'Abilita',
+        disable: 'Disabilita',
+        permissions: 'Permessi',
+        noPrinters: 'Nessuna stampante configurata',
+        noData: 'Nessun dato disponibile',
+        linkNotFound: 'Link non trovato',
+        required: 'Obbligatorio',
+        optional: 'Opzionale',
+        dismiss: 'Chiudi',
+        apply: 'Applica',
+        reset: 'Reimposta',
+        clear: 'Pulisci',
+        selectAll: 'Seleziona tutto',
+        deselectAll: 'Deseleziona tutto',
+        noChange: '— Nessun cambio —',
+        unchanged: 'Invariato',
+        unassigned: 'Non assegnato',
+        unknown: 'Sconosciuto',
+        unknownError: 'Errore sconosciuto',
+        today: 'Oggi',
+        asap: 'ASAP',
+        overdue: 'Scaduto',
+        now: 'Ora',
+        collapse: 'Comprimi',
+        expand: 'Espandi',
+        viewArchive: 'Vedi archivio',
+        viewInFileManager: 'Vedi nel Gestore file',
+        addedBy: 'Aggiunto da {{username}}',
+        prints: 'stampe',
+        more: '+{{count}} altre',
+        ascending: 'Crescente',
+        descending: 'Decrescente',
+        printer: 'Stampante',
+        remove: 'Rimuovi',
+        type: 'Tipo',
+        print: 'Stampa',
+        rename: 'Rinomina',
+        move: 'Sposta',
+        create: 'Crea',
+        duplicate: 'Duplica',
+        left: 'Sinistra',
+        right: 'Destra',
+    },
+
+    // Printers page
+    printers: {
+        title: 'Stampanti',
+        addPrinter: 'Aggiungi Stampante',
+        editPrinter: 'Modifica Stampante',
+        deletePrinter: 'Elimina Stampante',
+        printerName: 'Nome Stampante',
+        serialNumber: 'Numero Seriale',
+        ipAddress: 'Indirizzo IP',
+        accessCode: 'Codice di Accesso',
+        model: 'Modello',
+        nozzleCount: 'Numero Ugelli',
+        autoArchive: 'Auto Archiviazione',
+        status: {
+            idle: 'Inattiva',
+            printing: 'In stampa',
+            paused: 'In pausa',
+            offline: 'Offline',
+            error: 'Errore',
+            finished: 'Finita',
+            unknown: 'Sconosciuto',
+        },
+        temperatures: {
+            nozzle: 'Ugello',
+            bed: 'Piatto',
+            chamber: 'Camera',
+        },
+        progress: '{{percent}}% completato',
+        timeRemaining: '{{time}} rimanente',
+        deleteConfirm: 'Sei sicuro di eliminare "{{name}}"?',
+        maintenanceOk: 'Manutenzione OK',
+        maintenanceWarning: '{{count}} avviso',
+        maintenanceWarning_plural: '{{count}} avvisi',
+        maintenanceDue: '{{count}} in scadenza',
+        maintenanceDue_plural: '{{count}} in scadenza',
+        // Sort options
+        sort: {
+            name: 'Nome',
+            status: 'Stato',
+            model: 'Modello',
+            location: 'Posizione',
+            ascending: 'Ordina crescente',
+            descending: 'Ordina decrescente',
+        },
+        // Card size
+        cardSize: {
+            small: 'Schede piccole',
+            medium: 'Schede medie',
+            large: 'Schede grandi',
+            extraLarge: 'Schede extra grandi',
+        },
+        // Controls
+        hideOffline: 'Nascondi offline',
+        powerOn: 'Accendi',
+        offlinePrintersWithPlugs: 'Stampanti offline con smart plug',
+        noPrintersConfigured: 'Nessuna stampante configurata',
+        // Printer card
+        readyToPrint: 'Pronta a stampare',
+        external: 'Esterna',
+        deleteArchives: 'Elimina archivi stampa',
+        noLabel: 'Nessuna etichetta',
+        printPreview: 'Anteprima stampa',
+        width: 'Larghezza',
+        height: 'Altezza',
+        noObjectsFound: 'Nessun oggetto trovato',
+        objectsLoadedOnPrintStart: 'Gli oggetti sono caricati quando inizia una stampa',
+        willBeSkipped: 'Verra saltato',
+        name: 'Nome',
+        serialCannotBeChanged: 'Il numero seriale non puo essere cambiato',
+        locationHelp: 'Usato per raggruppare stampanti e filtrare i lavori in coda',
+        // WiFi signal strength
+        wifiSignal: {
+            veryWeak: 'Molto debole',
+            weak: 'Debole',
+            fair: 'Discreto',
+            good: 'Buono',
+            excellent: 'Eccellente',
+        },
+        // Maintenance
+        maintenanceUpToDate: 'Tutta la manutenzione aggiornata - Clicca per vedere',
+        // Chamber light
+        chamberLightOn: 'Accendi luce camera',
+        chamberLightOff: 'Spegni luce camera',
+        // Files
+        browseFiles: 'Sfoglia file stampante',
+        // Smart plug
+        autoOffAfterPrint: 'Spegnimento automatico dopo stampa',
+        autoOffExecuted: 'Spegnimento automatico eseguito - accendi la stampante per reimpostare',
+        // HMS errors
+        hmsErrors: 'Errori HMS',
+        viewHmsErrors: 'Vedi {{count}} errore(i) HMS',
+        // Actions
+        resume: 'Riprendi',
+        pause: 'Pausa',
+        stop: 'Ferma',
+        camera: 'Camera',
+        skipObject: 'Salta Oggetto',
+        reconnect: 'Riconnetti',
+        mqttDebug: 'Debug MQTT',
+        activeNozzle: 'Attivo: ugello {{nozzle}}',
+        // Firmware
+        firmwareUpdate: 'Aggiornamento Firmware',
+        firmwareInstructions: 'Sul touchscreen della stampante, vai a',
+        firmwareNav: 'Vai a',
+        settings: 'Impostazioni',
+        firmware: 'Firmware',
+        // Discovery
+        discoverPrinters: 'Trova Stampanti',
+        searching: 'Ricerca...',
+        manualEntry: 'Inserimento manuale',
+        addFromCloud: 'Aggiungi da Cloud',
+        // Toast messages
+        toast: {
+            printerDeleted: 'Stampante eliminata',
+            printerAdded: 'Stampante aggiunta',
+            printerUpdated: 'Stampante aggiornata',
+            failedToDelete: 'Impossibile eliminare stampante',
+            failedToAdd: 'Impossibile aggiungere stampante',
+            failedToUpdate: 'Impossibile aggiornare stampante',
+            commandSent: 'Comando inviato',
+            failedToSendCommand: 'Impossibile inviare comando',
+            turnedOn: '{{name}} accesa',
+            failedToPowerOn: 'Impossibile accendere {{name}}',
+            scriptTriggered: 'Script avviato',
+            printStopped: 'Stampa fermata',
+            printPaused: 'Stampa in pausa',
+            printResumed: 'Stampa ripresa',
+            referenceDeleted: 'Riferimento eliminato',
+            detectionAreaSaved: 'Area rilevamento salvata',
+            failedToRunScript: 'Impossibile eseguire script',
+            failedToStopPrint: 'Impossibile fermare stampa',
+            failedToPausePrint: 'Impossibile mettere in pausa stampa',
+            failedToResumePrint: 'Impossibile riprendere stampa',
+            failedToControlChamberLight: 'Impossibile controllare luce camera',
+            failedToUpdateSetting: 'Impossibile aggiornare impostazione',
+            failedToSkipObjects: 'Impossibile saltare oggetti',
+            failedToRereadRfid: 'Impossibile rileggere RFID',
+            failedToCheckPlate: 'Impossibile controllare piatto',
+            failedToUpdateLabel: 'Impossibile aggiornare etichetta',
+            failedToDeleteReference: 'Impossibile eliminare riferimento',
+            failedToSaveDetectionArea: 'Impossibile salvare area rilevamento',
+            plateCheckEnabled: 'Controllo piatto abilitato',
+            plateCheckDisabled: 'Controllo piatto disabilitato',
+            calibrationSaved: 'Calibrazione salvata!',
+            calibrationFailed: 'Calibrazione non riuscita',
+            rfidRereadInitiated: 'Rilettura RFID avviata',
+        },
+        // Connection status
+        connection: {
+            connected: 'Connesso',
+            offline: 'Offline',
+        },
+        // Queue info
+        queue: {
+            inQueue: '{{count}} stampa in coda',
+            inQueue_plural: '{{count}} stampe in coda',
+        },
+        // Controls section
+        controls: 'Controlli',
+        // RFID
+        rfid: {
+            reread: 'Rileggi RFID',
+        },
+        // Permissions
+        permission: {
+            noAdd: 'Non hai il permesso di aggiungere stampanti',
+            noEdit: 'Non hai il permesso di modificare stampanti',
+            noDelete: 'Non hai il permesso di eliminare stampanti',
+            noControl: 'Non hai il permesso di controllare stampanti',
+            noFiles: 'Non hai il permesso di accedere ai file stampante',
+            noAmsRfid: 'Non hai il permesso di rileggere AMS RFID',
+            noSmartPlugControl: 'Non hai il permesso di controllare smart plug',
+        },
+        // Add/Edit modal
+        modal: {
+            addTitle: 'Aggiungi Stampante',
+            editTitle: 'Modifica Stampante',
+            myPrinter: 'La mia Stampante',
+            selectModel: 'Seleziona modello...',
+            locationGroup: 'Posizione / Gruppo (opzionale)',
+            locationPlaceholder: 'es. Officina, Ufficio, Cantina',
+            autoArchiveLabel: 'Archivia automaticamente stampe completate',
+            fromPrinterSettings: 'Dalle impostazioni della stampante',
+            modelOptional: 'Modello (opzionale)',
+            saveChanges: 'Salva modifiche',
+        },
+        // Skip objects
+        skipObjects: {
+            tooltip: 'Salta oggetti',
+            onlyWhilePrinting: 'Salta oggetti (solo durante la stampa)',
+            requiresMultiple: 'Salta oggetti (richiede 2+ oggetti)',
+            title: 'Salta Oggetti',
+            matchIdsInfo: 'Abbina gli ID con il display della stampante',
+            printerShowsIds: 'Lo schermo mostra gli ID oggetto sul piatto',
+            skipSelected: 'Salta selezionati',
+            skipping: 'Saltando...',
+            noObjectsSelected: 'Nessun oggetto selezionato',
+            selectObjectsToSkip: 'Seleziona gli oggetti da saltare nella stampa corrente',
+            skipped: 'saltato',
+            objectsSkipped: 'Oggetti saltati',
+            activeCount: '{{count}} attivi',
+            waitForLayer: 'Attendi il layer 2+ per saltare oggetti (attualmente layer {{layer}})',
+            skip: 'Salta',
+        },
+        // Confirm modals
+        confirm: {
+            deleteTitle: 'Elimina Stampante',
+            deleteMessage: 'Sei sicuro di eliminare "{{name}}"? Questo rimuovera tutte le impostazioni di connessione.',
+            deleteArchivesNote: 'Tutta la cronologia di stampa sara eliminata definitivamente.',
+            keepArchivesNote: 'La cronologia sara mantenuta ma non piu associata a questa stampante.',
+            stopTitle: 'Ferma Stampa',
+            stopMessage: 'Sei sicuro di fermare la stampa corrente su "{{name}}"? Questo annullera il lavoro di stampa.',
+            stopButton: 'Ferma Stampa',
+            pauseTitle: 'Pausa Stampa',
+            pauseMessage: 'Sei sicuro di mettere in pausa la stampa corrente su "{{name}}"?',
+            pauseButton: 'Pausa Stampa',
+            resumeTitle: 'Riprendi Stampa',
+            resumeMessage: 'Sei sicuro di riprendere la stampa su "{{name}}"?',
+            resumeButton: 'Riprendi Stampa',
+            powerOnTitle: 'Accendi Stampante',
+            powerOnMessage: 'Sei sicuro di accendere "{{name}}"?',
+            powerOnButton: 'Accendi',
+            powerOffTitle: 'Spegni Stampante',
+            powerOffMessage: 'Sei sicuro di spegnere "{{name}}"?',
+            powerOffWarning: 'AVVISO: "{{name}}" sta stampando! Sei sicuro di spegnere? Questo interrompera la stampa e potrebbe danneggiare la stampante.',
+            powerOffButton: 'Spegni',
+        },
+        // Discovery
+        discovery: {
+            title: 'Trova Stampanti',
+            searching: 'Ricerca...',
+            scanning: 'Scansione...',
+            scanProgress: 'Scansione... {{scanned}}/{{total}}',
+            foundPrinters: 'Trovate {{count}} stampante(i)',
+            noPrintersFound: 'Nessuna stampante trovata',
+            noPrintersFoundSubnet: 'Nessuna stampante trovata nella sottorete specificata.',
+            noPrintersFoundNetwork: 'Nessuna stampante trovata sulla rete.',
+            allConfigured: 'Tutte le stampanti trovate sono gia configurate.',
+            alreadyAdded: 'Gia aggiunta',
+            select: 'Seleziona',
+            manualEntry: 'Inserimento manuale',
+            addFromCloud: 'Aggiungi da Cloud',
+            subnetToScan: 'Sottorete da scansionare',
+            dockerNote: 'Docker rilevato. Inserisci la sottorete della stampante in notazione CIDR. Richiede network_mode: host in docker-compose.yml.',
+            scanSubnet: 'Scansiona sottorete per stampanti',
+            discoverNetwork: 'Trova stampanti in rete',
+            scanningSubnet: 'Scansione sottorete per stampanti Bambu...',
+            scanningNetwork: 'Scansione rete...',
+            serialRequired: 'Seriale richiesto',
+            unknown: 'Sconosciuto',
+            failedToStart: 'Avvio ricerca non riuscito',
+        },
+        // Filaments section
+        filaments: 'Filamenti',
+        // Camera
+        openCameraOverlay: 'Apri overlay camera',
+        openCameraWindow: 'Apri camera in nuova finestra',
+        // Firmware
+        firmwareUpdateAvailable: 'Aggiornamento firmware disponibile: {{current}} → {{latest}}',
+        firmwareUpdateButton: 'Aggiorna',
+        // Plate detection
+        plateDetection: {
+            noPermission: 'Non hai il permesso di aggiornare stampanti',
+            enabledClick: 'Controllo piatto abilitato - Clicca per disabilitare',
+            disabledClick: 'Controllo piatto disabilitato - Clicca per abilitare',
+            manageCalibration: 'Gestisci calibrazione rilevamento piatto',
+            calibrationRequired: 'Calibrazione richiesta',
+            calibrationInstructions: 'Assicurati che il piatto sia <strong>completamente vuoto</strong>, poi clicca Calibra.',
+            calibrationDescription: 'La calibrazione salva un\'immagine di riferimento del piatto vuoto. I controlli futuri confronteranno con questo riferimento per rilevare oggetti.',
+            calibrationTip: '<strong>Suggerimento:</strong> Puoi salvare fino a 5 calibrazioni per piatti diversi. Il sistema usa automaticamente la migliore corrispondenza durante il controllo.',
+            plateEmpty: 'Il piatto sembra vuoto',
+            objectsDetected: 'Oggetti rilevati sul piatto',
+            confidence: 'Confidenza',
+            difference: 'Differenza',
+            analysisPreview: 'Anteprima analisi:',
+            analysisLegend: 'Riquadro verde = area rilevamento, overlay rosso = differenze dalla calibrazione',
+            savedReferences: 'Riferimenti salvati ({{count}}/{{max}})',
+            deleteReference: 'Elimina riferimento',
+            labelPlaceholder: 'Etichetta...',
+            clickToEdit: '{{label}} - Clicca per modificare',
+            clickToAddLabel: 'Clicca per aggiungere etichetta',
+        },
+        // Fans
+        fans: {
+            partCooling: 'Ventola raffreddamento parte',
+            auxiliary: 'Ventola ausiliaria',
+            chamber: 'Ventola camera',
+        },
+        // HMS errors
+        clickToViewHmsErrors: 'Clicca per vedere errori HMS',
+        estimatedCompletion: 'Tempo completamento stimato',
+        slotOptions: 'Opzioni slot',
+        // Firmware modal
+        firmwareModal: {
+            title: 'Aggiornamento Firmware',
+            currentVersion: 'Corrente:',
+            latestVersion: 'Ultima:',
+            releaseNotes: 'Note di rilascio',
+            checkingPrereqs: 'Controllo prerequisiti...',
+            sdCardReady: 'SD pronta. Clicca sotto per caricare firmware.',
+            uploadedSuccess: 'Firmware caricato su SD!',
+            applyInstructions: 'Per applicare l\'aggiornamento sulla stampante:',
+            step1: 'Sul touchscreen della stampante, vai a <strong>Impostazioni</strong>',
+            step2: 'Vai a <strong>Firmware</strong>',
+            step3: 'Seleziona <strong>Aggiorna da SD</strong>',
+            step4: 'L\'aggiornamento richiede 10-20 minuti',
+            done: 'Fatto',
+            starting: 'Avvio...',
+            uploadFirmware: 'Carica Firmware',
+            uploadedToast: 'Firmware caricato! Avvia aggiornamento dal display.',
+        },
+        accessCodePlaceholder: 'Lascia vuoto per mantenere quello attuale',
+        // ROI editor
+        roi: {
+            title: 'Area di rilevamento (ROI)',
+            xStart: 'X Inizio',
+            yStart: 'Y Inizio',
+            width: 'Larghezza',
+            height: 'Altezza',
+            instruction: 'Regola l\'area di rilevamento per focalizzare il piatto. Il riquadro verde mostra l\'area corrente.',
+        },
+    },
+
+    // Archives page
+    archives: {
+        title: 'Archivi di stampa',
+        searchPlaceholder: 'Cerca archivi...',
+        filterByPrinter: 'Filtra per stampante',
+        filterByStatus: 'Filtra per stato',
+        sortBy: 'Ordina per',
+        sortNewest: 'Piu recenti',
+        sortOldest: 'Meno recenti',
+        sortName: 'Nome',
+        sortDuration: 'Durata',
+        sortLargest: 'Piu grandi',
+        sortSmallest: 'Piu piccoli',
+        sortSize: 'Dimensione',
+        noArchives: 'Nessun archivio trovato',
+        noArchivesSearch: 'Nessun archivio corrisponde alla ricerca',
+        noArchivesYet: 'Nessun archivio ancora',
+        loadingArchives: 'Caricamento archivi...',
+        releaseToUpload: 'Rilascia per caricare',
+        showAll: 'Mostra tutti',
+        showFavoritesOnly: 'Solo preferiti',
+        gridView: 'Vista griglia',
+        listView: 'Vista elenco',
+        calendarView: 'Vista calendario',
+        manageTags: 'Gestisci tag',
+        showFailedPrints: 'Mostra stampe fallite',
+        hideFailedPrints: 'Nascondi stampe fallite',
+        printTime: 'Tempo di stampa',
+        filamentUsed: 'Filamento usato',
+        cost: 'Costo',
+        reprint: 'Ristampa',
+        preview: 'Anteprima',
+        deleteArchive: 'Elimina archivio',
+        deleteConfirm: 'Sei sicuro di eliminare questo archivio?',
+        favorite: 'Preferito',
+        unfavorite: 'Rimuovi dai preferiti',
+        viewDetails: 'Vedi dettagli',
+        status: {
+            completed: 'Completato',
+            failed: 'Fallito',
+            stopped: 'Fermato',
+        },
+        toast: {
+            source3mfAttached: 'Sorgente 3MF allegata: {{filename}}',
+            failedUploadSource3mf: 'Caricamento sorgente 3MF non riuscito',
+            source3mfRemoved: 'Sorgente 3MF rimossa',
+            failedRemoveSource3mf: 'Rimozione sorgente 3MF non riuscita',
+            f3dAttached: 'F3D allegato: {{filename}}',
+            failedUploadF3d: 'Caricamento F3D non riuscito',
+            f3dRemoved: 'F3D rimosso',
+            failedRemoveF3d: 'Rimozione F3D non riuscita',
+            timelapseAttached: 'Timelapse allegato: {{filename}}',
+            timelapseAlreadyAttached: 'Timelapse gia allegato',
+            noMatchingTimelapse: 'Nessun timelapse corrispondente',
+            failedScanTimelapse: 'Scansione timelapse non riuscita',
+            failedAttachTimelapse: 'Allegato timelapse non riuscito',
+            archiveDeleted: 'Archivio eliminato',
+            failedDeleteArchive: 'Eliminazione archivio non riuscita',
+            addedToFavorites: 'Aggiunto ai preferiti',
+            removedFromFavorites: 'Rimosso dai preferiti',
+            projectUpdated: 'Progetto aggiornato',
+            failedUpdateProject: 'Aggiornamento progetto non riuscito',
+            linkCopied: 'Link copiato negli appunti',
+            failedCopyLink: 'Copia link non riuscita',
+            photoDeleted: 'Foto eliminata',
+            failedDeletePhoto: 'Eliminazione foto non riuscita',
+            failedDeleteArchives: 'Eliminazione archivi non riuscita',
+            failedUpdateFavorites: 'Aggiornamento preferiti non riuscito',
+            exportDownloaded: 'Export scaricato',
+            exportFailed: 'Export non riuscito',
+        },
+        menu: {
+            print: 'Stampa',
+            schedule: 'Programma',
+            openInBambuStudio: 'Apri in Bambu Studio',
+            slice: 'Slice',
+            externalLink: 'Link esterno',
+            viewOnMakerWorld: 'Vedi su MakerWorld',
+            preview3d: 'Anteprima 3D',
+            viewTimelapse: 'Vedi Timelapse',
+            scanForTimelapse: 'Cerca Timelapse',
+            downloadSource3mf: 'Scarica Sorgente 3MF',
+            uploadSource3mf: 'Carica Sorgente 3MF',
+            replaceSource3mf: 'Sostituisci Sorgente 3MF',
+            removeSource3mf: 'Rimuovi Sorgente 3MF',
+            uploadF3d: 'Carica F3D',
+            replaceF3d: 'Sostituisci F3D',
+            downloadF3d: 'Scarica F3D',
+            removeF3d: 'Rimuovi F3D',
+            download: 'Scarica',
+            copyDownloadLink: 'Copia link download',
+            qrCode: 'QR Code',
+            viewPhotos: 'Vedi foto',
+            viewPhotosCount: 'Vedi foto ({{count}})',
+            projectPage: 'Pagina progetto',
+            addToFavorites: 'Aggiungi ai preferiti',
+            removeFromFavorites: 'Rimuovi dai preferiti',
+            edit: 'Modifica',
+            goToProject: 'Vai al progetto: {{name}}',
+            addToProject: 'Aggiungi al progetto',
+            removeFromProject: 'Rimuovi dal progetto',
+            loading: 'Caricamento...',
+            noProjectsAvailable: 'Nessun progetto disponibile',
+            select: 'Seleziona',
+            deselect: 'Deseleziona',
+            delete: 'Elimina',
+        },
+        permission: {
+            noReprint: 'Non hai il permesso di ristampare questo archivio',
+            noAddToQueue: 'Non hai il permesso di aggiungere alla coda',
+            noUpdateArchives: 'Non hai il permesso di aggiornare archivi',
+            noUploadFiles: 'Non hai il permesso di caricare file',
+            noDownload: 'Non hai il permesso di scaricare archivi',
+            noCopyLink: 'Non hai il permesso di copiare link download',
+            noDelete: 'Non hai il permesso di eliminare questo archivio',
+            noCreate: 'Non hai il permesso di creare archivi',
+        },
+        card: {
+            previousPlate: 'Piatto precedente',
+            nextPlate: 'Piatto successivo',
+            plateNumber: 'Piatto {{index}}',
+            moreOptions: 'Clic destro per altre opzioni',
+            addToFavorites: 'Aggiungi ai preferiti',
+            removeFromFavorites: 'Rimuovi dai preferiti',
+            cancelled: 'annullato',
+            failed: 'fallito',
+            duplicate: 'duplicato',
+            duplicateTitle: 'Questo modello e stato stampato prima',
+            openSource3mf: 'Apri sorgente 3MF in Bambu Studio (clic destro per altre opzioni)',
+            downloadF3d: 'Scarica file design Fusion 360',
+            viewTimelapse: 'Vedi timelapse',
+            viewPhoto: 'Vedi 1 foto',
+            viewPhotos: 'Vedi {{count}} foto',
+            openFolder: 'Apri cartella: {{name}}',
+            slicedFile: 'File slice - pronto a stampare',
+            sourceFile: 'Solo file sorgente - nessuna mappatura AMS disponibile',
+            gcode: 'GCODE',
+            source: 'SOURCE',
+            project: 'Progetto: {{name}}',
+            estimated: 'Stimato: {{time}}',
+            actual: 'Reale: {{time}}',
+            accuracy: 'Accuratezza: {{percent}}%',
+            filament: '{{weight}}g',
+            layer: '{{count}} strato',
+            layers: '{{count}} strati',
+            object: '{{count}} oggetto',
+            objects: '{{count}} oggetti',
+            slicedFor: 'Sliciato per {{model}}',
+            uploadedBy: 'Caricato da',
+            noPermissionReprint: 'Non hai il permesso di ristampare',
+            noPermissionEdit: 'Non hai il permesso di modificare archivi',
+            noPermissionDelete: 'Non hai il permesso di eliminare archivi',
+            reprint: 'Ristampa',
+            schedulePrint: 'Programma Stampa',
+            schedule: 'Programma',
+            openInBambuStudio: 'Apri in Bambu Studio',
+            openInBambuStudioToSlice: 'Apri in Bambu Studio per slice',
+            slice: 'Slice',
+            externalLink: 'Link esterno',
+            makerWorld: 'MakerWorld: {{designer}}',
+            viewProject: 'Vedi progetto',
+            noExternalLink: 'Nessun link esterno',
+            preview3d: 'Anteprima 3D',
+            download: 'Scarica',
+            edit: 'Modifica',
+            delete: 'Elimina',
+        },
+        modal: {
+            deleteArchive: 'Elimina Archivio',
+            deleteConfirm: 'Sei sicuro di eliminare "{{name}}"? Questa azione non puo essere annullata.',
+            deleteButton: 'Elimina',
+            removeSource3mf: 'Rimuovi Sorgente 3MF',
+            removeSource3mfConfirm: 'Sei sicuro di rimuovere il file sorgente 3MF da "{{name}}"? Questo eliminera il progetto slicer originale.',
+            removeButton: 'Rimuovi',
+            removeF3d: 'Rimuovi F3D',
+            removeF3dConfirm: 'Sei sicuro di rimuovere il file Fusion 360 da "{{name}}"?',
+            timelapse: '{{name}} - Timelapse',
+            selectTimelapse: 'Seleziona Timelapse',
+            selectTimelapseDesc: 'Nessun abbinamento automatico trovato. Seleziona il timelapse per questa stampa:',
+            deleteArchives: 'Elimina Archivi',
+            deleteArchivesConfirm: 'Sei sicuro di eliminare {{count}} archivio(i)? Questa azione non puo essere annullata.',
+            deleteCount: 'Elimina {{count}}',
+        },
+        page: {
+            title: 'Archivi',
+            printsCount: '{{filtered}} di {{total}} stampe',
+            dropFilesHere: 'Rilascia file .3mf qui',
+            releaseToUpload: 'Rilascia per caricare',
+            only3mfSupported: 'Solo file .3mf supportati',
+            close: 'Chiudi',
+            selected: '{{count}} selezionati',
+            selectAll: 'Seleziona tutto',
+            tags: 'Tag',
+            project: 'Progetto',
+            favorite: 'Preferito',
+            delete: 'Elimina',
+            toggledFavorites: 'Preferiti aggiornati per {{count}} archivio(i)',
+            failedUpdateFavorites: 'Aggiornamento preferiti non riuscito',
+            archivesDeleted: '{{count}} archivio(i) eliminati',
+            failedDeleteArchives: 'Eliminazione archivi non riuscita',
+            photoDeleted: 'Foto eliminata',
+            failedDeletePhoto: 'Eliminazione foto non riuscita',
+        },
+        list: {
+            name: 'Nome',
+            printer: 'Stampante',
+            date: 'Data',
+            size: 'Dimensione',
+            actions: 'Azioni',
+            hasTimelapse: 'Ha timelapse',
+        },
+    },
+
+    // Queue page
+    queue: {
+        title: 'Coda di stampa',
+        subtitle: 'Programma e gestisci i tuoi lavori di stampa',
+        addToQueue: 'Aggiungi alla coda',
+        // Print modal
+        print: 'Stampa',
+        reprint: 'Ristampa',
+        schedulePrint: 'Programma Stampa',
+        editQueueItem: 'Modifica elemento coda',
+        printToPrinters: 'Stampa su {{count}} Stampanti',
+        queueToPrinters: 'Metti in coda su {{count}} Stampanti',
+        sending: 'Invio...',
+        sendingProgress: 'Invio {{current}}/{{total}}...',
+        adding: 'Aggiunta...',
+        addingProgress: 'Aggiunta {{current}}/{{total}}...',
+        savingProgress: 'Salvataggio {{current}}/{{total}}...',
+        clearQueue: 'Svuota coda',
+        clearHistory: 'Svuota cronologia',
+        emptyQueue: 'La coda e vuota',
+        position: 'Posizione',
+        scheduledTime: 'Ora programmata',
+        moveUp: 'Sposta su',
+        moveDown: 'Sposta giu',
+        startNow: 'Avvia ora',
+        printingInProgress: 'Stampa in corso...',
+        viewArchive: 'Vedi archivio',
+        viewInFileManager: 'Vedi nel Gestore file',
+        itemCount: '{{count}} elemento',
+        itemCount_plural: '{{count}} elementi',
+        dragToReorder: 'Trascina per riordinare (solo ASAP)',
+        reorderHint: 'La posizione influisce solo sugli elementi ASAP. Quelli programmati partono all\'orario.',
+        addedBy: 'Aggiunto da {{name}}',
+        // Sections
+        sections: {
+            currentlyPrinting: 'In stampa',
+            queued: 'In coda',
+            history: 'Cronologia',
+        },
+        // Status
+        status: {
+            pending: 'In attesa',
+            waiting: 'In attesa',
+            printing: 'In stampa',
+            paused: 'In pausa',
+            completed: 'Completato',
+            failed: 'Fallito',
+            skipped: 'Saltato',
+            cancelled: 'Annullato',
+        },
+        // Summary cards
+        summary: {
+            printing: 'In stampa',
+            queued: 'In coda',
+            totalTime: 'Tempo totale coda',
+            history: 'Cronologia',
+        },
+        // Filters
+        filter: {
+            allPrinters: 'Tutte le stampanti',
+            unassigned: 'Non assegnato',
+            allStatus: 'Tutti gli stati',
+            allLocations: 'Tutte le posizioni',
+            any: 'Qualsiasi',
+        },
+        // Sort
+        sort: {
+            byPosition: 'Ordina per posizione',
+            byName: 'Ordina per nome',
+            byPrinter: 'Ordina per stampante',
+            bySchedule: 'Ordina per programma',
+            byDate: 'Ordina per data',
+            ascendingOldest: 'Crescente (piu vecchi)',
+            descendingNewest: 'Decrescente (piu recenti)',
+        },
+        // Badges
+        badges: {
+            staged: 'In staging',
+            requiresPrevious: 'Richiede successo precedente',
+            autoPowerOff: 'Spegnimento automatico',
+        },
+        // Empty state
+        empty: {
+            title: 'Nessuna stampa programmata',
+            description: 'Programma una stampa dalla pagina Archivi usando l\'opzione "Programma" nel menu contestuale, o trascina i file per iniziare.',
+        },
+        // Time
+        time: {
+            asap: 'ASAP',
+            overdue: 'Scaduto',
+            now: 'Ora',
+            lessThanMinute: 'Tra meno di un minuto',
+            inMinutes: 'Tra {{count}} min',
+            inHours: 'Tra {{count}} ore',
+        },
+        // Actions
+        actions: {
+            stopPrint: 'Ferma Stampa',
+            startPrint: 'Avvia Stampa',
+            requeue: 'Rimetti in coda',
+        },
+        // Bulk edit
+        bulkEdit: {
+            title: 'Modifica {{count}} elemento',
+            title_plural: 'Modifica {{count}} elementi',
+            description: 'Solo le impostazioni modificate saranno applicate agli elementi selezionati.',
+            printer: 'Stampante',
+            noChange: '— Nessun cambio —',
+            queueOptions: 'Opzioni coda',
+            staged: 'In staging (avvio manuale)',
+            autoPowerOff: 'Spegnimento automatico dopo stampa',
+            requirePrevious: 'Richiede successo precedente',
+            printOptions: 'Opzioni stampa',
+            bedLevelling: 'Livellamento piatto',
+            flowCalibration: 'Calibrazione flusso',
+            vibrationCalibration: 'Calibrazione vibrazioni',
+            layerInspection: 'Controllo primo layer',
+            timelapse: 'Timelapse',
+            useAms: 'Usa AMS',
+            applyChanges: 'Applica modifiche',
+            selectAll: 'Seleziona tutto',
+            deselectAll: 'Deseleziona tutto',
+            selected: '{{count}} selezionati',
+            editSelected: 'Modifica selezionati',
+            cancelSelected: 'Annulla selezionati',
+        },
+        // Confirmations
+        confirm: {
+            cancelTitle: 'Annulla stampa programmata',
+            cancelMessage: 'Sei sicuro di annullare "{{name}}"?',
+            stopTitle: 'Ferma Stampa',
+            stopMessage: 'Sei sicuro di fermare la stampa corrente "{{name}}"? Questo annullera il lavoro sulla stampante.',
+            removeTitle: 'Rimuovi dalla cronologia',
+            removeMessage: 'Sei sicuro di rimuovere "{{name}}" dalla cronologia coda?',
+            clearHistoryTitle: 'Svuota cronologia',
+            clearHistoryMessage: 'Sei sicuro di rimuovere {{count}} elemento(i) dalla cronologia?',
+            cancelButton: 'Annulla Stampa',
+            stopButton: 'Ferma Stampa',
+            thisPrint: 'questa stampa',
+            thisItem: 'questo elemento',
+        },
+        // Toast messages
+        toast: {
+            cancelled: 'Elemento coda annullato',
+            cancelFailed: 'Annullamento non riuscito',
+            removed: 'Elemento coda rimosso',
+            removeFailed: 'Rimozione non riuscita',
+            stopped: 'Stampa fermata',
+            stopFailed: 'Impossibile fermare stampa',
+            released: 'Stampa rilasciata in coda',
+            startFailed: 'Avvio stampa non riuscito',
+            reorderFailed: 'Riordino coda non riuscito',
+            historyCleared: 'Cancellati {{count}} elementi cronologia',
+            clearHistoryFailed: 'Svuotamento cronologia non riuscito',
+            updateFailed: 'Aggiornamento elementi non riuscito',
+            bulkCancelled: 'Annullati {{count}} elementi',
+            bulkCancelFailed: 'Annullamento elementi non riuscito',
+        },
+        // Permissions
+        permissions: {
+            noStopPrint: 'Non hai il permesso di fermare stampe',
+            noStartPrint: 'Non hai il permesso di avviare stampe',
+            noEdit: 'Non hai il permesso di modificare questo elemento coda',
+            noCancel: 'Non hai il permesso di annullare questo elemento coda',
+            noRequeue: 'Non hai il permesso di rimettere in coda elementi',
+            noRemove: 'Non hai il permesso di rimuovere questo elemento coda',
+            noClearHistory: 'Non hai il permesso di svuotare tutta la cronologia',
+            noEditItems: 'Non hai il permesso di modificare elementi coda',
+            noCancelItems: 'Non hai il permesso di annullare elementi coda',
+        },
+    },
+
+    // Statistics page
+    stats: {
+        title: 'Dashboard',
+        subtitle: 'Trascina i widget per riordinare. Clicca l\'icona occhio per nascondere.',
+        overview: 'Panoramica',
+        totalPrints: 'Stampe totali',
+        successRate: 'Tasso di successo',
+        totalPrintTime: 'Tempo totale di stampa',
+        printTime: 'Tempo di stampa',
+        totalFilament: 'Filamento totale usato',
+        filamentUsed: 'Filamento usato',
+        filamentCost: 'Costo filamento',
+        totalCost: 'Costo totale',
+        energyUsed: 'Energia usata',
+        energyCost: 'Costo energia',
+        averagePrintTime: 'Tempo medio di stampa',
+        printsPerDay: 'Stampe al giorno',
+        byPrinter: 'Per stampante',
+        printsByPrinter: 'Stampe per stampante',
+        byMaterial: 'Per materiale',
+        byMonth: 'Per mese',
+        last7Days: 'Ultimi 7 giorni',
+        last30Days: 'Ultimi 30 giorni',
+        last90Days: 'Ultimi 90 giorni',
+        allTime: 'Sempre',
+        // Widgets
+        quickStats: 'Statistiche rapide',
+        printActivity: 'Attivita di stampa',
+        filamentTypes: 'Tipi di filamento',
+        filamentTrends: 'Trend filamento',
+        failureAnalysis: 'Analisi guasti',
+        timeAccuracy: 'Accuratezza tempo',
+        successful: 'Riuscite:',
+        failed: 'Fallite:',
+        perfectEstimate: '100% = stima perfetta',
+        noTimeAccuracyData: 'Nessun dato accuratezza tempo',
+        noFilamentData: 'Nessun dato filamento',
+        noPrinterData: 'Nessun dato stampante',
+        noPrintData: 'Nessun dato stampa',
+        noPrintDataLast30Days: 'Nessun dato stampa negli ultimi 30 giorni',
+        failureReasons: 'Cause guasto',
+        topFailureReasons: 'Cause principali',
+        failedPrintsCount: '{{failed}} / {{total}} stampe fallite',
+        lastWeekRate: 'Settimana scorsa: {{rate}}%',
+        // Actions
+        resetLayout: 'Reimposta layout',
+        recalculateCosts: 'Ricalcola costi',
+        recalculateCostsHint: 'Ricalcola tutti i costi archivi usando i prezzi filamento correnti',
+        exportStats: 'Esporta statistiche',
+        exportAsCsv: 'Esporta come CSV',
+        exportAsExcel: 'Esporta come Excel',
+        hiddenCount: '{{count}} Nascosti',
+        // Toast
+        exportDownloaded: 'Export scaricato',
+        exportFailed: 'Export non riuscito',
+        layoutReset: 'Layout reimpostato',
+        recalculatedCosts: 'Costi ricalcolati per {{count}} archivi',
+        recalculateFailed: 'Ricalcolo costi non riuscito',
+        // Loading
+        loadingStats: 'Caricamento statistiche...',
+        // Permissions
+        noPermissionResetLayout: 'Non hai il permesso di reimpostare il layout',
+        noPermissionRecalculate: 'Non hai il permesso di ricalcolare i costi',
+    },
+
+    // Maintenance page
+    maintenance: {
+        title: 'Manutenzione',
+        overview: 'Panoramica',
+        allOk: 'Tutta la manutenzione aggiornata',
+        dueCount: '{{count}} elemento in scadenza',
+        dueCount_plural: '{{count}} elementi in scadenza',
+        warningCount: '{{count}} avviso',
+        warningCount_plural: '{{count}} avvisi',
+        totalPrintTime: 'Tempo totale di stampa',
+        nextMaintenance: 'Prossima manutenzione',
+        nothingDue: 'Niente in scadenza',
+        tasks: 'Attivita',
+        lastPerformed: 'Ultima esecuzione',
+        interval: 'Intervallo',
+        hoursRemaining: '{{hours}}h rimanenti',
+        hoursOverdue: '{{hours}}h in ritardo',
+        markDone: 'Segna come fatto',
+        performMaintenance: 'Esegui manutenzione',
+        history: 'Cronologia',
+        noHistory: 'Nessuna cronologia manutenzione',
+        editPrintHours: 'Modifica ore stampa',
+        currentHours: 'Ore attuali',
+        // Tabs
+        statusTab: 'Stato',
+        settingsTab: 'Impostazioni',
+        // Status
+        overdueCount: '{{count}} in ritardo',
+        dueSoonCount: '{{count}} in scadenza',
+        dueSoon: 'In scadenza',
+        allGood: 'Tutto ok',
+        overdueBy: 'In ritardo di {{duration}}',
+        dueIn: 'Scade tra {{duration}}',
+        timeLeft: '{{duration}} rimanenti',
+        // Duration formats
+        day: '1 giorno',
+        days: '{{count}} giorni',
+        week: '1 settimana',
+        weeks: '{{count}} settimane',
+        month: '1 mese',
+        months: '{{count}} mesi',
+        year: '1 anno',
+        // Settings
+        maintenanceTypes: 'Tipi di manutenzione',
+        maintenanceTypesDescription: 'Tipi di sistema e tue attivita personalizzate',
+        addCustomType: 'Aggiungi tipo personalizzato',
+        intervalType: 'Tipo intervallo',
+        intervalValue: 'Intervallo ({{type}})',
+        icon: 'Icona',
+        documentationLink: 'Link documentazione (opzionale)',
+        assignToPrinters: 'Assegna alle stampanti',
+        selectAtLeastOnePrinter: 'Seleziona almeno una stampante',
+        addType: 'Aggiungi tipo',
+        custom: 'Personalizzato',
+        printHours: 'Ore di stampa',
+        calendarDays: 'Giorni calendario',
+        exampleName: 'es. Sostituisci filtro HEPA',
+        viewDocumentation: 'Vedi documentazione',
+        timeBasedInterval: 'Intervallo basato sul tempo',
+        // Interval overrides
+        intervalOverrides: 'Override intervallo',
+        intervalOverridesDescription: 'Personalizza intervalli per stampanti specifiche',
+        // Printer assignment
+        assignedToPrinters: 'Assegnato alle stampanti:',
+        noPrintersAssigned: 'Nessuna stampante assegnata',
+        addPrinterShort: 'Aggiungi:',
+        printersAssignedClick: '{{count}} stampante(i) assegnata - clicca per gestire',
+        removeFromPrinter: 'Rimuovi da questa stampante',
+        // Types
+        types: {
+            lubricateRails: 'Lubrifica guide lineari',
+            cleanNozzle: 'Pulisci ugello/Hotend',
+            checkBelts: 'Controlla tensione cinghie',
+            cleanBuildPlate: 'Pulisci piatto',
+            checkExtruder: 'Controlla ingranaggi estrusore',
+            checkCooling: 'Controlla ventole raffreddamento',
+            generalInspection: 'Ispezione generale',
+            cleanCarbonRods: 'Pulisci aste in carbonio',
+            checkPtfeTube: 'Controlla tubo PTFE',
+            replaceHepaFilter: 'Sostituisci filtro HEPA',
+            replaceCarbonFilter: 'Sostituisci filtro carbone',
+            lubricateLeftNozzleRail: 'Lubrifica guida ugello sinistro',
+        },
+        // Toast
+        maintenanceComplete: 'Manutenzione segnata come completata',
+        typeUpdated: 'Tipo manutenzione aggiornato',
+        typeDeleted: 'Tipo manutenzione eliminato',
+        printHoursUpdated: 'Ore di stampa aggiornate',
+        printerAssigned: 'Stampante assegnata',
+        printerRemoved: 'Stampante rimossa',
+        // Confirmation
+        deleteTypeConfirm: 'Eliminare "{{name}}"?',
+        // Permissions
+        noPermissionUpdate: 'Non hai il permesso di aggiornare elementi manutenzione',
+        noPermissionPerform: 'Non hai il permesso di eseguire manutenzione',
+        noPermissionEditTypes: 'Non hai il permesso di modificare tipi manutenzione',
+        noPermissionDeleteTypes: 'Non hai il permesso di eliminare tipi manutenzione',
+        noPermissionEditHours: 'Non hai il permesso di modificare ore stampa',
+        noPermissionRemovePrinter: 'Non hai il permesso di rimuovere assegnazioni stampanti',
+        noPermissionAssignPrinter: 'Non hai il permesso di assegnare stampanti',
+        noPermissionEditIntervals: 'Non hai il permesso di modificare intervalli',
+        // Configure link
+        configureSettings: 'Configura tipi e intervalli manutenzione',
+    },
+
+    // Settings page
+    settings: {
+        title: 'Impostazioni',
+        general: 'Generale',
+        // Tab names
+        tabs: {
+            general: 'Generale',
+            smartPlugs: 'Prese smart',
+            notifications: 'Notifiche',
+            filament: 'Filamento',
+            network: 'Rete',
+            apiKeys: 'Chiavi API',
+            virtualPrinter: 'Stampante virtuale',
+            users: 'Utenti',
+            backup: 'Backup',
+        },
+        appearance: 'Aspetto',
+        notifications: 'Notifiche',
+        smartPlugs: 'Prese smart',
+        spoolman: 'Spoolman',
+        updates: 'Aggiornamenti',
+        language: 'Lingua',
+        languageDescription: 'Seleziona la lingua preferita',
+        theme: 'Tema',
+        themeLight: 'Chiaro',
+        themeDark: 'Scuro',
+        themeSystem: 'Sistema',
+        defaultView: 'Vista predefinita',
+        defaultViewDescription: "Pagina da mostrare all'apertura dell'app",
+        checkForUpdates: 'Controlla aggiornamenti',
+        autoUpdate: 'Aggiornamento automatico',
+        currentVersion: 'Versione attuale',
+        latestVersion: 'Ultima versione',
+        upToDate: 'Sei aggiornato',
+        updateAvailable: 'Aggiornamento disponibile',
+        // Notifications
+        notificationLanguage: 'Lingua notifiche',
+        notificationLanguageDescription: 'Lingua per notifiche push',
+        notificationProviders: 'Provider notifiche',
+        addProvider: 'Aggiungi provider',
+        editProvider: 'Modifica provider',
+        providerType: 'Tipo provider',
+        testNotification: 'Notifica di test',
+        testSuccess: 'Notifica di test inviata',
+        testFailed: 'Invio notifica di test fallito',
+        quietHours: 'Ore silenziose',
+        quietHoursDescription: 'Non disturbare in queste ore',
+        quietHoursStart: 'Inizio',
+        quietHoursEnd: 'Fine',
+        events: {
+            title: 'Eventi notifica',
+            printStart: 'Stampa avviata',
+            printComplete: 'Stampa completata',
+            printFailed: 'Stampa fallita',
+            printStopped: 'Stampa interrotta',
+            printProgress: 'Avanzamento',
+            printProgressDescription: 'Notifica al 25%, 50%, 75%',
+            printerOffline: 'Stampante offline',
+            printerError: 'Errore stampante',
+            filamentLow: 'Filamento in esaurimento',
+            maintenanceDue: 'Manutenzione dovuta',
+            maintenanceDueDescription: 'Notifica quando serve manutenzione',
+        },
+        // Smart Plugs
+        smartPlug: {
+            title: 'Prese smart',
+            add: 'Aggiungi presa smart',
+            edit: 'Modifica presa smart',
+            name: 'Nome',
+            ipAddress: 'Indirizzo IP',
+            linkedPrinter: 'Stampante collegata',
+            autoOn: 'Accensione automatica',
+            autoOnDescription: 'Accendi all\'avvio stampa',
+            autoOff: 'Spegnimento automatico',
+            autoOffDescription: 'Spegni dopo il completamento',
+            offDelay: 'Ritardo spegnimento',
+            offDelayMinutes: 'Minuti dopo la stampa',
+            offDelayTemp: 'Quando ugello sotto temperatura',
+            currentState: 'Stato attuale',
+            turnOn: 'Accendi',
+            turnOff: 'Spegni',
+        },
+        // Spoolman
+        spoolmanEnabled: 'Abilita integrazione Spoolman',
+        spoolmanUrl: 'URL Spoolman',
+        spoolmanConnected: 'Connesso',
+        spoolmanDisconnected: 'Disconnesso',
+        // Default printer
+        noDefaultPrinter: 'Nessuna predefinita (chiedi ogni volta)',
+        // Sidebar
+        sidebarOrder: 'Ordine barra laterale',
+        // Camera
+        saveThumbnails: 'Salva miniature',
+        captureFinishPhoto: 'Acquisisci foto finale',
+        noPrintersConfigured: 'Nessuna stampante configurata',
+        // Archive settings
+        archiveMode: {
+            always: 'Crea sempre voce archivio',
+            never: 'Non creare mai voce archivio',
+            ask: 'Chiedi ogni volta',
+        },
+        // Updates
+        checkForUpdatesLabel: 'Controlla aggiornamenti',
+        checkPrinterFirmware: 'Controlla firmware stampante',
+        // Queue
+        enableRetry: 'Abilita retry',
+        // Home Assistant
+        homeAssistantDescription: 'Controlla prese smart tramite Home Assistant',
+        // MQTT
+        mqttConnectedTo: 'Connesso a',
+        // Prometheus
+        prometheusDescription: 'Esponi dati stampante in formato Prometheus',
+        // Smart plugs empty state
+        noSmartPlugsTitle: 'Nessuna presa smart configurata',
+        noSmartPlugsDescription: 'Aggiungi una presa smart Tasmota per monitorare energia e automatizzare il controllo.',
+        // Notifications empty state
+        noProvidersTitle: 'Nessun provider configurato',
+        noProvidersDescription: 'Aggiungi un provider per ricevere avvisi.',
+        noTemplatesAvailable: 'Nessun template disponibile. Riavvia il backend per generare i template predefiniti.',
+        // API permissions
+        apiPermissionView: 'Visualizza stato stampante e coda',
+        apiPermissionEdit: 'Aggiungi e rimuovi elementi dalla coda di stampa',
+        // API keys
+        apiKeysEmptyTitle: 'Nessuna chiave API',
+        apiKeysEmptyDescription: 'Crea una chiave API per integrare servizi esterni.',
+        // Users
+        noUsersFound: 'Nessun utente trovato',
+        noGroupsFound: 'Nessun gruppo trovato',
+        noGroupsAvailable: 'Nessun gruppo disponibile',
+        passwordsDoNotMatch: 'Le password non coincidono',
+        systemGroupWarning: 'I nomi dei gruppi di sistema non possono essere modificati',
+        // Auth disabled
+        authDisabledTitle: 'Autenticazione disabilitata',
+        authDisabledFeature1: 'Richiedi accesso per usare il sistema',
+        authDisabledFeature2: 'Crea piu utenti con permessi basati sui gruppi',
+        authDisabledFeature3: 'Controlla accesso con 50+ permessi granulari',
+        // User deletion
+        userHasCreated: 'Questo utente ha creato:',
+        userItemsQuestion: 'Cosa vuoi fare con questi elementi?',
+        deleteUserConfirm: 'Sei sicuro di voler eliminare questo utente?',
+        actionCannotBeUndone: 'Questa azione non puo essere annullata.',
+        // Smart plugs
+        addFirstSmartPlug: 'Aggiungi la tua prima presa smart',
+        // Notifications
+        providers: 'Provider',
+        log: 'Log',
+        testAll: 'Testa tutto',
+        testResults: 'Risultati test',
+        testPassedCount: '{{count}} riusciti',
+        testFailedCount: '{{count}} falliti',
+        messageTemplates: 'Template messaggi',
+        messageTemplatesDescription: 'Personalizza i messaggi per ogni evento.',
+        // API Keys section
+        apiKeys: 'Chiavi API',
+        apiKeysDescription: 'Crea chiavi API per integrazioni esterne e webhook.',
+        createKey: 'Crea chiave',
+        apiKeyCreated: 'Chiave API creata con successo',
+        apiKeyCopyWarning: "Copia questa chiave ora - non verra mostrata di nuovo!",
+        useInApiBrowser: 'Usa nel Browser API',
+        createNewApiKey: 'Crea nuova chiave API',
+        keyName: 'Nome chiave',
+        keyNamePlaceholder: 'es., Home Assistant, OctoPrint',
+        readStatus: 'Leggi stato',
+        readStatusDescription: 'Visualizza stato stampante e coda',
+        manageQueue: 'Gestisci coda',
+        manageQueueDescription: 'Aggiungi e rimuovi elementi dalla coda di stampa',
+        controlPrinter: 'Controlla stampante',
+        controlPrinterDescription: 'Metti in pausa, riprendi e ferma stampe',
+        unnamedKey: 'Chiave senza nome',
+        lastUsed: 'Ultimo uso',
+        read: 'Lettura',
+        control: 'Controllo',
+        createFirstKey: 'Crea la tua prima chiave',
+        webhookEndpoints: 'Endpoint webhook',
+        webhookApiKeyHint: "Usa la tua chiave API nell'header X-API-Key.",
+        webhook: {
+            getAllStatus: 'Ottieni stato di tutte le stampanti',
+            getSpecificStatus: 'Ottieni stato di una stampante',
+            addToQueue: 'Aggiungi alla coda di stampa',
+            pausePrint: 'Metti in pausa stampa',
+            resumePrint: 'Riprendi stampa',
+            stopPrint: 'Ferma stampa',
+        },
+        apiBrowser: 'Browser API',
+        apiBrowserDescription: 'Esplora e testa tutti gli endpoint API disponibili.',
+        apiKeyForTesting: 'Chiave API per test',
+        apiKeyPlaceholder: 'Incolla qui la tua chiave API per testare gli endpoint autenticati...',
+        apiKeyHint: "Questa chiave verra inviata come header X-API-Key.",
+        deleteApiKeyTitle: 'Elimina chiave API',
+        deleteApiKeyMessage: 'Sei sicuro di voler eliminare questa chiave API? Le integrazioni che la usano non funzioneranno piu.',
+        deleteKey: 'Elimina chiave',
+        // Filament tab
+        amsDisplayThresholds: 'Soglie visualizzazione AMS',
+        amsThresholdsDescription: 'Configura soglie colore per umidita e temperatura AMS.',
+        humidity: 'Umidita',
+        goodGreen: 'Buono (verde)',
+        fairOrange: 'Discreto (arancione)',
+        aboveFairBad: 'Sopra soglia discreta mostra rosso (scarso)',
+        temperature: 'Temperatura',
+        goodBlue: 'Buono (blu)',
+        aboveFairHot: 'Sopra soglia discreta mostra rosso (caldo)',
+        historyRetention: 'Conservazione cronologia',
+        keepSensorHistory: 'Mantieni cronologia sensori per',
+        historyRetentionDescription: 'I dati piu vecchi saranno eliminati automaticamente',
+        printModal: 'Modale stampa',
+        expandCustomMapping: 'Espandi mapping personalizzato di default',
+        expandCustomMappingDescription: 'Quando stampi su piu stampanti, mostra mapping AMS per stampante espanso',
+        // User management
+        authentication: 'Autenticazione',
+        authEnabledDescription: 'La tua istanza e protetta con autenticazione',
+        authDisabledDescription: 'Abilita per richiedere accesso e gestire utenti',
+        authDisabledMessage: 'Abilita autenticazione per creare account, gestire permessi e proteggere la tua istanza Bambuddy.',
+        enableAuthentication: 'Abilita autenticazione',
+        currentUser: 'Utente corrente',
+        changePassword: 'Cambia password',
+        admin: 'Admin',
+        users: 'Utenti',
+        addUser: 'Aggiungi utente',
+        groups: 'Gruppi',
+        addGroup: 'Aggiungi gruppo',
+        system: 'Sistema',
+        noDescription: 'Nessuna descrizione',
+        userCount: '{{count}} utenti',
+        permissionCount: '{{count}} permessi',
+        createUser: 'Crea utente',
+        username: 'Nome utente',
+        enterUsername: 'Inserisci nome utente',
+        password: 'Password',
+        enterPassword: 'Inserisci password (min 6 caratteri)',
+        confirmPassword: 'Conferma password',
+        confirmPasswordPlaceholder: 'Conferma password',
+        // Title tooltips
+        viewReleaseOnGitHub: 'Vedi release su GitHub',
+        turnAllPlugsOn: 'Accendi tutte le prese',
+        turnAllPlugsOff: 'Spegni tutte le prese',
+        // Modal: Clear logs
+        clearNotificationLogs: 'Cancella log notifiche',
+        clearLogsMessage: 'Questo eliminera definitivamente tutti i log notifiche piu vecchi di 30 giorni. Questa azione non puo essere annullata.',
+        clearLogs: 'Cancella log',
+        // Modal: Reset UI
+        resetUiPreferences: 'Reimposta preferenze UI',
+        resetUiPreferencesMessage: 'Questo reimpostera le preferenze UI ai valori predefiniti: ordine barra laterale, tema, layout dashboard, modalita vista e preferenze ordinamento. Stampanti, archivi e impostazioni server NON saranno modificati. La pagina si ricarichera dopo la cancellazione.',
+        resetPreferences: 'Reimposta preferenze',
+        // Modal: Delete group
+        deleteGroupTitle: 'Elimina gruppo',
+        deleteGroupMessage: 'Sei sicuro di voler eliminare questo gruppo? Gli utenti in questo gruppo perderanno questi permessi.',
+        deleteGroup: 'Elimina gruppo',
+        // Modal: Disable auth
+        disableAuthenticationTitle: 'Disabilita autenticazione',
+        disableAuthenticationMessage: "Sei sicuro di voler disabilitare l'autenticazione? Questo rendera la tua istanza Bambuddy accessibile senza login. Tutti gli utenti resteranno nel database ma l'autenticazione sara disabilitata.",
+        disableAuthentication: 'Disabilita autenticazione',
+        // Additional settings
+        configureBambuddy: 'Configura Bambuddy',
+        systemDefault: 'Predefinito di sistema',
+        archiveSettings: 'Impostazioni archivio',
+        newWindow: 'Nuova finestra',
+        embeddedOverlay: 'Overlay incorporato',
+        externalCameras: 'Camere esterne',
+        costTracking: 'Tracciamento costi',
+        printsOnly: 'Solo stampe',
+        totalConsumption: 'Consumo totale',
+        dataManagement: 'Gestione dati',
+        clearNotificationLogsDescription: 'Elimina log notifiche piu vecchi di 30 giorni',
+        resetUiPreferencesDescription: 'Reimposta ordine barra laterale, tema, modalita vista e preferenze layout. Stampanti, archivi e impostazioni non vengono modificati.',
+        enableHomeAssistant: 'Abilita Home Assistant',
+        enableMqtt: 'Abilita MQTT',
+        useTls: 'Usa TLS',
+        enableMetricsEndpoint: 'Abilita endpoint metriche',
+        availableMetrics: 'Metriche disponibili',
+        editUser: 'Modifica utente',
+        deleteUserTitle: 'Elimina utente',
+        groupName: 'Nome gruppo',
+        // Placeholders
+        leaveEmptyForAnonymous: 'Lascia vuoto per anonimo',
+        leaveEmptyForNoAuth: 'Lascia vuoto per nessuna autenticazione',
+        enterNewPassword: 'Inserisci nuova password',
+        confirmNewPassword: 'Conferma nuova password',
+        enterGroupName: 'Inserisci nome gruppo',
+        enterDescriptionOptional: 'Inserisci descrizione (opzionale)',
+        enterCurrentPassword: 'Inserisci password attuale',
+        enterNewPasswordMin6: 'Inserisci nuova password (min 6 caratteri)',
+        toast: {
+            keyCopied: 'Chiave copiata negli appunti',
+            copyFailed: 'Copia chiave fallita',
+            keyAddedToBrowser: 'Chiave aggiunta al Browser API',
+            clearLogsFailed: 'Eliminazione log fallita',
+            uiPreferencesReset: 'Preferenze UI reimpostate. Aggiornamento...',
+            authDisabled: 'Autenticazione disabilitata con successo',
+            authDisableFailed: 'Disabilitazione autenticazione fallita',
+            apiKeyCreated: 'Chiave API creata',
+            apiKeyDeleted: 'Chiave API eliminata',
+            userCreated: 'Utente creato con successo',
+            userUpdated: 'Utente aggiornato con successo',
+            userDeleted: 'Utente eliminato con successo',
+            groupCreated: 'Gruppo creato con successo',
+            groupUpdated: 'Gruppo aggiornato con successo',
+            groupDeleted: 'Gruppo eliminato con successo',
+            fillRequiredFields: 'Compila tutti i campi obbligatori',
+            passwordsDoNotMatch: 'Le password non coincidono',
+            passwordTooShort: 'La password deve essere di almeno 6 caratteri',
+            enterGroupName: 'Inserisci un nome gruppo',
+            settingsSaved: 'Impostazioni salvate',
+            cameraSettingsSaved: 'Impostazioni camera salvate',
+            enterCameraUrl: 'Inserisci un URL camera',
+            passwordChanged: 'Password cambiata con successo',
+            connectionFailed: 'Connessione fallita',
+            testFailed: 'Test fallito',
+            cameraConnected: 'Camera connessa{{resolution}}',
+        },
+        testConnection: 'Testa connessione',
+    },
+
+    // Notifications (for push notifications)
+    notification: {
+        printStarted: {
+            title: 'Stampa avviata',
+            body: '{{printer}}: {{filename}} ha iniziato a stampare',
+        },
+        printCompleted: {
+            title: 'Stampa completata',
+            body: '{{printer}}: {{filename}} completata con successo',
+        },
+        printFailed: {
+            title: 'Stampa fallita',
+            body: '{{printer}}: {{filename}} fallita',
+        },
+        printStopped: {
+            title: 'Stampa interrotta',
+            body: '{{printer}}: {{filename}} interrotta',
+        },
+        printProgress: {
+            title: 'Avanzamento stampa',
+            body: '{{printer}}: {{filename}} al {{percent}}% completamento',
+        },
+        printerOffline: {
+            title: 'Stampante offline',
+            body: '{{printer}} e offline',
+        },
+        printerError: {
+            title: 'Errore stampante',
+            body: '{{printer}}: {{error}}',
+        },
+        filamentLow: {
+            title: 'Filamento in esaurimento',
+            body: '{{printer}}: Filamento in esaurimento',
+        },
+        maintenanceDue: {
+            title: 'Manutenzione dovuta',
+            body: '{{printer}}: {{items}} richiedono attenzione',
+        },
+    },
+
+    // Errors
+    errors: {
+        generic: 'Qualcosa e andato storto',
+        networkError: 'Errore di rete. Controlla la connessione.',
+        notFound: 'Non trovato',
+        unauthorized: 'Non autorizzato',
+        serverError: 'Errore server',
+        validationError: 'Controlla i dati inseriti',
+        printerConnectionFailed: 'Connessione alla stampante fallita',
+        saveFailed: 'Salvataggio modifiche fallito',
+        deleteFailed: 'Eliminazione fallita',
+        loadFailed: 'Caricamento dati fallito',
+    },
+
+    // HMS Errors modal
+    hmsErrors: {
+        title: 'Errori - {{name}}',
+        noErrors: 'Nessun errore',
+        viewOnWiki: 'Vedi su Bambu Lab Wiki',
+        clearInstructions: 'Cancella gli errori sulla stampante per rimuoverli qui.',
+    },
+
+    // MQTT Debug modal
+    mqttDebug: {
+        title: 'Log debug MQTT',
+        searchPlaceholder: 'Cerca topic o payload...',
+        noMessages: 'Nessun messaggio registrato',
+        startLoggingHint: 'Clicca "Avvia logging" per iniziare a catturare messaggi MQTT',
+        noMessagesMatch: 'Nessun messaggio corrisponde al filtro',
+        adjustFilterHint: 'Prova a modificare la ricerca o i filtri',
+        incoming: 'In ingresso',
+        outgoing: 'In uscita',
+        loggingStopped: 'Logging fermato',
+        loggingActive: 'Logging attivo - i messaggi si aggiornano automaticamente',
+        startLogging: 'Avvia logging',
+        stopLogging: 'Ferma logging',
+        clearLog: 'Pulisci log',
+        topic: 'Topic',
+        timestamp: 'Timestamp',
+        direction: 'Direzione',
+        all: 'Tutti',
+    },
+
+    // Printer File Manager modal (printer internal storage)
+    printerFiles: {
+        title: 'Gestore file',
+        storageUsed: 'Usato:',
+        storageFree: 'Libero:',
+        filterPlaceholder: 'Filtra file...',
+        deleteButton: 'Elimina',
+        deleteFiles: 'Elimina {{count}} file',
+        deleteFileConfirm: 'Eliminare "{{name}}"? Questa azione non puo essere annullata.',
+        deleteFilesConfirm: 'Eliminare {{count}} file selezionati? Questa azione non puo essere annullata.',
+        noFiles: 'Nessun file sulla stampante',
+        loadingFiles: 'Caricamento file...',
+        failedToLoad: 'Caricamento file fallito',
+        toast: {
+            filesDeleted: 'Eliminati {{count}} file',
+            deleteFailed: 'Eliminazione fallita: {{error}}',
+        },
+    },
+
+    // Confirmations
+    confirm: {
+        delete: 'Sei sicuro di voler eliminare questo?',
+        unsavedChanges: 'Hai modifiche non salvate. Sei sicuro di voler uscire?',
+        clearQueue: 'Sei sicuro di voler svuotare la coda?',
+    },
+
+    // Login page
+    login: {
+        title: 'Login Bambuddy',
+        subtitle: 'Accedi al tuo account',
+        username: 'Nome utente',
+        usernamePlaceholder: 'Inserisci il nome utente',
+        password: 'Password',
+        passwordPlaceholder: 'Inserisci la password',
+        signIn: 'Accedi',
+        signingIn: 'Accesso in corso...',
+        forgotPassword: 'Hai dimenticato la password?',
+        loginSuccess: 'Accesso riuscito',
+        loginFailed: 'Accesso fallito',
+        enterCredentials: 'Inserisci nome utente e password',
+        forgotPasswordTitle: 'Password dimenticata',
+        forgotPasswordMessage: 'Se hai dimenticato la password, contatta il tuo amministratore di sistema per reimpostarla.',
+        howToReset: 'Come reimpostare la password:',
+        resetStep1: 'Contatta il tuo amministratore Bambuddy',
+        resetStep2: 'Chiedi di reimpostare la password in Gestione utenti',
+        resetStep3: 'Possono impostare una nuova password temporanea',
+        resetStep4: 'Accedi con la nuova password e cambiala in Impostazioni',
+        gotIt: 'Capito',
+    },
+
+    // Setup page
+    setup: {
+        title: 'Configurazione Bambuddy',
+        subtitle: 'Configura autenticazione per la tua istanza Bambuddy',
+        enableAuth: 'Abilita autenticazione',
+        adminAccount: 'Account admin',
+        adminAccountDesc: 'Se esistono gia admin, l\'autenticazione verra abilitata usando gli account esistenti. Lascia i campi sotto vuoti per usare gli admin esistenti, oppure inserisci nuove credenziali per creare un nuovo utente admin.',
+        adminUsername: 'Nome utente admin',
+        adminPassword: 'Password admin',
+        optionalIfAdminExists: '(opzionale se esistono admin)',
+        adminUsernamePlaceholder: 'Inserisci nome utente admin (opzionale)',
+        adminPasswordPlaceholder: 'Inserisci password admin (opzionale)',
+        confirmPassword: 'Conferma password',
+        confirmPasswordPlaceholder: 'Conferma password admin',
+        settingUp: 'Configurazione...',
+        completeSetup: 'Completa configurazione',
+        toast: {
+            authEnabledAdminCreated: 'Autenticazione abilitata e utente admin creato',
+            authEnabledExistingAdmins: 'Autenticazione abilitata usando admin esistenti',
+            setupCompleted: 'Configurazione completata',
+            enterBothCredentials: 'Inserisci nome utente e password admin, oppure lascia entrambi vuoti per usare admin esistenti',
+            passwordsDoNotMatch: 'Le password non coincidono',
+            passwordTooShort: 'La password deve essere di almeno 6 caratteri',
+        },
+    },
+
+    // Password change
+    changePassword: {
+        title: 'Cambia password',
+        currentPassword: 'Password attuale',
+        currentPasswordPlaceholder: 'Inserisci password attuale',
+        newPassword: 'Nuova password',
+        newPasswordPlaceholder: 'Inserisci nuova password (min 6 caratteri)',
+        confirmPassword: 'Conferma nuova password',
+        confirmPasswordPlaceholder: 'Conferma nuova password',
+        passwordsDoNotMatch: 'Le password non coincidono',
+        passwordTooShort: 'La password deve essere di almeno 6 caratteri',
+        changing: 'Modifica in corso...',
+        success: 'Password cambiata con successo',
+        failed: 'Modifica password fallita',
+    },
+
+    // Plate detection alert
+    plateAlert: {
+        title: 'Stampa in pausa!',
+        message: 'Oggetti rilevati sul piatto. La stampa e stata messa automaticamente in pausa. Svuota il piatto e riprendi la stampa.',
+        understand: 'Ho capito',
+    },
+
+    // Camera page
+    camera: {
+        title: 'Vista camera',
+        invalidPrinterId: 'ID stampante non valido',
+        live: 'Live',
+        snapshot: 'Snapshot',
+        restartStream: 'Riavvia stream',
+        refreshSnapshot: 'Aggiorna snapshot',
+        fullscreen: 'Schermo intero',
+        exitFullscreen: 'Esci da schermo intero',
+        connectingToCamera: 'Connessione alla camera...',
+        capturingSnapshot: 'Acquisizione snapshot...',
+        connectionLost: 'Connessione persa',
+        connectionFailed: 'Connessione camera fallita',
+        reconnecting: 'Riconnessione tra {{countdown}}s... (tentativo {{attempt}}/{{max}})',
+        reconnectNow: 'Riconnetti ora',
+        cameraUnavailable: 'Camera non disponibile',
+        cameraUnavailableDesc: 'Assicurati che la stampante sia accesa e connessa.',
+        noCamera: 'Nessuna camera disponibile',
+        retry: 'Riprova',
+        cameraStream: 'Stream camera',
+        zoomOut: 'Zoom indietro',
+        zoomIn: 'Zoom avanti',
+        resetZoom: 'Reset zoom',
+        recording: 'Registrazione',
+        startRecording: 'Avvia registrazione',
+        stopRecording: 'Ferma registrazione',
+    },
+
+    // Groups management
+    groups: {
+        title: 'Gestione gruppi',
+        subtitle: 'Gestisci gruppi permessi per controllo accesso',
+        backToSettings: 'Torna a Impostazioni',
+        createGroup: 'Crea gruppo',
+        noPermission: 'Non hai il permesso di accedere a questa pagina.',
+        system: 'Sistema',
+        noDescription: 'Nessuna descrizione',
+        usersCount: '{{count}} utenti',
+        permissionsCount: '{{count}} permessi',
+        edit: 'Modifica',
+        delete: 'Elimina',
+        toast: {
+            created: 'Gruppo creato con successo',
+            updated: 'Gruppo aggiornato con successo',
+            deleted: 'Gruppo eliminato con successo',
+            enterGroupName: 'Inserisci un nome gruppo',
+        },
+        modal: {
+            editGroup: 'Modifica gruppo',
+            createGroup: 'Crea gruppo',
+            cancel: 'Annulla',
+            saving: 'Salvataggio...',
+            creating: 'Creazione...',
+            saveChanges: 'Salva modifiche',
+        },
+        form: {
+            groupName: 'Nome gruppo',
+            groupNamePlaceholder: 'Inserisci nome gruppo',
+            systemGroupWarning: 'I nomi dei gruppi di sistema non possono essere modificati',
+            description: 'Descrizione',
+            descriptionPlaceholder: 'Inserisci descrizione (opzionale)',
+            permissions: 'Permessi ({{count}} selezionati)',
+        },
+        deleteModal: {
+            title: 'Elimina gruppo',
+            message: 'Sei sicuro di voler eliminare questo gruppo? Gli utenti in questo gruppo perderanno questi permessi.',
+            confirm: 'Elimina gruppo',
+        },
+    },
+
+    // Users management
+    users: {
+        title: 'Gestione utenti',
+        subtitle: 'Gestisci utenti e accesso alla tua istanza Bambuddy',
+        backToSettings: 'Torna a Impostazioni',
+        createUser: 'Crea utente',
+        noPermission: 'Non hai il permesso di accedere a questa pagina.',
+        admin: 'Admin',
+        noGroups: 'Nessun gruppo',
+        active: 'Attivo',
+        inactive: 'Inattivo',
+        edit: 'Modifica',
+        delete: 'Elimina',
+        system: 'Sistema',
+        noGroupsAvailable: 'Nessun gruppo disponibile',
+        table: {
+            username: 'Nome utente',
+            groups: 'Gruppi',
+            status: 'Stato',
+            actions: 'Azioni',
+        },
+        toast: {
+            created: 'Utente creato con successo',
+            updated: 'Utente aggiornato con successo',
+            deleted: 'Utente eliminato con successo',
+            fillRequired: 'Compila tutti i campi obbligatori',
+            passwordsDoNotMatch: 'Le password non coincidono',
+            passwordTooShort: 'La password deve essere di almeno 6 caratteri',
+        },
+        modal: {
+            createUser: 'Crea utente',
+            editUser: 'Modifica utente',
+            cancel: 'Annulla',
+            creating: 'Creazione...',
+            saving: 'Salvataggio...',
+            saveChanges: 'Salva modifiche',
+        },
+        form: {
+            username: 'Nome utente',
+            usernamePlaceholder: 'Inserisci nome utente',
+            password: 'Password',
+            passwordPlaceholder: 'Inserisci password',
+            confirmPassword: 'Conferma password',
+            confirmPasswordPlaceholder: 'Conferma password',
+            newPasswordPlaceholder: 'Inserisci nuova password',
+            confirmNewPasswordPlaceholder: 'Conferma nuova password',
+            leaveBlankToKeep: 'lascia vuoto per mantenere attuale',
+            groups: 'Gruppi',
+        },
+        deleteModal: {
+            title: 'Elimina utente',
+            message: 'Sei sicuro di voler eliminare questo utente? Questa azione non puo essere annullata.',
+            confirm: 'Elimina utente',
+        },
+    },
+
+    // Stream overlay
+    streamOverlay: {
+        title: 'Overlay stream',
+        invalidPrinterId: 'ID stampante non valido',
+        cameraStream: 'Stream camera',
+        progress: 'Avanzamento',
+        eta: 'ETA',
+        tomorrow: 'Domani',
+        printerIdle: 'Stampante inattiva',
+        printerOffline: 'Stampante offline',
+        status: {
+            printing: 'In stampa',
+            paused: 'In pausa',
+            finished: 'Completata',
+            failed: 'Fallita',
+            idle: 'Inattiva',
+            unknown: 'Sconosciuto',
+        },
+    },
+
+    // Profiles
+    profiles: {
+        title: 'Profili',
+        subtitle: 'Gestisci preset slicer e calibrazioni pressure advance',
+        tabs: {
+            cloud: 'Profili cloud',
+            kprofiles: 'K-Profiles',
+        },
+        connectedAs: 'Connesso come',
+        logout: 'Esci',
+        noLogoutPermission: 'Non hai il permesso di disconnetterti',
+        failedToLoad: 'Caricamento profili fallito',
+        retry: 'Riprova',
+        time: {
+            justNow: 'Proprio ora',
+            minsAgo: '{{count}}m fa',
+            hoursAgo: '{{count}}h fa',
+            daysAgo: '{{count}}g fa',
+        },
+        toast: {
+            loggedOut: 'Disconnesso',
+        },
+        login: {
+            title: 'Connetti a Bambu Cloud',
+            subtitle: 'Sincronizza i preset del slicer tra dispositivi',
+            email: 'Email',
+            password: 'Password',
+            region: 'Regione',
+            regionGlobal: 'Globale',
+            regionChina: 'Cina',
+            verificationCode: 'Codice di verifica',
+            totpCode: 'Codice autenticatore',
+            checkEmail: 'Controlla la tua email ({{email}}) per un codice a 6 cifre',
+            enterTotpHint: 'Inserisci il codice a 6 cifre dalla tua app autenticatore',
+            accessToken: 'Access Token',
+            accessTokenHint: 'Incolla il tuo access token Bambu Lab (da Bambu Studio)',
+            back: 'Indietro',
+            loginButton: 'Accedi',
+            verifyButton: 'Verifica',
+            setTokenButton: 'Imposta token',
+            useToken: 'Usa access token invece',
+            useEmail: 'Accedi con email invece',
+            toast: {
+                loggedIn: 'Accesso riuscito',
+                codeSent: 'Codice di verifica inviato via email',
+                enterTotp: 'Inserisci il codice dalla tua app autenticatore',
+                tokenSet: 'Token impostato con successo',
+            },
+        },
+        presets: {
+            myPreset: 'Il mio preset (modificabile)',
+            duplicate: 'Duplica',
+            editable: 'Modificabile',
+            failedToLoadDetails: 'Caricamento dettagli preset fallito',
+            deleteConfirm: 'Eliminare questo preset?',
+            deleteWarning: 'Questo eliminera definitivamente "{{name}}" da Bambu Cloud. Questa azione non puo essere annullata.',
+            noDuplicatePermission: 'Non hai il permesso di duplicare preset',
+            noEditPermission: 'Non hai il permesso di modificare preset',
+            noDeletePermission: 'Non hai il permesso di eliminare preset',
+            types: {
+                filament: 'Preset filamento',
+                printer: 'Preset stampante',
+                process: 'Preset processo',
+            },
+            toast: {
+                deleted: 'Preset eliminato',
+                created: 'Preset creato',
+                updated: 'Preset aggiornato',
+                duplicated: 'Preset duplicato',
+                fieldAdded: 'Campo "{{key}}" aggiunto',
+                exported: 'Preset esportato',
+            },
+            baseLabel: 'Base: {{name}}',
+            currentLabel: 'Corrente: {{name}}',
+            newPreset: 'Nuovo preset',
+            editPreset: 'Modifica preset',
+            duplicatePreset: 'Duplica preset',
+            createNewPreset: 'Crea nuovo preset',
+            customizeSettings: 'Personalizza le impostazioni per il nuovo preset',
+            compareWithBase: 'Confronta con base',
+            compare: 'Confronta',
+            // CreatePresetModal - Basic Info
+            basePreset: 'Preset base',
+            selectBasePreset: 'Seleziona preset base...',
+            presetName: 'Nome preset',
+            myCustomPreset: 'Il mio preset personalizzato',
+            inheritsFrom: 'Deriva da',
+            dropJsonToImport: 'Rilascia JSON per importare',
+            // CreatePresetModal - Tabs
+            tabs: {
+                common: 'Comune',
+                allFields: 'Tutti i campi',
+            },
+            // CreatePresetModal - All Fields Tab
+            availableFields: 'Campi disponibili',
+            searchFieldsPlaceholder: 'Cerca campi...',
+            noMatchingFields: 'Nessun campo corrispondente',
+            allFieldsAdded: 'Tutti i campi aggiunti',
+            addCustomField: 'Aggiungi campo personalizzato',
+            yourOverrides: 'Le tue override',
+            noOverridesYet: 'Nessun override ancora',
+            clickFieldsToAdd: 'Clicca i campi a sinistra per aggiungerli',
+            saveAsTemplate: 'Salva come template',
+            jsonTip: 'Suggerimento: trascina e rilascia un file .json ovunque in questa modale per importare impostazioni',
+        },
+        cloudView: {
+            searchPlaceholder: 'Cerca preset...',
+            templates: 'Template',
+            refresh: 'Aggiorna',
+            newPreset: 'Nuovo preset',
+            clearFilters: 'Pulisci filtri',
+            // Compare mode
+            compareMode: 'Modalita confronto',
+            selectAnotherPreset: 'Seleziona un altro preset {{type}}',
+            clickTwoPresets: 'Clicca due preset dello stesso tipo per confrontare',
+            selectFirst: '1. Seleziona il primo',
+            selectSecond: '2. Seleziona il secondo',
+            compareNow: 'Confronta ora',
+            // Status row
+            lastSynced: 'Ultima sincronizzazione:',
+            showingCount: 'Mostrati {{showing}} di {{total}} preset',
+            noPresetsFound: 'Nessun preset trovato',
+            // Column headers
+            columns: {
+                filament: 'Filamento',
+                process: 'Processo',
+                printer: 'Stampante',
+            },
+            noFilamentPresets: 'Nessun preset filamento',
+            noProcessPresets: 'Nessun preset processo',
+            noPrinterPresets: 'Nessun preset stampante',
+            // Filters
+            filters: {
+                type: 'Tipo',
+                owner: 'Proprietario',
+                printer: 'Stampante',
+                nozzle: 'Ugello',
+                filament: 'Filamento',
+                layer: 'Layer',
+                all: 'Tutti',
+                myPresets: 'I miei preset',
+                builtIn: 'Integrati',
+                process: 'Processo',
+            },
+            // Permissions
+            noTemplatesPermission: 'Non hai il permesso di gestire i template',
+            noRefreshPermission: 'Non hai il permesso di aggiornare i profili',
+            noCreatePermission: 'Non hai il permesso di creare preset',
+        },
+        templates: {
+            title: 'Template rapidi',
+            noTemplates: 'Nessun template ancora',
+            createFirst: 'Crea template dall\'editor preset',
+            typeFilter: 'Tipo:',
+            deleteTitle: 'Elimina template',
+            deleteWarning: 'Questa azione non puo essere annullata',
+            deleteConfirm: 'Sei sicuro di voler eliminare "{{name}}"?',
+            namePlaceholder: 'Nome template',
+            descriptionPlaceholder: 'Descrizione',
+            settingsJson: 'Impostazioni (JSON)',
+            fieldsCount: '{{count}} campi',
+            shownInModals: 'Mostrati nelle modali',
+            hiddenInModals: 'Nascosti nelle modali',
+            apply: 'Applica',
+            toast: {
+                deleted: 'Template eliminato',
+                updated: 'Template aggiornato',
+                created: 'Template creato',
+                applied: 'Template applicato',
+            },
+        },
+    },
+
+    // Support/Debug
+    support: {
+        debugLoggingActive: 'Log debug attivo',
+        manageLogs: 'Gestisci',
+    },
+
+    // File manager
+    fileManager: {
+        title: 'Gestore file',
+        subtitle: 'Organizza e gestisci i tuoi file di stampa',
+        uploadFiles: 'Carica file',
+        newFolder: 'Nuova cartella',
+        folderName: 'Nome cartella',
+        folderNamePlaceholder: 'es., Parti funzionali',
+        renameFile: 'Rinomina file',
+        renameFolder: 'Rinomina cartella',
+        moveFiles: 'Sposta {{count}} file',
+        rootNoFolder: 'Radice (nessuna cartella)',
+        current: 'corrente',
+        linkFolder: 'Collega cartella',
+        linkFolderDescription: 'Collega "{{name}}" a un progetto o archivio per accesso rapido.',
+        project: 'Progetto',
+        archive: 'Archivio',
+        noProjectsFound: 'Nessun progetto trovato',
+        noArchivesFound: 'Nessun archivio trovato',
+        unlink: 'Scollega',
+        link: 'Collega',
+        dragDropFiles: 'Trascina e rilascia file qui',
+        dropFilesHere: 'Rilascia file qui',
+        orClickToBrowse: 'oppure clicca per sfogliare',
+        allFileTypesSupported: 'Tutti i tipi di file supportati. I file ZIP saranno estratti.',
+        zipFilesDetected: 'File ZIP rilevati',
+        zipExtractOptions: 'I file ZIP saranno estratti. Scegli come gestire la struttura cartelle:',
+        preserveZipStructure: 'Mantieni struttura cartelle dal ZIP',
+        createFolderFromZip: 'Crea cartella dal nome ZIP',
+        stlThumbnailGeneration: 'Generazione miniature STL',
+        zipMayContainStl: 'I file ZIP possono contenere STL. Le miniature possono essere generate durante l\'estrazione.',
+        thumbnailsCanBeGenerated: 'Le miniature possono essere generate per file STL. I modelli grandi possono richiedere piu tempo.',
+        generateThumbnailsForStl: 'Genera miniature per file STL',
+        threemfDetected: 'File 3MF rilevati',
+        threemfExtractionInfo: 'Modello stampante, materiale, colore e impostazioni stampa saranno estratti automaticamente dai file 3MF.',
+        willBeExtracted: 'Sara estratto',
+        filesExtracted: '{{count}} file estratti',
+        uploadComplete: 'Caricamento completato: {{succeeded}} riusciti',
+        uploadFailed: '{{count}} falliti',
+        uploading: 'Caricamento...',
+        changeLink: 'Cambia collegamento...',
+        linkTo: 'Collega a...',
+        linkToProjectOrArchive: 'Collega a progetto o archivio',
+        addToQueue: 'Aggiungi alla coda',
+        schedulePrint: 'Pianifica',
+        generateThumbnail: 'Genera miniatura',
+        generateThumbnails: 'Genera miniature',
+        generateThumbnailsForMissing: 'Genera miniature per STL senza miniatura',
+        gridView: 'Vista griglia',
+        listView: 'Vista elenco',
+        lowDiskSpaceWarning: 'Avviso spazio disco basso',
+        lowDiskSpaceDetails: 'Solo {{free}} liberi su {{total}} totali. La soglia e {{threshold}} GB nelle impostazioni.',
+        files: 'File',
+        folders: 'Cartelle',
+        size: 'Dimensione',
+        free: 'Libero',
+        allFiles: 'Tutti i file',
+        wrap: 'A capo',
+        enableTextWrapping: 'Abilita a capo testo',
+        disableTextWrapping: 'Disabilita a capo testo',
+        dragToResizeTooltip: 'Trascina per ridimensionare, doppio clic per reset',
+        searchFiles: 'Cerca file...',
+        allTypes: 'Tutti i tipi',
+        prints: 'Stampe',
+        ascending: 'Crescente',
+        descending: 'Decrescente',
+        resultsCount: '{{showing}} di {{total}} file',
+        selectAll: 'Seleziona tutto',
+        deselectAll: 'Deseleziona tutto',
+        selected: '{{count}} selezionati',
+        adding: 'Aggiunta...',
+        loadingFiles: 'Caricamento file...',
+        folderIsEmpty: 'La cartella e vuota',
+        noFilesYet: 'Nessun file ancora',
+        folderEmptyDescription: 'Carica file o sposta file in questa cartella per iniziare.',
+        noFilesDescription: 'Carica file per iniziare a organizzare i file di stampa.',
+        noMatchingFiles: 'Nessun file corrispondente',
+        noMatchingFilesDescription: 'Nessun file corrisponde ai criteri di ricerca o filtro.',
+        clearFilters: 'Pulisci filtri',
+        printedCount: 'Stampato {{count}}x',
+        uploadedBy: 'Caricato da',
+        deleteFolder: 'Elimina cartella',
+        deleteFile: 'Elimina file',
+        deleteFilesCount: 'Elimina {{count}} file',
+        deleteFolderConfirm: 'Sei sicuro di voler eliminare questa cartella? Tutti i file dentro saranno eliminati.',
+        deleteFileConfirm: 'Sei sicuro di voler eliminare questo file?',
+        deleteFilesConfirm: 'Sei sicuro di voler eliminare {{count}} file selezionati? Questa azione non puo essere annullata.',
+        deleting: 'Eliminazione...',
+        noPermissionRenameFolder: 'Non hai il permesso di rinominare cartelle',
+        noPermissionLinkFolder: 'Non hai il permesso di collegare cartelle',
+        noPermissionDeleteFolder: 'Non hai il permesso di eliminare cartelle',
+        noPermissionPrint: 'Non hai il permesso di stampare',
+        noPermissionAddToQueue: 'Non hai il permesso di aggiungere alla coda',
+        noPermissionDownload: 'Non hai il permesso di scaricare file',
+        noPermissionRenameFile: 'Non hai il permesso di rinominare questo file',
+        noPermissionGenerateThumbnail: 'Non hai il permesso di generare miniature',
+        noPermissionDeleteFile: 'Non hai il permesso di eliminare questo file',
+        noPermissionCreateFolder: 'Non hai il permesso di creare cartelle',
+        noPermissionUpload: 'Non hai il permesso di caricare file',
+        noPermissionMoveFiles: 'Non hai il permesso di spostare file',
+        noPermissionDeleteFiles: 'Non hai il permesso di eliminare file',
+        toast: {
+            folderCreated: 'Cartella creata',
+            folderDeleted: 'Cartella eliminata',
+            fileDeleted: 'File eliminato',
+            filesDeleted: 'Eliminati {{count}} file',
+            filesMoved: 'File spostati',
+            folderLinked: 'Cartella collegata',
+            folderUnlinked: 'Cartella scollegata',
+            addedToQueue: 'Aggiunti {{count}} file alla coda',
+            addedToQueuePartial: 'Aggiunti {{added}} file, {{failed}} falliti',
+            failedToAddToQueue: 'Aggiunta file fallita: {{error}}',
+            fileRenamed: 'File rinominato',
+            folderRenamed: 'Cartella rinominata',
+            thumbnailsGenerated: 'Generate {{count}} miniature',
+            thumbnailsGeneratedPartial: 'Generate {{succeeded}} miniature, {{failed}} fallite',
+            noStlMissingThumbnails: 'Nessun file STL senza miniature',
+            failedToGenerateThumbnails: 'Generazione miniature fallita: {{error}}',
+            thumbnailGenerated: 'Miniatura generata',
+            failedToGenerateThumbnail: 'Generazione miniatura fallita: {{error}}',
+        },
+    },
+
+    // Projects
+    projects: {
+        title: 'Progetti',
+        subtitle: 'Organizza e traccia i tuoi progetti di stampa 3D',
+        newProject: 'Nuovo progetto',
+        editProject: 'Modifica progetto',
+        deleteProject: 'Elimina progetto',
+        projectName: 'Nome progetto',
+        description: 'Descrizione',
+        noProjects: 'Nessun progetto ancora',
+        noProjectsFiltered: 'Nessun progetto {{status}}',
+        noProjectsFilteredHelp: 'Non hai progetti {{status}}. I progetti appariranno qui quando il loro stato cambia.',
+        createFirst: 'Crea il tuo primo progetto per organizzare stampe correlate, tracciare progressi e gestire i tuoi build.',
+        createFirstButton: 'Crea il tuo primo progetto',
+        create: 'Crea',
+        files: 'File',
+        prints: 'Stampe',
+        plates: 'piatti',
+        parts: 'parti',
+        lastModified: 'Ultima modifica',
+        deleteConfirm: 'Sei sicuro di voler eliminare questo progetto? Archivi e elementi in coda saranno scollegati ma non eliminati.',
+        addFiles: 'Aggiungi file',
+        removeFile: 'Rimuovi file',
+        viewDetails: 'Vedi dettagli',
+        // Modal fields
+        namePlaceholder: 'es., Build Voron 2.4',
+        descriptionPlaceholder: 'Descrizione opzionale...',
+        color: 'Colore',
+        targetPlates: 'Piatti target',
+        targetPlatesPlaceholder: 'es., 25',
+        targetPlatesHelp: 'Numero di job di stampa',
+        targetParts: 'Parti target',
+        targetPartsPlaceholder: 'es., 150',
+        targetPartsHelp: 'Totale oggetti necessari',
+        tagsLabel: 'Tag (separati da virgola)',
+        tagsPlaceholder: 'es., voron, funzionale, regalo',
+        dueDate: 'Data scadenza',
+        priority: 'Priorita',
+        priorityLow: 'Bassa',
+        priorityNormal: 'Normale',
+        priorityHigh: 'Alta',
+        priorityUrgent: 'Urgente',
+        // Status
+        statusActive: 'Attivo',
+        statusCompleted: 'Completato',
+        statusArchived: 'Archiviato',
+        done: 'Fatto',
+        completed: 'completato',
+        failed: 'fallito',
+        inQueue: 'in coda',
+        noPrintsYet: 'Nessuna stampa ancora',
+        // Footer stats
+        printJobs: 'Job di stampa (piatti)',
+        partsPrinted: 'Parti stampate',
+        failedParts: 'Parti fallite',
+        // Actions
+        import: 'Importa',
+        export: 'Esporta',
+        importProject: 'Importa progetto',
+        exportAll: 'Esporta tutti i progetti',
+        loading: 'Caricamento progetti...',
+        // Permissions
+        noEditPermission: 'Non hai il permesso di modificare progetti',
+        noDeletePermission: 'Non hai il permesso di eliminare progetti',
+        noCreatePermission: 'Non hai il permesso di creare progetti',
+        noImportPermission: 'Non hai il permesso di importare progetti',
+        noExportPermission: 'Non hai il permesso di esportare progetti',
+        // Toast
+        toast: {
+            created: 'Progetto creato',
+            updated: 'Progetto aggiornato',
+            deleted: 'Progetto eliminato',
+            imported: 'Progetto importato',
+            multipleImported: '{{count}} progetti importati',
+            importFailed: 'Import fallito',
+            exported: 'Progetti esportati (solo metadati)',
+        },
+    },
+
+    // Project detail page
+    projectDetail: {
+        notFound: 'Progetto non trovato',
+        backToProjects: 'Torna a Progetti',
+        export: 'Esporta',
+        exportProject: 'Esporta progetto',
+        noExportPermission: 'Non hai il permesso di esportare progetti',
+        noEditPermission: 'Non hai il permesso di modificare progetti',
+        partOf: 'Parte di:',
+        priorityLabel: 'Priorita:',
+        noPrints: 'Nessuna stampa in questo progetto ancora',
+        status: {
+            active: 'Attivo',
+            completed: 'Completato',
+            archived: 'Archiviato',
+        },
+        priority: {
+            low: 'Bassa',
+            normal: 'Normale',
+            high: 'Alta',
+            urgent: 'Urgente',
+        },
+        dueDate: {
+            overdue: 'Scaduto',
+            today: 'Scade oggi',
+            daysLeft: '{{count}} giorni rimanenti',
+        },
+        progress: {
+            platesProgress: 'Avanzamento piatti',
+            partsProgress: 'Avanzamento parti',
+            printJobs: 'job di stampa',
+            parts: 'parti',
+            percentComplete: '{{percent}}% completato',
+            remaining: '{{count}} rimanenti',
+        },
+        stats: {
+            printJobs: 'Job di stampa',
+            total: 'totale',
+            failed: '{{count}} falliti',
+            partsPrinted: '{{count}} parti stampate',
+            printTime: 'Tempo di stampa',
+            filamentUsed: 'Filamento usato',
+        },
+        cost: {
+            title: 'Tracciamento costi',
+            filamentCost: 'Costo filamento',
+            energy: 'Energia',
+            budget: 'Budget',
+            remaining: 'Rimanente',
+        },
+        subProjects: {
+            title: 'Sotto-progetti ({{count}})',
+        },
+        notes: {
+            title: 'Note',
+            noEditPermission: 'Non hai il permesso di modificare le note',
+            placeholder: 'Aggiungi note su questo progetto...',
+            empty: 'Nessuna nota ancora. Clicca Modifica per aggiungere note.',
+        },
+        files: {
+            title: 'File',
+            linkFolders: 'Collega cartelle dal Gestore file',
+            forQuickAccess: 'a questo progetto per accesso rapido.',
+            fileCount: '{{count}} file',
+            empty: 'Nessuna cartella collegata. Vai a Gestore file e collega una cartella a questo progetto.',
+        },
+        bom: {
+            title: 'Distinta materiali',
+            acquired: '{{completed}}/{{total}} acquisiti',
+            showAll: 'Mostra tutti',
+            hideDone: 'Nascondi completati',
+            addPart: 'Aggiungi parte',
+            noAddPermission: 'Non hai il permesso di aggiungere parti',
+            partNamePlaceholder: 'Nome parte (es., viti M3x8)',
+            partName: 'Nome parte',
+            qty: 'Qta',
+            price: 'Prezzo ({{currency}})',
+            sourcingUrlPlaceholder: 'URL fornitura (opzionale)',
+            remarksPlaceholder: 'Note (opzionale)',
+            deletePart: 'Elimina parte',
+            deleteConfirm: 'Sei sicuro di voler eliminare "{{name}}"?',
+            noUpdatePermission: 'Non hai il permesso di aggiornare parti',
+            noEditPermission: 'Non hai il permesso di modificare parti',
+            noDeletePermission: 'Non hai il permesso di eliminare parti',
+            totalCost: 'Costo totale:',
+            empty: 'Nessuna parte nella distinta materiali. Aggiungi hardware, elettronica o altri componenti da reperire.',
+        },
+        timeline: {
+            title: 'Timeline attivita',
+            empty: 'Nessuna attivita ancora.',
+        },
+        template: {
+            saveAsTemplate: 'Salva come template',
+            noCreatePermission: 'Non hai il permesso di creare template',
+        },
+        queue: {
+            title: 'Coda',
+            viewAll: 'Vedi tutto',
+            printing: '{{count}} in stampa',
+            queued: '{{count}} in coda',
+        },
+        prints: {
+            title: 'Stampe ({{count}})',
+        },
+        toast: {
+            projectUpdated: 'Progetto aggiornato',
+            partAdded: 'Parte aggiunta',
+            partRemoved: 'Parte rimossa',
+            exportFailed: 'Export fallito',
+            projectExported: 'Progetto esportato',
+            templateCreated: 'Template creato',
+        },
+    },
+
+    // System info
+    system: {
+        title: 'Informazioni sistema',
+        version: 'Versione',
+        uptime: 'Tempo attivo',
+        cpuUsage: 'Uso CPU',
+        memoryUsage: 'Uso memoria',
+        diskUsage: 'Uso disco',
+        networkInfo: 'Info rete',
+        logs: 'Log',
+        debugMode: 'Modalita debug',
+        enableDebug: 'Abilita log debug',
+        disableDebug: 'Disabilita log debug',
+        downloadLogs: 'Scarica log',
+        clearLogs: 'Cancella log',
+        dockerInfo: 'Info Docker',
+        containerName: 'Nome container',
+        imageName: 'Nome immagine',
+        platform: 'Piattaforma',
+        architecture: 'Architettura',
+    },
+
+    // Library (K Profiles)
+    library: {
+        title: 'Libreria filamenti',
+        addFilament: 'Aggiungi filamento',
+        editFilament: 'Modifica filamento',
+        deleteFilament: 'Elimina filamento',
+        vendor: 'Produttore',
+        material: 'Materiale',
+        color: 'Colore',
+        kFactor: 'K Factor',
+        temperature: 'Temperatura',
+        noFilaments: 'Nessun filamento in libreria',
+        deleteConfirm: 'Sei sicuro di voler eliminare questo filamento?',
+        importFromPrinter: 'Importa da stampante',
+        exportToFile: 'Esporta su file',
+    },
+
+    // Spoolman
+    spoolman: {
+        title: 'Integrazione Spoolman',
+        enabled: 'Spoolman abilitato',
+        url: 'URL Spoolman',
+        connected: 'Connesso',
+        disconnected: 'Non connesso',
+        testConnection: 'Testa connessione',
+        sync: 'Sincronizza',
+        syncing: 'Sincronizzazione...',
+        lastSync: 'Ultima sincronizzazione',
+        linkToSpoolman: 'Collega a Spoolman',
+        openInSpoolman: 'Apri in Spoolman',
+        unlinkSpool: 'Scollega bobina',
+        selectSpool: 'Seleziona bobina',
+        noUnlinkedSpools: 'Nessuna bobina scollegata disponibile',
+        linkSuccess: 'Bobina collegata a Spoolman con successo',
+        linkFailed: 'Collegamento bobina fallito',
+        spoolId: 'ID bobina',
+        weight: 'Peso',
+        remaining: 'Rimanente',
+        disableWeightSync: 'Disabilita sync peso stimato AMS',
+        disableWeightSyncDesc: 'Non aggiornare la capacita rimanente dalle stime AMS. Usalo se preferisci il tracciamento di Spoolman rispetto alle stime AMS. Le nuove bobine useranno comunque la stima AMS come peso iniziale.',
+        reportPartialUsage: 'Segnala uso parziale per stampe fallite',
+        reportPartialUsageDesc: 'Quando una stampa fallisce o viene annullata, segnala il filamento stimato usato fino a quel punto in base all\'avanzamento layer.',
+    },
+
+    // Timelapse
+    timelapse: {
+        title: 'Timelapse',
+        create: 'Crea timelapse',
+        download: 'Scarica',
+        delete: 'Elimina',
+        preview: 'Anteprima',
+        frameRate: 'Frame rate',
+        quality: 'Qualita',
+        processing: 'Elaborazione...',
+        noTimelapses: 'Nessun timelapse disponibile',
+    },
+
+    // AMS
+    ams: {
+        title: 'AMS',
+        slot: 'Slot',
+        empty: 'Vuoto',
+        emptySlot: 'Slot vuoto',
+        unknown: 'Sconosciuto',
+        humidity: 'Umidita',
+        temperature: 'Temperatura',
+        filamentType: 'Tipo filamento',
+        filamentColor: 'Colore',
+        remaining: 'Rimanente',
+        history: 'Cronologia AMS',
+        noHistory: 'Nessuna cronologia disponibile',
+        configureSlot: 'Configura slot',
+        externalSpool: 'Bobina esterna',
+        profile: 'Profilo',
+        kFactor: 'K Factor',
+        fill: 'Riempi',
+        configure: 'Configura',
+    },
+
+    // Print modal
+    printModal: {
+        title: 'Avvia stampa',
+        selectPrinter: 'Seleziona stampante',
+        selectPlate: 'Seleziona piatto',
+        filamentMapping: 'Mappatura filamento',
+        printSettings: 'Impostazioni stampa',
+        bedLeveling: 'Livellamento piatto',
+        flowCalibration: 'Calibrazione flusso',
+        vibrationCalibration: 'Calibrazione vibrazioni',
+        layerInspection: 'Ispezione primo layer',
+        timelapse: 'Timelapse',
+        startPrint: 'Avvia stampa',
+        addToQueue: 'Aggiungi alla coda',
+        cancel: 'Annulla',
+        noPrintersAvailable: 'Nessuna stampante disponibile',
+        printerBusy: 'Stampante occupata',
+        printerOffline: 'Stampante offline',
+    },
+
+    // Backup
+    backup: {
+        title: 'Backup e ripristino',
+        createBackup: 'Crea backup',
+        restoreBackup: 'Ripristina backup',
+        restoreDescription: 'Sostituisci tutti i dati da un file di backup',
+        downloadBackup: 'Scarica backup',
+        uploadBackup: 'Carica backup',
+        lastBackup: 'Ultimo backup',
+        autoBackup: 'Backup automatico',
+        backupNow: 'Esegui backup ora',
+        restoreWarning: 'Avviso: il ripristino sovrascrivera tutti i dati attuali.',
+        includeArchives: 'Includi archivi',
+        includeSettings: 'Includi impostazioni',
+        includeProfiles: 'Includi profili',
+        backupSuccess: 'Backup creato con successo',
+        restoreSuccess: 'Backup ripristinato con successo',
+        backupFailed: 'Backup fallito',
+        restoreFailed: 'Ripristino fallito',
+        restoreNote: 'La stampante virtuale verra fermata durante il ripristino',
+    },
+
+    // Tags
+    tags: {
+        title: 'Tag',
+        addTag: 'Aggiungi tag',
+        editTag: 'Modifica tag',
+        deleteTag: 'Elimina tag',
+        tagName: 'Nome tag',
+        tagColor: 'Colore tag',
+        noTags: 'Nessun tag',
+        deleteConfirm: 'Sei sicuro di voler eliminare questo tag?',
+        manageTags: 'Gestisci tag',
+    },
+
+    // Upload modal (archives)
+    uploadModal: {
+        title: 'Carica file 3MF',
+        dragDrop: 'Trascina e rilascia file .3mf qui',
+        or: 'o',
+        browseFiles: 'Sfoglia file',
+        extractionInfo: 'Il modello stampante sara estratto automaticamente dai metadati del file 3MF.',
+        uploaded: 'caricati',
+        failed: 'falliti',
+        uploading: 'Caricamento...',
+        upload: 'Carica',
+        uploadFailed: 'Caricamento fallito',
+    },
+
+    // Edit archive modal
+    editArchive: {
+        title: 'Modifica archivio',
+        name: 'Nome',
+        namePlaceholder: 'Nome stampa',
+        printer: 'Stampante',
+        noPrinter: 'Nessuna stampante',
+        project: 'Progetto',
+        noProject: 'Nessun progetto',
+        itemsPrinted: 'Elementi stampati',
+        itemsPrintedHelp: 'Numero di elementi prodotti in questo job di stampa',
+        notes: 'Note',
+        notesPlaceholder: 'Aggiungi note su questa stampa...',
+        externalLink: 'Link esterno',
+        externalLinkPlaceholder: 'https://printables.com/model/...',
+        externalLinkHelp: 'Link a Printables, Thingiverse o altra fonte',
+        tags: 'Tag',
+        tagsPlaceholder: 'Aggiungi tag...',
+        addMoreTags: 'Aggiungi altri tag...',
+        matchingTags: 'Tag corrispondenti "{{query}}"',
+        existingTags: 'Tag esistenti',
+        clickToAdd: '(clicca per aggiungere)',
+        status: 'Stato',
+        failureReason: 'Motivo fallimento',
+        selectReason: 'Seleziona motivo...',
+        photos: 'Foto del risultato stampato',
+        photosHelp: 'Clicca + per aggiungere foto del risultato stampato',
+        printResult: 'Risultato stampa',
+        saving: 'Salvataggio...',
+        // Failure reasons
+        failureReasons: {
+            adhesionFailure: 'Fallimento adesione',
+            spaghettiDetached: 'Spaghetti / staccato',
+            layerShift: 'Spostamento layer',
+            cloggedNozzle: 'Ugello intasato',
+            filamentRunout: 'Filamento esaurito',
+            warping: 'Warping',
+            stringing: 'Stringing',
+            underExtrusion: 'Sotto-estrusione',
+            powerFailure: 'Mancanza corrente',
+            userCancelled: 'Annullato dall\'utente',
+            other: 'Altro',
+        },
+        // Archive statuses
+        statuses: {
+            completed: 'Completato',
+            failed: 'Fallito',
+            aborted: 'Annullato',
+            printing: 'In stampa',
+        },
+    },
+
+    // K-Profiles
+    kProfiles: {
+        title: 'K-Profiles',
+        noPrintersConfigured: 'Nessuna stampante configurata',
+        addPrinterInSettings: 'Aggiungi una stampante in Impostazioni per gestire i K-profiles',
+        noActivePrinters: 'Nessuna stampante attiva',
+        enablePrinterConnection: 'Abilita una connessione stampante per vedere i K-profiles',
+        loadingProfiles: 'Caricamento K-Profiles...',
+        printerOffline: 'Stampante offline',
+        printerOfflineDesc: 'La stampante selezionata non e connessa. Accendila per vedere i K-profiles.',
+        noMatchingProfiles: 'Nessun profilo corrispondente',
+        noMatchingProfilesDesc: 'Nessun profilo corrisponde ai criteri di ricerca',
+        noKProfiles: 'Nessun K-Profile',
+        noKProfilesDesc: 'Nessun profilo pressure advance per ugello da {{diameter}}mm',
+        createFirstProfile: 'Crea primo profilo',
+        // Controls
+        printer: 'Stampante',
+        nozzle: 'Ugello',
+        refresh: 'Aggiorna',
+        addProfile: 'Aggiungi profilo',
+        export: 'Esporta',
+        import: 'Importa',
+        select: 'Seleziona',
+        selectAll: 'Seleziona tutto',
+        delete: 'Elimina',
+        // Filters
+        searchPlaceholder: 'Cerca per nome o filamento...',
+        allExtruders: 'Tutti gli estrusori',
+        leftOnly: 'Solo sinistro',
+        rightOnly: 'Solo destro',
+        allFlow: 'Tutto flow',
+        hfOnly: 'Solo HF',
+        sOnly: 'Solo S',
+        sortName: 'Ordina: Nome',
+        sortKValue: 'Ordina: K-Value',
+        sortFilament: 'Ordina: Filamento',
+        // Dual extruder labels
+        leftExtruder: 'Estrusore sinistro',
+        rightExtruder: 'Estrusore destro',
+        // Modal
+        modal: {
+            addTitle: 'Aggiungi K-Profile',
+            editTitle: 'Modifica K-Profile',
+            profileName: 'Nome profilo',
+            profileNamePlaceholder: 'Il mio profilo PLA',
+            kValue: 'K-Value',
+            kValuePlaceholder: '0.020',
+            kValueHelp: 'Intervallo tipico: 0.01 - 0.06 per PLA, 0.02 - 0.10 per PETG',
+            filament: 'Filamento',
+            selectFilament: 'Seleziona filamento...',
+            noFilamentsHelp: 'Nessun filamento trovato. Crea prima un K-profile in Bambu Studio.',
+            flowType: 'Tipo flow',
+            highFlow: 'High Flow',
+            standard: 'Standard',
+            nozzleSize: 'Dimensione ugello',
+            extruder: 'Estrusore',
+            extruders: 'Estrusori',
+            left: 'Sinistra',
+            right: 'Destra',
+            notes: 'Note (salvate localmente)',
+            notesPlaceholder: 'Aggiungi note su questo profilo...',
+            notesHelp: 'Le note sono salvate in Bambuddy, non sulla stampante',
+            syncing: 'Sincronizzazione con stampante...',
+            savingExtruder: 'Salvataggio su estrusore {{current}}/{{total}}...',
+            pleaseWait: 'Attendere',
+        },
+        // Delete confirmation
+        deleteConfirm: {
+            title: 'Elimina profilo',
+            cannotUndo: 'Questo non puo essere annullato',
+            message: 'Sei sicuro di voler eliminare "{{name}}" dalla stampante?',
+        },
+        // Bulk delete
+        bulkDelete: {
+            title: 'Elimina profili',
+            cannotUndo: 'Questo non puo essere annullato',
+            message: 'Sei sicuro di voler eliminare {{count}} profili selezionati dalla stampante?',
+        },
+        // Toast
+        toast: {
+            profileSaved: 'K-profile salvato',
+            profilesSaved: 'K-profile salvato su {{count}} estrusori',
+            selectAtLeastOneExtruder: 'Seleziona almeno un estrusore',
+            profileDeleted: 'K-profile eliminato',
+            profilesDeleted: 'Eliminati {{count}} profili',
+            exportedProfiles: 'Esportati {{count}} profili',
+            importedProfiles: 'Importati {{count}} di {{total}} profili',
+            noProfilesToExport: 'Nessun profilo da esportare',
+            invalidFileFormat: 'Formato file non valido',
+            failedToParseImport: 'Parsing file import fallito',
+            failedToSaveBatch: 'Salvataggio K-profiles fallito',
+            noteSaved: 'Nota salvata',
+            failedToSaveNote: 'Salvataggio nota fallito',
+        },
+        // Permissions
+        permission: {
+            noRead: 'Non hai il permesso di aggiornare i profili',
+            noCreate: 'Non hai il permesso di aggiungere profili',
+            noUpdate: 'Non hai il permesso di aggiornare K-profiles',
+            noDelete: 'Non hai il permesso di eliminare K-profiles',
+            noExport: 'Non hai il permesso di esportare profili',
+            noImport: 'Non hai il permesso di importare profili',
+        },
+    },
+
+    // Virtual Printer
+    virtualPrinter: {
+        title: 'Stampante virtuale',
+        running: 'In esecuzione',
+        stopped: 'Ferma',
+        description: {
+            default: 'Abilita una stampante virtuale che appare in Bambu Studio e OrcaSlicer. I file inviati a questa stampante saranno archiviati senza stampare.',
+            proxy: 'Abilita un proxy che inoltra il traffico slicer a una stampante reale, permettendo la stampa remota su qualsiasi rete.',
+        },
+        enable: {
+            title: 'Abilita stampante virtuale',
+            visibleInSlicer: 'Visibile come "Bambuddy" nella ricerca slicer',
+            proxyingTo: 'In proxy verso {{name}}',
+            notActive: 'Non attivo',
+        },
+        model: {
+            title: 'Modello stampante',
+            description: 'Seleziona il modello stampante da emulare.',
+            restartWarning: 'Cambiare il modello riavviera la stampante virtuale',
+        },
+        accessCode: {
+            title: 'Codice accesso',
+            isSet: 'Codice accesso impostato',
+            notSet: 'Nessun codice accesso impostato - richiesto per abilitare',
+            placeholder: 'Inserisci codice 8 caratteri',
+            placeholderChange: 'Inserisci nuovo codice per cambiare',
+            hint: 'Deve essere esattamente 8 caratteri. Usato dagli slicer per autenticarsi.',
+            charCount: '({{count}}/8)',
+        },
+        targetPrinter: {
+            title: 'Stampante target',
+            configured: 'Target proxy configurato',
+            notConfigured: 'Nessuna stampante target selezionata - richiesta per modalita proxy',
+            placeholder: 'Seleziona una stampante...',
+            hint: 'Seleziona la stampante a cui fare proxy. La stampante deve essere in modalita LAN.',
+            noPrinters: 'Nessuna stampante configurata. Aggiungi una stampante per usare la modalita proxy.',
+        },
+        remoteInterface: {
+            title: 'Interfaccia rete slicer',
+            configured: 'Proxy SSDP abilitato',
+            optional: 'Opzionale - per discovery SSDP tra reti',
+            placeholder: 'Seleziona interfaccia per rete slicer...',
+            hint: 'Seleziona l\'interfaccia di rete connessa allo slicer. Abilita scoperta automatica in Bambu Studio.',
+        },
+        mode: {
+            title: 'Modalita',
+            archive: 'Archivio',
+            archiveDesc: 'Archivia subito i file',
+            review: 'Revisione',
+            reviewDesc: 'Rivedi prima di archiviare',
+            queue: 'Coda',
+            queueDesc: 'Archivia e aggiungi alla coda',
+            proxy: 'Proxy',
+            proxyDesc: 'Inoltra a stampante reale',
+        },
+        setupRequired: {
+            title: 'Configurazione necessaria',
+            description: 'La stampante virtuale richiede configurazioni di sistema aggiuntive prima di funzionare. Include port forwarding, regole firewall e impostazioni specifiche della piattaforma.',
+            readGuide: 'Leggi la guida prima di abilitare',
+        },
+        howItWorks: {
+            title: 'Come funziona',
+            titleProxy: 'Come funziona (Modalita proxy)',
+            step1: 'Completa la guida di configurazione per la tua piattaforma',
+            step2: 'Abilita la stampante virtuale e imposta un codice accesso',
+            step3: 'In Bambu Studio o OrcaSlicer, vai su "Aggiungi stampante"',
+            step4: 'La stampante "Bambuddy" dovrebbe apparire nella lista',
+            step5: 'Connettiti usando il codice accesso impostato',
+            step6: 'Quando "stampi" su Bambuddy, il file 3MF viene archiviato',
+            proxyStep1: 'Seleziona la stampante target (deve essere in modalita LAN)',
+            proxyStep2: 'Per rete diversa: seleziona l\'interfaccia rete slicer',
+            proxyStep3: 'Abilita il proxy - la stampante appare via SSDP',
+            proxyStep4: 'Connettiti usando il codice accesso della stampante',
+            proxyStep5: 'Stampa normalmente - il traffico e inoltrato via Bambuddy',
+            proxyStep6: 'Lo streaming camera richiede NAT/IP forwarding (vedi docs)',
+        },
+        status: {
+            title: 'Dettagli stato',
+            printerName: 'Nome stampante',
+            model: 'Modello',
+            serialNumber: 'Numero seriale',
+            mode: 'Modalita',
+            pendingFiles: 'File in sospeso',
+            targetPrinter: 'Stampante target',
+            ftpPort: 'Porta FTP',
+            mqttPort: 'Porta MQTT',
+            ftpConnections: 'Connessioni FTP',
+            mqttConnections: 'Connessioni MQTT',
+        },
+        toast: {
+            updated: 'Impostazioni stampante virtuale aggiornate',
+            failedToUpdate: 'Aggiornamento impostazioni fallito',
+            accessCodeRequired: 'Imposta prima un codice accesso',
+            targetPrinterRequired: 'Seleziona prima una stampante target',
+            accessCodeEmpty: 'Il codice accesso non puo essere vuoto',
+            accessCodeLength: 'Il codice accesso deve essere esattamente 8 caratteri',
+        },
+    },
+
+    // Model Viewer
+    modelViewer: {
+        openInSlicer: 'Apri in slicer',
+        tabs: {
+            model: 'Modello 3D',
+            gcode: 'Anteprima G-code',
+        },
+        notAvailable: 'non disponibile',
+        notSliced: 'non sezionato',
+        plates: 'Piatti',
+        allPlates: 'Tutti i piatti',
+        plateNumber: 'Piatto {{number}}',
+        plateCount: '{{count}} piatto',
+        plateCount_other: '{{count}} piatti',
+        objectCount: '{{count}} oggetto',
+        objectCount_other: '{{count}} oggetti',
+        filamentCount: '{{count}} filamento',
+        filamentCount_other: '{{count}} filamenti',
+        eta: 'ETA {{minutes}} min',
+        noPreview: 'Nessuna anteprima disponibile per questo file',
+        pagination: {
+            pageOf: 'Pagina {{current}} di {{total}}',
+            prev: 'Prec',
+            next: 'Succ',
+        },
+        errors: {
+            failedToLoad: 'Caricamento file fallito',
+            noMeshes: 'Nessuna mesh trovata nel file 3MF',
+            unsupportedFormat: 'Formato file non supportato',
+        },
+    },
+
+    // Maintenance type descriptions (built-in)
+    maintenanceDescriptions: {
+        lubricateRails: 'Applica lubrificante alle guide lineari per movimento fluido',
+        cleanNozzle: 'Pulisci hotend e ugello per prevenire intasamenti',
+        checkBelts: 'Verifica tensione cinghie per stampe accurate',
+        cleanBuildPlate: 'Pulisci il piatto per migliore adesione',
+        checkExtruder: 'Ispeziona ingranaggi estrusore per usura',
+        checkCooling: 'Assicurati che le ventole di raffreddamento funzionino',
+        generalInspection: 'Ispezione generale stampante',
+        cleanCarbonRods: 'Pulisci le aste in carbonio per ridurre attrito',
+        checkPtfeTube: 'Ispeziona il tubo PTFE per usura o danni',
+        replaceHepaFilter: 'Sostituisci filtro HEPA per qualita aria',
+        replaceCarbonFilter: 'Sostituisci filtro a carbone attivo',
+        lubricateLeftNozzleRail: 'Lubrifica guida ugello sinistro (serie H2)',
+    },
+};