如何在nextjs中继续使用浏览器语言自动检测的同时自定义语言环境前缀?

问题描述 投票:0回答:1

我在我的 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。

有办法解决这个问题吗?

reactjs typescript next.js internationalization
1个回答
0
投票

我没有尝试过,但我认为你可以尝试: 这样你就可以更新:

enter image description here

export const { useI18n, useScopedI18n, I18nProviderClient } = createI18nClient({
  us: () => import('./en'),
  de: () => import('./de')
})
© www.soinside.com 2019 - 2024. All rights reserved.