import zhCn from './locales/zh-cn' export type LocaleType = 'zh-cn' | 'en-us' const messages = { 'zh-cn': zhCn, 'en-us': {} } class I18n { private currentLocale: LocaleType = 'zh-cn' constructor() { // 从本地存储获取语言设置 const savedLocale = localStorage.getItem('locale') as LocaleType if (savedLocale && messages[savedLocale]) { this.currentLocale = savedLocale } } setLocale(locale: LocaleType) { if (messages[locale]) { this.currentLocale = locale localStorage.setItem('locale', locale) } } getLocale() { return this.currentLocale } t(key: string): string { const keys = key.split('.') let value: any = messages[this.currentLocale] for (const k of keys) { value = value?.[k] } return typeof value === 'string' ? value : key } } export default new I18n()