vue2.0国际化配置(配置中文和英文)

一、安装 Vue-i8n

npm install vue-i18n --save

 注意:-save-dev是指将包信息添加到devDependencies,表示你开发时依赖的包裹。

            -save是指将包信息添加到dependencies,表示你发布时依赖的包裹。

二、配置多语言文件

        在src文件夹中新建文件夹lang,其包含三个文件:index.js、zh.js、en.js。

1、index.js


import Vue from 'vue' //引入vue
import VueI18n from 'vue-i18n'  //引入vue的国际化插件
import Cookies from 'js-cookie' //我这里需要,所以引入轻量级的处理cookies的js
import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang
import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
import zhLocale from './zh'     //本地创建的中文环境配置文件
import enLocale from './en'     //本地创建的英文环境配置文件
 
Vue.use(VueI18n) // 通过插件的形式挂载,通过全局方法 Vue.use() 使用插件
 
const messages = {
    en: {
        ...enLocale,
        ...elementEnLocale
    },
    zh: {
        ...zhLocale,
        ...elementZhLocale
    }
}
//获取当前语言环境,通过后台返回的语言或者浏览器语言环境
export function getLanguage() {
    const chooseLanguage = Cookies.get('language')//取后台设置的语言
    if (chooseLanguage) return chooseLanguage
    //如果后台没有返回语言则根据浏览器的语言环境返回语言变量
    const language = (navigator.language || navigator.browserLanguage).toLowerCase()
    const locales = Object.keys(messages)//获取前端设置的所有语言
    //遍历所有语言值组成的数组,匹配前端设置的语言能匹配到就返回改语言值
    for (const locale of locales) {
        if (language.indexOf(locale) > -1) {
            return locale
        }
    }
    //如果都没匹配到就直接返回英文
    return 'en'
}
const i18n = new VueI18n({
    //语言标识 this.$i18n.locale 通过切换locale的值来实现语言切换
    //如:this.$i18n.locale='en' 直接切换成英文,仅限于配置了语言的一些变量
    locale: getLanguage(),//调的上边这个函数
    messages              //上边配置的语言标识对应的不同配置
})

export default i18n

2、zh.js

export default {
    login: { // 登录模块
        title: '系统登录',
        loginName: '用户名',
        loginNamePlaceholder:'请输入用户名',
        password: '密码',
        passwordPlaceholder:'请输入密码',
        logIn: '登录',
    },
}

3、en.js

export default {
    login: { // 登录模块
        title: 'WMS system',
        loginName: 'loginName',
        loginNamePlaceholder:'Please enter the user name',
        password: 'passward',
        passwordPlaceholder:'Please enter your password',
        logIn: 'login',
    },
}

三、在main.js中引入

main.js(引入i18n 的代码)


import i18n from './lang'  

 Vue.use(ElementUI,{
  i18n: (key, value) => i18n.t(key, value)// 在注册Element时设置i18n的处理方法
})

new Vue({
  i18n,
})

四、使用(自定义组件,方便使用,也可不定义直接使用)

1、src=>components=>LangSelect=>index.vue

<template>
    <el-dropdown trigger="click"  @command="handleSetLanguage">
        <div class="select-language"><img src="@/assets/language.jpg" alt=""></div>
        <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-menu>
    </el-dropdown>
</template>
<script>
export default {
    computed: {
      language() {
        return this.$store.state.app.language
      }
    },
    mounted(){
        // console.log('000',this.$store.state.app.language)
    },
    methods: {
      handleSetLanguage(lang) {
        this.$i18n.locale = lang
        this.$store.dispatch('app/setLanguage', lang)
        this.$message({
          message: 'Switch Language Success',
          type: 'success'
        })
      }
    }
}
</script>
<style>
.select-language img {
    height: 30px;
}
</style>

2、在登录页面使用组件

<template>
  <div class="login">
     <lang-select class="set-language " />
  </div>
</template>
<script>

import LangSelect from '@/components/LangSelect/index.vue'

export default {
  components: {
    LangSelect
  },
};
</script>

如有不足 请大方指出。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大大大大大白呢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值