vue-i18n 切换中英文

1.首先使用npm安装vue-i18n

安装命令:

npm install vue-i18n

 2.在src/renderer目录(我的项目是如此)下创建如下目录和文件:

a):创建目录 src/renderer/i18n

b):创建目录src/renderer/i18n/langs

c):在src/renderer/i18n目录下新建文件i18n.js,内容如下:

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import locale from 'element-ui/lib/locale';
import zh from './langs/zh'
import en from './langs/en'
import enLocale from 'element-ui/lib/locale/lang/en'
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'


Vue.use(VueI18n)

const messages = {
  en: Object.assign(en, enLocale),
  zh: Object.assign(zh, zhLocale)
}

console.log(messages.zh)

const i18n = new VueI18n({
  locale: localStorage.getItem('locale') || 'zh',//zh表示此处默认为中文,改为en则默认为英文
  messages
})


locale.i18n((key, value) => i18n.t(key, value)) //为了实现element插件的多语言切换

export default i18n

d):在src/renderer/i18n/langs下创建文件zh.js和en.js

zh.js内容如下:

// 注意:一定是 exports,不是 export,否则会报错,报错信息是下列的中的内容不是 string
module.exports = {
    login:{
        login:'登录',
        loginsave:'是否保存登录账号及密码'
    },
    logout:{
        logout:'退出登录',
        logoutcomfirm:'是否确定退出登录',
        logoutclose:'是否确定关闭客户端'
    }
}

en.js内容如下:

module.exports = {
    login: {
        login: 'Login',
        loginsave: 'To save login account and password'
    },
    logout: {
        logout: 'Logout',
        logoutcomfirm: 'Are you sure to log out ?',
        logoutclose: 'Are you sure to close the client ?'
    }
}

3.在 main.js 中引入 vue-i18n (不过先引入 vue):

import Vue from 'vue';
// import axios from 'axios';
import App from './App';
import i18n from './i18n/i18n';

4.需要把 i18n 挂载到 vue 根实例上:

new Vue({
  template: '',
  i18n,
  components: { App },
  store,
  router
}).$mount('#app')

接下来就是怎么使用了:

5.在html模板中使用:

{{ $t("login.loginsave") }}

6.在js代码里使用:

this.$message({
            message: i18n.t("login.logoutcomfirm"),
            customClass: "main-message",
            type: "success"
          });

7.界面中英文切换按钮(文字按钮或者旗帜按钮):

      
English | 中 文
toggleLang()的实现放在methods中 toggleLang() { let lang = localStorage.getItem("locale"); console.log(lang) if (lang == "zh") { localStorage.setItem("locale", "en"); this.$i18n.locale = localStorage.getItem("locale"); this.$message({ message: "Switch to English!", type: "success" }); } else{ localStorage.setItem("locale", "zh"); this.$i18n.locale = localStorage.getItem("locale"); this.$message({ message: "切换为中文!", type: "success" }); } } },

 

你可能感兴趣的:(Vue开发)