fix(i18n): preserve global locale state across provider updates

This commit is contained in:
Shantur Rathore
2026-03-23 14:40:51 +00:00
parent f1ba699f9f
commit 50ccae8b27

View File

@@ -147,6 +147,8 @@ export const I18nProvider: ParentComponent = (props) => {
const { preferences } = useConfig() const { preferences } = useConfig()
const [detectedLocale, setDetectedLocale] = createSignal<Locale>(globalLocale) const [detectedLocale, setDetectedLocale] = createSignal<Locale>(globalLocale)
const [resolvedLocale, setResolvedLocale] = createSignal<Locale>(globalLocale) const [resolvedLocale, setResolvedLocale] = createSignal<Locale>(globalLocale)
const previousGlobalMessages = globalMessages
const previousGlobalLocale = globalLocale
onMount(() => { onMount(() => {
const detected = detectNavigatorLocale() const detected = detectNavigatorLocale()
@@ -173,8 +175,8 @@ export const I18nProvider: ParentComponent = (props) => {
if (cancelled) { if (cancelled) {
return return
} }
localeMessagesCache.set(nextLocale, loadedMessages)
setResolvedLocale(nextLocale) setResolvedLocale(nextLocale)
globalLocale = nextLocale
globalMessages = loadedMessages globalMessages = loadedMessages
setGlobalRevision((value) => value + 1) setGlobalRevision((value) => value + 1)
}) })
@@ -194,8 +196,8 @@ export const I18nProvider: ParentComponent = (props) => {
}) })
onCleanup(() => { onCleanup(() => {
globalMessages = enMessages globalMessages = previousGlobalMessages
globalLocale = "en" globalLocale = previousGlobalLocale
setGlobalRevision((value) => value + 1) setGlobalRevision((value) => value + 1)
}) })