import { ref, reactive } from 'vue'; import ZhCNLang from './lang/zh-CN'; import EnUSLang from './lang/en-US'; import { deepMerge } from '../utils/util'; // 组件默认语言设置 export type Lang = Record; const langs = reactive({ 'zh-CN': new ZhCNLang(), 'en-US': new EnUSLang() }); export class Locale { static currentLang = ref('zh-CN'); static languages(): Lang { return langs[this.currentLang.value]; } static use(lang: string, newLanguages?: any) { if (newLanguages) { langs[lang] = new newLanguages(); } this.currentLang.value = lang; } static merge(lang: string, newLanguages: any) { if (newLanguages) { if (langs[lang]) { deepMerge(langs[lang], newLanguages); } else { this.use(lang, newLanguages); } } } } export default Locale;