您的位置:首页 > Web前端 > Vue.js

在vue.js中实现多语言切换(vue-i18n的使用)

2020-04-25 18:42 477 查看
  • 说明: 使用vue-i18n可以在vue.js中实现多语言切换,让一个页面中同时支持中/英文显示。
  • 以下所有操作都是在已有的vue-cli项目下进行的。

1. 下载安装

npm install vue-i18n -save

2. 在main.js中引用

import Vue from 'vue';

import VueI18n from 'vue-i18n';

Vue.use(VueI18n);
...

// 多语言切换
const i18n = new VueI18n({
locale: 'zh', //设置默认语言
messages:{
'zh': require('@/assets/lang/zh_cn'),
'en': require('@/assets/lang/en')
}
});

...

// 在Vue实例中引用 i18n
new Vue({
router,
i18n,   // 引用i18n
render: h => h(App)
}).$mount("#app");

3. 创建语言包

在 src/assets/lang 文件夹下面,分别创建不同的语言包,我创建的是 en.js 和 zh_cn.js 两个语言包,代码如下,很简单一看就懂:

  • src/assets/lang/en.js
module.exports = {
language: {
name: 'English'
},

login: {
title: 'Welcome',
username: 'user name'
}
}
  • src/assets/lang/zh_cn.js
module.exports = {

language: {
name: '中文'
},

login: {
title: '系统登录',
username: '请输入用户名',
}
}

4.前台显示

在 src/views/test.vue 文件中:

<template>
<div>
<!-- 注1:将指定的语言变量,直接显示在网页里 -->
<h1>{{ $t('login.title') }}</h1>

<!-- 注2:将指定的语言变量,绑定在一个input标签里 -->
<input type='text' :placeholder="$t('login.username')" >

<!-- 注3:引用变量,变量的值在js代码中,从定义的语言变量中赋值过来 -->
<p>当前语言: {{ message }} </p>
</div>
</template>

<script>

export default {
data() {
return {
// 注3:将一个指定的语言变量的值赋给一个变量
message: this.$t('language.name')
}
}
};
</script>

5.语言切换

在上面代码的基础上增加语言切换功能。

<template>
<div>
<!-- 注1:语言切换按钮 -->

<!-- 注2:在按钮中,加入单击事件,事件指向语言切换函数 -->
<button @click="switch_the_language">中文/English<button>

<h1>{{ $t('login.title') }}</h1>

<input type='text' :placeholder="$t('login.username')" >

<p>当前语言: {{ message }} </p>
</div>
</template>

<script>

export default {
data() {
return {
message: this.$t('language.name')
}
},

methods: {

// 注3:增加语言切换函数
switch_the_language() {
if (this.$i18n.locale === 'zh') {
this.$i18n.locale = 'en'
} else {
this.$i18n.locale = 'zh'
}
}

}
};
</script>

就到这里吧。

  • 点赞
  • 收藏
  • 分享
  • 文章举报
光明老妖 发布了1 篇原创文章 · 获赞 0 · 访问量 40 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: