vue监听i18n语言切换

当某个页面的中英文内容是变化的,可以存储到数据库,然后根据不同的语言判断取不同的值

watch: {
    '$i18n.locale'(newValue) {
      if (this.$i18n.locale === 'zh-CN') {
       
      } else if (this.$i18n.locale === 'en-US') {
        
      }
    }
  }

 

如果在点击切换语言后,setup的内容没有自动翻译,可能是因为在setup函数,内容的翻译是在组件初始化时进行的,而切换语言后组件没有重新初始化,导致内容没有更新。 要解决这个问题,您可以使用Vue 3的响应式特性来监听语言变化,并在语言发生变化时重新翻译内容。 首先,在setup函数导入`useI18n`和`reactive`函数: ```javascript import { useI18n, reactive } from 'vue-i18n' ``` 然后,创建一个响应式对象来存储需要翻译的内容: ```javascript const state = reactive({ greeting: '' }) ``` 接下来,在setup函数获取`i18n`实例和翻译函数`t`: ```javascript const { t, i18n } = useI18n() ``` 然后,使用`watch`函数监听语言变化,并在语言发生变化时更新翻译的内容: ```javascript watch(() => i18n.locale, () => { state.greeting = t('greeting') }) ``` 最后,将需要翻译的内容绑定到模板: ```html <template> <div> <p>{{ state.greeting }}</p> <button @click="switchToEnglish">Switch to English</button> <button @click="switchToChinese">切换文</button> </div> </template> ``` 完整的示例代码如下: ```javascript import { useI18n, reactive, watch } from 'vue-i18n' export default { setup() { const { t, i18n } = useI18n() const state = reactive({ greeting: '' }) watch(() => i18n.locale, () => { state.greeting = t('greeting') }) const switchToEnglish = () => { i18n.locale = 'en' } const switchToChinese = () => { i18n.locale = 'zh' } return { state, switchToEnglish, switchToChinese } } } ``` 通过使用响应式对象和watch函数,您可以在切换语言后自动更新翻译的内容。请确保正确设置i18n的locale属性,并且在切换语言时更新它。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值