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/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 -->
<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" />
</div>
<!-- svelte-ignore a11y-no-noninteractive-tabindex -->

View file

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

View file

@ -178,7 +178,6 @@
"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!",
"out_of_range": "Außerhalb des geplanten Reisezeitraums",
"show_region_labels": "Regionsbeschriftungen anzeigen",
"start": "Start",
"starting_airport": "Startflughafen",
"to": "Nach",
@ -233,7 +232,11 @@
"itinerary": "Route",
"joined": "Verbunden",
"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": {
"desc_1": "Entdecken, planen und erkunden Sie mühelos",
@ -247,7 +250,11 @@
"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.",
"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": {
"about": "Über AdventureLog",
@ -263,7 +270,17 @@
"settings": "Einstellungen",
"shared_with_me": "Mit mir geteilt",
"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",
"worldtravel": "Weltreisen",
"my_tags": "Meine Schlagworte",
@ -318,7 +335,36 @@
"removed": "entfernt",
"view_cities": "Städte anzeigen",
"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": {
"account_settings": "Benutzerkonto",
@ -453,7 +499,14 @@
"error_editing_collection": "Fehler beim Bearbeiten der Sammlung",
"new_collection": "Neue 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": {
"add_a_link": "Fügen Sie einen Link hinzu",
@ -505,7 +558,15 @@
"clear_marker": "Markierung löschen",
"map_options": "Kartenoptionen",
"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": {},
"share": {
@ -525,7 +586,15 @@
"user_stats": "Benutzerstatistiken",
"visited_countries": "Besuchte Länder",
"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": {
"category_name": "Kategoriename",
@ -535,7 +604,8 @@
"no_categories_found": "Keine Kategorien gefunden.",
"select_category": "Kategorie wählen",
"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": {
"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_visited_regions": "Insgesamt besuchte Regionen",
"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": {
"api_key": "Immich-API-Schlüssel",

File diff suppressed because it is too large Load diff

View file

@ -15,7 +15,17 @@
"about": "Acerca de AdventureLog",
"documentation": "Documentación",
"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",
"tag": "Etiqueta",
"language_selection": "Idioma",
@ -47,7 +57,11 @@
"feature_2": "Planificación de Viajes",
"feature_2_desc": "Crea fácilmente itinerarios personalizados y obtén un desglose diario de tu 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": {
"collection_remove_success": "¡Aventura eliminada de la colección con éxito!",
@ -216,7 +230,6 @@
"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.",
"out_of_range": "No en el rango de fechas del itinerario",
"show_region_labels": "Mostrar etiquetas de región",
"start": "Comenzar",
"starting_airport": "Aeropuerto de inicio",
"to": "A",
@ -271,7 +284,11 @@
"itinerary": "Itinerario",
"joined": "Unido",
"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": {
"all": "Todo",
@ -293,7 +310,36 @@
"removed": "eliminado",
"view_cities": "Ver ciudades",
"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": {
"forgot_password": "¿Has olvidado tu contraseña?",
@ -453,7 +499,14 @@
"error_editing_collection": "Error al editar la colección",
"new_collection": "Nueva colección",
"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": {
"add_a_link": "Agregar un enlace",
@ -505,7 +558,15 @@
"clear_marker": "Borrar marcador",
"map_options": "Opciones de mapa",
"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": {
"no_users_shared": "Ningún usuario compartió con",
@ -525,7 +586,15 @@
"user_stats": "Estadísticas de usuario",
"visited_countries": "Países visitados",
"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": {
"category_name": "Nombre de categoría",
@ -535,7 +604,8 @@
"no_categories_found": "No se encontraron categorías.",
"select_category": "Seleccionar categoría",
"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": {
"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_visited_regions": "Total de regiones visitadas",
"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": {
"api_key": "Clave API de Immich",

View file

@ -178,7 +178,6 @@
"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.",
"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",
"starting_airport": "Aéroport de départ",
"to": "Vers",
@ -233,7 +232,11 @@
"itinerary": "Itinéraire",
"joined": "Joint",
"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": {
"desc_1": "Découvrez, planifiez et explorez en toute simplicité",
@ -247,7 +250,11 @@
"go_to": "Aller au journal d'aventure",
"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.",
"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": {
"about": "À propos de AdventureLog",
@ -263,7 +270,17 @@
"settings": "Paramètres",
"shared_with_me": "Partagé avec moi",
"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",
"worldtravel": "Voyage dans le monde",
"my_tags": "Mes balises",
@ -318,7 +335,36 @@
"removed": "supprimé",
"view_cities": "Voir les villes",
"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": {
"account_settings": "Paramètres du compte utilisateur",
@ -453,7 +499,14 @@
"error_editing_collection": "Erreur lors de la modification de la collection",
"new_collection": "Nouvelle collection",
"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": {
"add_a_link": "Ajouter un lien",
@ -505,7 +558,15 @@
"clear_marker": "Effacer le marqueur",
"map_options": "Options de la carte",
"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": {},
"share": {
@ -525,7 +586,15 @@
"user_stats": "Statistiques de l'utilisateur",
"visited_countries": "Pays visités",
"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": {
"category_name": "Nom de la catégorie",
@ -535,7 +604,8 @@
"no_categories_found": "Aucune catégorie trouvée.",
"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.",
"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": {
"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_visited_regions": "Total des régions visitées",
"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": {
"api_key": "Clé d'API Immich",

View file

@ -178,7 +178,6 @@
"no_location_found": "Nessuna posizione trovata",
"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",
"show_region_labels": "Mostra etichette regione",
"start": "Inizio",
"starting_airport": "Aeroporto di partenza",
"to": "A",
@ -233,7 +232,11 @@
"itinerary": "Itinerario",
"joined": "Partecipato",
"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": {
"desc_1": "Scopri, pianifica ed esplora con facilità",
@ -247,7 +250,11 @@
"go_to": "Vai a AdventureLog",
"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.",
"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": {
"about": "Informazioni su AdventureLog",
@ -263,7 +270,17 @@
"settings": "Impostazioni",
"shared_with_me": "Condiviso con me",
"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",
"worldtravel": "Viaggio nel mondo",
"my_tags": "Le mie tag",
@ -318,7 +335,36 @@
"removed": "Rimosso",
"view_cities": "Visualizza città",
"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": {
"account_settings": "Impostazioni dell'account utente",
@ -453,7 +499,14 @@
"collection_edit_success": "Collezione modificata con successo!",
"create": "Creare",
"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": {
"add_a_link": "Aggiungi un collegamento",
@ -505,7 +558,15 @@
"clear_marker": "Cancella indicatore",
"map_options": "Opzioni della mappa",
"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": {},
"share": {
@ -525,7 +586,15 @@
"user_stats": "Statistiche utente",
"visited_countries": "Paesi visitati",
"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": {
"category_name": "Nome della categoria",
@ -535,7 +604,8 @@
"no_categories_found": "Nessuna categoria trovata.",
"select_category": "Seleziona Categoria",
"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": {
"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_visited_regions": "Totale regioni visitate",
"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": {
"api_key": "Chiave API Immich",

View file

@ -165,7 +165,6 @@
"share": "공유",
"share_adventure": "이 모험을 공유하세요!",
"show": "보기",
"show_region_labels": "지역 레이블 표시",
"sort": "정렬",
"sources": "출처",
"start": "시작",
@ -233,7 +232,11 @@
"itinerary": "여정",
"joined": "가입",
"view_profile": "프로필을 봅니다",
"share_collection": "이 컬렉션을 공유하십시오!"
"share_collection": "이 컬렉션을 공유하십시오!",
"filters_and_sort": "필터",
"filters_and_stats": "필터",
"no_adventures_message": "모험을 문서화하고 새로운 모험을 계획하십시오. \n모든 여정에는 말할 가치가있는 이야기가 있습니다.",
"travel_progress": "여행 진행"
},
"auth": {
"confirm_password": "비밀번호 확인",
@ -265,7 +268,8 @@
"no_categories_found": "카테고리가 없습니다.",
"select_category": "카테고리 선택",
"update_after_refresh": "페이지를 새로고침해야 모험 카드가 업데이트됩니다.",
"add_new_category": "새 카테고리를 추가하십시오"
"add_new_category": "새 카테고리를 추가하십시오",
"name_required": "카테고리 이름이 필요합니다"
},
"checklist": {
"checklist_delete_error": "체크리스트 삭제 오류",
@ -287,7 +291,14 @@
"error_editing_collection": "컬렉션 편집 오류",
"new_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": {
"add_some": "다음 모험을 계획해 보는게 어떨까요? 아래 버튼을 클릭하여 새로운 모험을 추가할 수 있습니다.",
@ -297,7 +308,12 @@
"total_adventures": "모든 모험",
"total_visited_cities": "방문한 모든 도시",
"total_visited_regions": "방문한 모든 지역",
"welcome_back": "다시 오신 것을 환영합니다"
"welcome_back": "다시 오신 것을 환영합니다",
"document_some_adventures": "여행을 문서화하고 개인 모험지도를 구축하십시오!",
"view_all": "모두보기",
"welcome_text_1": "당신은있었습니다",
"welcome_text_2": "지금까지 모험",
"welcome_text_3": "여행을 계속 탐색하고 문서화하십시오!"
},
"home": {
"desc_1": "쉽고 편리하게 발견하고, 계획하고, 탐험하세요",
@ -311,7 +327,11 @@
"go_to": "Adventurelog로 이동",
"hero_1": "세상에서 가장 짜릿한 모험을 발견하세요",
"hero_2": "Adventurelog로 다음 모험을 발견하고 계획해 보세요. 환상적인 여행지를 탐색하고, 나만의 일정을 만드세요. 어디서든 접속할 수 있습니다.",
"key_features": "주요 기능"
"key_features": "주요 기능",
"explore_world": "세상을 탐험하십시오",
"latest_travel_experiences": "최신 여행 경험",
"of_world": "세계의",
"start_your_journey": "여행을 시작하십시오"
},
"immich": {
"api_key": "Immich API 키",
@ -346,7 +366,15 @@
"clear_marker": "마커 초기화",
"map_options": "지도 옵션",
"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": {
"about": "Adventurelog 소개",
@ -367,7 +395,17 @@
"support": "지원",
"tag": "태그",
"theme_selection": "테마 선택",
"themes": {},
"themes": {
"aestheticDark": "미적 어둠",
"aestheticLight": "미적 빛",
"aqua": "아쿠아",
"dark": "어두운",
"dim": "어둑한",
"forest": "숲",
"light": "빛",
"night": "밤",
"northernLights": "북극광"
},
"users": "사용자",
"worldtravel": "세계 여행",
"admin_panel": "관리자 패널"
@ -391,7 +429,15 @@
"user_stats": "사용자 통계",
"visited_cities": "방문한 도시",
"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": {
"recommendation": "추천",
@ -577,7 +623,36 @@
"removed": "제거됨",
"view_cities": "도시 보기",
"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": {
"apartment": "아파트",

View file

@ -177,7 +177,6 @@
"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.",
"out_of_range": "Niet binnen het datumbereik van het reisplan",
"show_region_labels": "Toon regiolabels",
"start": "Begin",
"starting_airport": "Luchthaven van vertrek",
"to": "Naar",
@ -233,7 +232,11 @@
"itinerary": "Routebeschrijving",
"joined": "Samengevoegd",
"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": {
"desc_1": "Ontdek, plan en verken met gemak",
@ -247,7 +250,11 @@
"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_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": {
"about": "Over AdventureLog",
@ -263,7 +270,17 @@
"settings": "Instellingen",
"shared_with_me": "Gedeeld met mij",
"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",
"worldtravel": "Wereldreizen",
"my_tags": "Mijn labels",
@ -318,7 +335,36 @@
"removed": "verwijderd",
"view_cities": "Steden bekijken",
"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": {
"account_settings": "Gebruikersaccount instellingen",
@ -453,7 +499,14 @@
"error_editing_collection": "Fout bij het bewerken van de collectie",
"new_collection": "Nieuwe 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": {
"add_a_link": "Voeg een link toe",
@ -505,7 +558,15 @@
"clear_marker": "Verwijder markeerpunt",
"map_options": "Kaartopties",
"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": {},
"share": {
@ -525,7 +586,15 @@
"user_stats": "Gebruikersstatistieken",
"visited_countries": "Bezochte landen",
"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": {
"category_name": "Categorienaam",
@ -535,7 +604,8 @@
"no_categories_found": "Geen categorieën gevonden.",
"select_category": "Selecteer een categorie",
"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": {
"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_visited_regions": "Totaal bezochte regio's",
"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": {
"api_key": "Immich API-sleutel",

View file

@ -21,7 +21,17 @@
"calendar": "Kalender",
"theme_selection": "Tema-valg",
"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": "Om",
@ -47,7 +57,11 @@
"feature_2": "Reiseplanlegging",
"feature_2_desc": "Lag enkelt tilpassede reiseplaner og få en dag-for-dag oversikt over turen din.",
"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": {
"collection_remove_success": "Eventyret ble fjernet fra samlingen!",
@ -94,7 +108,6 @@
"date_constrain": "Begrens til samlingsdatoer",
"rating": "Vurdering",
"my_images": "Mine bilder",
"show_region_labels": "Vis regionetiketter",
"no_images": "Ingen bilder",
"share_adventure": "Del dette eventyret!",
"copy_link": "Kopier lenke",
@ -271,7 +284,11 @@
"itinerary": "Reiserute",
"joined": "Ble med",
"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": {
"country_list": "Liste over land",
@ -293,7 +310,36 @@
"failed_to_remove_visit": "Kunne ikke fjerne besøk i",
"marked_visited": "markert som besøkt",
"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": {
"username": "Brukernavn",
@ -441,7 +487,14 @@
"collection_edit_success": "Samling redigert!",
"error_editing_collection": "Feil ved redigering av 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": {
"note_deleted": "Notat slettet!",
@ -522,7 +575,15 @@
"show_visited_regions": "Vis besøkte regioner",
"add_adventure_at_marker": "Legg til nytt eventyr ved markøren",
"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": {
"shared": "Delt",
@ -542,7 +603,15 @@
"user_stats": "Brukerstatistikk",
"visited_countries": "Besøkte land",
"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": {
"manage_categories": "Administrer kategorier",
@ -552,7 +621,8 @@
"update_after_refresh": "Eventyrkortene vil oppdateres når du oppdaterer siden.",
"select_category": "Velg kategori",
"category_name": "Kategorinavn",
"add_new_category": "Legg til ny kategori"
"add_new_category": "Legg til ny kategori",
"name_required": "Kategorinavnet er påkrevd"
},
"dashboard": {
"welcome_back": "Velkommen tilbake",
@ -562,7 +632,12 @@
"total_visited_cities": "Totalt antall besøkte byer",
"recent_adventures": "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",

View file

@ -19,7 +19,17 @@
"language_selection": "Wybór języka",
"support": "Wsparcie",
"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",
"admin_panel": "Panel administracyjny"
},
@ -47,7 +57,11 @@
"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_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": {
"collection_remove_success": "Podróż została pomyślnie usunięta z kolekcji!",
@ -216,7 +230,6 @@
"no_location_found": "Nie znaleziono lokalizacji",
"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",
"show_region_labels": "Pokaż etykiety regionów",
"start": "Start",
"starting_airport": "Początkowe lotnisko",
"to": "Do",
@ -271,7 +284,11 @@
"itinerary": "Trasa",
"joined": "Dołączył",
"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": {
"country_list": "Lista krajów",
@ -293,7 +310,36 @@
"removed": "REMOVED",
"view_cities": "Zobacz Miasta",
"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": {
"username": "Nazwa użytkownika",
@ -441,7 +487,14 @@
"collection_edit_success": "Kolekcja została pomyślnie edytowana!",
"error_editing_collection": "Błąd podczas edytowania kolekcji",
"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": {
"note_deleted": "Notatka została pomyślnie usunięta!",
@ -505,7 +558,15 @@
"show_visited_regions": "Pokaż odwiedzone regiony",
"add_adventure_at_marker": "Dodaj nową podróż w miejscu zaznaczenia",
"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": {
"shared": "Udostępnione",
@ -525,7 +586,15 @@
"user_stats": "Statystyki użytkownika",
"visited_countries": "Odwiedzone kraje",
"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": {
"manage_categories": "Zarządzaj kategoriami",
@ -535,7 +604,8 @@
"update_after_refresh": "Karty podróży zostaną zaktualizowane po odświeżeniu strony.",
"select_category": "Wybierz kategorię",
"category_name": "Nazwa kategorii",
"add_new_category": "Dodaj nową kategorię"
"add_new_category": "Dodaj nową kategorię",
"name_required": "Nazwa kategorii jest wymagana"
},
"dashboard": {
"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_visited_regions": "Łączna liczba odwiedzonych regionów",
"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": {
"api_key": "Klucz API Immicha",

View file

@ -21,7 +21,17 @@
"calendar": "Календарь",
"theme_selection": "Выбор темы",
"admin_panel": "Панель администратора",
"themes": {}
"themes": {
"aestheticDark": "Эстетическая темнота",
"aestheticLight": "Эстетический свет",
"aqua": "Аква",
"dark": "Темный",
"dim": "Тусклый",
"forest": "Лес",
"light": "Свет",
"night": "Ночь",
"northernLights": "Северное сияние"
}
},
"about": {
"about": "О программе",
@ -47,7 +57,11 @@
"feature_2": "Планирование поездок",
"feature_2_desc": "Легко создавайте персональные маршруты и получайте подробную разбивку поездки по дням.",
"feature_3": "Карта путешествий",
"feature_3_desc": "Просматривайте свои путешествия по всему миру с интерактивной картой и открывайте новые направления."
"feature_3_desc": "Просматривайте свои путешествия по всему миру с интерактивной картой и открывайте новые направления.",
"explore_world": "Исследуйте мир",
"latest_travel_experiences": "Ваш последний опыт путешествий",
"of_world": "мира",
"start_your_journey": "Начните свое путешествие"
},
"adventures": {
"collection_remove_success": "Приключение успешно удалено из коллекции!",
@ -104,7 +118,6 @@
"date_constrain": "Ограничить датами коллекции",
"rating": "Рейтинг",
"my_images": "Мои изображения",
"show_region_labels": "Показать названия регионов",
"no_images": "Нет изображений",
"distance": "Расстояние",
"share_adventure": "Поделиться этим приключением!",
@ -271,7 +284,11 @@
"lodging_information": "Информация о жилье",
"price": "Цена",
"reservation_number": "Номер бронирования",
"share_collection": "Поделитесь этой коллекцией!"
"share_collection": "Поделитесь этой коллекцией!",
"filters_and_sort": "Фильтры",
"filters_and_stats": "Фильтры",
"no_adventures_message": "Начните документировать ваши приключения и планировать новые. \nУ каждого путешествия есть история, которую стоит рассказать.",
"travel_progress": "Прогресс путешествий"
},
"worldtravel": {
"country_list": "Список стран",
@ -293,7 +310,36 @@
"failed_to_remove_visit": "Не удалось удалить посещение",
"marked_visited": "отмечено как посещённое",
"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": {
"username": "Имя пользователя",
@ -441,7 +487,14 @@
"collection_edit_success": "Коллекция успешно отредактирована!",
"error_editing_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": {
"note_deleted": "Заметка успешно удалена!",
@ -522,7 +575,15 @@
"show_visited_regions": "Показать посещенные регионы",
"add_adventure_at_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": {
"shared": "Поделено",
@ -542,7 +603,15 @@
"user_stats": "Статистика пользователя",
"visited_countries": "Посещенные страны",
"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": {
"manage_categories": "Управление категориями",
@ -552,7 +621,8 @@
"update_after_refresh": "Карточки приключений будут обновлены после обновления страницы.",
"select_category": "Выбрать категорию",
"category_name": "Название категории",
"add_new_category": "Добавить новую категорию"
"add_new_category": "Добавить новую категорию",
"name_required": "Требуется название категории"
},
"dashboard": {
"welcome_back": "Добро пожаловать обратно",
@ -562,7 +632,12 @@
"total_visited_cities": "Всего посещенных городов",
"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",

View file

@ -178,7 +178,6 @@
"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.",
"out_of_range": "Inte inom resplanens datumintervall",
"show_region_labels": "Visa regionetiketter",
"start": "Start",
"starting_airport": "Startar flygplats",
"to": "Till",
@ -233,7 +232,11 @@
"itinerary": "Resväg",
"joined": "Gick med i",
"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": {
"desc_1": "Upptäck, planera och utforska med lätthet",
@ -247,7 +250,11 @@
"go_to": "Gå till AdventureLog",
"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.",
"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": {
"about": "Om AdventureLog",
@ -263,7 +270,17 @@
"settings": "Inställningar",
"shared_with_me": "Delade med mig",
"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",
"worldtravel": "Världsresor",
"my_tags": "Mina taggar",
@ -293,7 +310,36 @@
"removed": "tas bort",
"view_cities": "Visa städer",
"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": {
"confirm_password": "Bekräfta lösenord",
@ -453,7 +499,14 @@
"error_editing_collection": "Ett fel uppstod vid redigering av samling",
"new_collection": "Ny 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": {
"add_a_link": "Lägg till en länk",
@ -505,7 +558,15 @@
"clear_marker": "Rensa markör",
"map_options": "Kartalternativ",
"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": {},
"share": {
@ -525,7 +586,15 @@
"user_stats": "Användarstatistik",
"visited_countries": "Besökta länder",
"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": {
"category_name": "Kategorinamn",
@ -535,7 +604,8 @@
"no_categories_found": "Inga kategorier hittades.",
"select_category": "Välj Kategori",
"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": {
"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_visited_regions": "Totalt antal besökta regioner",
"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": {
"api_key": "Immich API-nyckel",

View file

@ -13,7 +13,17 @@
"settings": "设置",
"shared_with_me": "与我分享",
"theme_selection": "主题选择",
"themes": {},
"themes": {
"aestheticDark": "美学黑暗",
"aestheticLight": "美学之光",
"aqua": "水",
"dark": "黑暗的",
"dim": "暗淡",
"forest": "森林",
"light": "光",
"night": "夜晚",
"northernLights": "北极光"
},
"users": "用户",
"worldtravel": "环球旅行",
"my_tags": "我的标签",
@ -47,7 +57,11 @@
"go_to": "前往冒险日志",
"hero_1": "探索世界上最惊险的冒险",
"hero_2": "使用 AdventureLog 发现并计划您的下一次冒险。\n探索令人惊叹的目的地、创建定制行程并随时随地保持联系。",
"key_features": "主要特点"
"key_features": "主要特点",
"explore_world": "探索世界",
"latest_travel_experiences": "您的最新旅行经历",
"of_world": "世界",
"start_your_journey": "开始您的旅程"
},
"adventures": {
"collection_remove_success": "成功从合集中移除冒险!",
@ -94,7 +108,6 @@
"date_constrain": "限制在合集日期内",
"rating": "评分",
"my_images": "我的图片",
"show_region_labels": "显示区域标签",
"no_images": "没有图片",
"share_adventure": "分享此冒险!",
"copy_link": "复制链接",
@ -271,7 +284,11 @@
"itinerary": "行程",
"joined": "加入",
"view_profile": "查看个人资料",
"share_collection": "分享这个收藏!"
"share_collection": "分享这个收藏!",
"filters_and_sort": "过滤器",
"filters_and_stats": "过滤器",
"no_adventures_message": "开始记录您的冒险经历,并计划新的冒险。\n每个旅程都有一个值得讲述的故事。",
"travel_progress": "旅行进度"
},
"auth": {
"forgot_password": "忘记密码?",
@ -315,7 +332,36 @@
"removed": "已删除",
"view_cities": "查看城市",
"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": {
"no_users_found": "未找到已公开个人资料的用户。"
@ -453,7 +499,14 @@
"error_editing_collection": "编辑合集时出错",
"new_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": {
"add_a_link": "添加链接",
@ -505,7 +558,15 @@
"clear_marker": "清除标记",
"map_options": "地图选项",
"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": {},
"share": {
@ -525,7 +586,15 @@
"user_stats": "用户统计",
"visited_countries": "访问过的国家",
"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": {
"category_name": "类别名称",
@ -535,7 +604,8 @@
"no_categories_found": "未找到类别。",
"select_category": "选择类别",
"update_after_refresh": "刷新页面后,冒险卡将更新。",
"add_new_category": "添加新类别"
"add_new_category": "添加新类别",
"name_required": "需要类别名称"
},
"dashboard": {
"add_some": "为什么不开始计划你的下一次冒险呢?\n您可以通过单击下面的按钮添加新的冒险。",
@ -545,7 +615,12 @@
"total_adventures": "冒险总数",
"total_visited_regions": "已访问地区数量",
"welcome_back": "欢迎回来",
"total_visited_cities": "已访问城市数量"
"total_visited_cities": "已访问城市数量",
"document_some_adventures": "开始记录您的旅行并构建您的个人冒险地图!",
"view_all": "查看全部",
"welcome_text_1": "你去过",
"welcome_text_2": "到目前为止的冒险",
"welcome_text_3": "继续探索和记录您的旅行!"
},
"immich": {
"api_key": "Immich API 密钥",

View file

@ -78,61 +78,21 @@
<div class="grid lg:grid-cols-2 gap-12 items-center">
<!-- Left Content -->
<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="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">Welcome back!</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>
<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}
{: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 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">{$t('home.start_your_journey')}</span>
</div>
{/if}
<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>
<p class="text-xl lg:text-2xl text-base-content/70 leading-relaxed font-light max-w-2xl">
{$t('home.hero_2')}
@ -165,21 +125,6 @@
</button>
{/if}
</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>
<!-- Right Content - Hero Image -->
@ -230,7 +175,7 @@
<!-- Section Header -->
<div class="text-center mb-16 space-y-4">
<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" />
<span class="text-sm font-medium">{$t('home.key_features')}</span>
@ -279,58 +224,11 @@
alt="World map with pins"
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>
</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>
<svelte:head>

View file

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

View file

@ -201,18 +201,16 @@
<CollectionIcon class="w-8 h-8 text-primary" />
</div>
<div>
<h1
class="text-3xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent"
>
<h1 class="text-3xl font-bold bg-clip-text text-primary">
{$t(`adventures.my_collections`)}
</h1>
<p class="text-sm text-base-content/60">
{currentCount}
{activeView === 'owned'
? 'collections'
? $t('navbar.collections')
: activeView === 'shared'
? 'shared collections'
: 'archived collections'}
? $t('collection.shared_collections')
: $t('adventures.archived_collections')}
</p>
</div>
</div>
@ -225,7 +223,7 @@
on:click={() => switchView('owned')}
>
<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
class="badge badge-sm {activeView === 'owned' ? 'badge-primary' : 'badge-ghost'}"
>
@ -237,7 +235,7 @@
on:click={() => switchView('shared')}
>
<Share class="w-4 h-4" />
<span class="hidden sm:inline">Shared</span>
<span class="hidden sm:inline">{$t('share.shared')}</span>
<div
class="badge badge-sm {activeView === 'shared' ? 'badge-primary' : 'badge-ghost'}"
>
@ -249,7 +247,7 @@
on:click={() => switchView('archived')}
>
<Archive class="w-4 h-4" />
<span class="hidden sm:inline">Archived</span>
<span class="hidden sm:inline">{$t('adventures.archived')}</span>
<div
class="badge badge-sm {activeView === 'archived'
? 'badge-primary'
@ -278,17 +276,17 @@
</div>
<h3 class="text-xl font-semibold text-base-content/70 mb-2">
{activeView === 'owned'
? 'No collections yet'
? $t('collection.no_collections_yet')
: activeView === 'shared'
? 'No shared collections.'
: 'No archived collections'}
? $t('collection.no_shared_collections')
: $t('collection.no_archived_collections')}
</h3>
<p class="text-base-content/50 text-center max-w-md">
{activeView === 'owned'
? 'Create your first collection to organize your adventures and memories.'
? $t('collection.create_first')
: activeView === 'shared'
? 'Make sure your profile is public so others can share with you.'
: 'Archived collections will appear here.'}
? $t('collection.make_sure_public')
: $t('collection.archived_appear_here')}
</p>
{#if activeView === 'owned'}
<button
@ -300,7 +298,7 @@
}}
>
<Plus class="w-5 h-5" />
Create Collection
{$t('collection.create')}
</button>
{/if}
</div>
@ -353,7 +351,7 @@
<div class="p-2 bg-primary/10 rounded-lg">
<Sort class="w-6 h-6 text-primary" />
</div>
<h2 class="text-xl font-bold">Filters & Sort</h2>
<h2 class="text-xl font-bold">{$t('adventures.filters_and_sort')}</h2>
</div>
<!-- Sort Form - Updated to use URL navigation -->
@ -365,6 +363,7 @@
<div class="space-y-4">
<div>
<!-- svelte-ignore a11y-label-has-associated-control -->
<label class="label">
<span class="label-text font-medium">{$t(`adventures.order_direction`)}</span>
</label>
@ -389,6 +388,7 @@
</div>
<div>
<!-- svelte-ignore a11y-label-has-associated-control -->
<label class="label">
<span class="label-text font-medium">{$t('adventures.order_by')}</span>
</label>
@ -427,18 +427,6 @@
</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>
@ -456,12 +444,10 @@
<Plus class="w-8 h-8" />
</div>
<ul
tabindex="0"
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">
<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>
<button
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>
<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">
<span class="text-xl font-bold">
{user?.first_name?.charAt(0) || user?.username?.charAt(0) || 'A'}
</span>
</div>
</div>
</div> -->
<div>
<h1
class="text-4xl lg:text-5xl font-bold bg-gradient-to-r from-primary via-secondary to-accent bg-clip-text text-transparent"
>
<h1 class="text-4xl lg:text-5xl font-bold bg-clip-text text-primary">
{$t('dashboard.welcome_back')}, {user?.first_name
? `${user.first_name}`
: user?.username}!
</h1>
<p class="text-lg text-base-content/60 mt-2">
{#if stats.adventure_count > 0}
You've been on <span class="font-semibold text-primary"
>{stats.adventure_count}</span
> adventures so far
{$t('dashboard.welcome_text_1')}
<span class="font-semibold text-primary">{stats.adventure_count}</span>
{$t('dashboard.welcome_text_2')}
{:else}
Ready to start your adventure journey?
{$t('dashboard.welcome_text_3')}
{/if}
</p>
</div>
@ -76,14 +74,16 @@
</a>
<a href="/worldtravel" class="btn btn-outline btn-lg gap-2">
<FlagCheckeredVariantIcon class="w-5 h-5" />
Explore World
{$t('home.explore_world')}
</a>
</div>
</div>
</div>
<!-- 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 -->
<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"
@ -99,7 +99,7 @@
</div>
<div class="stat-desc text-primary/60 mt-2">
<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>
<progress
class="progress progress-primary w-full mt-1"
@ -128,12 +128,6 @@
<div class="stat-value text-3xl font-bold text-success">
{stats.visited_region_count}
</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 class="p-4 bg-success/20 rounded-2xl">
<MapMarkerStarOutline class="w-8 h-8 text-success" />
@ -153,12 +147,6 @@
{$t('dashboard.total_visited_cities')}
</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 class="p-4 bg-info/20 rounded-2xl">
<CityVariantOutline class="w-8 h-8 text-info" />
@ -178,11 +166,11 @@
</div>
<div>
<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>
<a href="/adventures" class="btn btn-ghost gap-2">
View All
{$t('dashboard.view_all')}
<span class="badge badge-primary">{stats.adventure_count}</span>
</a>
</div>
@ -215,8 +203,7 @@
{$t('dashboard.no_recent_adventures')}
</h2>
<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
map!
{$t('dashboard.document_some_adventures')}
</p>
<div class="flex flex-col sm:flex-row gap-4 justify-center">
@ -229,44 +216,9 @@
</a>
<a href="/worldtravel" class="btn btn-outline btn-lg gap-2">
<FlagCheckeredVariantIcon class="w-5 h-5" />
Explore World Map
{$t('home.explore_world')}
</a>
</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>
{/if}

View file

@ -122,13 +122,14 @@
<MapIcon class="w-8 h-8 text-primary" />
</div>
<div>
<h1
class="text-3xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent"
>
<h1 class="text-3xl font-bold bg-clip-text text-primary">
{$t('map.adventure_map')}
</h1>
<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>
</div>
</div>
@ -138,11 +139,11 @@
<div class="hidden md:flex items-center gap-2">
<div class="stats stats-horizontal bg-base-100 shadow-lg">
<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>
<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>
</div>
@ -190,7 +191,7 @@
{#if adventure.latitude && adventure.longitude}
<Marker
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-blue-300 hover:bg-blue-400'} text-black focus:outline-6 focus:outline-black"
on:click={togglePopup}
@ -318,43 +319,42 @@
<div class="p-2 bg-primary/10 rounded-lg">
<Filter class="w-6 h-6 text-primary" />
</div>
<h2 class="text-xl font-bold">Map Controls</h2>
<h2 class="text-xl font-bold">{$t('map.map_controls')}</h2>
</div>
<!-- Adventure Statistics -->
<div class="card bg-base-200/50 p-4 mb-6">
<h3 class="font-semibold text-lg mb-4 flex items-center gap-2">
<MapIcon class="w-5 h-5" />
Adventure Stats
{$t('map.adventure_stats')}
</h3>
<div class="space-y-4">
<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-desc">Across all locations</div>
</div>
<div class="grid grid-cols-2 gap-4">
<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>
<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>
</div>
<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>
<!-- Progress Bar -->
<div class="space-y-2">
<div class="flex justify-between text-sm">
<span>Completion</span>
<span>{$t('map.completion')}</span>
<span>{Math.round((visitedAdventures / totalAdventures) * 100)}%</span>
</div>
<progress
@ -370,7 +370,7 @@
<div class="card bg-base-200/50 p-4 mb-6">
<h3 class="font-semibold text-lg mb-4 flex items-center gap-2">
<Eye class="w-5 h-5" />
Display Options
{$t('map.display_options')}
</h3>
<div class="space-y-3">
@ -423,7 +423,7 @@
<div class="space-y-3">
<div class="alert alert-info">
<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>
<button type="button" class="btn btn-primary w-full gap-2" on:click={newAdventure}>
<Plus class="w-4 h-4" />
@ -437,7 +437,7 @@
{:else}
<div class="space-y-3">
<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>
<button
type="button"

View file

@ -175,8 +175,8 @@
{#if stats}
<div class="content-section mb-16">
<div class="text-center mb-8">
<h2 class="text-3xl font-bold mb-2">Travel Statistics</h2>
<p class="text-base-content/60">Your adventure journey at a glance</p>
<h2 class="text-3xl font-bold mb-2">{$t('profile.travel_statistics')}</h2>
<p class="text-base-content/60">{$t('profile.your_journey_at_a_glance')}</p>
</div>
<!-- Primary Stats Grid -->
@ -215,7 +215,7 @@
{$t('navbar.collections')}
</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 class="p-4 bg-secondary/20 rounded-2xl">
<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-success/60 mt-2">
<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"
>{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-info/60 mt-2">
<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
>
</div>
@ -303,7 +303,7 @@
<div class="text-3xl font-bold text-warning">{stats.visited_city_count}</div>
<div class="text-warning/60 mt-2">
<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>
</div>
<progress
@ -332,13 +332,13 @@
</div>
<div>
<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>
{#if adventures && adventures.length > 0}
<div class="badge badge-primary badge-lg">
{adventures.length}
{adventures.length === 1 ? 'Adventure' : 'Adventures'}
{adventures.length === 1 ? $t('adventures.adventure') : $t('navbar.adventures')}
</div>
{/if}
</div>
@ -352,7 +352,7 @@
<h3 class="text-xl font-bold text-base-content/70 mb-2">
{$t('auth.no_public_adventures')}
</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>
{:else}
@ -375,13 +375,13 @@
</div>
<div>
<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>
{#if collections && collections.length > 0}
<div class="badge badge-secondary badge-lg">
{collections.length}
{collections.length === 1 ? 'Collection' : 'Collections'}
{collections.length === 1 ? $t('adventures.collection') : $t('navbar.collections')}
</div>
{/if}
</div>
@ -395,7 +395,7 @@
<h3 class="text-xl font-bold text-base-content/70 mb-2">
{$t('auth.no_public_collections')}
</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>
{:else}

View file

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

View file

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

View file

@ -158,9 +158,7 @@
<Flag class="w-8 h-8 text-primary" />
</div>
<div>
<h1
class="text-3xl font-bold bg-gradient-to-r from-primary to-secondary bg-clip-text text-transparent"
>
<h1 class="text-3xl font-bold bg-clip-text text-primary">
{$t('worldtravel.regions_in')}
{country?.name}
</h1>
@ -212,35 +210,37 @@
<!-- Filter Chips -->
<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">
<button
class="tab tab-sm gap-2 {filterOption === 'all' ? 'tab-active' : ''}"
on:click={() => (filterOption = 'all')}
>
<MapMarker class="w-3 h-3" />
All
{$t('adventures.all')}
</button>
<button
class="tab tab-sm gap-2 {filterOption === 'visited' ? 'tab-active' : ''}"
on:click={() => (filterOption = 'visited')}
>
<Check class="w-3 h-3" />
Visited
{$t('adventures.visited')}
</button>
<button
class="tab tab-sm gap-2 {filterOption === 'not-visited' ? 'tab-active' : ''}"
on:click={() => (filterOption = 'not-visited')}
>
<Cancel class="w-3 h-3" />
Not Visited
{$t('adventures.not_visited')}
</button>
</div>
{#if searchQuery || filterOption !== 'all'}
<button class="btn btn-ghost btn-xs gap-1" on:click={clearFilters}>
<Clear class="w-3 h-3" />
Clear All
{$t('worldtravel.clear_all')}
</button>
{/if}
</div>
@ -255,16 +255,16 @@
<div class="flex items-center justify-between mb-4">
<div class="flex items-center gap-2">
<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 class="flex items-center gap-2 text-sm text-base-content/60">
<div class="flex items-center gap-1">
<div class="w-3 h-3 bg-green-200 rounded-full border"></div>
<span>Visited</span>
<span>{$t('adventures.visited')}</span>
</div>
<div class="flex items-center gap-1">
<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>
@ -305,19 +305,21 @@
<div class="p-6 bg-base-200/50 rounded-2xl mb-6">
<MapMarker class="w-16 h-16 text-base-content/30" />
</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">
Try adjusting your search terms or filters to find the regions you're looking for.
{$t('worldtravel.no_countries_found_desc')}
</p>
<button class="btn btn-primary gap-2" on:click={clearFilters}>
<Clear class="w-4 h-4" />
Clear Filters
{$t('worldtravel.clear_filters')}
</button>
</div>
{:else}
<!-- Regions Grid -->
<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}
<RegionCard
@ -350,7 +352,7 @@
<div class="p-2 bg-primary/10 rounded-lg">
<Filter class="w-6 h-6 text-primary" />
</div>
<h2 class="text-xl font-bold">Progress & Stats</h2>
<h2 class="text-xl font-bold">{$t('worldtravel.progress_and_stats')}</h2>
</div>
<!-- Country Progress -->
@ -362,18 +364,18 @@
<div class="space-y-4">
<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-desc">Available to explore</div>
<div class="stat-desc">{$t('worldtravel.available_to_explore')}</div>
</div>
<div class="grid grid-cols-2 gap-4">
<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>
<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>
</div>
@ -381,7 +383,7 @@
<!-- Progress Bar -->
<div class="space-y-2">
<div class="flex justify-between text-sm">
<span>Progress</span>
<span>{$t('worldtravel.progress')}</span>
<span>{completionPercentage}%</span>
</div>
<progress
@ -394,41 +396,21 @@
{#if completionPercentage === 100}
<div class="alert alert-success">
<Trophy class="w-4 h-4" />
<span class="text-sm">Country completed! 🎉</span>
<span class="text-sm">{$t('worldtravel.country_completed')}! 🎉</span>
</div>
{/if}
</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 -->
{#if regions.some((region) => region.latitude && region.longitude)}
<div class="space-y-3">
<button class="btn btn-outline w-full gap-2" on:click={() => (showGeo = !showGeo)}>
{#if showGeo}
<Map class="w-4 h-4" />
Hide Map Labels
{$t('worldtravel.hide_map_labels')}
{:else}
<Map class="w-4 h-4" />
Show Map Labels
{$t('worldtravel.show_map_labels')}
{/if}
</button>

View file

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

View file

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