mirror of
https://github.com/mauriceboe/TREK.git
synced 2026-08-14 08:26:39 +00:00
feat: Journey addon — travel journal with entries, photos, public sharing & PDF export
- 5-table schema (journeys, entries, photos, trips, contributors) with migrations 87-91 - Trip-to-Journey sync engine with skeleton entries and photo sync - Full CRUD API for journeys, entries, photos with Immich/Synology integration - Timeline, Gallery and Map views with entry editor (markdown, mood, weather, pros/cons) - Journey frontpage with hero card, stats and trip suggestions - Public share links with token-based access and photo proxy - PDF photo book export (Polarsteps-inspired) - Dashboard redesign: mobile greeting, live trip hero, quick actions, unified card design - BottomNav profile sheet with settings/admin/logout - DayPlan mobile inline place picker - TripFormModal members management - Vacay calendar trip date indicator dots - Fix contributor photo access (403) for journey Immich/Synology photos - Trip deletion cleanup for journey skeleton entries - i18n: 231 new keys across all 14 languages (native translations, no fallbacks)
This commit is contained in:
@@ -1687,6 +1687,239 @@ const it: Record<string, string | { name: string; category: string }[]> = {
|
||||
'notif.generic.text': 'Hai una nuova notifica',
|
||||
'notif.dev.unknown_event.title': '[DEV] Evento sconosciuto',
|
||||
'notif.dev.unknown_event.text': 'Il tipo di evento "{event}" non è registrato in EVENT_NOTIFICATION_CONFIG',
|
||||
|
||||
// Journey, Dashboard, Nav, DayPlan
|
||||
'common.justNow': 'proprio ora',
|
||||
'common.hoursAgo': '{count}h fa',
|
||||
'common.daysAgo': '{count}g fa',
|
||||
'budget.linkedToReservation': 'Collegato a una prenotazione — modifica il nome lì',
|
||||
'packing.saveAsTemplate': 'Salva come modello',
|
||||
'packing.templateName': 'Nome del modello',
|
||||
'packing.templateSaved': 'Lista bagagli salvata come modello',
|
||||
'memories.notConnectedMultipleHint': 'Collega uno di questi fornitori di foto: {provider_names} nelle Impostazioni per poter aggiungere foto a questo viaggio.',
|
||||
'memories.providerUrl': 'URL del server',
|
||||
'memories.providerApiKey': 'Chiave API',
|
||||
'memories.providerUsername': 'Nome utente',
|
||||
'memories.providerPassword': 'Password',
|
||||
'memories.saveError': 'Impossibile salvare le impostazioni di {provider_name}',
|
||||
'memories.selectAlbumMultiple': 'Seleziona album',
|
||||
'memories.selectPhotosMultiple': 'Seleziona foto',
|
||||
'journey.title': 'Diario di viaggio',
|
||||
'journey.subtitle': 'Segui i tuoi viaggi in tempo reale',
|
||||
'journey.new': 'Nuovo diario',
|
||||
'journey.create': 'Crea',
|
||||
'journey.titlePlaceholder': 'Dove stai andando?',
|
||||
'journey.empty': 'Nessun diario ancora',
|
||||
'journey.emptyHint': 'Inizia a documentare il tuo prossimo viaggio',
|
||||
'journey.deleted': 'Diario eliminato',
|
||||
'journey.createError': 'Impossibile creare il diario',
|
||||
'journey.deleteError': 'Impossibile eliminare il diario',
|
||||
'journey.deleteConfirmTitle': 'Elimina',
|
||||
'journey.deleteConfirmMessage': 'Eliminare "{title}"? Questa azione non può essere annullata.',
|
||||
'journey.deleteConfirmGeneric': 'Sei sicuro di voler eliminare questo?',
|
||||
'journey.notFound': 'Diario non trovato',
|
||||
'journey.photos': 'Foto',
|
||||
'journey.timelineEmpty': 'Nessuna tappa ancora',
|
||||
'journey.timelineEmptyHint': 'Aggiungi un check-in o scrivi una voce di diario per iniziare',
|
||||
'journey.status.draft': 'Bozza',
|
||||
'journey.status.active': 'Attivo',
|
||||
'journey.status.completed': 'Completato',
|
||||
'journey.status.upcoming': 'In arrivo',
|
||||
'journey.checkin.add': 'Check-in',
|
||||
'journey.checkin.namePlaceholder': 'Nome del luogo',
|
||||
'journey.checkin.notesPlaceholder': 'Note (facoltativo)',
|
||||
'journey.checkin.save': 'Salva',
|
||||
'journey.checkin.error': 'Impossibile salvare il check-in',
|
||||
'journey.entry.add': 'Diario',
|
||||
'journey.entry.edit': 'Modifica voce',
|
||||
'journey.entry.titlePlaceholder': 'Titolo (facoltativo)',
|
||||
'journey.entry.bodyPlaceholder': 'Cosa è successo oggi?',
|
||||
'journey.entry.save': 'Salva',
|
||||
'journey.entry.error': 'Impossibile salvare la voce',
|
||||
'journey.photo.add': 'Foto',
|
||||
'journey.photo.uploadError': 'Caricamento fallito',
|
||||
'journey.share.share': 'Condividi',
|
||||
'journey.share.public': 'Pubblico',
|
||||
'journey.share.linkCopied': 'Link pubblico copiato',
|
||||
'journey.share.disabled': 'Condivisione pubblica disattivata',
|
||||
'journey.editor.titlePlaceholder': 'Dai un nome a questo momento...',
|
||||
'journey.editor.bodyPlaceholder': 'Racconta la storia di questa giornata...',
|
||||
'journey.editor.placePlaceholder': 'Luogo (facoltativo)',
|
||||
'journey.editor.tagsPlaceholder': 'Tag: gioiello nascosto, miglior pasto, da rivisitare...',
|
||||
'journey.visibility.private': 'Privato',
|
||||
'journey.visibility.shared': 'Condiviso',
|
||||
'journey.visibility.public': 'Pubblico',
|
||||
'journey.emptyState.title': 'La tua storia inizia qui',
|
||||
'journey.emptyState.subtitle': 'Fai un check-in o scrivi la tua prima voce di diario',
|
||||
'journey.frontpage.subtitle': 'Trasforma i tuoi viaggi in storie indimenticabili',
|
||||
'journey.frontpage.createJourney': 'Crea diario',
|
||||
'journey.frontpage.activeJourney': 'Diario attivo',
|
||||
'journey.frontpage.allJourneys': 'Tutti i diari',
|
||||
'journey.frontpage.journeys': 'diari',
|
||||
'journey.frontpage.createNew': 'Crea un nuovo diario',
|
||||
'journey.frontpage.createNewSub': 'Scegli viaggi, scrivi storie, condividi le tue avventure',
|
||||
'journey.frontpage.live': 'In diretta',
|
||||
'journey.frontpage.synced': 'Sincronizzato',
|
||||
'journey.frontpage.continueWriting': 'Continua a scrivere',
|
||||
'journey.frontpage.updated': 'Aggiornato {time}',
|
||||
'journey.frontpage.suggestionLabel': 'Viaggio appena terminato',
|
||||
'journey.frontpage.suggestionText': 'Trasforma <strong>{title}</strong> in un diario di viaggio',
|
||||
'journey.frontpage.dismiss': 'Ignora',
|
||||
'journey.frontpage.journeyName': 'Nome del diario',
|
||||
'journey.frontpage.namePlaceholder': 'es. Sud-est asiatico 2026',
|
||||
'journey.frontpage.selectTrips': 'Seleziona viaggi',
|
||||
'journey.frontpage.tripsSelected': 'viaggi selezionati',
|
||||
'journey.frontpage.trips': 'viaggi',
|
||||
'journey.frontpage.placesImported': 'luoghi saranno importati',
|
||||
'journey.frontpage.places': 'luoghi',
|
||||
'journey.detail.backToJourney': 'Torna al diario',
|
||||
'journey.detail.syncedWithTrips': 'Sincronizzato con i viaggi',
|
||||
'journey.detail.addEntry': 'Aggiungi voce',
|
||||
'journey.detail.newEntry': 'Nuova voce',
|
||||
'journey.detail.editEntry': 'Modifica voce',
|
||||
'journey.detail.noEntries': 'Nessuna voce ancora',
|
||||
'journey.detail.noEntriesHint': 'Aggiungi un viaggio per iniziare con voci precompilate',
|
||||
'journey.detail.noPhotos': 'Nessuna foto ancora',
|
||||
'journey.detail.noPhotosHint': 'Carica foto nelle voci o sfoglia la tua libreria Immich/Synology',
|
||||
'journey.detail.journeyStats': 'Statistiche del diario',
|
||||
'journey.detail.syncedTrips': 'Viaggi sincronizzati',
|
||||
'journey.detail.noTripsLinked': 'Nessun viaggio collegato ancora',
|
||||
'journey.detail.contributors': 'Contributori',
|
||||
'journey.detail.readMore': 'Leggi di più',
|
||||
'journey.detail.prosCons': 'Pro e contro',
|
||||
'journey.stats.days': 'Giorni',
|
||||
'journey.stats.cities': 'Città',
|
||||
'journey.stats.entries': 'Voci',
|
||||
'journey.stats.photos': 'Foto',
|
||||
'journey.stats.places': 'Luoghi',
|
||||
'journey.verdict.lovedIt': 'Adorato',
|
||||
'journey.verdict.couldBeBetter': 'Potrebbe essere meglio',
|
||||
'journey.synced.places': 'luoghi',
|
||||
'journey.synced.synced': 'sincronizzato',
|
||||
'journey.editor.uploadPhotos': 'Carica foto',
|
||||
'journey.editor.fromGallery': 'Dalla galleria',
|
||||
'journey.editor.allPhotosAdded': 'Tutte le foto sono già state aggiunte',
|
||||
'journey.editor.writeStory': 'Scrivi la tua storia...',
|
||||
'journey.editor.prosCons': 'Pro e contro',
|
||||
'journey.editor.pros': 'Pro',
|
||||
'journey.editor.cons': 'Contro',
|
||||
'journey.editor.proPlaceholder': 'Qualcosa di fantastico...',
|
||||
'journey.editor.conPlaceholder': 'Non così fantastico...',
|
||||
'journey.editor.addAnother': 'Aggiungi un altro',
|
||||
'journey.editor.date': 'Data',
|
||||
'journey.editor.location': 'Luogo',
|
||||
'journey.editor.searchLocation': 'Cerca luogo...',
|
||||
'journey.editor.mood': 'Umore',
|
||||
'journey.editor.weather': 'Meteo',
|
||||
'journey.editor.photoFirst': '1°',
|
||||
'journey.editor.makeFirst': 'Metti 1°',
|
||||
'journey.mood.amazing': 'Fantastico',
|
||||
'journey.mood.good': 'Buono',
|
||||
'journey.mood.neutral': 'Neutro',
|
||||
'journey.mood.rough': 'Difficile',
|
||||
'journey.weather.sunny': 'Soleggiato',
|
||||
'journey.weather.partly': 'Parzialmente nuvoloso',
|
||||
'journey.weather.cloudy': 'Nuvoloso',
|
||||
'journey.weather.rainy': 'Piovoso',
|
||||
'journey.weather.stormy': 'Temporalesco',
|
||||
'journey.weather.cold': 'Nevoso',
|
||||
'journey.trips.linkTrip': 'Collega viaggio',
|
||||
'journey.trips.searchTrip': 'Cerca viaggio',
|
||||
'journey.trips.searchPlaceholder': 'Nome del viaggio o destinazione...',
|
||||
'journey.trips.noTripsAvailable': 'Nessun viaggio disponibile',
|
||||
'journey.trips.link': 'Collega',
|
||||
'journey.trips.tripLinked': 'Viaggio collegato',
|
||||
'journey.trips.linkFailed': 'Collegamento del viaggio fallito',
|
||||
'journey.trips.addTrip': 'Aggiungi viaggio',
|
||||
'journey.trips.unlinkTrip': 'Scollega viaggio',
|
||||
'journey.trips.unlinkMessage': 'Scollegare "{title}"? Tutte le voci e le foto sincronizzate da questo viaggio saranno eliminate definitivamente. Questa azione non può essere annullata.',
|
||||
'journey.trips.unlink': 'Scollega',
|
||||
'journey.trips.tripUnlinked': 'Viaggio scollegato',
|
||||
'journey.trips.unlinkFailed': 'Scollegamento del viaggio fallito',
|
||||
'journey.trips.noTripsLinkedSettings': 'Nessun viaggio collegato',
|
||||
'journey.contributors.invite': 'Invita contributore',
|
||||
'journey.contributors.searchUser': 'Cerca utente',
|
||||
'journey.contributors.searchPlaceholder': 'Nome utente o e-mail...',
|
||||
'journey.contributors.noUsers': 'Nessun utente trovato',
|
||||
'journey.contributors.role': 'Ruolo',
|
||||
'journey.contributors.added': 'Contributore aggiunto',
|
||||
'journey.contributors.addFailed': 'Impossibile aggiungere il contributore',
|
||||
'journey.share.publicShare': 'Condivisione pubblica',
|
||||
'journey.share.createLink': 'Crea link di condivisione',
|
||||
'journey.share.linkCreated': 'Link di condivisione creato',
|
||||
'journey.share.createFailed': 'Creazione del link fallita',
|
||||
'journey.share.copy': 'Copia',
|
||||
'journey.share.copied': 'Copiato!',
|
||||
'journey.share.timeline': 'Cronologia',
|
||||
'journey.share.gallery': 'Galleria',
|
||||
'journey.share.map': 'Mappa',
|
||||
'journey.share.removeLink': 'Rimuovi link di condivisione',
|
||||
'journey.share.linkDeleted': 'Link di condivisione eliminato',
|
||||
'journey.share.deleteFailed': 'Eliminazione fallita',
|
||||
'journey.share.updateFailed': 'Aggiornamento fallito',
|
||||
'journey.settings.title': 'Impostazioni del diario',
|
||||
'journey.settings.coverImage': 'Immagine di copertina',
|
||||
'journey.settings.changeCover': 'Cambia copertina',
|
||||
'journey.settings.addCover': 'Aggiungi immagine di copertina',
|
||||
'journey.settings.name': 'Nome',
|
||||
'journey.settings.subtitle': 'Sottotitolo',
|
||||
'journey.settings.subtitlePlaceholder': 'es. Thailandia, Vietnam e Cambogia',
|
||||
'journey.settings.delete': 'Elimina',
|
||||
'journey.settings.deleteJourney': 'Elimina diario',
|
||||
'journey.settings.deleteMessage': 'Eliminare "{title}"? Tutte le voci e le foto andranno perse.',
|
||||
'journey.settings.saved': 'Impostazioni salvate',
|
||||
'journey.settings.saveFailed': 'Salvataggio fallito',
|
||||
'journey.settings.coverUpdated': 'Copertina aggiornata',
|
||||
'journey.settings.coverFailed': 'Caricamento fallito',
|
||||
'journey.public.notFound': 'Non trovato',
|
||||
'journey.public.notFoundMessage': 'Questo diario non esiste o il link è scaduto.',
|
||||
'journey.public.readOnly': 'Sola lettura · Diario pubblico',
|
||||
'journey.public.tagline': 'Travel Resource & Exploration Kit',
|
||||
'journey.public.sharedVia': 'Condiviso tramite',
|
||||
'journey.public.madeWith': 'Creato con',
|
||||
'journey.pdf.journeyBook': 'Diario di viaggio',
|
||||
'journey.pdf.madeWith': 'Creato con TREK',
|
||||
'journey.pdf.day': 'Giorno',
|
||||
'journey.pdf.theEnd': 'Fine',
|
||||
'journey.pdf.saveAsPdf': 'Salva come PDF',
|
||||
'journey.pdf.pages': 'pagine',
|
||||
'dashboard.greeting.morning': 'Buongiorno,',
|
||||
'dashboard.greeting.afternoon': 'Buon pomeriggio,',
|
||||
'dashboard.greeting.evening': 'Buonasera,',
|
||||
'dashboard.mobile.liveNow': 'In diretta',
|
||||
'dashboard.mobile.tripProgress': 'Progresso del viaggio',
|
||||
'dashboard.mobile.daysLeft': '{count} giorni rimanenti',
|
||||
'dashboard.mobile.places': 'Luoghi',
|
||||
'dashboard.mobile.buddies': 'Compagni',
|
||||
'dashboard.mobile.newTrip': 'Nuovo viaggio',
|
||||
'dashboard.mobile.currency': 'Valuta',
|
||||
'dashboard.mobile.timezone': 'Fuso orario',
|
||||
'dashboard.mobile.upcomingTrips': 'Viaggi in arrivo',
|
||||
'dashboard.mobile.yourTrips': 'I tuoi viaggi',
|
||||
'dashboard.mobile.trips': 'viaggi',
|
||||
'dashboard.mobile.starts': 'Inizio',
|
||||
'dashboard.mobile.duration': 'Durata',
|
||||
'dashboard.mobile.day': 'giorno',
|
||||
'dashboard.mobile.days': 'giorni',
|
||||
'dashboard.mobile.ongoing': 'In corso',
|
||||
'dashboard.mobile.startsToday': 'Inizia oggi',
|
||||
'dashboard.mobile.tomorrow': 'Domani',
|
||||
'dashboard.mobile.inDays': 'Tra {count} giorni',
|
||||
'dashboard.mobile.inMonths': 'Tra {count} mesi',
|
||||
'dashboard.mobile.completed': 'Completato',
|
||||
'dashboard.mobile.currencyConverter': 'Convertitore di valuta',
|
||||
'nav.profile': 'Profilo',
|
||||
'nav.bottomSettings': 'Impostazioni',
|
||||
'nav.bottomAdmin': 'Amministrazione',
|
||||
'nav.bottomLogout': 'Disconnetti',
|
||||
'nav.bottomAdminBadge': 'Admin',
|
||||
'dayplan.mobile.addPlace': 'Aggiungi luogo',
|
||||
'dayplan.mobile.searchPlaces': 'Cerca luoghi...',
|
||||
'dayplan.mobile.allAssigned': 'Tutti i luoghi assegnati',
|
||||
'dayplan.mobile.noMatch': 'Nessun risultato',
|
||||
'dayplan.mobile.createNew': 'Crea nuovo luogo',
|
||||
'admin.addons.catalog.journey.name': 'Diario di viaggio',
|
||||
'admin.addons.catalog.journey.description': 'Tracciamento viaggi e diario con check-in, foto e storie quotidiane',
|
||||
}
|
||||
|
||||
export default it
|
||||
|
||||
Reference in New Issue
Block a user