Fix: SSR safety for themes and i18n
This commit is contained in:
parent
9e562b6ca8
commit
ff5dac3ef4
1 changed files with 14 additions and 5 deletions
|
|
@ -189,9 +189,16 @@ export const translations = {
|
|||
};
|
||||
|
||||
export function useLanguage() {
|
||||
const [lang, setLangState] = useState<Language>(() => {
|
||||
return (localStorage.getItem('lang') as Language) || 'pt';
|
||||
});
|
||||
const [lang, setLangState] = useState<Language>('pt');
|
||||
|
||||
useEffect(() => {
|
||||
if (typeof window !== 'undefined') {
|
||||
const saved = localStorage.getItem('lang');
|
||||
if (saved && (translations as any)[saved]) {
|
||||
setLangState(saved as Language);
|
||||
}
|
||||
}
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
const handleLangChange = (e: Event) => {
|
||||
|
|
@ -202,10 +209,12 @@ export function useLanguage() {
|
|||
}, []);
|
||||
|
||||
const setLang = (l: Language) => {
|
||||
localStorage.setItem('lang', l);
|
||||
if (typeof window !== 'undefined') {
|
||||
localStorage.setItem('lang', l);
|
||||
}
|
||||
setLangState(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 };
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue