vue+element实现语言切换

因项目需要,要加国际化。百度和看element文档。实现如下

1.首先要在项目中安装vue-i18n

yarn add vue-i18n

2.新建一个lang文件,因我的项目要中文,英文,日文。所以在lang文件下分别新建了zh.js,en.js,ja.js。同时在新建index.js

3.在lang下的index.js添加如下内容

locale首先是在缓存里获取的。

import Vue from 'vue';
import VueI18n from 'vue-i18n';
import enLocale from './en';
import zhLocale from './zh';
import jaLocale from './ja';
import elementEnLocale from 'element-ui/lib/locale/lang/en';
import elementzhLocale from 'element-ui/lib/locale/lang/zh-CN';
import elementjaLocale from 'element-ui/lib/locale/lang/ja';
Vue.use(VueI18n)
const i18n = new VueI18n({
  locale: sessionStorage.getItem("lang") || 'zh',// set locale,默认中文
  messages:{
    en:{
      ...enLocale,
      ...elementEnLocale
    },
    zh:{
      ...zhLocale,
      ...elementzhLocale
    },
    ja:{
      ...jaLocale,
      ...elementjaLocale
    }
  }
})
export default i18n;

4.在en.js添加内容如下

export default{
  menu:{
    home:"home",
  },  
  home:{
    hometitle:"Find The Job That Fits Your Life",
    keywords:"keywords",
    location:"location",
    search:"search"
  }
}

5.在zh.js添加内容如下

export default{
  menu:{
    home:"首页"
  },
  home:{
    hometitle:"找一份适合你生活的工作",
    keywords:"关键词",
    location:"位置",
    search:"搜索"
  }
}

6.在ja.js添加内容如下

export default{
  menu:{
    home:"最初のページ"
  },
  home:{
    hometitle:"あなたの人生に合う仕事を見つけてください",
    keywords:"キーワード",
    location:"ロケーション",
    search:"サーチ"
  }
}

7.在项目的入口文件main.js添加如下

import Vue from 'vue'
import App from './App.vue'
import router from "@/router";
import ElementUI from "element-ui";
import i18n from './lang/index';
import "@/assets/style/normalize.css";
import "@/assets/scss/index.scss";
import axios from 'axios'
//全局注册
Vue.prototype.$axios = axios;
//element-ui为了兼容vue-i18n@6.x
Vue.use(ElementUI,{
  i18n:(key,value)=>i18n.t(key,value)
});
Vue.config.productionTip = false

new Vue({
  router,
  i18n,
  render: h => h(App),
}).$mount('#app')

最后在需要切换语言的地方内容和事件做切换

<el-dropdown class="international" @command="handleCommand">
      <span class="el-dropdown-link">
        Languages
        <i class="el-icon-arrow-down el-icon--right"></i>
      </span>
      <el-dropdown-menu slot="dropdown">
        <el-dropdown-item :disabled="language==='zh'" command="zh">中文</el-dropdown-item>
        <el-dropdown-item :disabled="language==='en'" command="en">English</el-dropdown-item>
        <el-dropdown-item :disabled="language==='ja'" command="ja">日本語</el-dropdown-item>
      </el-dropdown-menu>
    </el-dropdown>

添加事件如下

data() {
    return {
      language: sessionStorage.getItem("lang")//重缓存中获取语言状态
    };
  },
 methods: {
    // 根据下拉框的中被选中的值切换语言
    handleCommand(value) {
      this.language = value;
      this.$i18n.locale = value;
      window.sessionStorage.setItem("lang", this.language);
    }
}

然后在页面中使用如下:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值