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 相关文章推荐
js调用后台、后台调用前台等方法总结
Apr 17 Javascript
JavaScript中的apply和call函数详解
Jul 20 Javascript
jQuery中:disabled选择器用法实例
Jan 04 Javascript
教你JS中的运算符乘方、开方及变量格式转换
Aug 09 Javascript
Bootstrapvalidator校验、校验清除重置的实现代码(推荐)
Sep 28 Javascript
关于jQuery里prev()的简单操作代码
Oct 27 jQuery
基于angular6.0实现的一个组件懒加载功能示例
Apr 12 Javascript
一个基于react的图片裁剪组件示例
Apr 18 Javascript
mocha的时序规则讲解
Feb 16 Javascript
JavaScript多种滤镜算法实现代码实例
Dec 10 Javascript
js实现橱窗展示效果
Jan 11 Javascript
JavaScript字符串转数字的简单实现方法
Nov 27 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(七)
2014/06/23 PHP
ThinkPHP中Common/common.php文件常用函数功能分析
2016/05/20 PHP
PHP实时统计中文字数和区别
2019/02/28 PHP
Nigma vs Alliance BO5 第二场2.14
2021/03/10 DOTA
javascript折半查找详解
2015/01/26 Javascript
javascript异步编程代码书写规范Promise学习笔记
2015/02/11 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
使用Vue完成一个简单的todolist的方法
2017/12/01 Javascript
对VUE中的对象添加属性
2018/09/18 Javascript
Angular6 发送手机验证码按钮倒计时效果实现方法
2019/01/08 Javascript
vue使用@scroll监听滚动事件时,@scroll无效问题的解决方法详解
2019/10/15 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
浅析Python中将单词首字母大写的capitalize()方法
2015/05/18 Python
Python连接phoenix的方法示例
2017/09/29 Python
python取余运算符知识点详解
2019/06/27 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
python用线性回归预测股票价格的实现代码
2019/09/04 Python
为什么说Python可以实现所有的算法
2019/10/04 Python
Python生成六万个随机,唯一的8位数字和数字组成的随机字符串实例
2020/03/03 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
css3让div随鼠标移动而抖动起来
2014/02/10 HTML / CSS
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
html5 拖拽上传图片实例演示
2013/04/01 HTML / CSS
求网格中的黑点分布
2013/11/06 面试题
教师求职信范文分享
2013/12/27 职场文书
老公给老婆的道歉信
2014/01/10 职场文书
党员学习群众路线心得体会
2014/11/04 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
刑事起诉书范文
2015/05/19 职场文书
追悼词范文大全
2015/06/23 职场文书
2015年秋季运动会前导词
2015/07/20 职场文书