feat: add loading state to AppI18nProvider for locale readiness

This commit is contained in:
mlogclub
2026-06-13 10:18:19 +08:00
parent 164953d56d
commit 0b78104978
+6
View File
@@ -31,12 +31,14 @@ const LocaleContext = createContext<LocaleContextValue>({
export function AppI18nProvider({ children }: { children: ReactNode }) { export function AppI18nProvider({ children }: { children: ReactNode }) {
const [locale, setLocaleState] = useState<AppLocale>(DEFAULT_LOCALE) const [locale, setLocaleState] = useState<AppLocale>(DEFAULT_LOCALE)
const [isLocaleReady, setIsLocaleReady] = useState(false)
useEffect(() => { useEffect(() => {
const storedLocale = readStoredLocale() const storedLocale = readStoredLocale()
setLocaleState(storedLocale) setLocaleState(storedLocale)
document.documentElement.lang = storedLocale document.documentElement.lang = storedLocale
document.title = translateMessage(storedLocale, "app.metadataTitle") document.title = translateMessage(storedLocale, "app.metadataTitle")
setIsLocaleReady(true)
}, []) }, [])
useEffect(() => { useEffect(() => {
@@ -57,6 +59,10 @@ export function AppI18nProvider({ children }: { children: ReactNode }) {
[locale] [locale]
) )
if (!isLocaleReady) {
return null
}
return ( return (
<LocaleContext.Provider value={value}> <LocaleContext.Provider value={value}>
{children} {children}