defaultLocale 未在 Next.js i18n 中保留默认语言

Rik*_*iks 17 javascript internationalization react-intl next.js

我试图在 Next.js i18n 中设置我的默认语言,但总是将“En”作为默认语言,称为后备。

我也收到这个错误:

错误:[@formatjs/intl 错误 MISSING_DATA] 缺少区域设置的区域设置数据:Intl.NumberFormat 中的“sq”。使用默认区域设置:“en”作为后备

module.exports = {
    i18n: {
        locales: ['sq', 'en'],
        defaultLocale: "sq",
    }
}
Run Code Online (Sandbox Code Playgroud)

jul*_*ves 38

Next.js 将根据页面请求中发送的标头自动检测用户喜欢的区域设置。Accept-Language

在您的情况下,虽然您的默认区域设置是sq,但en会在标头中检测到区域设置Accept-Language,因此您会被重定向到以区域设置为前缀的路径。

可以通过在 i18n 选项中localeDetection设置来禁用此行为。false

// next.config.js

module.exports = {
    i18n: {
        locales: ['sq', 'en'],
        defaultLocale: 'sq',
        localeDetection: false
    }
}
Run Code Online (Sandbox Code Playgroud)

来自禁用自动区域设置检测文档:

localeDetection设置为falseNext.js 将不再根据用户的首选区域设置自动重定向,并且仅提供从基于区域设置的域或区域设置路径检测到的区域设置信息,如上所述。


作为旁注,关于该@formatjs/intl错误,它表明您正在使用不支持该sq区域设置的环境/浏览器。您可能想要研究@formatjs/intl-numberformat填充该区域设置数据。