记录在vue3中如何使用vue-i18n,以及解决切换语言不刷新的问题
下载
vue-i18n的v9.x版本开始支持vu3,注意下载的版本号
初始化
- 创建单独的语言模块
zh_CN.js
// ./zh_CN.js
export default {
message: {
test:'测试'
},
}
- 创建 i18n实例
import { createI18n } from 'vue-i18n'
import zh_CN from './zh-CN'
import en from './en'
const i18n = createI18n({
// legacy: false, // Composition API 模式
globalInjection: true, // 全局注册 $t方法
locale: localStorage.getItem('language') || 'zh_CN',
messages: {
zh_CN,
en,
},
})
export default i18n
- 在vue中注册
import i18n from '@/i18n'
app.use(i18n)
使用
不需要任何操作,直接在模板中使用即可
<p>{{ $t('message.test') }}</p>
问题
切换语言时如何刷新?
vue-i18n提供了一个钩子函数 useI18n()
,暴露出locale
属性用于切换语言
import { useI18n } from 'vue-i18n'
const { locale } = useI18n()
locale.value = 'en' // 要切换的语言