主要由以下几个模块组成由 :
src\main.js
src\locales\index.js
src\locales\zh_CN.json
src\utils\config.js
# src\main.js
import i18n from '@/locales/index.js'
new Vue({
el: '#app',
i18n,
router,
store,
render: h => h(App)
})
# src\locales\index.js
import Cookies from 'js-cookie'
import VueI18n from 'vue-i18n'
import Vue from 'vue'
const data = {}
const locale = Cookies.get('hb_lang') || 'en_US'
const readDir = ['en_US', 'zh_CN', 'th_TH']
for (let i = 0; i < readDir.length; i++) {
data[readDir[i]] = require(`./${readDir[i]}.json`)
}
Vue.use(VueI18n)
const i18n = new VueI18n({
locale,
fallbackLocale: locale, // 语言环境中不存在相应massage键时回退到指定语言
messages: data
})
export default i18n
# src\locales\zh_CN.json
示例项目包涵中英泰三国语言, 这里仅抽出中文作为示例 :
{
"欢迎登录": "欢迎登录",
"参数配置":"参数配置",
"折价币种":"折价币种"
}
调用方法 : <h1 class="slogan">{{ $t('欢迎登录') }}</h1>
# src\utils\config.js
import Cookies from 'js-cookie'
import i18n from '@/locales/index.js'
const Key = 'hb_lang'
export function get() {
return Cookies.get(Key)
}
export function set(data) {
i18n.locale = data
return Cookies.set(Key, data)
}
export function remove() {
return Cookies.remove(Key)
}
其中 , 当需要动态切换语言时,调用 set
方法即可, 例如:
import { set as setLanguage } from '@/utils/config.js'
setLanguage('en_US')
# 注意事项
以上配置须臾结合 Vue
的 {{}}
进行编辑, 例如上文所提到的 : <h1 class="solutions">{{ $t('solutions') }}</h1>
倘若像下面这样则会导致切换语言时, 无法动态即时更新文案 :
// 不要这样写, 解决方法在下面
<template>
<div>
<div class="solutions">{{ solutions }}</div>
</div>
</template>
<script>
export default {
data() {
return {
solutions : this.$t('solutions')
}
}
}
</script>
解决方法 :
<template>
<div>
<div class="solutions">{{ solutions }}</div>
</div>
</template>
<script>
export default {
watch: {
'$store.state.lang'(language) {
this.init()
}
},
data() {
return {
solutions : this.$t('solutions')
}
},
created() {
this.init()
},
methods: {
init(){
this.solutions = this.$t('solutions')
}
},
}
</script>
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。