From 9819473157591ae1b8da9367654d195693f18599 Mon Sep 17 00:00:00 2001 From: entropyst72 <52461825+entropyst72@users.noreply.github.com> Date: Mon, 30 Mar 2026 19:43:46 +0200 Subject: [PATCH] added italian language --- client/src/i18n/translations/it.ts | 1235 ++++++++++++++++++++++++++++ 1 file changed, 1235 insertions(+) create mode 100644 client/src/i18n/translations/it.ts diff --git a/client/src/i18n/translations/it.ts b/client/src/i18n/translations/it.ts new file mode 100644 index 0000000..541a8bd --- /dev/null +++ b/client/src/i18n/translations/it.ts @@ -0,0 +1,1235 @@ +const it: Record = { + // Common + 'common.save': 'Salva', + 'common.cancel': 'Annulla', + 'common.delete': 'Elimina', + 'common.edit': 'Modifica', + 'common.add': 'Aggiungi', + 'common.loading': 'Caricamento...', + 'common.error': 'Errore', + 'common.back': 'Indietro', + 'common.all': 'Tutti', + 'common.close': 'Chiudi', + 'common.open': 'Apri', + 'common.upload': 'Carica', + 'common.search': 'Cerca', + 'common.confirm': 'Conferma', + 'common.ok': 'OK', + 'common.yes': 'Sì', + 'common.no': 'No', + 'common.or': 'o', + 'common.none': 'Nessuno', + 'common.date': 'Data', + 'common.rename': 'Rinomina', + 'common.name': 'Nome', + 'common.email': 'Email', + 'common.password': 'Password', + 'common.saving': 'Salvataggio...', + 'common.update': 'Aggiorna', + 'common.change': 'Cambia', + 'common.uploading': 'Caricamento…', + 'common.backToPlanning': 'Torna al Programma', + 'common.reset': 'Reimposta', + + // Navbar + 'nav.trip': 'Viaggio', + 'nav.share': 'Condividi', + 'nav.settings': 'Impostazioni', + 'nav.admin': 'Amministrazione', + 'nav.logout': 'Esci', + 'nav.lightMode': 'Modalità chiara', + 'nav.darkMode': 'Modalità scura', + 'nav.autoMode': 'Modalità automatica', + 'nav.administrator': 'Amministratore', + + // Dashboard + 'dashboard.title': 'I miei Viaggi', + 'dashboard.subtitle.loading': 'Caricamento viaggi...', + 'dashboard.subtitle.trips': '{count} viaggi ({archived} archiviati)', + 'dashboard.subtitle.empty': 'Inizia il tuo primo viaggio', + 'dashboard.subtitle.activeOne': '{count} viaggio attivo', + 'dashboard.subtitle.activeMany': '{count} viaggi attivi', + 'dashboard.subtitle.archivedSuffix': ' · {count} archiviati', + 'dashboard.newTrip': 'Nuovo Viaggio', + 'dashboard.gridView': 'Vista a griglia', + 'dashboard.listView': 'Vista a lista', + 'dashboard.currency': 'Valuta', + 'dashboard.timezone': 'Fusi orari', + 'dashboard.localTime': 'Locale', + 'dashboard.timezoneCustomTitle': 'Fuso orario personalizzato', + 'dashboard.timezoneCustomLabelPlaceholder': 'Etichetta (opzionale)', + 'dashboard.timezoneCustomTzPlaceholder': 'es. Europe/Rome', + 'dashboard.timezoneCustomAdd': 'Aggiungi', + 'dashboard.timezoneCustomErrorEmpty': 'Inserisci un identificatore di fuso orario', + 'dashboard.timezoneCustomErrorInvalid': 'Fuso orario non valido. Usa formati come Europe/Rome', + 'dashboard.timezoneCustomErrorDuplicate': 'Già aggiunto', + 'dashboard.emptyTitle': 'Ancora nessun viaggio', + 'dashboard.emptyText': 'Crea il tuo primo viaggio e inizia a programmare!', + 'dashboard.emptyButton': 'Crea il primo viaggio', + 'dashboard.nextTrip': 'Prossimo Viaggio', + 'dashboard.shared': 'Condiviso', + 'dashboard.sharedBy': 'Condiviso da {name}', + 'dashboard.days': 'Giorni', + 'dashboard.places': 'Luoghi', + 'dashboard.archive': 'Archivia', + 'dashboard.restore': 'Ripristina', + 'dashboard.archived': 'Archiviati', + 'dashboard.status.ongoing': 'In corso', + 'dashboard.status.today': 'Oggi', + 'dashboard.status.tomorrow': 'Domani', + 'dashboard.status.past': 'Passato', + 'dashboard.status.daysLeft': '-{count} giorni', + 'dashboard.toast.loadError': 'Impossibile caricare i viaggi', + 'dashboard.toast.created': 'Viaggio creato con successo!', + 'dashboard.toast.createError': 'Impossibile creare il viaggio', + 'dashboard.toast.updated': 'Viaggio aggiornato!', + 'dashboard.toast.updateError': 'Impossibile aggiornare il viaggio', + 'dashboard.toast.deleted': 'Viaggio eliminato', + 'dashboard.toast.deleteError': 'Impossibile eliminare il viaggio', + 'dashboard.toast.archived': 'Viaggio archiviato', + 'dashboard.toast.archiveError': 'Impossibile archiviare il viaggio', + 'dashboard.toast.restored': 'Viaggio ripristinato', + 'dashboard.toast.restoreError': 'Impossibile ripristinare il viaggio', + 'dashboard.confirm.delete': 'Eliminare il viaggio "{title}"? Tutti i luoghi e i programmi verranno eliminati in modo permanente.', + 'dashboard.editTrip': 'Modifica Viaggio', + 'dashboard.createTrip': 'Crea Nuovo Viaggio', + 'dashboard.tripTitle': 'Titolo', + 'dashboard.tripTitlePlaceholder': 'es. Estate in Giappone', + 'dashboard.tripDescription': 'Descrizione', + 'dashboard.tripDescriptionPlaceholder': 'Di cosa tratta questo viaggio?', + 'dashboard.startDate': 'Data di inizio', + 'dashboard.endDate': 'Data di fine', + 'dashboard.noDateHint': 'Nessuna data impostata — verranno creati 7 giorni predefiniti. Puoi cambiarlo in qualsiasi momento.', + 'dashboard.coverImage': 'Immagine di copertina', + 'dashboard.addCoverImage': 'Aggiungi immagine di copertina (o trascinala qui)', + 'dashboard.addMembers': 'Compagni di viaggio', + 'dashboard.addMember': 'Aggiungi membro', + 'dashboard.coverSaved': 'Immagine di copertina salvata', + 'dashboard.coverUploadError': 'Impossibile caricare', + 'dashboard.coverRemoveError': 'Impossibile rimuovere', + 'dashboard.titleRequired': 'Il titolo è obbligatorio', + 'dashboard.endDateError': 'La data di fine deve essere successiva alla data di inizio', + + // Settings + 'settings.title': 'Impostazioni', + 'settings.subtitle': 'Configura le tue impostazioni personali', + 'settings.map': 'Mappa', + 'settings.mapTemplate': 'Modello Mappa', + 'settings.mapTemplatePlaceholder.select': 'Seleziona modello...', + 'settings.mapDefaultHint': 'Lascia vuoto per OpenStreetMap (predefinito)', + 'settings.mapTemplatePlaceholder': 'https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', + 'settings.mapHint': 'Modello URL per i tile della mappa', + 'settings.latitude': 'Latitudine', + 'settings.longitude': 'Longitudine', + 'settings.saveMap': 'Salva Mappa', + 'settings.apiKeys': 'Chiavi API', + 'settings.mapsKey': 'Chiave API Google Maps', + 'settings.mapsKeyHint': 'Per la ricerca dei luoghi. Richiede Places API (New). Ottienila su console.cloud.google.com', + 'settings.weatherKey': 'Chiave API OpenWeatherMap', + 'settings.weatherKeyHint': 'Per i dati meteo. Gratuita su openweathermap.org/api', + 'settings.keyPlaceholder': 'Inserisci la chiave...', + 'settings.configured': 'Configurata', + 'settings.saveKeys': 'Salva Chiavi', + 'settings.display': 'Visualizzazione', + 'settings.colorMode': 'Modalità Colore', + 'settings.light': 'Chiara', + 'settings.dark': 'Scura', + 'settings.auto': 'Automatica', + 'settings.language': 'Lingua', + 'settings.temperature': 'Unità di Temperatura', + 'settings.timeFormat': 'Formato Ora', + 'settings.routeCalculation': 'Calcolo Percorso', + 'settings.on': 'On', + 'settings.off': 'Off', + 'settings.account': 'Account', + 'settings.username': 'Username', + 'settings.email': 'Email', + 'settings.role': 'Ruolo', + 'settings.roleAdmin': 'Amministratore', + 'settings.oidcLinked': 'Collegato con', + 'settings.changePassword': 'Cambia Password', + 'settings.currentPassword': 'Password attuale', + 'settings.currentPasswordRequired': 'La password attuale è obbligatoria', + 'settings.newPassword': 'Nuova password', + 'settings.confirmPassword': 'Conferma nuova password', + 'settings.updatePassword': 'Aggiorna password', + 'settings.passwordRequired': 'Inserisci la password attuale e quella nuova', + 'settings.passwordTooShort': 'La password deve contenere almeno 8 caratteri', + 'settings.passwordMismatch': 'Le password non corrispondono', + 'settings.passwordWeak': 'La password deve contenere lettere maiuscole, minuscole e un numero', + 'settings.passwordChanged': 'Password cambiata con successo', + 'settings.deleteAccount': 'Elimina account', + 'settings.deleteAccountTitle': 'Eliminare il tuo account?', + 'settings.deleteAccountWarning': 'Il tuo account e tutti i tuoi viaggi, luoghi e file verranno eliminati in modo permanente. Questa azione non può essere annullata.', + 'settings.deleteAccountConfirm': 'Elimina in modo permanente', + 'settings.deleteBlockedTitle': 'Eliminazione impossibile', + 'settings.deleteBlockedMessage': 'Sei l\'unico amministratore. Promuovi un altro utente ad amministratore prima di eliminare il tuo account.', + 'settings.roleUser': 'Utente', + 'settings.saveProfile': 'Salva Profillo', + 'settings.toast.mapSaved': 'Impostazioni mappa salvate', + 'settings.toast.keysSaved': 'Chiavi API salvate', + 'settings.toast.displaySaved': 'Impostazioni di visualizzazione salvate', + 'settings.toast.profileSaved': 'Profilo salvato', + 'settings.uploadAvatar': 'Carica Immagine del Profilo', + 'settings.removeAvatar': 'Rimuovi Immagine del Profilo', + 'settings.avatarUploaded': 'Immagine del profilo aggiornata', + 'settings.avatarRemoved': 'Immagine del profilo rimossa', + 'settings.avatarError': 'Impossibile caricare', + 'settings.mfa.title': 'Autenticazione a due fattori (2FA)', + 'settings.mfa.description': 'Aggiunge un secondo passaggio quando accedi con email e password. Usa un\'app authenticator (Google Authenticator, Authy, ecc.).', + 'settings.mfa.enabled': 'La 2FA è abilitata sul tuo account.', + 'settings.mfa.disabled': 'La 2FA non è abilitata.', + 'settings.mfa.setup': 'Configura authenticator', + 'settings.mfa.scanQr': 'Scansiona questo codice QR con la tua app, o inserisci il segreto manualmente.', + 'settings.mfa.secretLabel': 'Chiave segreta (inserimento manuale)', + 'settings.mfa.codePlaceholder': 'Codice a 6 cifre', + 'settings.mfa.enable': 'Abilita 2FA', + 'settings.mfa.cancelSetup': 'Annulla', + 'settings.mfa.disableTitle': 'Disabilita 2FA', + 'settings.mfa.disableHint': 'Inserisci la password del tuo account e un codice attuale dal tuo authenticator.', + 'settings.mfa.disable': 'Disabilita 2FA', + 'settings.mfa.toastEnabled': 'Autenticazione a due fattori abilitata', + 'settings.mfa.toastDisabled': 'Autenticazione a due fattori disabilitata', + 'settings.mfa.demoBlocked': 'Non disponibile in modalità demo', + + // Login + 'login.error': 'Accesso fallito. Controlla le tue credenziali.', + 'login.tagline': 'I tuoi viaggi.\nIl tuo programma.', + 'login.description': 'Programma viaggi in collaborazione con mappe interattive, budget e sincronizzazione in tempo reale.', + 'login.features.maps': 'Mappe Interattive', + 'login.features.mapsDesc': 'Google Places, percorsi e clustering', + 'login.features.realtime': 'Sincronizzazione in tempo reale', + 'login.features.realtimeDesc': 'Programmate insieme tramite WebSocket', + 'login.features.budget': 'Tracciamento Budget', + 'login.features.budgetDesc': 'Categorie, grafici e costi per persona', + 'login.features.collab': 'Collaborazione', + 'login.features.collabDesc': 'Multi-utente con viaggi condivisi', + 'login.features.packing': 'Lista Valigia', + 'login.features.packingDesc': 'Categorie, progressi e suggerimenti', + 'login.features.bookings': 'Prenotazioni', + 'login.features.bookingsDesc': 'Voli, alloggi, ristoranti e altro', + 'login.features.files': 'Documenti', + 'login.features.filesDesc': 'Carica e gestisci i documenti', + 'login.features.routes': 'Percorsi Intelligenti', + 'login.features.routesDesc': 'Ottimizzazione automatica ed esportazione su Google Maps', + 'login.selfHosted': 'Self-hosted · Open Source · Your data stays yours', + 'login.title': 'Accedi', + 'login.subtitle': 'Bentornato', + 'login.signingIn': 'Accesso in corso…', + 'login.signIn': 'Accedi', + 'login.createAdmin': 'Crea Account Amministratore', + 'login.createAdminHint': 'Imposta il primo account amministratore per TREK.', + 'login.createAccount': 'Crea Account', + 'login.createAccountHint': 'Registra un nuovo account.', + 'login.creating': 'Creazione in corso…', + 'login.noAccount': "Non hai un account?", + 'login.hasAccount': 'Hai già un account?', + 'login.register': 'Registrati', + 'login.emailPlaceholder': 'tua@email.com', + 'login.username': 'Username', + 'login.oidc.registrationDisabled': 'La registrazione è disabilitata. Contatta il tuo amministratore.', + 'login.oidc.noEmail': 'Nessuna email ricevuta dal provider.', + 'login.oidc.tokenFailed': 'Autenticazione fallita.', + 'login.oidc.invalidState': 'Sessione non valida. Riprova.', + 'login.demoFailed': 'Accesso demo fallito', + 'login.oidcSignIn': 'Accedi con {name}', + 'login.oidcOnly': 'L\'autenticazione tramite password è disabilitata. Accedi utilizzando il tuo provider SSO.', + 'login.demoHint': 'Prova la demo — nessuna registrazione necessaria', + 'login.mfaTitle': 'Autenticazione a due fattori', + 'login.mfaSubtitle': 'Inserisci il codice a 6 cifre dalla tua app authenticator.', + 'login.mfaCodeLabel': 'Codice di verifica', + 'login.mfaCodeRequired': 'Inserisci il codice dalla tua app authenticator.', + 'login.mfaHint': 'Apri Google Authenticator, Authy o un\'altra app TOTP.', + 'login.mfaBack': '← Torna all\'accesso', + 'login.mfaVerify': 'Verifica', + + // Register + 'register.passwordMismatch': 'Le password non corrispondono', + 'register.passwordTooShort': 'La password deve contenere almeno 6 caratteri', + 'register.failed': 'Registrazione fallita', + 'register.getStarted': 'Inizia', + 'register.subtitle': 'Crea un account e inizia a programmare i viaggi dei tuoi sogni.', + 'register.feature1': 'Piani di viaggio illimitati', + 'register.feature2': 'Vista mappa interattiva', + 'register.feature3': 'Gestisci luoghi e categorie', + 'register.feature4': 'Traccia le prenotazioni', + 'register.feature5': 'Crea liste per la valigia', + 'register.feature6': 'Archivia foto e file', + 'register.createAccount': 'Crea Account', + 'register.startPlanning': 'Inizia a programmare il tuo viaggio', + 'register.minChars': 'Min. 6 caratteri', + 'register.confirmPassword': 'Conferma Password', + 'register.repeatPassword': 'Ripeti password', + 'register.registering': 'Registrazione in corso...', + 'register.register': 'Registrati', + 'register.hasAccount': 'Hai già un account?', + 'register.signIn': 'Accedi', + + // Admin + 'admin.title': 'Amministrazione', + 'admin.subtitle': 'Gestione utenti e impostazioni di sistema', + 'admin.tabs.users': 'Utenti', + 'admin.tabs.categories': 'Categorie', + 'admin.tabs.backup': 'Backup', + 'admin.stats.users': 'Utenti', + 'admin.stats.trips': 'Viaggi', + 'admin.stats.places': 'Luoghi', + 'admin.stats.photos': 'Foto', + 'admin.stats.files': 'File', + 'admin.table.user': 'Utente', + 'admin.table.email': 'Email', + 'admin.table.role': 'Ruolo', + 'admin.table.created': 'Creato', + 'admin.table.lastLogin': 'Ultimo Accesso', + 'admin.table.actions': 'Azioni', + 'admin.you': '(Tu)', + 'admin.editUser': 'Modifica Utente', + 'admin.newPassword': 'Nuova Password', + 'admin.newPasswordHint': 'Lascia vuoto per mantenere la password attuale', + 'admin.deleteUser': 'Eliminare l\'utente "{name}"? Tutti i viaggi verranno eliminati in modo permanente.', + 'admin.deleteUserTitle': 'Elimina utente', + 'admin.newPasswordPlaceholder': 'Inserisci nuova password…', + 'admin.toast.loadError': 'Impossibile caricare i dati di amministrazione', + 'admin.toast.userUpdated': 'Utente aggiornato', + 'admin.toast.updateError': 'Impossibile aggiornare', + 'admin.toast.userDeleted': 'Utente eliminato', + 'admin.toast.deleteError': 'Impossibile eliminare', + 'admin.toast.cannotDeleteSelf': 'Impossibile eliminare il proprio account', + 'admin.toast.userCreated': 'Utente creato', + 'admin.toast.createError': 'Impossibile creare l\'utente', + 'admin.toast.fieldsRequired': 'Username, email e password sono obbligatori', + 'admin.createUser': 'Crea Utente', + 'admin.invite.title': 'Link di Invito', + 'admin.invite.subtitle': 'Crea link di registrazione monouso', + 'admin.invite.create': 'Crea Link', + 'admin.invite.createAndCopy': 'Crea & Copia', + 'admin.invite.empty': 'Nessun link di invito ancora creato', + 'admin.invite.maxUses': 'Usi Max.', + 'admin.invite.expiry': 'Scade tra', + 'admin.invite.uses': 'usato', + 'admin.invite.expiresAt': 'scade', + 'admin.invite.createdBy': 'da', + 'admin.invite.active': 'Attivo', + 'admin.invite.expired': 'Scaduto', + 'admin.invite.usedUp': 'Esaurito', + 'admin.invite.copied': 'Link di invito copiato negli appunti', + 'admin.invite.copyLink': 'Copia link', + 'admin.invite.deleted': 'Link di invito eliminato', + 'admin.invite.createError': 'Impossibile creare il link di invito', + 'admin.invite.deleteError': 'Impossibile eliminare il link di invito', + 'admin.tabs.settings': 'Impostazioni', + 'admin.allowRegistration': 'Consenti Registrazione', + 'admin.allowRegistrationHint': 'I nuovi utenti possono registrarsi autonomamente', + 'admin.apiKeys': 'Chiavi API', + 'admin.apiKeysHint': 'Opzionale. Abilita dati estesi per i luoghi come foto e meteo.', + 'admin.mapsKey': 'Chiave API Google Maps', + 'admin.mapsKeyHint': 'Richiesta per la ricerca dei luoghi. Ottienila su console.cloud.google.com', + 'admin.mapsKeyHintLong': 'Senza una chiave API, OpenStreetMap viene utilizzato per la ricerca dei luoghi. Con una chiave API di Google, è possibile caricare anche foto, valutazioni e orari di apertura. Ottienine una su console.cloud.google.com.', + 'admin.recommended': 'Consigliato', + 'admin.weatherKey': 'Chiave API OpenWeatherMap', + 'admin.weatherKeyHint': 'Per i dati meteo. Gratuita su openweathermap.org', + 'admin.validateKey': 'Testa', + 'admin.keyValid': 'Connessa', + 'admin.keyInvalid': 'Non valida', + 'admin.keySaved': 'Chiavi API salvate', + 'admin.oidcTitle': 'Single Sign-On (OIDC)', + 'admin.oidcSubtitle': 'Consenti l\'accesso tramite provider esterni come Google, Apple, Authentik o Keycloak.', + 'admin.oidcDisplayName': 'Nome Visualizzato', + 'admin.oidcIssuer': 'URL Emittente', + 'admin.oidcIssuerHint': 'L\'URL dell\'Emittente OpenID Connect del provider. es. https://accounts.google.com', + 'admin.oidcSaved': 'Configurazione OIDC salvata', + 'admin.oidcOnlyMode': 'Disabilita autenticazione con password', + 'admin.oidcOnlyModeHint': 'Se abilitato, è consentito solo l\'accesso SSO. L\'accesso basato su password e la registrazione sono bloccati.', + + // File Types + 'admin.fileTypes': 'Tipi di File Consentiti', + 'admin.fileTypesHint': 'Configura quali tipi di file gli utenti possono caricare.', + 'admin.fileTypesFormat': 'Estensioni separate da virgola (es. jpg,png,pdf,doc). Usa * per consentire tutti i tipi.', + 'admin.fileTypesSaved': 'Impostazioni dei tipi di file salvate', + // Packing Templates & Bag Tracking + 'admin.bagTracking.title': 'Tracciamento valigia', + 'admin.bagTracking.subtitle': 'Abilita il peso e l\'assegnazione della valigia per gli elementi della lista valigia', + 'admin.tabs.config': 'Configurazione', + 'admin.tabs.templates': 'Modelli lista valigia', + 'admin.packingTemplates.title': 'Modelli lista valigia', + 'admin.packingTemplates.subtitle': 'Crea liste valigia riutilizzabili per i tuoi viaggi', + 'admin.packingTemplates.create': 'Nuovo modello', + 'admin.packingTemplates.namePlaceholder': 'Nome modello (es. Vacanza al mare)', + 'admin.packingTemplates.empty': 'Ancora nessun modello creato', + 'admin.packingTemplates.items': 'elementi', + 'admin.packingTemplates.categories': 'categorie', + 'admin.packingTemplates.itemName': 'Nome elemento', + 'admin.packingTemplates.itemCategory': 'Categoria', + 'admin.packingTemplates.categoryName': 'Nome categoria (es. Abbigliamento)', + 'admin.packingTemplates.addCategory': 'Aggiungi categoria', + 'admin.packingTemplates.created': 'Modello creato', + 'admin.packingTemplates.deleted': 'Modello eliminato', + 'admin.packingTemplates.loadError': 'Impossibile caricare i modelli', + 'admin.packingTemplates.createError': 'Impossibile creare il modello', + 'admin.packingTemplates.deleteError': 'Impossibile eliminare il modello', + 'admin.packingTemplates.saveError': 'Impossibile salvare', + + // Addons + 'admin.tabs.addons': 'Moduli', + 'admin.addons.title': 'Moduli', + 'admin.addons.subtitle': 'Abilita o disabilita le funzionalità per personalizzare la tua esperienza TREK.', + 'admin.addons.catalog.memories.name': 'Ricordi', + 'admin.addons.catalog.memories.description': 'Album fotografici condivisi per ogni viaggio', + 'admin.addons.catalog.packing.name': 'Lista valigia', + 'admin.addons.catalog.packing.description': 'Checklist per preparare la valigia per ogni viaggio', + 'admin.addons.catalog.budget.name': 'Budget', + 'admin.addons.catalog.budget.description': 'Tieni traccia delle spese e pianifica il budget del tuo viaggio', + 'admin.addons.catalog.documents.name': 'Documenti', + 'admin.addons.catalog.documents.description': 'Archivia e gestisci i documenti di viaggio', + 'admin.addons.catalog.vacay.name': 'Ferie', + 'admin.addons.catalog.vacay.description': 'Pianificatore personale delle ferie con vista calendario', + 'admin.addons.catalog.atlas.name': 'Atlante', + 'admin.addons.catalog.atlas.description': 'Mappa del mondo con paesi visitati e statistiche di viaggio', + 'admin.addons.catalog.collab.name': 'Collaborazione', + 'admin.addons.catalog.collab.description': 'Note, sondaggi e chat in tempo reale per la pianificazione del viaggio', + 'admin.addons.catalog.memories.name': 'Foto (Immich)', + 'admin.addons.catalog.memories.description': 'Condividi le foto del viaggio tramite la tua istanza Immich', + 'admin.addons.subtitleBefore': 'Abilita o disabilita le funzionalità per personalizzare la tua ', + 'admin.addons.subtitleAfter': ' esperienza.', + 'admin.addons.enabled': 'Abilitato', + 'admin.addons.disabled': 'Disabilitato', + 'admin.addons.type.trip': 'Viaggio', + 'admin.addons.type.global': 'Globale', + 'admin.addons.tripHint': 'Disponibile come scheda all\'interno di ciascun viaggio', + 'admin.addons.globalHint': 'Disponibile come sezione autonoma nella navigazione principale', + 'admin.addons.toast.updated': 'Modulo aggiornato', + 'admin.addons.toast.error': 'Impossibile aggiornare il modulo', + 'admin.addons.noAddons': 'Nessun modulo disponibile', + + // Weather info + 'admin.weather.title': 'Dati meteo', + 'admin.weather.badge': 'Dal 24 marzo 2026', + 'admin.weather.description': 'TREK utilizza Open-Meteo come fonte dei dati meteo. Open-Meteo è un servizio meteo gratuito e open-source — non è richiesta alcuna chiave API.', + 'admin.weather.forecast': 'Previsioni a 16 giorni', + 'admin.weather.forecastDesc': 'In precedenza 5 giorni (OpenWeatherMap)', + 'admin.weather.climate': 'Dati climatici storici', + 'admin.weather.climateDesc': 'Medie degli ultimi 85 anni per i giorni oltre le previsioni a 16 giorni', + 'admin.weather.requests': '10.000 richieste / giorno', + 'admin.weather.requestsDesc': 'Gratis, nessuna chiave API richiesta', + 'admin.weather.locationHint': 'Il meteo si basa sul primo luogo con coordinate di ogni giorno. Se a un giorno non è assegnato alcun luogo, viene utilizzato come riferimento un qualsiasi luogo dell\'elenco.', + + // GitHub + 'admin.tabs.github': 'GitHub', + 'admin.github.title': 'Cronologia rilasci', + 'admin.github.subtitle': 'Ultimi aggiornamenti da {repo}', + 'admin.github.latest': 'Ultimo', + 'admin.github.prerelease': 'Pre-release', + 'admin.github.showDetails': 'Mostra dettagli', + 'admin.github.hideDetails': 'Nascondi dettagli', + 'admin.github.loadMore': 'Carica altro', + 'admin.github.loading': 'Caricamento...', + 'admin.github.error': 'Impossibile caricare i rilasci', + 'admin.github.by': 'da', + 'admin.github.support': 'Mi aiuta a continuare a sviluppare TREK', + + 'admin.update.available': 'Aggiornamento disponibile', + 'admin.update.text': 'TREK {version} è disponibile. Stai eseguendo {current}.', + 'admin.update.button': 'Vedi su GitHub', + 'admin.update.install': 'Installa aggiornamento', + 'admin.update.confirmTitle': 'Installare l\'aggiornamento?', + 'admin.update.confirmText': 'TREK verrà aggiornato da {current} a {version}. Il server si riavvierà automaticamente in seguito.', + 'admin.update.dataInfo': 'Tutti i tuoi dati (viaggi, utenti, chiavi API, caricamenti, Ferie, Atlante, budget) saranno preservati.', + 'admin.update.warning': 'L\'app sarà temporaneamente non disponibile durante il riavvio.', + 'admin.update.confirm': 'Aggiorna ora', + 'admin.update.installing': 'Aggiornamento in corso…', + 'admin.update.success': 'Aggiornamento installato! Il server si sta riavviando…', + 'admin.update.failed': 'Aggiornamento non riuscito', + 'admin.update.backupHint': 'Ti consigliamo di creare un backup prima di aggiornare.', + 'admin.update.backupLink': 'Vai a Backup', + 'admin.update.howTo': 'Come aggiornare', + 'admin.update.dockerText': 'La tua istanza TREK è in esecuzione in Docker. Per aggiornare alla versione {version}, esegui i seguenti comandi sul tuo server:', + 'admin.update.reloadHint': 'Ricarica la pagina tra qualche secondo.', + + // Vacay addon + 'vacay.subtitle': 'Pianifica e gestisci i giorni di ferie', + 'vacay.settings': 'Impostazioni', + 'vacay.year': 'Anno', + 'vacay.addYear': 'Aggiungi anno', + 'vacay.removeYear': 'Rimuovi anno', + 'vacay.removeYearConfirm': 'Rimuovere {year}?', + 'vacay.removeYearHint': 'Tutte le voci delle ferie e le ferie aziendali di questo anno verranno eliminate in modo permanente.', + 'vacay.remove': 'Rimuovi', + 'vacay.persons': 'Persone', + 'vacay.noPersons': 'Nessuna persona aggiunta', + 'vacay.addPerson': 'Aggiungi persona', + 'vacay.editPerson': 'Modifica persona', + 'vacay.removePerson': 'Rimuovi persona', + 'vacay.removePersonConfirm': 'Rimuovere {name}?', + 'vacay.removePersonHint': 'Tutte le voci delle ferie per questa persona verranno eliminate in modo permanente.', + 'vacay.personName': 'Nome', + 'vacay.personNamePlaceholder': 'Inserisci nome', + 'vacay.color': 'Colore', + 'vacay.add': 'Aggiungi', + 'vacay.legend': 'Legenda', + 'vacay.publicHoliday': 'Festività pubblica', + 'vacay.companyHoliday': 'Ferie aziendali', + 'vacay.weekend': 'Weekend', + 'vacay.modeVacation': 'Ferie', + 'vacay.modeCompany': 'Ferie aziendali', + 'vacay.entitlement': 'Disponibilità', + 'vacay.entitlementDays': 'Giorni', + 'vacay.used': 'Usati', + 'vacay.remaining': 'Rimanenti', + 'vacay.carriedOver': 'dal {year}', + 'vacay.blockWeekends': 'Blocca weekend', + 'vacay.blockWeekendsHint': 'Impedisci le voci ferie nei giorni del weekend', + 'vacay.weekendDays': 'Giorni del weekend', + 'vacay.mon': 'Lun', + 'vacay.tue': 'Mar', + 'vacay.wed': 'Mer', + 'vacay.thu': 'Gio', + 'vacay.fri': 'Ven', + 'vacay.sat': 'Sab', + 'vacay.sun': 'Dom', + 'vacay.publicHolidays': 'Festività pubbliche', + 'vacay.publicHolidaysHint': 'Segna le festività pubbliche nel calendario', + 'vacay.selectCountry': 'Seleziona paese', + 'vacay.selectRegion': 'Seleziona regione (opzionale)', + 'vacay.addCalendar': 'Aggiungi calendario', + 'vacay.calendarLabel': 'Etichetta (opzionale)', + 'vacay.calendarColor': 'Colore', + 'vacay.noCalendars': 'Ancora nessun calendario delle festività aggiunto', + 'vacay.companyHolidays': 'Ferie aziendali', + 'vacay.companyHolidaysHint': 'Consenti di segnare giorni di ferie aziendali', + 'vacay.companyHolidaysNoDeduct': 'Le ferie aziendali non vengono conteggiate nei giorni di ferie.', + 'vacay.carryOver': 'Riporto', + 'vacay.carryOverHint': 'Riporta automaticamente i giorni di ferie rimanenti all\'anno successivo', + 'vacay.sharing': 'Condivisione', + 'vacay.sharingHint': 'Condividi il tuo piano ferie con altri utenti TREK', + 'vacay.owner': 'Proprietario', + 'vacay.shareEmailPlaceholder': 'Email dell\'utente TREK', + 'vacay.shareSuccess': 'Piano condiviso con successo', + 'vacay.shareError': 'Impossibile condividere il piano', + 'vacay.dissolve': 'Sciogli unione', + 'vacay.dissolveHint': 'Separa di nuovo i calendari. Le tue voci verranno mantenute.', + 'vacay.dissolveAction': 'Sciogli', + 'vacay.dissolved': 'Calendario separato', + 'vacay.fusedWith': 'Unito con', + 'vacay.you': 'tu', + 'vacay.noData': 'Nessun dato', + 'vacay.changeColor': 'Cambia colore', + 'vacay.inviteUser': 'Invita utente', + 'vacay.inviteHint': 'Invita un altro utente TREK a condividere un calendario ferie combinato.', + 'vacay.selectUser': 'Seleziona utente', + 'vacay.sendInvite': 'Invia invito', + 'vacay.inviteSent': 'Invito inviato', + 'vacay.inviteError': 'Impossibile inviare l\'invito', + 'vacay.pending': 'in attesa', + 'vacay.noUsersAvailable': 'Nessun utente disponibile', + 'vacay.accept': 'Accetta', + 'vacay.decline': 'Rifiuta', + 'vacay.acceptFusion': 'Accetta e unisci', + 'vacay.inviteTitle': 'Richiesta di unione', + 'vacay.inviteWantsToFuse': 'vuole condividere con te un calendario ferie.', + 'vacay.fuseInfo1': 'Entrambi vedrete tutte le voci ferie in un unico calendario condiviso.', + 'vacay.fuseInfo2': 'Entrambe le parti possono creare e modificare le voci reciproche.', + 'vacay.fuseInfo3': 'Entrambe le parti possono eliminare le voci e modificare le disponibilità ferie.', + 'vacay.fuseInfo4': 'Le impostazioni come festività pubbliche e ferie aziendali sono condivise.', + 'vacay.fuseInfo5': 'L\'unione può essere sciolta in qualsiasi momento da una delle due parti. Le tue voci verranno preservate.', + 'nav.myTrips': 'I miei viaggi', + + // Atlas addon + 'atlas.subtitle': 'La tua impronta di viaggio nel mondo', + 'atlas.countries': 'Paesi', + 'atlas.trips': 'Viaggi', + 'atlas.places': 'Luoghi', + 'atlas.unmark': 'Rimuovi', + 'atlas.confirmMark': 'Segnare questo paese come visitato?', + 'atlas.confirmUnmark': 'Rimuovere questo paese dalla tua lista dei visitati?', + 'atlas.markVisited': 'Segna come visitato', + 'atlas.markVisitedHint': 'Aggiungi questo paese alla tua lista dei visitati', + 'atlas.addToBucket': 'Aggiungi alla lista desideri', + 'atlas.addToBucketHint': 'Salvalo come luogo che vuoi visitare', + 'atlas.bucketWhen': 'Quando pensi di visitarlo?', + 'atlas.statsTab': 'Statistiche', + 'atlas.bucketTab': 'Lista desideri', + 'atlas.addBucket': 'Aggiungi alla lista desideri', + 'atlas.bucketNamePlaceholder': 'Luogo o destinazione...', + 'atlas.bucketNotesPlaceholder': 'Note (opzionale)', + 'atlas.bucketEmpty': 'La tua lista desideri è vuota', + 'atlas.bucketEmptyHint': 'Aggiungi luoghi che sogni di visitare', + 'atlas.days': 'Giorni', + 'atlas.visitedCountries': 'Paesi visitati', + 'atlas.cities': 'Città', + 'atlas.noData': 'Ancora nessun dato di viaggio', + 'atlas.noDataHint': 'Crea un viaggio e aggiungi luoghi per vedere la tua mappa del mondo', + 'atlas.lastTrip': 'Ultimo viaggio', + 'atlas.nextTrip': 'Prossimo viaggio', + 'atlas.daysLeft': 'giorni rimasti', + 'atlas.streak': 'Serie', + 'atlas.year': 'anno', + 'atlas.years': 'anni', + 'atlas.yearInRow': 'anno consecutivo', + 'atlas.yearsInRow': 'anni consecutivi', + 'atlas.tripIn': 'viaggio in', + 'atlas.tripsIn': 'viaggi in', + 'atlas.since': 'dal', + 'atlas.europe': 'Europa', + 'atlas.asia': 'Asia', + 'atlas.northAmerica': 'Nord America', + 'atlas.southAmerica': 'Sud America', + 'atlas.africa': 'Africa', + 'atlas.oceania': 'Oceania', + 'atlas.other': 'Altro', + 'atlas.firstVisit': 'Primo viaggio', + 'atlas.lastVisitLabel': 'Ultimo viaggio', + 'atlas.tripSingular': 'Viaggio', + 'atlas.tripPlural': 'Viaggi', + 'atlas.placeVisited': 'Luogo visitato', + 'atlas.placesVisited': 'Luoghi visitati', + + // Trip Planner + 'trip.tabs.plan': 'Programma', + 'trip.tabs.reservations': 'Prenotazioni', + 'trip.tabs.reservationsShort': 'Pren.', + 'trip.tabs.packing': 'Lista valigia', + 'trip.tabs.packingShort': 'Valigia', + 'trip.tabs.budget': 'Budget', + 'trip.tabs.files': 'File', + 'trip.loading': 'Caricamento viaggio...', + 'trip.mobilePlan': 'Programma', + 'trip.mobilePlaces': 'Luoghi', + 'trip.toast.placeUpdated': 'Luogo aggiornato', + 'trip.toast.placeAdded': 'Luogo aggiunto', + 'trip.toast.placeDeleted': 'Luogo eliminato', + 'trip.toast.selectDay': 'Seleziona prima un giorno', + 'trip.toast.assignedToDay': 'Luogo assegnato al giorno', + 'trip.toast.reorderError': 'Impossibile riordinare', + 'trip.toast.reservationUpdated': 'Prenotazione aggiornata', + 'trip.toast.reservationAdded': 'Prenotazione aggiunta', + 'trip.toast.deleted': 'Eliminato', + 'trip.confirm.deletePlace': 'Sei sicuro di voler eliminare questo luogo?', + + // Day Plan Sidebar + 'dayplan.emptyDay': 'Nessun luogo programmato per questo giorno', + 'dayplan.addNote': 'Aggiungi nota', + 'dayplan.editNote': 'Modifica nota', + 'dayplan.noteAdd': 'Aggiungi nota', + 'dayplan.noteEdit': 'Modifica nota', + 'dayplan.noteTitle': 'Nota', + 'dayplan.noteSubtitle': 'Nota giornaliera', + 'dayplan.totalCost': 'Costo totale', + 'dayplan.days': 'Giorni', + 'dayplan.dayN': 'Giorno {n}', + 'dayplan.calculating': 'Calcolo in corso...', + 'dayplan.route': 'Percorso', + 'dayplan.optimize': 'Ottimizza', + 'dayplan.optimized': 'Percorso ottimizzato', + 'dayplan.routeError': 'Impossibile calcolare il percorso', + 'dayplan.toast.needTwoPlaces': 'Servono almeno due luoghi per l\'ottimizzazione del percorso', + 'dayplan.toast.routeOptimized': 'Percorso ottimizzato', + 'dayplan.toast.noGeoPlaces': 'Nessun luogo con coordinate trovato per il calcolo del percorso', + 'dayplan.confirmed': 'Confermata', + 'dayplan.pendingRes': 'In attesa', + 'dayplan.pdf': 'PDF', + 'dayplan.pdfTooltip': 'Esporta il programma del giorno come PDF', + 'dayplan.pdfError': 'Impossibile esportare il PDF', + + // Places Sidebar + 'places.addPlace': 'Aggiungi Luogo/Attività', + 'places.assignToDay': 'A quale giorno aggiungere?', + 'places.all': 'Tutti', + 'places.unplanned': 'Non pianificati', + 'places.search': 'Cerca luoghi...', + 'places.allCategories': 'Tutte le categorie', + 'places.count': '{count} luoghi', + 'places.countSingular': '1 luogo', + 'places.allPlanned': 'Tutti i luoghi sono programmati', + 'places.noneFound': 'Nessun luogo trovato', + 'places.editPlace': 'Modifica luogo', + 'places.formName': 'Nome', + 'places.formNamePlaceholder': 'es. Torre Eiffel', + 'places.formDescription': 'Descrizione', + 'places.formDescriptionPlaceholder': 'Breve descrizione...', + 'places.formAddress': 'Indirizzo', + 'places.formAddressPlaceholder': 'Via, Città, Paese', + 'places.formLat': 'Latitudine (es. 48.8566)', + 'places.formLng': 'Longitudine (es. 2.3522)', + 'places.formCategory': 'Categoria', + 'places.noCategory': 'Nessuna categoria', + 'places.categoryNamePlaceholder': 'Nome categoria', + 'places.formTime': 'Ora', + 'places.startTime': 'Inizio', + 'places.endTime': 'Fine', + 'places.endTimeBeforeStart': 'L\'ora di fine è precedente all\'ora di inizio', + 'places.timeCollision': 'Sovrapposizione di orario con:', + 'places.formWebsite': 'Sito web', + 'places.formNotesPlaceholder': 'Note personali...', + 'places.formReservation': 'Prenotazione', + 'places.reservationNotesPlaceholder': 'Note della prenotazione, numero di conferma...', + 'places.mapsSearchPlaceholder': 'Cerca luoghi...', + 'places.mapsSearchError': 'Impossibile cercare i luoghi.', + 'places.osmHint': 'Uso della ricerca OpenStreetMap (senza foto, orari di apertura o valutazioni). Aggiungi una chiave API Google nelle impostazioni per i dettagli completi.', + 'places.osmActive': 'Ricerca tramite OpenStreetMap (senza foto, valutazioni o orari di apertura). Aggiungi una chiave API Google nelle Impostazioni per dati avanzati.', + 'places.categoryCreateError': 'Impossibile creare la categoria', + 'places.nameRequired': 'Inserisci un nome', + 'places.saveError': 'Impossibile salvare', + // Place Inspector + 'inspector.opened': 'Aperto', + 'inspector.closed': 'Chiuso', + 'inspector.openingHours': 'Orari di apertura', + 'inspector.showHours': 'Mostra orari di apertura', + 'inspector.files': 'File', + 'inspector.filesCount': '{count} file', + 'inspector.removeFromDay': 'Rimuovi dal giorno', + 'inspector.addToDay': 'Aggiungi al giorno', + 'inspector.confirmedRes': 'Prenotazione confermata', + 'inspector.pendingRes': 'Prenotazione in attesa', + 'inspector.google': 'Apri in Google Maps', + 'inspector.website': 'Apri sito web', + 'inspector.addRes': 'Prenotazione', + 'inspector.editRes': 'Modifica prenotazione', + 'inspector.participants': 'Partecipanti', + + // Reservations + 'reservations.title': 'Prenotazioni', + 'reservations.empty': 'Ancora nessuna prenotazione', + 'reservations.emptyHint': 'Aggiungi prenotazioni per voli, alloggi e altro', + 'reservations.add': 'Aggiungi prenotazione', + 'reservations.addManual': 'Prenotazione manuale', + 'reservations.placeHint': 'Suggerimento: è meglio creare le prenotazioni direttamente da un luogo per collegarle al tuo programma del giorno.', + 'reservations.confirmed': 'Confermata', + 'reservations.pending': 'In attesa', + 'reservations.summary': '{confirmed} confermate, {pending} in attesa', + 'reservations.fromPlan': 'Dal programma', + 'reservations.showFiles': 'Mostra file', + 'reservations.editTitle': 'Modifica prenotazione', + 'reservations.status': 'Stato', + 'reservations.datetime': 'Data e ora', + 'reservations.startTime': 'Ora di inizio', + 'reservations.endTime': 'Ora di fine', + 'reservations.date': 'Data', + 'reservations.time': 'Ora', + 'reservations.timeAlt': 'Ora (alternativa, es. 19:30)', + 'reservations.notes': 'Note', + 'reservations.notesPlaceholder': 'Note aggiuntive...', + 'reservations.meta.airline': 'Compagnia aerea', + 'reservations.meta.flightNumber': 'N. volo', + 'reservations.meta.from': 'Da', + 'reservations.meta.to': 'A', + 'reservations.meta.trainNumber': 'N. treno', + 'reservations.meta.platform': 'Binario', + 'reservations.meta.seat': 'Posto', + 'reservations.meta.checkIn': 'Check-in', + 'reservations.meta.checkOut': 'Check-out', + 'reservations.meta.linkAccommodation': 'Alloggio', + 'reservations.meta.pickAccommodation': 'Collega a un alloggio', + 'reservations.meta.noAccommodation': 'Nessuno', + 'reservations.meta.hotelPlace': 'Alloggio', + 'reservations.meta.pickHotel': 'Seleziona alloggio', + 'reservations.meta.fromDay': 'Da', + 'reservations.meta.toDay': 'A', + 'reservations.meta.selectDay': 'Seleziona giorno', + 'reservations.type.flight': 'Volo', + 'reservations.type.hotel': 'Alloggio', + 'reservations.type.restaurant': 'Ristorante', + 'reservations.type.train': 'Treno', + 'reservations.type.car': 'Auto a noleggio', + 'reservations.type.cruise': 'Crociera', + 'reservations.type.event': 'Evento', + 'reservations.type.tour': 'Tour', + 'reservations.type.other': 'Altro', + 'reservations.confirm.delete': 'Sei sicuro di voler eliminare la prenotazione "{name}"?', + 'reservations.toast.updated': 'Prenotazione aggiornata', + 'reservations.toast.removed': 'Prenotazione eliminata', + 'reservations.toast.fileUploaded': 'File caricato', + 'reservations.toast.uploadError': 'Impossibile caricare', + 'reservations.newTitle': 'Nuova prenotazione', + 'reservations.bookingType': 'Tipo di prenotazione', + 'reservations.titleLabel': 'Titolo', + 'reservations.titlePlaceholder': 'es. Lufthansa LH123, Hotel Adlon, ...', + 'reservations.locationAddress': 'Posizione / Indirizzo', + 'reservations.locationPlaceholder': 'Indirizzo, aeroporto, hotel...', + 'reservations.confirmationCode': 'Codice prenotazione', + 'reservations.confirmationPlaceholder': 'es. ABC12345', + 'reservations.day': 'Giorno', + 'reservations.noDay': 'Nessun giorno', + 'reservations.place': 'Luogo', + 'reservations.noPlace': 'Nessun luogo', + 'reservations.pendingSave': 'verrà salvato…', + 'reservations.uploading': 'Caricamento...', + 'reservations.attachFile': 'Allega file', + 'reservations.linkExisting': 'Collega file esistente', + 'reservations.toast.saveError': 'Impossibile salvare', + 'reservations.toast.updateError': 'Impossibile aggiornare', + 'reservations.toast.deleteError': 'Impossibile eliminare', + 'reservations.confirm.remove': 'Rimuovere la prenotazione per "{name}"?', + 'reservations.linkAssignment': 'Collega all\'assegnazione del giorno', + 'reservations.pickAssignment': 'Seleziona un\'assegnazione dal tuo programma...', + 'reservations.noAssignment': 'Nessun collegamento (autonomo)', + + // Budget + 'budget.title': 'Budget', + 'budget.emptyTitle': 'Ancora nessun budget creato', + 'budget.emptyText': 'Crea categorie e voci per pianificare il budget del tuo viaggio', + 'budget.emptyPlaceholder': 'Inserisci nome categoria...', + 'budget.createCategory': 'Crea categoria', + 'budget.category': 'Categoria', + 'budget.categoryName': 'Nome categoria', + 'budget.table.name': 'Nome', + 'budget.table.total': 'Totale', + 'budget.table.persons': 'Persone', + 'budget.table.days': 'Giorni', + 'budget.table.perPerson': 'Per persona', + 'budget.table.perDay': 'Per giorno', + 'budget.table.perPersonDay': 'P. p / gio.', + 'budget.table.note': 'Nota', + 'budget.newEntry': 'Nuova voce', + 'budget.defaultEntry': 'Nuova voce', + 'budget.defaultCategory': 'Nuova categoria', + 'budget.total': 'Totale', + 'budget.totalBudget': 'Budget totale', + 'budget.byCategory': 'Per categoria', + 'budget.editTooltip': 'Clicca per modificare', + 'budget.confirm.deleteCategory': 'Sei sicuro di voler eliminare la categoria "{name}" con {count} voci?', + 'budget.deleteCategory': 'Elimina categoria', + 'budget.perPerson': 'Per persona', + 'budget.paid': 'Pagato', + 'budget.open': 'Aperto', + 'budget.noMembers': 'Nessun membro assegnato', + + // Files + 'files.title': 'File', + 'files.count': '{count} file', + 'files.countSingular': '1 file', + 'files.uploaded': '{count} caricati', + 'files.uploadError': 'Caricamento non riuscito', + 'files.dropzone': 'Trascina qui i file', + 'files.dropzoneHint': 'oppure clicca per sfogliare', + 'files.allowedTypes': 'Immagini, PDF, DOC, DOCX, XLS, XLSX, TXT, CSV · Max 50 MB', + 'files.uploading': 'Caricamento...', + 'files.filterAll': 'Tutti', + 'files.filterPdf': 'PDF', + 'files.filterImages': 'Immagini', + 'files.filterDocs': 'Documenti', + 'files.filterCollab': 'Note Collaborazione', + 'files.sourceCollab': 'Da Note Collaborazione', + 'files.empty': 'Ancora nessun file', + 'files.emptyHint': 'Carica file per allegarli al tuo viaggio', + 'files.openTab': 'Apri in una nuova scheda', + 'files.confirm.delete': 'Sei sicuro di voler eliminare questo file?', + 'files.toast.deleted': 'File eliminato', + 'files.toast.deleteError': 'Impossibile eliminare il file', + 'files.sourcePlan': 'Programma giornaliero', + 'files.sourceBooking': 'Prenotazione', + 'files.attach': 'Allega', + 'files.pasteHint': 'Puoi anche incollare immagini dagli appunti (Ctrl+V)', + 'files.trash': 'Cestino', + 'files.trashEmpty': 'Il cestino è vuoto', + 'files.emptyTrash': 'Svuota cestino', + 'files.restore': 'Ripristina', + 'files.star': 'Aggiungi ai preferiti', + 'files.unstar': 'Rimuovi dai preferiti', + 'files.assign': 'Assegna', + 'files.assignTitle': 'Assegna file', + 'files.assignPlace': 'Luogo', + 'files.assignBooking': 'Prenotazione', + 'files.unassigned': 'Non assegnato', + 'files.unlink': 'Rimuovi collegamento', + 'files.toast.trashed': 'Spostato nel cestino', + 'files.toast.restored': 'File ripristinato', + 'files.toast.trashEmptied': 'Cestino svuotato', + 'files.toast.assigned': 'File assegnato', + 'files.toast.assignError': 'Assegnazione fallita', + 'files.toast.restoreError': 'Ripristino fallito', + 'files.confirm.permanentDelete': 'Eliminare questo file in modo permanente? Questa operazione non può essere annullata.', + 'files.confirm.emptyTrash': 'Eliminare in modo permanente tutti i file nel cestino? Questa operazione non può essere annullata.', + 'files.noteLabel': 'Nota', + 'files.notePlaceholder': 'Aggiungi una nota...', + + // Packing + 'packing.title': 'Lista valigia', + 'packing.empty': 'La lista valigia è vuota', + 'packing.progress': '{packed} di {total} in valigia ({percent}%)', + 'packing.clearChecked': 'Rimuovi {count} spuntati', + 'packing.clearCheckedShort': 'Rimuovi {count}', + 'packing.suggestions': 'Suggerimenti', + 'packing.suggestionsTitle': 'Aggiungi suggerimenti', + 'packing.allSuggested': 'Tutti i suggerimenti aggiunti', + 'packing.allPacked': 'Tutto in valigia!', + 'packing.addPlaceholder': 'Aggiungi nuovo elemento...', + 'packing.categoryPlaceholder': 'Categoria...', + 'packing.filterAll': 'Tutti', + 'packing.filterOpen': 'Da fare', + 'packing.filterDone': 'Fatto', + 'packing.emptyTitle': 'La lista valigia è vuota', + 'packing.emptyHint': 'Aggiungi elementi o usa i suggerimenti', + 'packing.emptyFiltered': 'Nessun elemento corrisponde a questo filtro', + 'packing.menuRename': 'Rinomina', + 'packing.menuCheckAll': 'Seleziona tutti', + 'packing.menuUncheckAll': 'Deseleziona tutti', + 'packing.menuDeleteCat': 'Elimina categoria', + 'packing.assignUser': 'Assegna utente', + 'packing.noMembers': 'Nessun membro del viaggio', + 'packing.addItem': 'Aggiungi elemento', + 'packing.addItemPlaceholder': 'Nome elemento...', + 'packing.addCategory': 'Aggiungi categoria', + 'packing.newCategoryPlaceholder': 'Nome categoria (es. Abbigliamento)', + 'packing.applyTemplate': 'Applica modello', + 'packing.template': 'Modello', + 'packing.templateApplied': '{count} elementi aggiunti dal modello', + 'packing.templateError': 'Impossibile applicare il modello', + 'packing.bags': 'Valigie', + 'packing.noBag': 'Non assegnato', + 'packing.totalWeight': 'Peso totale', + 'packing.bagName': 'Nome valigia...', + 'packing.addBag': 'Aggiungi valigia', + 'packing.changeCategory': 'Cambia categoria', + 'packing.confirm.clearChecked': 'Sei sicuro di voler rimuovere {count} elementi spuntati?', + 'packing.confirm.deleteCat': 'Sei sicuro di voler eliminare la categoria "{name}" con {count} elementi?', + 'packing.defaultCategory': 'Altro', + 'packing.toast.saveError': 'Impossibile salvare', + 'packing.toast.deleteError': 'Impossibile eliminare', + 'packing.toast.renameError': 'Impossibile rinominare', + 'packing.toast.addError': 'Impossibile aggiungere', + + // Packing suggestions + 'packing.suggestions.items': [ + { name: 'Passaporto', category: 'Documenti' }, + { name: 'Carta d\'identità', category: 'Documenti' }, + { name: 'Assicurazione di viaggio', category: 'Documenti' }, + { name: 'Biglietti aerei', category: 'Documenti' }, + { name: 'Carta di credito', category: 'Finanze' }, + { name: 'Contanti', category: 'Finanze' }, + { name: 'Visto', category: 'Documenti' }, + { name: 'Magliette', category: 'Abbigliamento' }, + { name: 'Pantaloni', category: 'Abbigliamento' }, + { name: 'Intimo', category: 'Abbigliamento' }, + { name: 'Calzini', category: 'Abbigliamento' }, + { name: 'Giacca', category: 'Abbigliamento' }, + { name: 'Pigiama', category: 'Abbigliamento' }, + { name: 'Costume da bagno', category: 'Abbigliamento' }, + { name: 'Giacca a vento', category: 'Abbigliamento' }, + { name: 'Scarpe comode', category: 'Abbigliamento' }, + { name: 'Spazzolino da denti', category: 'Igiene personale' }, + { name: 'Dentifricio', category: 'Igiene personale' }, + { name: 'Shampoo', category: 'Igiene personale' }, + { name: 'Deodorante', category: 'Igiene personale' }, + { name: 'Crema solare', category: 'Igiene personale' }, + { name: 'Rasoio', category: 'Igiene personale' }, + { name: 'Caricabatterie', category: 'Elettronica' }, + { name: 'Power bank', category: 'Elettronica' }, + { name: 'Cuffie', category: 'Elettronica' }, + { name: 'Adattatore da viaggio', category: 'Elettronica' }, + { name: 'Macchina fotografica', category: 'Elettronica' }, + { name: 'Antidolorifici', category: 'Salute' }, + { name: 'Cerotti', category: 'Salute' }, + { name: 'Disinfettante', category: 'Salute' }, + ], + + // Members / Sharing + 'members.shareTrip': 'Condividi viaggio', + 'members.inviteUser': 'Invita utente', + 'members.selectUser': 'Seleziona utente...', + 'members.invite': 'Invita', + 'members.allHaveAccess': 'Tutti gli utenti hanno già accesso.', + 'members.access': 'Accesso', + 'members.person': 'persona', + 'members.persons': 'persone', + 'members.you': 'tu', + 'members.owner': 'Proprietario', + 'members.leaveTrip': 'Abbandona viaggio', + 'members.removeAccess': 'Rimuovi accesso', + 'members.confirmLeave': 'Abbandonare il viaggio? Perderai l\'accesso.', + 'members.confirmRemove': 'Rimuovere l\'accesso per questo utente?', + 'members.loadError': 'Impossibile caricare i membri', + 'members.added': 'aggiunto', + 'members.addError': 'Impossibile aggiungere', + 'members.removed': 'Membro rimosso', + 'members.removeError': 'Impossibile rimuovere', + + // Categories (Admin) + 'categories.title': 'Categorie', + 'categories.subtitle': 'Gestisci le categorie per i luoghi', + 'categories.new': 'Nuova categoria', + 'categories.empty': 'Ancora nessuna categoria', + 'categories.namePlaceholder': 'Nome categoria', + 'categories.icon': 'Icona', + 'categories.color': 'Colore', + 'categories.customColor': 'Scegli colore personalizzato', + 'categories.preview': 'Anteprima', + 'categories.defaultName': 'Categoria', + 'categories.update': 'Aggiorna', + 'categories.create': 'Crea', + 'categories.confirm.delete': 'Eliminare la categoria? I luoghi in questa categoria non verranno eliminati.', + 'categories.toast.loadError': 'Impossibile caricare le categorie', + 'categories.toast.nameRequired': 'Inserisci un nome', + 'categories.toast.updated': 'Categoria aggiornata', + 'categories.toast.created': 'Categoria creata', + 'categories.toast.saveError': 'Impossibile salvare', + 'categories.toast.deleted': 'Categoria eliminata', + 'categories.toast.deleteError': 'Impossibile eliminare', + + // Backup (Admin) + 'backup.title': 'Backup dati', + 'backup.subtitle': 'Database e tutti i file caricati', + 'backup.refresh': 'Aggiorna', + 'backup.upload': 'Carica backup', + 'backup.uploading': 'Caricamento...', + 'backup.create': 'Crea backup', + 'backup.creating': 'Creazione...', + 'backup.empty': 'Ancora nessun backup', + 'backup.createFirst': 'Crea primo backup', + 'backup.download': 'Scarica', + 'backup.restore': 'Ripristina', + 'backup.confirm.restore': 'Ripristinare il backup "{name}"?\n\nTutti i dati attuali verranno sostituiti con il backup.', + 'backup.confirm.uploadRestore': 'Scaricare e ripristinare il file di backup "{name}"?\n\nTutti i dati attuali verranno sovrascritti.', + 'backup.confirm.delete': 'Eliminare il backup "{name}"?', + 'backup.toast.loadError': 'Impossibile caricare i backup', + 'backup.toast.created': 'Backup creato con successo', + 'backup.toast.createError': 'Impossibile creare il backup', + 'backup.toast.restored': 'Backup ripristinato. La pagina verrà ricaricata...', + 'backup.toast.restoreError': 'Impossibile ripristinare', + 'backup.toast.uploadError': 'Impossibile caricare', + 'backup.toast.deleted': 'Backup eliminato', + 'backup.toast.deleteError': 'Impossibile eliminare', + 'backup.toast.downloadError': 'Download non riuscito', + 'backup.toast.settingsSaved': 'Impostazioni auto-backup salvate', + 'backup.toast.settingsError': 'Impossibile salvare le impostazioni', + 'backup.auto.title': 'Auto-Backup', + 'backup.auto.subtitle': 'Backup automatico pianificato', + 'backup.auto.enable': 'Abilita auto-backup', + 'backup.auto.enableHint': 'I backup verranno creati automaticamente in base alla pianificazione scelta', + 'backup.auto.interval': 'Intervallo', + 'backup.auto.keepLabel': 'Elimina i vecchi backup dopo', + 'backup.interval.hourly': 'Ogni ora', + 'backup.interval.daily': 'Giornaliero', + 'backup.interval.weekly': 'Settimanale', + 'backup.interval.monthly': 'Mensile', + 'backup.keep.1day': '1 giorno', + 'backup.keep.3days': '3 giorni', + 'backup.keep.7days': '7 giorni', + 'backup.keep.14days': '14 giorni', + 'backup.keep.30days': '30 giorni', + 'backup.keep.forever': 'Conserva per sempre', + + // Photos + 'photos.allDays': 'Tutti i giorni', + 'photos.noPhotos': 'Ancora nessuna foto', + 'photos.uploadHint': 'Carica le foto del tuo viaggio', + 'photos.clickToSelect': 'o clicca per selezionare', + 'photos.linkPlace': 'Collega luogo', + 'photos.noPlace': 'Nessun luogo', + 'photos.uploadN': 'Caricamento di {n} foto', + + // Backup restore modal + 'backup.restoreConfirmTitle': 'Ripristinare il backup?', + 'backup.restoreWarning': 'Tutti i dati attuali (viaggi, luoghi, utenti, caricamenti) verranno sostituiti in modo permanente dal backup. Questa azione non può essere annullata.', + 'backup.restoreTip': 'Suggerimento: Crea un backup dello stato attuale prima di ripristinare.', + 'backup.restoreConfirm': 'Sì, ripristina', + + // PDF + 'pdf.travelPlan': 'Programma di viaggio', + 'pdf.planned': 'Programmato', + 'pdf.costLabel': 'Costo EUR', + 'pdf.preview': 'Anteprima PDF', + 'pdf.saveAsPdf': 'Salva come PDF', + + // Planner + 'planner.places': 'Luoghi', + 'planner.bookings': 'Prenotazioni', + 'planner.packingList': 'Lista valigia', + 'planner.documents': 'Documenti', + 'planner.dayPlan': 'Programma giornaliero', + 'planner.reservations': 'Prenotazioni', + 'planner.minTwoPlaces': 'Servono almeno 2 luoghi con coordinate', + 'planner.noGeoPlaces': 'Nessun luogo con coordinate disponibile', + 'planner.routeCalculated': 'Percorso calcolato', + 'planner.routeCalcFailed': 'Il percorso non è stato calcolato', + 'planner.routeError': 'Errore nel calcolo del percorso', + 'planner.routeOptimized': 'Percorso ottimizzato', + 'planner.reservationUpdated': 'Prenotazione aggiornata', + 'planner.reservationAdded': 'Prenotazione aggiunta', + 'planner.confirmDeleteReservation': 'Eliminare la prenotazione?', + 'planner.reservationDeleted': 'Prenotazione eliminata', + 'planner.days': 'Giorni', + 'planner.allPlaces': 'Tutti i luoghi', + 'planner.totalPlaces': '{n} luoghi in totale', + 'planner.noDaysPlanned': 'Nessun giorno ancora programmato', + 'planner.editTrip': 'Modifica viaggio \u2192', + 'planner.placeOne': '1 luogo', + 'planner.placeN': '{n} luoghi', + 'planner.addNote': 'Aggiungi nota', + 'planner.noEntries': 'Nessuna voce per questo giorno', + 'planner.addPlace': 'Aggiungi luogo/attività', + 'planner.addPlaceShort': '+ Aggiungi luogo/attività', + 'planner.resPending': 'Prenotazione in attesa \u00B7 ', + 'planner.resConfirmed': 'Prenotazione confermata \u00B7 ', + 'planner.notePlaceholder': 'Nota\u2026', + 'planner.noteTimePlaceholder': 'Ora (opzionale)', + 'planner.noteExamplePlaceholder': 'es. S3 alle 14:30 dalla stazione centrale, traghetto dal molo 7, pausa pranzo\u2026', + 'planner.totalCost': 'Costo totale', + 'planner.searchPlaces': 'Cerca luoghi\u2026', + 'planner.allCategories': 'Tutte le categorie', + 'planner.noPlacesFound': 'Nessun luogo trovato', + 'planner.addFirstPlace': 'Aggiungi primo luogo', + 'planner.noReservations': 'Nessuna prenotazione', + 'planner.addFirstReservation': 'Aggiungi prima prenotazione', + 'planner.new': 'Nuovo', + 'planner.addToDay': '+ Giorno', + 'planner.calculating': 'Calcolo in corso\u2026', + 'planner.route': 'Percorso', + 'planner.optimize': 'Ottimizza', + 'planner.openGoogleMaps': 'Apri in Google Maps', + 'planner.selectDayHint': 'Seleziona un giorno dall\'elenco a sinistra per vedere il programma', + 'planner.noPlacesForDay': 'Ancora nessun luogo per questo giorno', + 'planner.addPlacesLink': 'Aggiungi luoghi \u2192', + 'planner.minTotal': 'min. totali', + 'planner.noReservation': 'Nessuna prenotazione', + 'planner.removeFromDay': 'Rimuovi dal giorno', + 'planner.addToThisDay': 'Aggiungi al giorno', + 'planner.overview': 'Panoramica', + 'planner.noDays': 'Ancora nessun giorno', + 'planner.editTripToAddDays': 'Modifica viaggio per aggiungere giorni', + 'planner.dayCount': '{n} Giorni', + 'planner.clickToUnlock': 'Clicca per sbloccare', + 'planner.keepPosition': 'Mantieni la posizione durante l\'ottimizzazione del percorso', + 'planner.dayDetails': 'Dettagli del giorno', + 'planner.dayN': 'Giorno {n}', + + // Dashboard Stats + 'stats.countries': 'Paesi', + 'stats.cities': 'Città', + 'stats.trips': 'Viaggi', + 'stats.places': 'Luoghi', + 'stats.worldProgress': 'Progresso nel mondo', + 'stats.visited': 'visitati', + 'stats.remaining': 'rimanenti', + 'stats.visitedCountries': 'Paesi visitati', + + // Day Detail Panel + 'day.precipProb': 'Probabilità di pioggia', + 'day.precipitation': 'Precipitazioni', + 'day.wind': 'Vento', + 'day.sunrise': 'Alba', + 'day.sunset': 'Tramonto', + 'day.hourlyForecast': 'Previsione oraria', + 'day.climateHint': 'Medie storiche \u2014 previsioni reali disponibili entro 16 giorni da questa data.', + 'day.noWeather': 'Nessun dato meteo disponibile. Aggiungi un luogo con coordinate.', + 'day.overview': 'Panoramica giornaliera', + 'day.accommodation': 'Alloggio', + 'day.addAccommodation': 'Aggiungi alloggio', + 'day.hotelDayRange': 'Applica ai giorni', + 'day.noPlacesForHotel': 'Aggiungi prima i luoghi al tuo viaggio', + 'day.allDays': 'Tutti', + 'day.checkIn': 'Check-in', + 'day.checkOut': 'Check-out', + 'day.confirmation': 'Conferma', + 'day.editAccommodation': 'Modifica alloggio', + 'day.reservations': 'Prenotazioni', + + // Photos / Immich + 'memories.title': 'Foto', + 'memories.notConnected': 'Immich non connesso', + 'memories.notConnectedHint': 'Connetti la tua istanza Immich nelle Impostazioni per vedere qui le foto del tuo viaggio.', + 'memories.noDates': 'Aggiungi le date al tuo viaggio per caricare le foto.', + 'memories.noPhotos': 'Nessuna foto trovata', + 'memories.noPhotosHint': 'Nessuna foto trovata in Immich per l\'intervallo di date di questo viaggio.', + 'memories.photosFound': 'foto', + 'memories.fromOthers': 'da altri', + 'memories.sharePhotos': 'Condividi foto', + 'memories.sharing': 'Condivisione', + 'memories.reviewTitle': 'Rivedi le tue foto', + 'memories.reviewHint': 'Clicca sulle foto per escluderle dalla condivisione.', + 'memories.shareCount': 'Condividi {count} foto', + 'memories.immichUrl': 'URL Server Immich', + 'memories.immichApiKey': 'Chiave API', + 'memories.testConnection': 'Test connessione', + 'memories.connected': 'Connesso', + 'memories.disconnected': 'Non connesso', + 'memories.connectionSuccess': 'Connesso a Immich', + 'memories.connectionError': 'Impossibile connettersi a Immich', + 'memories.saved': 'Impostazioni Immich salvate', + 'memories.addPhotos': 'Aggiungi foto', + 'memories.selectPhotos': 'Seleziona foto da Immich', + 'memories.selectHint': 'Tocca le foto per selezionarle.', + 'memories.selected': 'selezionate', + 'memories.addSelected': 'Aggiungi {count} foto', + 'memories.alreadyAdded': 'Aggiunta', + 'memories.private': 'Privato', + 'memories.stopSharing': 'Interrompi condivisione', + 'memories.oldest': 'Prima le più vecchie', + 'memories.newest': 'Prima le più recenti', + 'memories.allLocations': 'Tutte le posizioni', + 'memories.tripDates': 'Date del viaggio', + 'memories.allPhotos': 'Tutte le foto', + 'memories.confirmShareTitle': 'Condividere con i membri del viaggio?', + 'memories.confirmShareHint': '{count} foto saranno visibili a tutti i membri di questo viaggio. Potrai rendere private le singole foto in seguito.', + 'memories.confirmShareButton': 'Condividi foto', + + // Collab Addon + 'collab.tabs.chat': 'Chat', + 'collab.tabs.notes': 'Note', + 'collab.tabs.polls': 'Sondaggi', + 'collab.whatsNext.title': "Cosa c'è dopo", + 'collab.whatsNext.today': 'Oggi', + 'collab.whatsNext.tomorrow': 'Domani', + 'collab.whatsNext.empty': 'Nessuna attività imminente', + 'collab.whatsNext.until': 'a', + 'collab.whatsNext.emptyHint': 'Le attività con orari appariranno qui', + 'collab.chat.send': 'Invia', + 'collab.chat.placeholder': 'Scrivi un messaggio...', + 'collab.chat.empty': 'Inizia la conversazione', + 'collab.chat.emptyHint': 'I messaggi sono condivisi con tutti i membri del viaggio', + 'collab.chat.emptyDesc': 'Condividi idee, programmi e aggiornamenti con il tuo gruppo di viaggio', + 'collab.chat.today': 'Oggi', + 'collab.chat.yesterday': 'Ieri', + 'collab.chat.deletedMessage': 'ha eliminato un messaggio', + 'collab.chat.loadMore': 'Carica messaggi precedenti', + 'collab.chat.justNow': 'ora', + 'collab.chat.minutesAgo': '{n}m fa', + 'collab.chat.hoursAgo': '{n}h fa', + 'collab.notes.title': 'Note', + 'collab.notes.new': 'Nuova nota', + 'collab.notes.empty': 'Ancora nessuna nota', + 'collab.notes.emptyHint': 'Inizia a raccogliere idee e programmi', + 'collab.notes.all': 'Tutte', + 'collab.notes.titlePlaceholder': 'Titolo della nota', + 'collab.notes.contentPlaceholder': 'Scrivi qualcosa...', + 'collab.notes.categoryPlaceholder': 'Categoria', + 'collab.notes.newCategory': 'Nuova categoria...', + 'collab.notes.category': 'Categoria', + 'collab.notes.noCategory': 'Nessuna categoria', + 'collab.notes.color': 'Colore', + 'collab.notes.save': 'Salva', + 'collab.notes.cancel': 'Annulla', + 'collab.notes.edit': 'Modifica', + 'collab.notes.delete': 'Elimina', + 'collab.notes.pin': 'Fissa', + 'collab.notes.unpin': 'Rimuovi', + 'collab.notes.daysAgo': '{n}g fa', + 'collab.notes.categorySettings': 'Gestisci categorie', + 'collab.notes.create': 'Crea', + 'collab.notes.website': 'Sito web', + 'collab.notes.websitePlaceholder': 'https://...', + 'collab.notes.attachFiles': 'Allega file', + 'collab.notes.noCategoriesYet': 'Ancora nessuna categoria', + 'collab.notes.emptyDesc': 'Crea una nota per iniziare', + 'collab.polls.title': 'Sondaggi', + 'collab.polls.new': 'Nuovo sondaggio', + 'collab.polls.empty': 'Ancora nessun sondaggio', + 'collab.polls.emptyHint': 'Chiedi al gruppo e votate insieme', + 'collab.polls.question': 'Domanda', + 'collab.polls.questionPlaceholder': 'Cosa dovremmo fare?', + 'collab.polls.addOption': '+ Aggiungi opzione', + 'collab.polls.optionPlaceholder': 'Opzione {n}', + 'collab.polls.create': 'Crea sondaggio', + 'collab.polls.close': 'Chiudi', + 'collab.polls.closed': 'Chiuso', + 'collab.polls.votes': '{n} voti', + 'collab.polls.vote': '{n} voto', + 'collab.polls.multipleChoice': 'Scelta multipla', + 'collab.polls.multiChoice': 'Scelta multipla', + 'collab.polls.deadline': 'Scadenza', + 'collab.polls.option': 'Opzione', + 'collab.polls.options': 'Opzioni', + 'collab.polls.delete': 'Elimina', + 'collab.polls.closedSection': 'Chiusi', +} + +export default it \ No newline at end of file