1
0
Fork 0
mirror of https://github.com/seanmorley15/AdventureLog.git synced 2025-07-18 20:39:36 +02:00

Refactor UI components for improved localization and styling

- Updated various headings and text elements to utilize localization functions for better internationalization support.
- Simplified gradient styles in headings to enhance readability.
- Adjusted adventure and travel statistics sections to reflect localized titles and descriptions.
- Enhanced filter options and buttons with localized text for clarity.
- Modified Tailwind CSS configuration to include a new color 'dim' for future styling needs.
This commit is contained in:
Sean Morley 2025-06-14 18:55:59 -04:00
parent b5931c6c23
commit b0e8000cf8
26 changed files with 1814 additions and 1097 deletions

13
.vscode/settings.json vendored
View file

@ -25,5 +25,16 @@
"backend/server/backend/lib/python3.12/site-packages/django/contrib/sites/locale", "backend/server/backend/lib/python3.12/site-packages/django/contrib/sites/locale",
"backend/server/backend/lib/python3.12/site-packages/rest_framework/templates/rest_framework/docs/langs" "backend/server/backend/lib/python3.12/site-packages/rest_framework/templates/rest_framework/docs/langs"
], ],
"i18n-ally.keystyle": "nested" "i18n-ally.keystyle": "nested",
"i18n-ally.keysInUse": [
"navbar.themes.dim",
"navbar.themes.northernLights",
"navbar.themes.aqua",
"navbar.themes.aestheticDark",
"navbar.themes.aestheticLight",
"navbar.themes.forest",
"navbar.themes.night",
"navbar.themes.dark",
"navbar.themes.light"
]
} }

View file

@ -263,7 +263,7 @@
<!-- Settings Dropdown --> <!-- Settings Dropdown -->
<div class="dropdown dropdown-bottom dropdown-end z-[999]"> <div class="dropdown dropdown-bottom dropdown-end z-[999]">
<div tabindex="0" role="button" class="btn btn-ghost btn-sm btn-square"> <div tabindex="0" role="button" class="btn btn-neutral-300 btn-sm btn-square">
<DotsHorizontal class="w-5 h-5" /> <DotsHorizontal class="w-5 h-5" />
</div> </div>
<!-- svelte-ignore a11y-no-noninteractive-tabindex --> <!-- svelte-ignore a11y-no-noninteractive-tabindex -->

View file

@ -450,6 +450,7 @@ export function findFirstValue(obj: any): any {
export let themes = [ export let themes = [
{ name: 'light', label: 'Light' }, { name: 'light', label: 'Light' },
{ name: 'dark', label: 'Dark' }, { name: 'dark', label: 'Dark' },
{ name: 'dim', label: 'Dim' },
{ name: 'night', label: 'Night' }, { name: 'night', label: 'Night' },
{ name: 'forest', label: 'Forest' }, { name: 'forest', label: 'Forest' },
{ name: 'aqua', label: 'Aqua' }, { name: 'aqua', label: 'Aqua' },
@ -594,7 +595,8 @@ export function getIsDarkMode() {
theme === 'night' || theme === 'night' ||
theme === 'aestheticDark' || theme === 'aestheticDark' ||
theme === 'northernLights' || theme === 'northernLights' ||
theme === 'forest'; theme === 'forest' ||
theme === 'dim';
return isDark; return isDark;
} }

View file

@ -178,7 +178,6 @@
"no_location_found": "Keinen Standort gefunden", "no_location_found": "Keinen Standort gefunden",
"note_delete_confirm": "Sind Sie sicher, dass Sie diese Notiz löschen möchten? \nDies kann nicht rückgängig gemacht werden!", "note_delete_confirm": "Sind Sie sicher, dass Sie diese Notiz löschen möchten? \nDies kann nicht rückgängig gemacht werden!",
"out_of_range": "Außerhalb des geplanten Reisezeitraums", "out_of_range": "Außerhalb des geplanten Reisezeitraums",
"show_region_labels": "Regionsbeschriftungen anzeigen",
"start": "Start", "start": "Start",
"starting_airport": "Startflughafen", "starting_airport": "Startflughafen",
"to": "Nach", "to": "Nach",
@ -233,7 +232,11 @@
"itinerary": "Route", "itinerary": "Route",
"joined": "Verbunden", "joined": "Verbunden",
"view_profile": "Profil anzeigen", "view_profile": "Profil anzeigen",
"share_collection": "Teilen Sie diese Sammlung!" "share_collection": "Teilen Sie diese Sammlung!",
"filters_and_sort": "Filter",
"filters_and_stats": "Filter",
"no_adventures_message": "Dokumentieren Sie Ihre Abenteuer und planen Sie neue. \nJede Reise hat eine Geschichte, die es wert ist, erzählt zu werden.",
"travel_progress": "Reisefortschritt"
}, },
"home": { "home": {
"desc_1": "Entdecken, planen und erkunden Sie mühelos", "desc_1": "Entdecken, planen und erkunden Sie mühelos",
@ -247,7 +250,11 @@
"hero_1": "Entdecken Sie die aufregendsten Abenteuer der Welt", "hero_1": "Entdecken Sie die aufregendsten Abenteuer der Welt",
"hero_2": "Entdecken und planen Sie Ihr nächstes Abenteuer mit AdventureLog. Erkunden Sie atemberaubende Reiseziele, erstellen Sie individuelle Reisepläne und bleiben Sie unterwegs stets verbunden.", "hero_2": "Entdecken und planen Sie Ihr nächstes Abenteuer mit AdventureLog. Erkunden Sie atemberaubende Reiseziele, erstellen Sie individuelle Reisepläne und bleiben Sie unterwegs stets verbunden.",
"key_features": "Hauptmerkmale", "key_features": "Hauptmerkmale",
"feature_2_desc": "Erstellen Sie mühelos individuelle Reisepläne und erhalten Sie eine detaillierte Tagesübersicht Ihrer Reise." "feature_2_desc": "Erstellen Sie mühelos individuelle Reisepläne und erhalten Sie eine detaillierte Tagesübersicht Ihrer Reise.",
"explore_world": "Welt erkunden",
"latest_travel_experiences": "Ihre neuesten Reiseerlebnisse",
"of_world": "der Welt",
"start_your_journey": "Beginnen Sie Ihre Reise"
}, },
"navbar": { "navbar": {
"about": "Über AdventureLog", "about": "Über AdventureLog",
@ -263,7 +270,17 @@
"settings": "Einstellungen", "settings": "Einstellungen",
"shared_with_me": "Mit mir geteilt", "shared_with_me": "Mit mir geteilt",
"theme_selection": "Design", "theme_selection": "Design",
"themes": {}, "themes": {
"aestheticDark": "Ästhetische Dunkelheit",
"aestheticLight": "Ästhetisches Licht",
"aqua": "Aqua",
"dark": "Dunkel",
"dim": "Düster",
"forest": "Wald",
"light": "Licht",
"night": "Nacht",
"northernLights": "Nordlicht"
},
"users": "Benutzer", "users": "Benutzer",
"worldtravel": "Weltreisen", "worldtravel": "Weltreisen",
"my_tags": "Meine Schlagworte", "my_tags": "Meine Schlagworte",
@ -318,7 +335,36 @@
"removed": "entfernt", "removed": "entfernt",
"view_cities": "Städte anzeigen", "view_cities": "Städte anzeigen",
"visit_remove_failed": "Der Besuch konnte nicht entfernt werden", "visit_remove_failed": "Der Besuch konnte nicht entfernt werden",
"visit_to": "Besuch von" "visit_to": "Besuch von",
"all_regions": "Alle Regionen",
"available_to_explore": "Verfügbar zum Erkunden",
"cities_in": "Städte in",
"clear_all": "Alle klar",
"clear_all_filters": "Alle Filter löschen",
"clear_filters": "Klare Filter",
"complete": "Vollständig",
"countries": "Länder",
"country_completed": "Land abgeschlossen",
"filter_by": "Filter von",
"filter_by_region": "Filter nach Region",
"hide_map": "Karte verbergen",
"hide_map_labels": "Kartenbezeichnungen ausblenden",
"interactive_map": "Interaktive Karte",
"no_countries_found_desc": "Stellen Sie Ihre Suchbegriffe oder -filter an, um die Länder zu finden, nach denen Sie suchen.",
"no_country_data_available": "Keine Länderdaten verfügbar",
"no_country_data_available_desc": "Bitte überprüfen Sie die Dokumentation zur Aktualisierung der Region Daten.",
"no_regions_found": "Keine Regionen gefunden",
"of": "von",
"partial": "Teilweise",
"progress": "Fortschritt",
"progress_and_stats": "Fortschritt",
"region_completed": "Region abgeschlossen",
"remaining": "Übrig",
"show_map": "Karte anzeigen",
"show_map_labels": "Kartenbezeichnungen anzeigen",
"total_cities": "Gesamtstädte",
"total_countries": "Gesamtländer",
"total_regions": "Gesamtregionen"
}, },
"settings": { "settings": {
"account_settings": "Benutzerkonto", "account_settings": "Benutzerkonto",
@ -453,7 +499,14 @@
"error_editing_collection": "Fehler beim Bearbeiten der Sammlung", "error_editing_collection": "Fehler beim Bearbeiten der Sammlung",
"new_collection": "Neue Sammlung", "new_collection": "Neue Sammlung",
"public_collection": "Öffentliche Sammlung", "public_collection": "Öffentliche Sammlung",
"manage_collections": "Sammlungen verwalten" "manage_collections": "Sammlungen verwalten",
"archived_appear_here": "Archivierte Sammlungen werden hier erscheinen.",
"create_first": "Erstellen Sie Ihre erste Sammlung, um Ihre Abenteuer und Erinnerungen zu organisieren.",
"make_sure_public": "Stellen Sie sicher, dass Ihr Profil öffentlich ist, damit andere mit Ihnen teilen können.",
"no_archived_collections": "Keine archivierten Sammlungen.",
"no_collections_yet": "Noch keine Sammlungen",
"no_shared_collections": "Keine gemeinsamen Sammlungen.",
"shared_collections": "Gemeinsame Sammlungen"
}, },
"notes": { "notes": {
"add_a_link": "Fügen Sie einen Link hinzu", "add_a_link": "Fügen Sie einen Link hinzu",
@ -505,7 +558,15 @@
"clear_marker": "Markierung löschen", "clear_marker": "Markierung löschen",
"map_options": "Kartenoptionen", "map_options": "Kartenoptionen",
"show_visited_regions": "Besuchte Regionen anzeigen", "show_visited_regions": "Besuchte Regionen anzeigen",
"view_details": "Details anzeigen" "view_details": "Details anzeigen",
"adventure_stats": "Abenteuerstatistiken",
"adventures_shown": "Abenteuer gezeigt",
"completion": "Fertigstellung",
"display_options": "Anzeigenoptionen",
"map_controls": "Kartensteuerungen",
"marker_placed_on_map": "Marker auf der Karte platziert",
"place_marker_desc": "Klicken Sie auf die Karte, um einen Marker zu platzieren, oder fügen Sie ein Abenteuer ohne Ort hinzu.",
"regions": "Regionen"
}, },
"languages": {}, "languages": {},
"share": { "share": {
@ -525,7 +586,15 @@
"user_stats": "Benutzerstatistiken", "user_stats": "Benutzerstatistiken",
"visited_countries": "Besuchte Länder", "visited_countries": "Besuchte Länder",
"visited_regions": "Besuchte Regionen", "visited_regions": "Besuchte Regionen",
"visited_cities": "Besuchte Städte" "visited_cities": "Besuchte Städte",
"discovered": "entdeckt",
"explored": "erkundet",
"no_shared_adventures": "Dieser Benutzer hat noch keine öffentlichen Abenteuer geteilt.",
"no_shared_collections": "Dieser Benutzer hat noch keine öffentlichen Sammlungen geteilt.",
"planned_trips": "Geplante Reisen",
"public_adventure_experiences": "Öffentliche Abenteuererlebnisse",
"travel_statistics": "Reisestatistik",
"your_journey_at_a_glance": "Ihre Abenteuerreise auf einen Blick"
}, },
"categories": { "categories": {
"category_name": "Kategoriename", "category_name": "Kategoriename",
@ -535,7 +604,8 @@
"no_categories_found": "Keine Kategorien gefunden.", "no_categories_found": "Keine Kategorien gefunden.",
"select_category": "Kategorie wählen", "select_category": "Kategorie wählen",
"update_after_refresh": "Die Abenteuerkarten werden aktualisiert, sobald Sie die Seite aktualisieren.", "update_after_refresh": "Die Abenteuerkarten werden aktualisiert, sobald Sie die Seite aktualisieren.",
"add_new_category": "Neue Kategorie hinzufügen" "add_new_category": "Neue Kategorie hinzufügen",
"name_required": "Der Kategorienname ist erforderlich"
}, },
"dashboard": { "dashboard": {
"add_some": "Warum nicht gleich Ihr nächstes Abenteuer planen? Sie können ein neues Abenteuer hinzufügen, indem Sie auf den Button unten klicken.", "add_some": "Warum nicht gleich Ihr nächstes Abenteuer planen? Sie können ein neues Abenteuer hinzufügen, indem Sie auf den Button unten klicken.",
@ -545,7 +615,12 @@
"total_adventures": "Abenteuer insgesamt", "total_adventures": "Abenteuer insgesamt",
"total_visited_regions": "Insgesamt besuchte Regionen", "total_visited_regions": "Insgesamt besuchte Regionen",
"welcome_back": "Willkommen zurück", "welcome_back": "Willkommen zurück",
"total_visited_cities": "Insgesamt besuchte Städte" "total_visited_cities": "Insgesamt besuchte Städte",
"document_some_adventures": "Dokumentieren Sie Ihre Reisen und bauen Sie Ihre persönliche Abenteuerkarte auf!",
"view_all": "Alle anzeigen",
"welcome_text_1": "Du warst dran",
"welcome_text_2": "Abenteuer bisher",
"welcome_text_3": "Erkunden und dokumentieren Sie Ihre Reisen!"
}, },
"immich": { "immich": {
"api_key": "Immich-API-Schlüssel", "api_key": "Immich-API-Schlüssel",

View file

@ -29,7 +29,8 @@
"aestheticLight": "Aesthetic Light", "aestheticLight": "Aesthetic Light",
"aestheticDark": "Aesthetic Dark", "aestheticDark": "Aesthetic Dark",
"aqua": "Aqua", "aqua": "Aqua",
"northernLights": "Northern Lights" "northernLights": "Northern Lights",
"dim": "Dim"
} }
}, },
"about": { "about": {
@ -56,7 +57,11 @@
"feature_2": "Trip Planning", "feature_2": "Trip Planning",
"feature_2_desc": "Easily create custom itineraries and get a day-by-day breakdown of your trip.", "feature_2_desc": "Easily create custom itineraries and get a day-by-day breakdown of your trip.",
"feature_3": "Travel Map", "feature_3": "Travel Map",
"feature_3_desc": "View your travels throughout the world with an interactive map and explore new destinations." "feature_3_desc": "View your travels throughout the world with an interactive map and explore new destinations.",
"start_your_journey": "Start Your Journey",
"of_world": "of the world",
"explore_world": "Explore World",
"latest_travel_experiences": "Your latest travel experiences"
}, },
"adventures": { "adventures": {
"collection_remove_success": "Adventure removed from collection successfully!", "collection_remove_success": "Adventure removed from collection successfully!",
@ -113,7 +118,6 @@
"date_constrain": "Constrain to collection dates", "date_constrain": "Constrain to collection dates",
"rating": "Rating", "rating": "Rating",
"my_images": "My Images", "my_images": "My Images",
"show_region_labels": "Show Region Labels",
"no_images": "No Images", "no_images": "No Images",
"distance": "Distance", "distance": "Distance",
"share_adventure": "Share this Adventure!", "share_adventure": "Share this Adventure!",
@ -210,6 +214,7 @@
"display_name": "Display Name", "display_name": "Display Name",
"adventure_not_found": "There are no adventures to display. Add some using the plus button at the bottom right or try changing filters!", "adventure_not_found": "There are no adventures to display. Add some using the plus button at the bottom right or try changing filters!",
"no_adventures_found": "No adventures found", "no_adventures_found": "No adventures found",
"no_adventures_message": "Start documenting your adventures and planning new ones. Every journey has a story worth telling.",
"mark_visited": "Mark Visited", "mark_visited": "Mark Visited",
"error_updating_regions": "Error updating regions", "error_updating_regions": "Error updating regions",
"regions_updated": "regions updated", "regions_updated": "regions updated",
@ -280,11 +285,15 @@
"activities": {}, "activities": {},
"lodging_information": "Lodging Information", "lodging_information": "Lodging Information",
"price": "Price", "price": "Price",
"reservation_number": "Reservation Number" "reservation_number": "Reservation Number",
"filters_and_sort": "Filters & Sort",
"filters_and_stats": "Filters & Stats",
"travel_progress": "Travel Progress"
}, },
"worldtravel": { "worldtravel": {
"country_list": "Country List", "country_list": "Country List",
"num_countries": "countries found", "num_countries": "countries found",
"cities_in": "Cities in",
"all": "All", "all": "All",
"partially_visited": "Partially Visited", "partially_visited": "Partially Visited",
"not_visited": "Not Visited", "not_visited": "Not Visited",
@ -292,6 +301,8 @@
"all_subregions": "All Subregions", "all_subregions": "All Subregions",
"clear_search": "Clear Search", "clear_search": "Clear Search",
"no_countries_found": "No countries found", "no_countries_found": "No countries found",
"no_countries_found_desc": "Try adjusting your search terms or filters to find the countries you're looking for.",
"clear_filters": "Clear Filters",
"view_cities": "View Cities", "view_cities": "View Cities",
"no_cities_found": "No cities found", "no_cities_found": "No cities found",
"visit_to": "Visit to", "visit_to": "Visit to",
@ -302,7 +313,33 @@
"failed_to_remove_visit": "Failed to remove visit to", "failed_to_remove_visit": "Failed to remove visit to",
"marked_visited": "marked as visited", "marked_visited": "marked as visited",
"regions_in": "Regions in", "regions_in": "Regions in",
"cities": "cities" "cities": "cities",
"remaining": "Remaining",
"of": "of",
"countries": "countries",
"show_map": "Show Map",
"hide_map": "Hide Map",
"complete": "Complete",
"partial": "Partial",
"clear_all": "Clear All",
"no_country_data_available": "No country data available",
"no_country_data_available_desc": "Please check the documentation for updating region data.",
"total_countries": "Total Countries",
"available_to_explore": "Available to Explore",
"progress": "Progress",
"filter_by_region": "Filter by Region",
"all_regions": "All Regions",
"clear_all_filters": "Clear All Filters",
"filter_by": "Filter by",
"interactive_map": "Interactive Map",
"no_regions_found": "No regions found",
"progress_and_stats": "Progress & Stats",
"total_regions": "Total Regions",
"country_completed": "Country completed",
"show_map_labels": "Show Map Labels",
"hide_map_labels": "Hide Map Labels",
"total_cities": "Total Cities",
"region_completed": "Region completed"
}, },
"auth": { "auth": {
"username": "Username", "username": "Username",
@ -450,7 +487,14 @@
"collection_edit_success": "Collection edited successfully!", "collection_edit_success": "Collection edited successfully!",
"error_editing_collection": "Error editing collection", "error_editing_collection": "Error editing collection",
"public_collection": "Public Collection", "public_collection": "Public Collection",
"manage_collections": "Manage Collections" "manage_collections": "Manage Collections",
"no_collections_yet": "No collections yet",
"no_shared_collections": "No shared collections.",
"shared_collections": "Shared Collections",
"no_archived_collections": "No archived collections.",
"create_first": "Create your first collection to organize your adventures and memories.",
"make_sure_public": "Make sure your profile is public so others can share with you.",
"archived_appear_here": "Archived collections will appear here."
}, },
"notes": { "notes": {
"note_deleted": "Note deleted successfully!", "note_deleted": "Note deleted successfully!",
@ -531,7 +575,15 @@
"show_visited_regions": "Show Visited Regions", "show_visited_regions": "Show Visited Regions",
"add_adventure_at_marker": "Add New Adventure at Marker", "add_adventure_at_marker": "Add New Adventure at Marker",
"clear_marker": "Clear Marker", "clear_marker": "Clear Marker",
"add_adventure": "Add New Adventure" "add_adventure": "Add New Adventure",
"adventure_stats": "Adventure Stats",
"map_controls": "Map Controls",
"regions": "Regions",
"completion": "Completion",
"display_options": "Display Options",
"marker_placed_on_map": "Marker placed on map",
"place_marker_desc": "Click on the map to place a marker, or add an adventure without location.",
"adventures_shown": "adventures shown"
}, },
"share": { "share": {
"shared": "Shared", "shared": "Shared",
@ -551,7 +603,15 @@
"user_stats": "User Stats", "user_stats": "User Stats",
"visited_countries": "Visited Countries", "visited_countries": "Visited Countries",
"visited_regions": "Visited Regions", "visited_regions": "Visited Regions",
"visited_cities": "Visited Cities" "visited_cities": "Visited Cities",
"travel_statistics": "Travel Statistics",
"your_journey_at_a_glance": "Your adventure journey at a glance",
"planned_trips": "Planned trips",
"discovered": "discovered",
"explored": "explored",
"public_adventure_experiences": "Public adventure experiences",
"no_shared_adventures": "This user hasn't shared any public adventures yet.",
"no_shared_collections": "This user hasn't shared any public collections yet."
}, },
"categories": { "categories": {
"manage_categories": "Manage Categories", "manage_categories": "Manage Categories",
@ -561,7 +621,8 @@
"update_after_refresh": "The adventure cards will be updated once you refresh the page.", "update_after_refresh": "The adventure cards will be updated once you refresh the page.",
"select_category": "Select Category", "select_category": "Select Category",
"category_name": "Category Name", "category_name": "Category Name",
"add_new_category": "Add New Category" "add_new_category": "Add New Category",
"name_required": "Category name is required"
}, },
"dashboard": { "dashboard": {
"welcome_back": "Welcome back", "welcome_back": "Welcome back",
@ -571,7 +632,12 @@
"total_visited_cities": "Total Visited Cities", "total_visited_cities": "Total Visited Cities",
"recent_adventures": "Recent Adventures", "recent_adventures": "Recent Adventures",
"no_recent_adventures": "No recent adventures?", "no_recent_adventures": "No recent adventures?",
"add_some": "Why not start planning your next adventure? You can add a new adventure by clicking the button below." "add_some": "Why not start planning your next adventure? You can add a new adventure by clicking the button below.",
"document_some_adventures": "Start documenting your travels and build your personal adventure map!",
"view_all": "View All",
"welcome_text_1": "You've been on",
"welcome_text_2": "adventures so far",
"welcome_text_3": "Keep exploring and documenting your travels!"
}, },
"immich": { "immich": {
"immich": "Immich", "immich": "Immich",

View file

@ -15,7 +15,17 @@
"about": "Acerca de AdventureLog", "about": "Acerca de AdventureLog",
"documentation": "Documentación", "documentation": "Documentación",
"theme_selection": "Selección de Tema", "theme_selection": "Selección de Tema",
"themes": {}, "themes": {
"aestheticDark": "Oscuro estético",
"aestheticLight": "Luz estética",
"aqua": "Agua",
"dark": "Oscuro",
"dim": "Oscuro",
"forest": "Bosque",
"light": "Luz",
"night": "Noche",
"northernLights": "Aurora del norte"
},
"my_tags": "Mis etiquetas", "my_tags": "Mis etiquetas",
"tag": "Etiqueta", "tag": "Etiqueta",
"language_selection": "Idioma", "language_selection": "Idioma",
@ -47,7 +57,11 @@
"feature_2": "Planificación de Viajes", "feature_2": "Planificación de Viajes",
"feature_2_desc": "Crea fácilmente itinerarios personalizados y obtén un desglose diario de tu viaje.", "feature_2_desc": "Crea fácilmente itinerarios personalizados y obtén un desglose diario de tu viaje.",
"feature_3": "Mapa de Viaje", "feature_3": "Mapa de Viaje",
"feature_3_desc": "Visualiza tus viajes por el mundo con un mapa interactivo y explora nuevos destinos." "feature_3_desc": "Visualiza tus viajes por el mundo con un mapa interactivo y explora nuevos destinos.",
"start_your_journey": "Empiece tu viaje",
"explore_world": "Explorar el mundo",
"latest_travel_experiences": "Tus últimas experiencias de viaje",
"of_world": "del mundo"
}, },
"adventures": { "adventures": {
"collection_remove_success": "¡Aventura eliminada de la colección con éxito!", "collection_remove_success": "¡Aventura eliminada de la colección con éxito!",
@ -216,7 +230,6 @@
"no_location_found": "No se encontró ninguna ubicación", "no_location_found": "No se encontró ninguna ubicación",
"note_delete_confirm": "¿Estás seguro de que deseas eliminar esta nota? \nEsta acción no se puede deshacer.", "note_delete_confirm": "¿Estás seguro de que deseas eliminar esta nota? \nEsta acción no se puede deshacer.",
"out_of_range": "No en el rango de fechas del itinerario", "out_of_range": "No en el rango de fechas del itinerario",
"show_region_labels": "Mostrar etiquetas de región",
"start": "Comenzar", "start": "Comenzar",
"starting_airport": "Aeropuerto de inicio", "starting_airport": "Aeropuerto de inicio",
"to": "A", "to": "A",
@ -271,7 +284,11 @@
"itinerary": "Itinerario", "itinerary": "Itinerario",
"joined": "Unido", "joined": "Unido",
"view_profile": "Ver perfil", "view_profile": "Ver perfil",
"share_collection": "¡Comparte esta colección!" "share_collection": "¡Comparte esta colección!",
"filters_and_sort": "Filtros",
"no_adventures_message": "Comience a documentar sus aventuras y planificar nuevas. \nCada viaje tiene una historia que vale la pena contar.",
"filters_and_stats": "Filtros",
"travel_progress": "Progreso del viaje"
}, },
"worldtravel": { "worldtravel": {
"all": "Todo", "all": "Todo",
@ -293,7 +310,36 @@
"removed": "eliminado", "removed": "eliminado",
"view_cities": "Ver ciudades", "view_cities": "Ver ciudades",
"visit_remove_failed": "No se pudo eliminar la visita", "visit_remove_failed": "No se pudo eliminar la visita",
"visit_to": "Visita a" "visit_to": "Visita a",
"cities_in": "Ciudades en",
"clear_all": "Despejar todo",
"clear_filters": "Filtros claros",
"complete": "Completo",
"countries": "países",
"hide_map": "Cerrar mapa",
"no_countries_found_desc": "Intente ajustar sus términos de búsqueda o filtros para encontrar los países que está buscando.",
"no_country_data_available": "No hay datos de país disponibles",
"no_country_data_available_desc": "Consulte la documentación para actualizar los datos de la región.",
"of": "de",
"partial": "Parcial",
"remaining": "Restante",
"show_map": "Abrir mapa",
"all_regions": "Todas las regiones",
"available_to_explore": "Disponible para explorar",
"clear_all_filters": "Borrar todos los filtros",
"filter_by_region": "Filtrar por región",
"progress": "Progreso",
"total_countries": "Total de países",
"country_completed": "País completado",
"filter_by": "Filtrar",
"hide_map_labels": "Ocultar etiquetas de mapa",
"interactive_map": "Mapa interactivo",
"no_regions_found": "No se encontraron regiones",
"progress_and_stats": "Progreso",
"show_map_labels": "Mostrar etiquetas de mapa",
"total_regions": "Total de regiones",
"region_completed": "Región completada",
"total_cities": "Ciudades totales"
}, },
"auth": { "auth": {
"forgot_password": "¿Has olvidado tu contraseña?", "forgot_password": "¿Has olvidado tu contraseña?",
@ -453,7 +499,14 @@
"error_editing_collection": "Error al editar la colección", "error_editing_collection": "Error al editar la colección",
"new_collection": "Nueva colección", "new_collection": "Nueva colección",
"public_collection": "Colección pública", "public_collection": "Colección pública",
"manage_collections": "Gestionar colecciones" "manage_collections": "Gestionar colecciones",
"archived_appear_here": "Las colecciones archivadas aparecerán aquí.",
"create_first": "Cree su primera colección para organizar sus aventuras y recuerdos.",
"make_sure_public": "Asegúrese de que su perfil sea público para que otros puedan compartir con usted.",
"no_archived_collections": "No hay colecciones archivadas.",
"no_collections_yet": "Todavía no hay colecciones",
"no_shared_collections": "No hay colecciones compartidas.",
"shared_collections": "Colecciones compartidas"
}, },
"notes": { "notes": {
"add_a_link": "Agregar un enlace", "add_a_link": "Agregar un enlace",
@ -505,7 +558,15 @@
"clear_marker": "Borrar marcador", "clear_marker": "Borrar marcador",
"map_options": "Opciones de mapa", "map_options": "Opciones de mapa",
"show_visited_regions": "Mostrar regiones visitadas", "show_visited_regions": "Mostrar regiones visitadas",
"view_details": "Ver detalles" "view_details": "Ver detalles",
"adventure_stats": "Estadísticas de aventura",
"completion": "Terminación",
"display_options": "Opciones de visualización",
"map_controls": "Controles de mapa",
"marker_placed_on_map": "Marcador colocado en el mapa",
"place_marker_desc": "Haga clic en el mapa para colocar un marcador o agregar una aventura sin ubicación.",
"regions": "Regiones",
"adventures_shown": "aventuras mostradas"
}, },
"share": { "share": {
"no_users_shared": "Ningún usuario compartió con", "no_users_shared": "Ningún usuario compartió con",
@ -525,7 +586,15 @@
"user_stats": "Estadísticas de usuario", "user_stats": "Estadísticas de usuario",
"visited_countries": "Países visitados", "visited_countries": "Países visitados",
"visited_regions": "Regiones visitadas", "visited_regions": "Regiones visitadas",
"visited_cities": "Ciudades Visitadas" "visited_cities": "Ciudades Visitadas",
"discovered": "descubierto",
"explored": "explorado",
"no_shared_adventures": "Este usuario aún no ha compartido ninguna aventura pública.",
"no_shared_collections": "Este usuario aún no ha compartido ninguna colección pública.",
"planned_trips": "Viajes planificados",
"public_adventure_experiences": "Experiencias de aventura pública",
"travel_statistics": "Estadísticas de viaje",
"your_journey_at_a_glance": "Tu viaje de aventura a un vistazo"
}, },
"categories": { "categories": {
"category_name": "Nombre de categoría", "category_name": "Nombre de categoría",
@ -535,7 +604,8 @@
"no_categories_found": "No se encontraron categorías.", "no_categories_found": "No se encontraron categorías.",
"select_category": "Seleccionar categoría", "select_category": "Seleccionar categoría",
"update_after_refresh": "Las tarjetas de aventuras se actualizarán una vez que actualices la página.", "update_after_refresh": "Las tarjetas de aventuras se actualizarán una vez que actualices la página.",
"add_new_category": "Agregar nueva categoría" "add_new_category": "Agregar nueva categoría",
"name_required": "Se requiere el nombre de la categoría"
}, },
"dashboard": { "dashboard": {
"add_some": "¿Por qué no empezar a planificar tu próxima aventura? \nPuedes agregar una nueva aventura haciendo clic en el botón de abajo.", "add_some": "¿Por qué no empezar a planificar tu próxima aventura? \nPuedes agregar una nueva aventura haciendo clic en el botón de abajo.",
@ -545,7 +615,12 @@
"total_adventures": "Aventuras totales", "total_adventures": "Aventuras totales",
"total_visited_regions": "Total de regiones visitadas", "total_visited_regions": "Total de regiones visitadas",
"welcome_back": "Bienvenido de nuevo", "welcome_back": "Bienvenido de nuevo",
"total_visited_cities": "Total de ciudades visitadas" "total_visited_cities": "Total de ciudades visitadas",
"document_some_adventures": "¡Comience a documentar sus viajes y construya su mapa de aventura personal!",
"view_all": "Ver todo",
"welcome_text_1": "Has estado en",
"welcome_text_2": "Aventuras hasta ahora",
"welcome_text_3": "¡Sigue explorando y documentando tus viajes!"
}, },
"immich": { "immich": {
"api_key": "Clave API de Immich", "api_key": "Clave API de Immich",

View file

@ -178,7 +178,6 @@
"no_location_found": "Aucun lieu trouvé", "no_location_found": "Aucun lieu trouvé",
"note_delete_confirm": "Êtes-vous sûr de vouloir supprimer cette note ? \nCette action ne peut pas être annulée.", "note_delete_confirm": "Êtes-vous sûr de vouloir supprimer cette note ? \nCette action ne peut pas être annulée.",
"out_of_range": "Pas dans la plage de dates de l'itinéraire", "out_of_range": "Pas dans la plage de dates de l'itinéraire",
"show_region_labels": "Afficher les étiquettes de région",
"start": "Départ", "start": "Départ",
"starting_airport": "Aéroport de départ", "starting_airport": "Aéroport de départ",
"to": "Vers", "to": "Vers",
@ -233,7 +232,11 @@
"itinerary": "Itinéraire", "itinerary": "Itinéraire",
"joined": "Joint", "joined": "Joint",
"view_profile": "Afficher le profil", "view_profile": "Afficher le profil",
"share_collection": "Partagez cette collection!" "share_collection": "Partagez cette collection!",
"filters_and_sort": "Filtres",
"filters_and_stats": "Filtres",
"no_adventures_message": "Commencez à documenter vos aventures et à planifier de nouvelles. \nChaque voyage a une histoire qui mérite d'être racontée.",
"travel_progress": "Progrès du voyage"
}, },
"home": { "home": {
"desc_1": "Découvrez, planifiez et explorez en toute simplicité", "desc_1": "Découvrez, planifiez et explorez en toute simplicité",
@ -247,7 +250,11 @@
"go_to": "Aller au journal d'aventure", "go_to": "Aller au journal d'aventure",
"hero_1": "Découvrez les aventures les plus palpitantes du monde", "hero_1": "Découvrez les aventures les plus palpitantes du monde",
"hero_2": "Découvrez et planifiez votre prochaine aventure avec AdventureLog. \nExplorez des destinations à couper le souffle, créez des itinéraires personnalisés et restez connecté lors de vos déplacements.", "hero_2": "Découvrez et planifiez votre prochaine aventure avec AdventureLog. \nExplorez des destinations à couper le souffle, créez des itinéraires personnalisés et restez connecté lors de vos déplacements.",
"key_features": "Principales fonctionnalités" "key_features": "Principales fonctionnalités",
"explore_world": "Explorer le monde",
"latest_travel_experiences": "Vos dernières expériences de voyage",
"of_world": "du monde",
"start_your_journey": "Commencez votre voyage"
}, },
"navbar": { "navbar": {
"about": "À propos de AdventureLog", "about": "À propos de AdventureLog",
@ -263,7 +270,17 @@
"settings": "Paramètres", "settings": "Paramètres",
"shared_with_me": "Partagé avec moi", "shared_with_me": "Partagé avec moi",
"theme_selection": "Sélection de thèmes", "theme_selection": "Sélection de thèmes",
"themes": {}, "themes": {
"aestheticDark": "Esthétique sombre",
"aestheticLight": "Lumière esthétique",
"aqua": "Aqua",
"dark": "Sombre",
"dim": "Faible",
"forest": "Forêt",
"light": "Lumière",
"night": "Nuit",
"northernLights": "Lumières du Nord"
},
"users": "Utilisateurs", "users": "Utilisateurs",
"worldtravel": "Voyage dans le monde", "worldtravel": "Voyage dans le monde",
"my_tags": "Mes balises", "my_tags": "Mes balises",
@ -318,7 +335,36 @@
"removed": "supprimé", "removed": "supprimé",
"view_cities": "Voir les villes", "view_cities": "Voir les villes",
"visit_remove_failed": "Échec de la suppression de la visite", "visit_remove_failed": "Échec de la suppression de la visite",
"visit_to": "Visite à" "visit_to": "Visite à",
"all_regions": "Toutes les régions",
"available_to_explore": "Disponible pour explorer",
"cities_in": "Villes",
"clear_all": "Effacer tout",
"clear_all_filters": "Effacer tous les filtres",
"clear_filters": "Filtres à claire",
"complete": "Complet",
"countries": "pays",
"country_completed": "Pays achevé",
"filter_by": "Filtrer",
"filter_by_region": "Filtre par région",
"hide_map": "Carte de cachette",
"hide_map_labels": "Masquer les étiquettes de la carte",
"interactive_map": "Carte interactive",
"no_countries_found_desc": "Essayez d'ajuster vos termes de recherche ou vos filtres pour trouver les pays que vous recherchez.",
"no_country_data_available": "Aucune donnée de pays disponible",
"no_country_data_available_desc": "Veuillez vérifier la documentation pour la mise à jour des données régionales.",
"no_regions_found": "Aucune région trouvée",
"of": "de",
"partial": "Partiel",
"progress": "Progrès",
"progress_and_stats": "Progrès",
"region_completed": "Région terminée",
"remaining": "Restant",
"show_map": "Mapar de spectacle",
"show_map_labels": "Afficher les étiquettes de carte",
"total_cities": "Total des villes",
"total_countries": "Total des pays",
"total_regions": "Régions totales"
}, },
"settings": { "settings": {
"account_settings": "Paramètres du compte utilisateur", "account_settings": "Paramètres du compte utilisateur",
@ -453,7 +499,14 @@
"error_editing_collection": "Erreur lors de la modification de la collection", "error_editing_collection": "Erreur lors de la modification de la collection",
"new_collection": "Nouvelle collection", "new_collection": "Nouvelle collection",
"public_collection": "Collection publique", "public_collection": "Collection publique",
"manage_collections": "Gérer les collections" "manage_collections": "Gérer les collections",
"archived_appear_here": "Les collections archivées apparaîtront ici.",
"create_first": "Créez votre première collection pour organiser vos aventures et vos souvenirs.",
"make_sure_public": "Assurez-vous que votre profil est public afin que les autres puissent partager avec vous.",
"no_archived_collections": "Aucune collection archivée.",
"no_collections_yet": "Pas encore de collections",
"no_shared_collections": "Pas de collections partagées.",
"shared_collections": "Collections partagées"
}, },
"notes": { "notes": {
"add_a_link": "Ajouter un lien", "add_a_link": "Ajouter un lien",
@ -505,7 +558,15 @@
"clear_marker": "Effacer le marqueur", "clear_marker": "Effacer le marqueur",
"map_options": "Options de la carte", "map_options": "Options de la carte",
"show_visited_regions": "Afficher les régions visitées", "show_visited_regions": "Afficher les régions visitées",
"view_details": "Afficher les détails" "view_details": "Afficher les détails",
"adventure_stats": "Statistiques d'aventure",
"adventures_shown": "aventures montrées",
"completion": "Achèvement",
"display_options": "Options d'affichage",
"map_controls": "Contrôles de cartes",
"marker_placed_on_map": "Marqueur placé sur la carte",
"place_marker_desc": "Cliquez sur la carte pour placer un marqueur ou ajouter une aventure sans emplacement.",
"regions": "Régions"
}, },
"languages": {}, "languages": {},
"share": { "share": {
@ -525,7 +586,15 @@
"user_stats": "Statistiques de l'utilisateur", "user_stats": "Statistiques de l'utilisateur",
"visited_countries": "Pays visités", "visited_countries": "Pays visités",
"visited_regions": "Régions visitées", "visited_regions": "Régions visitées",
"visited_cities": "Villes visitées" "visited_cities": "Villes visitées",
"discovered": "découvert",
"explored": "exploré",
"no_shared_adventures": "Cet utilisateur n'a encore partagé aucune aventure publique.",
"no_shared_collections": "Cet utilisateur n'a pas encore partagé de collections publiques.",
"planned_trips": "Voyages prévus",
"public_adventure_experiences": "Expériences d'aventure publique",
"travel_statistics": "Statistiques de voyage",
"your_journey_at_a_glance": "Votre voyage d'aventure en un coup d'œil"
}, },
"categories": { "categories": {
"category_name": "Nom de la catégorie", "category_name": "Nom de la catégorie",
@ -535,7 +604,8 @@
"no_categories_found": "Aucune catégorie trouvée.", "no_categories_found": "Aucune catégorie trouvée.",
"select_category": "Sélectionnez une catégorie", "select_category": "Sélectionnez une catégorie",
"update_after_refresh": "Les cartes d'aventure seront mises à jour une fois que vous aurez actualisé la page.", "update_after_refresh": "Les cartes d'aventure seront mises à jour une fois que vous aurez actualisé la page.",
"add_new_category": "Ajouter une nouvelle catégorie" "add_new_category": "Ajouter une nouvelle catégorie",
"name_required": "Le nom de catégorie est requis"
}, },
"dashboard": { "dashboard": {
"add_some": "Pourquoi ne pas commencer à planifier votre prochaine aventure ? \nVous pouvez ajouter une nouvelle aventure en cliquant sur le bouton ci-dessous.", "add_some": "Pourquoi ne pas commencer à planifier votre prochaine aventure ? \nVous pouvez ajouter une nouvelle aventure en cliquant sur le bouton ci-dessous.",
@ -545,7 +615,12 @@
"total_adventures": "Aventures totales", "total_adventures": "Aventures totales",
"total_visited_regions": "Total des régions visitées", "total_visited_regions": "Total des régions visitées",
"welcome_back": "Content de te revoir", "welcome_back": "Content de te revoir",
"total_visited_cities": "Total des villes visitées" "total_visited_cities": "Total des villes visitées",
"document_some_adventures": "Commencez à documenter vos voyages et construisez votre carte d'aventure personnelle!",
"view_all": "Afficher tous",
"welcome_text_1": "Tu as été sur",
"welcome_text_2": "Aventures jusqu'à présent",
"welcome_text_3": "Continuez à explorer et à documenter vos voyages!"
}, },
"immich": { "immich": {
"api_key": "Clé d'API Immich", "api_key": "Clé d'API Immich",

View file

@ -178,7 +178,6 @@
"no_location_found": "Nessuna posizione trovata", "no_location_found": "Nessuna posizione trovata",
"note_delete_confirm": "Sei sicuro di voler eliminare questa nota? \nQuesta azione non può essere annullata.", "note_delete_confirm": "Sei sicuro di voler eliminare questa nota? \nQuesta azione non può essere annullata.",
"out_of_range": "Non nell'intervallo di date dell'itinerario", "out_of_range": "Non nell'intervallo di date dell'itinerario",
"show_region_labels": "Mostra etichette regione",
"start": "Inizio", "start": "Inizio",
"starting_airport": "Aeroporto di partenza", "starting_airport": "Aeroporto di partenza",
"to": "A", "to": "A",
@ -233,7 +232,11 @@
"itinerary": "Itinerario", "itinerary": "Itinerario",
"joined": "Partecipato", "joined": "Partecipato",
"view_profile": "Visualizza il profilo", "view_profile": "Visualizza il profilo",
"share_collection": "Condividi questa collezione!" "share_collection": "Condividi questa collezione!",
"filters_and_sort": "Filtri",
"filters_and_stats": "Filtri",
"no_adventures_message": "Inizia a documentare le tue avventure e pianificarne di nuove. \nOgni viaggio ha una storia che vale la pena raccontare.",
"travel_progress": "Progresso di viaggio"
}, },
"home": { "home": {
"desc_1": "Scopri, pianifica ed esplora con facilità", "desc_1": "Scopri, pianifica ed esplora con facilità",
@ -247,7 +250,11 @@
"go_to": "Vai a AdventureLog", "go_to": "Vai a AdventureLog",
"hero_1": "Scopri le avventure più emozionanti del mondo", "hero_1": "Scopri le avventure più emozionanti del mondo",
"hero_2": "Scopri e pianifica la tua prossima avventura con AdventureLog. \nEsplora destinazioni mozzafiato, crea itinerari personalizzati e rimani connesso mentre sei in movimento.", "hero_2": "Scopri e pianifica la tua prossima avventura con AdventureLog. \nEsplora destinazioni mozzafiato, crea itinerari personalizzati e rimani connesso mentre sei in movimento.",
"key_features": "Caratteristiche principali" "key_features": "Caratteristiche principali",
"explore_world": "Esplora il mondo",
"latest_travel_experiences": "Le tue ultime esperienze di viaggio",
"of_world": "del mondo",
"start_your_journey": "Inizia il tuo viaggio"
}, },
"navbar": { "navbar": {
"about": "Informazioni su AdventureLog", "about": "Informazioni su AdventureLog",
@ -263,7 +270,17 @@
"settings": "Impostazioni", "settings": "Impostazioni",
"shared_with_me": "Condiviso con me", "shared_with_me": "Condiviso con me",
"theme_selection": "Selezione del tema", "theme_selection": "Selezione del tema",
"themes": {}, "themes": {
"aestheticDark": "Oscuro estetico",
"aestheticLight": "Luce estetica",
"aqua": "Aqua",
"dark": "Buio",
"dim": "Fioco",
"forest": "Foresta",
"light": "Leggero",
"night": "Notte",
"northernLights": "Northern Lights"
},
"users": "Utenti", "users": "Utenti",
"worldtravel": "Viaggio nel mondo", "worldtravel": "Viaggio nel mondo",
"my_tags": "Le mie tag", "my_tags": "Le mie tag",
@ -318,7 +335,36 @@
"removed": "Rimosso", "removed": "Rimosso",
"view_cities": "Visualizza città", "view_cities": "Visualizza città",
"visit_remove_failed": "Impossibile rimuovere la visita", "visit_remove_failed": "Impossibile rimuovere la visita",
"visit_to": "Visita a" "visit_to": "Visita a",
"all_regions": "Tutte le regioni",
"available_to_explore": "Disponibile per esplorare",
"cities_in": "Città in",
"clear_all": "Cancella tutto",
"clear_all_filters": "Cancella tutti i filtri",
"clear_filters": "Filtri chiari",
"complete": "Completare",
"countries": "Paesi",
"country_completed": "Paese completato",
"filter_by": "Filtro di",
"filter_by_region": "Filtro per regione",
"hide_map": "Nascondi la mappa",
"hide_map_labels": "Nascondere le etichette delle mappe",
"interactive_map": "Mappa interattiva",
"no_countries_found_desc": "Prova a regolare i termini di ricerca o i filtri per trovare i paesi che stai cercando.",
"no_country_data_available": "Nessun dati di paese disponibile",
"no_country_data_available_desc": "Si prega di controllare la documentazione per l'aggiornamento dei dati della regione.",
"no_regions_found": "Nessuna regione trovata",
"of": "Di",
"partial": "Parziale",
"progress": "Progressi",
"progress_and_stats": "Progressi",
"region_completed": "Regione completata",
"remaining": "Rimanente",
"show_map": "Mostra mappa",
"show_map_labels": "Mostra etichette mappe",
"total_cities": "Città totali",
"total_countries": "Paesi totali",
"total_regions": "Regioni totali"
}, },
"settings": { "settings": {
"account_settings": "Impostazioni dell'account utente", "account_settings": "Impostazioni dell'account utente",
@ -453,7 +499,14 @@
"collection_edit_success": "Collezione modificata con successo!", "collection_edit_success": "Collezione modificata con successo!",
"create": "Creare", "create": "Creare",
"public_collection": "Collezione pubblica", "public_collection": "Collezione pubblica",
"manage_collections": "Gestisci collezioni" "manage_collections": "Gestisci collezioni",
"archived_appear_here": "Le collezioni archiviate appariranno qui.",
"create_first": "Crea la tua prima collezione per organizzare le tue avventure e i tuoi ricordi.",
"make_sure_public": "Assicurati che il tuo profilo sia pubblico in modo che gli altri possano condividere con te.",
"no_archived_collections": "Nessuna collezione archiviata.",
"no_collections_yet": "Nessuna collezione ancora",
"no_shared_collections": "Nessuna collezione condivisa.",
"shared_collections": "Collezioni condivise"
}, },
"notes": { "notes": {
"add_a_link": "Aggiungi un collegamento", "add_a_link": "Aggiungi un collegamento",
@ -505,7 +558,15 @@
"clear_marker": "Cancella indicatore", "clear_marker": "Cancella indicatore",
"map_options": "Opzioni della mappa", "map_options": "Opzioni della mappa",
"show_visited_regions": "Mostra regioni visitate", "show_visited_regions": "Mostra regioni visitate",
"view_details": "Visualizza dettagli" "view_details": "Visualizza dettagli",
"adventure_stats": "Statistiche di avventura",
"adventures_shown": "Avventure mostrate",
"completion": "Completamento",
"display_options": "Opzioni di visualizzazione",
"map_controls": "Controlli della mappa",
"marker_placed_on_map": "Marcatore posizionato sulla mappa",
"place_marker_desc": "Fai clic sulla mappa per posizionare un indicatore o aggiungi un'avventura senza posizione.",
"regions": "Regioni"
}, },
"languages": {}, "languages": {},
"share": { "share": {
@ -525,7 +586,15 @@
"user_stats": "Statistiche utente", "user_stats": "Statistiche utente",
"visited_countries": "Paesi visitati", "visited_countries": "Paesi visitati",
"visited_regions": "Regioni visitate", "visited_regions": "Regioni visitate",
"visited_cities": "Città visitate" "visited_cities": "Città visitate",
"discovered": "scoperto",
"explored": "esplorato",
"no_shared_adventures": "Questo utente non ha ancora condiviso avventure pubbliche.",
"no_shared_collections": "Questo utente non ha ancora condiviso alcuna collezione pubblica.",
"planned_trips": "Viaggi pianificati",
"public_adventure_experiences": "Esperienze di avventura pubblica",
"travel_statistics": "Statistiche di viaggio",
"your_journey_at_a_glance": "Il tuo viaggio d'avventura a colpo d'occhio"
}, },
"categories": { "categories": {
"category_name": "Nome della categoria", "category_name": "Nome della categoria",
@ -535,7 +604,8 @@
"no_categories_found": "Nessuna categoria trovata.", "no_categories_found": "Nessuna categoria trovata.",
"select_category": "Seleziona Categoria", "select_category": "Seleziona Categoria",
"update_after_refresh": "Le carte avventura verranno aggiornate una volta aggiornata la pagina.", "update_after_refresh": "Le carte avventura verranno aggiornate una volta aggiornata la pagina.",
"add_new_category": "Aggiungi nuova categoria" "add_new_category": "Aggiungi nuova categoria",
"name_required": "È richiesto il nome della categoria"
}, },
"dashboard": { "dashboard": {
"add_some": "Perché non iniziare a pianificare la tua prossima avventura? \nPuoi aggiungere una nuova avventura facendo clic sul pulsante in basso.", "add_some": "Perché non iniziare a pianificare la tua prossima avventura? \nPuoi aggiungere una nuova avventura facendo clic sul pulsante in basso.",
@ -545,7 +615,12 @@
"total_adventures": "Avventure totali", "total_adventures": "Avventure totali",
"total_visited_regions": "Totale regioni visitate", "total_visited_regions": "Totale regioni visitate",
"welcome_back": "Bentornato", "welcome_back": "Bentornato",
"total_visited_cities": "Totale città visitate" "total_visited_cities": "Totale città visitate",
"document_some_adventures": "Inizia a documentare i tuoi viaggi e costruisci la tua mappa di avventura personale!",
"view_all": "Visualizza tutto",
"welcome_text_1": "Sei stato acceso",
"welcome_text_2": "Avventure finora",
"welcome_text_3": "Continua a esplorare e documentare i tuoi viaggi!"
}, },
"immich": { "immich": {
"api_key": "Chiave API Immich", "api_key": "Chiave API Immich",

View file

@ -165,7 +165,6 @@
"share": "공유", "share": "공유",
"share_adventure": "이 모험을 공유하세요!", "share_adventure": "이 모험을 공유하세요!",
"show": "보기", "show": "보기",
"show_region_labels": "지역 레이블 표시",
"sort": "정렬", "sort": "정렬",
"sources": "출처", "sources": "출처",
"start": "시작", "start": "시작",
@ -233,7 +232,11 @@
"itinerary": "여정", "itinerary": "여정",
"joined": "가입", "joined": "가입",
"view_profile": "프로필을 봅니다", "view_profile": "프로필을 봅니다",
"share_collection": "이 컬렉션을 공유하십시오!" "share_collection": "이 컬렉션을 공유하십시오!",
"filters_and_sort": "필터",
"filters_and_stats": "필터",
"no_adventures_message": "모험을 문서화하고 새로운 모험을 계획하십시오. \n모든 여정에는 말할 가치가있는 이야기가 있습니다.",
"travel_progress": "여행 진행"
}, },
"auth": { "auth": {
"confirm_password": "비밀번호 확인", "confirm_password": "비밀번호 확인",
@ -265,7 +268,8 @@
"no_categories_found": "카테고리가 없습니다.", "no_categories_found": "카테고리가 없습니다.",
"select_category": "카테고리 선택", "select_category": "카테고리 선택",
"update_after_refresh": "페이지를 새로고침해야 모험 카드가 업데이트됩니다.", "update_after_refresh": "페이지를 새로고침해야 모험 카드가 업데이트됩니다.",
"add_new_category": "새 카테고리를 추가하십시오" "add_new_category": "새 카테고리를 추가하십시오",
"name_required": "카테고리 이름이 필요합니다"
}, },
"checklist": { "checklist": {
"checklist_delete_error": "체크리스트 삭제 오류", "checklist_delete_error": "체크리스트 삭제 오류",
@ -287,7 +291,14 @@
"error_editing_collection": "컬렉션 편집 오류", "error_editing_collection": "컬렉션 편집 오류",
"new_collection": "새로운 컬렉션", "new_collection": "새로운 컬렉션",
"public_collection": "공개 컬렉션", "public_collection": "공개 컬렉션",
"manage_collections": "컬렉션을 관리합니다" "manage_collections": "컬렉션을 관리합니다",
"archived_appear_here": "보관 된 컬렉션이 여기에 나타납니다.",
"create_first": "모험과 추억을 조직하기 위해 첫 번째 컬렉션을 만드십시오.",
"make_sure_public": "다른 사람들이 귀하와 공유 할 수 있도록 프로필이 공개되어 있는지 확인하십시오.",
"no_archived_collections": "보관 된 컬렉션이 없습니다.",
"no_collections_yet": "아직 컬렉션이 없습니다",
"no_shared_collections": "공유 컬렉션이 없습니다.",
"shared_collections": "공유 컬렉션"
}, },
"dashboard": { "dashboard": {
"add_some": "다음 모험을 계획해 보는게 어떨까요? 아래 버튼을 클릭하여 새로운 모험을 추가할 수 있습니다.", "add_some": "다음 모험을 계획해 보는게 어떨까요? 아래 버튼을 클릭하여 새로운 모험을 추가할 수 있습니다.",
@ -297,7 +308,12 @@
"total_adventures": "모든 모험", "total_adventures": "모든 모험",
"total_visited_cities": "방문한 모든 도시", "total_visited_cities": "방문한 모든 도시",
"total_visited_regions": "방문한 모든 지역", "total_visited_regions": "방문한 모든 지역",
"welcome_back": "다시 오신 것을 환영합니다" "welcome_back": "다시 오신 것을 환영합니다",
"document_some_adventures": "여행을 문서화하고 개인 모험지도를 구축하십시오!",
"view_all": "모두보기",
"welcome_text_1": "당신은있었습니다",
"welcome_text_2": "지금까지 모험",
"welcome_text_3": "여행을 계속 탐색하고 문서화하십시오!"
}, },
"home": { "home": {
"desc_1": "쉽고 편리하게 발견하고, 계획하고, 탐험하세요", "desc_1": "쉽고 편리하게 발견하고, 계획하고, 탐험하세요",
@ -311,7 +327,11 @@
"go_to": "Adventurelog로 이동", "go_to": "Adventurelog로 이동",
"hero_1": "세상에서 가장 짜릿한 모험을 발견하세요", "hero_1": "세상에서 가장 짜릿한 모험을 발견하세요",
"hero_2": "Adventurelog로 다음 모험을 발견하고 계획해 보세요. 환상적인 여행지를 탐색하고, 나만의 일정을 만드세요. 어디서든 접속할 수 있습니다.", "hero_2": "Adventurelog로 다음 모험을 발견하고 계획해 보세요. 환상적인 여행지를 탐색하고, 나만의 일정을 만드세요. 어디서든 접속할 수 있습니다.",
"key_features": "주요 기능" "key_features": "주요 기능",
"explore_world": "세상을 탐험하십시오",
"latest_travel_experiences": "최신 여행 경험",
"of_world": "세계의",
"start_your_journey": "여행을 시작하십시오"
}, },
"immich": { "immich": {
"api_key": "Immich API 키", "api_key": "Immich API 키",
@ -346,7 +366,15 @@
"clear_marker": "마커 초기화", "clear_marker": "마커 초기화",
"map_options": "지도 옵션", "map_options": "지도 옵션",
"show_visited_regions": "방문한 지역 보기", "show_visited_regions": "방문한 지역 보기",
"view_details": "상세 보기" "view_details": "상세 보기",
"adventure_stats": "모험 통계",
"adventures_shown": "모험 쇼",
"completion": "완성",
"display_options": "디스플레이 옵션",
"map_controls": "맵 컨트롤",
"marker_placed_on_map": "마커가지도에 배치되었습니다",
"place_marker_desc": "지도를 클릭하여 마커를 배치하거나 위치없이 모험을 추가하십시오.",
"regions": "지역"
}, },
"navbar": { "navbar": {
"about": "Adventurelog 소개", "about": "Adventurelog 소개",
@ -367,7 +395,17 @@
"support": "지원", "support": "지원",
"tag": "태그", "tag": "태그",
"theme_selection": "테마 선택", "theme_selection": "테마 선택",
"themes": {}, "themes": {
"aestheticDark": "미적 어둠",
"aestheticLight": "미적 빛",
"aqua": "아쿠아",
"dark": "어두운",
"dim": "어둑한",
"forest": "숲",
"light": "빛",
"night": "밤",
"northernLights": "북극광"
},
"users": "사용자", "users": "사용자",
"worldtravel": "세계 여행", "worldtravel": "세계 여행",
"admin_panel": "관리자 패널" "admin_panel": "관리자 패널"
@ -391,7 +429,15 @@
"user_stats": "사용자 통계", "user_stats": "사용자 통계",
"visited_cities": "방문한 도시", "visited_cities": "방문한 도시",
"visited_countries": "방문한 국가", "visited_countries": "방문한 국가",
"visited_regions": "방문한 지역" "visited_regions": "방문한 지역",
"discovered": "발견",
"explored": "탐험",
"no_shared_adventures": "이 사용자는 아직 공개 모험을 공유하지 않았습니다.",
"no_shared_collections": "이 사용자는 아직 공개 컬렉션을 공유하지 않았습니다.",
"planned_trips": "계획된 여행",
"public_adventure_experiences": "공개 모험 경험",
"your_journey_at_a_glance": "당신의 모험 여행",
"travel_statistics": "여행 통계"
}, },
"recomendations": { "recomendations": {
"recommendation": "추천", "recommendation": "추천",
@ -577,7 +623,36 @@
"removed": "제거됨", "removed": "제거됨",
"view_cities": "도시 보기", "view_cities": "도시 보기",
"visit_remove_failed": "방문 표시 제거 실패", "visit_remove_failed": "방문 표시 제거 실패",
"visit_to": "방문함" "visit_to": "방문함",
"all_regions": "모든 지역",
"available_to_explore": "탐색 할 수 있습니다",
"cities_in": "도시",
"clear_all": "모든 것을 지우십시오",
"clear_all_filters": "모든 필터를 지우십시오",
"clear_filters": "클리어 필터",
"complete": "완벽한",
"countries": "국가",
"country_completed": "국가 완료",
"filter_by": "필터",
"filter_by_region": "지역별 필터",
"hide_map": "지도를 숨 깁니다",
"hide_map_labels": "지도 레이블을 숨 깁니다",
"interactive_map": "대화식지도",
"no_countries_found_desc": "원하는 국가를 찾으려면 검색어 또는 필터를 조정해보십시오.",
"no_country_data_available": "국가 데이터를 사용할 수 없습니다",
"no_country_data_available_desc": "지역 데이터 업데이트는 문서를 확인하십시오.",
"no_regions_found": "발견되지 않았습니다",
"of": "~의",
"partial": "부분적",
"progress": "진전",
"progress_and_stats": "진전",
"region_completed": "지역 완료",
"remaining": "남아 있습니다",
"show_map": "지도 표시",
"show_map_labels": "지도 레이블 표시",
"total_cities": "총 도시",
"total_countries": "총 국가",
"total_regions": "총 지역"
}, },
"lodging": { "lodging": {
"apartment": "아파트", "apartment": "아파트",

View file

@ -177,7 +177,6 @@
"no_location_found": "Geen locatie gevonden", "no_location_found": "Geen locatie gevonden",
"note_delete_confirm": "Weet u zeker dat u deze notitie wilt verwijderen? \nDeze actie kan niet ongedaan worden gemaakt.", "note_delete_confirm": "Weet u zeker dat u deze notitie wilt verwijderen? \nDeze actie kan niet ongedaan worden gemaakt.",
"out_of_range": "Niet binnen het datumbereik van het reisplan", "out_of_range": "Niet binnen het datumbereik van het reisplan",
"show_region_labels": "Toon regiolabels",
"start": "Begin", "start": "Begin",
"starting_airport": "Luchthaven van vertrek", "starting_airport": "Luchthaven van vertrek",
"to": "Naar", "to": "Naar",
@ -233,7 +232,11 @@
"itinerary": "Routebeschrijving", "itinerary": "Routebeschrijving",
"joined": "Samengevoegd", "joined": "Samengevoegd",
"view_profile": "Bekijk profiel", "view_profile": "Bekijk profiel",
"share_collection": "Deel deze collectie!" "share_collection": "Deel deze collectie!",
"filters_and_sort": "Filters",
"filters_and_stats": "Filters",
"no_adventures_message": "Begin met het documenteren van uw avonturen en het plannen van nieuwe. \nElke reis heeft een verhaal dat het vertellen waard is.",
"travel_progress": "Reisvoortgang"
}, },
"home": { "home": {
"desc_1": "Ontdek, plan en verken met gemak", "desc_1": "Ontdek, plan en verken met gemak",
@ -247,7 +250,11 @@
"go_to": "Ga naar AdventureLog", "go_to": "Ga naar AdventureLog",
"hero_2": "Ontdek en plan je volgende avontuur met AdventureLog. \nOntdek adembenemende bestemmingen, maak aangepaste reisroutes en blijf onderweg verbonden.", "hero_2": "Ontdek en plan je volgende avontuur met AdventureLog. \nOntdek adembenemende bestemmingen, maak aangepaste reisroutes en blijf onderweg verbonden.",
"hero_1": "ontdek 's werelds meest opwindende avonturen", "hero_1": "ontdek 's werelds meest opwindende avonturen",
"key_features": "Belangrijkste kenmerken" "key_features": "Belangrijkste kenmerken",
"explore_world": "Verken de wereld",
"latest_travel_experiences": "Uw nieuwste reiservaringen",
"of_world": "van de wereld",
"start_your_journey": "Begin uw reis"
}, },
"navbar": { "navbar": {
"about": "Over AdventureLog", "about": "Over AdventureLog",
@ -263,7 +270,17 @@
"settings": "Instellingen", "settings": "Instellingen",
"shared_with_me": "Gedeeld met mij", "shared_with_me": "Gedeeld met mij",
"theme_selection": "Thema selectie", "theme_selection": "Thema selectie",
"themes": {}, "themes": {
"aestheticDark": "Esthetisch donker",
"aestheticLight": "Esthetisch licht",
"aqua": "Aqua",
"dark": "Donker",
"dim": "Vaag",
"forest": "Woud",
"light": "Licht",
"night": "Nacht",
"northernLights": "Noorderlicht"
},
"users": "Gebruikers", "users": "Gebruikers",
"worldtravel": "Wereldreizen", "worldtravel": "Wereldreizen",
"my_tags": "Mijn labels", "my_tags": "Mijn labels",
@ -318,7 +335,36 @@
"removed": "verwijderd", "removed": "verwijderd",
"view_cities": "Steden bekijken", "view_cities": "Steden bekijken",
"visit_remove_failed": "Kan bezoek niet verwijderen", "visit_remove_failed": "Kan bezoek niet verwijderen",
"visit_to": "Bezoek aan" "visit_to": "Bezoek aan",
"all_regions": "Alle regio's",
"available_to_explore": "Beschikbaar om te verkennen",
"cities_in": "Steden in",
"clear_all": "Duidelijk alles duidelijk",
"clear_all_filters": "Wis alle filters",
"clear_filters": "Duidelijke filters duiden",
"complete": "Compleet",
"countries": "landen",
"country_completed": "Voltooid land",
"filter_by": "Filteren door",
"filter_by_region": "Filter per regio",
"hide_map": "Verberg kaart",
"hide_map_labels": "Verberg kaartenlabels",
"interactive_map": "Interactieve kaart",
"no_countries_found_desc": "Probeer uw zoektermen of filters aan te passen om de landen te vinden die u zoekt.",
"no_country_data_available": "Geen landengegevens beschikbaar",
"no_country_data_available_desc": "Controleer de documentatie voor het bijwerken van regiogegevens.",
"no_regions_found": "Geen regio's gevonden",
"of": "van",
"partial": "Gedeeltelijk",
"progress": "Voortgang",
"progress_and_stats": "Voortgang",
"region_completed": "Regio voltooid",
"remaining": "Overig",
"show_map": "Toon kaart",
"show_map_labels": "Toon kaartlabels",
"total_cities": "Totale steden",
"total_countries": "Totale landen",
"total_regions": "Totaal aantal regio's"
}, },
"settings": { "settings": {
"account_settings": "Gebruikersaccount instellingen", "account_settings": "Gebruikersaccount instellingen",
@ -453,7 +499,14 @@
"error_editing_collection": "Fout bij het bewerken van de collectie", "error_editing_collection": "Fout bij het bewerken van de collectie",
"new_collection": "Nieuwe collectie", "new_collection": "Nieuwe collectie",
"public_collection": "Openbare collectie", "public_collection": "Openbare collectie",
"manage_collections": "Beheer collecties" "manage_collections": "Beheer collecties",
"archived_appear_here": "Gearchiveerde collecties zullen hier verschijnen.",
"create_first": "Maak je eerste collectie om je avonturen en herinneringen te organiseren.",
"make_sure_public": "Zorg ervoor dat uw profiel openbaar is, zodat anderen met u kunnen delen.",
"no_archived_collections": "Geen gearchiveerde collecties.",
"no_collections_yet": "Nog geen collecties",
"no_shared_collections": "Geen gedeelde collecties.",
"shared_collections": "Gedeelde collecties"
}, },
"notes": { "notes": {
"add_a_link": "Voeg een link toe", "add_a_link": "Voeg een link toe",
@ -505,7 +558,15 @@
"clear_marker": "Verwijder markeerpunt", "clear_marker": "Verwijder markeerpunt",
"map_options": "Kaartopties", "map_options": "Kaartopties",
"show_visited_regions": "Toon bezochte regio's", "show_visited_regions": "Toon bezochte regio's",
"view_details": "Details bekijken" "view_details": "Details bekijken",
"adventure_stats": "Avontuurstatistieken",
"adventures_shown": "Avonturen getoond",
"completion": "Voltooiing",
"display_options": "Display -opties",
"map_controls": "Kaartbesturing",
"marker_placed_on_map": "Marker geplaatst op kaart",
"place_marker_desc": "Klik op de kaart om een marker te plaatsen of voeg een avontuur toe zonder locatie.",
"regions": "Gebieden"
}, },
"languages": {}, "languages": {},
"share": { "share": {
@ -525,7 +586,15 @@
"user_stats": "Gebruikersstatistieken", "user_stats": "Gebruikersstatistieken",
"visited_countries": "Bezochte landen", "visited_countries": "Bezochte landen",
"visited_regions": "Bezochte regio's", "visited_regions": "Bezochte regio's",
"visited_cities": "Steden bezocht" "visited_cities": "Steden bezocht",
"discovered": "ontdekt",
"explored": "onderzocht",
"no_shared_adventures": "Deze gebruiker heeft nog geen openbare avonturen gedeeld.",
"no_shared_collections": "Deze gebruiker heeft nog geen openbare collecties gedeeld.",
"planned_trips": "Geplande reizen",
"public_adventure_experiences": "Publieke avontuurlijke ervaringen",
"travel_statistics": "Reisstatistieken",
"your_journey_at_a_glance": "Je avontuurlijke reis in één oogopslag"
}, },
"categories": { "categories": {
"category_name": "Categorienaam", "category_name": "Categorienaam",
@ -535,7 +604,8 @@
"no_categories_found": "Geen categorieën gevonden.", "no_categories_found": "Geen categorieën gevonden.",
"select_category": "Selecteer een categorie", "select_category": "Selecteer een categorie",
"update_after_refresh": "De avonturenkaarten worden bijgewerkt zodra u de pagina vernieuwt.", "update_after_refresh": "De avonturenkaarten worden bijgewerkt zodra u de pagina vernieuwt.",
"add_new_category": "Voeg een nieuwe categorie toe" "add_new_category": "Voeg een nieuwe categorie toe",
"name_required": "Categorienaam is vereist"
}, },
"dashboard": { "dashboard": {
"add_some": "Waarom begint u niet met het plannen van uw volgende avontuur? \nJe kunt een nieuw avontuur toevoegen door op de onderstaande knop te klikken.", "add_some": "Waarom begint u niet met het plannen van uw volgende avontuur? \nJe kunt een nieuw avontuur toevoegen door op de onderstaande knop te klikken.",
@ -545,7 +615,12 @@
"total_adventures": "Totale avonturen", "total_adventures": "Totale avonturen",
"total_visited_regions": "Totaal bezochte regio's", "total_visited_regions": "Totaal bezochte regio's",
"welcome_back": "Welkom terug", "welcome_back": "Welkom terug",
"total_visited_cities": "Totaal bezochte steden" "total_visited_cities": "Totaal bezochte steden",
"document_some_adventures": "Begin met het documenteren van uw reizen en bouw uw persoonlijke avontuurlijke kaart!",
"view_all": "Bekijk alles",
"welcome_text_1": "Je bent op",
"welcome_text_2": "Avonturen tot nu toe",
"welcome_text_3": "Blijf je reizen verkennen en documenteren!"
}, },
"immich": { "immich": {
"api_key": "Immich API-sleutel", "api_key": "Immich API-sleutel",

View file

@ -21,7 +21,17 @@
"calendar": "Kalender", "calendar": "Kalender",
"theme_selection": "Tema-valg", "theme_selection": "Tema-valg",
"admin_panel": "Admin Panel", "admin_panel": "Admin Panel",
"themes": {} "themes": {
"aestheticDark": "Estetisk mørke",
"aestheticLight": "Estetisk lys",
"aqua": "Aqua",
"dark": "Mørk",
"dim": "Svak",
"forest": "Skog",
"light": "Lys",
"night": "Natt",
"northernLights": "Nordlys"
}
}, },
"about": { "about": {
"about": "Om", "about": "Om",
@ -47,7 +57,11 @@
"feature_2": "Reiseplanlegging", "feature_2": "Reiseplanlegging",
"feature_2_desc": "Lag enkelt tilpassede reiseplaner og få en dag-for-dag oversikt over turen din.", "feature_2_desc": "Lag enkelt tilpassede reiseplaner og få en dag-for-dag oversikt over turen din.",
"feature_3": "Reisekart", "feature_3": "Reisekart",
"feature_3_desc": "Se reisene dine over hele verden med et interaktivt kart og utforsk nye destinasjoner." "feature_3_desc": "Se reisene dine over hele verden med et interaktivt kart og utforsk nye destinasjoner.",
"explore_world": "Utforsk verden",
"latest_travel_experiences": "Dine siste reiseopplevelser",
"of_world": "av verden",
"start_your_journey": "Start reisen"
}, },
"adventures": { "adventures": {
"collection_remove_success": "Eventyret ble fjernet fra samlingen!", "collection_remove_success": "Eventyret ble fjernet fra samlingen!",
@ -94,7 +108,6 @@
"date_constrain": "Begrens til samlingsdatoer", "date_constrain": "Begrens til samlingsdatoer",
"rating": "Vurdering", "rating": "Vurdering",
"my_images": "Mine bilder", "my_images": "Mine bilder",
"show_region_labels": "Vis regionetiketter",
"no_images": "Ingen bilder", "no_images": "Ingen bilder",
"share_adventure": "Del dette eventyret!", "share_adventure": "Del dette eventyret!",
"copy_link": "Kopier lenke", "copy_link": "Kopier lenke",
@ -271,7 +284,11 @@
"itinerary": "Reiserute", "itinerary": "Reiserute",
"joined": "Ble med", "joined": "Ble med",
"view_profile": "Vis profil", "view_profile": "Vis profil",
"share_collection": "Del denne samlingen!" "share_collection": "Del denne samlingen!",
"filters_and_sort": "Filtre",
"filters_and_stats": "Filtre",
"no_adventures_message": "Begynn å dokumentere eventyrene dine og planlegge nye. \nHver reise har en historie som er verdt å fortelle.",
"travel_progress": "Reisefremgang"
}, },
"worldtravel": { "worldtravel": {
"country_list": "Liste over land", "country_list": "Liste over land",
@ -293,7 +310,36 @@
"failed_to_remove_visit": "Kunne ikke fjerne besøk i", "failed_to_remove_visit": "Kunne ikke fjerne besøk i",
"marked_visited": "markert som besøkt", "marked_visited": "markert som besøkt",
"regions_in": "Regioner i", "regions_in": "Regioner i",
"cities": "byer" "cities": "byer",
"all_regions": "Alle regioner",
"available_to_explore": "Tilgjengelig for å utforske",
"cities_in": "Byer i",
"clear_all": "Fjern alle",
"clear_all_filters": "Fjern alle filtre",
"clear_filters": "Klare filtre",
"complete": "Fullstendig",
"countries": "land",
"country_completed": "Land fullført",
"filter_by": "Filter av",
"filter_by_region": "Filter etter region",
"hide_map": "Skjul kart",
"hide_map_labels": "Skjul kartetiketter",
"interactive_map": "Interaktivt kart",
"no_countries_found_desc": "Prøv å justere søkeordene eller filtrene dine for å finne landene du leter etter.",
"no_country_data_available": "Ingen landsdata tilgjengelig",
"no_country_data_available_desc": "Vennligst sjekk dokumentasjonen for oppdatering av regiondata.",
"no_regions_found": "Ingen regioner funnet",
"of": "av",
"partial": "Delvis",
"progress": "Framgang",
"progress_and_stats": "Framgang",
"region_completed": "Region fullført",
"remaining": "Gjenværende",
"show_map": "Vis kart",
"show_map_labels": "Vis kartetiketter",
"total_cities": "Totalt byer",
"total_countries": "Totalt land",
"total_regions": "Totale regioner"
}, },
"auth": { "auth": {
"username": "Brukernavn", "username": "Brukernavn",
@ -441,7 +487,14 @@
"collection_edit_success": "Samling redigert!", "collection_edit_success": "Samling redigert!",
"error_editing_collection": "Feil ved redigering av samling", "error_editing_collection": "Feil ved redigering av samling",
"public_collection": "Offentlig samling", "public_collection": "Offentlig samling",
"manage_collections": "Administrer samlinger" "manage_collections": "Administrer samlinger",
"archived_appear_here": "Arkiverte samlinger vises her.",
"create_first": "Lag din første samling for å organisere eventyrene og minnene dine.",
"make_sure_public": "Forsikre deg om at profilen din er offentlig, slik at andre kan dele med deg.",
"no_archived_collections": "Ingen arkiverte samlinger.",
"no_collections_yet": "Ingen samlinger ennå",
"no_shared_collections": "Ingen delte samlinger.",
"shared_collections": "Delte samlinger"
}, },
"notes": { "notes": {
"note_deleted": "Notat slettet!", "note_deleted": "Notat slettet!",
@ -522,7 +575,15 @@
"show_visited_regions": "Vis besøkte regioner", "show_visited_regions": "Vis besøkte regioner",
"add_adventure_at_marker": "Legg til nytt eventyr ved markøren", "add_adventure_at_marker": "Legg til nytt eventyr ved markøren",
"clear_marker": "Fjern markør", "clear_marker": "Fjern markør",
"add_adventure": "Legg til nytt eventyr" "add_adventure": "Legg til nytt eventyr",
"adventure_stats": "Eventyrstatistikk",
"adventures_shown": "Eventyr vist",
"completion": "Fullføring",
"display_options": "Vis alternativer",
"map_controls": "Kartkontroller",
"marker_placed_on_map": "Markør plassert på kart",
"place_marker_desc": "Klikk på kartet for å plassere en markør, eller legg til et eventyr uten beliggenhet.",
"regions": "Regioner"
}, },
"share": { "share": {
"shared": "Delt", "shared": "Delt",
@ -542,7 +603,15 @@
"user_stats": "Brukerstatistikk", "user_stats": "Brukerstatistikk",
"visited_countries": "Besøkte land", "visited_countries": "Besøkte land",
"visited_regions": "Besøkte regioner", "visited_regions": "Besøkte regioner",
"visited_cities": "Besøkte byer" "visited_cities": "Besøkte byer",
"discovered": "oppdaget",
"explored": "utforsket",
"no_shared_adventures": "Denne brukeren har ikke delt noen offentlige eventyr ennå.",
"no_shared_collections": "Denne brukeren har ikke delt noen offentlige samlinger ennå.",
"planned_trips": "Planlagte turer",
"public_adventure_experiences": "Offentlige eventyropplevelser",
"travel_statistics": "Reisestatistikk",
"your_journey_at_a_glance": "Din eventyrreise på et øyeblikk"
}, },
"categories": { "categories": {
"manage_categories": "Administrer kategorier", "manage_categories": "Administrer kategorier",
@ -552,7 +621,8 @@
"update_after_refresh": "Eventyrkortene vil oppdateres når du oppdaterer siden.", "update_after_refresh": "Eventyrkortene vil oppdateres når du oppdaterer siden.",
"select_category": "Velg kategori", "select_category": "Velg kategori",
"category_name": "Kategorinavn", "category_name": "Kategorinavn",
"add_new_category": "Legg til ny kategori" "add_new_category": "Legg til ny kategori",
"name_required": "Kategorinavnet er påkrevd"
}, },
"dashboard": { "dashboard": {
"welcome_back": "Velkommen tilbake", "welcome_back": "Velkommen tilbake",
@ -562,7 +632,12 @@
"total_visited_cities": "Totalt antall besøkte byer", "total_visited_cities": "Totalt antall besøkte byer",
"recent_adventures": "Nylige eventyr", "recent_adventures": "Nylige eventyr",
"no_recent_adventures": "Ingen nylige eventyr?", "no_recent_adventures": "Ingen nylige eventyr?",
"add_some": "Hvorfor ikke begynne å planlegge ditt neste eventyr? Du kan legge til et nytt eventyr ved å klikke på knappen nedenfor." "add_some": "Hvorfor ikke begynne å planlegge ditt neste eventyr? Du kan legge til et nytt eventyr ved å klikke på knappen nedenfor.",
"document_some_adventures": "Begynn å dokumentere dine reiser og bygg ditt personlige eventyrkart!",
"view_all": "Se alle",
"welcome_text_1": "Du har vært på",
"welcome_text_2": "Eventyr så langt",
"welcome_text_3": "Fortsett å utforske og dokumentere dine reiser!"
}, },
"immich": { "immich": {
"immich": "Immich", "immich": "Immich",

View file

@ -19,7 +19,17 @@
"language_selection": "Wybór języka", "language_selection": "Wybór języka",
"support": "Wsparcie", "support": "Wsparcie",
"theme_selection": "Wybór motywu", "theme_selection": "Wybór motywu",
"themes": {}, "themes": {
"aestheticDark": "Estetyczna ciemność",
"aestheticLight": "Światło estetyczne",
"aqua": "Aqua",
"dark": "Ciemny",
"dim": "Ciemny",
"forest": "Las",
"light": "Światło",
"night": "Noc",
"northernLights": "Północne światła"
},
"calendar": "Kalendarz", "calendar": "Kalendarz",
"admin_panel": "Panel administracyjny" "admin_panel": "Panel administracyjny"
}, },
@ -47,7 +57,11 @@
"feature_2": "Planowanie podróży", "feature_2": "Planowanie podróży",
"feature_2_desc": "Łatwo twórz spersonalizowane plany podróży i uzyskaj szczegółowy rozkład swojego wyjazdu na każdy dzień.", "feature_2_desc": "Łatwo twórz spersonalizowane plany podróży i uzyskaj szczegółowy rozkład swojego wyjazdu na każdy dzień.",
"feature_3": "Mapa podróży", "feature_3": "Mapa podróży",
"feature_3_desc": "Zobacz swoje podróże na całym świecie dzięki interaktywnej mapie i odkrywaj nowe miejsca." "feature_3_desc": "Zobacz swoje podróże na całym świecie dzięki interaktywnej mapie i odkrywaj nowe miejsca.",
"explore_world": "Poznaj świat",
"latest_travel_experiences": "Twoje najnowsze wrażenia z podróży",
"of_world": "świata",
"start_your_journey": "Rozpocznij swoją podróż"
}, },
"adventures": { "adventures": {
"collection_remove_success": "Podróż została pomyślnie usunięta z kolekcji!", "collection_remove_success": "Podróż została pomyślnie usunięta z kolekcji!",
@ -216,7 +230,6 @@
"no_location_found": "Nie znaleziono lokalizacji", "no_location_found": "Nie znaleziono lokalizacji",
"note_delete_confirm": "Czy na pewno chcesz usunąć tę notatkę? \nTej akcji nie można cofnąć.", "note_delete_confirm": "Czy na pewno chcesz usunąć tę notatkę? \nTej akcji nie można cofnąć.",
"out_of_range": "Nie mieści się w zakresie dat planu podróży", "out_of_range": "Nie mieści się w zakresie dat planu podróży",
"show_region_labels": "Pokaż etykiety regionów",
"start": "Start", "start": "Start",
"starting_airport": "Początkowe lotnisko", "starting_airport": "Początkowe lotnisko",
"to": "Do", "to": "Do",
@ -271,7 +284,11 @@
"itinerary": "Trasa", "itinerary": "Trasa",
"joined": "Dołączył", "joined": "Dołączył",
"view_profile": "Zobacz profil", "view_profile": "Zobacz profil",
"share_collection": "Udostępnij tę kolekcję!" "share_collection": "Udostępnij tę kolekcję!",
"filters_and_sort": "Filtry",
"filters_and_stats": "Filtry",
"no_adventures_message": "Zacznij dokumentować swoje przygody i planować nowe. \nKażda podróż ma historię, którą warto opowiedzieć.",
"travel_progress": "Postęp podróży"
}, },
"worldtravel": { "worldtravel": {
"country_list": "Lista krajów", "country_list": "Lista krajów",
@ -293,7 +310,36 @@
"removed": "REMOVED", "removed": "REMOVED",
"view_cities": "Zobacz Miasta", "view_cities": "Zobacz Miasta",
"visit_remove_failed": "Nie udało się usunąć wizyty", "visit_remove_failed": "Nie udało się usunąć wizyty",
"visit_to": "Wizyta w" "visit_to": "Wizyta w",
"available_to_explore": "Dostępne do odkrycia",
"clear_all": "Wyczyść wszystko",
"clear_all_filters": "Wyczyść wszystkie filtry",
"clear_filters": "Jasne filtry",
"complete": "Kompletny",
"countries": "kraje",
"country_completed": "Kraj zakończony",
"filter_by": "Filtr przez",
"filter_by_region": "Filtr według regionu",
"hide_map": "Ukryj mapę",
"hide_map_labels": "Ukryj etykiety mapy",
"interactive_map": "Interaktywna mapa",
"no_countries_found_desc": "Spróbuj dostosować wyszukiwane warunki lub filtry, aby znaleźć kraje, których szukasz.",
"no_country_data_available": "Brak danych krajowych",
"no_country_data_available_desc": "Sprawdź dokumentację aktualizacji danych regionu.",
"no_regions_found": "Nie znaleziono żadnych regionów",
"of": "z",
"partial": "Częściowy",
"progress": "Postęp",
"progress_and_stats": "Postęp",
"region_completed": "Region ukończony",
"remaining": "Pozostały",
"show_map": "Pokaż mapę",
"show_map_labels": "Pokaż etykiety mapy",
"total_cities": "Całkowite miasta",
"total_countries": "Kraje ogółem",
"total_regions": "Regiony ogółem",
"all_regions": "Wszystkie regiony",
"cities_in": "Miasta w"
}, },
"auth": { "auth": {
"username": "Nazwa użytkownika", "username": "Nazwa użytkownika",
@ -441,7 +487,14 @@
"collection_edit_success": "Kolekcja została pomyślnie edytowana!", "collection_edit_success": "Kolekcja została pomyślnie edytowana!",
"error_editing_collection": "Błąd podczas edytowania kolekcji", "error_editing_collection": "Błąd podczas edytowania kolekcji",
"public_collection": "Kolekcja publiczna", "public_collection": "Kolekcja publiczna",
"manage_collections": "Zarządzaj kolekcjami" "manage_collections": "Zarządzaj kolekcjami",
"archived_appear_here": "Zarchiwizowane kolekcje pojawią się tutaj.",
"create_first": "Stwórz swoją pierwszą kolekcję, aby zorganizować swoje przygody i wspomnienia.",
"make_sure_public": "Upewnij się, że Twój profil jest publiczny, aby inni mogli się z tobą podzielić.",
"no_archived_collections": "Brak zarchiwizowanych kolekcji.",
"no_collections_yet": "Brak kolekcji",
"no_shared_collections": "Brak wspólnych kolekcji.",
"shared_collections": "Wspólne kolekcje"
}, },
"notes": { "notes": {
"note_deleted": "Notatka została pomyślnie usunięta!", "note_deleted": "Notatka została pomyślnie usunięta!",
@ -505,7 +558,15 @@
"show_visited_regions": "Pokaż odwiedzone regiony", "show_visited_regions": "Pokaż odwiedzone regiony",
"add_adventure_at_marker": "Dodaj nową podróż w miejscu zaznaczenia", "add_adventure_at_marker": "Dodaj nową podróż w miejscu zaznaczenia",
"clear_marker": "Usuń znacznik", "clear_marker": "Usuń znacznik",
"add_adventure": "Dodaj nową podróż" "add_adventure": "Dodaj nową podróż",
"adventure_stats": "Statystyki przygodowe",
"adventures_shown": "Pokazane przygody",
"completion": "Ukończenie",
"display_options": "Opcje wyświetlania",
"map_controls": "Sterowanie mapą",
"marker_placed_on_map": "Marker umieszczony na mapie",
"place_marker_desc": "Kliknij mapę, aby umieścić znacznik lub dodać przygodę bez lokalizacji.",
"regions": "Regiony"
}, },
"share": { "share": {
"shared": "Udostępnione", "shared": "Udostępnione",
@ -525,7 +586,15 @@
"user_stats": "Statystyki użytkownika", "user_stats": "Statystyki użytkownika",
"visited_countries": "Odwiedzone kraje", "visited_countries": "Odwiedzone kraje",
"visited_regions": "Odwiedzone regiony", "visited_regions": "Odwiedzone regiony",
"visited_cities": "Odwiedzone miasta" "visited_cities": "Odwiedzone miasta",
"discovered": "odkryty",
"explored": "zbadane",
"no_shared_adventures": "Ten użytkownik nie podzielił się jeszcze żadnymi publicznymi przygodami.",
"no_shared_collections": "Ten użytkownik nie udostępnił jeszcze żadnych publicznych kolekcji.",
"planned_trips": "Planowane wycieczki",
"public_adventure_experiences": "Public Adventure Doświadczenia",
"travel_statistics": "Statystyka podróży",
"your_journey_at_a_glance": "Twoja przygodowa podróż na pierwszy rzut oka"
}, },
"categories": { "categories": {
"manage_categories": "Zarządzaj kategoriami", "manage_categories": "Zarządzaj kategoriami",
@ -535,7 +604,8 @@
"update_after_refresh": "Karty podróży zostaną zaktualizowane po odświeżeniu strony.", "update_after_refresh": "Karty podróży zostaną zaktualizowane po odświeżeniu strony.",
"select_category": "Wybierz kategorię", "select_category": "Wybierz kategorię",
"category_name": "Nazwa kategorii", "category_name": "Nazwa kategorii",
"add_new_category": "Dodaj nową kategorię" "add_new_category": "Dodaj nową kategorię",
"name_required": "Nazwa kategorii jest wymagana"
}, },
"dashboard": { "dashboard": {
"add_some": "Dlaczego nie zacząć planować kolejnej przygody? \nMożesz dodać nową przygodę, klikając przycisk poniżej.", "add_some": "Dlaczego nie zacząć planować kolejnej przygody? \nMożesz dodać nową przygodę, klikając przycisk poniżej.",
@ -545,7 +615,12 @@
"total_adventures": "Totalne przygody", "total_adventures": "Totalne przygody",
"total_visited_regions": "Łączna liczba odwiedzonych regionów", "total_visited_regions": "Łączna liczba odwiedzonych regionów",
"welcome_back": "Witamy z powrotem", "welcome_back": "Witamy z powrotem",
"total_visited_cities": "Łączna liczba odwiedzonych miast" "total_visited_cities": "Łączna liczba odwiedzonych miast",
"document_some_adventures": "Zacznij dokumentować swoje podróże i zbuduj osobistą mapę przygodową!",
"view_all": "Zobacz wszystkie",
"welcome_text_1": "Byłeś włączony",
"welcome_text_2": "Jak dotąd przygody",
"welcome_text_3": "Badaj i dokumentuj swoje podróże!"
}, },
"immich": { "immich": {
"api_key": "Klucz API Immicha", "api_key": "Klucz API Immicha",

View file

@ -21,7 +21,17 @@
"calendar": "Календарь", "calendar": "Календарь",
"theme_selection": "Выбор темы", "theme_selection": "Выбор темы",
"admin_panel": "Панель администратора", "admin_panel": "Панель администратора",
"themes": {} "themes": {
"aestheticDark": "Эстетическая темнота",
"aestheticLight": "Эстетический свет",
"aqua": "Аква",
"dark": "Темный",
"dim": "Тусклый",
"forest": "Лес",
"light": "Свет",
"night": "Ночь",
"northernLights": "Северное сияние"
}
}, },
"about": { "about": {
"about": "О программе", "about": "О программе",
@ -47,7 +57,11 @@
"feature_2": "Планирование поездок", "feature_2": "Планирование поездок",
"feature_2_desc": "Легко создавайте персональные маршруты и получайте подробную разбивку поездки по дням.", "feature_2_desc": "Легко создавайте персональные маршруты и получайте подробную разбивку поездки по дням.",
"feature_3": "Карта путешествий", "feature_3": "Карта путешествий",
"feature_3_desc": "Просматривайте свои путешествия по всему миру с интерактивной картой и открывайте новые направления." "feature_3_desc": "Просматривайте свои путешествия по всему миру с интерактивной картой и открывайте новые направления.",
"explore_world": "Исследуйте мир",
"latest_travel_experiences": "Ваш последний опыт путешествий",
"of_world": "мира",
"start_your_journey": "Начните свое путешествие"
}, },
"adventures": { "adventures": {
"collection_remove_success": "Приключение успешно удалено из коллекции!", "collection_remove_success": "Приключение успешно удалено из коллекции!",
@ -104,7 +118,6 @@
"date_constrain": "Ограничить датами коллекции", "date_constrain": "Ограничить датами коллекции",
"rating": "Рейтинг", "rating": "Рейтинг",
"my_images": "Мои изображения", "my_images": "Мои изображения",
"show_region_labels": "Показать названия регионов",
"no_images": "Нет изображений", "no_images": "Нет изображений",
"distance": "Расстояние", "distance": "Расстояние",
"share_adventure": "Поделиться этим приключением!", "share_adventure": "Поделиться этим приключением!",
@ -271,7 +284,11 @@
"lodging_information": "Информация о жилье", "lodging_information": "Информация о жилье",
"price": "Цена", "price": "Цена",
"reservation_number": "Номер бронирования", "reservation_number": "Номер бронирования",
"share_collection": "Поделитесь этой коллекцией!" "share_collection": "Поделитесь этой коллекцией!",
"filters_and_sort": "Фильтры",
"filters_and_stats": "Фильтры",
"no_adventures_message": "Начните документировать ваши приключения и планировать новые. \nУ каждого путешествия есть история, которую стоит рассказать.",
"travel_progress": "Прогресс путешествий"
}, },
"worldtravel": { "worldtravel": {
"country_list": "Список стран", "country_list": "Список стран",
@ -293,7 +310,36 @@
"failed_to_remove_visit": "Не удалось удалить посещение", "failed_to_remove_visit": "Не удалось удалить посещение",
"marked_visited": "отмечено как посещённое", "marked_visited": "отмечено как посещённое",
"regions_in": "Регионы в", "regions_in": "Регионы в",
"cities": "городов" "cities": "городов",
"all_regions": "Все регионы",
"available_to_explore": "Доступно для изучения",
"cities_in": "Города в",
"clear_all": "Очистить все",
"clear_all_filters": "Очистить все фильтры",
"clear_filters": "Четкие фильтры",
"complete": "Полный",
"countries": "страны",
"country_completed": "Страна завершена",
"filter_by": "Фильтр за",
"filter_by_region": "Фильтр по региону",
"hide_map": "Скрыть карту",
"hide_map_labels": "Скрыть этикетки карты",
"interactive_map": "Интерактивная карта",
"no_countries_found_desc": "Попробуйте настройки ваших поисковых терминов или фильтров, чтобы найти страны, которые вы ищете.",
"no_country_data_available": "Данные о стране не доступны",
"no_country_data_available_desc": "Пожалуйста, проверьте документацию для обновления данных региона.",
"no_regions_found": "Не было найдено регионов",
"of": "из",
"partial": "Частично",
"progress": "Прогресс",
"progress_and_stats": "Прогресс",
"region_completed": "Регион завершен",
"remaining": "Оставшийся",
"show_map": "Показать карту",
"show_map_labels": "Показать этикетки карты",
"total_cities": "Общие города",
"total_countries": "Всего стран",
"total_regions": "Общие регионы"
}, },
"auth": { "auth": {
"username": "Имя пользователя", "username": "Имя пользователя",
@ -441,7 +487,14 @@
"collection_edit_success": "Коллекция успешно отредактирована!", "collection_edit_success": "Коллекция успешно отредактирована!",
"error_editing_collection": "Ошибка редактирования коллекции", "error_editing_collection": "Ошибка редактирования коллекции",
"public_collection": "Публичная коллекция", "public_collection": "Публичная коллекция",
"manage_collections": "Управлять коллекциями" "manage_collections": "Управлять коллекциями",
"archived_appear_here": "Архивные коллекции появятся здесь.",
"create_first": "Создайте свою первую коллекцию, чтобы организовать свои приключения и воспоминания.",
"make_sure_public": "Убедитесь, что ваш профиль публично, чтобы другие могли поделиться с вами.",
"no_archived_collections": "Нет архивированных коллекций.",
"no_collections_yet": "Пока нет коллекций",
"no_shared_collections": "Нет общих коллекций.",
"shared_collections": "Общие коллекции"
}, },
"notes": { "notes": {
"note_deleted": "Заметка успешно удалена!", "note_deleted": "Заметка успешно удалена!",
@ -522,7 +575,15 @@
"show_visited_regions": "Показать посещенные регионы", "show_visited_regions": "Показать посещенные регионы",
"add_adventure_at_marker": "Добавить новое приключение в отмеченном месте", "add_adventure_at_marker": "Добавить новое приключение в отмеченном месте",
"clear_marker": "Очистить маркер", "clear_marker": "Очистить маркер",
"add_adventure": "Добавить новое приключение" "add_adventure": "Добавить новое приключение",
"adventure_stats": "Приключенческая статистика",
"adventures_shown": "Приключения показаны",
"completion": "Завершение",
"display_options": "Параметры отображения",
"map_controls": "Карта управления",
"marker_placed_on_map": "Маркер размещен на карте",
"place_marker_desc": "Нажмите на карту, чтобы разместить маркер, или добавить приключение без местоположения.",
"regions": "Регионы"
}, },
"share": { "share": {
"shared": "Поделено", "shared": "Поделено",
@ -542,7 +603,15 @@
"user_stats": "Статистика пользователя", "user_stats": "Статистика пользователя",
"visited_countries": "Посещенные страны", "visited_countries": "Посещенные страны",
"visited_regions": "Посещенные регионы", "visited_regions": "Посещенные регионы",
"visited_cities": "Посещенные города" "visited_cities": "Посещенные города",
"discovered": "обнаруженный",
"explored": "исследован",
"no_shared_adventures": "Этот пользователь еще не поделился публичными приключениями.",
"no_shared_collections": "Этот пользователь еще не поделился публичными коллекциями.",
"planned_trips": "Запланированные поездки",
"public_adventure_experiences": "Общественные приключения",
"travel_statistics": "Статистика путешествий",
"your_journey_at_a_glance": "Ваше приключенческое путешествие с первого взгляда"
}, },
"categories": { "categories": {
"manage_categories": "Управление категориями", "manage_categories": "Управление категориями",
@ -552,7 +621,8 @@
"update_after_refresh": "Карточки приключений будут обновлены после обновления страницы.", "update_after_refresh": "Карточки приключений будут обновлены после обновления страницы.",
"select_category": "Выбрать категорию", "select_category": "Выбрать категорию",
"category_name": "Название категории", "category_name": "Название категории",
"add_new_category": "Добавить новую категорию" "add_new_category": "Добавить новую категорию",
"name_required": "Требуется название категории"
}, },
"dashboard": { "dashboard": {
"welcome_back": "Добро пожаловать обратно", "welcome_back": "Добро пожаловать обратно",
@ -562,7 +632,12 @@
"total_visited_cities": "Всего посещенных городов", "total_visited_cities": "Всего посещенных городов",
"recent_adventures": "Недавние приключения", "recent_adventures": "Недавние приключения",
"no_recent_adventures": "Нет недавних приключений?", "no_recent_adventures": "Нет недавних приключений?",
"add_some": "Почему бы не начать планировать ваше следующее приключение? Вы можете добавить новое приключение, нажав на кнопку ниже." "add_some": "Почему бы не начать планировать ваше следующее приключение? Вы можете добавить новое приключение, нажав на кнопку ниже.",
"document_some_adventures": "Начните документировать свои путешествия и создать свою личную карту приключений!",
"view_all": "Просмотреть все",
"welcome_text_1": "Вы были на",
"welcome_text_2": "Приключения пока",
"welcome_text_3": "Продолжайте исследовать и документировать ваши путешествия!"
}, },
"immich": { "immich": {
"immich": "Immich", "immich": "Immich",

View file

@ -178,7 +178,6 @@
"no_location_found": "Ingen plats hittades", "no_location_found": "Ingen plats hittades",
"note_delete_confirm": "Är du säker på att du vill ta bort den här anteckningen? \nDenna åtgärd kan inte ångras.", "note_delete_confirm": "Är du säker på att du vill ta bort den här anteckningen? \nDenna åtgärd kan inte ångras.",
"out_of_range": "Inte inom resplanens datumintervall", "out_of_range": "Inte inom resplanens datumintervall",
"show_region_labels": "Visa regionetiketter",
"start": "Start", "start": "Start",
"starting_airport": "Startar flygplats", "starting_airport": "Startar flygplats",
"to": "Till", "to": "Till",
@ -233,7 +232,11 @@
"itinerary": "Resväg", "itinerary": "Resväg",
"joined": "Gick med i", "joined": "Gick med i",
"view_profile": "Visa profil", "view_profile": "Visa profil",
"share_collection": "Dela denna samling!" "share_collection": "Dela denna samling!",
"filters_and_sort": "Filter",
"filters_and_stats": "Filter",
"no_adventures_message": "Börja dokumentera dina äventyr och planera nya. \nVarje resa har en historia som är värd att berätta.",
"travel_progress": "Reseframsteg"
}, },
"home": { "home": {
"desc_1": "Upptäck, planera och utforska med lätthet", "desc_1": "Upptäck, planera och utforska med lätthet",
@ -247,7 +250,11 @@
"go_to": "Gå till AdventureLog", "go_to": "Gå till AdventureLog",
"hero_1": "Upptäck världens mest spännande äventyr", "hero_1": "Upptäck världens mest spännande äventyr",
"hero_2": "Upptäck och planera ditt nästa äventyr med AdventureLog. \nUtforska hisnande destinationer, skapa anpassade resplaner och håll kontakten när du är på språng.", "hero_2": "Upptäck och planera ditt nästa äventyr med AdventureLog. \nUtforska hisnande destinationer, skapa anpassade resplaner och håll kontakten när du är på språng.",
"key_features": "Viktiga funktioner" "key_features": "Viktiga funktioner",
"explore_world": "Utforska världen",
"latest_travel_experiences": "Dina senaste reseupplevelser",
"of_world": "av världen",
"start_your_journey": "Börja din resa"
}, },
"navbar": { "navbar": {
"about": "Om AdventureLog", "about": "Om AdventureLog",
@ -263,7 +270,17 @@
"settings": "Inställningar", "settings": "Inställningar",
"shared_with_me": "Delade med mig", "shared_with_me": "Delade med mig",
"theme_selection": "Tema", "theme_selection": "Tema",
"themes": {}, "themes": {
"aestheticDark": "Estetisk mörk",
"aestheticLight": "Estetisk ljus",
"aqua": "Vatten",
"dark": "Mörk",
"dim": "Dämpa",
"forest": "Skog",
"light": "Ljus",
"night": "Natt",
"northernLights": "Norrsken"
},
"users": "Användare", "users": "Användare",
"worldtravel": "Världsresor", "worldtravel": "Världsresor",
"my_tags": "Mina taggar", "my_tags": "Mina taggar",
@ -293,7 +310,36 @@
"removed": "tas bort", "removed": "tas bort",
"view_cities": "Visa städer", "view_cities": "Visa städer",
"visit_remove_failed": "Det gick inte att ta bort besöket", "visit_remove_failed": "Det gick inte att ta bort besöket",
"visit_to": "Besök till" "visit_to": "Besök till",
"all_regions": "Alla regioner",
"available_to_explore": "Finns att utforska",
"cities_in": "Städer i",
"clear_all": "Rensar alla",
"clear_all_filters": "Rensa alla filter",
"clear_filters": "Tydliga filter",
"complete": "Komplett",
"countries": "länder",
"country_completed": "Landets slutfört",
"filter_by": "Filtrera förbi",
"filter_by_region": "Filtrera efter region",
"hide_map": "Dölj karta",
"hide_map_labels": "Dölj kartetiketter",
"interactive_map": "Interaktiv karta",
"no_countries_found_desc": "Försök att justera dina söktermer eller filter för att hitta de länder du letar efter.",
"no_country_data_available": "Inga landsdata tillgängliga",
"no_country_data_available_desc": "Kontrollera dokumentationen för att uppdatera regiondata.",
"no_regions_found": "Inga regioner hittades",
"of": "av",
"partial": "Partiell",
"progress": "Framsteg",
"progress_and_stats": "Framsteg",
"region_completed": "Region slutförd",
"remaining": "Återstående",
"show_map": "Showkarta",
"show_map_labels": "Visa kartetiketter",
"total_cities": "Totala städer",
"total_countries": "Totala länder",
"total_regions": "Totala regioner"
}, },
"auth": { "auth": {
"confirm_password": "Bekräfta lösenord", "confirm_password": "Bekräfta lösenord",
@ -453,7 +499,14 @@
"error_editing_collection": "Ett fel uppstod vid redigering av samling", "error_editing_collection": "Ett fel uppstod vid redigering av samling",
"new_collection": "Ny samling", "new_collection": "Ny samling",
"public_collection": "Offentlig samling", "public_collection": "Offentlig samling",
"manage_collections": "Hantera samlingar" "manage_collections": "Hantera samlingar",
"archived_appear_here": "Arkiverade samlingar kommer att visas här.",
"create_first": "Skapa din första samling för att organisera dina äventyr och minnen.",
"make_sure_public": "Se till att din profil är offentlig så att andra kan dela med dig.",
"no_archived_collections": "Inga arkiverade samlingar.",
"no_collections_yet": "Inga samlingar än",
"no_shared_collections": "Inga delade samlingar.",
"shared_collections": "Delade samlingar"
}, },
"notes": { "notes": {
"add_a_link": "Lägg till en länk", "add_a_link": "Lägg till en länk",
@ -505,7 +558,15 @@
"clear_marker": "Rensa markör", "clear_marker": "Rensa markör",
"map_options": "Kartalternativ", "map_options": "Kartalternativ",
"show_visited_regions": "Visa besökta regioner", "show_visited_regions": "Visa besökta regioner",
"view_details": "Visa detaljer" "view_details": "Visa detaljer",
"adventure_stats": "Äventyrsstatistik",
"adventures_shown": "Äventyr visas",
"completion": "Komplettering",
"display_options": "Visningsalternativ",
"map_controls": "Kartkontroller",
"marker_placed_on_map": "Markör placerad på kartan",
"place_marker_desc": "Klicka på kartan för att placera en markör, eller lägg till ett äventyr utan plats.",
"regions": "Regioner"
}, },
"languages": {}, "languages": {},
"share": { "share": {
@ -525,7 +586,15 @@
"user_stats": "Användarstatistik", "user_stats": "Användarstatistik",
"visited_countries": "Besökta länder", "visited_countries": "Besökta länder",
"visited_regions": "Besökta regioner", "visited_regions": "Besökta regioner",
"visited_cities": "Besökte städer" "visited_cities": "Besökte städer",
"discovered": "upptäckt",
"explored": "utforskad",
"no_shared_adventures": "Den här användaren har inte delat några offentliga äventyr än.",
"no_shared_collections": "Den här användaren har inte delat några offentliga samlingar än.",
"planned_trips": "Planerade resor",
"public_adventure_experiences": "Allmänt äventyrsupplevelser",
"travel_statistics": "Resestatistik",
"your_journey_at_a_glance": "Din äventyrsresa med en överblick"
}, },
"categories": { "categories": {
"category_name": "Kategorinamn", "category_name": "Kategorinamn",
@ -535,7 +604,8 @@
"no_categories_found": "Inga kategorier hittades.", "no_categories_found": "Inga kategorier hittades.",
"select_category": "Välj Kategori", "select_category": "Välj Kategori",
"update_after_refresh": "Äventyrskorten kommer att uppdateras när du uppdaterar sidan.", "update_after_refresh": "Äventyrskorten kommer att uppdateras när du uppdaterar sidan.",
"add_new_category": "Lägg till en ny kategori" "add_new_category": "Lägg till en ny kategori",
"name_required": "Kategorinamn krävs"
}, },
"dashboard": { "dashboard": {
"add_some": "Varför inte börja planera ditt nästa äventyr? \nDu kan lägga till ett nytt äventyr genom att klicka på knappen nedan.", "add_some": "Varför inte börja planera ditt nästa äventyr? \nDu kan lägga till ett nytt äventyr genom att klicka på knappen nedan.",
@ -545,7 +615,12 @@
"total_adventures": "Totala äventyr", "total_adventures": "Totala äventyr",
"total_visited_regions": "Totalt antal besökta regioner", "total_visited_regions": "Totalt antal besökta regioner",
"welcome_back": "Välkommen tillbaka", "welcome_back": "Välkommen tillbaka",
"total_visited_cities": "Totalt antal besökta städer" "total_visited_cities": "Totalt antal besökta städer",
"document_some_adventures": "Börja dokumentera dina resor och bygga din personliga äventyrskarta!",
"view_all": "Se alla",
"welcome_text_1": "Du har varit på",
"welcome_text_2": "Äventyr hittills",
"welcome_text_3": "Fortsätt utforska och dokumentera dina resor!"
}, },
"immich": { "immich": {
"api_key": "Immich API-nyckel", "api_key": "Immich API-nyckel",

View file

@ -13,7 +13,17 @@
"settings": "设置", "settings": "设置",
"shared_with_me": "与我分享", "shared_with_me": "与我分享",
"theme_selection": "主题选择", "theme_selection": "主题选择",
"themes": {}, "themes": {
"aestheticDark": "美学黑暗",
"aestheticLight": "美学之光",
"aqua": "水",
"dark": "黑暗的",
"dim": "暗淡",
"forest": "森林",
"light": "光",
"night": "夜晚",
"northernLights": "北极光"
},
"users": "用户", "users": "用户",
"worldtravel": "环球旅行", "worldtravel": "环球旅行",
"my_tags": "我的标签", "my_tags": "我的标签",
@ -47,7 +57,11 @@
"go_to": "前往冒险日志", "go_to": "前往冒险日志",
"hero_1": "探索世界上最惊险的冒险", "hero_1": "探索世界上最惊险的冒险",
"hero_2": "使用 AdventureLog 发现并计划您的下一次冒险。\n探索令人惊叹的目的地、创建定制行程并随时随地保持联系。", "hero_2": "使用 AdventureLog 发现并计划您的下一次冒险。\n探索令人惊叹的目的地、创建定制行程并随时随地保持联系。",
"key_features": "主要特点" "key_features": "主要特点",
"explore_world": "探索世界",
"latest_travel_experiences": "您的最新旅行经历",
"of_world": "世界",
"start_your_journey": "开始您的旅程"
}, },
"adventures": { "adventures": {
"collection_remove_success": "成功从合集中移除冒险!", "collection_remove_success": "成功从合集中移除冒险!",
@ -94,7 +108,6 @@
"date_constrain": "限制在合集日期内", "date_constrain": "限制在合集日期内",
"rating": "评分", "rating": "评分",
"my_images": "我的图片", "my_images": "我的图片",
"show_region_labels": "显示区域标签",
"no_images": "没有图片", "no_images": "没有图片",
"share_adventure": "分享此冒险!", "share_adventure": "分享此冒险!",
"copy_link": "复制链接", "copy_link": "复制链接",
@ -271,7 +284,11 @@
"itinerary": "行程", "itinerary": "行程",
"joined": "加入", "joined": "加入",
"view_profile": "查看个人资料", "view_profile": "查看个人资料",
"share_collection": "分享这个收藏!" "share_collection": "分享这个收藏!",
"filters_and_sort": "过滤器",
"filters_and_stats": "过滤器",
"no_adventures_message": "开始记录您的冒险经历,并计划新的冒险。\n每个旅程都有一个值得讲述的故事。",
"travel_progress": "旅行进度"
}, },
"auth": { "auth": {
"forgot_password": "忘记密码?", "forgot_password": "忘记密码?",
@ -315,7 +332,36 @@
"removed": "已删除", "removed": "已删除",
"view_cities": "查看城市", "view_cities": "查看城市",
"visit_remove_failed": "删除访问失败", "visit_remove_failed": "删除访问失败",
"visit_to": "参观" "visit_to": "参观",
"all_regions": "所有地区",
"available_to_explore": "可供探索",
"cities_in": "城市",
"clear_all": "清除全部",
"clear_all_filters": "清除所有过滤器",
"clear_filters": "清除过滤器",
"complete": "完全的",
"countries": "国家",
"country_completed": "国家完成",
"filter_by": "过滤",
"filter_by_region": "按区域过滤",
"hide_map": "隐藏地图",
"hide_map_labels": "隐藏地图标签",
"interactive_map": "交互式地图",
"no_countries_found_desc": "尝试调整搜索词或过滤器,以找到所需的国家。",
"no_country_data_available": "没有国家数据可用",
"no_country_data_available_desc": "请检查文档以获取更新区域数据。",
"no_regions_found": "找不到地区",
"of": "的",
"partial": "部分的",
"progress": "进步",
"progress_and_stats": "进步",
"region_completed": "区域完成",
"remaining": "其余的",
"total_regions": "总区域",
"show_map": "显示地图",
"show_map_labels": "显示地图标签",
"total_cities": "总城市",
"total_countries": "总国家"
}, },
"users": { "users": {
"no_users_found": "未找到已公开个人资料的用户。" "no_users_found": "未找到已公开个人资料的用户。"
@ -453,7 +499,14 @@
"error_editing_collection": "编辑合集时出错", "error_editing_collection": "编辑合集时出错",
"new_collection": "新建合集", "new_collection": "新建合集",
"public_collection": "公开合集", "public_collection": "公开合集",
"manage_collections": "管理收藏" "manage_collections": "管理收藏",
"archived_appear_here": "存档的收藏将出现在这里。",
"create_first": "创建您的第一个集合来组织您的冒险和回忆。",
"make_sure_public": "确保您的个人资料是公开的,以便其他人可以与您分享。",
"no_archived_collections": "没有存档的收藏。",
"no_collections_yet": "还没有收藏",
"no_shared_collections": "没有共享的收藏。",
"shared_collections": "共享收藏"
}, },
"notes": { "notes": {
"add_a_link": "添加链接", "add_a_link": "添加链接",
@ -505,7 +558,15 @@
"clear_marker": "清除标记", "clear_marker": "清除标记",
"map_options": "地图选项", "map_options": "地图选项",
"show_visited_regions": "显示访问过的地区", "show_visited_regions": "显示访问过的地区",
"view_details": "查看详情" "view_details": "查看详情",
"adventure_stats": "冒险统计",
"adventures_shown": "展示的冒险",
"completion": "完成",
"display_options": "显示选项",
"map_controls": "地图控件",
"marker_placed_on_map": "放置在地图上的标记",
"place_marker_desc": "单击地图以放置标记,或在没有位置的情况下添加冒险。",
"regions": "地区"
}, },
"languages": {}, "languages": {},
"share": { "share": {
@ -525,7 +586,15 @@
"user_stats": "用户统计", "user_stats": "用户统计",
"visited_countries": "访问过的国家", "visited_countries": "访问过的国家",
"visited_regions": "访问过的地区", "visited_regions": "访问过的地区",
"visited_cities": "访问过的城市" "visited_cities": "访问过的城市",
"discovered": "发现",
"explored": "探索",
"no_shared_adventures": "该用户尚未分享任何公共冒险。",
"no_shared_collections": "该用户尚未共享任何公共收藏。",
"planned_trips": "计划的旅行",
"public_adventure_experiences": "公共冒险经验",
"travel_statistics": "旅行统计",
"your_journey_at_a_glance": "您一眼的冒险之旅"
}, },
"categories": { "categories": {
"category_name": "类别名称", "category_name": "类别名称",
@ -535,7 +604,8 @@
"no_categories_found": "未找到类别。", "no_categories_found": "未找到类别。",
"select_category": "选择类别", "select_category": "选择类别",
"update_after_refresh": "刷新页面后,冒险卡将更新。", "update_after_refresh": "刷新页面后,冒险卡将更新。",
"add_new_category": "添加新类别" "add_new_category": "添加新类别",
"name_required": "需要类别名称"
}, },
"dashboard": { "dashboard": {
"add_some": "为什么不开始计划你的下一次冒险呢?\n您可以通过单击下面的按钮添加新的冒险。", "add_some": "为什么不开始计划你的下一次冒险呢?\n您可以通过单击下面的按钮添加新的冒险。",
@ -545,7 +615,12 @@
"total_adventures": "冒险总数", "total_adventures": "冒险总数",
"total_visited_regions": "已访问地区数量", "total_visited_regions": "已访问地区数量",
"welcome_back": "欢迎回来", "welcome_back": "欢迎回来",
"total_visited_cities": "已访问城市数量" "total_visited_cities": "已访问城市数量",
"document_some_adventures": "开始记录您的旅行并构建您的个人冒险地图!",
"view_all": "查看全部",
"welcome_text_1": "你去过",
"welcome_text_2": "到目前为止的冒险",
"welcome_text_3": "继续探索和记录您的旅行!"
}, },
"immich": { "immich": {
"api_key": "Immich API 密钥", "api_key": "Immich API 密钥",

View file

@ -78,34 +78,12 @@
<div class="grid lg:grid-cols-2 gap-12 items-center"> <div class="grid lg:grid-cols-2 gap-12 items-center">
<!-- Left Content --> <!-- Left Content -->
<div class="space-y-8 {isVisible ? 'animate-fade-in-up' : 'opacity-0'}"> <div class="space-y-8 {isVisible ? 'animate-fade-in-up' : 'opacity-0'}">
{#if data.user}
{#if data.user.first_name && data.user.first_name !== null}
<div class="space-y-4"> <div class="space-y-4">
<div <div
class="inline-flex items-center gap-2 px-4 py-2 bg-primary/10 text-primary rounded-full border border-primary/20" class="inline-flex items-center gap-2 px-4 py-2 bg-primary/10 text-primary rounded-full border border-primary/20"
> >
<LightningIcon class="w-4 h-4" /> <LightningIcon class="w-4 h-4" />
<span class="text-sm font-medium">Welcome back!</span> <span class="text-sm font-medium">{$t('home.start_your_journey')}</span>
</div>
<h1 class="text-5xl lg:text-7xl font-black leading-tight">
<span
class="bg-gradient-to-r from-primary via-secondary to-accent bg-clip-text text-transparent"
>
{data.user.first_name.charAt(0).toUpperCase() + data.user.first_name.slice(1)},
</span>
<br />
<span class="text-base-content/90">
{$t('home.hero_1')}
</span>
</h1>
</div>
{:else}
<div class="space-y-4">
<div
class="inline-flex items-center gap-2 px-4 py-2 bg-primary/10 text-primary rounded-full border border-primary/20"
>
<LightningIcon class="w-4 h-4" />
<span class="text-sm font-medium">Ready to explore?</span>
</div> </div>
<h1 class="text-5xl lg:text-7xl font-black leading-tight"> <h1 class="text-5xl lg:text-7xl font-black leading-tight">
<span <span
@ -115,24 +93,6 @@
</span> </span>
</h1> </h1>
</div> </div>
{/if}
{:else}
<div class="space-y-4">
<div
class="inline-flex items-center gap-2 px-4 py-2 bg-primary/10 text-primary rounded-full border border-primary/20"
>
<LightningIcon class="w-4 h-4" />
<span class="text-sm font-medium">Start your journey</span>
</div>
<h1 class="text-5xl lg:text-7xl font-black leading-tight">
<span
class="bg-gradient-to-r from-primary via-secondary to-accent bg-clip-text text-transparent"
>
{$t('home.hero_1')}
</span>
</h1>
</div>
{/if}
<p class="text-xl lg:text-2xl text-base-content/70 leading-relaxed font-light max-w-2xl"> <p class="text-xl lg:text-2xl text-base-content/70 leading-relaxed font-light max-w-2xl">
{$t('home.hero_2')} {$t('home.hero_2')}
@ -165,21 +125,6 @@
</button> </button>
{/if} {/if}
</div> </div>
<!-- Stats -->
<!-- <div class="grid grid-cols-3 gap-6 pt-8 border-t border-base-300">
{#each stats as stat}
<div class="text-center">
<div class="flex justify-center mb-2">
<div class="p-2 bg-primary/10 rounded-lg">
<svelte:component this={stat.icon} class="w-5 h-5 text-primary" />
</div>
</div>
<div class="text-2xl font-bold text-base-content">{stat.value}</div>
<div class="text-sm text-base-content/60">{stat.label}</div>
</div>
{/each}
</div> -->
</div> </div>
<!-- Right Content - Hero Image --> <!-- Right Content - Hero Image -->
@ -230,7 +175,7 @@
<!-- Section Header --> <!-- Section Header -->
<div class="text-center mb-16 space-y-4"> <div class="text-center mb-16 space-y-4">
<div <div
class="inline-flex items-center gap-2 px-4 py-2 bg-neutral/10 text-neutral rounded-full border border-neutral/20" class="inline-flex items-center gap-2 px-4 py-2 bg-neutral text-neutral-300 rounded-full border border-neutral"
> >
<StarIcon class="w-4 h-4" /> <StarIcon class="w-4 h-4" />
<span class="text-sm font-medium">{$t('home.key_features')}</span> <span class="text-sm font-medium">{$t('home.key_features')}</span>
@ -279,58 +224,11 @@
alt="World map with pins" alt="World map with pins"
class="rounded-2xl shadow-2xl object-cover w-full" class="rounded-2xl shadow-2xl object-cover w-full"
/> />
<!-- Floating Elements -->
<div class="absolute top-4 right-4 bg-base-100 p-3 rounded-xl shadow-lg animate-float">
<div class="flex items-center gap-2">
<CheckIcon class="w-4 h-4 text-success" />
<span class="text-sm font-medium">25 Countries</span>
</div>
</div>
<div
class="absolute bottom-4 left-4 bg-base-100 p-3 rounded-xl shadow-lg animate-float-delayed"
>
<div class="flex items-center gap-2">
<TrophyIcon class="w-4 h-4 text-warning" />
<span class="text-sm font-medium">Explorer Level</span>
</div>
</div>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
</section> </section>
<!-- Call to Action Section -->
{#if !data.user}
<section class="py-24 bg-gradient-to-r from-primary to-secondary">
<div class="container mx-auto px-6 text-center">
<div class="max-w-3xl mx-auto space-y-8">
<h2 class="text-4xl lg:text-5xl font-bold text-white">Ready to Start Your Adventure?</h2>
<p class="text-xl text-white/90 leading-relaxed">
Join thousands of travelers already using AdventureLog to document their journeys and
discover new destinations.
</p>
<div class="flex flex-col sm:flex-row gap-4 justify-center pt-4">
<button
on:click={() => goto('/signup')}
class="btn btn-lg bg-white text-primary hover:bg-white/90 gap-3 shadow-lg group"
>
Get Started
<ChevronRight class="w-4 h-4 group-hover:translate-x-1 transition-transform" />
</button>
<button
on:click={() => goto('/login')}
class="btn btn-lg btn-outline text-white border-white hover:bg-white hover:text-primary gap-3"
>
Sign In
</button>
</div>
</div>
</div>
</section>
{/if}
</div> </div>
<svelte:head> <svelte:head>

View file

@ -197,13 +197,14 @@
<Compass class="w-8 h-8 text-primary" /> <Compass class="w-8 h-8 text-primary" />
</div> </div>
<div> <div>
<h1 <h1 class="text-3xl font-bold bg-clip-text text-primary">
class="text-3xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent"
>
{$t('navbar.my_adventures')} {$t('navbar.my_adventures')}
</h1> </h1>
<p class="text-sm text-base-content/60"> <p class="text-sm text-base-content/60">
{count} adventures • {getVisitedCount()} visited • {getPlannedCount()} planned {count}
{$t('navbar.adventures')}{getVisitedCount()}
{$t('adventures.visited')}{getPlannedCount()}
{$t('adventures.planned')}
</p> </p>
</div> </div>
</div> </div>
@ -216,14 +217,14 @@
<div class="stat-figure text-primary"> <div class="stat-figure text-primary">
<Eye class="w-5 h-5" /> <Eye class="w-5 h-5" />
</div> </div>
<div class="stat-title text-xs">Visited</div> <div class="stat-title text-xs">{$t('adventures.visited')}</div>
<div class="stat-value text-lg">{getVisitedCount()}</div> <div class="stat-value text-lg">{getVisitedCount()}</div>
</div> </div>
<div class="stat py-2 px-4"> <div class="stat py-2 px-4">
<div class="stat-figure text-secondary"> <div class="stat-figure text-secondary">
<Calendar class="w-5 h-5" /> <Calendar class="w-5 h-5" />
</div> </div>
<div class="stat-title text-xs">Planned</div> <div class="stat-title text-xs">{$t('adventures.planned')}</div>
<div class="stat-value text-lg">{getPlannedCount()}</div> <div class="stat-value text-lg">{getPlannedCount()}</div>
</div> </div>
</div> </div>
@ -239,10 +240,11 @@
<div class="p-6 bg-base-200/50 rounded-2xl mb-6"> <div class="p-6 bg-base-200/50 rounded-2xl mb-6">
<Compass class="w-16 h-16 text-base-content/30" /> <Compass class="w-16 h-16 text-base-content/30" />
</div> </div>
<h3 class="text-xl font-semibold text-base-content/70 mb-2">No adventures yet</h3> <h3 class="text-xl font-semibold text-base-content/70 mb-2">
{$t('adventures.no_adventures_found')}
</h3>
<p class="text-base-content/50 text-center max-w-md"> <p class="text-base-content/50 text-center max-w-md">
Start documenting your adventures and planning new ones. Every journey has a story {$t('adventures.no_adventures_message')}
worth telling.
</p> </p>
<button <button
class="btn btn-primary btn-wide mt-6 gap-2" class="btn btn-primary btn-wide mt-6 gap-2"
@ -252,7 +254,7 @@
}} }}
> >
<Plus class="w-5 h-5" /> <Plus class="w-5 h-5" />
Create Adventure {$t('adventures.create_adventure')}
</button> </button>
</div> </div>
{:else} {:else}
@ -301,7 +303,7 @@
<div class="p-2 bg-primary/10 rounded-lg"> <div class="p-2 bg-primary/10 rounded-lg">
<Filter class="w-6 h-6 text-primary" /> <Filter class="w-6 h-6 text-primary" />
</div> </div>
<h2 class="text-xl font-bold">Filters & Sort</h2> <h2 class="text-xl font-bold">{$t('adventures.filters_and_sort')}</h2>
</div> </div>
<!-- Filters Form --> <!-- Filters Form -->
@ -332,6 +334,7 @@
<div class="space-y-4"> <div class="space-y-4">
<div> <div>
<!-- svelte-ignore a11y-label-has-associated-control -->
<label class="label"> <label class="label">
<span class="label-text font-medium">{$t('adventures.order_direction')}</span> <span class="label-text font-medium">{$t('adventures.order_direction')}</span>
</label> </label>
@ -358,6 +361,7 @@
</div> </div>
<div> <div>
<!-- svelte-ignore a11y-label-has-associated-control -->
<label class="label"> <label class="label">
<span class="label-text font-medium">{$t('adventures.order_by')}</span> <span class="label-text font-medium">{$t('adventures.order_by')}</span>
</label> </label>
@ -491,12 +495,10 @@
<Plus class="w-8 h-8" /> <Plus class="w-8 h-8" />
</div> </div>
<ul <ul
tabindex="0"
class="dropdown-content z-[40] menu p-4 shadow-2xl bg-base-100 rounded-2xl w-64 border border-base-300" class="dropdown-content z-[40] menu p-4 shadow-2xl bg-base-100 rounded-2xl w-64 border border-base-300"
> >
<div class="text-center mb-4"> <div class="text-center mb-4">
<h3 class="font-bold text-lg">{$t('adventures.create_new')}</h3> <h3 class="font-bold text-lg">{$t('adventures.create_new')}</h3>
<p class="text-sm text-base-content/60">Document your journey</p>
</div> </div>
<button <button
class="btn btn-primary gap-2 w-full" class="btn btn-primary gap-2 w-full"

View file

@ -201,18 +201,16 @@
<CollectionIcon class="w-8 h-8 text-primary" /> <CollectionIcon class="w-8 h-8 text-primary" />
</div> </div>
<div> <div>
<h1 <h1 class="text-3xl font-bold bg-clip-text text-primary">
class="text-3xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent"
>
{$t(`adventures.my_collections`)} {$t(`adventures.my_collections`)}
</h1> </h1>
<p class="text-sm text-base-content/60"> <p class="text-sm text-base-content/60">
{currentCount} {currentCount}
{activeView === 'owned' {activeView === 'owned'
? 'collections' ? $t('navbar.collections')
: activeView === 'shared' : activeView === 'shared'
? 'shared collections' ? $t('collection.shared_collections')
: 'archived collections'} : $t('adventures.archived_collections')}
</p> </p>
</div> </div>
</div> </div>
@ -225,7 +223,7 @@
on:click={() => switchView('owned')} on:click={() => switchView('owned')}
> >
<CollectionIcon class="w-4 h-4" /> <CollectionIcon class="w-4 h-4" />
<span class="hidden sm:inline">My Collections</span> <span class="hidden sm:inline">{$t('adventures.my_collections')}</span>
<div <div
class="badge badge-sm {activeView === 'owned' ? 'badge-primary' : 'badge-ghost'}" class="badge badge-sm {activeView === 'owned' ? 'badge-primary' : 'badge-ghost'}"
> >
@ -237,7 +235,7 @@
on:click={() => switchView('shared')} on:click={() => switchView('shared')}
> >
<Share class="w-4 h-4" /> <Share class="w-4 h-4" />
<span class="hidden sm:inline">Shared</span> <span class="hidden sm:inline">{$t('share.shared')}</span>
<div <div
class="badge badge-sm {activeView === 'shared' ? 'badge-primary' : 'badge-ghost'}" class="badge badge-sm {activeView === 'shared' ? 'badge-primary' : 'badge-ghost'}"
> >
@ -249,7 +247,7 @@
on:click={() => switchView('archived')} on:click={() => switchView('archived')}
> >
<Archive class="w-4 h-4" /> <Archive class="w-4 h-4" />
<span class="hidden sm:inline">Archived</span> <span class="hidden sm:inline">{$t('adventures.archived')}</span>
<div <div
class="badge badge-sm {activeView === 'archived' class="badge badge-sm {activeView === 'archived'
? 'badge-primary' ? 'badge-primary'
@ -278,17 +276,17 @@
</div> </div>
<h3 class="text-xl font-semibold text-base-content/70 mb-2"> <h3 class="text-xl font-semibold text-base-content/70 mb-2">
{activeView === 'owned' {activeView === 'owned'
? 'No collections yet' ? $t('collection.no_collections_yet')
: activeView === 'shared' : activeView === 'shared'
? 'No shared collections.' ? $t('collection.no_shared_collections')
: 'No archived collections'} : $t('collection.no_archived_collections')}
</h3> </h3>
<p class="text-base-content/50 text-center max-w-md"> <p class="text-base-content/50 text-center max-w-md">
{activeView === 'owned' {activeView === 'owned'
? 'Create your first collection to organize your adventures and memories.' ? $t('collection.create_first')
: activeView === 'shared' : activeView === 'shared'
? 'Make sure your profile is public so others can share with you.' ? $t('collection.make_sure_public')
: 'Archived collections will appear here.'} : $t('collection.archived_appear_here')}
</p> </p>
{#if activeView === 'owned'} {#if activeView === 'owned'}
<button <button
@ -300,7 +298,7 @@
}} }}
> >
<Plus class="w-5 h-5" /> <Plus class="w-5 h-5" />
Create Collection {$t('collection.create')}
</button> </button>
{/if} {/if}
</div> </div>
@ -353,7 +351,7 @@
<div class="p-2 bg-primary/10 rounded-lg"> <div class="p-2 bg-primary/10 rounded-lg">
<Sort class="w-6 h-6 text-primary" /> <Sort class="w-6 h-6 text-primary" />
</div> </div>
<h2 class="text-xl font-bold">Filters & Sort</h2> <h2 class="text-xl font-bold">{$t('adventures.filters_and_sort')}</h2>
</div> </div>
<!-- Sort Form - Updated to use URL navigation --> <!-- Sort Form - Updated to use URL navigation -->
@ -365,6 +363,7 @@
<div class="space-y-4"> <div class="space-y-4">
<div> <div>
<!-- svelte-ignore a11y-label-has-associated-control -->
<label class="label"> <label class="label">
<span class="label-text font-medium">{$t(`adventures.order_direction`)}</span> <span class="label-text font-medium">{$t(`adventures.order_direction`)}</span>
</label> </label>
@ -389,6 +388,7 @@
</div> </div>
<div> <div>
<!-- svelte-ignore a11y-label-has-associated-control -->
<label class="label"> <label class="label">
<span class="label-text font-medium">{$t('adventures.order_by')}</span> <span class="label-text font-medium">{$t('adventures.order_by')}</span>
</label> </label>
@ -427,18 +427,6 @@
</div> </div>
</div> </div>
</div> </div>
<!-- Quick Actions -->
<!-- <div class="space-y-3 mt-6">
<button
type="button"
class="btn btn-outline w-full gap-2"
on:click={() => switchView('archived')}
>
<Archive class="w-4 h-4" />
{$t(`adventures.archived_collections`)}
</button>
</div> -->
</div> </div>
</div> </div>
</div> </div>
@ -456,12 +444,10 @@
<Plus class="w-8 h-8" /> <Plus class="w-8 h-8" />
</div> </div>
<ul <ul
tabindex="0"
class="dropdown-content z-[1] menu p-4 shadow-2xl bg-base-100 rounded-2xl w-64 border border-base-300" class="dropdown-content z-[1] menu p-4 shadow-2xl bg-base-100 rounded-2xl w-64 border border-base-300"
> >
<div class="text-center mb-4"> <div class="text-center mb-4">
<h3 class="font-bold text-lg">{$t(`adventures.create_new`)}</h3> <h3 class="font-bold text-lg">{$t(`adventures.create_new`)}</h3>
<p class="text-sm text-base-content/60">Choose what to create</p>
</div> </div>
<button <button
class="btn btn-primary gap-2 w-full" class="btn btn-primary gap-2 w-full"

View file

@ -37,28 +37,26 @@
<div class="flex flex-col lg:flex-row lg:items-center lg:justify-between gap-6"> <div class="flex flex-col lg:flex-row lg:items-center lg:justify-between gap-6">
<div> <div>
<div class="flex items-center gap-4 mb-4"> <div class="flex items-center gap-4 mb-4">
<div class="avatar placeholder"> <!-- <div class="avatar placeholder">
<div class="bg-primary text-primary-content rounded-full w-16 h-16"> <div class="bg-primary text-primary-content rounded-full w-16 h-16">
<span class="text-xl font-bold"> <span class="text-xl font-bold">
{user?.first_name?.charAt(0) || user?.username?.charAt(0) || 'A'} {user?.first_name?.charAt(0) || user?.username?.charAt(0) || 'A'}
</span> </span>
</div> </div>
</div> </div> -->
<div> <div>
<h1 <h1 class="text-4xl lg:text-5xl font-bold bg-clip-text text-primary">
class="text-4xl lg:text-5xl font-bold bg-gradient-to-r from-primary via-secondary to-accent bg-clip-text text-transparent"
>
{$t('dashboard.welcome_back')}, {user?.first_name {$t('dashboard.welcome_back')}, {user?.first_name
? `${user.first_name}` ? `${user.first_name}`
: user?.username}! : user?.username}!
</h1> </h1>
<p class="text-lg text-base-content/60 mt-2"> <p class="text-lg text-base-content/60 mt-2">
{#if stats.adventure_count > 0} {#if stats.adventure_count > 0}
You've been on <span class="font-semibold text-primary" {$t('dashboard.welcome_text_1')}
>{stats.adventure_count}</span <span class="font-semibold text-primary">{stats.adventure_count}</span>
> adventures so far {$t('dashboard.welcome_text_2')}
{:else} {:else}
Ready to start your adventure journey? {$t('dashboard.welcome_text_3')}
{/if} {/if}
</p> </p>
</div> </div>
@ -76,14 +74,16 @@
</a> </a>
<a href="/worldtravel" class="btn btn-outline btn-lg gap-2"> <a href="/worldtravel" class="btn btn-outline btn-lg gap-2">
<FlagCheckeredVariantIcon class="w-5 h-5" /> <FlagCheckeredVariantIcon class="w-5 h-5" />
Explore World {$t('home.explore_world')}
</a> </a>
</div> </div>
</div> </div>
</div> </div>
<!-- Stats Grid --> <!-- Stats Grid -->
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-6 mb-12"> <div
class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-3 gap-8 mb-12"
>
<!-- Countries Visited --> <!-- Countries Visited -->
<div <div
class="stat-card card bg-gradient-to-br from-primary/10 to-primary/5 shadow-xl border border-primary/20 hover:shadow-2xl transition-all duration-300" class="stat-card card bg-gradient-to-br from-primary/10 to-primary/5 shadow-xl border border-primary/20 hover:shadow-2xl transition-all duration-300"
@ -99,7 +99,7 @@
</div> </div>
<div class="stat-desc text-primary/60 mt-2"> <div class="stat-desc text-primary/60 mt-2">
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<span class="font-medium">{completionPercentage}% of world</span> <span class="font-medium">{completionPercentage}% {$t('home.of_world')}</span>
</div> </div>
<progress <progress
class="progress progress-primary w-full mt-1" class="progress progress-primary w-full mt-1"
@ -128,12 +128,6 @@
<div class="stat-value text-3xl font-bold text-success"> <div class="stat-value text-3xl font-bold text-success">
{stats.visited_region_count} {stats.visited_region_count}
</div> </div>
<div class="stat-desc text-success/60 mt-2">
<div class="flex items-center gap-1">
<MapMarkerStarOutline class="w-4 h-4" />
Unique regions
</div>
</div>
</div> </div>
<div class="p-4 bg-success/20 rounded-2xl"> <div class="p-4 bg-success/20 rounded-2xl">
<MapMarkerStarOutline class="w-8 h-8 text-success" /> <MapMarkerStarOutline class="w-8 h-8 text-success" />
@ -153,12 +147,6 @@
{$t('dashboard.total_visited_cities')} {$t('dashboard.total_visited_cities')}
</div> </div>
<div class="stat-value text-3xl font-bold text-info">{stats.visited_city_count}</div> <div class="stat-value text-3xl font-bold text-info">{stats.visited_city_count}</div>
<div class="stat-desc text-info/60 mt-2">
<div class="flex items-center gap-1">
<CityVariantOutline class="w-4 h-4" />
Urban adventures
</div>
</div>
</div> </div>
<div class="p-4 bg-info/20 rounded-2xl"> <div class="p-4 bg-info/20 rounded-2xl">
<CityVariantOutline class="w-8 h-8 text-info" /> <CityVariantOutline class="w-8 h-8 text-info" />
@ -178,11 +166,11 @@
</div> </div>
<div> <div>
<h2 class="text-3xl font-bold">{$t('dashboard.recent_adventures')}</h2> <h2 class="text-3xl font-bold">{$t('dashboard.recent_adventures')}</h2>
<p class="text-base-content/60">Your latest travel experiences</p> <p class="text-base-content/60">{$t('home.latest_travel_experiences')}</p>
</div> </div>
</div> </div>
<a href="/adventures" class="btn btn-ghost gap-2"> <a href="/adventures" class="btn btn-ghost gap-2">
View All {$t('dashboard.view_all')}
<span class="badge badge-primary">{stats.adventure_count}</span> <span class="badge badge-primary">{stats.adventure_count}</span>
</a> </a>
</div> </div>
@ -215,8 +203,7 @@
{$t('dashboard.no_recent_adventures')} {$t('dashboard.no_recent_adventures')}
</h2> </h2>
<p class="text-lg text-base-content/60 mb-8 max-w-md mx-auto leading-relaxed"> <p class="text-lg text-base-content/60 mb-8 max-w-md mx-auto leading-relaxed">
{$t('dashboard.add_some')} Start documenting your travels and build your personal adventure {$t('dashboard.document_some_adventures')}
map!
</p> </p>
<div class="flex flex-col sm:flex-row gap-4 justify-center"> <div class="flex flex-col sm:flex-row gap-4 justify-center">
@ -229,44 +216,9 @@
</a> </a>
<a href="/worldtravel" class="btn btn-outline btn-lg gap-2"> <a href="/worldtravel" class="btn btn-outline btn-lg gap-2">
<FlagCheckeredVariantIcon class="w-5 h-5" /> <FlagCheckeredVariantIcon class="w-5 h-5" />
Explore World Map {$t('home.explore_world')}
</a> </a>
</div> </div>
<!-- Inspiration Cards -->
<div class="grid grid-cols-1 md:grid-cols-3 gap-4 mt-12 max-w-4xl mx-auto">
<div class="card bg-base-100/50 shadow-lg">
<div class="card-body p-6 text-center">
<div class="p-3 bg-primary/10 rounded-xl w-fit mx-auto mb-4">
<Airplane class="w-6 h-6 text-primary" />
</div>
<h3 class="font-semibold text-primary">Plan Adventures</h3>
<p class="text-sm text-base-content/60 mt-2">
Create and organize your travel plans
</p>
</div>
</div>
<div class="card bg-base-100/50 shadow-lg">
<div class="card-body p-6 text-center">
<div class="p-3 bg-secondary/10 rounded-xl w-fit mx-auto mb-4">
<FlagCheckeredVariantIcon class="w-6 h-6 text-secondary" />
</div>
<h3 class="font-semibold text-secondary">Track Countries</h3>
<p class="text-sm text-base-content/60 mt-2">Mark visited countries and regions</p>
</div>
</div>
<div class="card bg-base-100/50 shadow-lg">
<div class="card-body p-6 text-center">
<div class="p-3 bg-success/10 rounded-xl w-fit mx-auto mb-4">
<MapMarkerStarOutline class="w-6 h-6 text-success" />
</div>
<h3 class="font-semibold text-success">Share Memories</h3>
<p class="text-sm text-base-content/60 mt-2">Document and share your experiences</p>
</div>
</div>
</div>
</div> </div>
</div> </div>
{/if} {/if}

View file

@ -122,13 +122,14 @@
<MapIcon class="w-8 h-8 text-primary" /> <MapIcon class="w-8 h-8 text-primary" />
</div> </div>
<div> <div>
<h1 <h1 class="text-3xl font-bold bg-clip-text text-primary">
class="text-3xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent"
>
{$t('map.adventure_map')} {$t('map.adventure_map')}
</h1> </h1>
<p class="text-sm text-base-content/60"> <p class="text-sm text-base-content/60">
{filteredAdventures.length} of {totalAdventures} adventures shown {filteredAdventures.length}
{$t('worldtravel.of')}
{totalAdventures}
{$t('map.adventures_shown')}
</p> </p>
</div> </div>
</div> </div>
@ -138,11 +139,11 @@
<div class="hidden md:flex items-center gap-2"> <div class="hidden md:flex items-center gap-2">
<div class="stats stats-horizontal bg-base-100 shadow-lg"> <div class="stats stats-horizontal bg-base-100 shadow-lg">
<div class="stat py-2 px-4"> <div class="stat py-2 px-4">
<div class="stat-title text-xs">Visited</div> <div class="stat-title text-xs">{$t('adventures.visited')}</div>
<div class="stat-value text-lg text-success">{visitedAdventures}</div> <div class="stat-value text-lg text-success">{visitedAdventures}</div>
</div> </div>
<div class="stat py-2 px-4"> <div class="stat py-2 px-4">
<div class="stat-title text-xs">Planned</div> <div class="stat-title text-xs">{$t('adventures.planned')}</div>
<div class="stat-value text-lg text-info">{plannedAdventures}</div> <div class="stat-value text-lg text-info">{plannedAdventures}</div>
</div> </div>
</div> </div>
@ -190,7 +191,7 @@
{#if adventure.latitude && adventure.longitude} {#if adventure.latitude && adventure.longitude}
<Marker <Marker
lngLat={[adventure.longitude, adventure.latitude]} lngLat={[adventure.longitude, adventure.latitude]}
class="grid h-8 w-8 place-items-center rounded-full border border-gray-200 shadow-lg cursor-pointer transition-transform hover:scale-110 {adventure.is_visited class="grid h-8 w-8 place-items-center rounded-full border border-gray-200 shadow-lg cursor-pointer hover:scale-110 {adventure.is_visited
? 'bg-red-300 hover:bg-red-400' ? 'bg-red-300 hover:bg-red-400'
: 'bg-blue-300 hover:bg-blue-400'} text-black focus:outline-6 focus:outline-black" : 'bg-blue-300 hover:bg-blue-400'} text-black focus:outline-6 focus:outline-black"
on:click={togglePopup} on:click={togglePopup}
@ -318,43 +319,42 @@
<div class="p-2 bg-primary/10 rounded-lg"> <div class="p-2 bg-primary/10 rounded-lg">
<Filter class="w-6 h-6 text-primary" /> <Filter class="w-6 h-6 text-primary" />
</div> </div>
<h2 class="text-xl font-bold">Map Controls</h2> <h2 class="text-xl font-bold">{$t('map.map_controls')}</h2>
</div> </div>
<!-- Adventure Statistics --> <!-- Adventure Statistics -->
<div class="card bg-base-200/50 p-4 mb-6"> <div class="card bg-base-200/50 p-4 mb-6">
<h3 class="font-semibold text-lg mb-4 flex items-center gap-2"> <h3 class="font-semibold text-lg mb-4 flex items-center gap-2">
<MapIcon class="w-5 h-5" /> <MapIcon class="w-5 h-5" />
Adventure Stats {$t('map.adventure_stats')}
</h3> </h3>
<div class="space-y-4"> <div class="space-y-4">
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-sm">Total Adventures</div> <div class="stat-title text-sm">{$t('dashboard.total_adventures')}</div>
<div class="stat-value text-2xl">{totalAdventures}</div> <div class="stat-value text-2xl">{totalAdventures}</div>
<div class="stat-desc">Across all locations</div>
</div> </div>
<div class="grid grid-cols-2 gap-4"> <div class="grid grid-cols-2 gap-4">
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-xs">Visited</div> <div class="stat-title text-xs">{$t('adventures.visited')}</div>
<div class="stat-value text-lg text-success">{visitedAdventures}</div> <div class="stat-value text-lg text-success">{visitedAdventures}</div>
</div> </div>
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-xs">Planned</div> <div class="stat-title text-xs">{$t('adventures.planned')}</div>
<div class="stat-value text-lg text-info">{plannedAdventures}</div> <div class="stat-value text-lg text-info">{plannedAdventures}</div>
</div> </div>
</div> </div>
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-xs">Regions</div> <div class="stat-title text-xs">{$t('map.regions')}</div>
<div class="stat-value text-lg text-accent">{totalRegions}</div> <div class="stat-value text-lg text-accent">{totalRegions}</div>
</div> </div>
<!-- Progress Bar --> <!-- Progress Bar -->
<div class="space-y-2"> <div class="space-y-2">
<div class="flex justify-between text-sm"> <div class="flex justify-between text-sm">
<span>Completion</span> <span>{$t('map.completion')}</span>
<span>{Math.round((visitedAdventures / totalAdventures) * 100)}%</span> <span>{Math.round((visitedAdventures / totalAdventures) * 100)}%</span>
</div> </div>
<progress <progress
@ -370,7 +370,7 @@
<div class="card bg-base-200/50 p-4 mb-6"> <div class="card bg-base-200/50 p-4 mb-6">
<h3 class="font-semibold text-lg mb-4 flex items-center gap-2"> <h3 class="font-semibold text-lg mb-4 flex items-center gap-2">
<Eye class="w-5 h-5" /> <Eye class="w-5 h-5" />
Display Options {$t('map.display_options')}
</h3> </h3>
<div class="space-y-3"> <div class="space-y-3">
@ -423,7 +423,7 @@
<div class="space-y-3"> <div class="space-y-3">
<div class="alert alert-info"> <div class="alert alert-info">
<Pin class="w-4 h-4" /> <Pin class="w-4 h-4" />
<span class="text-sm">Marker placed on map</span> <span class="text-sm">{$t('map.marker_placed_on_map')}</span>
</div> </div>
<button type="button" class="btn btn-primary w-full gap-2" on:click={newAdventure}> <button type="button" class="btn btn-primary w-full gap-2" on:click={newAdventure}>
<Plus class="w-4 h-4" /> <Plus class="w-4 h-4" />
@ -437,7 +437,7 @@
{:else} {:else}
<div class="space-y-3"> <div class="space-y-3">
<p class="text-sm text-base-content/60"> <p class="text-sm text-base-content/60">
Click on the map to place a marker, or add an adventure without location. {$t('map.place_marker_desc')}
</p> </p>
<button <button
type="button" type="button"

View file

@ -175,8 +175,8 @@
{#if stats} {#if stats}
<div class="content-section mb-16"> <div class="content-section mb-16">
<div class="text-center mb-8"> <div class="text-center mb-8">
<h2 class="text-3xl font-bold mb-2">Travel Statistics</h2> <h2 class="text-3xl font-bold mb-2">{$t('profile.travel_statistics')}</h2>
<p class="text-base-content/60">Your adventure journey at a glance</p> <p class="text-base-content/60">{$t('profile.your_journey_at_a_glance')}</p>
</div> </div>
<!-- Primary Stats Grid --> <!-- Primary Stats Grid -->
@ -215,7 +215,7 @@
{$t('navbar.collections')} {$t('navbar.collections')}
</div> </div>
<div class="text-4xl font-bold text-secondary">{stats.trips_count}</div> <div class="text-4xl font-bold text-secondary">{stats.trips_count}</div>
<div class="text-secondary/60 mt-2">Curated trips</div> <div class="text-secondary/60 mt-2">{$t('profile.planned_trips')}</div>
</div> </div>
<div class="p-4 bg-secondary/20 rounded-2xl"> <div class="p-4 bg-secondary/20 rounded-2xl">
<CollectionIcon class="w-8 h-8 text-secondary" /> <CollectionIcon class="w-8 h-8 text-secondary" />
@ -237,7 +237,7 @@
<div class="text-4xl font-bold text-success">{stats.visited_country_count}</div> <div class="text-4xl font-bold text-success">{stats.visited_country_count}</div>
<div class="text-success/60 mt-2"> <div class="text-success/60 mt-2">
<div class="flex items-center justify-between mb-1"> <div class="flex items-center justify-between mb-1">
<span>{worldExplorationPercentage}% of world</span> <span>{worldExplorationPercentage}% {$t('home.of_world')}</span>
<span class="text-xs" <span class="text-xs"
>{stats.visited_country_count}/{stats.total_countries}</span >{stats.visited_country_count}/{stats.total_countries}</span
> >
@ -272,7 +272,7 @@
<div class="text-3xl font-bold text-info">{stats.visited_region_count}</div> <div class="text-3xl font-bold text-info">{stats.visited_region_count}</div>
<div class="text-info/60 mt-2"> <div class="text-info/60 mt-2">
<div class="flex items-center justify-between mb-1"> <div class="flex items-center justify-between mb-1">
<span>{regionExplorationPercentage}% explored</span> <span>{regionExplorationPercentage}% {$t('profile.explored')}</span>
<span class="text-xs">{stats.visited_region_count}/{stats.total_regions}</span <span class="text-xs">{stats.visited_region_count}/{stats.total_regions}</span
> >
</div> </div>
@ -303,7 +303,7 @@
<div class="text-3xl font-bold text-warning">{stats.visited_city_count}</div> <div class="text-3xl font-bold text-warning">{stats.visited_city_count}</div>
<div class="text-warning/60 mt-2"> <div class="text-warning/60 mt-2">
<div class="flex items-center justify-between mb-1"> <div class="flex items-center justify-between mb-1">
<span>{cityExplorationPercentage}% discovered</span> <span>{cityExplorationPercentage}% {$t('profile.discovered')}</span>
<span class="text-xs">{stats.visited_city_count}/{stats.total_cities}</span> <span class="text-xs">{stats.visited_city_count}/{stats.total_cities}</span>
</div> </div>
<progress <progress
@ -332,13 +332,13 @@
</div> </div>
<div> <div>
<h2 class="text-3xl font-bold">{$t('auth.user_adventures')}</h2> <h2 class="text-3xl font-bold">{$t('auth.user_adventures')}</h2>
<p class="text-base-content/60">Public adventure experiences</p> <p class="text-base-content/60">{$t('profile.public_adventure_experiences')}</p>
</div> </div>
</div> </div>
{#if adventures && adventures.length > 0} {#if adventures && adventures.length > 0}
<div class="badge badge-primary badge-lg"> <div class="badge badge-primary badge-lg">
{adventures.length} {adventures.length}
{adventures.length === 1 ? 'Adventure' : 'Adventures'} {adventures.length === 1 ? $t('adventures.adventure') : $t('navbar.adventures')}
</div> </div>
{/if} {/if}
</div> </div>
@ -352,7 +352,7 @@
<h3 class="text-xl font-bold text-base-content/70 mb-2"> <h3 class="text-xl font-bold text-base-content/70 mb-2">
{$t('auth.no_public_adventures')} {$t('auth.no_public_adventures')}
</h3> </h3>
<p class="text-base-content/50">This user hasn't shared any public adventures yet.</p> <p class="text-base-content/50">{$t('profile.no_shared_adventures')}</p>
</div> </div>
</div> </div>
{:else} {:else}
@ -375,13 +375,13 @@
</div> </div>
<div> <div>
<h2 class="text-3xl font-bold">{$t('auth.user_collections')}</h2> <h2 class="text-3xl font-bold">{$t('auth.user_collections')}</h2>
<p class="text-base-content/60">Curated travel collections</p> <p class="text-base-content/60">{$t('profile.planned_trips')}</p>
</div> </div>
</div> </div>
{#if collections && collections.length > 0} {#if collections && collections.length > 0}
<div class="badge badge-secondary badge-lg"> <div class="badge badge-secondary badge-lg">
{collections.length} {collections.length}
{collections.length === 1 ? 'Collection' : 'Collections'} {collections.length === 1 ? $t('adventures.collection') : $t('navbar.collections')}
</div> </div>
{/if} {/if}
</div> </div>
@ -395,7 +395,7 @@
<h3 class="text-xl font-bold text-base-content/70 mb-2"> <h3 class="text-xl font-bold text-base-content/70 mb-2">
{$t('auth.no_public_collections')} {$t('auth.no_public_collections')}
</h3> </h3>
<p class="text-base-content/50">This user hasn't shared any public collections yet.</p> <p class="text-base-content/50">{$t('profile.no_shared_collections')}</p>
</div> </div>
</div> </div>
{:else} {:else}

View file

@ -285,9 +285,7 @@
<div class="container mx-auto px-6 py-8"> <div class="container mx-auto px-6 py-8">
<div class="flex items-center justify-between"> <div class="flex items-center justify-between">
<div> <div>
<h1 <h1 class="text-4xl font-bold bg-clip-text text-primary pb-1">
class="text-4xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent pb-1"
>
{$t('settings.settings_page')} {$t('settings.settings_page')}
</h1> </h1>
</div> </div>

View file

@ -108,13 +108,14 @@
<Globe class="w-8 h-8 text-primary" /> <Globe class="w-8 h-8 text-primary" />
</div> </div>
<div> <div>
<h1 <h1 class="text-3xl font-bold text-primary bg-clip-text">
class="text-3xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent"
>
{$t('worldtravel.country_list')} {$t('worldtravel.country_list')}
</h1> </h1>
<p class="text-sm text-base-content/60"> <p class="text-sm text-base-content/60">
{filteredCountries.length} of {totalCountries} countries {filteredCountries.length}
{$t('worldtravel.of')}
{totalCountries}
{$t('worldtravel.countries')}
</p> </p>
</div> </div>
</div> </div>
@ -124,11 +125,11 @@
<div class="hidden md:flex items-center gap-2"> <div class="hidden md:flex items-center gap-2">
<div class="stats stats-horizontal bg-base-100 shadow-lg"> <div class="stats stats-horizontal bg-base-100 shadow-lg">
<div class="stat py-2 px-4"> <div class="stat py-2 px-4">
<div class="stat-title text-xs">Visited</div> <div class="stat-title text-xs">{$t('adventures.visited')}</div>
<div class="stat-value text-lg text-success">{visitedCountries}</div> <div class="stat-value text-lg text-success">{visitedCountries}</div>
</div> </div>
<div class="stat py-2 px-4"> <div class="stat py-2 px-4">
<div class="stat-title text-xs">Remaining</div> <div class="stat-title text-xs">{$t('worldtravel.remaining')}</div>
<div class="stat-value text-lg text-error">{notVisitedCountries}</div> <div class="stat-value text-lg text-error">{notVisitedCountries}</div>
</div> </div>
</div> </div>
@ -164,45 +165,47 @@
> >
{#if showMap} {#if showMap}
<Map class="w-4 h-4" /> <Map class="w-4 h-4" />
<span class="hidden sm:inline">Hide Map</span> <span class="hidden sm:inline">{$t('worldtravel.hide_map')}</span>
{:else} {:else}
<Map class="w-4 h-4" /> <Map class="w-4 h-4" />
<span class="hidden sm:inline">Show Map</span> <span class="hidden sm:inline">{$t('worldtravel.show_map')}</span>
{/if} {/if}
</button> </button>
</div> </div>
<!-- Filter Chips --> <!-- Filter Chips -->
<div class="mt-4 flex flex-wrap items-center gap-2"> <div class="mt-4 flex flex-wrap items-center gap-2">
<span class="text-sm font-medium text-base-content/60">Filter by:</span> <span class="text-sm font-medium text-base-content/60"
>{$t('worldtravel.filter_by')}:</span
>
<div class="tabs tabs-boxed bg-base-200"> <div class="tabs tabs-boxed bg-base-200">
<button <button
class="tab tab-sm gap-2 {filterOption === 'all' ? 'tab-active' : ''}" class="tab tab-sm gap-2 {filterOption === 'all' ? 'tab-active' : ''}"
on:click={() => (filterOption = 'all')} on:click={() => (filterOption = 'all')}
> >
<Globe class="w-3 h-3" /> <Globe class="w-3 h-3" />
All {$t('adventures.all')}
</button> </button>
<button <button
class="tab tab-sm gap-2 {filterOption === 'complete' ? 'tab-active' : ''}" class="tab tab-sm gap-2 {filterOption === 'complete' ? 'tab-active' : ''}"
on:click={() => (filterOption = 'complete')} on:click={() => (filterOption = 'complete')}
> >
<Check class="w-3 h-3" /> <Check class="w-3 h-3" />
Complete {$t('worldtravel.complete')}
</button> </button>
<button <button
class="tab tab-sm gap-2 {filterOption === 'partial' ? 'tab-active' : ''}" class="tab tab-sm gap-2 {filterOption === 'partial' ? 'tab-active' : ''}"
on:click={() => (filterOption = 'partial')} on:click={() => (filterOption = 'partial')}
> >
<Progress class="w-3 h-3" /> <Progress class="w-3 h-3" />
Partial {$t('worldtravel.partial')}
</button> </button>
<button <button
class="tab tab-sm gap-2 {filterOption === 'not' ? 'tab-active' : ''}" class="tab tab-sm gap-2 {filterOption === 'not' ? 'tab-active' : ''}"
on:click={() => (filterOption = 'not')} on:click={() => (filterOption = 'not')}
> >
<Cancel class="w-3 h-3" /> <Cancel class="w-3 h-3" />
Not Visited {$t('adventures.not_visited')}
</button> </button>
</div> </div>
@ -218,7 +221,7 @@
{#if searchQuery || filterOption !== 'all' || subRegionOption} {#if searchQuery || filterOption !== 'all' || subRegionOption}
<button class="btn btn-ghost btn-xs gap-1" on:click={clearFilters}> <button class="btn btn-ghost btn-xs gap-1" on:click={clearFilters}>
<Clear class="w-3 h-3" /> <Clear class="w-3 h-3" />
Clear All {$t('worldtravel.clear_all')}
</button> </button>
{/if} {/if}
</div> </div>
@ -272,19 +275,19 @@
{$t('worldtravel.no_countries_found')} {$t('worldtravel.no_countries_found')}
</h3> </h3>
<p class="text-base-content/50 text-center max-w-md mb-6"> <p class="text-base-content/50 text-center max-w-md mb-6">
Try adjusting your search terms or filters to find the countries you're looking for. {$t('worldtravel.no_countries_found_desc')}
</p> </p>
<button class="btn btn-primary gap-2" on:click={clearFilters}> <button class="btn btn-primary gap-2" on:click={clearFilters}>
<Clear class="w-4 h-4" /> <Clear class="w-4 h-4" />
Clear Filters {$t('worldtravel.clear_filters')}
</button> </button>
{#if allCountries.length === 0} {#if allCountries.length === 0}
<div class="mt-8 text-center"> <div class="mt-8 text-center">
<div class="alert alert-warning max-w-md"> <div class="alert alert-warning max-w-md">
<div> <div>
<h4 class="font-bold">No country data available</h4> <h4 class="font-bold">{$t('worldtravel.no_country_data_available')}</h4>
<p class="text-sm">Please check the documentation for updating region data.</p> <p class="text-sm">{$t('worldtravel.no_country_data_available_desc')}</p>
</div> </div>
</div> </div>
<a <a
@ -300,7 +303,7 @@
{:else} {:else}
<!-- Countries Grid --> <!-- Countries Grid -->
<div <div
class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6" class="grid grid-cols-1 sm:grid-cols-1 md:grid-cols-2 lg:grid-cols-2 xl:grid-cols-3 gap-6"
> >
{#each filteredCountries as country} {#each filteredCountries as country}
<CountryCard {country} /> <CountryCard {country} />
@ -320,41 +323,41 @@
<div class="p-2 bg-primary/10 rounded-lg"> <div class="p-2 bg-primary/10 rounded-lg">
<Filter class="w-6 h-6 text-primary" /> <Filter class="w-6 h-6 text-primary" />
</div> </div>
<h2 class="text-xl font-bold">Filters & Stats</h2> <h2 class="text-xl font-bold">{$t('adventures.filters_and_stats')}</h2>
</div> </div>
<!-- Travel Statistics --> <!-- Travel Statistics -->
<div class="card bg-base-200/50 p-4 mb-6"> <div class="card bg-base-200/50 p-4 mb-6">
<h3 class="font-semibold text-lg mb-4 flex items-center gap-2"> <h3 class="font-semibold text-lg mb-4 flex items-center gap-2">
<Globe class="w-5 h-5" /> <Globe class="w-5 h-5" />
Travel Progress {$t('adventures.travel_progress')}
</h3> </h3>
<div class="space-y-4"> <div class="space-y-4">
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-sm">Total Countries</div> <div class="stat-title text-sm">{$t('worldtravel.total_countries')}</div>
<div class="stat-value text-2xl">{totalCountries}</div> <div class="stat-value text-2xl">{totalCountries}</div>
<div class="stat-desc">Available to explore</div> <div class="stat-desc">{$t('worldtravel.available_to_explore')}</div>
</div> </div>
<div class="grid grid-cols-2 gap-4"> <div class="grid grid-cols-2 gap-4">
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-xs">Visited</div> <div class="stat-title text-xs">{$t('adventures.visited')}</div>
<div class="stat-value text-lg text-success">{visitedCountries}</div> <div class="stat-value text-lg text-success">{visitedCountries}</div>
</div> </div>
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-xs">Remaining</div> <div class="stat-title text-xs">{$t('worldtravel.remaining')}</div>
<div class="stat-value text-lg text-error">{notVisitedCountries}</div> <div class="stat-value text-lg text-error">{notVisitedCountries}</div>
</div> </div>
</div> </div>
<div class="grid grid-cols-2 gap-4"> <div class="grid grid-cols-2 gap-4">
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-xs">Complete</div> <div class="stat-title text-xs">{$t('worldtravel.complete')}</div>
<div class="stat-value text-sm text-success">{completeCountries}</div> <div class="stat-value text-sm text-success">{completeCountries}</div>
</div> </div>
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-xs">Partial</div> <div class="stat-title text-xs">{$t('worldtravel.partial')}</div>
<div class="stat-value text-sm text-warning">{partialCountries}</div> <div class="stat-value text-sm text-warning">{partialCountries}</div>
</div> </div>
</div> </div>
@ -362,7 +365,7 @@
<!-- Progress Bar --> <!-- Progress Bar -->
<div class="space-y-2"> <div class="space-y-2">
<div class="flex justify-between text-sm"> <div class="flex justify-between text-sm">
<span>Progress</span> <span>{$t('worldtravel.progress')}</span>
<span>{Math.round((visitedCountries / totalCountries) * 100)}%</span> <span>{Math.round((visitedCountries / totalCountries) * 100)}%</span>
</div> </div>
<progress <progress
@ -378,7 +381,7 @@
<div class="card bg-base-200/50 p-4"> <div class="card bg-base-200/50 p-4">
<h3 class="font-semibold text-lg mb-4 flex items-center gap-2"> <h3 class="font-semibold text-lg mb-4 flex items-center gap-2">
<Pin class="w-5 h-5" /> <Pin class="w-5 h-5" />
Filter by Region {$t('worldtravel.filter_by_region')}
</h3> </h3>
<div class="space-y-2"> <div class="space-y-2">
@ -390,7 +393,7 @@
checked={subRegionOption === ''} checked={subRegionOption === ''}
on:change={() => (subRegionOption = '')} on:change={() => (subRegionOption = '')}
/> />
<span class="label-text">All Regions</span> <span class="label-text">{$t('worldtravel.all_regions')}</span>
</label> </label>
{#each worldSubregions as subregion} {#each worldSubregions as subregion}
@ -413,16 +416,16 @@
<button class="btn btn-outline w-full gap-2" on:click={() => (showMap = !showMap)}> <button class="btn btn-outline w-full gap-2" on:click={() => (showMap = !showMap)}>
{#if showMap} {#if showMap}
<Map class="w-4 h-4" /> <Map class="w-4 h-4" />
Hide Map {$t('worldtravel.hide_map')}
{:else} {:else}
<Map class="w-4 h-4" /> <Map class="w-4 h-4" />
Show Map {$t('worldtravel.show_map')}
{/if} {/if}
</button> </button>
<button class="btn btn-ghost w-full gap-2" on:click={clearFilters}> <button class="btn btn-ghost w-full gap-2" on:click={clearFilters}>
<Clear class="w-4 h-4" /> <Clear class="w-4 h-4" />
Clear All Filters {$t('worldtravel.clear_all_filters')}
</button> </button>
</div> </div>
</div> </div>

View file

@ -158,9 +158,7 @@
<Flag class="w-8 h-8 text-primary" /> <Flag class="w-8 h-8 text-primary" />
</div> </div>
<div> <div>
<h1 <h1 class="text-3xl font-bold bg-clip-text text-primary">
class="text-3xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent"
>
{$t('worldtravel.regions_in')} {$t('worldtravel.regions_in')}
{country?.name} {country?.name}
</h1> </h1>
@ -212,35 +210,37 @@
<!-- Filter Chips --> <!-- Filter Chips -->
<div class="mt-4 flex flex-wrap items-center gap-2"> <div class="mt-4 flex flex-wrap items-center gap-2">
<span class="text-sm font-medium text-base-content/60">Filter by:</span> <span class="text-sm font-medium text-base-content/60"
>{$t('worldtravel.filter_by')}:</span
>
<div class="tabs tabs-boxed bg-base-200"> <div class="tabs tabs-boxed bg-base-200">
<button <button
class="tab tab-sm gap-2 {filterOption === 'all' ? 'tab-active' : ''}" class="tab tab-sm gap-2 {filterOption === 'all' ? 'tab-active' : ''}"
on:click={() => (filterOption = 'all')} on:click={() => (filterOption = 'all')}
> >
<MapMarker class="w-3 h-3" /> <MapMarker class="w-3 h-3" />
All {$t('adventures.all')}
</button> </button>
<button <button
class="tab tab-sm gap-2 {filterOption === 'visited' ? 'tab-active' : ''}" class="tab tab-sm gap-2 {filterOption === 'visited' ? 'tab-active' : ''}"
on:click={() => (filterOption = 'visited')} on:click={() => (filterOption = 'visited')}
> >
<Check class="w-3 h-3" /> <Check class="w-3 h-3" />
Visited {$t('adventures.visited')}
</button> </button>
<button <button
class="tab tab-sm gap-2 {filterOption === 'not-visited' ? 'tab-active' : ''}" class="tab tab-sm gap-2 {filterOption === 'not-visited' ? 'tab-active' : ''}"
on:click={() => (filterOption = 'not-visited')} on:click={() => (filterOption = 'not-visited')}
> >
<Cancel class="w-3 h-3" /> <Cancel class="w-3 h-3" />
Not Visited {$t('adventures.not_visited')}
</button> </button>
</div> </div>
{#if searchQuery || filterOption !== 'all'} {#if searchQuery || filterOption !== 'all'}
<button class="btn btn-ghost btn-xs gap-1" on:click={clearFilters}> <button class="btn btn-ghost btn-xs gap-1" on:click={clearFilters}>
<Clear class="w-3 h-3" /> <Clear class="w-3 h-3" />
Clear All {$t('worldtravel.clear_all')}
</button> </button>
{/if} {/if}
</div> </div>
@ -255,16 +255,16 @@
<div class="flex items-center justify-between mb-4"> <div class="flex items-center justify-between mb-4">
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<Map class="w-5 h-5 text-primary" /> <Map class="w-5 h-5 text-primary" />
<h2 class="text-lg font-semibold">Interactive Map</h2> <h2 class="text-lg font-semibold">{$t('worldtravel.interactive_map')}</h2>
</div> </div>
<div class="flex items-center gap-2 text-sm text-base-content/60"> <div class="flex items-center gap-2 text-sm text-base-content/60">
<div class="flex items-center gap-1"> <div class="flex items-center gap-1">
<div class="w-3 h-3 bg-green-200 rounded-full border"></div> <div class="w-3 h-3 bg-green-200 rounded-full border"></div>
<span>Visited</span> <span>{$t('adventures.visited')}</span>
</div> </div>
<div class="flex items-center gap-1"> <div class="flex items-center gap-1">
<div class="w-3 h-3 bg-red-200 rounded-full border"></div> <div class="w-3 h-3 bg-red-200 rounded-full border"></div>
<span>Not Visited</span> <span>{$t('adventures.not_visited')}</span>
</div> </div>
</div> </div>
</div> </div>
@ -305,19 +305,21 @@
<div class="p-6 bg-base-200/50 rounded-2xl mb-6"> <div class="p-6 bg-base-200/50 rounded-2xl mb-6">
<MapMarker class="w-16 h-16 text-base-content/30" /> <MapMarker class="w-16 h-16 text-base-content/30" />
</div> </div>
<h3 class="text-xl font-semibold text-base-content/70 mb-2">No regions found</h3> <h3 class="text-xl font-semibold text-base-content/70 mb-2">
{$t('worldtravel.no_regions_found')}
</h3>
<p class="text-base-content/50 text-center max-w-md mb-6"> <p class="text-base-content/50 text-center max-w-md mb-6">
Try adjusting your search terms or filters to find the regions you're looking for. {$t('worldtravel.no_countries_found_desc')}
</p> </p>
<button class="btn btn-primary gap-2" on:click={clearFilters}> <button class="btn btn-primary gap-2" on:click={clearFilters}>
<Clear class="w-4 h-4" /> <Clear class="w-4 h-4" />
Clear Filters {$t('worldtravel.clear_filters')}
</button> </button>
</div> </div>
{:else} {:else}
<!-- Regions Grid --> <!-- Regions Grid -->
<div <div
class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6" class="grid grid-cols-1 sm:grid-cols-1 md:grid-cols-2 lg:grid-cols-2 xl:grid-cols-3 gap-6"
> >
{#each filteredRegions as region} {#each filteredRegions as region}
<RegionCard <RegionCard
@ -350,7 +352,7 @@
<div class="p-2 bg-primary/10 rounded-lg"> <div class="p-2 bg-primary/10 rounded-lg">
<Filter class="w-6 h-6 text-primary" /> <Filter class="w-6 h-6 text-primary" />
</div> </div>
<h2 class="text-xl font-bold">Progress & Stats</h2> <h2 class="text-xl font-bold">{$t('worldtravel.progress_and_stats')}</h2>
</div> </div>
<!-- Country Progress --> <!-- Country Progress -->
@ -362,18 +364,18 @@
<div class="space-y-4"> <div class="space-y-4">
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-sm">Total Regions</div> <div class="stat-title text-sm">{$t('worldtravel.total_regions')}</div>
<div class="stat-value text-2xl">{regions.length}</div> <div class="stat-value text-2xl">{regions.length}</div>
<div class="stat-desc">Available to explore</div> <div class="stat-desc">{$t('worldtravel.available_to_explore')}</div>
</div> </div>
<div class="grid grid-cols-2 gap-4"> <div class="grid grid-cols-2 gap-4">
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-xs">Visited</div> <div class="stat-title text-xs">{$t('adventures.visited')}</div>
<div class="stat-value text-lg text-success">{visitedCount}</div> <div class="stat-value text-lg text-success">{visitedCount}</div>
</div> </div>
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-xs">Remaining</div> <div class="stat-title text-xs">{$t('worldtravel.remaining')}</div>
<div class="stat-value text-lg text-error">{notVisitedCount}</div> <div class="stat-value text-lg text-error">{notVisitedCount}</div>
</div> </div>
</div> </div>
@ -381,7 +383,7 @@
<!-- Progress Bar --> <!-- Progress Bar -->
<div class="space-y-2"> <div class="space-y-2">
<div class="flex justify-between text-sm"> <div class="flex justify-between text-sm">
<span>Progress</span> <span>{$t('worldtravel.progress')}</span>
<span>{completionPercentage}%</span> <span>{completionPercentage}%</span>
</div> </div>
<progress <progress
@ -394,41 +396,21 @@
{#if completionPercentage === 100} {#if completionPercentage === 100}
<div class="alert alert-success"> <div class="alert alert-success">
<Trophy class="w-4 h-4" /> <Trophy class="w-4 h-4" />
<span class="text-sm">Country completed! 🎉</span> <span class="text-sm">{$t('worldtravel.country_completed')}! 🎉</span>
</div> </div>
{/if} {/if}
</div> </div>
</div> </div>
<!-- Map Controls
<div class="card bg-base-200/50 p-4 mb-6">
<h3 class="font-semibold text-lg mb-4 flex items-center gap-2">
<Map class="w-5 h-5" />
Map Settings
</h3>
<div class="space-y-3">
<label class="label cursor-pointer justify-start gap-3">
<input type="checkbox" class="checkbox checkbox-primary" bind:checked={showGeo} />
<span class="label-text">{$t('adventures.show_region_labels')}</span>
</label>
<div class="text-xs text-base-content/60">
Click markers on the map to toggle visited status
</div>
</div>
</div> -->
<!-- Quick Actions --> <!-- Quick Actions -->
{#if regions.some((region) => region.latitude && region.longitude)} {#if regions.some((region) => region.latitude && region.longitude)}
<div class="space-y-3"> <div class="space-y-3">
<button class="btn btn-outline w-full gap-2" on:click={() => (showGeo = !showGeo)}> <button class="btn btn-outline w-full gap-2" on:click={() => (showGeo = !showGeo)}>
{#if showGeo} {#if showGeo}
<Map class="w-4 h-4" /> <Map class="w-4 h-4" />
Hide Map Labels {$t('worldtravel.hide_map_labels')}
{:else} {:else}
<Map class="w-4 h-4" /> <Map class="w-4 h-4" />
Show Map Labels {$t('worldtravel.show_map_labels')}
{/if} {/if}
</button> </button>

View file

@ -150,14 +150,15 @@
<CityIcon class="w-8 h-8 text-primary" /> <CityIcon class="w-8 h-8 text-primary" />
</div> </div>
<div> <div>
<h1 <h1 class="text-3xl font-bold bg-clip-text text-primary">
class="text-3xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent"
>
{$t('worldtravel.cities_in')} {$t('worldtravel.cities_in')}
{region?.name} {region?.name}
</h1> </h1>
<p class="text-sm text-base-content/60"> <p class="text-sm text-base-content/60">
{filteredCities.length} of {allCities.length} cities {filteredCities.length}
{$t('worldtravel.of')}
{allCities.length}
{$t('worldtravel.cities')}
</p> </p>
</div> </div>
</div> </div>
@ -168,7 +169,7 @@
{#if completionPercentage === 100} {#if completionPercentage === 100}
<div class="badge badge-success gap-2 p-3"> <div class="badge badge-success gap-2 p-3">
<Trophy class="w-4 h-4" /> <Trophy class="w-4 h-4" />
Complete! {$t('worldtravel.complete')}
</div> </div>
{:else} {:else}
<div class="badge badge-primary gap-2 p-3"> <div class="badge badge-primary gap-2 p-3">
@ -200,25 +201,13 @@
</button> </button>
{/if} {/if}
</div> </div>
<!-- Map Toggle -->
<button
class="btn btn-outline gap-2 {showGeo ? 'btn-active' : ''}"
on:click={() => (showGeo = !showGeo)}
>
{#if showGeo}
<Map class="w-4 h-4" />
<span class="hidden sm:inline">Hide Labels</span>
{:else}
<Map class="w-4 h-4" />
<span class="hidden sm:inline">Show Labels</span>
{/if}
</button>
</div> </div>
<!-- Filter Chips --> <!-- Filter Chips -->
<div class="mt-4 flex flex-wrap items-center gap-2"> <div class="mt-4 flex flex-wrap items-center gap-2">
<span class="text-sm font-medium text-base-content/60">Filter by:</span> <span class="text-sm font-medium text-base-content/60"
>{$t('worldtravel.filter_by')}:</span
>
<div class="tabs tabs-boxed bg-base-200"> <div class="tabs tabs-boxed bg-base-200">
<button <button
class="tab tab-sm gap-2 {filterOption === 'all' ? 'tab-active' : ''}" class="tab tab-sm gap-2 {filterOption === 'all' ? 'tab-active' : ''}"
@ -232,21 +221,21 @@
on:click={() => (filterOption = 'visited')} on:click={() => (filterOption = 'visited')}
> >
<Check class="w-3 h-3" /> <Check class="w-3 h-3" />
Visited {$t('adventures.visited')}
</button> </button>
<button <button
class="tab tab-sm gap-2 {filterOption === 'not-visited' ? 'tab-active' : ''}" class="tab tab-sm gap-2 {filterOption === 'not-visited' ? 'tab-active' : ''}"
on:click={() => (filterOption = 'not-visited')} on:click={() => (filterOption = 'not-visited')}
> >
<Cancel class="w-3 h-3" /> <Cancel class="w-3 h-3" />
Not Visited {$t('adventures.not_visited')}
</button> </button>
</div> </div>
{#if searchQuery || filterOption !== 'all'} {#if searchQuery || filterOption !== 'all'}
<button class="btn btn-ghost btn-xs gap-1" on:click={clearFilters}> <button class="btn btn-ghost btn-xs gap-1" on:click={clearFilters}>
<Clear class="w-3 h-3" /> <Clear class="w-3 h-3" />
Clear All {$t('worldtravel.clear_all')}
</button> </button>
{/if} {/if}
</div> </div>
@ -261,16 +250,16 @@
<div class="flex items-center justify-between mb-4"> <div class="flex items-center justify-between mb-4">
<div class="flex items-center gap-2"> <div class="flex items-center gap-2">
<Map class="w-5 h-5 text-primary" /> <Map class="w-5 h-5 text-primary" />
<h2 class="text-lg font-semibold">Interactive Map</h2> <h2 class="text-lg font-semibold">{$t('worldtravel.interactive_map')}</h2>
</div> </div>
<div class="flex items-center gap-2 text-sm text-base-content/60"> <div class="flex items-center gap-2 text-sm text-base-content/60">
<div class="flex items-center gap-1"> <div class="flex items-center gap-1">
<div class="w-3 h-3 bg-green-200 rounded-full border"></div> <div class="w-3 h-3 bg-green-200 rounded-full border"></div>
<span>Visited</span> <span>{$t('adventures.visited')}</span>
</div> </div>
<div class="flex items-center gap-1"> <div class="flex items-center gap-1">
<div class="w-3 h-3 bg-red-200 rounded-full border"></div> <div class="w-3 h-3 bg-red-200 rounded-full border"></div>
<span>Not Visited</span> <span>{$t('adventures.not_visited')}</span>
</div> </div>
</div> </div>
</div> </div>
@ -315,19 +304,21 @@
<div class="p-6 bg-base-200/50 rounded-2xl mb-6"> <div class="p-6 bg-base-200/50 rounded-2xl mb-6">
<CityIcon class="w-16 h-16 text-base-content/30" /> <CityIcon class="w-16 h-16 text-base-content/30" />
</div> </div>
<h3 class="text-xl font-semibold text-base-content/70 mb-2">No cities found</h3> <h3 class="text-xl font-semibold text-base-content/70 mb-2">
{$t('worldtravel.no_cities_found')}
</h3>
<p class="text-base-content/50 text-center max-w-md mb-6"> <p class="text-base-content/50 text-center max-w-md mb-6">
Try adjusting your search terms or filters to find the cities you're looking for. {$t('worldtravel.no_countries_found_desc')}
</p> </p>
<button class="btn btn-primary gap-2" on:click={clearFilters}> <button class="btn btn-primary gap-2" on:click={clearFilters}>
<Clear class="w-4 h-4" /> <Clear class="w-4 h-4" />
Clear Filters {$t('worldtravel.clear_filters')}
</button> </button>
</div> </div>
{:else} {:else}
<!-- Cities Grid --> <!-- Cities Grid -->
<div <div
class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 xl:grid-cols-5 gap-6" class="grid grid-cols-1 sm:grid-cols-1 md:grid-cols-2 lg:grid-cols-2 xl:grid-cols-3 gap-6"
> >
{#each filteredCities as city} {#each filteredCities as city}
<CityCard <CityCard
@ -360,7 +351,7 @@
<div class="p-2 bg-primary/10 rounded-lg"> <div class="p-2 bg-primary/10 rounded-lg">
<Filter class="w-6 h-6 text-primary" /> <Filter class="w-6 h-6 text-primary" />
</div> </div>
<h2 class="text-xl font-bold">Progress & Stats</h2> <h2 class="text-xl font-bold">{$t('worldtravel.progress_and_stats')}</h2>
</div> </div>
<!-- Region Progress --> <!-- Region Progress -->
@ -372,18 +363,18 @@
<div class="space-y-4"> <div class="space-y-4">
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-sm">Total Cities</div> <div class="stat-title text-sm">{$t('worldtravel.total_cities')}</div>
<div class="stat-value text-2xl">{allCities.length}</div> <div class="stat-value text-2xl">{allCities.length}</div>
<div class="stat-desc">Available to explore</div> <div class="stat-desc">{$t('worldtravel.available_to_explore')}</div>
</div> </div>
<div class="grid grid-cols-2 gap-4"> <div class="grid grid-cols-2 gap-4">
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-xs">Visited</div> <div class="stat-title text-xs">{$t('adventures.visited')}</div>
<div class="stat-value text-lg text-success">{visitedCount}</div> <div class="stat-value text-lg text-success">{visitedCount}</div>
</div> </div>
<div class="stat p-0"> <div class="stat p-0">
<div class="stat-title text-xs">Remaining</div> <div class="stat-title text-xs">{$t('worldtravel.remaining')}</div>
<div class="stat-value text-lg text-error">{notVisitedCount}</div> <div class="stat-value text-lg text-error">{notVisitedCount}</div>
</div> </div>
</div> </div>
@ -391,7 +382,7 @@
<!-- Progress Bar --> <!-- Progress Bar -->
<div class="space-y-2"> <div class="space-y-2">
<div class="flex justify-between text-sm"> <div class="flex justify-between text-sm">
<span>Progress</span> <span>{$t('worldtravel.progress')}</span>
<span>{completionPercentage}%</span> <span>{completionPercentage}%</span>
</div> </div>
<progress <progress
@ -404,7 +395,7 @@
{#if completionPercentage === 100} {#if completionPercentage === 100}
<div class="alert alert-success"> <div class="alert alert-success">
<Trophy class="w-4 h-4" /> <Trophy class="w-4 h-4" />
<span class="text-sm">Region completed! 🎉</span> <span class="text-sm">{$t('worldtravel.region_completed')}! 🎉</span>
</div> </div>
{/if} {/if}
</div> </div>
@ -415,10 +406,10 @@
<button class="btn btn-outline w-full gap-2" on:click={() => (showGeo = !showGeo)}> <button class="btn btn-outline w-full gap-2" on:click={() => (showGeo = !showGeo)}>
{#if showGeo} {#if showGeo}
<Map class="w-4 h-4" /> <Map class="w-4 h-4" />
Hide Map Labels {$t('worldtravel.hide_map_labels')}
{:else} {:else}
<Map class="w-4 h-4" /> <Map class="w-4 h-4" />
Show Map Labels {$t('worldtravel.show_map_labels')}
{/if} {/if}
</button> </button>
</div> </div>

View file

@ -14,6 +14,7 @@ export default {
'forest', 'forest',
'aqua', 'aqua',
'emerald', 'emerald',
'dim',
{ {
aestheticDark: { aestheticDark: {
primary: '#3e5747', primary: '#3e5747',