From d6a7c26849ac23a91824b4959df1f09a6bfc7cbf Mon Sep 17 00:00:00 2001 From: hailin Date: Thu, 17 Apr 2025 13:07:23 +0800 Subject: [PATCH] . --- middleware.ts | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/middleware.ts b/middleware.ts index 422ff21..661d31a 100644 --- a/middleware.ts +++ b/middleware.ts @@ -4,12 +4,28 @@ import { NextResponse, type NextRequest } from "next/server" import i18nConfig from "./i18nConfig" export async function middleware(request: NextRequest) { + const { pathname } = request.nextUrl + + // ✅ 读取 cookie 中用户偏好的语言 + const preferredLanguage = request.cookies.get('preferred-language')?.value + + // ✅ 判断是否需要重定向到带有语言前缀的 URL + const isMissingLocalePrefix = !i18nConfig.locales.some(locale => + pathname.startsWith(`/${locale}/`) || pathname === `/${locale}` + ) + + if (preferredLanguage && isMissingLocalePrefix) { + const url = request.nextUrl.clone() + url.pathname = `/${preferredLanguage}${pathname}` + return NextResponse.redirect(url) + } + + // ✅ 原始的 i18n 路由逻辑(保留) const i18nResult = i18nRouter(request, i18nConfig) if (i18nResult) return i18nResult try { const { supabase, response } = createClient(request) - const session = await supabase.auth.getSession() const redirectToChat = session && request.nextUrl.pathname === "/" @@ -22,9 +38,7 @@ export async function middleware(request: NextRequest) { .eq("is_home", true) .single() - if (!homeWorkspace) { - throw new Error(error?.message) - } + if (!homeWorkspace) throw new Error(error?.message) return NextResponse.redirect( new URL(`/${homeWorkspace.id}/chat`, request.url) @@ -34,9 +48,7 @@ export async function middleware(request: NextRequest) { return response } catch (e) { return NextResponse.next({ - request: { - headers: request.headers - } + request: { headers: request.headers } }) } }