Extending messages hook
Nuxt hooks to extend i18n messages in your project.
If you're a module author and want that module to provide extra messages for your project, you can merge them into the normally loaded messages by using the
This is particularly useful if your module uses translated content and you want to offer nice default translations.
In your module's setup file listen to the Nuxt
Translations added this way will be loaded after those added in your project, and before extended layers.
Example:
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 path needs to be resolved
langDir: resolve('./lang'),
locales: [
{
code: 'en',
file: 'en.json',
},
{
code: 'fr',
file: 'fr.json',
},
]
})
})
}
})
Now the project has access to new messages and can use them through
These hooks will only work for modules registered before the @nuxtjs/i18n module.
import ExampleModule from './my-module-example/module.ts' // import your custom module
export default defineNuxtConfig({
modules: [
ExampleModule,
'@nuxtjs/i18n',
],
})
Because module's messages are merged with the project's ones, it's safer to prefix them. Main project messages will always override messages provided by modules.