locale.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. const elLocaleMap = {
  6. 'zh-CN': zhCn,
  7. en: en
  8. }
  9. interface LocaleState {
  10. currentLocale: LocaleDropdownType
  11. localeMap: LocaleDropdownType[]
  12. }
  13. export const useLocaleStore = defineStore('locales', {
  14. state: (): LocaleState => {
  15. return {
  16. currentLocale: {
  17. lang: 'zh-CN',
  18. elLocale: elLocaleMap['zh-CN']
  19. },
  20. // 多语言
  21. localeMap: [
  22. {
  23. lang: 'zh-CN',
  24. name: '简体中文'
  25. },
  26. {
  27. lang: 'en',
  28. name: 'English'
  29. }
  30. ]
  31. }
  32. },
  33. persist: true,
  34. getters: {
  35. getCurrentLocale(): LocaleDropdownType {
  36. return this.currentLocale
  37. },
  38. getLocaleMap(): LocaleDropdownType[] {
  39. return this.localeMap
  40. }
  41. },
  42. actions: {
  43. setCurrentLocale(localeMap: LocaleDropdownType) {
  44. // this.locale = Object.assign(this.locale, localeMap)
  45. this.currentLocale.lang = localeMap?.lang
  46. this.currentLocale.elLocale = elLocaleMap[localeMap?.lang]
  47. // wsCache.set('lang', localeMap?.lang)
  48. }
  49. }
  50. })
  51. export const useLocaleStoreWithOut = () => {
  52. return useLocaleStore(store)
  53. }