javascript 如何拦截国际化前缀的变化?

mkshixfv  于 2023-03-11  发布在  Java
关注(0)|答案(1)|浏览(112)

我们在nuxt中使用带前缀的i18n策略。
当前行为是当用户转到页面/时,它会重定向到/en,因为“en”是默认区域设置。
我想用自己的自定义逻辑拦截i18n重定向(前缀更改),这样在重定向到默认语言环境之前,它会读取存储在本地存储中的语言环境,如果存在,i18n应该使用存储的语言环境而不是默认语言环境。

oyxsuwqo

oyxsuwqo1#

您可以使用onBeforeLanguageSwitch回调函数。
从官方文件来看
在切换应用的区域设置之前调用。可用于通过返回新的区域设置代码来重写新的区域设置。
所以你可以创建一个插件来处理你的逻辑。例如(在官方文档中):
/plugins/i18n.js

export default function ({ app }) {
  // onBeforeLanguageSwitch called right before setting a new locale
  app.i18n.onBeforeLanguageSwitch = (oldLocale, newLocale, isInitialSetup, context) => {
    console.log(oldLocale, newLocale, isInitialSetup)
  }
  // onLanguageSwitched called right after a new locale has been set
  app.i18n.onLanguageSwitched = (oldLocale, newLocale) => {
    console.log(oldLocale, newLocale)
  }
}

相关问题