You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
 
 
 
 
 
 

54 lines
1.4 KiB

import type { LocaleSetting, LocaleType } from '@/types/config'
import { defineStore } from 'pinia'
import { store } from '@/store'
import { LOCALE_KEY } from '@/enums/cacheEnum'
import { createLocalStorage } from '@/utils/cache'
import { localeSetting } from '@/settings/localeSetting'
const ls = createLocalStorage()
const lsLocaleSetting = (ls.get(LOCALE_KEY) || localeSetting) as LocaleSetting
interface LocaleState {
localInfo: LocaleSetting
}
export const useLocaleStore = defineStore('app-locale', {
state: (): LocaleState => ({
localInfo: lsLocaleSetting
}),
getters: {
getShowPicker(state): boolean {
return !!state.localInfo?.showPicker
},
getLocale(state): LocaleType {
return state.localInfo?.locale ?? 'zh_CN'
}
},
actions: {
/**
* Set up multilingual information and cache
* @param info multilingual info
*/
setLocaleInfo(info: Partial<LocaleSetting>) {
this.localInfo = { ...this.localInfo, ...info }
ls.set(LOCALE_KEY, this.localInfo)
},
/**
* Initialize multilingual information and load the existing configuration from the local cache
*/
initLocale() {
this.setLocaleInfo({
...localeSetting,
...this.localInfo
})
}
}
})
// Need to be used outside the setup
export function useLocaleStoreWithOut() {
return useLocaleStore(store)
}