This commit is contained in:
parent
ec9a1cbe31
commit
f2130d7010
|
|
@ -1,37 +1,37 @@
|
|||
'use client'
|
||||
|
||||
import { useEffect } from 'react'
|
||||
import { useRouter, usePathname } from 'next/navigation'
|
||||
import { useRouter } from 'next/navigation'
|
||||
import i18nConfig from '@/i18nConfig'
|
||||
|
||||
const isValidLocale = (locale: string): boolean => {
|
||||
const localeList = [...i18nConfig.locales] as string[]
|
||||
return localeList.includes(locale)
|
||||
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 pathname = usePathname()
|
||||
|
||||
useEffect(() => {
|
||||
if (pathname !== '/') return
|
||||
|
||||
const preferred = localStorage.getItem('preferred-language')
|
||||
const currentPath = window.location.pathname
|
||||
|
||||
console.log('[HomeRedirector] preferred:', preferred)
|
||||
console.log('[HomeRedirector] currentPath:', currentPath)
|
||||
|
||||
if (
|
||||
preferred &&
|
||||
isValidLocale(preferred) &&
|
||||
!currentPath.startsWith(`/${preferred}/`)
|
||||
) {
|
||||
if (!preferred || !isValidLocale(preferred)) {
|
||||
console.log('[HomeRedirector] No valid preferred language found.')
|
||||
return
|
||||
}
|
||||
|
||||
const pathLocale = currentPath.split('/')[1]
|
||||
const hasLocaleInPath = isValidLocale(pathLocale)
|
||||
|
||||
if (!hasLocaleInPath) {
|
||||
const newPath = `/${preferred}${currentPath}`
|
||||
console.log('[HomeRedirector] Redirecting to:', newPath)
|
||||
router.replace(newPath)
|
||||
} else {
|
||||
console.log('[HomeRedirector] No redirect needed.')
|
||||
console.log('[HomeRedirector] Already has valid locale in path, skipping redirect.')
|
||||
}
|
||||
}, [])
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue