如何使用nuxt-i18n

时间:2019-01-31 14:50:30

标签: nuxt.js nuxt-i18n

我正在进行网站的内部化工作,到目前为止,nuxt-i18n模块为我服务很好。但是,我还没有弄清楚如何从服务器获取和加载路径的转换。

在进行通用翻译的情况下,我从服务器和初始化中获取所有内容,并使用消息填充存储。然后,我只需按照以下步骤从商店中导出翻译。

// en-US.js
import store from '../store';

export default store().state.dictionary.labels.en;

然后按照documentation

中的说明进行延迟加载

这是我的配置

  // nuxt.config.js
  modules: [
    ['nuxt-i18n', {
      locales: [
        {
          name: 'Czech',
          code: 'cs',
          iso: 'cs-CS',
          file: 'cs-CS.js',
        },
        {
          name: 'English',
          code: 'en',
          iso: 'en-US',
          file: 'en-US.js',
        },
      ],
      strategy: 'prefix_except_default',
      langDir: 'lang/',
      lazy: true,
      defaultLocale: 'cs',
    }],
  ],

但是,似乎在自定义路径转换的情况下未实现。理想情况下,我想使用第一种mentioned方法,该方法在nuxt config中定义路径转换。

所以我问,我能以某种方式做些类似的事情吗?

  modules: [
    ['nuxt-i18n', {
      ...
      pages: [
        {
          name: 'Czech',
          code: 'cs',
          iso: 'cs-CS',
          file: 'pages-cs.js',
        },
        {
          name: 'English',
          code: 'en',
          iso: 'en-US',
          file: 'pages-en.js',
        },
      ],
    }],
  ],

最后,我也会对 component 方法感到满意。但是,由于nuxtI18n是属性而不是函数,因此我无权访问Nuxt(this),因此也无权访问该应用程序的商店。如果第一种选择不可行,是否有办法将存储中的值传递给nuxtI18n属性?

我希望能够做到这一点。

  // contact.vue
  nuxtI18n: {
    paths: {
      cs: this.$store.state.pages.contact.cs
      en: this.$store.state.pages.contact.en
    },
  },

非常感谢任何帮助。

0 个答案:

没有答案