Enhance user profile and world travel pages with improved UI and functionality

- Updated user profile page to include achievement calculations and enhanced styling for user information and statistics.
- Added icons for better visual representation of user stats and achievements.
- Improved layout for displaying adventures and collections with conditional rendering for empty states.
- Refactored world travel page to include search and filter functionality for cities, with a sidebar for progress and stats.
- Implemented completion percentage and progress bars for visited cities.
- Enhanced map integration with markers for visited and not visited cities, including toggle options for map labels.
This commit is contained in:
Sean Morley
2025-06-14 11:10:59 -04:00
parent d4c76f8718
commit 151c76dbd1
21 changed files with 2209 additions and 2461 deletions

View File

@@ -12,35 +12,10 @@
"generic_attributions": "Accedi a AdventureLog per visualizzare le attribuzioni per integrazioni e servizi abilitati."
},
"adventures": {
"activities": {
"activity": "Attività 🏄",
"art_museums": "Arte e Musei",
"attraction": "Attrazione 🎢",
"culture": "Cultura 🎭",
"dining": "Mangiare 🍽️",
"event": "Evento 🎉",
"festivals": "Festival 🎪",
"fitness": "Forma fisica 🏋️",
"general": "Generale 🌍",
"hiking": "Escursionismo 🥾",
"historical_sites": "Siti storici 🏛️",
"lodging": "Alloggio 🛌",
"music_concerts": "Musica",
"nightlife": "Vita notturna 🌃",
"other": "Altro",
"outdoor": "All'aperto 🏞️",
"shopping": "La spesa 🛍️",
"spiritual_journeys": "Viaggi Spirituali 🧘‍♀️",
"transportation": "Trasporti 🚗",
"volunteer_work": "Lavoro volontario 🤝",
"water_sports": "Sport acquatici 🚤",
"wildlife": "Fauna selvatica 🦒"
},
"activities": {},
"add_to_collection": "Aggiungi alla collezione",
"adventure": "Avventura",
"adventure_delete_confirm": "Sei sicuro di voler eliminare questa avventura? \nQuesta azione non può essere annullata.",
"adventure_details": "Dettagli dell'avventura",
"adventure_type": "Tipo di avventura",
"archive": "Archivio",
"archived": "Archiviato",
"archived_collection_message": "Collezione archiviata con successo!",
@@ -49,7 +24,6 @@
"cancel": "Cancellare",
"category_filter": "Filtro categoria",
"clear": "Rimuovere",
"close_filters": "Chiudi filtri",
"collection": "Collezione",
"collection_link_error": "Errore nel collegamento dell'avventura alla collezione",
"collection_remove_error": "Errore durante la rimozione dell'avventura dalla collezione",
@@ -104,10 +78,8 @@
"start_before_end_error": "La data di inizio deve essere antecedente alla data di fine",
"visited": "Visitato",
"actions": "Azioni",
"activity": "Attività",
"activity_types": "Tipi di attività",
"add": "Aggiungere",
"add_an_activity": "Aggiungi un'attività",
"add_notes": "Aggiungi note",
"adventure_create_error": "Impossibile creare l'avventura",
"adventure_created": "Avventura creata",
@@ -128,24 +100,20 @@
"location": "Posizione",
"location_information": "Informazioni sulla posizione",
"my_images": "Le mie immagini",
"my_visits": "Le mie visite",
"new_adventure": "Nuova avventura",
"no_description_found": "Nessuna descrizione trovata",
"no_images": "Nessuna immagine",
"no_location": "Inserisci una località",
"no_results": "Nessun risultato trovato",
"no_start_date": "Inserisci una data di inizio",
"public_adventure": "Avventura pubblica",
"remove": "Rimuovere",
"save_next": "Salva",
"search_for_location": "Cerca una posizione",
"search_results": "Risultati della ricerca",
"see_adventures": "Vedi Avventure",
"select_adventure_category": "Seleziona la categoria per l'avventura",
"share_adventure": "Condividi questa avventura!",
"start_date": "Data di inizio",
"upload_image": "Carica immagine",
"upload_images_here": "Carica le immagini qui",
"url": "URL",
"warning": "Avvertimento",
"wiki_desc": "Estrae un estratto dall'articolo di Wikipedia corrispondente al nome dell'avventura.",
@@ -154,7 +122,6 @@
"adventure_not_found": "Non ci sono avventure da visualizzare. \nAggiungine alcuni utilizzando il pulsante più in basso a destra o prova a cambiare i filtri!",
"all": "Tutto",
"error_updating_regions": "Errore durante l'aggiornamento delle regioni",
"mark_region_as_visited": "Contrassegnare la regione {regione}, {paese} come visitata?",
"mark_visited": "Segna come visitato",
"my_adventures": "Le mie avventure",
"no_adventures_found": "Nessuna avventura trovata",
@@ -178,7 +145,6 @@
"link_new": "Collega Nuovo...",
"linked_adventures": "Avventure collegate",
"links": "Collegamenti",
"no_end_date": "Inserisci una data di fine",
"note": "Nota",
"notes": "Note",
"nothing_planned": "Niente in programma per questa giornata. \nBuon viaggio!",
@@ -217,7 +183,6 @@
"starting_airport": "Aeroporto di partenza",
"to": "A",
"transportation_delete_confirm": "Sei sicuro di voler eliminare questo trasporto? \nQuesta azione non può essere annullata.",
"show_map": "Mostra mappa",
"will_be_marked": "verrà contrassegnato come visitato una volta salvata l'avventura.",
"cities_updated": "città aggiornate",
"create_adventure": "Crea Avventura",
@@ -233,10 +198,7 @@
"attachments": "Allegati",
"gpx_tip": "Carica i file GPX negli allegati per visualizzarli sulla mappa!",
"images": "Immagini",
"primary": "Primario",
"upload": "Caricamento",
"view_attachment": "Visualizza allegato",
"of": "Di",
"city": "Città",
"delete_lodging": "Elimina alloggio",
"display_name": "Nome da visualizzare",
@@ -246,7 +208,6 @@
"lodging_information": "Informazioni di alloggio",
"price": "Prezzo",
"region": "Regione",
"welcome_map_info": "Avventure pubbliche su questo server",
"reservation_number": "Numero di prenotazione",
"open_in_maps": "Aprire in Mappe",
"all_day": "Tutto il giorno",
@@ -254,9 +215,7 @@
"date_itinerary": "Data dell'itinerario",
"no_ordered_items": "Aggiungi elementi con date alla collezione per vederli qui.",
"ordered_itinerary": "Itinerario ordinato",
"additional_info": "Ulteriori informazioni",
"invalid_date_range": "Intervallo di date non valido",
"sunrise_sunset": "Alba",
"timezone": "Fuso orario",
"no_visits": "Nessuna visita",
"arrival_timezone": "Fuso orario di arrivo",
@@ -294,7 +253,6 @@
"about": "Informazioni su AdventureLog",
"adventures": "Avventure",
"collections": "Collezioni",
"discord": "Discord",
"documentation": "Documentazione",
"greeting": "Ciao",
"logout": "Esci",
@@ -305,16 +263,7 @@
"settings": "Impostazioni",
"shared_with_me": "Condiviso con me",
"theme_selection": "Selezione del tema",
"themes": {
"aqua": "Acqua",
"dark": "Buio",
"forest": "Foresta",
"light": "Leggero",
"night": "Notte",
"aestheticDark": "Estetico scuro",
"aestheticLight": "Luce estetica",
"northernLights": "Aurora boreale"
},
"themes": {},
"users": "Utenti",
"worldtravel": "Viaggio nel mondo",
"my_tags": "Le mie tag",
@@ -339,10 +288,7 @@
"profile_picture": "Immagine del profilo",
"public_profile": "Profilo pubblico",
"public_tooltip": "Con un profilo pubblico, gli utenti possono condividere raccolte con te e visualizzare il tuo profilo nella pagina degli utenti.",
"email_required": "L'e-mail è obbligatoria",
"both_passwords_required": "Sono necessarie entrambe le password",
"new_password": "Nuova password",
"reset_failed": "Impossibile reimpostare la password",
"or_3rd_party": "Oppure accedi con un servizio di terze parti",
"no_public_adventures": "Nessuna avventura pubblica trovata",
"no_public_collections": "Nessuna collezione pubblica trovata",
@@ -362,14 +308,12 @@
"not_visited": "Non visitato",
"num_countries": "paesi trovati",
"partially_visited": "Parzialmente visitato",
"all_visited": "Hai visitato tutte le regioni in",
"cities": "città",
"failed_to_mark_visit": "Impossibile contrassegnare la visita a",
"failed_to_remove_visit": "Impossibile rimuovere la visita a",
"marked_visited": "contrassegnato come visitato",
"no_cities_found": "Nessuna città trovata",
"region_failed_visited": "Impossibile contrassegnare la regione come visitata",
"region_stats": "Statistiche della regione",
"regions_in": "Regioni dentro",
"removed": "Rimosso",
"view_cities": "Visualizza città",
@@ -379,7 +323,6 @@
"settings": {
"account_settings": "Impostazioni dell'account utente",
"confirm_new_password": "Conferma nuova password",
"current_email": "E-mail corrente",
"email_change": "Cambia e-mail",
"new_email": "Nuova e-mail",
"new_password": "Nuova password",
@@ -390,27 +333,18 @@
"update_error": "Errore durante l'aggiornamento delle impostazioni",
"update_success": "Impostazioni aggiornate con successo!",
"change_password": "Cambiare la password",
"invalid_token": "Il token non è valido o è scaduto",
"login_redir": "Verrai quindi reindirizzato alla pagina di accesso.",
"missing_email": "Inserisci un indirizzo email",
"password_does_not_match": "Le password non corrispondono",
"password_is_required": "È richiesta la password",
"possible_reset": "Se l'indirizzo email che hai fornito è associato a un account, riceverai un'email con le istruzioni per reimpostare la password!",
"reset_password": "Reimposta password",
"submit": "Invia",
"token_required": "Token e UID sono necessari per la reimpostazione della password.",
"about_this_background": "A proposito di questo contesto",
"join_discord": "Unisciti a Discord",
"join_discord_desc": "per condividere le tue foto. \nPubblicateli in",
"photo_by": "Foto di",
"change_password_error": "Impossibile modificare la password. \nPassword attuale non valida o nuova password non valida.",
"current_password": "password attuale",
"password_change_lopout_warning": "Verrai disconnesso dopo aver modificato la password.",
"authenticator_code": "Codice Autenticatore",
"copy": "Copia",
"disable_mfa": "Disabilita MFA",
"email_added": "Email aggiunta con successo!",
"email_added_error": "Errore durante l'aggiunta dell'e-mail",
"email_removed": "Email rimossa con successo!",
"email_removed_error": "Errore durante la rimozione dell'e-mail",
"email_set_primary": "Email impostata come primaria con successo!",
@@ -420,16 +354,12 @@
"email_verified_error": "Errore durante la verifica dell'e-mail",
"email_verified_success": "La tua email è stata verificata. \nOra puoi accedere.",
"enable_mfa": "Abilita MFA",
"error_change_password": "Errore durante la modifica della password. \nControlla la tua password attuale e riprova.",
"generic_error": "Si è verificato un errore durante l'elaborazione della tua richiesta.",
"invalid_code": "Codice MFA non valido",
"invalid_credentials": "Nome utente o password non validi",
"make_primary": "Rendi primario",
"mfa_disabled": "Autenticazione a più fattori disabilitata correttamente!",
"mfa_enabled": "Autenticazione a più fattori abilitata correttamente!",
"mfa_not_enabled": "L'MFA non è abilitata",
"mfa_page_title": "Autenticazione a più fattori",
"mfa_required": "È richiesta l'autenticazione a più fattori",
"no_emai_set": "Nessuna e-mail impostata",
"not_verified": "Non verificato",
"primary": "Primario",
@@ -440,25 +370,13 @@
"verify_email_success": "Verifica email inviata con successo!",
"verify": "Verificare",
"verify_email_error": "Errore durante la verifica dell'e-mail. \nRiprova tra qualche minuto.",
"add_email_blocked": "Non è possibile aggiungere un indirizzo email a un account protetto dall'autenticazione a due fattori.",
"required": "Questo campo è obbligatorio",
"csrf_failed": "Impossibile recuperare il token CSRF",
"duplicate_email": "Questo indirizzo email è già in uso.",
"email_taken": "Questo indirizzo email è già in uso.",
"username_taken": "Questo nome utente è già in uso.",
"administration_settings": "Impostazioni di amministrazione",
"documentation_link": "Collegamento alla documentazione",
"launch_account_connections": "Avvia Connessioni account",
"launch_administration_panel": "Avvia il pannello di amministrazione",
"no_verified_email_warning": "È necessario disporre di un indirizzo e-mail verificato per abilitare l'autenticazione a due fattori.",
"social_auth_desc": "Abilita o disabilita i provider di autenticazione social e OIDC per il tuo account. \nQueste connessioni ti consentono di accedere con provider di identità di autenticazione self-hosted come Authentik o provider di terze parti come GitHub.",
"social_auth_desc_2": "Queste impostazioni sono gestite nel server AdventureLog e devono essere abilitate manualmente dall'amministratore.",
"social_oidc_auth": "Autenticazione social e OIDC",
"add_email": "Aggiungi e-mail",
"password_too_short": "La password deve contenere almeno 6 caratteri",
"disable_password": "Disabilita la password",
"password_disable": "Disabilita l'autenticazione della password",
"password_disable_desc": "La disabilitazione dell'autenticazione della password ti impedirà di accedere con una password. \nDovrai utilizzare un provider di social o OIDC per accedere. Se il tuo fornitore social non fosse collegato, l'autenticazione password verrà riabilitata automaticamente anche se questa impostazione è disabilitata.",
"password_disable_warning": "Attualmente, l'autenticazione della password è disabilitata. \nÈ richiesto l'accesso tramite un fornitore sociale o OIDC.",
"password_disabled": "Autenticazione password disabilitata",
"password_disabled_error": "Errore di disabilitazione dell'autenticazione della password. \nAssicurati che un fornitore sociale o OIDC sia collegato al tuo account.",
@@ -477,7 +395,6 @@
"advanced_settings_desc": "Strumenti avanzati di configurazione e sviluppo",
"all_rights_reserved": "Tutti i diritti riservati.",
"app_version": "Versione app",
"confirm_new_password_desc": "Conferma nuova password",
"connected": "Collegato",
"debug_information": "Informazioni sul debug",
"disabled": "Disabile",
@@ -514,28 +431,21 @@
"social_auth_setup": "Setup di autenticazione sociale",
"staff_status": "Stato del personale",
"staff_user": "Utente del personale",
"password_auth": "Autenticazione della password",
"email_verified_error_desc": "La tua email non poteva essere verificata. \nPer favore riprova."
"password_auth": "Autenticazione della password"
},
"checklist": {
"add_item": "Aggiungi elemento",
"checklist_delete_error": "Errore durante l'eliminazione della lista di controllo",
"checklist_deleted": "Lista di controllo eliminata con successo!",
"checklist_editor": "Redattore della lista di controllo",
"checklist_public": "Questa lista di controllo è pubblica perché è in una collezione pubblica.",
"editing_checklist": "Lista di controllo per la modifica",
"failed_to_save": "Impossibile salvare la lista di controllo",
"item": "Elemento",
"item_already_exists": "L'elemento esiste già",
"item_cannot_be_empty": "L'elemento non può essere vuoto",
"items": "Elementi",
"save": "Salva",
"new_item": "Nuovo elemento",
"checklist_viewer": "Visualizzatore della lista di controllo",
"new_checklist": "Nuova lista di controllo"
},
"collection": {
"edit_collection": "Modifica collezione",
"error_creating_collection": "Errore durante la creazione della collezione",
"error_editing_collection": "Errore durante la modifica della collezione",
"new_collection": "Nuova collezione",
@@ -560,12 +470,8 @@
"note_viewer": "Visualizzatore di note"
},
"transportation": {
"date_and_time": "Data",
"date_time": "Data di inizio",
"edit": "Modificare",
"edit_transportation": "Modifica Trasporti",
"end_date_time": "Data di fine",
"error_editing_transportation": "Errore durante la modifica del trasporto",
"flight_number": "Numero del volo",
"from_location": "Dalla posizione",
"modes": {
@@ -579,14 +485,9 @@
"walking": "A piedi"
},
"new_transportation": "Nuovi trasporti",
"provide_start_date": "Si prega di fornire una data di inizio",
"start": "Inizio",
"to_location": "Alla posizione",
"transport_type": "Tipo di trasporto",
"transportation_added": "Trasporto aggiunto con successo!",
"transportation_delete_error": "Errore durante l'eliminazione del trasporto",
"transportation_deleted": "Trasporto eliminato con successo!",
"transportation_edit_success": "Trasporti modificati con successo!",
"type": "Tipo",
"ending_airport_desc": "Immettere il codice dell'aroporto di arrivo (ad es. LAX)",
"fetch_location_information": "Informazioni sulla posizione di recupero",
@@ -634,7 +535,6 @@
"no_categories_found": "Nessuna categoria trovata.",
"select_category": "Seleziona Categoria",
"update_after_refresh": "Le carte avventura verranno aggiornate una volta aggiornata la pagina.",
"add_category": "Aggiungi categoria",
"add_new_category": "Aggiungi nuova categoria"
},
"dashboard": {
@@ -651,25 +551,14 @@
"api_key": "Chiave API Immich",
"api_note": "Nota: questo deve essere l'URL del server API Immich, quindi probabilmente termina con /api a meno che tu non abbia una configurazione personalizzata.",
"disable": "Disabilita",
"enable_immich": "Abilita Immich",
"imageid_required": "L'ID immagine è obbligatorio",
"immich": "Immich",
"immich_desc": "Integra il tuo account Immich con AdventureLog per consentirti di cercare nella tua libreria di foto e importare foto per le tue avventure.",
"immich_disabled": "Integrazione Immich disabilitata con successo!",
"immich_enabled": "Integrazione Immich abilitata con successo!",
"immich_error": "Errore durante l'aggiornamento dell'integrazione Immich",
"immich_integration": "Integrazione di Immich",
"immich_updated": "Impostazioni Immich aggiornate con successo!",
"integration_enabled": "Integrazione abilitata",
"integration_fetch_error": "Errore durante il recupero dei dati dall'integrazione Immich",
"integration_missing": "L'integrazione Immich manca dal backend",
"load_more": "Carica altro",
"no_items_found": "Nessun articolo trovato",
"query_required": "La domanda è obbligatoria",
"server_down": "Il server Immich è attualmente inattivo o irraggiungibile",
"server_url": "URL del server Immich",
"update_integration": "Aggiorna integrazione",
"documentation": "Documentazione sull'integrazione di Immich",
"localhost_note": "Nota: molto probabilmente localhost non funzionerà a meno che tu non abbia configurato le reti docker di conseguenza. \nSi consiglia di utilizzare l'indirizzo IP del server o il nome del dominio.",
"api_key_placeholder": "Inserisci la tua chiave API immich",
"enable_integration": "Abilita l'integrazione",
@@ -685,15 +574,10 @@
"copy_locally_desc": "Copia le immagini sul server per l'accesso offline. \nUtilizza più spazio su disco."
},
"recomendations": {
"address": "Indirizzo",
"contact": "Contatto",
"phone": "Telefono",
"recommendation": "Raccomandazione",
"website": "Sito web",
"recommendations": "Raccomandazioni",
"adventure_recommendations": "Consigli di avventura",
"food": "Cibo",
"miles": "Miglia",
"tourism": "Turismo"
},
"lodging": {
@@ -701,30 +585,17 @@
"bnb": "Bed and Breakfast",
"cabin": "Cabina",
"campground": "Campeggio",
"check_in": "Check-in",
"check_out": "Check-out",
"date_and_time": "Data e ora",
"edit": "Modificare",
"edit_lodging": "Modifica alloggio",
"error_editing_lodging": "Errore nella modifica dell'alloggio",
"hostel": "Ostello",
"hotel": "Hotel",
"house": "Casa",
"lodging_added": "Alloggio aggiunto con successo!",
"new_lodging": "Nuovo alloggio",
"other": "Altro",
"provide_start_date": "Si prega di fornire una data di inizio",
"reservation_number": "Numero di prenotazione",
"resort": "Resort",
"start": "Inizio",
"type": "Tipo",
"villa": "Villa",
"lodging_delete_error": "Errore nell'eliminazione dell'alloggio",
"lodging_deleted": "Alloggio eliminato con successo!",
"lodging_edit_success": "Alloggio modificato con successo!",
"lodging_type": "Tipo di alloggio",
"motel": "Motel",
"current_timezone": "Fuso orario attuale"
"motel": "Motel"
},
"google_maps": {
"google_maps_integration_desc": "Collega il tuo account Google Maps per ottenere risultati e consigli di ricerca sulla posizione di alta qualità."