使用 vue-i18n 切换中英文效果


Posted in Javascript onMay 23, 2018

vue-i18n 仓库地址:https://github.com/kazupon/vue-i18n

兼容性:

支持 Vue.js 2.x 以上版本

安装方法:(此处只演示 npm)

npm install vue-i18n

使用方法:

1、在 main.js 中引入 vue-i18n (前提是要先引入 vue)

import VueI18n from 'vue-i18n'
Vue.use(VueI18n)

2、准备本地的翻译信息

const messages = {
 zh: {
  message: {
  hello: '好好学习,天天向上!'
  }
 },
 en: {
  message: {
  hello: 'good good study, day day up!'
  }
 }
}

3、创建带有选项的 VueI18n 实例

const i18n = new VueI18n({
 locale: 'en', // 语言标识
 messages
})

4、把 i18n 挂载到 vue 根实例上

const app = new Vue({
 router,
 i18n,
 ...App
}).$mount('#app')

5、在 HTML 模板中使用

<div id="app">
 <h1 style="font-size: 16px; text-align: center;">{{ $t("message.hello") }}</h1>
 </div>

查看运行效果:

使用 vue-i18n 切换中英文效果

我们刚才选定的语言标识是 “en” 英语,现在改成 “zh” 中文,并查看效果

const i18n = new VueI18n({
 locale: 'zh', // 语言标识
 messages
})

使用 vue-i18n 切换中英文效果

这样就可以轻松实现国际化了,实际开发中,页面内容肯定是很多的,我们可以把对应语言的信息保存为不同的 json对象

const i18n = new VueI18n({
 locale: 'en', // 语言标识
 messages: {
  'zh': require('./common/lang/zh'),
  'en': require('./common/lang/en')
 }
})

zh.js

// 注意:一定是 exports,不是 export,否则会报错,报错信息是下列的中的内容不是 string
module.exports = {
 message: {
  title: '运动品牌'
 },
 placeholder: {
  enter: '请输入您喜欢的品牌'
 },
 brands: {
  nike: '耐克',
  adi: '阿迪达斯',
  nb: '新百伦',
  ln: '李宁'
 }
}

en.js

module.exports = {
 message: {
  title: 'Sport Brands'
 },
 placeholder: {
  enter: 'Please type in your favorite brand'
 },
 brands: {
  nike: 'Nike',
  adi: 'Adidas',
  nb: 'New Banlance',
  ln: 'LI Ning'
 }
}

接下来,在HTML 模板中使用,要特别注意在 js 中的国际化写法

// HTML
<div id="app">
 <div style="margin: 20px;">
  <h1>{{$t("message.title")}}</h1>
  <input style="width: 300px;" class="form-control" :placeholder="$t('placeholder.enter')">
  <ul>
  <li v-for="brand in brands">{{brand}}</li>
  </ul>
 </div>
</div>
// JS
data () {
 return {
  brands: [this.$t('brands.nike'), this.$t('brands.adi'), this.$t('brands.nb'), this.$t('brands.ln')]
 }
 },

查看编译效果:

使用 vue-i18n 切换中英文效果

现在换成英文的:

使用 vue-i18n 切换中英文效果

在上面的操作中,我们都是通过手动修改 locale 的属性值来切换语言,实际上,更希望浏览器自动识别,这里可以借助于 cookie

1、新建一个 cookie.js 文件,用于读取cookie

function getCookie(name,defaultValue) {
 var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
 if (arr = document.cookie.match(reg))
 return unescape(arr[2]);
 else
 return defaultValue;
}
export {
 getCookie
}

2、在 main.js 中引入这个js,并通过 PLAY_LANG 属性来获取浏览器的语言

const i18n = new VueI18n({
 locale: getCookie('PLAY_LANG','zh'), // 语言标识
 messages: {
  'zh': require('./common/lang/zh'),
  'en': require('./common/lang/en')
 }
})

这里需要注意两个极易出错的地方:

(1)、将 $t() 写成了 $()

使用 vue-i18n 切换中英文效果

(2)、json 中在同一个对象里有同名属性

使用 vue-i18n 切换中英文效果

vue-i18n 提供了一个全局配置参数叫 “locale”,通过改变 locale 的值可以实现不同语种的切换

使用 vue-i18n 切换中英文效果

下面的案例借用了 Element UI 的弹窗样式,上面的步骤不再赘述,直接上核心代码

// template
<h2>{{$t('test')}}</h2>
<button type="button" class="btn btn-success" @click="changeLocale">中文/EN</button>  

// js方法
changeLocale () {
 this.$confirm(this.$t('layer.toggle'), this.$t('layer.tips'), {
  confirmButtonText: this.$t('button.ok'),
  cancelButtonText: this.$t('button.cancel'),
  type: 'warning'
  }).then(() => {
   let locale = this.$i18n.locale
   locale === 'zh' ? this.$i18n.locale = 'en' : this.$i18n.locale = 'zh'
  }).catch(() => {
    this.$message({
     type: 'info',
     })  
  })
},

效果:

使用 vue-i18n 切换中英文效果

总结

以上所述是小编给大家介绍的使用 vue-i18n 切换中英文效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
JavaScript DOM学习第八章 表单错误提示
Feb 19 Javascript
jQuery实用基础超详细介绍
Apr 11 Javascript
javaScript array(数组)使用字符串作为数组下标的方法
Nov 19 Javascript
实现网页页面跳转的几种方法(meta标签、js实现、php实现)
May 20 Javascript
js淡入淡出的图片轮播效果代码分享
Aug 24 Javascript
js实现正则匹配中文标点符号的方法
Dec 23 Javascript
Bootstrap组件学习之导航、标签、面包屑导航(精品)
May 17 Javascript
webpack搭建vue 项目的步骤
Dec 27 Javascript
this在vue和小程序中的使用详解
Jan 28 Javascript
关于Vue源码vm.$watch()内部原理详解
Apr 26 Javascript
JS forEach跳出循环2种实现方法
Jun 24 Javascript
JavaScript中跨域问题的深入理解
Mar 04 Javascript
centos 上快速搭建ghost博客方法分享
May 23 #Javascript
20个最常见的jQuery面试问题及答案
May 23 #jQuery
AngularJS与BootStrap模仿百度分页的示例代码
May 23 #Javascript
jQuery发请求传输中文参数乱码问题的解决方案
May 22 #jQuery
vue的传参方式汇总和router使用技巧
May 22 #Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
May 22 #Javascript
Vue.js实现的表格增加删除demo示例
May 22 #Javascript
You might like
PHP向socket服务器收发数据的方法
2015/01/24 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
PHP面向对象程序设计组合模式与装饰模式详解
2016/12/02 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
浅谈javascript六种数据类型以及特殊注意点
2013/12/20 Javascript
再谈javascript注入 黑客必备!
2016/09/14 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
JavaScript下拉菜单功能实例代码
2017/03/01 Javascript
详解用node.js实现简单的反向代理
2017/06/26 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
Vue 2.5.2下axios + express 本地请求404的解决方法
2018/02/21 Javascript
VUE简单的定时器实时刷新的实现方法
2019/01/20 Javascript
微信小程序使用map组件实现检索(定位位置)周边的POI功能示例
2019/01/23 Javascript
javascript 易错知识点实例小结
2020/04/25 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
[01:45]绝对公平!DOTA2队长征召模式详解
2014/04/25 DOTA
Python 时间操作例子和时间格式化参数小结
2014/04/24 Python
Python中规范定义命名空间的一些建议
2016/06/04 Python
python遍历小写英文字母的方法
2019/01/02 Python
详解安装mitmproxy以及遇到的坑和简单用法
2019/01/21 Python
基于Python中isfile函数和isdir函数使用详解
2019/11/29 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
Python matplotlib模块及柱状图用法解析
2020/08/10 Python
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
程序员经常用到的UNIX命令
2015/04/13 面试题
培训专员岗位职责
2014/02/26 职场文书
客服专员岗位职责
2014/02/28 职场文书
技术总监管理岗位职责
2014/03/09 职场文书
会计学专业自荐信
2014/06/25 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
语文复习计划
2015/01/19 职场文书
2015年团队工作总结范文
2015/05/04 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
详解Python中的进程和线程
2021/06/23 Python
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python