fix(frontend): language switcher cursor and persistence logic
This commit is contained in:
parent
8dbcd01336
commit
798031420e
2 changed files with 12 additions and 1 deletions
|
|
@ -34,7 +34,7 @@ export function LanguageSwitcher() {
|
||||||
<DropdownMenuItem
|
<DropdownMenuItem
|
||||||
key={l.code}
|
key={l.code}
|
||||||
onClick={() => setLocale(l.code)}
|
onClick={() => setLocale(l.code)}
|
||||||
className="flex items-center gap-2"
|
className="flex items-center gap-2 cursor-pointer"
|
||||||
>
|
>
|
||||||
<span className="text-lg">{l.flag}</span>
|
<span className="text-lg">{l.flag}</span>
|
||||||
<span>{l.name}</span>
|
<span>{l.name}</span>
|
||||||
|
|
|
||||||
|
|
@ -66,6 +66,17 @@ export function I18nProvider({ children }: { children: ReactNode }) {
|
||||||
return value;
|
return value;
|
||||||
}, [locale]);
|
}, [locale]);
|
||||||
|
|
||||||
|
// Sync from localStorage on mount to handle hydration mismatch or initial load
|
||||||
|
useEffect(() => {
|
||||||
|
if (typeof window !== 'undefined') {
|
||||||
|
const stored = localStorage.getItem(localeStorageKey);
|
||||||
|
if (stored && stored in dictionaries && stored !== locale) {
|
||||||
|
console.log('[I18n] Restoring locale from storage:', stored);
|
||||||
|
setLocale(stored as Locale);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, []);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (typeof window === 'undefined') return;
|
if (typeof window === 'undefined') return;
|
||||||
localStorage.setItem(localeStorageKey, locale);
|
localStorage.setItem(localeStorageKey, locale);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue