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 相关文章推荐
jquery 表格分页等操作实现代码(pagedown,pageup)
Apr 11 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 图片库
Jan 09 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
Aug 11 Javascript
jquery if条件语句的写法
May 19 Javascript
JavaScript Uploadify文件上传实例
Feb 28 Javascript
canvas实现刮刮卡效果
Mar 14 Javascript
浅谈Vue.js中的v-on(事件处理)
Sep 05 Javascript
详解RequireJs官方使用教程
Oct 31 Javascript
javascript中new Array()和var arr=[]用法区别
Dec 01 Javascript
Webpack devServer中的 proxy 实现跨域的解决
Jun 15 Javascript
浅析vue-router中params和query的区别
Dec 24 Javascript
JS XMLHttpRequest原理与使用方法深入详解
Apr 30 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
声音就能俘获人心,蕾姆,是哪个漂亮小姐姐配音呢?
2020/03/03 日漫
高亮度显示php源代码
2006/10/09 PHP
安装apache2.2.22配置php5.4(具体操作步骤)
2013/06/26 PHP
PHP simplexml_import_dom()函数讲解
2019/02/03 PHP
在html页面中包含共享页面的方法
2008/10/24 Javascript
浅析jQuery中常用的元素查找方法总结
2013/07/04 Javascript
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
jQuery jcrop插件截图使用方法
2013/11/20 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
javascript实现链接单选效果的方法
2015/05/13 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
关于webuploader插件使用过程遇到的小问题
2016/11/07 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
简单谈谈axios中的get,post方法
2017/06/25 Javascript
zTree获取当前节点的下一级子节点数实例
2017/09/05 Javascript
用Webpack构建Vue项目的实践
2017/11/07 Javascript
浅谈Angular文字折叠展开组件的原理分析
2017/11/24 Javascript
JS实现自定义弹窗功能
2018/08/08 Javascript
将RGB值转换为灰度值的简单算法
2019/10/09 Javascript
JavaScript中的this/call/apply/bind的使用及区别
2020/03/06 Javascript
jQuery实现简单三级联动效果
2020/09/05 jQuery
[01:48]帕吉至宝加入游戏,遗迹战场现“千劫神屠”
2018/04/07 DOTA
Python中使用asyncio 封装文件读写
2016/09/11 Python
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
教你利用Python玩转histogram直方图的五种方法
2018/07/30 Python
Python实现i人事自动打卡的示例代码
2020/01/09 Python
Python获取对象属性的几种方式小结
2020/03/12 Python
Python包和模块的分发详细介绍
2020/06/19 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
Ajxa常见问题都有哪些
2014/03/26 面试题
酒店销售主管岗位职责
2014/01/04 职场文书
读群众路线心得体会
2014/03/07 职场文书
2014年学校国庆主题活动方案
2014/09/16 职场文书
2014年图书馆工作总结
2014/11/25 职场文书