扩展消息钩子
Nuxt 钩子用于扩展项目中的 i18n 消息。
如果您是模块作者,并且希望该模块为您的项目提供额外的消息,您可以通过使用 'i18n:registerModule' 钩子将它们合并到正常加载的消息中。
如果您的模块使用翻译内容并希望提供良好的默认翻译,这尤其有用。
在您的模块设置文件中,监听 Nuxt 的 'i18n:registerModule' 钩子并
注册您的 i18n 配置,这类似于 懒加载翻译 的配置方式。
以这种方式添加的翻译将在项目中的翻译加载之后,以及扩展层加载之前加载。
示例:
import { createResolver, defineNuxtModule } from '@nuxt/kit'
export default defineNuxtModule({
async setup(options, nuxt) {
const { resolve } = createResolver(import.meta.url)
nuxt.hook('i18n:registerModule', register => {
register({
// langDir 路径需要解析
langDir: resolve('./lang'),
locales: [
{
code: 'en',
file: 'en.json',
},
{
code: 'fr',
file: 'fr.json',
},
]
})
})
}
})
{
"my-module-example": {
"hello": "Hello from external module"
}
}
{
"my-module-example": {
"hello": "Bonjour depuis le module externe"
}
}
现在项目可以访问新消息,并通过 $t('my-module-example.hello') 使用它们。
因为模块的消息与项目的消息合并,所以给它们添加前缀更安全。主项目消息将始终覆盖模块提供的消息。