From 30e6e7575877b0a1eb589780d7893333042153ac Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 17 Mar 2026 15:04:35 +0000 Subject: [PATCH] Fix TypeError: this.store is undefined in i18next changeLanguage The i18next.init() call was not being awaited, so changeLanguage could be called before the internal store was initialized. Also guard the language sync effect to only run after locale initialization completes. https://claude.ai/code/session_01BCqa4WXYDrCn2ARTEA8jdd --- apps/frontend/src/lib/i18n/index.ts | 4 ++-- apps/frontend/src/lib/stores/locale.ts | 2 +- apps/frontend/src/routes/+layout.svelte | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) 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); } });