用i18n 实现vue2+element UI的国际化多语言切换详细步骤及代码

一、i18n的安装

这个地方要注意自己的vue版本和i1n8的匹配程度,如果是vue2点几,记得安装i18n的@8版本,不然会自动安装的最新版本,后面会报错哦,查询了下资料,好像最新版本是适配的vue3。

npm install vue-i18n@8 --save

二、新建i18n相关文件夹及文件

在这里插入图片描述

在src下面新建i18n文件夹,然后在里面新建index.js,里面的内容如下

import Vue from 'vue';
import VueI18n from 'vue-i18n';
import locale from 'element-ui/lib/locale';
Vue.use(VueI18n);
// 引入自定义的各个语言配置文件
import zh from './config/zh';
import en from './config/en';

//element-ui自带多语言配置
import zhLocale from 'element-ui/lib/locale/lang/zh-CN';
import enLocale from 'element-ui/lib/locale/lang/en';

const messages = {
    en: {
      ...en,
      ...enLocale
    },
    zh: {
      ...zh,
      ...zhLocale
    },
}  
// 创建vue-i18n实例i18n
const i18n = new VueI18n({
    // 设置默认语言
    locale: localStorage.getItem('locale') || 'zh', // 语言标识,页面对应显示相同的语言
    // 添加多语言(每一个语言标示对应一个语言文件)
    messages:messages,
})
// 非 vue 文件中使用这个方法
const translate = (localeKey) => {
    const locale = localStorage.getItem("language") || "zh"
    const hasKey = i18n.te(localeKey, locale)  // 使用i18n的 te 方法来检查是否能够匹配到对应键值
    const translatedStr = i18n.t(localeKey) 
    if (hasKey) {
        return translatedStr
    }
    return localeKey
}

locale.i18n((key, value) => i18n.t(key, value)) //为了实现element插件的多语言切换
// 暴露i18n
export {
    i18n,
    translate
};

新建i18n文件夹里面新建config文件夹,然后在里面新建en.js和zh.js

en.js代码

const en = {
    login:{ 
    	title:'I am the title',
    }
}
export default en;

zh.js代码

const zh = {
    login:{ 
    	title:'我是标题',
    }
}
export default zh;

三、在main.js引入

主要是引入以后要在new Vue的地方加入 i18n,

import {i18n} from './i18n/index.js'; 

new Vue({
    el: '#app',
    i18n,  
    router,
    store,
    mounted() {
        window.isfitVue = this;
    },
    components: { App },
    template: '<App/>'
})

四、功能切换

<template>
<div>
	<el-select  v-model="languageValue" @change="changeLanguage" placeholder="请选择">
          <el-option
            v-for="item in languageOptions"
            :key="item.value"
            :label="item.label"
            :value="item.value">
          </el-option>
     </el-select>
</div>
</template>
<script>
export default {
	data() {
	    return {
	      languageValue:'',
	      languageOptions:[],
	    }
    },
	created() {
		//最开始请求的时候看缓存是什么状态
		if(this.$i18n.locale=='zh'){
	      this.languageValue='中文简体';
	      this.languageOptions=[{value:'en',label:'English'}]
	    }else{
	      this.languageValue='English';
	      this.languageOptions=[{value:'zh',label:'中文简体'}]
	    }
	},
	methods: {
	    // 多语言切换
	    changeLanguage(type){
	      console.log(type);
	      // 此处做了语言选择记录,存在localStorage中,这里的作用只有一个当我重新请求页面
	      //的时候先取localStorage的记录值
	      localStorage.setItem('locale',type)
	      this.$i18n.locale = type; // 修改页面需要显示的语言
	      if(this.$i18n.locale=='zh'){
	        this.languageValue='中文简体';
	        this.languageOptions=[{value:'en',label:'English'}]
	      }else{
	        this.languageValue='English';
	        this.languageOptions=[{value:'zh',label:'中文简体'}]
	      }
	    },
   }
}
</script>

五、在vue文件里面的使用

在template中直接使用

<div>{{$t("login.title")}}</div>
//或者
<el-input :placeholder="$t('login.title')" ></el-input>

在script中加上this就行

this.$t('login.title'),

六、在单独的js文件中使用

//导入 ,这里的路径自己找一下自己的文件路径
import { translate as $t } from "../../../../../i18n/index.js"  
//使用
name: $t('login.title'),

七、如果需要在js文件中获取当前保存的状态,也就是this.$i18n.locale

//导入,记得切换自己的路径
import { i18n } from "../i18n/index.js"
//使用
console.log(i18n.locale)
if(i18n.locale=='en'){

}

八、写在最后

这里面基本都是我使用的时候遇到问题单独去查的资料,但是都写得比较分散,比如我遇到了最开始的安装问题,或者遇到了在js里面使用的问题,又需要去单独的查资料说怎么使用的问题,所以想着说把自己遇到的问题都写成一个合集,希望能帮助到更多跟我一样的小伙伴,最后,如果有帮到您记得留言或点赞哦,会觉得很开心,觉得自己帮助到了人~~

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Vue2是一种流行的JavaScript框架,用于构建用户界面。它具有轻量级、高效和灵活的特点,可以帮助开发者快速构建交互性强的Web应用程序。 Element UI是一套基于Vue2的开源UI库,提供了一系列的组件,包括按钮、表格、表单等,方便开发者构建美观的前端界面。 Cesium是一个用于构建地球图像的JavaScript库,可以在Web上创建高度交互的3D地球视图。它提供了丰富的地理信息和可视化功能,可以用于制作地理信息系统(GIS)应用程序。 搭建Vue2、Element UI和Cesium的框架可以让开发者在Web应用程序中结合地理信息和用户界面。具体步骤如下: 1. 首先,在项目中安装Vue2、Element UI和Cesium的依赖项。 ``` npm install vue npm install element-ui npm install cesium ``` 2. 在Vue项目中引入Vue2和Element UI的库,可以使用CDN或本地引入的方式。 3. 创建一个Vue的根组件,并在模板中使用Element UI的组件。 4. 在Vue项目中引入Cesium的库,可以使用CDN或本地引入的方式。 5. 在Vue的根组件中,创建一个Cesium的容器,并在created生命周期钩子函数中初始化Cesium的地球视图。 6. 在Cesium地球视图中加载地理信息和相应的可视化效果,例如加载地图数据、添加3D模型等。 通过以上步骤,就可以搭建一个基于Vue2、Element UI和Cesium的框架。开发者可以根据自己的需求进一步开发和定制化。这个框架可以让开发者在用户界面上展示地理信息,并提供交互性强的地球视图。同时,也可以使用Element UI的组件提供更美观友好的用户界面。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值