我在我的 nextjs 应用程序中使用 i18n 的 next-international 包。 大部分工作正常,但我想自定义区域设置的前缀。
简而言之,我们想要的是默认语言环境的
localhost:3000/
,但英语语言环境的 localhost:3000/us
,而不是接受语言的 localhost:3000/en
。但是,想继续使用浏览器语言检测。
在我的 middleware.ts 中,目前仅适用于
/en
。
export const I18nMiddleware = createI18nMiddleware({
locales: ["en", "de"],
defaultLocale: "de",
urlMappingStrategy: "rewriteDefault",
})
export default async function middleware(request: NextRequest) {
return I18nMiddleware(request)
}
因为我们从浏览器标头(接受语言)中检测到第一种语言,所以我们不能像
locales: ['us', 'de']
那样设置,因为浏览器只是告诉us
en值,否则它会重定向到defaultLocale。
有办法解决这个问题吗?