fix: SSR error - check for browser before accessing navigator
- Add typeof window check in I18nContext useEffect - Safely access navigator.language with optional chaining
This commit is contained in:
@@ -22,13 +22,16 @@ export const I18nProvider = ({ children }: { children: ReactNode }) => {
|
|||||||
const [isInitialized, setIsInitialized] = useState(false);
|
const [isInitialized, setIsInitialized] = useState(false);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
// Only run on client side
|
||||||
|
if (typeof window === 'undefined') return;
|
||||||
|
|
||||||
// Check for saved preference first
|
// Check for saved preference first
|
||||||
const savedLocale = localStorage.getItem('locale') as Locale;
|
const savedLocale = localStorage.getItem('locale') as Locale;
|
||||||
if (savedLocale && (savedLocale === 'de' || savedLocale === 'en')) {
|
if (savedLocale && (savedLocale === 'de' || savedLocale === 'en')) {
|
||||||
setLocaleState(savedLocale);
|
setLocaleState(savedLocale);
|
||||||
} else {
|
} else {
|
||||||
// Auto-detect from browser: default to English, switch to German if detected
|
// Auto-detect from browser: default to English, switch to German if detected
|
||||||
const browserLang = navigator.language.toLowerCase();
|
const browserLang = navigator.language?.toLowerCase() || 'en';
|
||||||
if (browserLang.startsWith('de')) {
|
if (browserLang.startsWith('de')) {
|
||||||
setLocaleState('de');
|
setLocaleState('de');
|
||||||
localStorage.setItem('locale', 'de');
|
localStorage.setItem('locale', 'de');
|
||||||
|
|||||||
Reference in New Issue
Block a user