vue echart i18n 国际化处理

73 篇文章 0 订阅
39 篇文章 0 订阅

项目:数据大屏,采用vue2+echart+i18n

版本:

  • node :14.18.1
  • vue: 2.5.2
  • i18n:7.3.4
  • echarts: 4.9.0

1.安装依赖

npm install i18n

2.配置

main.js

import VueI18n from 'vue-i18n'
Vue.use(VueI18n) // 通过插件的形式挂载
const i18n = new VueI18n({
  locale: localStorage.getItem('lang') || 'zh-CN',    // 语言标识
  messages: {
    'zh-CN': require('./../lang/zh.js'),   // 中文语言包
    'en-US': require('./../lang/en.js')    // 英文语言包
  }
})
new Vue({
  el: '#app',
  i18n,
  router,
  store,
  components: { App },
  template: '<App/>'
})

lang\zh.js

export const common = {
    chinese: '中文',
    english: '英文',
}

lang\en.js

export const common = {
	chinese: 'Chinese',//中文
    english: 'English',//英文
}

index.vue

<template>
	<div>
	  <el-select
        @change="changeLangEvent"
        v-model="localLan">
        <el-option
          v-for="item in lanOptions"
          :key="item.value"
          :label="item.label"
          :value="item.value" >
        </el-option>
      </el-select>
      <div class="color-label">
          {{ $t("common.totalnumberusers") }}
      </div>
	</div>
</template>

 data() {
    return {
 		localLan: localStorage.getItem("lang") || "zh-CN",
 	}
 },
computed: {
    lanOptions() { //下拉选项的文字是会随着语言变动的,所以要放在computed里面
      return [
        {
          value: "zh-CN",
          label: this.$t("common.chinese"),
        },
        {
          value: "en-US",
    	  label: this.$t("common.english"),
        },
      ];
},
methods: {
    //切换语言
    changeLangEvent(val) {
      localStorage.setItem("lang", val);
      this.localLan = val;
      this.$i18n.locale = val;
    },
}

chart.vue

props: {
   chartData: {
     type: Object,
     default: () => {},
   },
 },
 mounted() {
   this.initChart();
 },
 watch: {
   "$i18n.locale"() { //监听语言的变化,每次变动都要重新渲染图表
     this.initChart(); 
},
computed: { //图表的数据需要使用计算属性,不然切换语言不会更新视图
   legendData() { 
     return [
       this.$t("common.numberenterprises"),
       this.$t("common.numberusers"),
     ];
   }
 },
methods: {
  initChart() {
     this.chart = echarts.init(document.getElementById("bd-chart-b"));
     this.setOptions();
   },
   setOptions() {
     const { themeColor, list } = this;
     const colorList = [themeColor, "255,255,255"];
     this.chart.setOption({})
   }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值