This commit is contained in:
parent
684764a90f
commit
85cf4c1a92
|
|
@ -25,14 +25,22 @@ export function LanguageSwitcher() {
|
||||||
const handleChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
|
const handleChange = (e: React.ChangeEvent<HTMLSelectElement>) => {
|
||||||
const newLocale = e.target.value
|
const newLocale = e.target.value
|
||||||
|
|
||||||
// 保存用户选择
|
|
||||||
if (typeof window !== 'undefined') {
|
if (typeof window !== 'undefined') {
|
||||||
localStorage.setItem('preferred-language', newLocale)
|
localStorage.setItem('preferred-language', newLocale)
|
||||||
}
|
}
|
||||||
|
|
||||||
// 替换语言部分的路径
|
// 拆解当前路径
|
||||||
const segments = pathname.split('/')
|
const segments = pathname.split('/')
|
||||||
segments[1] = newLocale
|
|
||||||
|
// 如果路径前缀是语言码,则替换
|
||||||
|
const isLocaleInPath = i18nConfig.locales.includes(segments[1])
|
||||||
|
if (isLocaleInPath) {
|
||||||
|
segments[1] = newLocale
|
||||||
|
} else {
|
||||||
|
// 否则插入语言前缀
|
||||||
|
segments.unshift(newLocale)
|
||||||
|
}
|
||||||
|
|
||||||
const newPath = segments.join('/')
|
const newPath = segments.join('/')
|
||||||
|
|
||||||
startTransition(() => {
|
startTransition(() => {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue