指南
从模块中安装
如何在模块内部使用 `installModule` 安装 Nuxt i18n。
如果你是模块作者并希望你的模块安装 Nuxt i18n,可以使用 installModule()
来实现,但你需要为 vueI18n
、langDir
以及 locales
中配置的路径进行解析。
我们强烈推荐使用 layers 进行完整的模块安装,而非使用
如果你只想让你的模块提供翻译内容,建议使用 extend-messages 中描述的钩子。
installModule()
。因为 layers 是通过优先级合并的,允许项目根据需求覆盖选项,并且如果多个 layer 为 Nuxt i18n 模块提供选项,不会造成冲突。如果你只想让你的模块提供翻译内容,建议使用 extend-messages 中描述的钩子。
注意,使用 installModule()
时,传递的选项本质上优先级高于任何 layer(包括项目层),选项在可能且适用时会合并,否则会覆盖配置。
示例:
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'),
},
]
})
}
})
{
"my-module-example": {
"hello": "Hello from external module"
}
}
{
"my-module-example": {
"hello": "Bonjour depuis le module externe"
}
}
现在项目可以访问新的消息,并能通过 $t('my-module-example.hello')
使用它们。