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 }