当前位置: 首页 > news >正文

用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-optionv-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里面使用的问题,又需要去单独的查资料说怎么使用的问题,所以想着说把自己遇到的问题都写成一个合集,希望能帮助到更多跟我一样的小伙伴,最后,如果有帮到您记得留言或点赞哦,会觉得很开心,觉得自己帮助到了人~~

http://www.lryc.cn/news/119296.html

相关文章:

  • Vue3 :Pinia入门
  • Java线程池的类型和使用
  • QT的信号槽的四种写法和五种链接方式
  • Vue+SpringBoot项目开发:后台登陆功能的实现(二)
  • arcgis pro 3.0.2 安装及 geemap
  • oracle插入多表(insert all/first)
  • 工业以太网交换机-SCALANCE X200 环网组态
  • 利用 Splashtop Enterprise 改善公司的网络安全
  • mqbroker.cmd闪退(mqnamesrv.cmd能正常启动)
  • LeetCode--HOT100题(26)
  • HTTP 请求方法详解
  • 孤立随机森林(Isolation Forest)(Python实现)
  • 小程序如何自定义分享内容
  • SpringBoot整合WebSocket详解
  • 伪原创神码ai怎么样【php源码】
  • Air001基于Keil环境开发,使用airisp串口命令行烧录
  • kubernetes 中的事件(event)简介以及如何收集event和基于event告警
  • C++小游戏贪吃蛇源码
  • 【密码学】穴居人密码
  • neo4j的CQL命令实例演示
  • vue3+ts使用antv/x6
  • wsl1 ubuntu通过宿主机代理连接外网
  • ubuntu20.04 opencv4.2 安装笔记
  • ubuntu安装nginx以及php的部署
  • IntelliJ IDEA 2021/2022关闭双击shift全局搜索
  • HTML 元素中的name 属性
  • 快速上手React:从概述到组件与事件处理
  • K8S系列文章之 离线安装自动化工具Ansible
  • mysql8.0.3集群搭建
  • vue中router路由的原理?两种路由模式如何实现?(vue2) -(上)