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 相关文章推荐
ExtJS 下拉多选框lovcombo
May 19 Javascript
jQuery实战之品牌展示列表效果
Apr 10 Javascript
js 限制数字 js限制输入实现代码
Dec 04 Javascript
提示$ is not defined错误分析及解决
Apr 09 Javascript
jQuery验证插件 Validate详解
Nov 20 Javascript
Bootstrap 粘页脚效果
Mar 28 Javascript
特殊日期提示功能的实现方法
Jun 16 Javascript
JS简单生成两个数字之间随机数的方法
Aug 03 Javascript
React中使用外部样式的3种方式(小结)
May 28 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
Oct 30 Javascript
vue data变量相互赋值后被实时同步的解决步骤
Aug 05 Javascript
node.js文件的复制、创建文件夹等相关操作
Feb 05 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
是否存在第一台收音机的说法
2021/03/01 无线电
MySQL GBK→UTF-8编码转换
2007/05/24 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
PHP实现获取FLV文件的时间
2015/02/10 PHP
php字符串替换函数substr_replace()用法实例
2015/03/17 PHP
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
js显示时间 js显示最后修改时间
2013/01/02 Javascript
Javascript中arguments和arguments.callee的区别浅析
2015/04/24 Javascript
jQuery的几个我们必须了解的特点
2015/05/03 Javascript
jQuery点击导航栏选中更换样式的实现代码
2017/01/23 Javascript
Angular.js之作用域scope'@','=','&amp;'实例详解
2017/02/28 Javascript
动态创建Angular组件实现popup弹窗功能
2017/09/15 Javascript
JavaScript运行原理分析
2018/02/09 Javascript
layui表单验证select下拉框实现验证的方法
2019/09/05 Javascript
js前端如何写一个精确的倒计时代码
2019/10/25 Javascript
vue之debounce属性被移除及处理详解
2019/11/13 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
vue项目中企业微信使用js-sdk时config和agentConfig配置方式详解
2020/12/15 Vue.js
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
Python打印scrapy蜘蛛抓取树结构的方法
2015/04/08 Python
请不要重复犯我在学习Python和Linux系统上的错误
2016/12/12 Python
Python 比较两个数组的元素的异同方法
2017/08/17 Python
Python使用pymysql从MySQL数据库中读出数据的方法
2018/07/25 Python
Python操作配置文件ini的三种方法讲解
2019/02/22 Python
详解解决Python memory error的问题(四种解决方案)
2019/08/08 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
解决keras GAN训练是loss不发生变化,accuracy一直为0.5的问题
2020/07/02 Python
python 解决selenium 中的 .clear()方法失效问题
2020/09/01 Python
python 实现倒计时功能(gui界面)
2020/11/11 Python
HTML5 weui使用笔记
2019/11/21 HTML / CSS
给老婆大人的检讨书
2014/02/24 职场文书
《春晓》教学反思
2014/04/20 职场文书
毕业生政审意见范文
2015/06/04 职场文书
2016应届毕业生就业指导课心得体会
2016/01/15 职场文书
2019最新校园运动会广播稿!
2019/06/28 职场文书
室外天线与收音机天线杆接合方法
2022/04/05 无线电