chatbot-ui/components/utility/home-redirector.tsx

47 lines
1.4 KiB
TypeScript

'use client'
import { useEffect } from 'react'
import { useRouter } from 'next/navigation'
import i18nConfig from '@/i18nConfig'
import { useTranslation } from 'react-i18next' // 引入 useTranslation
const isValidLocale = (locale: string): locale is (typeof i18nConfig.locales)[number] => {
return (i18nConfig.locales as readonly string[]).includes(locale)
}
export default function HomeRedirector() {
const router = useRouter()
const { i18n } = useTranslation() // 获取 i18n 实例
useEffect(() => {
const preferred = localStorage.getItem('preferred-language')
const currentPath = window.location.pathname
console.log('[HomeRedirector] localStorage preferred:', preferred)
if (!preferred || !isValidLocale(preferred)) {
return
}
// ✅ 同步写入 cookie
//document.cookie = `preferred-language=${preferred}; path=/; max-age=31536000` // 1 年
// 修改 i18n 中的语言
i18n.changeLanguage(preferred) // 更新 i18n 的 locale
const pathLocale = currentPath.split('/')[1]
const hasLocaleInPath = isValidLocale(pathLocale)
if (currentPath === "/" && !hasLocaleInPath) {
const newPath = `/${preferred}${currentPath}`
// console.log('[HomeRedirector] Redirecting to:', newPath)
router.replace(newPath)
} else {
console.log('[HomeRedirector] Skipping redirect.')
}
}, [])
return null
}