From e1b76b947cb82598dd9d2452a6b72b0678dcaf75 Mon Sep 17 00:00:00 2001 From: Alexander Bocken Date: Mon, 2 Mar 2026 13:37:29 +0100 Subject: [PATCH] fix: language switching now works on all pages, not just root LanguageSelector and language store previously only dispatched languagechange events on '/'. Now any page that isn't a recipe or faith route gets inline language switching via the custom event. --- src/lib/components/LanguageSelector.svelte | 10 ++++++---- src/lib/stores/language.ts | 7 +++---- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/lib/components/LanguageSelector.svelte b/src/lib/components/LanguageSelector.svelte index d59ae74..6c8e88b 100644 --- a/src/lib/components/LanguageSelector.svelte +++ b/src/lib/components/LanguageSelector.svelte @@ -29,8 +29,8 @@ languageStore.set('en'); } else if (path.startsWith('/rezepte') || path.startsWith('/glaube')) { languageStore.set('de'); - } else if (path === '/') { - // On main page, read from localStorage + } else { + // On other pages, read from localStorage if (typeof localStorage !== 'undefined') { const preferredLanguage = localStorage.getItem('preferredLanguage'); languageStore.set(preferredLanguage === 'en' ? 'en' : 'de'); @@ -102,8 +102,10 @@ // Get the current path directly from window const path = typeof window !== 'undefined' ? window.location.pathname : currentPath; - // If on main page, dispatch event instead of reloading - if (path === '/') { + // For pages that handle their own translations inline (not recipe/faith routes), + // dispatch event and stay on the page + if (!path.startsWith('/rezepte') && !path.startsWith('/recipes') + && !path.startsWith('/glaube') && !path.startsWith('/faith')) { window.dispatchEvent(new CustomEvent('languagechange', { detail: { lang } })); return; } diff --git a/src/lib/stores/language.ts b/src/lib/stores/language.ts index 37a97b8..3c64290 100644 --- a/src/lib/stores/language.ts +++ b/src/lib/stores/language.ts @@ -11,12 +11,11 @@ function createLanguageStore() { init: () => { if (typeof window !== 'undefined') { const path = window.location.pathname; - if (path.startsWith('/recipes')) { + if (path.startsWith('/recipes') || path.startsWith('/faith')) { set('en'); - } else if (path.startsWith('/rezepte')) { + } else if (path.startsWith('/rezepte') || path.startsWith('/glaube')) { set('de'); - } else if (path === '/') { - // On main page, read from localStorage + } else { const preferredLanguage = localStorage.getItem('preferredLanguage'); set(preferredLanguage === 'en' ? 'en' : 'de'); }