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 相关文章推荐
在chrome浏览器中,防止input[text]和textarea在聚焦时出现黄色边框的解决方法
May 24 Javascript
js循环改变div颜色具体方法
Jun 25 Javascript
asp.net刷新本页面的六种方法总结
Jan 07 Javascript
node.js中的fs.fchmod方法使用说明
Dec 16 Javascript
JavaScript插件化开发教程(六)
Feb 01 Javascript
jQuery源码解读之removeAttr()方法分析
Feb 20 Javascript
Node.js connect ECONNREFUSED错误解决办法
Sep 15 Javascript
用js实现简单算法的实例代码
Sep 24 Javascript
值得学习的bootstrap fileinput文件上传工具
Nov 08 Javascript
如何提高Dom访问速度
Jan 05 Javascript
Three.js的使用及绘制基础3D图形详解
Apr 27 Javascript
vue中渲染对象中属性时显示未定义的解决
Jul 31 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设计模式 FlyWeight (享元模式)
2011/06/26 PHP
解析PHP中empty is_null和isset的测试
2013/06/29 PHP
php中this关键字用法分析
2016/12/07 PHP
用javascript实现兼容IE7的类库 IE7_0_9.zip提供下载
2007/08/08 Javascript
javascript控制frame,iframe的src属性代码
2009/12/31 Javascript
js 面向对象的技术创建高级 Web 应用程序
2010/02/25 Javascript
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
javascript一元操作符(递增、递减)使用示例
2013/08/07 Javascript
使用原生js实现页面蒙灰(mask)效果示例代码
2014/06/20 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
jQuery计算文本框字数及限制文本框字数的方法
2016/03/01 Javascript
Three.js学习之几何形状
2016/08/01 Javascript
JavaScript基础进阶之数组方法总结(推荐)
2017/09/04 Javascript
VueX模块的具体使用(小白教程)
2020/06/05 Javascript
python使用xmlrpc实例讲解
2013/12/17 Python
python实现对一个完整url进行分割的方法
2015/04/29 Python
浅谈python 四种数值类型(int,long,float,complex)
2016/06/08 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
django 配置阿里云OSS存储media文件的例子
2019/08/20 Python
Python3 main函数使用sys.argv传入多个参数的实现
2019/12/25 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
欧洲第一中国智能手机和平板电脑网上商店:CECT-SHOP
2018/01/08 全球购物
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
先进德育工作者事迹材料
2014/01/24 职场文书
创业大赛策划书
2014/03/01 职场文书
2014年党支部学习材料
2014/05/19 职场文书
森林防火标语
2014/06/23 职场文书
安全例会汇报材料
2014/08/23 职场文书
公司委托书范本5篇
2014/09/20 职场文书
2014年公务员转正工作总结
2014/11/07 职场文书
2015年药品销售工作总结范文
2015/05/25 职场文书
2015年三好一满意工作总结
2015/07/24 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
如何让2019年上半年的工作总结更出色!
2019/07/01 职场文书
关于mysql中string和number的转换问题
2022/06/14 MySQL