vxe-table 如何定义国际化

官网例子:https://xuliangzhan_admin.gitee.io/vxe-table/#/table/start/i18n

先引入i18nnpm install vue-i18n
创建 src/i18n/index.js

 import Vue from 'vue'
    import VueI18n from 'vue-i18n'
    import zhCN from 'vxe-table/lib/locale/lang/zh-CN'
    import enUS from 'vxe-table/lib/locale/lang/en-US'

    const messages = {
      zh_CN: {
        ...zhCN
      },
      en_US: {
        ...enUS
      }
    }

    const i18n = new VueI18n({
      locale: 'zh_CN', // 这里可更改语言,改成enUS 则为英文
      messages,
    })

    export default i18n

3、挂载vxetable上

        import Vue from 'vue'
        import i18n from './i18n'
        import VXETable from 'vxe-table'
        import zhCN from 'vxe-table/lib/locale/lang/zh-CN'
        import enUS from 'vxe-table/lib/locale/lang/en-US'

        VXETable.setup({
          // 对组件内置的提示语进行国际化翻译
          i18n: (key, args) => i18n.t(key, args)
        })

        Vue.use(VXETable)

        new Vue({ i18n }).$mount('#app')

重点:我们按照官网上的例子很容易将文字改为想要的语言,但是如何做到动态切换,官网并没有叫我们如何做。而上面的那种挂载方式,只会执行一遍,因为vue是单页面应用,如果你做成全局的更改,可以将用户选择的语言设置在localstage内,然后在上面的index.js 'locale: ‘zh_CN’, // 这里可更改语言,改成enUS 则为英文’设置取值即可,用户切换语言之后,我们把新语言放在localstage内紧着这刷新浏览器即可。这是全局的方式
如果我想做局部的怎么做,下面这个例子,是以路由的方式动态切换的,业务场景:我有某几个菜单页面为英文的,为了给老外看,其余全是中文的,我在中文页面和英文页面来回的切换,上面的例子就不行了,因为它只执行一遍。只会执行第一次的语言。下面的例子叫你如何动态的改国际化语言
1、先引入i18n npm install vue-i18n
2、找到定义router的beforeEach 的文件,在路由切换时做更改

import router from './router'

// vxe-table 国际化配置
import VueI8n from 'vue-i18n'
import zhCN from 'vxe-table/lib/locale/lang/zh-CN'
import enUS from 'vxe-table/lib/locale/lang/en-US'

        VXETable.setup({
          // 对组件内置的提示语进行国际化翻译
          i18n: (key, args) => i18n.t(key, args)
        })
const messages = {
          zh_CN: {
            ...zhCN
          },
          en_US: {
            ...enUS
          }
        }

router.beforeEach((to, from , next) => {
  // 在这里我们根据路由的判断,告诉组件接下来用什么语言显示
  //动态国际化
  let i18n = 'zh_CH'
  if(to.fullPath.indexOf(['/csb/']) !== -1) {
    i18n = new VueI18n({
      locale: 'en_US'
      messages
    })
  } else {
    i18n = new VueI18n({
      locale: 'zh_CN'
      messages
    })
  }
  VXETable.setup({
    i18n: (key, args) => i18n.t(key, args)
  })

  // 你的路由监听代码
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值