You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
37 lines
762 B
TypeScript
37 lines
762 B
TypeScript
import type { App } from 'vue'
|
|
import { createI18n } from 'vue-i18n'
|
|
import enUS from './en-US'
|
|
import zhCN from './zh-CN'
|
|
import zhTW from './zh-TW'
|
|
import { useAppStoreWithOut } from '@/store/modules/app'
|
|
import type { Language } from '@/store/modules/app/helper'
|
|
|
|
const appStore = useAppStoreWithOut()
|
|
|
|
const defaultLocale = appStore.language || 'zh-CN'
|
|
|
|
const i18n = createI18n({
|
|
locale: defaultLocale,
|
|
fallbackLocale: 'en-US',
|
|
allowComposition: true,
|
|
messages: {
|
|
'en-US': enUS,
|
|
'zh-CN': zhCN,
|
|
'zh-TW': zhTW,
|
|
},
|
|
})
|
|
|
|
export function t(key: string) {
|
|
return i18n.global.t(key)
|
|
}
|
|
|
|
export function setLocale(locale: Language) {
|
|
i18n.global.locale = locale
|
|
}
|
|
|
|
export function setupI18n(app: App) {
|
|
app.use(i18n)
|
|
}
|
|
|
|
export default i18n
|