vue项目国际化vue-i18n的安装使用教程


Posted in Javascript onMarch 14, 2018

前言

项目需要支持多语言,我们需要提取出项目中使用的静态文本,使用语言包进行管理, 当切换语言设置的时候,可以自动切换整个项目的文字显示。

发现Vue项目中有对应的组件 vue-i18n ,而且对项目的代码修改不大,于是就使用了这个组件去修改项目中的代码。下面话不多说了,来一起看看详细的介绍吧。

安装

// script 引入
<script src="https://unpkg.com/vue/dist/vue.js"></script>
<script src="https://unpkg.com/vue-i18n/dist/vue-i18n.js"></script>

// npm 安装
npm install vue-i18n

// yarn 安装
yarn add vue-i18n

一般一个项目中使用都是通过安装包的方式去运行的, script 引入的较少。

使用

项目中配置i18n

import VueI18n from 'vue-i18n'
Vue.use(VueI18n)

const i18n = new VueI18n({
  local: 'cn', // 设置语言 
  messages // 语言包
})

new Vue({
  el: '#app',
  ...
  i18n
})

// messages 大概的使用格式
{
  cn: {
    name: '名字'
  },
  us: {
    name: 'Name'
  }
}

使用i18n

// html 需要使用 {{}} 将 name包装起来
{{$t('name')}}

// js
$t('name')

还有一些其他的用法,如:

  • 针对不同语言,显示不同的格式
  • 如果在传入自定义变量来控制显示
  • ... 具体的请参考官方文档。

切换语言的话,可以使用内置变量:

// 通过设置 locale 来切换语言
this.$i18n.locale = cn | us

语言包的生成 & 替换项目中原有的静态文本

这一步最关键,抽离出所有出现的汉字,替换成 $t('xxx') ,维护多个版本的语言文件

语言包这边是这么处理的,项目下新增一个目录languages

--languages
  --lib
    -- cn.js // 中文语言包
    -- us.js // 英文语言包
    -- .. // 其他语言,暂未实践
  -- index.js // 导出语言包

cn.js

export default {
  common: {
    message: '消息'
  },
  xxx: {
  }
}

us.js

export default {
  common: {
    message: 'Messages'
  },
  xxx: {
  }
}

index.js

import cn from './lib/cn.js'
export default {
  cn,
  us
}

替换文本

<template>
  ...
  <div>{{$t('message')}}</div>
  ...
</template>

问题

  • 不同的语言,格式不同,长度不同,可能需要调整项目的样式,以保正常
  • 对于一个已经在使用的项目,生成语言包这一步工作量大,浪费时间
  • 没有考虑如果是否需要动态的加载语言包,而非初始的加载所有的语言包

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
新浪中用来显示flash的函数
Apr 02 Javascript
js内存泄露的几种情况详细探讨
May 31 Javascript
解释&amp;&amp;和||在javascript中的另类用法
Jul 28 Javascript
jQuery事件绑定on()、bind()与delegate() 方法详解
Jun 03 Javascript
JS 调用微信扫一扫功能
Dec 22 Javascript
JavaScript ES6中export、import与export default的用法和区别
Mar 14 Javascript
angular过滤器实现排序功能
Jun 27 Javascript
微信小程序wx.previewImage预览图片实例详解
Dec 07 Javascript
微信小程序云开发实现云数据库读写权限
May 17 Javascript
微信小程序 腾讯地图显示偏差问题解决
Jul 27 Javascript
JS数组及对象遍历方法代码汇总
Jun 16 Javascript
react中useState使用:如何实现在当前表格直接更改数据
Aug 05 Javascript
Vue使用mixins实现压缩图片代码
Mar 14 #Javascript
vue2.0模拟锚点的实例
Mar 14 #Javascript
vue的mixins属性详解
Mar 14 #Javascript
vue2.0路由切换后页面滚动位置不变BUG的解决方法
Mar 14 #Javascript
react中fetch之cors跨域请求的实现方法
Mar 14 #Javascript
解决vue项目报错webpackJsonp is not defined问题
Mar 14 #Javascript
create-react-app构建项目慢的解决方法
Mar 14 #Javascript
You might like
全国FM电台频率大全 - 20 广西省
2020/03/11 无线电
php产生随机数的两种方法实例代码 输出随机IP
2011/04/08 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
封装ThinkPHP的一个文件上传方法实例
2014/10/31 PHP
php获取系统变量方法小结
2015/05/29 PHP
thinkPHP内置字符串截取函数用法详解
2016/11/15 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
深入理解JavaScript系列(1) 编写高质量JavaScript代码的基本要点
2012/01/15 Javascript
关于jQuery中.attr()和.prop()的问题探讨
2013/09/06 Javascript
js中apply方法的使用详细解析
2013/11/04 Javascript
鼠标滑在标题上显示图片的JS代码
2013/11/19 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
js获取指定字符前/后的字符串简单实例
2016/10/27 Javascript
Javascript将字符串日期格式化为yyyy-mm-dd的方法
2016/10/27 Javascript
微信小程序 图片等比例缩放(图片自适应屏幕)
2016/11/16 Javascript
bootstrap-datetimepicker实现只显示到日期的方法
2016/11/25 Javascript
深入理解vue-loader如何使用
2017/06/06 Javascript
JavaScript&quot;模拟事件&quot;的注意要点详解
2019/02/13 Javascript
vue axios封装及API统一管理的方法
2019/04/18 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
[45:46]2014 DOTA2国际邀请赛中国区预选赛5.21 HGT VS DT
2014/05/23 DOTA
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
Python实现简单的HttpServer服务器示例
2017/09/25 Python
mac下如何将python2.7改为python3
2018/07/13 Python
tensorflow 打印内存中的变量方法
2018/07/30 Python
python使用opencv对图像mask处理的方法
2019/07/05 Python
django如何通过类视图使用装饰器
2019/07/24 Python
解决pytorch-yolov3 train 报错的问题
2020/02/18 Python
部署Django到阿里云服务器教程示例
2020/06/03 Python
keras 自定义loss层+接受输入实例
2020/06/28 Python
美国在线珠宝商店:SZUL
2017/02/11 全球购物
经典禁毒标语
2014/06/16 职场文书
护士长2014年度工作总结
2014/11/11 职场文书
学校社团活动总结
2015/05/07 职场文书
医院病假条怎么写
2015/08/17 职场文书