feat: add loading state to AppI18nProvider for locale readiness
This commit is contained in:
@@ -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}
|
||||||
|
|||||||
Reference in New Issue
Block a user