This commit is contained in:
hailin 2025-04-18 10:57:57 +08:00
parent b22645415b
commit 76dff6eac8
1 changed files with 23 additions and 23 deletions

View File

@ -5,38 +5,38 @@ import i18nConfig from "./i18nConfig"
export async function middleware(request: NextRequest) { export async function middleware(request: NextRequest) {
const { pathname } = request.nextUrl const { pathname } = request.nextUrl
const preferredLanguage = request.cookies.get("preferred-language")?.value //const preferredLanguage = request.cookies.get("preferred-language")?.value
console.log("[middleware] ⏩ Incoming request") console.log("[middleware] ⏩ Incoming request")
console.log("[middleware] → pathname:", pathname) console.log("[middleware] → pathname:", pathname)
console.log("[middleware] → preferred-language from cookie:", preferredLanguage) //console.log("[middleware] → preferred-language from cookie:", preferredLanguage)
// ✅ 1. i18nRouter 优先处理 // ✅ 1. i18nRouter 优先处理
const i18nResult = i18nRouter(request, i18nConfig) // const i18nResult = i18nRouter(request, i18nConfig)
if (i18nResult) { // if (i18nResult) {
console.log("[middleware] ✅ i18nRouter handled redirect") // console.log("[middleware] ✅ i18nRouter handled redirect")
return i18nResult // return i18nResult
} // }
// ✅ 2. 仅当不是 /[locale] 和 /[locale]/ 路径时才进行 cookie-based redirect // ✅ 2. 仅当不是 /[locale] 和 /[locale]/ 路径时才进行 cookie-based redirect
const isOnlyLocale = i18nConfig.locales.some(locale => pathname === `/${locale}`) // const isOnlyLocale = i18nConfig.locales.some(locale => pathname === `/${locale}`)
const hasLocalePrefix = i18nConfig.locales.some( // const hasLocalePrefix = i18nConfig.locales.some(
locale => pathname.startsWith(`/${locale}/`) || pathname === `/${locale}` // locale => pathname.startsWith(`/${locale}/`) || pathname === `/${locale}`
) // )
console.log("[middleware] → hasLocalePrefix:", hasLocalePrefix) // console.log("[middleware] → hasLocalePrefix:", hasLocalePrefix)
if ( // if (
preferredLanguage && // preferredLanguage &&
!hasLocalePrefix && // !hasLocalePrefix &&
!isOnlyLocale && // !isOnlyLocale &&
(i18nConfig.locales as readonly string[]).includes(preferredLanguage) // (i18nConfig.locales as readonly string[]).includes(preferredLanguage)
) { // ) {
const url = request.nextUrl.clone() // const url = request.nextUrl.clone()
url.pathname = `/${preferredLanguage}${pathname}` // url.pathname = `/${preferredLanguage}${pathname}`
console.log("[middleware] 🚀 Redirecting to preferred language:", url.pathname) // console.log("[middleware] 🚀 Redirecting to preferred language:", url.pathname)
return NextResponse.redirect(url) // return NextResponse.redirect(url)
} // }
try { try {
const { supabase, response } = createClient(request) const { supabase, response } = createClient(request)