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 相关文章推荐
JS预览图像将本地图片显示到浏览器上
Aug 25 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
Mar 01 Javascript
全面解析Bootstrap中tab(选项卡)的使用方法
Jun 06 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
Jun 20 Javascript
Bootstrap3使用typeahead插件实现自动补全功能
Jul 07 Javascript
canvas实现动态小球重叠效果
Feb 06 Javascript
jquery中有哪些api jQuery主要API
Nov 20 jQuery
详解Node使用Puppeteer完成一次复杂的爬虫
Apr 18 Javascript
在vue项目中正确使用iconfont的方法
Sep 28 Javascript
五分钟搞懂Vuex实用知识(小结)
Aug 12 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
May 11 Javascript
JavaScript实现筛选数组
Mar 02 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
PHP获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
2012/10/03 PHP
国产PHP开发框架myqee新手快速入门教程
2014/07/14 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
ThinkPHP框架整合微信支付之JSAPI模式图文详解
2019/04/09 PHP
利用NodeJS的子进程(child_process)调用系统命令的方法分享
2013/06/05 NodeJs
JavaScript修改浏览器tab标题小技巧
2015/01/06 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
基于chosen插件实现人员选择树搜索自动筛选功能
2016/09/24 Javascript
JavaScript实现页面定时刷新(定时器,meta)
2016/10/12 Javascript
对layui中表单元素的使用详解
2018/08/15 Javascript
Flutter部件内部状态管理小结之实现Vue的v-model功能
2019/06/11 Javascript
JS实现前端动态分页码代码实例
2020/06/02 Javascript
JS删除数组指定值常用方法详解
2020/06/04 Javascript
[32:26]EG vs IG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python单例模式实例详解
2017/03/01 Python
开源软件包和环境管理系统Anaconda的安装使用
2017/09/04 Python
python文本数据相似度的度量
2018/03/12 Python
python基础教程项目三之万能的XML
2018/04/02 Python
python使用Matplotlib画条形图
2020/03/25 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
python三方库之requests的快速上手
2019/03/04 Python
django Admin文档生成器使用详解
2019/07/22 Python
浅谈Python type的使用
2019/11/19 Python
Django接收照片储存文件的实例代码
2020/03/07 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
乌克兰的第一家手表店:Deka
2020/03/05 全球购物
初婚初育证明
2014/01/14 职场文书
十岁生日家长答谢词
2014/01/17 职场文书
房务中心文员岗位职责
2014/04/16 职场文书
工作求职信
2014/07/04 职场文书
2015小学教师年度考核工作总结
2015/05/12 职场文书
暑期家教宣传单
2015/07/14 职场文书
2015年文秘个人工作总结
2015/10/14 职场文书
建立共青团委员会的请示
2019/04/02 职场文书