Guide

通过模块安装

如何通过模块内部的 `installModule` 安装 Nuxt i18n。

如果您是 模块作者 并希望您的模块安装 Nuxt i18n,您可以使用 installModule(),但您需要为 vueI18nlangDir 和在 locales 中配置的路径解析。

我们强烈建议使用 layers 进行完整模块安装,而不是使用 installModule(),因为层按优先级合并,这允许项目按需覆盖选项,并且不会导致多个层为 Nuxt i18n 模块提供选项时的冲突。

如果您只想让您的模块提供翻译,考虑使用在 extend-messages 中描述的钩子。

请注意,在使用 installModule() 时,传递的选项本质上具有比任何层(包括项目层)更高的优先级,选项在可能和适用时合并,但在其他情况下将覆盖配置。

示例:

import { createResolver, defineNuxtModule } from '@nuxt/kit'

export default defineNuxtModule({
  async setup(options, nuxt) {
    const { resolve } = createResolver(import.meta.url)

    // 需要解析路径,以便使用绝对路径
    await installModule('@nuxtjs/i18n', {
      vueI18n: resolve('./i18n.config.ts'),
      langDir: resolve('./lang'),
      locales: [
        {
          code: 'en',
          file: resolve('./lang/en.json'),
        },
        {
          code: 'fr',
          file: resolve('./lang/fr.json'),
        },
      ]
    })
  }
})

现在项目可以访问新消息,并可以通过 $t('my-module-example.hello') 使用它们。