运行时钩子
Nuxt i18n 模块提供了运行时钩子,你可以使用它们根据你的应用程序语言执行特定任务。
Nuxt i18n 模块 提供了运行时钩子,用于根据你的应用程序语言执行特定任务。
钩子
'i18n:beforeLocaleSwitch'
在应用程序语言环境切换之前调用,可以覆盖 newLocale 属性以更改正在切换到的语言环境。
参数:
oldLocale- 类型:
string - 切换之前的应用程序语言环境
- 类型:
newLocale- 类型:
string - 切换之后的应用程序语言环境
- 类型:
initialSetup- 类型:
string - 如果是应用程序加载时触发的初始语言环境切换,则设置为
true。这是一个特殊情况,因为语言环境技术上尚未设置,因此我们正在从无语言环境切换到有语言环境。
- 类型:
context- 类型:
NuxtApp - Nuxt 应用程序,此属性已弃用,可以在钩子范围之外使用
const context = useNuxtApp()来实现相同的功能。
- 类型:
返回: string | null
'i18n:localeSwitched'
在应用程序语言环境切换之后立即调用。
参数:
oldLocale- 类型:
string - 切换之前的应用程序语言环境
- 类型:
newLocale- 类型:
string - 切换之后的应用程序语言环境
- 类型:
用法
典型的用法是通过插件定义这些回调,在插件中你可以访问应用程序的上下文(例如,如果你需要在语言更改时更改 Axios 的配置,这将非常有用)。
/plugins/i18n.ts
export default defineNuxtPlugin(nuxtApp => {
// called right before setting a new locale
nuxtApp.hook('i18n:beforeLocaleSwitch', (switch) => {
console.log('onBeforeLanguageSwitch', switch.oldLocale, switch.newLocale, switch.initialSetup)
// You can override the new locale by setting it to a different value
if(switch.newLocale === 'fr') {
switch.newLocale = 'en'
}
})
// called right after a new locale has been set
nuxtApp.hook('i18n:localeSwitched', (switch) => {
console.log('onLanguageSwitched', switch.oldLocale, switch.newLocale)
})
})