UI and Translation Improvements (#889)
* Update translations from Weblate * Translated using Weblate (German) Currently translated at 100.0% (979 of 979 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/de/ * Translated using Weblate (Slovak) Currently translated at 100.0% (979 of 979 strings) Translation: AdventureLog/Web App Translate-URL: https://hosted.weblate.org/projects/adventurelog/web-app/sk/ * Added translation using Weblate (Ukrainian) * Bump version to 0.11.0 and enhance hero section responsiveness in adventure details * Update Django version to 5.2.7 in requirements * feature added hu translation (#885) * feature added hu translation * Update dependencies and add Hungarian translation support --------- Co-authored-by: Petrekanics Máté <mate.petrekanics@webcapital.hu> Co-authored-by: Sean Morley <mail@seanmorley.com> * Fix "back" FR traduction (#858) Co-authored-by: Sean Morley <98704938+seanmorley15@users.noreply.github.com> --------- Co-authored-by: Alex <div@alexe.at> Co-authored-by: fantastron27 <fantastron27@gmail.com> Co-authored-by: Максим Горпиніч <gorpinicmaksim0@gmail.com> Co-authored-by: petrekanics <75931275+petrekanics@users.noreply.github.com> Co-authored-by: Petrekanics Máté <mate.petrekanics@webcapital.hu> Co-authored-by: Sebastien Laithier <kirby@hyrule.ovh>
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
Django==5.2.6
|
Django==5.2.7
|
||||||
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,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "adventurelog-frontend",
|
"name": "adventurelog-frontend",
|
||||||
"version": "0.10.0",
|
"version": "0.11.0",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"dev": "vite dev",
|
"dev": "vite dev",
|
||||||
"django": "cd .. && cd backend/server && python3 manage.py runserver",
|
"django": "cd .. && cd backend/server && python3 manage.py runserver",
|
||||||
@@ -12,43 +12,43 @@
|
|||||||
"format": "prettier --write ."
|
"format": "prettier --write ."
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@event-calendar/core": "^3.7.1",
|
"@event-calendar/core": "^3.12.0",
|
||||||
"@event-calendar/day-grid": "^3.7.1",
|
"@event-calendar/day-grid": "^3.12.0",
|
||||||
"@event-calendar/interaction": "^3.12.0",
|
"@event-calendar/interaction": "^3.12.0",
|
||||||
"@event-calendar/time-grid": "^3.7.1",
|
"@event-calendar/time-grid": "^3.12.0",
|
||||||
"@iconify-json/mdi": "^1.1.67",
|
"@iconify-json/mdi": "^1.2.3",
|
||||||
"@sveltejs/adapter-node": "^5.2.0",
|
"@sveltejs/adapter-node": "^5.2.12",
|
||||||
"@sveltejs/adapter-vercel": "^5.4.1",
|
"@sveltejs/adapter-vercel": "^5.7.0",
|
||||||
"@sveltejs/kit": "^2.8.3",
|
"@sveltejs/kit": "^2.20.7",
|
||||||
"@sveltejs/vite-plugin-svelte": "^3.1.1",
|
"@sveltejs/vite-plugin-svelte": "^3.1.2",
|
||||||
"@tailwindcss/typography": "^0.5.13",
|
"@tailwindcss/typography": "^0.5.16",
|
||||||
"@types/node": "^22.5.4",
|
"@types/node": "^22.15.2",
|
||||||
"@types/qrcode": "^1.5.5",
|
"@types/qrcode": "^1.5.5",
|
||||||
"autoprefixer": "^10.4.19",
|
"autoprefixer": "^10.4.21",
|
||||||
"daisyui": "^4.12.6",
|
"daisyui": "^4.12.24",
|
||||||
"postcss": "^8.4.38",
|
"postcss": "^8.5.3",
|
||||||
"prettier": "^3.3.2",
|
"prettier": "^3.5.3",
|
||||||
"prettier-plugin-svelte": "^3.2.5",
|
"prettier-plugin-svelte": "^3.3.3",
|
||||||
"svelte": "^4.2.19",
|
"svelte": "^4.2.19",
|
||||||
"svelte-check": "^3.8.1",
|
"svelte-check": "^3.8.6",
|
||||||
"tailwindcss": "^3.4.4",
|
"tailwindcss": "^3.4.17",
|
||||||
"tslib": "^2.6.3",
|
"tslib": "^2.8.1",
|
||||||
"typescript": "^5.5.2",
|
"typescript": "^5.8.3",
|
||||||
"unplugin-icons": "^0.19.0",
|
"unplugin-icons": "^0.19.3",
|
||||||
"vite": "^5.4.19"
|
"vite": "^5.4.19"
|
||||||
},
|
},
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@lukulent/svelte-umami": "^0.0.3",
|
"@lukulent/svelte-umami": "^0.0.3",
|
||||||
"dompurify": "^3.2.4",
|
"dompurify": "^3.2.5",
|
||||||
"emoji-picker-element": "^1.26.0",
|
"emoji-picker-element": "^1.26.3",
|
||||||
"gsap": "^3.12.7",
|
"gsap": "^3.12.7",
|
||||||
"luxon": "^3.6.1",
|
"luxon": "^3.6.1",
|
||||||
"marked": "^15.0.4",
|
"marked": "^15.0.11",
|
||||||
"psl": "^1.15.0",
|
"psl": "^1.15.0",
|
||||||
"qrcode": "^1.5.4",
|
"qrcode": "^1.5.4",
|
||||||
"svelte-i18n": "^4.0.1",
|
"svelte-i18n": "^4.0.1",
|
||||||
"svelte-maplibre": "^0.9.8"
|
"svelte-maplibre": "^0.9.14"
|
||||||
},
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"esbuild": "^0.25.9"
|
"esbuild": "^0.25.9"
|
||||||
|
|||||||
58
frontend/pnpm-lock.yaml
generated
58
frontend/pnpm-lock.yaml
generated
@@ -15,10 +15,10 @@ importers:
|
|||||||
specifier: ^0.0.3
|
specifier: ^0.0.3
|
||||||
version: 0.0.3(svelte@4.2.19)
|
version: 0.0.3(svelte@4.2.19)
|
||||||
dompurify:
|
dompurify:
|
||||||
specifier: ^3.2.4
|
specifier: ^3.2.5
|
||||||
version: 3.2.5
|
version: 3.2.5
|
||||||
emoji-picker-element:
|
emoji-picker-element:
|
||||||
specifier: ^1.26.0
|
specifier: ^1.26.3
|
||||||
version: 1.26.3
|
version: 1.26.3
|
||||||
gsap:
|
gsap:
|
||||||
specifier: ^3.12.7
|
specifier: ^3.12.7
|
||||||
@@ -27,7 +27,7 @@ importers:
|
|||||||
specifier: ^3.6.1
|
specifier: ^3.6.1
|
||||||
version: 3.6.1
|
version: 3.6.1
|
||||||
marked:
|
marked:
|
||||||
specifier: ^15.0.4
|
specifier: ^15.0.11
|
||||||
version: 15.0.11
|
version: 15.0.11
|
||||||
psl:
|
psl:
|
||||||
specifier: ^1.15.0
|
specifier: ^1.15.0
|
||||||
@@ -39,77 +39,77 @@ importers:
|
|||||||
specifier: ^4.0.1
|
specifier: ^4.0.1
|
||||||
version: 4.0.1(svelte@4.2.19)
|
version: 4.0.1(svelte@4.2.19)
|
||||||
svelte-maplibre:
|
svelte-maplibre:
|
||||||
specifier: ^0.9.8
|
specifier: ^0.9.14
|
||||||
version: 0.9.14(svelte@4.2.19)
|
version: 0.9.14(svelte@4.2.19)
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@event-calendar/core':
|
'@event-calendar/core':
|
||||||
specifier: ^3.7.1
|
specifier: ^3.12.0
|
||||||
version: 3.12.0
|
version: 3.12.0
|
||||||
'@event-calendar/day-grid':
|
'@event-calendar/day-grid':
|
||||||
specifier: ^3.7.1
|
specifier: ^3.12.0
|
||||||
version: 3.12.0
|
version: 3.12.0
|
||||||
'@event-calendar/interaction':
|
'@event-calendar/interaction':
|
||||||
specifier: ^3.12.0
|
specifier: ^3.12.0
|
||||||
version: 3.12.0
|
version: 3.12.0
|
||||||
'@event-calendar/time-grid':
|
'@event-calendar/time-grid':
|
||||||
specifier: ^3.7.1
|
specifier: ^3.12.0
|
||||||
version: 3.12.0
|
version: 3.12.0
|
||||||
'@iconify-json/mdi':
|
'@iconify-json/mdi':
|
||||||
specifier: ^1.1.67
|
specifier: ^1.2.3
|
||||||
version: 1.2.3
|
version: 1.2.3
|
||||||
'@sveltejs/adapter-node':
|
'@sveltejs/adapter-node':
|
||||||
specifier: ^5.2.0
|
specifier: ^5.2.12
|
||||||
version: 5.2.12(@sveltejs/kit@2.20.7(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2)))(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2)))
|
version: 5.2.12(@sveltejs/kit@2.20.7(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2)))(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2)))
|
||||||
'@sveltejs/adapter-vercel':
|
'@sveltejs/adapter-vercel':
|
||||||
specifier: ^5.4.1
|
specifier: ^5.7.0
|
||||||
version: 5.7.0(@sveltejs/kit@2.20.7(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2)))(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2)))(rollup@4.40.2)
|
version: 5.7.0(@sveltejs/kit@2.20.7(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2)))(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2)))(rollup@4.40.2)
|
||||||
'@sveltejs/kit':
|
'@sveltejs/kit':
|
||||||
specifier: ^2.8.3
|
specifier: ^2.20.7
|
||||||
version: 2.20.7(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2)))(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2))
|
version: 2.20.7(@sveltejs/vite-plugin-svelte@3.1.2(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2)))(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2))
|
||||||
'@sveltejs/vite-plugin-svelte':
|
'@sveltejs/vite-plugin-svelte':
|
||||||
specifier: ^3.1.1
|
specifier: ^3.1.2
|
||||||
version: 3.1.2(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2))
|
version: 3.1.2(svelte@4.2.19)(vite@5.4.19(@types/node@22.15.2))
|
||||||
'@tailwindcss/typography':
|
'@tailwindcss/typography':
|
||||||
specifier: ^0.5.13
|
specifier: ^0.5.16
|
||||||
version: 0.5.16(tailwindcss@3.4.17)
|
version: 0.5.16(tailwindcss@3.4.17)
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^22.5.4
|
specifier: ^22.15.2
|
||||||
version: 22.15.2
|
version: 22.15.2
|
||||||
'@types/qrcode':
|
'@types/qrcode':
|
||||||
specifier: ^1.5.5
|
specifier: ^1.5.5
|
||||||
version: 1.5.5
|
version: 1.5.5
|
||||||
autoprefixer:
|
autoprefixer:
|
||||||
specifier: ^10.4.19
|
specifier: ^10.4.21
|
||||||
version: 10.4.21(postcss@8.5.3)
|
version: 10.4.21(postcss@8.5.3)
|
||||||
daisyui:
|
daisyui:
|
||||||
specifier: ^4.12.6
|
specifier: ^4.12.24
|
||||||
version: 4.12.24(postcss@8.5.3)
|
version: 4.12.24(postcss@8.5.3)
|
||||||
postcss:
|
postcss:
|
||||||
specifier: ^8.4.38
|
specifier: ^8.5.3
|
||||||
version: 8.5.3
|
version: 8.5.3
|
||||||
prettier:
|
prettier:
|
||||||
specifier: ^3.3.2
|
specifier: ^3.5.3
|
||||||
version: 3.5.3
|
version: 3.5.3
|
||||||
prettier-plugin-svelte:
|
prettier-plugin-svelte:
|
||||||
specifier: ^3.2.5
|
specifier: ^3.3.3
|
||||||
version: 3.3.3(prettier@3.5.3)(svelte@4.2.19)
|
version: 3.3.3(prettier@3.5.3)(svelte@4.2.19)
|
||||||
svelte:
|
svelte:
|
||||||
specifier: ^4.2.19
|
specifier: ^4.2.19
|
||||||
version: 4.2.19
|
version: 4.2.19
|
||||||
svelte-check:
|
svelte-check:
|
||||||
specifier: ^3.8.1
|
specifier: ^3.8.6
|
||||||
version: 3.8.6(postcss-load-config@4.0.2(postcss@8.5.3))(postcss@8.5.3)(svelte@4.2.19)
|
version: 3.8.6(postcss-load-config@4.0.2(postcss@8.5.3))(postcss@8.5.3)(svelte@4.2.19)
|
||||||
tailwindcss:
|
tailwindcss:
|
||||||
specifier: ^3.4.4
|
specifier: ^3.4.17
|
||||||
version: 3.4.17
|
version: 3.4.17
|
||||||
tslib:
|
tslib:
|
||||||
specifier: ^2.6.3
|
specifier: ^2.8.1
|
||||||
version: 2.8.1
|
version: 2.8.1
|
||||||
typescript:
|
typescript:
|
||||||
specifier: ^5.5.2
|
specifier: ^5.8.3
|
||||||
version: 5.8.3
|
version: 5.8.3
|
||||||
unplugin-icons:
|
unplugin-icons:
|
||||||
specifier: ^0.19.0
|
specifier: ^0.19.3
|
||||||
version: 0.19.3
|
version: 0.19.3
|
||||||
vite:
|
vite:
|
||||||
specifier: ^5.4.19
|
specifier: ^5.4.19
|
||||||
@@ -733,8 +733,8 @@ packages:
|
|||||||
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
|
resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001715:
|
caniuse-lite@1.0.30001750:
|
||||||
resolution: {integrity: sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==}
|
resolution: {integrity: sha512-cuom0g5sdX6rw00qOoLNSFCJ9/mYIsuSOA+yzpDw8eopiFqcVwQvZHqov0vmEighRxX++cfC0Vg1G+1Iy/mSpQ==}
|
||||||
|
|
||||||
chokidar@3.6.0:
|
chokidar@3.6.0:
|
||||||
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
|
resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==}
|
||||||
@@ -2376,7 +2376,7 @@ snapshots:
|
|||||||
autoprefixer@10.4.21(postcss@8.5.3):
|
autoprefixer@10.4.21(postcss@8.5.3):
|
||||||
dependencies:
|
dependencies:
|
||||||
browserslist: 4.24.4
|
browserslist: 4.24.4
|
||||||
caniuse-lite: 1.0.30001715
|
caniuse-lite: 1.0.30001750
|
||||||
fraction.js: 4.3.7
|
fraction.js: 4.3.7
|
||||||
normalize-range: 0.1.2
|
normalize-range: 0.1.2
|
||||||
picocolors: 1.1.1
|
picocolors: 1.1.1
|
||||||
@@ -2408,7 +2408,7 @@ snapshots:
|
|||||||
|
|
||||||
browserslist@4.24.4:
|
browserslist@4.24.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite: 1.0.30001715
|
caniuse-lite: 1.0.30001750
|
||||||
electron-to-chromium: 1.5.143
|
electron-to-chromium: 1.5.143
|
||||||
node-releases: 2.0.19
|
node-releases: 2.0.19
|
||||||
update-browserslist-db: 1.1.3(browserslist@4.24.4)
|
update-browserslist-db: 1.1.3(browserslist@4.24.4)
|
||||||
@@ -2419,7 +2419,7 @@ snapshots:
|
|||||||
|
|
||||||
camelcase@5.3.1: {}
|
camelcase@5.3.1: {}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001715: {}
|
caniuse-lite@1.0.30001750: {}
|
||||||
|
|
||||||
chokidar@3.6.0:
|
chokidar@3.6.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|||||||
@@ -65,7 +65,8 @@
|
|||||||
ar: 'العربية',
|
ar: 'العربية',
|
||||||
'pt-br': 'Português (Brasil)',
|
'pt-br': 'Português (Brasil)',
|
||||||
sk: 'Slovenský',
|
sk: 'Slovenský',
|
||||||
tr: 'Türkçe'
|
tr: 'Türkçe',
|
||||||
|
hu: 'Magyar'
|
||||||
};
|
};
|
||||||
|
|
||||||
const submitLocaleChange = (event: Event) => {
|
const submitLocaleChange = (event: Event) => {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
export let appVersion = 'v0.11.0-main-09212025';
|
export let appVersion = 'v0.11.0-main-10112025';
|
||||||
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';
|
||||||
|
|||||||
@@ -564,19 +564,19 @@
|
|||||||
"visited_first": "Besucht zuerst",
|
"visited_first": "Besucht zuerst",
|
||||||
"total_items": "Artikel gesamt",
|
"total_items": "Artikel gesamt",
|
||||||
"getting_location_details": "Erhalten von Standortdetails",
|
"getting_location_details": "Erhalten von Standortdetails",
|
||||||
"cities_available": "Städte verfügbar",
|
"cities_available": "verfügbare Städte",
|
||||||
"destination_revealed": "Ziel enthüllt!",
|
"destination_revealed": "Ziel enthüllt!",
|
||||||
"dive_deeper": "Tauchen tiefer",
|
"dive_deeper": "tiefer Tauchen",
|
||||||
"exploration_progress": "Explorationsfortschritt",
|
"exploration_progress": "Explorationsfortschritt",
|
||||||
"explore_country": "Land erkunden",
|
"explore_country": "Land erkunden",
|
||||||
"globe_spin_error_desc": "Fehler beim Abholen von Globus Spin -Daten",
|
"globe_spin_error_desc": "Fehler beim Abrufen von Globus-Drehung-Daten",
|
||||||
"hide_globe_spin": "Globusspin verstecken",
|
"hide_globe_spin": "Globusdrehung verstecken",
|
||||||
"in": "In",
|
"in": "In",
|
||||||
"loading_globe_spin": "Globusspin laden",
|
"loading_globe_spin": "Globusdrehung wird geladen",
|
||||||
"no_globe_spin_data": "Keine Globus -Spin -Daten",
|
"no_globe_spin_data": "Keine Globus-Drehung-Daten",
|
||||||
"show_globe_spin": "SHOW GLOBE Spin",
|
"show_globe_spin": "Globus Drehung anzeigen",
|
||||||
"spin_again": "Wieder drehen",
|
"spin_again": "Wieder drehen",
|
||||||
"spinning_globe": "Spinning Globe",
|
"spinning_globe": "Drehender Globus",
|
||||||
"try_again": "Versuchen Sie es erneut",
|
"try_again": "Versuchen Sie es erneut",
|
||||||
"your_random_adventure_awaits": "Ihr zufälliges Abenteuer wartet!"
|
"your_random_adventure_awaits": "Ihr zufälliges Abenteuer wartet!"
|
||||||
},
|
},
|
||||||
@@ -871,8 +871,8 @@
|
|||||||
"invite_failed": "Einladung fehlgeschlagen",
|
"invite_failed": "Einladung fehlgeschlagen",
|
||||||
"invite_revoked": "Einladung widerrufen",
|
"invite_revoked": "Einladung widerrufen",
|
||||||
"invite_sent": "Einladung gesendet",
|
"invite_sent": "Einladung gesendet",
|
||||||
"revoke_failed": "Revoke fehlgeschlagen",
|
"revoke_failed": "Widerrufen fehlgeschlagen",
|
||||||
"unshare_failed": "Unshare scheiterte"
|
"unshare_failed": "Aufheben des Teilens fehlgeschlagen"
|
||||||
},
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"member_since": "Mitglied seit",
|
"member_since": "Mitglied seit",
|
||||||
|
|||||||
@@ -290,7 +290,7 @@
|
|||||||
"average_cadence": "Cadence moyenne",
|
"average_cadence": "Cadence moyenne",
|
||||||
"average_speed": "Vitesse moyenne",
|
"average_speed": "Vitesse moyenne",
|
||||||
"avg_speed": "Vitesse moyenne",
|
"avg_speed": "Vitesse moyenne",
|
||||||
"back": "Dos",
|
"back": "Retour",
|
||||||
"cadence": "Cadence",
|
"cadence": "Cadence",
|
||||||
"calories": "Calories",
|
"calories": "Calories",
|
||||||
"click_map": "Cliquez sur la carte pour sélectionner un emplacement",
|
"click_map": "Cliquez sur la carte pour sélectionner un emplacement",
|
||||||
|
|||||||
1041
frontend/src/locales/hu.json
Normal file
1041
frontend/src/locales/hu.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -535,20 +535,20 @@
|
|||||||
"visited_first": "Navštívené najprv",
|
"visited_first": "Navštívené najprv",
|
||||||
"unvisited_first": "Nenavštívené najprv",
|
"unvisited_first": "Nenavštívené najprv",
|
||||||
"getting_location_details": "Získavajú sa detaily miesta",
|
"getting_location_details": "Získavajú sa detaily miesta",
|
||||||
"cities_available": "K dispozícii sú mestá",
|
"cities_available": "Mestá k dispozícii",
|
||||||
"destination_revealed": "Destinácia odhalená!",
|
"destination_revealed": "Destinácia odhalená!",
|
||||||
"dive_deeper": "Prehlbovať sa",
|
"dive_deeper": "Ponorte sa hlbšie",
|
||||||
"exploration_progress": "Pokrok v prieskume",
|
"exploration_progress": "Pokrok v preskúmavaní",
|
||||||
"explore_country": "Preskúmať krajinu",
|
"explore_country": "Preskúmať krajinu",
|
||||||
"globe_spin_error_desc": "Chyba načítava dáta spinov Globe",
|
"globe_spin_error_desc": "Chyba načítania náhodnej destinácie",
|
||||||
"loading_globe_spin": "Nakladanie zemegule",
|
"loading_globe_spin": "Načítavanie náhodnej destinácie",
|
||||||
"no_globe_spin_data": "Žiadne údaje o spinte Globe",
|
"no_globe_spin_data": "Žiadne údaje náhodnej destinácie",
|
||||||
"show_globe_spin": "Zobraziť globe rotáciu",
|
"show_globe_spin": "Zobraziť náhodnú destináciu",
|
||||||
"spin_again": "Znova",
|
"spin_again": "Iná náhodná destinácia",
|
||||||
"spinning_globe": "Glóbus",
|
"spinning_globe": "Glóbus sa točí",
|
||||||
"try_again": "Skúste to znova",
|
"try_again": "Skúsiť znova",
|
||||||
"your_random_adventure_awaits": "Čaká vaše náhodné dobrodružstvo!",
|
"your_random_adventure_awaits": "Čaká vaše náhodné dobrodružstvo!",
|
||||||
"hide_globe_spin": "Skryť zemeguľu",
|
"hide_globe_spin": "Skryť náhodnú destináciu",
|
||||||
"in": "v"
|
"in": "v"
|
||||||
},
|
},
|
||||||
"auth": {
|
"auth": {
|
||||||
@@ -890,11 +890,11 @@
|
|||||||
"available": "Dostupné",
|
"available": "Dostupné",
|
||||||
"pending": "Čakajúce",
|
"pending": "Čakajúce",
|
||||||
"available_users": "Dostupní používatelia",
|
"available_users": "Dostupní používatelia",
|
||||||
"invite_failed": "Pozvite zlyhalo",
|
"invite_failed": "Odoslanie pozvánky neúspešne",
|
||||||
"invite_revoked": "Pozvať odvolané",
|
"invite_revoked": "Pozvánka odvolaná",
|
||||||
"invite_sent": "Pozvať odoslané",
|
"invite_sent": "Pozvánka odoslaná",
|
||||||
"revoke_failed": "Odbočka zlyhala",
|
"revoke_failed": "Odvolanie pozvánky neúspešné",
|
||||||
"unshare_failed": "Unshare zlyhala"
|
"unshare_failed": "Zrušenie zdieľania neúspešné"
|
||||||
},
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"member_since": "Člen od",
|
"member_since": "Člen od",
|
||||||
|
|||||||
@@ -534,7 +534,22 @@
|
|||||||
"oldest_first": "Önce En Eski",
|
"oldest_first": "Önce En Eski",
|
||||||
"visited_first": "Önce Ziyaret Edilenler",
|
"visited_first": "Önce Ziyaret Edilenler",
|
||||||
"unvisited_first": "Önce Ziyaret Edilmeyenler",
|
"unvisited_first": "Önce Ziyaret Edilmeyenler",
|
||||||
"getting_location_details": "Konum detayları alınıyor"
|
"getting_location_details": "Konum detayları alınıyor",
|
||||||
|
"hide_globe_spin": "Küre Dönüşünü Gizle",
|
||||||
|
"show_globe_spin": "Küre Dönüşünü Göster",
|
||||||
|
"loading_globe_spin": "Küre Dönüşü Yükleniyor",
|
||||||
|
"spinning_globe": "Dönen Küre",
|
||||||
|
"destination_revealed": "Hedef Keşfedildi!",
|
||||||
|
"your_random_adventure_awaits": "Rastgele Maceran Seni Bekliyor!",
|
||||||
|
"exploration_progress": "Keşif İlerlemesi",
|
||||||
|
"dive_deeper": "Daha Fazlasını Keşfet",
|
||||||
|
"cities_available": "Mevcut Şehirler",
|
||||||
|
"in": "içinde",
|
||||||
|
"explore_country": "Ülkeyi Keşfet",
|
||||||
|
"spin_again": "Tekrar Döndür",
|
||||||
|
"globe_spin_error_desc": "Küre dönüşü verisi alınamadı",
|
||||||
|
"try_again": "Tekrar Deneyin",
|
||||||
|
"no_globe_spin_data": "Küre Dönüşü Verisi Yok"
|
||||||
},
|
},
|
||||||
"auth": {
|
"auth": {
|
||||||
"username": "Kullanıcı Adı",
|
"username": "Kullanıcı Adı",
|
||||||
@@ -873,7 +888,13 @@
|
|||||||
"revoke_invite": "Daveti İptal Et",
|
"revoke_invite": "Daveti İptal Et",
|
||||||
"send_invite": "Davet Gönder",
|
"send_invite": "Davet Gönder",
|
||||||
"available": "Mevcut",
|
"available": "Mevcut",
|
||||||
"pending": "Beklemede"
|
"pending": "Beklemede",
|
||||||
|
"available_users": "Mevcut Kullanıcılar",
|
||||||
|
"revoke_failed": "İptal İşlemi Başarısız",
|
||||||
|
"invite_revoked": "Davet İptal Edildi",
|
||||||
|
"unshare_failed": "Paylaşım İptali Başarısız",
|
||||||
|
"invite_failed": "Davet Gönderilemedi",
|
||||||
|
"invite_sent": "Davet Edildi"
|
||||||
},
|
},
|
||||||
"profile": {
|
"profile": {
|
||||||
"member_since": "Üyelik tarihi",
|
"member_since": "Üyelik tarihi",
|
||||||
|
|||||||
1
frontend/src/locales/uk.json
Normal file
1
frontend/src/locales/uk.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{}
|
||||||
@@ -22,6 +22,7 @@
|
|||||||
register('pt-br', () => import('../locales/pt-br.json'));
|
register('pt-br', () => import('../locales/pt-br.json'));
|
||||||
register('sk', () => import('../locales/sk.json'));
|
register('sk', () => import('../locales/sk.json'));
|
||||||
register('tr', () => import('../locales/tr.json'));
|
register('tr', () => import('../locales/tr.json'));
|
||||||
|
register('hu', () => import('../locales/hu.json'));
|
||||||
|
|
||||||
let locales = [
|
let locales = [
|
||||||
'en',
|
'en',
|
||||||
@@ -40,7 +41,8 @@
|
|||||||
'ar',
|
'ar',
|
||||||
'pt-br',
|
'pt-br',
|
||||||
'sk',
|
'sk',
|
||||||
'tr'
|
'tr',
|
||||||
|
'hu'
|
||||||
];
|
];
|
||||||
|
|
||||||
if (browser) {
|
if (browser) {
|
||||||
|
|||||||
@@ -173,8 +173,12 @@
|
|||||||
|
|
||||||
<!-- Hero Section -->
|
<!-- Hero Section -->
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
|
<div
|
||||||
|
class="hero min-h-[60vh] relative overflow-hidden"
|
||||||
|
class:min-h-[30vh]={!adventure.images || adventure.images.length === 0}
|
||||||
|
>
|
||||||
|
<!-- Background: Images or Gradient -->
|
||||||
{#if adventure.images && adventure.images.length > 0}
|
{#if adventure.images && adventure.images.length > 0}
|
||||||
<div class="hero min-h-[60vh] relative overflow-hidden">
|
|
||||||
<div class="hero-overlay bg-gradient-to-t from-black/70 via-black/20 to-transparent"></div>
|
<div class="hero-overlay bg-gradient-to-t from-black/70 via-black/20 to-transparent"></div>
|
||||||
{#each adventure.images as image, i}
|
{#each adventure.images as image, i}
|
||||||
<div
|
<div
|
||||||
@@ -191,8 +195,15 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
{/each}
|
{/each}
|
||||||
|
{:else}
|
||||||
|
<div class="absolute inset-0 bg-gradient-to-br from-primary/20 to-secondary/20"></div>
|
||||||
|
{/if}
|
||||||
|
|
||||||
<div class="hero-content relative z-10 text-center text-white">
|
<!-- Content -->
|
||||||
|
<div
|
||||||
|
class="hero-content relative z-10 text-center"
|
||||||
|
class:text-white={adventure.images?.length > 0}
|
||||||
|
>
|
||||||
<div class="max-w-4xl">
|
<div class="max-w-4xl">
|
||||||
<h1 class="text-6xl font-bold mb-4 drop-shadow-lg">{adventure.name}</h1>
|
<h1 class="text-6xl font-bold mb-4 drop-shadow-lg">{adventure.name}</h1>
|
||||||
|
|
||||||
@@ -213,12 +224,15 @@
|
|||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<!-- Quick Info Cards -->
|
<!-- Quick Info Badges -->
|
||||||
<div class="flex flex-wrap justify-center gap-4 mb-6">
|
<div class="flex flex-wrap justify-center gap-4 mb-6">
|
||||||
<div class="badge badge-lg badge-primary font-semibold px-4 py-3">
|
<a
|
||||||
|
href="/locations?types={adventure.category?.name}"
|
||||||
|
class="badge badge-lg badge-primary font-semibold px-4 py-3 cursor-pointer hover:brightness-110 transition-all"
|
||||||
|
>
|
||||||
{adventure.category?.display_name}
|
{adventure.category?.display_name}
|
||||||
{adventure.category?.icon}
|
{adventure.category?.icon}
|
||||||
</div>
|
</a>
|
||||||
{#if adventure.location}
|
{#if adventure.location}
|
||||||
<div class="badge badge-lg badge-secondary font-semibold px-4 py-3">
|
<div class="badge badge-lg badge-secondary font-semibold px-4 py-3">
|
||||||
📍 {adventure.location}
|
📍 {adventure.location}
|
||||||
@@ -230,6 +244,15 @@
|
|||||||
{adventure.visits.length === 1 ? $t('adventures.visit') : $t('adventures.visits')}
|
{adventure.visits.length === 1 ? $t('adventures.visit') : $t('adventures.visits')}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
|
{#if adventure.is_visited}
|
||||||
|
<div class="badge badge-lg badge-success font-semibold px-4 py-3">
|
||||||
|
✅ {$t('adventures.visited')}
|
||||||
|
</div>
|
||||||
|
{:else}
|
||||||
|
<div class="badge badge-lg badge-warning font-semibold px-4 py-3">
|
||||||
|
⏳ {$t('adventures.not_visited')}
|
||||||
|
</div>
|
||||||
|
{/if}
|
||||||
{#if adventure.trails && adventure.trails.length > 0}
|
{#if adventure.trails && adventure.trails.length > 0}
|
||||||
<div class="badge badge-lg badge-info font-semibold px-4 py-3">
|
<div class="badge badge-lg badge-info font-semibold px-4 py-3">
|
||||||
🥾 {adventure.trails.length} Trail{adventure.trails.length === 1 ? '' : 's'}
|
🥾 {adventure.trails.length} Trail{adventure.trails.length === 1 ? '' : 's'}
|
||||||
@@ -237,10 +260,10 @@
|
|||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Image Navigation -->
|
<!-- Image Navigation (only shown when multiple images exist) -->
|
||||||
{#if adventure.images.length > 1}
|
{#if adventure.images && adventure.images.length > 1}
|
||||||
<div class="w-full max-w-md mx-auto">
|
<div class="w-full max-w-md mx-auto">
|
||||||
<!-- Navigation arrows and current position indicator -->
|
<!-- Navigation arrows and current position -->
|
||||||
<div class="flex items-center justify-center gap-4 mb-3">
|
<div class="flex items-center justify-center gap-4 mb-3">
|
||||||
<button
|
<button
|
||||||
on:click={() =>
|
on:click={() =>
|
||||||
@@ -265,9 +288,8 @@
|
|||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Scrollable dot navigation for many images -->
|
<!-- Dot navigation -->
|
||||||
{#if adventure.images.length <= 12}
|
{#if adventure.images.length <= 12}
|
||||||
<!-- Show all dots for 12 or fewer images -->
|
|
||||||
<div class="flex justify-center gap-2 flex-wrap">
|
<div class="flex justify-center gap-2 flex-wrap">
|
||||||
{#each adventure.images as _, i}
|
{#each adventure.images as _, i}
|
||||||
<button
|
<button
|
||||||
@@ -282,7 +304,6 @@
|
|||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
{:else}
|
{:else}
|
||||||
<!-- Scrollable navigation for many images -->
|
|
||||||
<div class="relative">
|
<div class="relative">
|
||||||
<div
|
<div
|
||||||
class="absolute left-0 top-0 bottom-2 w-4 bg-gradient-to-r from-black/30 to-transparent pointer-events-none"
|
class="absolute left-0 top-0 bottom-2 w-4 bg-gradient-to-r from-black/30 to-transparent pointer-events-none"
|
||||||
@@ -297,31 +318,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{:else}
|
|
||||||
<!-- No image hero -->
|
|
||||||
<div class="hero min-h-[40vh] bg-gradient-to-br from-primary/20 to-secondary/20">
|
|
||||||
<div class="hero-content text-center">
|
|
||||||
<div class="max-w-4xl">
|
|
||||||
<h1 class="text-6xl font-bold mb-6">{adventure.name}</h1>
|
|
||||||
{#if adventure.rating !== undefined && adventure.rating !== null}
|
|
||||||
<div class="flex justify-center mb-6">
|
|
||||||
<div class="rating rating-lg">
|
|
||||||
{#each Array.from({ length: 5 }, (_, i) => i + 1) as star}
|
|
||||||
<input
|
|
||||||
type="radio"
|
|
||||||
name="rating-hero-no-img"
|
|
||||||
class="mask mask-star-2 bg-warning"
|
|
||||||
checked={star <= adventure.rating}
|
|
||||||
disabled
|
|
||||||
/>
|
|
||||||
{/each}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{/if}
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Main Content -->
|
<!-- Main Content -->
|
||||||
@@ -841,7 +837,7 @@
|
|||||||
{/if}
|
{/if}
|
||||||
|
|
||||||
<!-- Additional Images -->
|
<!-- Additional Images -->
|
||||||
{#if adventure.images && adventure.images.length > 1}
|
{#if adventure.images}
|
||||||
<div class="card bg-base-200 shadow-xl">
|
<div class="card bg-base-200 shadow-xl">
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<h3 class="card-title text-lg mb-4">🖼️ {$t('adventures.images')}</h3>
|
<h3 class="card-title text-lg mb-4">🖼️ {$t('adventures.images')}</h3>
|
||||||
|
|||||||
Reference in New Issue
Block a user