diff --git a/ui-electrobun/src/mainview/App.svelte b/ui-electrobun/src/mainview/App.svelte index e64d573..2ff5549 100644 --- a/ui-electrobun/src/mainview/App.svelte +++ b/ui-electrobun/src/mainview/App.svelte @@ -161,11 +161,7 @@ }; }); - // ── i18n: keep lang and dir in sync ────────────────── - $effect(() => { - document.documentElement.lang = getLocale(); - document.documentElement.dir = getDir(); - }); + // ── i18n: lang/dir sync is handled inside setLocale() — no $effect needed ── // ── Init ──────────────────────────────────────────────────── onMount(() => { diff --git a/ui-electrobun/src/mainview/i18n.svelte.ts b/ui-electrobun/src/mainview/i18n.svelte.ts index 8c51084..55e6db6 100644 --- a/ui-electrobun/src/mainview/i18n.svelte.ts +++ b/ui-electrobun/src/mainview/i18n.svelte.ts @@ -86,6 +86,13 @@ export async function setLocale(tag: string): Promise { _intl = createIntl({ locale: tag, messages: _messages }, cache); _v++; + // Sync lang and dir attributes + if (typeof document !== 'undefined') { + document.documentElement.lang = tag; + const meta = AVAILABLE_LOCALES.find(l => l.tag === tag); + document.documentElement.dir = meta?.dir ?? 'ltr'; + } + // Persist preference try { await appRpc?.request['settings.set']({ key: 'locale', value: tag });