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
|
||||
key={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>{l.name}</span>
|
||||
|
|
|
|||
|
|
@ -66,6 +66,17 @@ export function I18nProvider({ children }: { children: ReactNode }) {
|
|||
return value;
|
||||
}, [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(() => {
|
||||
if (typeof window === 'undefined') return;
|
||||
localStorage.setItem(localeStorageKey, locale);
|
||||
|
|
|
|||
Loading…
Reference in a new issue