vue使用vue-i18n实现国际化的实现代码


Posted in Javascript onApril 08, 2018

需求

公司项目需要国际化,点击按钮切换中文/英文

1、安装

npm install vue-i18n --save

2、注入 vue 实例中,项目中实现调用 api 和 模板语法

import VueI18n from 'vue-i18n'

Vue.use(VueI18n) ;

const i18n = new VueI18n({
  locale: 'zh-CN',  // 语言标识, 通过切换locale的值来实现语言切换,this.$i18n.locale 
  messages: {
   'zh-CN': require('./common/lang/zh'),  // 中文语言包
   'en-US': require('./common/lang/en')  // 英文语言包
  }
})

new Vue({
 el: '#app',
 i18n, // 最后
 router,
 template: '<App/>',
 components: { App }
})

3、对应语言包

zh.js中文语言包:

export const lang = {
 homeOverview:'首页概览',
 firmOverview:'公司概述',
 firmReports:'财务报表',
 firmAppendix:'更多附录',
 firmIndex:'主要财务指标',
 firmAnalysis:'对比分析',
 firmNews:'新闻事件档案',
 firmOther:'其他功能',
}

en.js 英文语言包:

export const lang = {
 homeOverview:'Home overview',
 firmOverview:'firmOverview',
 firmReports:'firmReports',
 firmAppendix:'firmAppendix',
 firmIndex:'firmIndex',
 firmAnalysis:'firmAnalysis',
 firmNews:'firmNews',
 firmOther:'firmOther'
}

4、按钮控制切换语言

this.$i18n.locale,当你赋值为‘zh-CN'时,导航栏就变成中文;当赋值为 ‘en-US'时,就变成英文:

<div class="top_btn" @click="changeLangEvent">中文</div>
changeLangEvent() {
  console.log('changeLangEvent');
  this.$confirm('确定切换语言吗?', '提示', {
   confirmButtonText: '确定',
   cancelButtonText: '取消',
   type: 'warning'
  }).then(() => {
   if ( this.$i18n.locale === 'zh-CN' ) {
    this.$i18n.locale = 'en-US';//关键语句
    console.log('en-US')
   }else {
    this.$i18n.locale = 'zh-CN';//关键语句
    console.log('zh-CN')
   }
  }).catch(() => {
   console.log('catch');
   this.$message({
    type: 'info',
   });
  });
 }

5、模板渲染

静态渲染:

<span v-text="$t('lang .homeOverview')"></span>
<span>{{$t('lang .homeOverview')}}</span>

如果是element-ui 的,在要翻译的前面加上冒号

比如:label="用户姓名" 就改成 :label="$t('order.userName')"

动态渲染:

<span class="el-dropdown-link">{{navCompany}}</span>
 computed:{
   navCompany:function(){
    if(this.nav_company){
     let str = 'lang'+this.nav_company;
     return this.$t(str);
    }
   }
},
    
 <el-submenu
      v-for="(value, title1, one) in navList"
      :key="one+1"
      :index="(one+1).toString()">

   <template slot="title">
    <router-link :to="linkList[title1]">{{ getTitle(title1) }}</router-link>
   </template>
       
</el-submenu>

methods: {
  getTitle(title){
    let str = 'lang.'+title;
    return this.$t(str);
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用CSS+JS实现的进度条效果效果
Jun 05 Javascript
纯JS实现旋转图片3D展示效果
Apr 12 Javascript
js实现点击向下展开的下拉菜单效果代码
Sep 01 Javascript
JavaScript判断按钮被点击的方法
Dec 13 Javascript
JS跨域解决方案之使用CORS实现跨域
Apr 14 Javascript
JS点击缩略图整屏居中放大图片效果
Jul 04 Javascript
微信小程序 共用变量值的实现
Jul 12 Javascript
node koa2实现上传图片并且同步上传到七牛云存储
Jul 31 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
Feb 22 Javascript
vue如何进行动画的封装
Sep 26 Javascript
node中IO以及定时器优先级详解
May 10 Javascript
vue 实现根据data中的属性值来设置不同的样式
Aug 04 Javascript
Vue中的无限加载vue-infinite-loading的方法
Apr 08 #Javascript
vue-infinite-loading2.0 中文文档详解
Apr 08 #Javascript
Vue 页面切换效果之 BubbleTransition(推荐)
Apr 08 #Javascript
JS简单实现查看文档创建日期、修改日期和文档大小的方法示例
Apr 08 #Javascript
Js面试算法详解
Apr 08 #Javascript
JS简单获取并修改input文本框内容的方法示例
Apr 08 #Javascript
详解vue表单——小白速看
Apr 08 #Javascript
You might like
Laravel框架生命周期与原理分析
2018/06/12 PHP
php项目中类的自动加载实例讲解
2019/09/12 PHP
php模拟实现斗地主发牌
2020/04/22 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
display和visibility的区别示例介绍
2014/02/26 Javascript
js图片预加载示例
2014/04/30 Javascript
JavaScript检测弹出窗口是否已经关闭的方法
2015/03/24 Javascript
JavaScript中的fontsize()方法使用详解
2015/06/08 Javascript
详解AngularJS中的表达式使用
2015/06/16 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
2015/09/16 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
浅谈JavaScript中的this指针和引用知识
2016/08/05 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
详解在express站点中使用ejs模板引擎
2017/09/21 Javascript
Vue实现搜索 和新闻列表功能简单范例
2018/03/16 Javascript
jQuery+Cookie实现切换皮肤功能【附源码下载】
2018/03/25 jQuery
jQuery实现的简单手风琴效果示例
2018/08/29 jQuery
layui复选框的全选与取消实现方法
2019/09/02 Javascript
Vue中component标签解决项目组件化操作
2020/09/04 Javascript
[01:59]游戏“zheng”当时试玩会
2019/08/21 DOTA
pytorch 指定gpu训练与多gpu并行训练示例
2019/12/31 Python
python文件和文件夹复制函数
2020/02/07 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
HTML5新增的8类INPUT输入类型介绍
2015/07/06 HTML / CSS
Footshop罗马尼亚:最好的运动鞋选择
2019/09/10 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
综合实践活动总结
2014/05/05 职场文书
法定代表人资格证明书
2014/09/11 职场文书
领导干部群众路线个人对照检查材料思想汇报
2014/09/30 职场文书
四风问题专项整治工作情况报告
2014/10/28 职场文书
宝葫芦的秘密观后感
2015/06/11 职场文书
党员干部学法用法心得体会
2016/01/21 职场文书
导游词之云南-元阳梯田
2019/10/08 职场文书
Python简易开发之制作计算器
2022/04/28 Python