在 nuxt-i18n 中加载 yaml 文件

Load yaml files in nuxt-i18n

如何使用 nuxt-i18n 从 Nuxt 2 中的 yaml 文件加载语言环境?

我已经将路径添加到 nuxt.config.js:

{
  i18n: {
    vueI18nLoader: true,
    langDir: '~/locales/',
    locales: [
      { code: 'en', iso: 'en-GB', file: 'en.yaml', dir: 'ltr' },
      { code: 'de', iso: 'de-DE', file: 'de.yaml', dir: 'ltr' },
    ],
    defaultLocale: 'en',
  }
}

我启用了 vue-i18n-loader,它带来了自动 yaml 支持和 i18n 块。

您可以将 Nuxt 配置为使用 yaml-loader 作为您的语言环境:

// nuxt.config.js
{
  // ...
  build: {
    // ...
    extend(config) {
      config.module.rules.push({
        test: /\.ya?ml$/,
        type: 'json',
        use: 'yaml-loader'
      })
    }
  }
}

在此处了解有关在 Nuxt 中扩展 Webpack 配置的更多信息:https://nuxtjs.org/docs/configuration-glossary/configuration-build#extend

这将允许您在 Vue 组件中加载 nuxt-i18n / vue-i18n. However, it will also clash with the custom i18n block (<i18n>) 的 yaml 文件(前提是您使用 SFC 模式)。

为防止这种情况发生,您可以将上述规则更改为仅适用于 locales/ 目录(或您想要的任何其他目录)中的 yaml 文件:

// nuxt.config.js
{
  // ...
  build: {
    // ...
    extend(config) {
      config.module.rules.push({
        test: /locales\/.*\.ya?ml$/, // <---
        type: 'json',
        use: 'yaml-loader'
      })
    }
  }
}

现在您可以使用 locales/ 目录中的 i18n 块和 yaml 文件。