import pinia from '@/store' import { useSettingsStore } from '@/store/modules/settings' import { createI18n } from 'vue-i18n' import { LanguageType } from '/#/store' // import en from './locales/en.json' import en from '@/locales/en' import zh from '@/locales/zh' import zhTw from '@/locales/zh-TW' import enLocale from 'element-plus/dist/locale/en' import zhLocale from 'element-plus/dist/locale/zh-cn' import zhTwLocale from 'element-plus/dist/locale/zh-tw' export { enLocale, zhLocale, zhTwLocale } const messages: Record = { en: { ...en, }, zh: { ...zh, }, 'zh-TW': { ...zhTw }, } function getLanguage() { const { getLanguage } = useSettingsStore(pinia) return getLanguage } export const i18n = createI18n({ legacy: false, locale: getLanguage(), fallbackLocale: 'zh', messages, }) export function setupI18n(app: any) { app.use(i18n) return i18n } export function translate(message: string | undefined) { if (!message) { return '' } return ( [getLanguage(), 'vabI18n', message].reduce( (o, k) => (o || {})[k], messages as any ) || message ) }