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

View file

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