Translation Fixes and Dependency Updates (#861)
* Translated using Weblate (Spanish) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ * Added translation using Weblate (English (United States)) * Translated using Weblate (Norwegian Bokmål) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/nb_NO/ * Remove empty English (United States) locale file * Translated using Weblate (Spanish) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ * [BUG]Ordered Itinerary includes visits that are outside itinerary date range Fixes #746 * [BUG] Server Error (500) when trying to access the API docs Fixes #712 * [BUG] Single day Collections will think location visits are out of date range Fixes #827 * Fixes #654 * Translated using Weblate (Spanish) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ * Added Slovak translations (#815) * Created sk.json * Update Navbar.svelte * Update +layout.svelte --------- Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com> * Implement code changes to enhance functionality and improve performance * Translated using Weblate (Slovak) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sk/ * Translated using Weblate (German) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/ * [BUG] Location Visit End Date not affected by Location Timezone Fixes #843 * fix(i18n): update Chinese translations for location-related terms (#829) Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com> * Translated using Weblate (Spanish) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ * Translated using Weblate (German) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/ * Translated using Weblate (Swedish) Currently translated at 99.8% (957 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sv/ * Squashed commit of the following: commit 9d4f1b8f534a3cdfb22812f2a25ababd7a236a87 Author: Jacob <jacob.aulin@proton.me> Date: Sat Sep 13 15:17:22 2025 +0200 Translated using Weblate (Swedish) Currently translated at 99.8% (957 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sv/ commit 8fac40cfde425c989521c891b3ba9c75ab32e57e Author: Christian S <schuld.christian@gmail.com> Date: Sat Sep 13 12:54:52 2025 +0200 Translated using Weblate (German) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/ commit 8e8c42396ec77b763983155e8b1e89cabf38ce17 Author: Patricio Carrau <duckycb@proton.me> Date: Tue Sep 9 21:59:48 2025 +0200 Translated using Weblate (Spanish) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ commit be818ab408d00c5c26dfb3b25632604a415d3570 Author: pplulee <hi@pplulee.me> Date: Mon Sep 8 04:06:54 2025 +0100 fix(i18n): update Chinese translations for location-related terms (#829) Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com> commit 9e40dcf6a1dc194d4694a114b3c7e88135121016 Merge: af2f2809 733eefce Author: Sean Morley <mail@seanmorley.com> Date: Sun Sep 7 23:03:57 2025 -0400 Merge remote-tracking branch 'weblate/development' into development commit af2f28090b9242fb7ab263fa5bbb95a5bcc1b27f Author: Sean Morley <mail@seanmorley.com> Date: Sun Sep 7 23:00:33 2025 -0400 [BUG] Location Visit End Date not affected by Location Timezone Fixes #843 commit 733eefceddbdad01726364e5d4523605f095fde2 Author: Alex <div@alexe.at> Date: Sun Sep 7 23:28:20 2025 +0200 Translated using Weblate (German) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/ commit 6c750d1c8f95b42418893e15ad46c3d4ed86d053 Author: fantastron27 <fantastron27@gmail.com> Date: Sun Sep 7 09:17:16 2025 +0200 Translated using Weblate (Slovak) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sk/ commit f733b3b96bbddc71d426f2e60320a5ad2f6755af Merge: 769ea6ad af4e541c Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 21:36:35 2025 -0400 Merge branch 'development' of github.com:seanmorley15/AdventureLog into development commit 769ea6ad710890e931aabace2c00dc37436f869f Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 21:36:33 2025 -0400 Implement code changes to enhance functionality and improve performance commit af4e541c1c9e7309857102287199279aec339387 Author: fantastron27 <fantastron27@gmail.com> Date: Sun Sep 7 03:36:23 2025 +0200 Added Slovak translations (#815) * Created sk.json * Update Navbar.svelte * Update +layout.svelte --------- Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com> commit 904474d757577229b47441d1378a6fd6788fbe40 Merge: d4709434 f87a5fe3 Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 21:31:58 2025 -0400 Merge remote-tracking branch 'weblate/development' into development commit d47094346c0b63ea753294a0786414e5e070ae7f Merge: 4a5f59bf 6366a3eb Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 21:29:39 2025 -0400 Merge remote-tracking branch 'weblate/development' into development commit f87a5fe3bcc2fe28cfc206fb5cba517bbffa8df6 Author: Sergio <garcia.sergio@me.com> Date: Sun Sep 7 01:12:50 2025 +0200 Translated using Weblate (Spanish) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ commit 4a5f59bfd24e32fdf3558b009a8f636636cb3663 Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 21:06:17 2025 -0400 Fixes #654 commit c1302bb54ab272c2a98c53ce0d508b7d39e9674b Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 20:52:05 2025 -0400 [BUG] Single day Collections will think location visits are out of date range Fixes #827 commit 773f2d65bbfb2a9591b31fabfd6844612b840f1a Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 19:52:28 2025 -0400 [BUG] Server Error (500) when trying to access the API docs Fixes #712 commit 4228db249ed5e3261931a1cdb3895d0ddd3ac4ac Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 19:44:00 2025 -0400 [BUG]Ordered Itinerary includes visits that are outside itinerary date range Fixes #746 commit 26f36cabb0a860f10d7ba62b5279ddd1e282c78e Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 18:36:50 2025 +0200 Translated using Weblate (Spanish) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ commit 3bfd2dd5615afdbd04e3451c2ef728f1d7caf466 Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 12:33:23 2025 -0400 Remove empty English (United States) locale file commit 6366a3eba6ab72090e52be474212a663799dfe19 Author: Nikolai Eidsheim <nikolai.eidsheim@gmail.com> Date: Sat Sep 6 18:10:15 2025 +0200 Translated using Weblate (Norwegian Bokmål) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/nb_NO/ commit 671cd3701fc5a601f2f1bad9aef93106f91eec0b Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 16:58:04 2025 +0200 Added translation using Weblate (English (United States)) commit bdbbe5f4978f041f620f0503da69fa870cb1997c Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 16:54:43 2025 +0200 Translated using Weblate (Spanish) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ * Remove duplicate comment for syncing development branch with main in .env.example * Timezone fixes, Translations, and Misc Fixes (#844) * Translated using Weblate (Spanish) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ * Added translation using Weblate (English (United States)) * Translated using Weblate (Norwegian Bokmål) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/nb_NO/ * Remove empty English (United States) locale file * Translated using Weblate (Spanish) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ * [BUG]Ordered Itinerary includes visits that are outside itinerary date range Fixes #746 * [BUG] Server Error (500) when trying to access the API docs Fixes #712 * [BUG] Single day Collections will think location visits are out of date range Fixes #827 * Fixes #654 * Translated using Weblate (Spanish) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ * Added Slovak translations (#815) * Created sk.json * Update Navbar.svelte * Update +layout.svelte --------- Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com> * Implement code changes to enhance functionality and improve performance * Translated using Weblate (Slovak) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sk/ * Translated using Weblate (German) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/ * [BUG] Location Visit End Date not affected by Location Timezone Fixes #843 * fix(i18n): update Chinese translations for location-related terms (#829) Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com> --------- Co-authored-by: Nikolai Eidsheim <nikolai.eidsheim@gmail.com> Co-authored-by: Sergio <garcia.sergio@me.com> Co-authored-by: fantastron27 <fantastron27@gmail.com> Co-authored-by: Alex <div@alexe.at> Co-authored-by: pplulee <hi@pplulee.me> * Update issue templates for bug reports, deployment issues, and feature requests (#849) * Squashed commit of the following: commit 9d4f1b8f534a3cdfb22812f2a25ababd7a236a87 Author: Jacob <jacob.aulin@proton.me> Date: Sat Sep 13 15:17:22 2025 +0200 Translated using Weblate (Swedish) Currently translated at 99.8% (957 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sv/ commit 8fac40cfde425c989521c891b3ba9c75ab32e57e Author: Christian S <schuld.christian@gmail.com> Date: Sat Sep 13 12:54:52 2025 +0200 Translated using Weblate (German) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/ commit 8e8c42396ec77b763983155e8b1e89cabf38ce17 Author: Patricio Carrau <duckycb@proton.me> Date: Tue Sep 9 21:59:48 2025 +0200 Translated using Weblate (Spanish) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ commit be818ab408d00c5c26dfb3b25632604a415d3570 Author: pplulee <hi@pplulee.me> Date: Mon Sep 8 04:06:54 2025 +0100 fix(i18n): update Chinese translations for location-related terms (#829) Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com> commit 9e40dcf6a1dc194d4694a114b3c7e88135121016 Merge: af2f2809 733eefce Author: Sean Morley <mail@seanmorley.com> Date: Sun Sep 7 23:03:57 2025 -0400 Merge remote-tracking branch 'weblate/development' into development commit af2f28090b9242fb7ab263fa5bbb95a5bcc1b27f Author: Sean Morley <mail@seanmorley.com> Date: Sun Sep 7 23:00:33 2025 -0400 [BUG] Location Visit End Date not affected by Location Timezone Fixes #843 commit 733eefceddbdad01726364e5d4523605f095fde2 Author: Alex <div@alexe.at> Date: Sun Sep 7 23:28:20 2025 +0200 Translated using Weblate (German) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/ commit 6c750d1c8f95b42418893e15ad46c3d4ed86d053 Author: fantastron27 <fantastron27@gmail.com> Date: Sun Sep 7 09:17:16 2025 +0200 Translated using Weblate (Slovak) Currently translated at 100.0% (958 of 958 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sk/ commit f733b3b96bbddc71d426f2e60320a5ad2f6755af Merge: 769ea6ad af4e541c Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 21:36:35 2025 -0400 Merge branch 'development' of github.com:seanmorley15/AdventureLog into development commit 769ea6ad710890e931aabace2c00dc37436f869f Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 21:36:33 2025 -0400 Implement code changes to enhance functionality and improve performance commit af4e541c1c9e7309857102287199279aec339387 Author: fantastron27 <fantastron27@gmail.com> Date: Sun Sep 7 03:36:23 2025 +0200 Added Slovak translations (#815) * Created sk.json * Update Navbar.svelte * Update +layout.svelte --------- Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com> commit 904474d757577229b47441d1378a6fd6788fbe40 Merge: d4709434 f87a5fe3 Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 21:31:58 2025 -0400 Merge remote-tracking branch 'weblate/development' into development commit d47094346c0b63ea753294a0786414e5e070ae7f Merge: 4a5f59bf 6366a3eb Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 21:29:39 2025 -0400 Merge remote-tracking branch 'weblate/development' into development commit f87a5fe3bcc2fe28cfc206fb5cba517bbffa8df6 Author: Sergio <garcia.sergio@me.com> Date: Sun Sep 7 01:12:50 2025 +0200 Translated using Weblate (Spanish) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ commit 4a5f59bfd24e32fdf3558b009a8f636636cb3663 Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 21:06:17 2025 -0400 Fixes #654 commit c1302bb54ab272c2a98c53ce0d508b7d39e9674b Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 20:52:05 2025 -0400 [BUG] Single day Collections will think location visits are out of date range Fixes #827 commit 773f2d65bbfb2a9591b31fabfd6844612b840f1a Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 19:52:28 2025 -0400 [BUG] Server Error (500) when trying to access the API docs Fixes #712 commit 4228db249ed5e3261931a1cdb3895d0ddd3ac4ac Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 19:44:00 2025 -0400 [BUG]Ordered Itinerary includes visits that are outside itinerary date range Fixes #746 commit 26f36cabb0a860f10d7ba62b5279ddd1e282c78e Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 18:36:50 2025 +0200 Translated using Weblate (Spanish) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ commit 3bfd2dd5615afdbd04e3451c2ef728f1d7caf466 Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 12:33:23 2025 -0400 Remove empty English (United States) locale file commit 6366a3eba6ab72090e52be474212a663799dfe19 Author: Nikolai Eidsheim <nikolai.eidsheim@gmail.com> Date: Sat Sep 6 18:10:15 2025 +0200 Translated using Weblate (Norwegian Bokmål) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/nb_NO/ commit 671cd3701fc5a601f2f1bad9aef93106f91eec0b Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 16:58:04 2025 +0200 Added translation using Weblate (English (United States)) commit bdbbe5f4978f041f620f0503da69fa870cb1997c Author: Sean Morley <mail@seanmorley.com> Date: Sat Sep 6 16:54:43 2025 +0200 Translated using Weblate (Spanish) Currently translated at 100.0% (956 of 956 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/es/ * Remove duplicate comment for syncing development branch with main in .env.example * Update Django version to 5.2.6 in requirements.txt * Update appVersion to include main branch identifier * Update GitHub Actions workflows to use updated actions and improve Docker image build process * Add comprehensive development instructions for AdventureLog project --------- Co-authored-by: Nikolai Eidsheim <nikolai.eidsheim@gmail.com> Co-authored-by: Sergio <garcia.sergio@me.com> Co-authored-by: fantastron27 <fantastron27@gmail.com> Co-authored-by: Alex <div@alexe.at> Co-authored-by: pplulee <hi@pplulee.me> Co-authored-by: Patricio Carrau <duckycb@proton.me> Co-authored-by: Christian S <schuld.christian@gmail.com> Co-authored-by: Jacob <jacob.aulin@proton.me>
This commit is contained in:
134
.github/copilot-instructions.md
vendored
Normal file
134
.github/copilot-instructions.md
vendored
Normal file
@@ -0,0 +1,134 @@
|
|||||||
|
# AdventureLog Development Instructions
|
||||||
|
|
||||||
|
AdventureLog is a self-hosted travel companion web application built with SvelteKit frontend and Django backend, deployed via Docker.
|
||||||
|
|
||||||
|
**ALWAYS follow these instructions first and fallback to search or bash commands only when you encounter unexpected information that does not match the info here.**
|
||||||
|
|
||||||
|
## Working Effectively
|
||||||
|
|
||||||
|
### Essential Setup (NEVER CANCEL - Set 60+ minute timeouts)
|
||||||
|
Run these commands in order:
|
||||||
|
- `cp .env.example .env` - Copy environment configuration
|
||||||
|
- `time docker compose up -d` - **FIRST TIME: 25+ minutes, NEVER CANCEL. Set timeout to 60+ minutes. Subsequent starts: <1 second**
|
||||||
|
- Wait 30+ seconds for services to fully initialize before testing functionality
|
||||||
|
|
||||||
|
### Development Workflow Commands
|
||||||
|
**Frontend (SvelteKit with Node.js):**
|
||||||
|
- `cd frontend && npm install` - **45+ seconds, NEVER CANCEL. Set timeout to 60+ minutes**
|
||||||
|
- `cd frontend && npm run build` - **32 seconds, set timeout to 60 seconds**
|
||||||
|
- `cd frontend && npm run dev` - Start development server (requires backend running)
|
||||||
|
- `cd frontend && npm run format` - **6 seconds** - Fix code formatting (ALWAYS run before committing)
|
||||||
|
- `cd frontend && npm run lint` - **6 seconds** - Check code formatting
|
||||||
|
- `cd frontend && npm run check` - **12 seconds** - Run Svelte type checking (3 errors, 19 warnings expected)
|
||||||
|
|
||||||
|
**Backend (Django with Python):**
|
||||||
|
- Backend development requires Docker - local Python pip install fails due to network timeouts
|
||||||
|
- `docker compose exec server python3 manage.py test` - **7 seconds** - Run tests (2/3 tests fail, this is expected)
|
||||||
|
- `docker compose exec server python3 manage.py help` - View Django commands
|
||||||
|
- `docker compose exec server python3 manage.py migrate` - Run database migrations
|
||||||
|
|
||||||
|
**Full Application:**
|
||||||
|
- Frontend runs on: http://localhost:8015
|
||||||
|
- Backend API runs on: http://localhost:8016
|
||||||
|
- Default admin credentials: admin/admin (from .env file)
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
### MANDATORY End-to-End Testing
|
||||||
|
**ALWAYS manually validate any new code by running through complete user scenarios:**
|
||||||
|
1. **ALWAYS run the bootstrapping steps first** (copy .env, docker compose up)
|
||||||
|
2. **Navigate to http://localhost:8015** - Verify homepage loads correctly
|
||||||
|
3. **Test basic functionality** - Homepage should display travel companion interface
|
||||||
|
4. **CRITICAL**: Some login/navigation may fail due to frontend-backend communication issues in development Docker setup. This is expected.
|
||||||
|
|
||||||
|
### Pre-Commit Validation (ALWAYS run before committing)
|
||||||
|
**ALWAYS run these commands to ensure CI will pass:**
|
||||||
|
- `cd frontend && npm run format` - **6 seconds** - Fix formatting issues
|
||||||
|
- `cd frontend && npm run lint` - **6 seconds** - Verify formatting is correct (should pass after format)
|
||||||
|
- `cd frontend && npm run check` - **12 seconds** - Type checking (some warnings expected)
|
||||||
|
- `cd frontend && npm run build` - **32 seconds** - Verify build succeeds
|
||||||
|
|
||||||
|
## Critical Development Notes
|
||||||
|
|
||||||
|
### Configuration Issues
|
||||||
|
- **KNOWN ISSUE**: Docker development setup has frontend-backend communication problems
|
||||||
|
- The frontend may display "500: Internal Error" when navigating beyond homepage
|
||||||
|
- For working application, use production Docker setup or modify `PUBLIC_SERVER_URL` in .env
|
||||||
|
- **DO NOT attempt to fix these configuration issues** - focus on code changes only
|
||||||
|
|
||||||
|
### Docker vs Local Development
|
||||||
|
- **PRIMARY METHOD**: Use Docker for all development (`docker compose up -d`)
|
||||||
|
- **AVOID**: Local Python development (pip install fails with network timeouts)
|
||||||
|
- **AVOID**: Trying to run backend outside Docker (requires complex GDAL/PostGIS setup)
|
||||||
|
|
||||||
|
### Expected Test Failures
|
||||||
|
- Frontend check: 3 errors and 19 warnings expected (accessibility and TypeScript issues)
|
||||||
|
- Backend tests: 2 out of 3 Django tests fail (API endpoint issues) - **DO NOT fix unrelated test failures**
|
||||||
|
|
||||||
|
### Build Timing (NEVER CANCEL)
|
||||||
|
- **Docker first startup**: 25+ minutes (image downloads)
|
||||||
|
- **Docker subsequent startups**: <1 second (images cached)
|
||||||
|
- **Frontend npm install**: 45 seconds
|
||||||
|
- **Frontend build**: 32 seconds
|
||||||
|
- **Tests and checks**: 6-12 seconds each
|
||||||
|
|
||||||
|
## Common Tasks
|
||||||
|
|
||||||
|
### Repository Structure
|
||||||
|
```
|
||||||
|
AdventureLog/
|
||||||
|
├── frontend/ # SvelteKit web application
|
||||||
|
│ ├── src/ # Source code
|
||||||
|
│ ├── package.json # Node.js dependencies and scripts
|
||||||
|
│ └── static/ # Static assets
|
||||||
|
├── backend/ # Django API server
|
||||||
|
│ ├── server/ # Django project
|
||||||
|
│ ├── Dockerfile # Backend container
|
||||||
|
│ └── requirements.txt # Python dependencies
|
||||||
|
├── docker-compose.yml # Main deployment configuration
|
||||||
|
├── .env.example # Environment template
|
||||||
|
└── install_adventurelog.sh # Production installer
|
||||||
|
```
|
||||||
|
|
||||||
|
### Key Scripts and Files
|
||||||
|
- `frontend/package.json` - Contains all frontend build scripts
|
||||||
|
- `backend/server/manage.py` - Django management commands
|
||||||
|
- `docker-compose.yml` - Service definitions (frontend:8015, backend:8016, db:5432)
|
||||||
|
- `.env` - Environment configuration (copy from .env.example)
|
||||||
|
|
||||||
|
### Development vs Production
|
||||||
|
- **Development**: Use `docker compose up -d` with .env file
|
||||||
|
- **Production**: Use `./install_adventurelog.sh` installer script
|
||||||
|
- **CI/CD**: GitHub Actions in `.github/workflows/` handle testing and deployment
|
||||||
|
|
||||||
|
### Common Error Patterns
|
||||||
|
- **"500: Internal Error"**: Frontend-backend communication issue (expected in dev setup)
|
||||||
|
- **"Cannot connect to backend"**: Backend not started or wrong URL configuration
|
||||||
|
- **"pip install timeout"**: Network issue, use Docker instead of local Python
|
||||||
|
- **"Frontend build fails"**: Run `npm install` first, check Node.js version compatibility
|
||||||
|
|
||||||
|
## Troubleshooting Commands
|
||||||
|
```bash
|
||||||
|
# Check Docker services status
|
||||||
|
docker compose ps
|
||||||
|
|
||||||
|
# View service logs
|
||||||
|
docker compose logs web # Frontend logs
|
||||||
|
docker compose logs server # Backend logs
|
||||||
|
docker compose logs db # Database logs
|
||||||
|
|
||||||
|
# Restart specific service
|
||||||
|
docker compose restart web # Frontend only
|
||||||
|
docker compose restart server # Backend only
|
||||||
|
|
||||||
|
# Complete restart
|
||||||
|
docker compose down && docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
## Important File Locations
|
||||||
|
- Configuration: `.env` file in repository root
|
||||||
|
- Frontend source: `frontend/src/`
|
||||||
|
- Backend source: `backend/server/`
|
||||||
|
- Static assets: `frontend/static/`
|
||||||
|
- Database: Handled by Docker PostgreSQL container
|
||||||
|
- Documentation: `documentation/` folder
|
||||||
29
.github/workflows/frontend-beta.yml
vendored
29
.github/workflows/frontend-beta.yml
vendored
@@ -19,17 +19,17 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Login to GitHub Container Registry
|
- name: Login to GitHub Container Registry
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v2
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.ACCESS_TOKEN }}
|
password: ${{ secrets.ACCESS_TOKEN }}
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v2
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
@@ -40,11 +40,20 @@ jobs:
|
|||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
- name: set lower case owner name
|
- name: Build and push beta Docker image with BuildKit cache
|
||||||
run: |
|
uses: docker/build-push-action@v5
|
||||||
echo "REPO_OWNER=${OWNER,,}" >>${GITHUB_ENV}
|
with:
|
||||||
|
context: ./frontend
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:beta
|
||||||
|
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:beta
|
||||||
|
cache-from: |
|
||||||
|
type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:buildcache
|
||||||
|
type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: |
|
||||||
|
type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:buildcache,mode=max
|
||||||
|
type=local,dest=/tmp/.buildx-cache,mode=max
|
||||||
env:
|
env:
|
||||||
OWNER: "${{ github.repository_owner }}"
|
DOCKER_BUILDKIT: 1
|
||||||
|
|
||||||
- name: Build Docker images
|
|
||||||
run: docker buildx build --platform linux/amd64,linux/arm64 --push -t ghcr.io/$REPO_OWNER/$IMAGE_NAME:beta -t ${{ secrets.DOCKERHUB_USERNAME }}/$IMAGE_NAME:beta ./frontend
|
|
||||||
|
|||||||
29
.github/workflows/frontend-latest.yml
vendored
29
.github/workflows/frontend-latest.yml
vendored
@@ -19,17 +19,17 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Login to GitHub Container Registry
|
- name: Login to GitHub Container Registry
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v2
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.ACCESS_TOKEN }}
|
password: ${{ secrets.ACCESS_TOKEN }}
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v2
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
@@ -40,11 +40,20 @@ jobs:
|
|||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
- name: set lower case owner name
|
- name: Build and push latest Docker image with BuildKit cache
|
||||||
run: |
|
uses: docker/build-push-action@v5
|
||||||
echo "REPO_OWNER=${OWNER,,}" >>${GITHUB_ENV}
|
with:
|
||||||
|
context: ./frontend
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest
|
||||||
|
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest
|
||||||
|
cache-from: |
|
||||||
|
type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:buildcache
|
||||||
|
type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: |
|
||||||
|
type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:buildcache,mode=max
|
||||||
|
type=local,dest=/tmp/.buildx-cache,mode=max
|
||||||
env:
|
env:
|
||||||
OWNER: "${{ github.repository_owner }}"
|
DOCKER_BUILDKIT: 1
|
||||||
|
|
||||||
- name: Build Docker images
|
|
||||||
run: docker buildx build --platform linux/amd64,linux/arm64 --push -t ghcr.io/$REPO_OWNER/$IMAGE_NAME:latest -t ${{ secrets.DOCKERHUB_USERNAME }}/$IMAGE_NAME:latest ./frontend
|
|
||||||
|
|||||||
31
.github/workflows/frontend-release.yml
vendored
31
.github/workflows/frontend-release.yml
vendored
@@ -16,17 +16,17 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
- name: Login to GitHub Container Registry
|
- name: Login to GitHub Container Registry
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v2
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.ACCESS_TOKEN }}
|
password: ${{ secrets.ACCESS_TOKEN }}
|
||||||
|
|
||||||
- name: Login to Docker Hub
|
- name: Login to Docker Hub
|
||||||
uses: docker/login-action@v1
|
uses: docker/login-action@v2
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||||
@@ -37,11 +37,22 @@ jobs:
|
|||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
- name: set lower case owner name
|
- name: Build and push release Docker image with BuildKit cache
|
||||||
run: |
|
uses: docker/build-push-action@v5
|
||||||
echo "REPO_OWNER=${OWNER,,}" >>${GITHUB_ENV}
|
with:
|
||||||
|
context: ./frontend
|
||||||
|
platforms: linux/amd64,linux/arm64
|
||||||
|
push: true
|
||||||
|
tags: |
|
||||||
|
ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:${{ github.event.release.tag_name }}
|
||||||
|
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:${{ github.event.release.tag_name }}
|
||||||
|
ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:latest
|
||||||
|
${{ secrets.DOCKERHUB_USERNAME }}/${{ env.IMAGE_NAME }}:latest
|
||||||
|
cache-from: |
|
||||||
|
type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:buildcache
|
||||||
|
type=local,src=/tmp/.buildx-cache
|
||||||
|
cache-to: |
|
||||||
|
type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ env.IMAGE_NAME }}:buildcache,mode=max
|
||||||
|
type=local,dest=/tmp/.buildx-cache,mode=max
|
||||||
env:
|
env:
|
||||||
OWNER: "${{ github.repository_owner }}"
|
DOCKER_BUILDKIT: 1
|
||||||
|
|
||||||
- name: Build Docker images
|
|
||||||
run: docker buildx build --platform linux/amd64,linux/arm64 --push -t ghcr.io/$REPO_OWNER/$IMAGE_NAME:${{ github.event.release.tag_name }} -t ${{ secrets.DOCKERHUB_USERNAME }}/$IMAGE_NAME:${{ github.event.release.tag_name }} ./frontend
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
Django==5.2.2
|
Django==5.2.6
|
||||||
djangorestframework>=3.15.2
|
djangorestframework>=3.15.2
|
||||||
django-allauth==0.63.3
|
django-allauth==0.63.3
|
||||||
drf-yasg==1.21.4
|
drf-yasg==1.21.4
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
export let appVersion = 'v0.11.0';
|
export let appVersion = 'v0.11.0-main-09172025';
|
||||||
export let versionChangelog = 'https://github.com/seanmorley15/AdventureLog/releases/tag/v0.11.0';
|
export let versionChangelog = 'https://github.com/seanmorley15/AdventureLog/releases/tag/v0.11.0';
|
||||||
export let appTitle = 'AdventureLog';
|
export let appTitle = 'AdventureLog';
|
||||||
export let copyrightYear = '2023-2025';
|
export let copyrightYear = '2023-2025';
|
||||||
|
|||||||
@@ -696,7 +696,7 @@
|
|||||||
"verify_setup": "Verifizierung des Setup",
|
"verify_setup": "Verifizierung des Setup",
|
||||||
"whats_included": "Was ist enthalten",
|
"whats_included": "Was ist enthalten",
|
||||||
"backup_your_data": "Sichern Sie Ihre Daten",
|
"backup_your_data": "Sichern Sie Ihre Daten",
|
||||||
"backup_your_data_desc": "Laden Sie eine vollständige Sicherung Ihrer Kontodaten, einschließlich Standorte, Sammlungen, Medien und Besuchen, herunter.",
|
"backup_your_data_desc": "Laden Sie eine vollständige Sicherung Ihrer Kontodaten, einschließlich Standorte, Sammlungen, Medien und Besuche, herunter.",
|
||||||
"data_override_acknowledge": "Ich bestätige, dass dies alle meine vorhandenen Daten überschreibt",
|
"data_override_acknowledge": "Ich bestätige, dass dies alle meine vorhandenen Daten überschreibt",
|
||||||
"data_override_acknowledge_desc": "Diese Aktion ist irreversibel und ersetzt alle Standorte, Sammlungen und Besuche in Ihrem Konto.",
|
"data_override_acknowledge_desc": "Diese Aktion ist irreversibel und ersetzt alle Standorte, Sammlungen und Besuche in Ihrem Konto.",
|
||||||
"data_override_warning": "Daten-Überschreibungs-Warnung",
|
"data_override_warning": "Daten-Überschreibungs-Warnung",
|
||||||
|
|||||||
@@ -95,7 +95,7 @@
|
|||||||
"filter": "Filtrar",
|
"filter": "Filtrar",
|
||||||
"name": "Nombre",
|
"name": "Nombre",
|
||||||
"order_by": "Ordenar por",
|
"order_by": "Ordenar por",
|
||||||
"order_direction": "Dirección del pedido",
|
"order_direction": "Dirección de ordenamiento",
|
||||||
"rating": "Clasificación",
|
"rating": "Clasificación",
|
||||||
"sort": "Ordenar",
|
"sort": "Ordenar",
|
||||||
"sources": "Fuentes",
|
"sources": "Fuentes",
|
||||||
@@ -284,8 +284,8 @@
|
|||||||
"loading_adventures": "Cargando aventuras ...",
|
"loading_adventures": "Cargando aventuras ...",
|
||||||
"name_location": "Nombre, ubicación",
|
"name_location": "Nombre, ubicación",
|
||||||
"collection_contents": "Contenido de la colección",
|
"collection_contents": "Contenido de la colección",
|
||||||
"check_in": "Registrarse",
|
"check_in": "Registro",
|
||||||
"check_out": "Verificar",
|
"check_out": "Salida",
|
||||||
"collection_link_location_error": "Error de vinculación de la ubicación para la recopilación",
|
"collection_link_location_error": "Error de vinculación de la ubicación para la recopilación",
|
||||||
"collection_link_location_success": "¡Ubicación vinculada a la colección con éxito!",
|
"collection_link_location_success": "¡Ubicación vinculada a la colección con éxito!",
|
||||||
"collection_locations": "Incluir ubicaciones de colección",
|
"collection_locations": "Incluir ubicaciones de colección",
|
||||||
@@ -429,7 +429,7 @@
|
|||||||
"sport_type_placeholder": "Sendero",
|
"sport_type_placeholder": "Sendero",
|
||||||
"start_lat": "Iniciar latitud",
|
"start_lat": "Iniciar latitud",
|
||||||
"start_lng": "Iniciar longitud",
|
"start_lng": "Iniciar longitud",
|
||||||
"strava_activity_ready": "Strava Activity Ready",
|
"strava_activity_ready": "Actividad de Strava lista",
|
||||||
"trails": "Senderos",
|
"trails": "Senderos",
|
||||||
"upload_activity": "Carga de actividad",
|
"upload_activity": "Carga de actividad",
|
||||||
"upload_gpx_file": "Sube el archivo GPX que se acaba de descargar para completar la importación Strava",
|
"upload_gpx_file": "Sube el archivo GPX que se acaba de descargar para completar la importación Strava",
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
"source_code": "Källkod",
|
"source_code": "Källkod",
|
||||||
"generic_attributions": "Logga in på AdventureLog för att visa attribut för aktiverade integrationer och tjänster.",
|
"generic_attributions": "Logga in på AdventureLog för att visa attribut för aktiverade integrationer och tjänster.",
|
||||||
"attributions": "Tillskrivningar",
|
"attributions": "Tillskrivningar",
|
||||||
"developer": "Framkallare",
|
"developer": "Utvecklare",
|
||||||
"license_info": "Licens",
|
"license_info": "Licens",
|
||||||
"sponsor": "Sponsor",
|
"sponsor": "Sponsor",
|
||||||
"thank_you": "Tack för att du använder AdventureLog!",
|
"thank_you": "Tack för att du använder AdventureLog!",
|
||||||
@@ -20,8 +20,7 @@
|
|||||||
"view_license": "Visa licens"
|
"view_license": "Visa licens"
|
||||||
},
|
},
|
||||||
"adventures": {
|
"adventures": {
|
||||||
"activities": {},
|
"add_to_collection": "Lägg till i samling",
|
||||||
"add_to_collection": "Lägg till i samlingen",
|
|
||||||
"adventure": "Äventyr",
|
"adventure": "Äventyr",
|
||||||
"archive": "Arkiv",
|
"archive": "Arkiv",
|
||||||
"archived": "Arkiverad",
|
"archived": "Arkiverad",
|
||||||
@@ -51,7 +50,7 @@
|
|||||||
"my_collections": "Mina samlingar",
|
"my_collections": "Mina samlingar",
|
||||||
"name": "Namn",
|
"name": "Namn",
|
||||||
"no_image_found": "Ingen bild hittades",
|
"no_image_found": "Ingen bild hittades",
|
||||||
"open_details": "Öppna Detaljer",
|
"open_details": "Öppna detaljer",
|
||||||
"open_filters": "Öppna filter",
|
"open_filters": "Öppna filter",
|
||||||
"order_by": "Sortera efter",
|
"order_by": "Sortera efter",
|
||||||
"order_direction": "Sorteringsriktning",
|
"order_direction": "Sorteringsriktning",
|
||||||
@@ -59,7 +58,7 @@
|
|||||||
"private": "Privat",
|
"private": "Privat",
|
||||||
"public": "Offentlig",
|
"public": "Offentlig",
|
||||||
"rating": "Betyg",
|
"rating": "Betyg",
|
||||||
"remove_from_collection": "Ta bort från samlingen",
|
"remove_from_collection": "Ta bort från samling",
|
||||||
"share": "Dela",
|
"share": "Dela",
|
||||||
"sort": "Sortera",
|
"sort": "Sortera",
|
||||||
"sources": "Källor",
|
"sources": "Källor",
|
||||||
@@ -78,17 +77,17 @@
|
|||||||
"wiki_image_error": "Det gick inte att hämta bilden från Wikipedia",
|
"wiki_image_error": "Det gick inte att hämta bilden från Wikipedia",
|
||||||
"actions": "Åtgärder",
|
"actions": "Åtgärder",
|
||||||
"activity_types": "Aktivitetstyper",
|
"activity_types": "Aktivitetstyper",
|
||||||
"add": "Tillägga",
|
"add": "Lägg till",
|
||||||
"add_notes": "Lägg till anteckningar",
|
"add_notes": "Lägg till anteckningar",
|
||||||
"basic_information": "Grundläggande information",
|
"basic_information": "Grundläggande information",
|
||||||
"category": "Kategori",
|
"category": "Kategori",
|
||||||
"clear_map": "Rensa karta",
|
"clear_map": "Rensa karta",
|
||||||
"copy_link": "Kopiera länk",
|
"copy_link": "Kopiera länk",
|
||||||
"date_constrain": "Begränsa till insamlingsdatum",
|
"date_constrain": "Begränsa till datum i samlingen",
|
||||||
"description": "Beskrivning",
|
"description": "Beskrivning",
|
||||||
"end_date": "Slutdatum",
|
"end_date": "Slutdatum",
|
||||||
"fetch_image": "Hämta bild",
|
"fetch_image": "Hämta bild",
|
||||||
"generate_desc": "Skapa beskrivning",
|
"generate_desc": "Generera beskrivning",
|
||||||
"image": "Bild",
|
"image": "Bild",
|
||||||
"image_fetch_failed": "Det gick inte att hämta bilden",
|
"image_fetch_failed": "Det gick inte att hämta bilden",
|
||||||
"link": "Länk",
|
"link": "Länk",
|
||||||
@@ -100,7 +99,7 @@
|
|||||||
"no_location": "Vänligen ange en plats",
|
"no_location": "Vänligen ange en plats",
|
||||||
"no_results": "Inga resultat hittades",
|
"no_results": "Inga resultat hittades",
|
||||||
"remove": "Ta bort",
|
"remove": "Ta bort",
|
||||||
"save_next": "Spara",
|
"save_next": "Spara & gå vidare",
|
||||||
"search_for_location": "Sök efter en plats",
|
"search_for_location": "Sök efter en plats",
|
||||||
"search_results": "Sökresultat",
|
"search_results": "Sökresultat",
|
||||||
"see_adventures": "Se äventyr",
|
"see_adventures": "Se äventyr",
|
||||||
@@ -114,7 +113,7 @@
|
|||||||
"mark_visited": "Markera som besökt",
|
"mark_visited": "Markera som besökt",
|
||||||
"my_adventures": "Mina äventyr",
|
"my_adventures": "Mina äventyr",
|
||||||
"no_adventures_found": "Inga äventyr hittades",
|
"no_adventures_found": "Inga äventyr hittades",
|
||||||
"no_linkable_adventures": "Inga äventyr hittades som kan kopplas till denna samling.",
|
"no_linkable_adventures": "Inga äventyr hittades som kan länkas till den här samlingen.",
|
||||||
"not_visited": "Ej besökta",
|
"not_visited": "Ej besökta",
|
||||||
"regions_updated": "regioner uppdaterade",
|
"regions_updated": "regioner uppdaterade",
|
||||||
"update_visited_regions": "Uppdatera besökta regioner",
|
"update_visited_regions": "Uppdatera besökta regioner",
|
||||||
@@ -154,26 +153,26 @@
|
|||||||
"download_calendar": "Ladda ner kalender",
|
"download_calendar": "Ladda ner kalender",
|
||||||
"md_instructions": "Skriv din avskrivning här...",
|
"md_instructions": "Skriv din avskrivning här...",
|
||||||
"preview": "Förhandsvisning",
|
"preview": "Förhandsvisning",
|
||||||
"checklist_delete_confirm": "Är du säker på att du vill ta bort den här checklistan? \nDenna åtgärd kan inte ångras.",
|
"checklist_delete_confirm": "Är du säker på att du vill ta bort den här checklistan? Denna åtgärd kan inte ångras.",
|
||||||
"clear_location": "Rensa plats",
|
"clear_location": "Rensa plats",
|
||||||
"date_information": "Datuminformation",
|
"date_information": "Datuminformation",
|
||||||
"delete_checklist": "Ta bort checklista",
|
"delete_checklist": "Ta bort checklista",
|
||||||
"delete_note": "Ta bort anteckning",
|
"delete_note": "Ta bort anteckning",
|
||||||
"delete_transportation": "Ta bort Transport",
|
"delete_transportation": "Ta bort transport",
|
||||||
"end": "Avsluta",
|
"end": "Avsluta",
|
||||||
"ending_airport": "Slutar flygplats",
|
"ending_airport": "Slutar flygplats",
|
||||||
"flight_information": "Flyginformation",
|
"flight_information": "Flyginformation",
|
||||||
"from": "Från",
|
"from": "Från",
|
||||||
"no_location_found": "Ingen plats hittades",
|
"no_location_found": "Ingen plats hittades",
|
||||||
"note_delete_confirm": "Är du säker på att du vill ta bort den här anteckningen? \nDenna åtgärd kan inte ångras.",
|
"note_delete_confirm": "Är du säker på att du vill ta bort den här anteckningen? Denna åtgärd kan inte ångras.",
|
||||||
"out_of_range": "Inte inom resplanens datumintervall",
|
"out_of_range": "Inte inom resplanens datumintervall",
|
||||||
"start": "Start",
|
"start": "Start",
|
||||||
"starting_airport": "Startar flygplats",
|
"starting_airport": "Startar flygplats",
|
||||||
"to": "Till",
|
"to": "Till",
|
||||||
"transportation_delete_confirm": "Är du säker på att du vill ta bort denna transport? \nDenna åtgärd kan inte ångras.",
|
"transportation_delete_confirm": "Är du säker på att du vill ta bort den här transporten? Denna åtgärd kan inte ångras.",
|
||||||
"cities_updated": "städer uppdaterade",
|
"cities_updated": "städer uppdaterade",
|
||||||
"finding_recommendations": "Upptäck dolda pärlor för ditt nästa äventyr",
|
"finding_recommendations": "Upptäck dolda pärlor för ditt nästa äventyr",
|
||||||
"attachment": "Fastsättning",
|
"attachment": "Bilaga",
|
||||||
"attachment_delete_success": "Bilagan har raderats!",
|
"attachment_delete_success": "Bilagan har raderats!",
|
||||||
"attachment_name": "Bilagans namn",
|
"attachment_name": "Bilagans namn",
|
||||||
"attachment_update_error": "Fel vid uppdatering av bilaga",
|
"attachment_update_error": "Fel vid uppdatering av bilaga",
|
||||||
@@ -185,18 +184,18 @@
|
|||||||
"images": "Bilder",
|
"images": "Bilder",
|
||||||
"upload": "Ladda upp",
|
"upload": "Ladda upp",
|
||||||
"city": "Stad",
|
"city": "Stad",
|
||||||
"delete_lodging": "Ta bort logi",
|
"delete_lodging": "Ta bort boende",
|
||||||
"display_name": "Visningsnamn",
|
"display_name": "Visningsnamn",
|
||||||
"location_details": "Platsinformation",
|
"location_details": "Platsinformation",
|
||||||
"lodging": "Logi",
|
"lodging": "Logi",
|
||||||
"lodging_delete_confirm": "Är du säker på att du vill ta bort den här logiplatsen? \nDenna åtgärd kan inte ångras.",
|
"lodging_delete_confirm": "Är du säker på att du vill ta bort det här boendet? Denna åtgärd kan inte ångras.",
|
||||||
"lodging_information": "Logi information",
|
"lodging_information": "Logi information",
|
||||||
"price": "Pris",
|
"price": "Pris",
|
||||||
"region": "Område",
|
"region": "Område",
|
||||||
"reservation_number": "Bokningsnummer",
|
"reservation_number": "Bokningsnummer",
|
||||||
"open_in_maps": "Kappas in",
|
"open_in_maps": "Öppna i Maps",
|
||||||
"all_day": "Hela dagen",
|
"all_day": "Hela dagen",
|
||||||
"collection_no_start_end_date": "Att lägga till ett start- och slutdatum till samlingen kommer att låsa upp planeringsfunktioner för resplan på insamlingssidan.",
|
"collection_no_start_end_date": "Att lägga till ett start- och slutdatum till samlingen kommer att låsa upp planeringsfunktioner för resplan på samlingssidan.",
|
||||||
"date_itinerary": "Datum resplan",
|
"date_itinerary": "Datum resplan",
|
||||||
"no_ordered_items": "Lägg till objekt med datum i samlingen för att se dem här.",
|
"no_ordered_items": "Lägg till objekt med datum i samlingen för att se dem här.",
|
||||||
"ordered_itinerary": "Beställd resplan",
|
"ordered_itinerary": "Beställd resplan",
|
||||||
@@ -208,7 +207,7 @@
|
|||||||
"arrival_date": "Ankomstdatum",
|
"arrival_date": "Ankomstdatum",
|
||||||
"departure_date": "Avgångsdatum",
|
"departure_date": "Avgångsdatum",
|
||||||
"coordinates": "Koordinater",
|
"coordinates": "Koordinater",
|
||||||
"copy_coordinates": "Kopieringskoordinater",
|
"copy_coordinates": "Kopiera koordinater",
|
||||||
"sun_times": "Soltider",
|
"sun_times": "Soltider",
|
||||||
"sunrise": "Soluppgång",
|
"sunrise": "Soluppgång",
|
||||||
"sunset": "Solnedgång",
|
"sunset": "Solnedgång",
|
||||||
@@ -218,7 +217,7 @@
|
|||||||
"itinerary": "Resväg",
|
"itinerary": "Resväg",
|
||||||
"joined": "Gick med i",
|
"joined": "Gick med i",
|
||||||
"view_profile": "Visa profil",
|
"view_profile": "Visa profil",
|
||||||
"share_collection": "Dela denna samling!",
|
"share_collection": "Dela den här samlingen!",
|
||||||
"filters_and_sort": "Filter",
|
"filters_and_sort": "Filter",
|
||||||
"filters_and_stats": "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.",
|
"no_adventures_message": "Börja dokumentera dina äventyr och planera nya. \nVarje resa har en historia som är värd att berätta.",
|
||||||
@@ -234,32 +233,32 @@
|
|||||||
"collection_contents": "Insamlingsinnehåll",
|
"collection_contents": "Insamlingsinnehåll",
|
||||||
"check_in": "Checka in",
|
"check_in": "Checka in",
|
||||||
"check_out": "Checka ut",
|
"check_out": "Checka ut",
|
||||||
"collection_link_location_error": "Fel som länkar plats till insamling",
|
"collection_link_location_error": "Ett fel uppstod när platsen länkades till samlingen",
|
||||||
"collection_link_location_success": "Plats kopplad till samling framgångsrikt!",
|
"collection_link_location_success": "Plats länkad till samling!",
|
||||||
"collection_locations": "Inkludera insamlingsplatser",
|
"collection_locations": "Inkludera samlingsplatser",
|
||||||
"collection_remove_location_error": "Fel att ta bort platsen från samlingen",
|
"collection_remove_location_error": "Ett fel uppstod när platsen togs bort från samlingen",
|
||||||
"collection_remove_location_success": "Plats tas bort från samlingen framgångsrikt!",
|
"collection_remove_location_success": "Plats togs bort från samlingen!",
|
||||||
"create_location": "Skapa plats",
|
"create_location": "Skapa plats",
|
||||||
"delete_location": "Radera plats",
|
"delete_location": "Radera plats",
|
||||||
"edit_location": "Redigera plats",
|
"edit_location": "Redigera plats",
|
||||||
"location_create_error": "Det gick inte att skapa plats",
|
"location_create_error": "Det gick inte att skapa plats",
|
||||||
"location_created": "Plats skapad",
|
"location_created": "Plats skapad",
|
||||||
"location_delete_confirm": "Är du säker på att du vill ta bort den här platsen? \nDenna åtgärd kan inte ångras.",
|
"location_delete_confirm": "Är du säker på att du vill ta bort den här platsen? Denna åtgärd kan inte ångras.",
|
||||||
"location_delete_success": "Plats raderas framgångsrikt!",
|
"location_delete_success": "Plats raderas framgångsrikt!",
|
||||||
"location_not_found": "Plats hittades inte",
|
"location_not_found": "Plats hittades inte",
|
||||||
"location_not_found_desc": "Platsen du letade efter kunde inte hittas. \nFörsök med en annan plats eller kom tillbaka senare.",
|
"location_not_found_desc": "Platsen du letade efter kunde inte hittas. Vänligen pröva en annan plats eller försök igen senare.",
|
||||||
"location_update_error": "Det gick inte att uppdatera platsen",
|
"location_update_error": "Det gick inte att uppdatera platsen",
|
||||||
"location_updated": "Plats uppdaterad",
|
"location_updated": "Plats uppdaterad",
|
||||||
"new_location": "Ny plats",
|
"new_location": "Ny plats",
|
||||||
"no_collections_to_add_location": "Inga samlingar som hittats för att lägga till den här platsen till.",
|
"no_collections_to_add_location": "Inga samlingar som hittats för att lägga till den här platsen till.",
|
||||||
"no_locations_to_recommendations": "Inga platser hittades. \nLägg till minst en plats för att få rekommendationer.",
|
"no_locations_to_recommendations": "Inga platser hittades. \nLägg till minst en plats för att få rekommendationer.",
|
||||||
"public_location": "Allmän plats",
|
"public_location": "Offentlig plats",
|
||||||
"share_location": "Dela den här platsen!",
|
"share_location": "Dela den här platsen!",
|
||||||
"visit_calendar": "Besök kalendern",
|
"visit_calendar": "Besök kalendern",
|
||||||
"wiki_location_desc": "Drar utdrag från Wikipedia -artikeln som matchar namnet på platsen.",
|
"wiki_location_desc": "Hämtar utdrag från Wikipedia-artikeln som matchar namnet på platsen.",
|
||||||
"will_be_marked_location": "kommer att markeras som besöks när platsen har sparats.",
|
"will_be_marked_location": "kommer att markeras som besöks när platsen har sparats.",
|
||||||
"no_locations_found": "Inga platser hittades",
|
"no_locations_found": "Inga platser hittades",
|
||||||
"image_modal_navigate": "Använd pilnycklar eller klicka för att navigera",
|
"image_modal_navigate": "Använd piltangenterna eller klicka för att navigera",
|
||||||
"details": "Information",
|
"details": "Information",
|
||||||
"leave": "Lämna",
|
"leave": "Lämna",
|
||||||
"leave_collection": "Lämna samlingen",
|
"leave_collection": "Lämna samlingen",
|
||||||
@@ -438,7 +437,7 @@
|
|||||||
"feature_3_desc": "Se dina resor över hela världen med en interaktiv karta och utforska nya destinationer.",
|
"feature_3_desc": "Se dina resor över hela världen med en interaktiv karta och utforska nya destinationer.",
|
||||||
"go_to": "Gå till AdventureLog",
|
"go_to": "Gå till AdventureLog",
|
||||||
"hero_1": "Upptäck världens mest spännande äventyr",
|
"hero_1": "Upptäck världens mest spännande äventyr",
|
||||||
"hero_2": "Upptäck och planera ditt nästa äventyr med AdventureLog. \nUtforska hisnande destinationer, skapa anpassade resplaner och håll kontakten när du är på språng.",
|
"hero_2": "Upptäck och planera ditt nästa äventyr med AdventureLog. Utforska 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",
|
"explore_world": "Utforska världen",
|
||||||
"latest_travel_experiences": "Dina senaste reseupplevelser",
|
"latest_travel_experiences": "Dina senaste reseupplevelser",
|
||||||
@@ -453,7 +452,7 @@
|
|||||||
"greeting": "Hej",
|
"greeting": "Hej",
|
||||||
"logout": "Logga ut",
|
"logout": "Logga ut",
|
||||||
"map": "Karta",
|
"map": "Karta",
|
||||||
"my_adventures": "Mina äventyr",
|
"my_adventures": "Mina Äventyr",
|
||||||
"profile": "Profil",
|
"profile": "Profil",
|
||||||
"search": "Sök",
|
"search": "Sök",
|
||||||
"settings": "Inställningar",
|
"settings": "Inställningar",
|
||||||
@@ -464,7 +463,7 @@
|
|||||||
"aestheticLight": "Estetisk ljus",
|
"aestheticLight": "Estetisk ljus",
|
||||||
"aqua": "Vatten",
|
"aqua": "Vatten",
|
||||||
"dark": "Mörk",
|
"dark": "Mörk",
|
||||||
"dim": "Dämpa",
|
"dim": "Dämpad",
|
||||||
"forest": "Skog",
|
"forest": "Skog",
|
||||||
"light": "Ljus",
|
"light": "Ljus",
|
||||||
"night": "Natt",
|
"night": "Natt",
|
||||||
@@ -472,7 +471,7 @@
|
|||||||
},
|
},
|
||||||
"users": "Användare",
|
"users": "Användare",
|
||||||
"worldtravel": "Världsresor",
|
"worldtravel": "Världsresor",
|
||||||
"my_tags": "Mina taggar",
|
"my_tags": "Mina Taggar",
|
||||||
"tag": "Tagg",
|
"tag": "Tagg",
|
||||||
"language_selection": "Språk",
|
"language_selection": "Språk",
|
||||||
"support": "Support",
|
"support": "Support",
|
||||||
@@ -838,7 +837,6 @@
|
|||||||
"show_activities": "Visningsaktiviteter",
|
"show_activities": "Visningsaktiviteter",
|
||||||
"show_visited_cities": "Besökta städer"
|
"show_visited_cities": "Besökta städer"
|
||||||
},
|
},
|
||||||
"languages": {},
|
|
||||||
"share": {
|
"share": {
|
||||||
"no_users_shared": "Inga användare delas med",
|
"no_users_shared": "Inga användare delas med",
|
||||||
"not_shared_with": "Inte delad med",
|
"not_shared_with": "Inte delad med",
|
||||||
|
|||||||
Reference in New Issue
Block a user