Activities, Trails, Wanderer + Strava Integration, UI Refresh, Devops Improvments, and more (#785)

* Implement code changes to enhance functionality and improve performance

* Update nl.json

Fix Dutch translations.

* feat(security): add Trivy security scans for Docker images and source code

* feat(security): restructure Trivy scans for improved clarity and organization

* fix(dependencies): update Django version to 5.2.2

* style(workflows): standardize quotes and fix typo in frontend-test.yml

* feat(workflows): add job names for clarity in backend and frontend test workflows

* refactor(workflows): remove path filters from pull_request and push triggers in backend and frontend workflows

* feat(workflows): add paths to push and pull_request triggers for backend and frontend workflows

* refactor(workflows): simplify trigger paths for backend and frontend workflows
fix(dependencies): add overrides for esbuild in frontend package.json

* fix(package): add missing pnpm overrides for esbuild in package.json

* fix(workflows): add missing severity parameter for Trivy filesystem scan

* fix(workflows): add missing severity parameter for Docker image scans in Trivy workflow

* fix(workflows): remove MEDIUM severity from Trivy scans in security workflow

* added-fix-image-deletion (#681)

* added-fix-image-deletion

* feat(commands): add image cleanup command to find and delete unused files

* fix(models): ensure associated AdventureImages are deleted and files cleaned up on Adventure deletion

* fix(models): ensure associated Attachment files are deleted and their filesystem cleaned up on Adventure deletion

---------

Co-authored-by: ferdousahmed <taninme@gmail.com>
Co-authored-by: Sean Morley

* Rename Adventures to Locations (#696)

* Refactor user_id to user in adventures and related models, views, and components

- Updated all instances of user_id to user in the adventures app, including models, serializers, views, and frontend components.
- Adjusted queries and filters to reflect the new user field naming convention.
- Ensured consistency across the codebase for user identification in adventures, collections, notes, and transportation entities.
- Modified frontend components to align with the updated data structure, ensuring proper access control and rendering based on user ownership.

* Refactor adventure-related views and components to use "Location" terminology

- Updated GlobalSearchView to replace AdventureSerializer with LocationSerializer.
- Modified IcsCalendarGeneratorViewSet to use LocationSerializer instead of AdventureSerializer.
- Created new LocationImageViewSet for managing location images, including primary image toggling and image deletion.
- Introduced LocationViewSet for managing locations with enhanced filtering, sorting, and sharing capabilities.
- Updated ReverseGeocodeViewSet to utilize LocationSerializer.
- Added ActivityTypesView to retrieve distinct activity types from locations.
- Refactored user views to replace AdventureSerializer with LocationSerializer.
- Updated frontend components to reflect changes from "adventure" to "location", including AdventureCard, AdventureLink, AdventureModal, and others.
- Adjusted API endpoints in frontend routes to align with new location-based structure.
- Ensured all references to adventures are replaced with locations across the codebase.

* refactor: rename adventures to locations across the application

- Updated localization files to replace adventure-related terms with location-related terms.
- Refactored TypeScript types and variables from Adventure to Location in various routes and components.
- Adjusted UI elements and labels to reflect the change from adventures to locations.
- Ensured all references to adventures in the codebase are consistent with the new location terminology.

* Refactor code structure for improved readability and maintainability

* feat: Implement location details page with server-side loading and deletion functionality

- Added +page.server.ts to handle server-side loading of additional location info.
- Created +page.svelte for displaying location details, including images, visits, and maps.
- Integrated GPX file handling and rendering on the map.
- Updated map route to link to locations instead of adventures.
- Refactored profile and search routes to use LocationCard instead of AdventureCard.

* docs: Update terminology from "Adventure" to "Location" and enhance project overview

* docs: Clarify collection examples in usage documentation

* feat: Enable credentials for GPX file fetch and add CORS_ALLOW_CREDENTIALS setting

* Refactor adventure references to locations across the backend and frontend

- Updated CategoryViewSet to reflect location context instead of adventures.
- Modified ChecklistViewSet to include locations in retrieval logic.
- Changed GlobalSearchView to search for locations instead of adventures.
- Adjusted IcsCalendarGeneratorViewSet to handle locations instead of adventures.
- Refactored LocationImageViewSet to remove unused import.
- Updated LocationViewSet to clarify public access for locations.
- Changed LodgingViewSet to reference locations instead of adventures.
- Modified NoteViewSet to prevent listing all locations.
- Updated RecommendationsViewSet to handle locations in parsing and response.
- Adjusted ReverseGeocodeViewSet to search through user locations.
- Updated StatsViewSet to count locations instead of adventures.
- Changed TagsView to reflect activity types for locations.
- Updated TransportationViewSet to reference locations instead of adventures.
- Added new translations for search results related to locations in multiple languages.
- Updated dashboard and profile pages to reflect location counts instead of adventure counts.
- Adjusted search routes to handle locations instead of adventures.

* Update banner image

* style: Update stats component background and border for improved visibility

* refactor: Rename AdventureCard and AdventureModal to LocationCard and LocationModal for consistency

* Import and Export Functionality (#698)

* feat(backup): add BackupViewSet for data export and import functionality

* Fixed frontend returning corrupt binary data

* feat(import): enhance import functionality with confirmation check and improved city/region/country handling

* Potential fix for code scanning alert no. 29: Information exposure through an exception

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* Refactor response handling to use arrayBuffer instead of bytes

* Refactor image cleanup command to use LocationImage model and update import/export view to include backup and restore functionality

* Update backup export versioning and improve data restore warning message

* Enhance image navigation and localization support in modal components

* Refactor location handling in Immich integration components for consistency

* Enhance backup and restore functionality with improved localization and error handling

* Improve accessibility by adding 'for' attribute to backup file input label

---------

Co-authored-by: Christian Zäske <blitzdose@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* refactor(serializers): rename Location to Adventure and update related fields

* refactor(serializers): rename Adventure to Location and update related fields

* chore(requirements): update pillow version to 11.3.0

* Add PT-BR translations (#739)

* Fixed frontend returning corrupt binary data

* fix(adventure): enhance collection ownership validation in AdventureSerializer (#723)

* Add PT-BR translations

Add translation for Brazilian Portuguese to the project;

Signed-off-by: Lucas Zampieri <lzampier@redhat.com>

---------

Signed-off-by: Lucas Zampieri <lzampier@redhat.com>
Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com>
Co-authored-by: Christian Zäske <blitzdose@gmail.com>

* fix: update date formatting for adventure items to include timezone

* Image/attachment overhaul, activities, trails and integrations with Strava and Wanderer (#726)

* refactor(models, views, serializers): rename LocationImage and Attachment to ContentImage and ContentAttachment, update related references

* feat: Enhance collection sharing and location management features

- Implemented unsharing functionality in CollectionViewSet, including removal of user-owned locations from collections.
- Refactored ContentImageViewSet to support multiple content types and improved permission checks for image uploads.
- Added user ownership checks in LocationViewSet for delete operations.
- Enhanced collection management in the frontend to display both owned and shared collections separately.
- Updated Immich integration to handle access control based on location visibility and user permissions.
- Improved UI components to show creator information and manage collection links more effectively.
- Added loading states and error handling in collection fetching logic.

* feat: enhance transportation card and modal with image handling

- Added CardCarousel component to TransportationCard for image display.
- Implemented privacy indicator with Eye and EyeOff icons.
- Introduced image upload functionality in TransportationModal, allowing users to upload multiple images.
- Added image management features: remove image and set primary image.
- Updated Transportation and Location types to include images as ContentImage array.
- Enhanced UI for image upload and display in modal, including selected images preview and current images management.

* feat: update CardCarousel component to handle images, name, and icon props across various cards

* feat: add Discord link to AboutModal and update appVersion in config

* feat: add LocationQuickStart and LocationVisits components for enhanced location selection and visit management

- Implemented LocationQuickStart.svelte for searching and selecting locations on a map with reverse geocoding.
- Created LocationVisits.svelte to manage visit dates and notes for locations, including timezone handling and validation.
- Updated types to remove location property from Attachment type.
- Modified locations page to integrate NewLocationModal for creating and editing locations, syncing updates with adventures.

* feat: update button styles and add back and close functionality in location components

* Collection invite system

* feat: update CollectionSerializer to include 'shared_with' as a read-only field; update app version; add new background images and localization strings for invites

* feat: add Strava integration with OAuth flow and activity management

- Implemented IntegrationView for listing integrations including Immich, Google Maps, and Strava.
- Created StravaIntegrationView for handling OAuth authorization and token exchange.
- Added functionality to refresh Strava access tokens when needed.
- Implemented endpoints to fetch user activities from Strava and extract essential information.
- Added Strava logo asset and integrated it into the frontend settings page.
- Updated settings page to display Strava integration status.
- Enhanced location management to include trails with create, edit, and delete functionalities.
- Updated types and localization files to support new features.

* feat: enhance Strava integration with user-specific settings and management options; update localization strings

* feat: update Strava integration settings and add Wanderer logo; enhance user experience with active section management

* Add StravaActivity and Activity types to types.ts

- Introduced StravaActivity type to represent detailed activity data from Strava.
- Added Activity type to encapsulate user activities, including optional trail and GPX file information.
- Updated Location type to include an array of activities associated with each visit.

* feat: streamline location and activity management; enhance Strava import functionality and add activity handling in server actions

* feat: add ActivityCard component and update LocationVisits to use it; modify Activity type to reference trail as string

* feat: add geojson support to ActivitySerializer and ActivityCard; enhance location page with activity summaries and GPS tracks

* feat: add trails property to recommendation object in collection page

* feat: add Wanderer integration with authentication and management features

* feat: implement Wanderer integration with trail management and UI components; enhance settings for reauthentication

* feat: add measurement system field to CustomUser model and update related serializers, migrations, and UI components

* feat: add measurement system support across ActivityCard, StravaActivityCard, NewLocationModal, LocationVisits, and related utility functions

* feat: enhance Wanderer integration with trail data fetching and UI updates; add measurement system support

* feat: add TrailCard component for displaying trail details with measurement system support

* feat: add wanderer link support in TrailSerializer and TrailCard; update measurement system handling in location page

* feat: integrate memcached for caching in Wanderer services; update Docker, settings, and supervisord configurations

* feat: add activity statistics to user profile; include distance, moving time, elevation, and total activities

* feat: enhance import/export functionality to include trails and activities; update UI components and localization

* feat: integrate NewLocationModal across various components; update location handling and state management

* Refactor Location and Visit types: Replace visits structure in Location with Visit type and add location, created_at, and updated_at fields to Visit

* feat: enhance permissions and validation in activity, trail, and visit views; add unique constraint to CollectionInvite model

* feat: sync visits when updating adventures in collection page

* feat: add geojson support for attachments and refactor GPX handling in location page

* chore: remove unused dependencies from pnpm-lock.yaml

* feat: add Strava and Wanderer integration documentation and configuration options

* Add support for Japanese and Arabic languages in localization

* Add new localization strings for Russian, Swedish, and Chinese languages

- Updated translations in ru.json, sv.json, and zh.json to include new phrases related to collections, activities, and integrations.
- Added strings for leaving collections, loading collections, and quick start instructions.
- Included new sections for invites and Strava integration with relevant messages.
- Enhanced Google Maps integration descriptions for clarity.

* Add localization support for activity-related features and update UI labels

- Added new Russian, Swedish, and Chinese translations for activity statistics, achievements, and related terms.
- Updated UI components to use localized strings for activity statistics, distance, moving time, and other relevant fields.
- Enhanced user experience by ensuring all relevant buttons and labels are translated and accessible.

* fix: update appVersion to reflect the latest development version

* feat: add getActivityColor function and integrate activity color coding in map and location pages

* feat: add support for showing activities and visited cities on the map

* feat: update map page to display counts for visited cities and activities

* fix: remove debug print statement from IsOwnerOrSharedWithFullAccess permission class

* feat: add MapStyleSelector component and integrate basemap selection in map page

* feat: enhance basemap functions with 3D terrain support and update XYZ style handling

* feat: add management command to recalculate elevation data from GPX files and update activity view to handle elevation data extraction

* feat: update MapStyleSelector component and enhance basemap options for improved user experience

* feat: refactor activity model and admin to use sport_type, update serializers and components for improved activity handling

* feat: update Activity model string representation to use sport_type instead of type

* feat: update activity handling to use sport_type for color determination in map and location components

* feat: Add attachments support to Transportation and Lodging types

- Updated Transportation and Lodging types to include attachments array.
- Enhanced localization files for multiple languages to include new strings related to attachments, lodging, and transportation.
- Added error and success messages for attachment removal and upload information.
- Included new prompts for creating and updating lodging and transportation details across various languages.

* feat: Enhance activity statistics and breakdown by category in user profile

* feat: Add SPORT_CATEGORIES for better organization of sports types and update StatsViewSet to use it

* feat: Enhance CategoryDropdown for mobile responsiveness and add category creation functionality

* feat: Update inspirational quote in adventure log

* feat: Localize navigation labels in Navbar and add translation to en.json

* feat: Update navigation elements to use anchor tags for better accessibility and add new fields to signup form

* Translate login button text to support internationalization

* feat: Refactor location visit status logic and add utility function for visited locations count

* chore: Upgrade GitHub Actions and remove unused timezone import

* fix: Update Docker image tags in GitHub Actions workflow for consistency

* fix: Update Docker image build process to use BuildKit cache for improved performance

* chore: Remove unused imports from stats_view.py for cleaner code

* Increase background image opacity on login and signup pages for improved visibility

* fix: Add postgresql-client to runtime dependencies in Dockerfile

* fix: Update workflow files to include permissions for GitHub Actions

* fix: Update esbuild version to ^0.25.9 in package.json and pnpm-lock.yaml for compatibility

* chore: improve Chinese translation (#796)

* fix: update adventure log quote and remove unused activity type field

* fix: optimize import process by using get_or_create for visited cities and regions

* fix: update README to reflect changes from adventures to locations and enhance feature descriptions

* fix: update documentation to reflect changes from adventures to locations and enhance feature descriptions

* Update google_maps_integration.md (#743)

* Update google_maps_integration.md

Explain APIs needed for AdventureLogs versions.

Fixes #731 and #727

* Fix a typo google_maps_integration.md

---------

Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com>

* fix: update appVersion to reflect the main branch version

* fix: update image source for satellite map in documentation

* Update frontend/src/lib/components/NewLocationModal.svelte

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Add localization updates for multiple languages

- Japanese (ja.json): Added new activity-related phrases and checklist terms.
- Korean (ko.json): Included activity breakdown and checklist enhancements.
- Dutch (nl.json): Updated activity descriptions and added checklist functionalities.
- Norwegian (no.json): Enhanced activity and checklist terminology.
- Polish (pl.json): Added new phrases for activities and checklist management.
- Brazilian Portuguese (pt-br.json): Updated activity-related terms and checklist features.
- Russian (ru.json): Included new phrases for activities and checklist management.
- Swedish (sv.json): Enhanced activity descriptions and checklist functionalities.
- Chinese (zh.json): Added new activity-related phrases and checklist terms.

* fix: enhance image upload handling to support immich_id

* Add "not_enabled" message for Strava integration in multiple languages

- Updated Spanish, French, Italian, Japanese, Korean, Dutch, Norwegian, Polish, Brazilian Portuguese, Russian, Swedish, and Chinese locale files to include a new message indicating that Strava integration is not enabled in the current instance.

---------

Signed-off-by: Lucas Zampieri <lzampier@redhat.com>
Co-authored-by: Ycer0n <37674033+Ycer0n@users.noreply.github.com>
Co-authored-by: taninme <5262715+taninme@users.noreply.github.com>
Co-authored-by: ferdousahmed <taninme@gmail.com>
Co-authored-by: Christian Zäske <blitzdose@gmail.com>
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: Lucas Zampieri <lcasmz54@gmail.com>
Co-authored-by: pplulee <pplulee@live.cn>
Co-authored-by: Cathelijne Hornstra <github@hornstra.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Sean Morley
2025-08-19 08:50:45 -04:00
committed by GitHub
parent 4e96e529f4
commit a3f0eda63f
220 changed files with 27763 additions and 6653 deletions

View File

@@ -31,7 +31,8 @@
"light": "Lys",
"night": "Natt",
"northernLights": "Nordlys"
}
},
"navigation": "Navigasjon"
},
"about": {
"about": "Om",
@@ -43,7 +44,15 @@
"nominatim_2": "Deres data er lisensiert under ODbL-lisensen.",
"other_attributions": "Ytterligere attribusjoner finnes i README-filen.",
"close": "Lukk",
"generic_attributions": "Logg inn på Adventurelog for å se attribusjoner for aktiverte integrasjoner og tjenester."
"generic_attributions": "Logg inn på Adventurelog for å se attribusjoner for aktiverte integrasjoner og tjenester.",
"attributions": "Attribusjoner",
"developer": "Utvikler",
"license_info": "Tillatelse",
"sponsor": "Sponsor",
"thank_you": "Takk for at du bruker Adventurelog!",
"version": "Versjon",
"view_changelog": "Se Changelog",
"view_license": "Vis lisens"
},
"home": {
"hero_1": "Oppdag verdens mest spennende eventyr",
@@ -64,12 +73,7 @@
"start_your_journey": "Start reisen"
},
"adventures": {
"collection_remove_success": "Eventyret ble fjernet fra samlingen!",
"collection_remove_error": "Feil ved fjerning av eventyr fra samling",
"collection_link_success": "Eventyret ble lagt til samlingen!",
"no_image_found": "Ingen bilde funnet",
"collection_link_error": "Feil ved lenking av eventyr til samling",
"adventure_delete_confirm": "Er du sikker på at du vil slette dette eventyret? Denne handlingen kan ikke angres.",
"checklist_delete_confirm": "Er du sikker på at du vil slette denne sjekklisten? Denne handlingen kan ikke angres.",
"note_delete_confirm": "Er du sikker på at du vil slette dette notatet? Denne handlingen kan ikke angres.",
"transportation_delete_confirm": "Er du sikker på at du vil slette dette transportmiddelet? Denne handlingen kan ikke angres.",
@@ -83,8 +87,6 @@
"remove_from_collection": "Fjern fra samling",
"add_to_collection": "Legg til i samling",
"delete": "Slett",
"not_found": "Fant ikke eventyret",
"not_found_desc": "Eventyret du leter etter, ble ikke funnet. Vennligst prøv et annet eventyr eller kom tilbake senere.",
"homepage": "Hjemmeside",
"collection": "Samling",
"longitude": "Lengdegrad",
@@ -109,7 +111,6 @@
"rating": "Vurdering",
"my_images": "Mine bilder",
"no_images": "Ingen bilder",
"share_adventure": "Del dette eventyret!",
"copy_link": "Kopier lenke",
"image": "Bilde",
"upload_image": "Last opp bilde",
@@ -131,12 +132,10 @@
"clear_map": "Tøm kart",
"search_results": "Søkeresultater",
"no_results": "Ingen resultater funnet",
"wiki_desc": "Henter utdrag fra Wikipedia-artikkelen som samsvarer med navnet på eventyret.",
"attachments": "Vedlegg",
"attachment": "Vedlegg",
"images": "Bilder",
"generate_desc": "Generer beskrivelse",
"public_adventure": "Offentlig eventyr",
"location_information": "Plasseringsinformasjon",
"link": "Lenke",
"links": "Lenker",
@@ -157,15 +156,12 @@
"edit_collection": "Rediger samling",
"unarchive": "Fjern fra arkiv",
"archive": "Arkiver",
"no_collections_found": "Ingen samlinger funnet for å legge dette eventyret til.",
"not_visited": "Ikke besøkt",
"archived_collection_message": "Samlingen ble arkivert!",
"unarchived_collection_message": "Samlingen ble fjernet fra arkivet!",
"delete_collection_success": "Samlingen ble slettet!",
"cancel": "Avbryt",
"delete_collection": "Slett samling",
"delete_adventure": "Slett eventyr",
"adventure_delete_success": "Eventyret ble slettet!",
"visited": "Besøkt",
"planned": "Planlagt",
"duration": "Varighet",
@@ -183,17 +179,10 @@
"image_fetch_failed": "Kunne ikke hente bilde",
"no_location": "Vennligst angi et sted",
"no_description_found": "Fant ingen beskrivelse",
"adventure_created": "Eventyr opprettet",
"adventure_create_error": "Kunne ikke opprette eventyr",
"lodging": "Overnatting",
"create_adventure": "Opprett eventyr",
"adventure_updated": "Eventyr oppdatert",
"adventure_update_error": "Kunne ikke oppdatere eventyr",
"set_to_pin": "Fest",
"category_fetch_error": "Feil ved henting av kategorier",
"new_adventure": "Nytt eventyr",
"basic_information": "Grunnleggende informasjon",
"no_adventures_to_recommendations": "Ingen eventyr funnet. Legg til minst ett eventyr for å få anbefalinger.",
"display_name": "Visningsnavn",
"adventure_not_found": "Det finnes ingen eventyr å vise. Legg til noen ved å trykke på plusstegnet nederst til høyre, eller prøv å endre filtre!",
"no_adventures_found": "Ingen eventyr funnet",
@@ -233,7 +222,6 @@
"no_location_found": "Ingen sted funnet",
"from": "Fra",
"to": "Til",
"will_be_marked": "vil bli markert som besøkt når eventyret er lagret.",
"start": "Start",
"end": "Slutt",
"emoji_picker": "Emoji-velger",
@@ -298,7 +286,197 @@
"name_location": "Navn, plassering",
"collection_contents": "Samlingsinnhold",
"check_in": "Sjekk inn",
"check_out": "Sjekk ut"
"check_out": "Sjekk ut",
"collection_link_location_error": "Feil koblingssted til samling",
"collection_link_location_success": "Plassering knyttet til samlingen vellykket!",
"collection_locations": "Inkluderer samlingssteder",
"collection_remove_location_error": "Feil å fjerne plasseringen fra samlingen",
"collection_remove_location_success": "Plassering fjernet fra samlingen med hell!",
"create_location": "Skape sted",
"delete_location": "Slett plassering",
"edit_location": "Rediger plassering",
"location_create_error": "Kunne ikke skape sted",
"location_created": "Plassering opprettet",
"location_delete_confirm": "Er du sikker på at du vil slette dette stedet? \nDenne handlingen kan ikke angres.",
"location_delete_success": "Plassering slettet vellykket!",
"location_not_found": "Plasseringen ikke funnet",
"location_not_found_desc": "Plasseringen du lette etter ble ikke funnet. \nPrøv et annet sted eller sjekk tilbake senere.",
"location_update_error": "Kunne ikke oppdatere plasseringen",
"location_updated": "Plassering oppdatert",
"new_location": "Ny beliggenhet",
"no_collections_to_add_location": "Ingen samlinger funnet å legge dette stedet til.",
"no_locations_to_recommendations": "Ingen steder funnet. \nLegg til minst ett sted for å få anbefalinger.",
"public_location": "Offentlig beliggenhet",
"share_location": "Del dette stedet!",
"visit_calendar": "Besøk kalenderen",
"wiki_location_desc": "Trekker utdrag fra Wikipedia -artikkelen som samsvarer med navnet på stedet.",
"will_be_marked_location": "vil bli merket som besøkt når stedet er lagret.",
"no_locations_found": "Ingen steder funnet",
"image_modal_navigate": "Bruk piltastene eller klikk for å navigere",
"details": "Detaljer",
"leave": "Forlate",
"leave_collection": "Forlate samlingen",
"leave_collection_warning": "Er du sikker på at du vil forlate denne samlingen? \nEventuelle steder du har lagt til, vil bli koblet til og forblir på kontoen din.",
"left_collection_message": "Vellykket igjen samling",
"loading_collections": "Laster inn samlinger ...",
"quick_start": "Rask start",
"achievements": "Prestasjoner",
"active_duration": "Aktiv varighet",
"activities_name": "Aktiviteter",
"activity_name": "Aktivitetsnavn",
"activity_name_placeholder": "Morgenløp",
"activity_name_required": "Aktivitetsnavn er påkrevd",
"activity_options": "Aktivitetsalternativer",
"activity_statistics": "Aktivitetsstatistikk",
"activity_statistics_description": "Din kondisjon og aktivitetsprestasjoner",
"add_activity": "Legg til aktivitet",
"add_first_trail": "Legg til den første løypa ved hjelp av knappen over",
"add_new_activity": "Legg til ny aktivitet",
"add_new_trail": "Legg til ny sti",
"add_trail": "Legg til løype",
"add_visit": "Legg til besøk",
"add_wanderer_trail": "Legg til Wanderer Trail",
"attachment_management": "Vedleggsstyring",
"attachment_name_required": "Vedleggsnavn påkrevd",
"attachment_remove_error": "Det oppsto en feil mens du fjernet festet",
"attachment_removed": "Vedlegg fjernet med hell",
"attachment_updated": "Vedlegg oppdatert vellykket",
"average_cadence": "Gjennomsnittlig kadens",
"average_speed": "Gjennomsnittlig hastighet",
"avg_speed": "Gjennomsnittlig hastighet",
"back": "Tilbake",
"cadence": "Kadens",
"calories": "Kalorier",
"click_map": "Klikk på kartet for å velge et sted",
"click_on_map": "Klikk på kartet for å velge et sted",
"complete_import": "Fullstendig import",
"complete_strava_import": "Komplett Strava -import",
"confirm_delete_activity": "Er du sikker på at du vil slette denne aktiviteten?",
"connect_to_wanderer": "Koble til Wanderer",
"continue": "Fortsette",
"create_new_location": "Opprett ny sted",
"create_trail": "Lag løype",
"created": "Opprettet",
"current_attachments": "Gjeldende vedlegg",
"date_selection": "Dato valg",
"download_gpx": "Last ned GPX",
"edit_visit": "Rediger besøk",
"elapsed_time": "Går tid",
"elevation": "Høyde",
"elevation_gain": "Høyningsgevinst",
"elevation_high": "Høyden høy",
"elevation_loss": "Høydeap",
"elevation_low": "Høyden lav",
"end_lat": "Slutt breddegrad",
"end_lng": "Slutt lengdegrad",
"export_gpx": "Eksport GPX",
"export_original": "Eksporter original",
"external_link": "Ekstern lenke",
"gain": "gevinst",
"getting_location_details": "Få stedsdetaljer",
"gpx_file": "GPX -fil",
"gpx_file_downloaded": "GPX -fil lastet ned. \nLast den opp nedenfor for å fullføre importen.",
"gpx_file_required": "GPX -fil som kreves",
"image_management": "Bildeadministrasjon",
"import_activity": "Importaktivitet",
"importing": "Import",
"likes": "Liker",
"loading_activities": "Laster aktiviteter",
"location_display_name": "Plassering av visningsnavn",
"location_map": "Sted",
"location_selected": "Plassering valgt",
"max_speed": "Maks hastighet",
"moving_time": "Bevegelige tid",
"next_image": "Neste bilde",
"no_attachments_uploaded_yet": "Ingen vedlegg lastet opp ennå",
"no_external_link": "Ingen ekstern lenke tilgjengelig",
"no_file_selected": "Ingen fil valgt",
"no_images_uploaded_yet": "Ingen bilder lastet opp ennå",
"no_strava_activities": "Ingen Strava -aktiviteter funnet under dette besøket",
"no_trails_added": "Ingen stier lagt til ennå",
"no_trails_available": "Ingen stier tilgjengelig",
"no_trails_found_matching": "Ingen stier fant matching",
"no_visits_description": "Lag ditt første besøk ved å velge datoer ovenfor",
"notes_placeholder": "Legg til notater om dette besøket",
"or": "ELLER",
"pace": "Tempo",
"photos": "Bilder",
"previous_image": "Forrige bilde",
"processing": "Behandling",
"public_location_description": "Gjøre dette stedet synlig for andre brukere",
"remove_visit": "Fjern besøket",
"rest_time": "Hviletid",
"saved_activities": "Lagrede aktiviteter",
"search_location": "Søk etter et sted",
"search_placeholder": "Gå inn i by, beliggenhet eller landemerke ...",
"search_trails_placeholder": "Søk stier etter navn",
"searching": "Søker",
"select_on_map": "Velg på MAP",
"select_wanderer_trail": "Velg en sti fra Wanderer -kontoen din",
"sport_type": "Sportstype",
"sport_type_placeholder": "Løypekjøring",
"start_lat": "Start breddegrad",
"start_lng": "Start lengdegrad",
"strava_activities_during_visit": "Strava -aktiviteter under besøket",
"strava_activity_ready": "Strava -aktivitet klar",
"time": "Tid",
"total_covered": "Total dekket",
"total_recorded": "Totalt registrert",
"trail": "Sti",
"trail_created_successfully": "Løype opprettet med hell",
"trail_creation_failed": "Kunne ikke lage løype",
"trail_fetch_failed": "Kunne ikke hente vandrerstier",
"trail_link_required": "Det kreves en løypeforbindelse",
"trail_name": "Trailnavn",
"trail_removal_failed": "Kunne ikke fjerne løypa",
"trail_removed_successfully": "Trail fjernet med hell",
"trail_update_failed": "Kunne ikke oppdatere løypa",
"trail_updated_successfully": "Trail oppdatert vellykket",
"trails": "Stier",
"trails_found_for": "Stier funnet for",
"trails_management": "Trails Management",
"trails_management_description": "Administrer stier tilknyttet dette stedet. \nStier kan knyttes til eksterne tjenester som AllTrails eller lenke til Wanderer Trails.",
"update_location_details": "Oppdater plasseringsdetaljer",
"update_visit": "Oppdateringsbesøk",
"upload_activity": "Last opp aktivitet",
"upload_attachment": "Last opp vedlegg",
"upload_first_attachment": "Last opp ditt første vedlegg ved hjelp av alternativene ovenfor",
"upload_first_image": "Last opp det første bildet ditt ved å bruke et av alternativene ovenfor",
"upload_from_device": "Last opp fra enheten",
"upload_from_url": "Last opp fra URL",
"upload_gpx_file": "Last opp GPX -filen som nettopp ble lastet ned for å fullføre Strava -importen",
"uploading": "Last opp",
"use_current_location": "Bruk gjeldende plassering",
"view_gpx": "Se GPX",
"view_on": "Se på",
"view_strava_activities": "Se Strava -aktiviteter",
"view_trail": "Utsikt Trail",
"wanderer_integration_error": "Wanderer -integrasjon er ikke aktivert eller har utløpt.",
"wikipedia_error": "Kunne ikke generere beskrivelse fra Wikipedia",
"high": "Høy",
"low": "Lav",
"rest": "Hvile",
"total": "Total",
"attachment_removed_error": "Feil fjerning av vedlegg",
"attachment_removed_success": "Vedlegget fjernet suksessfullt",
"attachments_upload_info": "Vedlegg vil bli lastet opp etter å ha lagret",
"image_upload_info": "Bilder blir lastet opp etter å ha lagret",
"linked_locations": "Koblede steder",
"lodging_save_error": "Feil lagring av losji",
"my_attachments": "Mine vedlegg",
"no_attachments": "Ingen vedlegg",
"no_attachments_desc": "Last opp filer for å komme i gang",
"no_images_desc": "Last opp bilder for å komme i gang",
"route_map": "Rutekart",
"selected_attachments": "Utvalgte vedlegg",
"selected_images": "Utvalgte bilder",
"activities_text": "aktiviteter",
"activity_breakdown_by_category": "Aktivitetsfordeling etter kategori",
"distance_covered": "Avstand dekket",
"recorded_sessions": "Innspilte økter",
"total_activities": "Total aktiviteter",
"total_climbed": "Totalt klatret",
"total_distance": "Total avstand"
},
"worldtravel": {
"country_list": "Liste over land",
@@ -354,7 +532,8 @@
"oldest_first": "Eldste først",
"unvisited_first": "Uvisitert først",
"visited_first": "Besøkte først",
"total_items": "Totalt gjenstander"
"total_items": "Totalt gjenstander",
"getting_location_details": "Få stedsdetaljer"
},
"auth": {
"username": "Brukernavn",
@@ -373,10 +552,14 @@
"public_tooltip": "Med en offentlig profil kan brukere dele samlinger med deg og se profilen din på brukersiden.",
"new_password": "Nytt passord (6+ tegn)",
"or_3rd_party": "Eller logg inn med en tredjepartstjeneste",
"no_public_adventures": "Ingen offentlige eventyr funnet",
"no_public_collections": "Ingen offentlige samlinger funnet",
"user_adventures": "Brukerens eventyr",
"user_collections": "Brukerens samlinger"
"user_collections": "Brukerens samlinger",
"no_public_locations": "Ingen offentlige steder funnet",
"user_locations": "Brukerplasser",
"enter_password": "Skriv inn passordet ditt",
"enter_username": "Skriv inn brukernavnet ditt",
"logging_in": "Logger inn",
"totp": "To-faktorkode"
},
"users": {
"no_users_found": "Ingen brukere med offentlig profil funnet."
@@ -493,7 +676,40 @@
"social_auth_setup": "Sosial autentiseringsoppsett",
"staff_status": "Personalstatus",
"staff_user": "Personalbruker",
"invalid_credentials": "Ugyldig legitimasjon"
"invalid_credentials": "Ugyldig legitimasjon",
"backup_restore": "Sikkerhetskopi",
"backup_restore_desc": "Lagre dataene dine eller gjenopprett dem fra en tidligere sikkerhetskopifil.",
"complete_setup_to_enable": "Komplett oppsett for å aktivere MFA",
"copy_all": "Kopier alle",
"enter_6_digit_code": "Skriv inn 6 -sifret kode",
"enter_code_from_app": "Skriv inn kode fra appen",
"error_occurred": "Det har oppstått en feil",
"important": "Viktig",
"manual_entry": "Manuell oppføring",
"mfa_already_enabled": "MFA er allerede aktivert",
"mfa_required": "MFA kreves",
"scan_qr_code": "Skann QR -kode",
"scan_with_authenticator_app": "Skann med Authenticator -appen",
"secure_your_account": "Sikre kontoen din",
"setup_required": "Oppsett kreves",
"verify_setup": "Bekreft oppsett",
"whats_included": "Hva som er inkludert",
"backup_your_data": "Sikkerhetskopiere dataene dine",
"backup_your_data_desc": "Last ned en komplett sikkerhetskopi av kontodataene dine, inkludert steder, samlinger, media og besøk.",
"data_override_acknowledge": "Jeg erkjenner at dette vil overstyre alle mine eksisterende data",
"data_override_acknowledge_desc": "Denne handlingen er irreversibel og vil erstatte alle steder, samlinger og besøk på kontoen din.",
"data_override_warning": "Data overstyrer advarsel",
"data_override_warning_desc": "Gjenoppretting av data vil erstatte alle eksisterende data fullstendig (som er inkludert i sikkerhetskopien) på kontoen din. \nDenne handlingen kan ikke angres.",
"integrations_settings": "Integrasjoner Innstillinger",
"media": "Media",
"restore_data": "Gjenopprett data",
"restore_data_desc": "Last opp en sikkerhetskopifil for å gjenopprette dataene dine.",
"select_backup_file": "Velg sikkerhetskopifil",
"world_travel_visits": "Verdens reisebesøk",
"activities": "Aktiviteter",
"trails": "Stier",
"use_imperial": "Bruk keiserlige enheter",
"use_imperial_desc": "Bruk keiserlige enheter (føtter, tommer, pund) i stedet for metriske enheter"
},
"collection": {
"collection_created": "Samling opprettet!",
@@ -527,7 +743,11 @@
"save": "Lagre",
"note_public": "Dette notatet er offentlig fordi det er i en offentlig samling.",
"add_a_link": "Legg til en lenke",
"invalid_url": "Ugyldig URL"
"invalid_url": "Ugyldig URL",
"create_new_note": "Lag ny merknad",
"enter_note_title": "Skriv inn notattittel",
"update_note_details": "Redigeringsnotat",
"viewing_note": "Visningsnotat"
},
"checklist": {
"checklist_deleted": "Sjekkliste slettet!",
@@ -539,7 +759,17 @@
"new_item": "Nytt punkt",
"checklist_public": "Denne sjekklisten er offentlig fordi den er i en offentlig samling.",
"item_cannot_be_empty": "Punktet kan ikke være tomt",
"item_already_exists": "Punktet finnes allerede"
"item_already_exists": "Punktet finnes allerede",
"add_new_item": "Legg til nytt vare",
"add_your_first_item": "Legg til din første vare",
"checklist_viewer": "Sjekklistevisning",
"completed": "Fullført",
"current_items": "Gjeldende gjenstander",
"editing_checklist": "Redigering av sjekkliste",
"enter_checklist_title": "Skriv inn sjekklistetittel",
"no_items_yet": "Ingen ting ennå",
"update_checklist_details": "Redigering av sjekkliste",
"viewing_checklist": "Viser sjekkliste"
},
"transportation": {
"transportation_deleted": "Transport slettet!",
@@ -563,7 +793,15 @@
"walking": "Går",
"other": "Annet"
},
"edit_transportation": "Rediger transport"
"edit_transportation": "Rediger transport",
"create_new_transportation": "Ny transport",
"enter_flight_number": "Skriv inn flynummer",
"enter_from_location": "Gå inn fra stedet",
"enter_link": "Skriv inn lenken",
"enter_to_location": "Gå til stedet",
"enter_transportation_name": "Skriv inn transportnavn",
"select_type": "Velg Type",
"update_transportation_details": "Oppdater transportdetaljer"
},
"lodging": {
"new_lodging": "Ny overnatting",
@@ -580,12 +818,23 @@
"villa": "Villa",
"motel": "Motell",
"other": "Annet",
"reservation_number": "Reservasjonsnummer"
"reservation_number": "Reservasjonsnummer",
"create_new_lodging": "Ny losji",
"enter_lodging_name": "Skriv inn losji -navn",
"enter_price": "Angi pris",
"enter_reservation_number": "Angi reservasjonsnummer",
"update_lodging_details": "Oppdater innleveringsdetaljer"
},
"search": {
"adventurelog_results": "AdventureLog-resultater",
"public_adventures": "Offentlige eventyr",
"online_results": "Nettresultater"
"online_results": "Nettresultater",
"cities": "Byer",
"countries": "Land",
"found": "funnet",
"result": "Resultat",
"results": "Resultater",
"try_searching_desc": "Prøv å søke etter eventyr, samlinger, land, regioner, byer eller brukere."
},
"map": {
"view_details": "Vis detaljer",
@@ -596,13 +845,18 @@
"clear_marker": "Fjern markør",
"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"
"regions": "Regioner",
"add_location": "Legg til nytt sted",
"add_location_at_marker": "Legg til nytt sted på markør",
"location_map": "Stedskart",
"locations_shown": "steder vist",
"place_marker_desc_location": "Klikk på kartet for å plassere en markør.",
"show_activities": "Vis aktiviteter",
"show_visited_cities": "Besøkte byer"
},
"share": {
"shared": "Delt",
@@ -614,7 +868,11 @@
"not_shared_with": "Ikke delt med",
"no_shared_found": "Ingen samlinger funnet som er delt med deg.",
"set_public": "For å la brukere dele med deg, må profilen din være offentlig.",
"go_to_settings": "Gå til innstillinger"
"go_to_settings": "Gå til innstillinger",
"available": "Tilgjengelig",
"pending": "I påvente av",
"revoke_invite": "Revoke Inviter",
"send_invite": "Send invitasjon"
},
"languages": {},
"profile": {
@@ -628,20 +886,20 @@
"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"
"your_journey_at_a_glance": "Din eventyrreise på et øyeblikk",
"public_location_experiences": "Offentlige beliggenhetsopplevelser"
},
"categories": {
"manage_categories": "Administrer kategorier",
"no_categories_found": "Ingen kategorier funnet.",
"edit_category": "Rediger kategori",
"icon": "Ikon",
"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",
"name_required": "Kategorinavnet er påkrevd"
"name_required": "Kategorinavnet er påkrevd",
"location_update_after_refresh": "Stedskortene vil bli oppdatert når du oppdaterer siden."
},
"dashboard": {
"welcome_back": "Velkommen tilbake",
@@ -682,30 +940,79 @@
"integration_already_exists": "En Immich -integrasjon eksisterer allerede. \nDu kan bare ha en integrasjon om gangen.",
"integration_not_found": "Immich -integrasjon ikke funnet. \nOpprett en ny integrasjon.",
"network_error": "Nettverksfeil mens du kobler til Immich -serveren. \nVennligst sjekk tilkoblingen din og prøv igjen.",
"validation_error": "Det oppstod en feil under validering av Immich -integrasjonen. \nVennligst sjekk server -URL -en og API -tasten."
"validation_error": "Det oppstod en feil under validering av Immich -integrasjonen. \nVennligst sjekk server -URL -en og API -tasten.",
"by_album": "Med album",
"by_date": "Etter dato",
"error_no_object_id": "Ingen objekt -ID ble gitt",
"fetch_error": "Feil med å hente data fra Immich -integrasjonen",
"image_search_placeholder": "Søk ved hjelp av Immich",
"loading": "Lasting",
"loading_albums": "Laster inn album",
"no_images": "Ingen bilder funnet",
"select_album": "Velg album",
"select_album_first": "Velg et album først",
"select_date": "Velg dato",
"try_different_date": "Prøv en annen dato"
},
"recomendations": {
"recommendation": "Anbefaling",
"recommendations": "Anbefalinger",
"adventure_recommendations": "Eventyranbefalinger",
"food": "Mat",
"tourism": "Turisme"
"tourism": "Turisme",
"location_recommendations": "Stedsanbefalinger"
},
"google_maps": {
"google_maps_integration_desc": "Koble til Google Maps-kontoen din for å få søkeresultater og anbefalinger av høy kvalitet."
"google_maps_integration_desc": "Koble til Google Maps-kontoen din for å få søkeresultater og anbefalinger av høy kvalitet.",
"google_maps_integration_desc_no_staff": "Denne integrasjonen må først aktiveres av administratoren på denne serveren."
},
"calendar": {
"all_categories": "Alle kategorier",
"all_day_event": "Hele dagens arrangement",
"calendar_overview": "Kalenderoversikt",
"categories": "Kategorier",
"day": "Dag",
"events_scheduled": "hendelser planlagt",
"filter_by_category": "Filter etter kategori",
"filtered_results": "Filtrerte resultater",
"month": "Måned",
"today": "I dag",
"total_events": "Total hendelser",
"week": "Uke"
},
"locations": {
"location": "Sted",
"locations": "Lokasjoner",
"my_locations": "Mine lokasjoner"
},
"settings_download_backup": "Last ned sikkerhetskopi",
"invites": {
"accept": "Akseptere",
"accept_failed": "Kunne ikke godta invitasjon",
"accepted": "Inviter akseptert",
"by": "ved",
"decline": "Avslå",
"decline_failed": "Kunne ikke avvise invitasjon",
"declined": "Invitasjonen avvist",
"invited_on": "Invitert videre",
"no_invites": "Ingen invitasjoner",
"no_invites_desc": "Forsikre deg om at profilen din er offentlig slik at brukere kan invitere deg.",
"pending_invites": "I påvente av invitasjoner",
"title": "Inviterer"
},
"strava": {
"account_connected": "Konto tilkoblet",
"admin_setup_required": "Serveradministratoren må aktivere den globalt",
"authorization_error": "Feil omdirigere til URL -URL for Strava",
"connect_account": "Koble til konto",
"disconnect": "Frakople",
"disconnect_error": "Feil fra å koble fra Strava",
"disconnected": "Vellykket koblet fra Strava",
"not_configured": "Strava ikke konfigurert",
"ready_to_connect": "Klar til å koble til",
"strava_integration_desc": "Koble til Strava for enkelt å importere aktivitetene dine til steder og besøk",
"gpx_required": "Last opp GPX -filen for å fullføre Strava -importen",
"not_enabled": "Strava -integrasjon er ikke aktivert på denne forekomsten."
},
"wanderer": {
"connected": "Vellykket koblet til vandrer",
"connection_error": "Feil tilkobling til vandrer",
"wanderer_integration_desc": "Koble til Wanderer for enkelt å importere og se løypene dine på steder"
}
}