跨不同域路由的子路径路由相同的语言环境(Next.JS & i18n)

时间:2021-07-06 10:52:29

标签: javascript localization internationalization next.js

手头的任务:

一个在多个国家/地区运作的网站,拥有自己的一系列产品/服务/等。对于每个国家。它还需要翻译成不同的语言,具体取决于国家/地区/顶级域名。翻译语言应该在某些领域重复。结果应该是这样的:

US
sitename.com - US market, english language (US)

Germany
sitename.de - native language
sitename.de/en - english language (INT)

France
sitename.fr - native language
sitename.fr/en - english language (INT)

Netherlands
sitename.nl - native language
sitename.nl/en - english language (INT)

United Kingdom
sitename.co.uk - english language (GB)

当前状态:

在我的 next.config.js 中,我有一个域路由配置,类似于以下示例:

module.exports = {
  ...
  i18n: {
    localeDetection: false,
    defaultLocale: 'en',
    locales: [],
    domains: [
      {
        domain: 'sitename.com',
        defaultLocale: 'en-US', 
        locales: []
      },
      {
        domain: 'sitename.de',
        defaultLocale: 'de-DE', 
        locales: ['en']
      },
      {
        domain: 'sitename.fr',
        defaultLocale: 'fr-FR', 
        locales: ['en']
      },
      {
        domain: 'sitename.nl',
        defaultLocale: 'nl-NL', 
        locales: ['en']
      },
      {
        domain: 'sitename.co.uk',
        defaultLocale: 'en-GB', 
        locales: []
      },
      // list of countries goes on ...
    ]
  }
}

不幸的是,Next.JS 不喜欢我的 conf 想法并拒绝与我合作,抛出以下错误:

Both sitename.de and sitename.fr configured the locale (en) but only one can. Remove it from one i18n.domains config to continue
Both sitename.fr and sitename.de configured the locale (en) but only one can. Remove it from one i18n.domains config to continue
Both sitename.nl and sitename.de configured the locale (en) but only one can. Remove it from one i18n.domains config to continue
Error: Invalid i18n.domains values:
{"domain":"sitename.de","defaultLocale":"de-DE","locales":["en"]}
{"domain":"sitename.fr","defaultLocale":"fr-FR","locales":["en"]}
{"domain":"sitename.nl","defaultLocale":"nl-NL","locales":["en"]}

domains value must follow format { domain: 'example.fr', defaultLocale: 'fr', locales: ['fr'] }.
See more info here: https://nextjs.org/docs/messages/invalid-i18n-config

问题:

有没有办法在 NEXT.JS 中实际实现这种本地化,其中某些域共享一种语言,但不一定需要在列表中包含所有其他语言?

0 个答案:

没有答案