fix(frontend): language switcher cursor and persistence logic

This commit is contained in:
Tiago Yamamoto 2025-12-31 10:27:33 -03:00
parent 8dbcd01336
commit 798031420e
2 changed files with 12 additions and 1 deletions

View file

@ -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>

View file

@ -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);