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

defaultLocale is not keeping default lang in Next.js i18n

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

我也收到这个错误:

Error: [@formatjs/intl Error MISSING_DATA] Missing locale data for locale: "sq" in Intl.NumberFormat. Using default locale: "en" as fallback

module.exports = {
    i18n: {
        locales: ['sq', 'en'],
        defaultLocale: "sq",
    }
}

Next.js 将 automatically detect 用户根据页面请求中发送的 Accept-Language header 偏好的语言环境。

在您的情况下,虽然您的默认语言环境是 sq,但在 Accept-Language header 中检测到 en 语言环境,因此您被重定向到 locale-prefixed路径。

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

// next.config.js

module.exports = {
    i18n: {
        locales: ['sq', 'en'],
        defaultLocale: 'sq',
        localeDetection: false
    }
}

来自 Disabling Automatic Locale Detection 文档:

When localeDetection is set to false Next.js will no longer automatically redirect based on the user's preferred locale and will only provide locale information detected from either the locale based domain or locale path as described above.


附带说明一下,关于 @formatjs/intl 错误,它表示您使用的 environment/browser 不支持 sq 语言环境。您可能需要查看 @formatjs/intl-numberformat 以填充该语言环境数据。