diff --git a/components/ui/language-switcher.tsx b/components/ui/language-switcher.tsx index 306303b..a6b82cc 100644 --- a/components/ui/language-switcher.tsx +++ b/components/ui/language-switcher.tsx @@ -25,19 +25,27 @@ export function LanguageSwitcher() { const handleChange = (e: React.ChangeEvent) => { const newLocale = e.target.value - // 保存用户选择 if (typeof window !== 'undefined') { localStorage.setItem('preferred-language', newLocale) } - // 替换语言部分的路径 + // 拆解当前路径 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('/') startTransition(() => { router.push(newPath) - router.refresh() + router.refresh() }) }