Nuxt i18n module provides runtime hooks to perform specific tasks based on your app's language.
'i18n:beforeLocaleSwitch'Called before the app's locale is switched, the newLocale property can be overridden to change the locale being switched to.
Parameters:
oldLocalestringnewLocalestringinitialSetupstringtrue if it's the initial locale switch that triggers on app load. It's a special case since the locale is not technically set yet so we're switching from no locale to locale.contextNuxtAppconst context = useNuxtApp() outside the hook scope instead.Returns: string | null
'i18n:localeSwitched'Called right after the app's locale has been switched.
Parameters:
oldLocalestringnewLocalestringA typical usage would be to define those callbacks via a plugin where you can access the app's context (useful if you need to change Axios' config when the language changes for example).
export default defineNuxtPlugin(nuxtApp => {
// called right before setting a new locale
nuxtApp.hook('i18n:beforeLocaleSwitch', (options) => {
console.log('onBeforeLanguageSwitch', options.oldLocale, options.newLocale, options.initialSetup)
// You can override the new locale by setting it to a different value
if(options.newLocale === 'fr') {
options.newLocale = 'en'
}
})
// called right after a new locale has been set
nuxtApp.hook('i18n:localeSwitched', (options) => {
console.log('onLanguageSwitched', options.oldLocale, options.newLocale)
})
})