Nuxt i18n 模块 提供运行时钩子,用于根据应用的语言执行特定任务。
'i18n:beforeLocaleSwitch'在应用语言切换之前调用,可以通过重写 newLocale 属性来改变要切换的语言。
参数:
oldLocalestringnewLocalestringinitialSetupstringtrue。这是一个特殊情况,因为技术上语言尚未设置,所以是从无语言切换到某语言。contextNuxtAppconst context = useNuxtApp() 获取相同效果。返回值:string | null
'i18n:localeSwitched'在应用语言切换完成后立即调用。
参数:
oldLocalestringnewLocalestring典型用法是在插件中定义这些回调,这样可以访问应用上下文(例如当语言变更时需要更改 Axios 配置时非常有用)。
export default defineNuxtPlugin(nuxtApp => {
// 在设置新语言之前调用
nuxtApp.hook('i18n:beforeLocaleSwitch', (options) => {
console.log('onBeforeLanguageSwitch', options.oldLocale, options.newLocale, options.initialSetup)
// 你可以通过赋予不同值来覆盖新语言
if(options.newLocale === 'fr') {
options.newLocale = 'en'
}
})
// 在新语言设置完成后调用
nuxtApp.hook('i18n:localeSwitched', (options) => {
console.log('onLanguageSwitched', options.oldLocale, options.newLocale)
})
})