diff --git a/apps/frontend/src/lib/i18n/index.ts b/apps/frontend/src/lib/i18n/index.ts index 4fb4030d..50ea2f1c 100644 --- a/apps/frontend/src/lib/i18n/index.ts +++ b/apps/frontend/src/lib/i18n/index.ts @@ -16,8 +16,8 @@ export const languageNames: Record = { /** * Initialize i18next with the given language or auto-detect */ -export function initI18n(initialLanguage?: SupportedLanguage) { - i18next.use(LanguageDetector).init({ +export async function initI18n(initialLanguage?: SupportedLanguage) { + await i18next.use(LanguageDetector).init({ resources: { en: { translation: en }, de: { translation: de }, diff --git a/apps/frontend/src/lib/stores/locale.ts b/apps/frontend/src/lib/stores/locale.ts index 1a64c93e..644282e7 100644 --- a/apps/frontend/src/lib/stores/locale.ts +++ b/apps/frontend/src/lib/stores/locale.ts @@ -32,7 +32,7 @@ function createLocaleStore() { */ initialize: async (userLanguage?: SupportedLanguage) => { // Initialize i18next with user's preference or auto-detect - initI18n(userLanguage); + await initI18n(userLanguage); const detectedLang = getCurrentLanguage(); // Update document lang attribute diff --git a/apps/frontend/src/routes/+layout.svelte b/apps/frontend/src/routes/+layout.svelte index a4bed241..2298d217 100644 --- a/apps/frontend/src/routes/+layout.svelte +++ b/apps/frontend/src/routes/+layout.svelte @@ -19,7 +19,7 @@ import { userPreferences, } from '$lib/stores/auth'; import { circles } from '$lib/stores/circles'; -import { locale } from '$lib/stores/locale'; +import { isLocaleInitialized, locale } from '$lib/stores/locale'; interface Props { children: Snippet; @@ -52,7 +52,7 @@ $effect(() => { // Sync language when user preferences change (e.g., after login) $effect(() => { const prefs = $userPreferences; - if (prefs?.language && prefs.language !== locale.getLanguage()) { + if ($isLocaleInitialized && prefs?.language && prefs.language !== locale.getLanguage()) { locale.setLanguage(prefs.language as SupportedLanguage); } });