| 123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- 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()
|