赞
踩
版本:
vue:2.7.0
vue-i18n:8.28.2
npm i vue-i18n@8.28.2
新建一个文件,例如:lang,项目结构如下:
index.js:
import Vue from 'vue' import VueI18n from 'vue-i18n' Vue.use(VueI18n) import zh from './zh' import tw from './tw' import en from './en' import vn from './vn' import ru from './ru' const messages = { 'zh': zh, 'tw': tw, 'en': en, 'vn': vn, 'ru': ru } const i18n = new VueI18n({ locale: 'zh', fallbackLocale: 'zh-CN', messages, }) export default i18n
设置语言内容,例如:zh.js / en.js
zh.js:
export default {
setting: {
setting: '设置',
...
}
}
en.js:
export default {
setting: {
setting: 'setting',
...
}
}
…
import i18n from '@/lang'
new Vue({
router,
pinia,
i18n,
render: h => h(App)
}).$mount('#app')
在html标签中使用
<NavBar :title="$t('setting.setting')" bg-color="#FDDEF3"/>
在html文本中使用
<p>{{$t('setting.setting')}}</p>
this.$t('setting.setting')
但是因为vue.2.7,setup中不可以直接使用this的,所以需要自行封装一个useI18n
import { getCurrentInstance } from 'vue'
// 访问i18n
export const useI18n = () => {
const vm = getCurrentInstance()
if (!vm) throw new Error('must be called in setup')
return vm.proxy.$i18n
}
可以愉快的使用composition api 啦
引入:
import { useI18n } from '@/utils/vueApi'
const i18n = useI18n()
<button @click="changeLanguage('zh')">中文</button>
<button @click="changeLanguage('en')">英文</button>
...
const changeLanguage = (e) => {
i18n.locale = e
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。