我试图在 Next.js i18n 中设置我的默认语言,但总是将“En”作为默认语言,称为后备。
我也收到此错误:
错误:[@formatjs/intl 错误 MISSING_DATA] 缺少区域设置的区域设置数据:Intl.NumberFormat 中的“sq”。使用默认区域设置:“en”作为后备
module.exports = {
i18n: {
locales: ['sq', 'en'],
defaultLocale: "sq",
}
}
Next.js 将根据页面请求中发送的 Accept-Language
标头,
自动检测用户喜欢哪种语言环境。
在您的情况下,虽然您的默认区域设置是
sq
,但在 en
标头中检测到 Accept-Language
区域设置,因此您会被重定向到区域设置前缀路径。
可以通过在 i18n 选项中将
localeDetection
设置为 false
来禁用此行为。
// next.config.js
module.exports = {
i18n: {
locales: ['sq', 'en'],
defaultLocale: 'sq',
localeDetection: false
}
}
来自禁用自动区域设置文档:
当
设置为localeDetection
Next.js 将不再 根据用户的首选区域设置自动重定向,并将 仅提供从基于语言环境的语言环境检测到的语言环境信息 如上所述的域或区域设置路径。false
顺便说一句,关于
@formatjs/intl
错误,它表明您使用的环境/浏览器不支持 sq
区域设置。您可能需要研究 @formatjs/intl-numberformat
来填充该区域设置数据。
如果您将使用相同的方式使用
i18n
(在 next.js v13+ 上)将 App Router
实现到 next.js 应用程序,很高兴知道:
locale、locales、defaultLocales、domainLocales 值已 删除是因为不再需要内置 i18n Next.js 功能 在应用程序目录中。
取自迁移路由挂钩文档。
使用
App Router
实现 i18n 的有用链接: