nuxt-i18n的延迟加载语言环境

时间:2020-02-17 11:47:46

标签: vue.js internationalization nuxt.js nuxt-i18n

在nuxt-i18n中,您必须使用您的应用程序将支持的语言环境来指定locales属性,如下所示:

  locales: [
    {
      code: 'en',
      file: 'en-US.js'
    },
    {
      code: 'es',
      file: 'es-ES.js'
    },
    {
      code: 'fr',
      file: 'fr-FR.js'
    }
  ],

这可以从api端点获取,然后填充数组吗?

我在本期https://github.com/nuxt-community/nuxt-i18n/issues/256#issuecomment-505344965中看到了类似的内容,但我不知道如何运行该代码,甚至可能。

1 个答案:

答案 0 :(得分:0)

解决方案很简单。 Nuxt允许您将异步函数导出为选项,这样我就可以获取数据,然后将其分配给i18n对象。

https://nuxtjs.org/guide/configuration/#asynchronous-configuration

export default async () => {
  const data = await getCountries()

  const locales = []

  for (const locale of data) {
    locales.push({
      code: locale,
      file: `${locale}.json`
    })
  }

  return {
      build: {
          ...
      },
      env: {
          ...
      },
      modules: [
          'nuxt-i18n',
          ...
      ],
      i18n: {
          locales,
          strategy: 'prefix',
          detectBrowserLanguage: false,
          lazy: true,
          defaultLocale: 'es',
          langDir: 'translations/'
      },
      ...
  }
}
相关问题