1. 概述
前端 Vue实现国际化,自动获取用户语言进行切换。
2. 安装 vue-i18n
npm install vue-i18n
3. 引入 vue-i18n
3.1 在main.js中引入vue-i18n
配置代码如下:
import i18n from './locales'
new Vue({
router,
store,
i18n,
created: bootstrap,
render: h => h(App)
}).$mount('#app')
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import enUS from './lang/en-US'
import zhCn from './lang/zh-CN'
Vue.use(VueI18n)
export const defaultLang = 'zh-CN'
const messages = {
'zh-CN': {
...zhCn
},
'en-US': {
...enUS
}
}
const i18n = new VueI18n({
locale: defaultLang,
fallbackLocale: defaultLang,
messages
})
export default i18n
3.2 在lang中创建我们需要的语言包
4. 触发改变语言
自动识别用户语言然后自动切换语言,使用navigator.language得到用户使用的语言,然后在App.vue中进行判别
代码如下:
created () {
//自动识别用户语言然后自动切换语言
this.autoChangeLanguage();
}
methods:{
autoChangeLanguage() {
this.$i18n.locale = navigator.language;
}
}
这样,我们就可以通过浏览器自动识别语言进行自动切换语言了。
5. 中英文切换
代码如下:
<a class="zhCn" v-if="language == 'zh-CN'" @click="changeLanguage('en-US')">En</a>
<a class="zhCn" v-if="language == 'en-US'" @click="changeLanguage('zh-CN')">中</a>
data() {
return {
language: ''
}
},
created() {
this.initLanguage();
},
methods: {
initLanguage(){
this.language = window.localStorage.getItem("lang") || this.$i18n.locale;
if( window.localStorage.getItem("lang")){
this.$i18n.locale = window.localStorage.getItem("lang");
}
},
changeLanguage(language){
this.language = language;
this.$i18n.locale = language;
window.localStorage.setItem("lang", language);
}
}
6. 编辑语言包
在中文zh-CN.js中编辑
export default {
login: {
signIn: '登 录'
}
}
在英文en-US.js中编辑
export default {
login: {
signIn: 'Sign In'
}
}
7. 调用
7.1 标签内部渲染
{{$t('public.create')}}
7.2 动态属性绑定
:title="$t('public.create')"
7.3 js文件调用
this.$t('public.create')
文档更新时间: 2021-07-14 16:30 作者:朱方华