前几天一个 vue 项目需要实现中英文切换,在这里记录一下自己的实现过程。
环境
使用 vue-cli
构建项目,webpack
模板。
多语言插件采用 vue-i18n.
安装
其他安装方法详见文档的 Installation 篇。
使用
由于语言文件的代码比较多,就不直接写在main.js
里面了,src
目录下创建i18n.js
文件,代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| import Vue from 'vue' import VueI18n from 'vue-i18n' Vue.use(VueI18n)
const messages = { zh: { message: { text: '免费获取 SGC' } }, en: { message: { text: 'Get Free SGC' } } }
const messages: { 'zh-CN': require('./common/lang/zh'), 'en-US': require('./common/lang/en') }
export default new VueI18n({ locale: 'en', messages })
|
main.js
中代码如下:
1 2 3 4 5 6 7 8 9 10 11
| import Vue from 'vue' import App from './App' import i18n from './i18n'
new Vue({ el: '#app', components: { App }, template: '<App/>', i18n })
|
上面的代码正式将 vue-i18n
引入 vue 项目中,创建一个 i18n
实例对象,方便全局调用。
HTML 中使用模版:
1 2 3 4 5 6 7 8
| <div id="#app"> <p>{{ $t("message.text") }}</p> </div> ... <div class="lang"> <div class="english" @click="langToggle">English</div> <div class="china" @click="langToggle">简体中文</div> </div>
|
我们可以通过 this.$i18n.locale
来进行语言的切换,就是通过点击事件,切换 locale
的值。
切换方法示例:
1 2 3 4 5 6 7 8 9
| methods: { langToggle() { if (this.$i18n.locale === 'en') { this.$i18n.locale = 'zh' } else { this.$i18n.locale = 'en' } } }
|
现在点击按钮便可以切换语言了.