記錄在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' // 要切換的語言