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 相关文章推荐
获取Javscript执行函数名称的方法
Dec 22 Javascript
jquery异步循环获取功能实现代码
Sep 19 Javascript
判断用户的在线状态 onbeforeunload事件
Mar 05 Javascript
Treegrid的动态加载实例代码
Apr 29 Javascript
深入浅析JS是按值传递还是按引用传递(推荐)
Sep 18 Javascript
jQuery简单自定义图片轮播插件及用法示例
Nov 21 Javascript
Vue.js 2.0 移动端拍照压缩图片上传预览功能
Mar 06 Javascript
微信小程序实现图片压缩功能
Jan 26 Javascript
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 jQuery
AngularJS修改model值时,显示内容不变的实例
Sep 13 Javascript
Vue.js递归组件实现组织架构树和选人功能
Jul 04 Javascript
Vue组件通信$attrs、$listeners实现原理解析
Sep 03 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
php文件上传的例子及参数详解
2013/12/12 PHP
PHP连接数据库实现注册页面的增删改查操作
2016/03/27 PHP
PHP实现的进度条效果详解
2016/05/03 PHP
php使用curl并发减少后端访问时间的方法分析
2016/05/12 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
PHP7引入的&quot;??&quot;和&quot;?:&quot;的区别讲解
2019/04/08 PHP
js下拉框二级关联菜单效果代码具体实现
2013/08/03 Javascript
jquery中animate动画积累的解决方法
2013/10/05 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
基于BootStrap Metronic开发框架经验小结【五】Bootstrap File Input文件上传插件的用法详解
2016/05/12 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
JS出现失效的情况总结
2017/01/20 Javascript
jQuery读取XML文件的方法示例
2017/02/03 Javascript
BootStrap 标题设置跨行无效的解决方法
2017/10/25 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
基于javascript的拖拽类封装详解
2019/04/19 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
简单介绍Python中的try和finally和with方法
2015/05/05 Python
在Django中创建URLconf相关的通用视图的方法
2015/07/20 Python
使用Python对Access读写操作
2017/03/30 Python
tensorflow输出权重值和偏差的方法
2018/02/10 Python
python机器学习之随机森林(七)
2018/03/26 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
python队列Queue的详解
2019/05/10 Python
python切片的步进、添加、连接简单操作示例
2019/07/11 Python
python 实现将Numpy数组保存为图像
2020/01/09 Python
基于python纯函数实现井字棋游戏
2020/05/27 Python
python进度条显示之tqmd模块
2020/08/22 Python
医学院护理专业应届生求职信
2013/11/12 职场文书
驾驶员岗位职责
2014/01/29 职场文书
家长给小学生的评语
2014/01/30 职场文书
民事授权委托书范文
2014/08/02 职场文书
公司租房协议书范本
2014/10/08 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android