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 相关文章推荐
JavaScript运行时库属性一览表
Mar 14 Javascript
javascript浏览器兼容教程之事件处理
Jun 09 Javascript
js同源策略详解
May 21 Javascript
浅谈jQuery中hide和fadeOut的区别 show和fadeIn的区别
Aug 18 Javascript
SelecT下拉框选中和取值的解决方法
Nov 22 Javascript
深入理解Angularjs中的$resource服务
Dec 31 Javascript
基于node.js之调试器详解
Aug 22 Javascript
基于JSON数据格式详解
Aug 31 Javascript
微信小程序之页面拦截器的示例代码
Sep 07 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
Apr 23 Javascript
使用JavaScript计算前一天和后一天的思路详解
Dec 20 Javascript
JavaScript事件冒泡机制原理实例解析
Jan 14 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代码
2007/03/03 PHP
php 实现银联商务H5支付的示例代码
2019/10/12 PHP
PHP7原生MySQL数据库操作实现代码
2020/07/03 PHP
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
2010/02/04 Javascript
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
使用jQuery+HttpHandler+xml模拟一个三级联动的例子
2011/08/09 Javascript
用javascript为页面添加天气显示实现思路及代码
2013/12/02 Javascript
javascript的几种继承方法介绍
2016/03/22 Javascript
手机图片预览插件photoswipe.js使用总结
2016/08/25 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
Nodejs中的JWT和Session的使用
2018/08/21 NodeJs
详解vuex commit保存数据技巧
2018/12/25 Javascript
js实现多个倒计时并行 js拼团倒计时
2019/02/25 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
JS用最简单的方法实现四舍五入
2019/08/27 Javascript
[03:56]还原FTP电影首映式 DOTA2群星拼出遗迹世界
2014/03/26 DOTA
Python 开发Activex组件方法
2009/11/08 Python
Python sys.argv用法实例
2015/05/28 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
Python实现输入二叉树的先序和中序遍历,再输出后序遍历操作示例
2018/07/27 Python
详解pandas.DataFrame中删除包涵特定字符串所在的行
2019/04/04 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
Python文件夹批处理操作代码实例
2020/07/21 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
出生公证书样本
2014/04/04 职场文书
社区创先争优承诺书
2014/08/30 职场文书
单位员工收入证明样本
2014/10/09 职场文书
2015年企业员工工作总结范文
2015/05/21 职场文书
雷锋的故事观后感
2015/06/10 职场文书
文明上网主题班会
2015/08/14 职场文书
小学三年级作文之写景
2019/11/05 职场文书
利用python做数据拟合详情
2021/11/17 Python