Vue国际化的使用
首先是是在main.js文件中把国际化引入进来
import Vue from 'vue'
import App from './App'
import router from './router'
import VueI18n from 'vue-i18n' Vue.use(VueI18n)
Vue.config.productionTip = false
const i18n = new VueI18n({
locale: 'zh-CN',
messages: {
'zh-CN': {
'detail1': '详情1',
'detail2': '详情2',
'detail3': '详情3',
'year': '年'
},
'en-US': {
'detail1': 'Detail1',
'detail2': 'Detail2',
'detail3': 'Detail3',
'year': 'year'
}
}
}) new Vue({
el: '#app',
i18n: i18n,
router,
components: { App },
template: '<App/>'
})
main.js
其中我现在先在这个文件里面简单配置一些国际化的数据,放到常量i18n中,其中locale就是用来配置当前系统的语言的。目前这里采用的中文的,如果页面可以支持多种语言切换的话,这事件触发后就是改这里的配置的值,若改成英文,这设置为“en-US”
接下来就是在页面中使用的问题了。
第一种使用方式:在视图模板中直接使用,采用{{$t('xxxx')}}的方式。如下我现在使用'detail1'这个的国际化:

页面显示的效果就是:
中文效果:

英文效果:

第二种使用方式,是在脚本里面使用,这时可以采用 this.$t('xxxx')的方式。如下
<template>
<div>
<h1>{{$t('detail1')}}</h1>
<el-button @click="print">打印</el-button>
</div>
</template>
<script>
export default{
methods:{
print(){
console.log(this.$t('detail1'))
}
},
}
</script> <style> </style>
test.vue
因为第二种方式中的this,指的是vue实例,所以这种方式在.vue结尾的的文件中能够生效。但是如果是例如在我们定义常量的文件里面要使用的话,就行不通了。那我们在常量中定义的数据,到页面显示,要怎样才能也使用上这个国际化呢。这个我们就来看下第三种方式。
第三种使用方式,在普通js文件中中配置,在页面上也展示国际化。
首先我们现在main.js文件中的国际化里面增加月份的国际化配置:
const i18n = new VueI18n({
locale: 'zh-CN',
messages: {
'zh-CN': {
'detail1': '详情1',
'detail2': '详情2',
'detail3': '详情3',
'year': '年',
'month1': '1月',
'month2': '2月',
'month3': '3月'
},
'en-US': {
'detail1': 'Detail1',
'detail2': 'Detail2',
'detail3': 'Detail3',
'year': 'year',
'month1': 'January',
'month2': 'February',
'month3': 'March'
}
}
})
main.js
然后我们准备一个constant.js文件。在里面如下配置:
export const months = ['month1', 'month2', 'month3'].map((item, index) => { return {'label': item, 'value': index + 1} })
constants.js
这里注意的是,我这里的月份,直接使用的就是我们国际化里面配置的月份的key值。接下来我们就来页面上使用了。
这里把月份放到下拉框里面展示为例:
<template>
<div>
<h1>{{$t('detail1')}}</h1>
<el-button @click="print">打印</el-button>
<el-select v-model="month" placeholder="请选择月份">
<el-option v-for="item in months" :key="item.value" :label="$t(item.label)" :value="item.value">
</el-option>
</el-select>
</div>
</template>
<script>
import {months} from '@/util/constants'
export default{
data(){
return{
month:'',
months:[]
}
},
methods:{
print(){
console.log(this.$t('detail1'))
}
},
created(){
this.months = months
}
}
</script> <style> </style>
test.vue
这里注意的一点就是,在视图模型中,下拉框的label采用 :label="$t(item.label)"的方式,从而来到达国际展示的方式。
中文页面效果如下:

英文页面效果如下:

到此,三种方式介绍完毕。因为在开发中遇到这样的问题,故顺便总结下分享出来。如果大家有其他类似的问题或方式可以留言分享^_^。
Vue国际化的使用的更多相关文章
- Vue国际化处理 vue-i18n 以及项目自动切换中英文
1. 环境搭建 命令进入项目目录,执行以下命令安装vue 国际化插件vue-i18n npm install vue-i18n --save 2. 项目增加国际化翻译文件 在项目的src下添加lang ...
- Vue 国际化 vue-i18n 用法详解
vue-i18n 仓库地址:https://github.com/kazupon/vue-i18n 兼容性: 支持 Vue.js 2.x 以上版本 安装方法:(此处只演示 npm) npm insta ...
- vue国际化高逼格多语言
## 1.NPM 项目安装 ``` cnpm i vue-i18n ``` ## 2.使用方法 ``` /* 国际化使用规则 */ import Vue from 'vue' import VueI1 ...
- vue国际化问题i18n为null
1.vue的国际化关于使用请看这位大佬的文章https://segmentfault.com/a/1190000015008808 2.this指向问题https://segmentfault.com ...
- 使用vue国际化中出现内置的组件无法切换语言的问题(element-ui、ivew)
在main.js中引入对应组件的语言包 eg: import VueI18n from 'vue-i18n'; // 引入国际化 import elementEn from 'element-ui/l ...
- vue国际化
插件:vue-i18n main.js引入i18n.js:+2行 新建文件(i18n.js),引入VueI18n.locale.语言包 新建语言包,包括index/zh/en(名字随意,引用正确就好) ...
- vue 国际化i18n 多语言切换
安装 npm install vue-i18n 新建一个文件夹 i18n ,内新建 en.js zh.js index.js 三个文件 准备翻译信息 en.js export default { ho ...
- vue国际化插件
1.安装 $ npm install vue-i18n 2.引入 import VueI18n from 'vue-i18n' Vue.use(VueI18n) const i18n = new Vu ...
- 应用九:Vue之国际化(vue-i18n)
vue-i18n是一款针对Vue.js 的国际化插件,具体应用步骤如下: 一.安装插件 npm install vue-i18n --save 二.在main.js中引入插件 import VueI1 ...
随机推荐
- LeetCode 361. Bomb Enemy
原题链接在这里:https://leetcode.com/problems/bomb-enemy/description/ 题目: Given a 2D grid, each cell is eith ...
- 3143 codevs 二叉树的序遍历
题目描述 Description 求一棵二叉树的前序遍历,中序遍历和后序遍历 输入描述 Input Description 第一行一个整数n,表示这棵树的节点个数. 接下来n行每行2个整数L和R.第i ...
- python之 centos6.7下 python 3.5.2 源码、Django-1.9 安装
在linux6.5中已经自带了python 2 .python 2.6 ,并且yum程序使用的就是自带的python,所以系统自带的python不要随意卸载否则可能导致yum用不了. 测试环境:cen ...
- ucos ii 百度官方介绍
μC/OS II(Micro-Controller Operating System Two)是一个可以基于ROM运行的.可裁剪的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处 ...
- 重新认识synchronized(下)
synchronized既保证原子性,又保证内存可见性,是一种线程同步的方式,是锁机制的一种java实现.synchronized的实现基于JVM底层,JVM是基于monitor实现的,而monito ...
- Debian7 apt源设置
刚装完系统时是没有 apt-spy 的,这时候我们可以暂时先找个可用的源代替,如(写在 /etc/apt/sources.list 中): deb http://http.us.debian.org/ ...
- 第六章 Java性能调优工具(待续)
Java性能调优工具 Windows工具 JDK命令行工具 JConsole工具 Visual VM多合一工具 Visual VM对QQL的支持 MAT内存分析工具 MAT对QQL的支持 JProfi ...
- rsync 简单使用 非默认ssh端口 分别从远程获取及推送本地的文件到远程
rsync: did not see server greetingrsync error: error starting client-server protocol (code 5) at mai ...
- 破解Mac版MyEclipse-2017-ci3 2017、11、21亲测有效
一.前提 要有安装好的jdk,没有的Mac用户看这篇博客:给Mac安装最新版本的jdk(戳此) Windows用户先去官网(戳此)下载jdk,然后百度”jdk配置环境变量”(戳此),很简单的,加油你 ...
- 没有dig命令的结觉方法
-bash: dig: command not found rpm -qa bind-utils 查看没有没安装 bind-utils 包 yum install -y bind-utils 解决