diff --git a/components/ui/language-switcher.tsx b/components/ui/language-switcher.tsx index 9482264..ca66ea4 100644 --- a/components/ui/language-switcher.tsx +++ b/components/ui/language-switcher.tsx @@ -22,7 +22,7 @@ export function LanguageSwitcher() { if (typeof window !== 'undefined') { const saved = localStorage.getItem('preferred-language') - console.log('[LanguageSwitcher]=> Read from localstorage preferred-language=', saved) + // console.log('[LanguageSwitcher]=> Read from localstorage preferred-language=', saved) const isLocaleInPath = i18nConfig.locales.includes(currentLocale as any) @@ -32,44 +32,74 @@ export function LanguageSwitcher() { } }, [currentLocale]) + // const handleChange = (e: React.ChangeEvent) => { + // const newLocale = e.target.value + // // 仅在用户选择语言后保存 cookie + // // console.log('[LanguageSwitcher] Write Cookie newLocale value:', newLocale) + // // document.cookie = `preferred-language=${newLocale}; path=/; max-age=31536000` + + // // 同时更新 localStorage + // localStorage.setItem('preferred-language', newLocale) + + // // 验证 cookie 是否成功写入 + // // const cookieValue = document.cookie + + // // 更新 i18n 的语言 + // i18n.changeLanguage(newLocale) // 修改 TranslationProvider 中的 locale + + // let segments = pathname === '/' ? [] : pathname.split('/').filter(Boolean) + // const isLocaleInPath = i18nConfig.locales.includes(segments[0] as any) + + // if (isLocaleInPath) { + // segments[0] = newLocale + // } else { + // segments.unshift(newLocale) + // } + + // const newPath = '/' + segments.join('/') + + // // 延迟跳转,确保 cookie 写入完成 + // setTimeout(() => { + // startTransition(() => { + // if (pathname !== newPath) { + // router.push(newPath) + // } else { + // router.refresh() + // } + // }) + // }, 0) + // } + const handleChange = (e: React.ChangeEvent) => { const newLocale = e.target.value - // 仅在用户选择语言后保存 cookie - console.log('[LanguageSwitcher] Write Cookie newLocale value:', newLocale) - document.cookie = `preferred-language=${newLocale}; path=/; max-age=31536000` - - // 同时更新 localStorage + + // 更新 localStorage localStorage.setItem('preferred-language', newLocale) - - // 验证 cookie 是否成功写入 - const cookieValue = document.cookie - + // 更新 i18n 的语言 - i18n.changeLanguage(newLocale) // 修改 TranslationProvider 中的 locale - + i18n.changeLanguage(newLocale) + let segments = pathname === '/' ? [] : pathname.split('/').filter(Boolean) const isLocaleInPath = i18nConfig.locales.includes(segments[0] as any) - + if (isLocaleInPath) { segments[0] = newLocale } else { segments.unshift(newLocale) } - + const newPath = '/' + segments.join('/') - - // 延迟跳转,确保 cookie 写入完成 - setTimeout(() => { - startTransition(() => { - if (pathname !== newPath) { - router.push(newPath) - } else { - router.refresh() - } - }) - }, 0) + + startTransition(() => { + if (pathname !== newPath) { + router.push(newPath) + } else { + router.refresh() + } + }) } + return (
diff --git a/components/utility/home-redirector.tsx b/components/utility/home-redirector.tsx index f31a590..bee77db 100644 --- a/components/utility/home-redirector.tsx +++ b/components/utility/home-redirector.tsx @@ -20,7 +20,6 @@ export default function HomeRedirector() { console.log('[HomeRedirector] localStorage preferred:', preferred) if (!preferred || !isValidLocale(preferred)) { - console.log('[HomeRedirector] No valid preferred language found.') return } @@ -35,7 +34,7 @@ export default function HomeRedirector() { if (currentPath === "/" && !hasLocaleInPath) { const newPath = `/${preferred}${currentPath}` - console.log('[HomeRedirector] Redirecting to:', newPath) + // console.log('[HomeRedirector] Redirecting to:', newPath) router.replace(newPath) } else { console.log('[HomeRedirector] Skipping redirect.')