github.com/e154/smart-home@v0.17.2-0.20240311175135-e530a6e5cd45/static_source/admin/src/store/modules/locale.ts (about)

     1  import { defineStore } from 'pinia'
     2  import { store } from '../index'
     3  import zhCn from 'element-plus/es/locale/lang/zh-cn'
     4  import en from 'element-plus/es/locale/lang/en'
     5  import ru from 'element-plus/es/locale/lang/ru'
     6  import { useCache } from '@/hooks/web/useCache'
     7  import { LocaleDropdownType } from '@/types/localeDropdown'
     8  
     9  const { wsCache } = useCache()
    10  
    11  const elLocaleMap = {
    12    ru: ru,
    13    en: en
    14  }
    15  interface LocaleState {
    16    currentLocale: LocaleDropdownType
    17    localeMap: LocaleDropdownType[]
    18  }
    19  
    20  export const useLocaleStore = defineStore('locales', {
    21    state: (): LocaleState => {
    22      return {
    23        currentLocale: {
    24          lang: wsCache.get('lang') || 'en',
    25          elLocale: elLocaleMap[wsCache.get('lang') || 'en']
    26        },
    27        localeMap: [
    28          {
    29            lang: 'ru',
    30            name: 'Русский'
    31          },
    32          {
    33            lang: 'en',
    34            name: 'English'
    35          }
    36        ]
    37      }
    38    },
    39    getters: {
    40      getCurrentLocale(): LocaleDropdownType {
    41        return this.currentLocale
    42      },
    43      getLocaleMap(): LocaleDropdownType[] {
    44        return this.localeMap
    45      }
    46    },
    47    actions: {
    48      setCurrentLocale(localeMap: LocaleDropdownType) {
    49        // this.locale = Object.assign(this.locale, localeMap)
    50        this.currentLocale.lang = localeMap?.lang
    51        this.currentLocale.elLocale = elLocaleMap[localeMap?.lang]
    52        wsCache.set('lang', localeMap?.lang)
    53      }
    54    }
    55  })
    56  
    57  export const useLocaleStoreWithOut = () => {
    58    return useLocaleStore(store)
    59  }