vue2引入i18n插件实现中英文切换

news2024/10/12 12:09:42

vue2引入i18n插件实现中英文切换

    • 1.安装i18n插件
    • 2.引入
    • 3.使用
    • 4.数据渲染

1.安装i18n插件

npm install vue-i18n --save-dev

注意:
vue2环境下安装i18n插件时 有可能会报错(我的这个项目比较老,vue2.5.x版本的),报错信息如下:
在这里插入图片描述
原因是i18n的版本太高了,可以安装vue2适合的版本
我们可以在终端中查看 vue-i18n 所有版本:选择合适的版本下载即可

npm view vue-i18n versions --json

在这里插入图片描述

2.引入

新建如下文件夹和文件
在这里插入图片描述
src/components/lang/zh.js

//zhLocale是为了使element-ui组件也进行中英文切换
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
export default {
  "lang": '中文',
  user: {
    login: '登录',
    register: '注册',
    loginUsername: '请输入邮箱/手机号',
  },
  ...zhLocale
}

src/components/lang/en.js

//enLocale 是为了使element-ui组件也进行中英文切换
import enLocale from 'element-ui/lib/locale/lang/en'
export default {
  "lang": 'English',
  user: {
    login: 'login',
    register: 'register',
    loginUsername: 'loginUsername',
  },
  ...enLocale

}

src/components/lang/index.js

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import locale from 'element-ui/lib/locale'
import zh from './zh'
import en from './en'
Vue.use(VueI18n)
const messages = {
  en: {
    ...en,
  },
  zh: {
    ...zh,
  }
};
const i18n = new VueI18n({
  locale: localStorage.lang || 'zh',
  messages,
});
locale.i18n((key, value) => i18n.t(key, value))
export default i18n;

在main.js中引入

import i18n from '@/components/lang/index'
new Vue({
  el: '#app',
  router,
  i18n,
  //第一次访问的时候并没有实现自动切换语言的功能,但是在localStorage中看到lang已经被赋值,只有当页面再次刷新的时候才生效了。解决这个问题的办法就是将i18n.locale属性配置放入Vue中来,这样加载系统的时候就会自动去刷新i18n.locale属性了
  created() {
    i18n.locale = localStorage.getItem('lang')
  },
  components: {
    App
  },
  template: '<App/>'
})

request.js请求拦截中添加请求头配置

request.interceptors.request.use(
  config => {
    // 在发送请求之前做什么, 判断token是否存在,参数ACCESS_TOKEN 
    if (sessionStorage.getItem("token")) {
      config.headers.common['Authorization'] = sessionStorage.getItem("token");
    }
    // 多语言配置请求头
    let lan = localStorage.getItem('lang') || 'zh';
    if (lan == 'en') {
      config.headers['Accept-Language'] = 'en;q=0.8' // 优先支持英文,没有则支持中文
    } else {
      config.headers['Accept-Language'] = 'zh-CN,zh;q=0.9' // 优先支持中文,没有则支持英文
    }
    return config;
  }, err => {
    // do something with request error
    console.log(error)
    router.push('/new')
    return Promise.reject(err);
  }
);

3.使用

在Header组件中添加切换语言的按钮

 <el-dropdown class="lang" trigger="hover" @command="langChange">
      <el-link suffix-icon="co-icon-arrow-down" :underline="false">语言</el-link>
      <el-dropdown-menu slot="dropdown">
        <el-dropdown-item command="zh">中文</el-dropdown-item>
        <el-dropdown-item command="en">English</el-dropdown-item>
      </el-dropdown-menu>
    </el-dropdown>
 // 中英文切换
    langChange(command) {
      this.$i18n.locale = command;
      localStorage.setItem("lang", command);
      if (command == "en") {
        this.language = "English";
      } else if (command == "zh") {
        this.language = "中文";
      }
      window.location.reload();//因涉及到接口数据,所以需要强刷一下页面
    }

4.数据渲染

dom中使用

<span>{{$t('user.name')}}</span>

js中使用

handleView(index,row){
	this.title = this.$t('user.title')
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2207882.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

保姆级教程 | Linux中grep命令使用 分子动力学轨迹文件输出特定原子电荷值

背景 由于课题需要&#xff0c;现根据lammps运行得到的轨迹需要提取出目标原子的电荷值 步骤 思路 首先确定目标原子在轨迹中的序号&#xff08;lammps每个原子都有自己独立的【分子号原子号】&#xff09; 其次要十分清楚体系中的分子号排序方式&#xff0c;然后只要筛选出…

安卓13禁止锁屏 关闭锁屏 android13禁止锁屏 关闭锁屏

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.彩蛋1.前言 设置 =》安全 =》屏幕锁定 =》 无。 我们通过修改系统屏幕锁定配置,来达到设置屏幕不锁屏的配置。像网上好多文章都只写了在哪里改,改什么东西,但是实际上并未写明为什么要改那…

浅谈虚拟电厂在分布式光伏发电应用示范区中的应用及前景

0引言 随着电力体制改革的持续推进&#xff0c;电力市场将逐步建立和完善&#xff0c;未来的售电主体也将随着配售电业务的逐步放开而日益多元化&#xff0c;新的政策不断鼓励分布式电源和微电网作为独立的配售电市场主体推动运营模式的创新。与微电网所采取的就地应用为控制目…

离散数学-逻辑与证明基础1.4(谓词和量词)

谓词 1.4.2 谓词 涉及变量的语句&#xff0c;例如&#xff1a; “ x > 3 x > 3 x>3”&#xff0c;“ x y 3 x y 3 xy3”&#xff0c;“ x y z x y z xyz” 以及 \quad “Computer x x x is under attack by an intruder” \quad “Computer x x x is f…

nginx虚拟主机配置与locaion规则

目录 1.虚拟主机 1.1分类 1.2基于域名的虚拟机 1.2.1测试 1.3基于端口的虚拟主机 1.3.1测试 ​编辑1.4基于IP的虚拟主机 2.nginx日志 3.location 1.虚拟主机 虚拟主机:相当于1个网站&#xff0c;在nginx中通过server{}区域实现。 nginx虚拟主机有不同的配置类型…

科研论文必备:10大平台和工具助你高效查找AI文献

申博、留学、评职称的同学&#xff0c;逃不过要发表论文。对很多人尤其是对于论文新手来说&#xff0c;写论文可能是一个极具挑战性的过程。今天Bulu分享以下10个论文平台、论文检索工具&#xff0c;会大大提高论文撰写效率&#xff0c;告别熬夜肝论文&#xff01;建议收藏哦&a…

【原创】java+springboot+mysql劳动教育网系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

78.【C语言】EOF的解释

1.cplusplus网的介绍 在这几篇文章提到过,但没有详细阐释过EOF的细节 24.【C语言】getchar putchar的使用E4.【C语言】练习&#xff1a;while和getchar的理解32.【C语言】详解scanf 75.【C语言】文件操作(3) cplusplus网的介绍 点我跳转 翻译 常量 EOF 文件结束(End-Of-Fi…

STM32F103C8T6 - 定时器

一、定时器简介 定时器总共分为4部分&#xff0c;8小结。 第一部分&#xff08;定时中断、内外时钟源选择&#xff09;&#xff1a;定时器基本定时计数功能&#xff0c;定一个时间&#xff0c;让定时器每隔一段时间定时中断一次 。 第二部分&#xff08;输出比较&#xff09…

21年408数据结构

第一题&#xff1a; 解析&#xff1a;q指针指向要被删除的元素&#xff0c;当这个元素是链表中唯一一个元素时&#xff0c;q指针和尾指针都指向同一个元素&#xff0c;那么在删除掉这个元素之前&#xff0c;需要将尾指针调整到指向头指针的位置&#xff0c;此时链表为空&#x…

【C++】——继承(下)

【C】——继承&#xff08;下&#xff09; 5 继承与友元6 继承与静态成员7 多继承7.1 继承模型7.2 菱形继承的问题7.3 虚继承7.4 多继承中的指针偏移问题 8 组合与继承 5 继承与友元 友元关系不能被继承。即一个函数是父类的友元函数&#xff0c;但不是子类的友元函数。也就是说…

独立站外链策略如何确保SEO效果最大化?

在SEO优化中&#xff0c;外链的建设是不可忽视的重要环节。特别是独立站外链&#xff0c;它不仅能够提升网站在搜索引擎中的排名&#xff0c;还能通过高质量的dofollow链接&#xff0c;促进谷歌对网站的快速收录。那么该如何建立一套有效的独立站外链策略&#xff1f; 首先&…

与C++内存管理和STL简介的爱恨情仇

本文 1.C/C内存分布2.C语言中动态内存管理方式&#xff1a;malloc/calloc/realloc/free总结 3.C内存管理方式new/delete操作内置类型new和delete操作自定义类型 4.operator new与operator delete函数&#xff08;重要点进行讲解&#xff09;5.new和delete的实现原理内置类型自定…

Redis主从复制机制详解

目录 一、主从复制介绍二、搭建主从复制三、主从复制流程四、关于Replication ID五、主从复制核心知识六、主从复制应用场景七、主从复制的注意事项 一、主从复制介绍 1、什么是主从复制&#xff1f; 2、为什么要使用主从复制&#xff1f; redis-server单点故障。单节点QPS…

MyBatis XML映射文件

XML映射文件 XML映射文件的名称与Mapper接口名称一致&#xff0c;并且将XML映射文件和Mapper接口放置在相同包下&#xff08;同包同名&#xff09;XML映射文件的namespace属性为Mapper接口全限定名一致XML映射文件中SQL语句的id与Mapper接口中的方法名一致&#xff0c;并保持返…

MBI6665Q升降压LED驱动芯片车规级AEC-Q100

MBI6665Q是由聚积科技&#xff08;Macroblock Inc.&#xff09;开发的一款多拓扑恒流LED驱动器&#xff0c;主要用于汽车照明应用。凭借其强大的功能集&#xff0c;MBI6665Q可以满足高效照明解决方案的需求&#xff0c;广泛应用于日间行车灯&#xff08;DRL&#xff09;、雾灯等…

idea的maven组件管理依赖小规则

pom文件引入一个依赖&#xff0c;idea会先找到依赖&#xff0c;然后才更新界面&#xff0c;如果找不到&#xff0c;不会更新界面&#xff0c;除非指定正确的版本才会更新界面&#xff0c;更新界面后&#xff0c;再次指定一个错误的版本&#xff0c;idea不会更新界面&#xff0c…

海康大华等厂家摄像头、执法记录仪等通过GB28181注册到LiveGBS平台,如何实时获取设备和通道的在线状态

LiveGBS如何订阅设备状态在线离线状态redis订阅设备或是通道状态subscribe device操作及示例 1、如何监听设备状态2、device订阅2.1、设备上线消息2.2、设备离线消息2.2、通道上线消息2.2、通道离线消息 3、订阅示例3.1、连接REDIS3.2、订阅device示例3.3、设备上线示例3.3.1、…

2014年国赛高教杯数学建模B题创意平板折叠桌解题全过程文档及程序

2014年国赛高教杯数学建模 B题 创意平板折叠桌 某公司生产一种可折叠的桌子&#xff0c;桌面呈圆形&#xff0c;桌腿随着铰链的活动可以平摊成一张平板&#xff08;如图1-2所示&#xff09;。桌腿由若干根木条组成&#xff0c;分成两组&#xff0c;每组各用一根钢筋将木条连接…

【SpringBoot详细教程】-13-SpringBoot整合事务管理 【持续更新】

Hello&#xff0c;大胸弟们&#xff0c;我们又又又见面了&#xff0c;今天攀哥继续为大家分享一下SpringBoot的教程&#xff0c;没点关注的宝宝&#xff0c;点一下关注。 &#x1f332; 事务管理的意义 &#x1f33f; 身边事务的案例&#xff1a; 桃子向好友攀哥汇款5000元…