This commit is contained in:
parent
92adad6b80
commit
1fb0a45aa9
|
|
@ -13,25 +13,22 @@ export function LanguageSwitcher() {
|
||||||
const currentLocale = pathname.split('/')[1] || i18nConfig.defaultLocale
|
const currentLocale = pathname.split('/')[1] || i18nConfig.defaultLocale
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
// 只在加载时检查,避免多次保存 cookie
|
||||||
if (typeof window !== 'undefined') {
|
if (typeof window !== 'undefined') {
|
||||||
const saved = localStorage.getItem('preferred-language')
|
const saved = localStorage.getItem('preferred-language')
|
||||||
const isLocaleInPath = i18nConfig.locales.includes(currentLocale as any)
|
const isLocaleInPath = i18nConfig.locales.includes(currentLocale as any)
|
||||||
|
|
||||||
// 只有在 URL 中没有 locale 前缀时才写入 cookie 和 localStorage,避免错误覆盖
|
// 只有在 URL 中没有 locale 前缀时才进行处理
|
||||||
if (!isLocaleInPath && saved !== currentLocale) {
|
if (!isLocaleInPath && saved !== currentLocale) {
|
||||||
localStorage.setItem('preferred-language', currentLocale)
|
// 不做 cookie 写入,除非用户选择语言
|
||||||
document.cookie = `preferred-language=${currentLocale}; path=/; max-age=31536000`
|
console.log('[LanguageSwitcher] No need to update cookie, currentLocale:', currentLocale)
|
||||||
console.log('[LanguageSwitcher] set preferred-language to:', currentLocale)
|
|
||||||
|
|
||||||
// 验证 cookie 是否成功写入
|
|
||||||
const cookieValue = document.cookie
|
|
||||||
console.log('[LanguageSwitcher] Current cookies:', cookieValue)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, [currentLocale])
|
}, [currentLocale])
|
||||||
|
|
||||||
const handleChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
|
const handleChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
|
||||||
const newLocale = e.target.value
|
const newLocale = e.target.value
|
||||||
|
// 仅在用户选择语言后保存 cookie
|
||||||
document.cookie = `preferred-language=${newLocale}; path=/; max-age=31536000`
|
document.cookie = `preferred-language=${newLocale}; path=/; max-age=31536000`
|
||||||
|
|
||||||
// 验证 cookie 是否成功写入
|
// 验证 cookie 是否成功写入
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue