vue2+vue-i18n实现语言切换

下载安装依赖

npm install vue-i18n@8.2.1 --save

文件目录

src
  — components
      — i18nComps.vue
 — lang
     — zh.js
     — en.js
     — index.js

App.vue

main.js

开始构建

src/components/i18nComps.vue

<!-- 这个按钮方便我们用来切换语言 -->
<template>
  <div>
    <button @click="changeLangEvent()">切换</button>
    <div class="full" >
      <span class="lan">{{language}}</span>
    </div>
    <div class="system">{{$t('h.system')}}</div>
    <div class="system">{{$t('h.name')}}</div>
  </div>

</template>
<script>

export default {
  data (){
    return {
      language: localStorage.getItem("lang") ||"EN"
    }
  },
  methods:{
    changeLangEvent(){
      if (this.language == "EN"){
        localStorage.setItem("locale", "zh");
        this.$i18n.locale = localStorage.getItem("locale");
        alert('切换为中文!')
        localStorage.setItem("lang", "ZH");
        this.language = "ZH";
        location.reload(); //重新加载
      } else if (this.language == "ZH"){
        localStorage.setItem("locale", "en");
        this.$i18n.locale = localStorage.getItem("locale");
        alert('Switch to English!')
        localStorage.setItem("lang", "EN");
        this.language = "EN";
        location.reload();
      }
    }

  }
}
</script>

src/lang/zh.js

// 定义中文语言包对象 zh.js

export const h = {
    system: "系统",
    name:'姓名'
}

src/lang/en.js

// 定义英文语言包对象 en.js

export const h = {
    system: "System",
    name:'name'
}

src/lang/index.js

// index.js

import Vue from "vue";
import VueI18n from "vue-i18n";

Vue.use(VueI18n); // 全局挂载

export const i18n = new VueI18n({
    locale: localStorage.getItem("locale") || "en", // 从localStorage中获取 默认英文
    messages: {
        zh: require("./zh"), // 中文语言包
        en: require("./en") // 英文语言包
    }
});

export default i18n;

main.js

import Vue from 'vue'
import App from './App.vue'
import  i18n  from './lang/index'

new Vue({
  i18n,
  render: h => h(App),
}).$mount('#app')
页面使用
//App.vue

<template>
  <div>
<!-- 切换   -->
    <qhTab />

  </div>
</template>
<script>
import qhTab from '@/components/i18nComps'
export default {
  name: 'App',
  components: {
    qhTab
  },
}
<script>

保存看效果!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值