ai-manus/chat-client/src/i18n/index.ts

55 lines
1.1 KiB
TypeScript
Raw Normal View History

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
)
}