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 相关文章推荐
document.all与WEB标准
May 13 Javascript
javascript 多级checkbox选择效果
Aug 20 Javascript
javascript 弹出层组件(升级版)
May 12 Javascript
使用Post提交时须将空格转换成加号的解释
Jan 14 Javascript
js获取select选中的option的text示例代码
Dec 19 Javascript
jquery实现鼠标拖动图片效果示例代码
Jan 09 Javascript
jQuery简单实现遍历数组的方法
Apr 14 Javascript
简介JavaScript中substring()方法的使用
Jun 06 Javascript
Bootstrap table学习笔记(2) 前后端分页模糊查询
May 18 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
Jul 06 Javascript
vue.js内置组件之keep-alive组件使用
Jul 10 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
Oct 25 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
信用卡效验程序
2006/10/09 PHP
PHP Memcached + APC + 文件缓存封装实现代码
2010/03/11 PHP
php 验证码实例代码
2010/06/01 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
PHP闭包函数详解
2016/02/13 PHP
PHP开发之归档格式phar文件概念与用法详解【创建,使用,解包还原提取】
2017/11/17 PHP
JavaScript之引用类型介绍
2012/08/10 Javascript
javascript获取所有同类checkbox选项(实例代码)
2013/11/07 Javascript
jQuery scrollFix滚动定位插件
2015/04/01 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
javascript判断复选框是否选中的方法
2015/10/16 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
Node.js Windows Binary二进制文件安装方法
2019/05/16 Javascript
layui layer select 选择被遮挡的解决方法
2019/09/21 Javascript
微信小程序实现录音功能
2019/11/22 Javascript
[01:31:02]TNC vs VG 2019国际邀请赛淘汰赛 胜者组赛BO3 第一场
2019/08/22 DOTA
python实现字符串和字典的转换
2018/09/29 Python
python通过paramiko复制远程文件及文件目录到本地
2019/04/30 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
Python集合操作方法详解
2020/02/09 Python
Python3 元组tuple入门基础
2020/02/09 Python
基于tf.shape(tensor)和tensor.shape()的区别说明
2020/06/30 Python
python爬虫scrapy图书分类实例讲解
2020/11/23 Python
python快速安装OpenCV的步骤记录
2021/02/22 Python
几个解决兼容IE6\7\8不支持html5标签的几个方法
2013/01/07 HTML / CSS
《愚公移山》教学反思
2014/02/20 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
承诺书范本大全
2015/05/04 职场文书
公司年会主持词范文!
2019/05/07 职场文书
读《庄子》有感:美而不自知
2019/11/06 职场文书
修改Nginx配置返回指定content-type的方法
2022/09/23 Servers