fix(i18n): preserve global locale state across provider updates
This commit is contained in:
@@ -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)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user