【vue】中英文切换(使用 vue-i18n )
一、准备工作
1、vue-i18n
1.仓库地址
2.兼容性:支持 Vue.js 2.x 以上版本
1-1.安装依赖vue-i18n
(c)npm install vue-i18n
1-2.使用
在 main.js 中引入 vue-i18n
import Vue from "vue"; import VueI18n from 'vue-i18n' Vue.use(VueI18n)
2、准备本地翻译信息
2-1、element ui的国际化
import enLocale from 'element-ui/lib/locale/lang/en'
import zhLocale from 'element-ui/lib/locale/lang/zh-CN'
2-2、zh.js(将我们项目中的语言包与Element的语言包进行合并)
import zhLocale from 'element-ui/lib/locale/lang/zh-CN' export default { message: { title: '运动品牌'
amont: '{n}人买了'
}, placeholder: { enter: '请输入您喜欢的品牌' }, brands: { nike: '耐克', adi: '阿迪达斯', nb: '新百伦', ln: '李宁' }, ...zhLocale }
2-3、en.js(将我们项目中的语言包与Element的语言包进行合并)
import enLocale from 'element-ui/lib/locale/lang/en' export default{ message: { title: 'Sport Brands' }, placeholder: { enter: 'Please type in your favorite brand' }, brands: { nike: 'Nike', adi: 'Adidas', nb: 'New Banlance', ln: 'LI Ning' }
...enLocale
}
2-4、创建带有选项的VueI18n 实例
const i18n = new VueI18n({ locale: 'en', // set locale messages: { zh: i18n_zh, en: i18n_en, }, // set locale messages })
2-5、把 i18n 挂载到 vue 根实例上
const app = new Vue({ router, i18n, ...App }).$mount('#app')
二、总结版
import Vue from 'vue' import App from "./App.vue"; import VueI18n from 'vue-i18n' import ElementLocale from 'element-ui/lib/locale' import i18n_zh from "./i18n/zh"; import i18n_en from "./i18n/len"; Vue.use(VueI18n) const i18n = new VueI18n({ locale: 'en', // set locale messages: { zh: i18n_zh, en: i18n_en, }, // set locale messages }) ElementLocale.i18n((key, value) => i18n.t(key, value)) const app = new Vue({ router, i18n, ...App }).$mount('#app')
三、实战
1、在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>
2、在js 中使用
data () { return { brands: [this.$t('brands.nike'), this.$t('brands.adi'), this.$t('brands.nb'), this.$t('brands.ln')] } },
四、中英文切换
// 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', }) }) },
五、格式化
<p>{{ $t('message.amount', {'0': '10'}) }}</p>
输入如下
10人购买了
相关资料
搜索
复制
作者:smile.轉角
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
欢迎关注我,一起进步!扫描下方二维码即可加我QQ