2025-07-18 16:38:18 +08:00
|
|
|
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'
|
2025-07-22 16:48:28 +08:00
|
|
|
import zhTwLocale from 'element-plus/dist/locale/zh-tw'
|
2025-07-18 16:38:18 +08:00
|
|
|
|
2025-07-22 16:48:28 +08:00
|
|
|
|
|
|
|
export { enLocale, zhLocale, zhTwLocale }
|
2025-07-18 16:38:18 +08:00
|
|
|
|
|
|
|
const messages: Record<LanguageType, any> = {
|
|
|
|
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
|
|
|
|
)
|
|
|
|
}
|