Fix: SSR safety for themes and i18n

This commit is contained in:
marciobever 2026-05-03 15:46:01 +00:00
parent 9e562b6ca8
commit ff5dac3ef4

View file

@ -189,9 +189,16 @@ export const translations = {
}; };
export function useLanguage() { export function useLanguage() {
const [lang, setLangState] = useState<Language>(() => { const [lang, setLangState] = useState<Language>('pt');
return (localStorage.getItem('lang') as Language) || 'pt';
}); useEffect(() => {
if (typeof window !== 'undefined') {
const saved = localStorage.getItem('lang');
if (saved && (translations as any)[saved]) {
setLangState(saved as Language);
}
}
}, []);
useEffect(() => { useEffect(() => {
const handleLangChange = (e: Event) => { const handleLangChange = (e: Event) => {
@ -202,10 +209,12 @@ export function useLanguage() {
}, []); }, []);
const setLang = (l: Language) => { const setLang = (l: Language) => {
localStorage.setItem('lang', l); if (typeof window !== 'undefined') {
localStorage.setItem('lang', l);
}
setLangState(l); setLangState(l);
window.dispatchEvent(new CustomEvent('lang-change', { detail: l })); window.dispatchEvent(new CustomEvent('lang-change', { detail: l }));
}; };
return { lang, setLanguage: setLang, setLang, t: translations[lang] }; return { lang, setLanguage: setLang, setLang, t: (translations as any)[lang] || translations.pt };
} }