maxkb/ui/src/locales/useLocale.ts
2025-07-10 17:10:43 +08:00

29 lines
794 B
TypeScript

import { useLocalStorage } from '@vueuse/core'
import { computed } from 'vue'
import { useI18n } from 'vue-i18n'
import { i18n, langCode, localeConfigKey } from '@/locales/index'
export function useLocale() {
const { locale } = useI18n({ useScope: 'global' })
function changeLocale(lang: string) {
// 如果切换的语言不在对应语言文件里则默认为简体中文
if (!langCode.includes(lang)) {
lang = 'en-US'
}
locale.value = lang
useLocalStorage(localeConfigKey, 'en-US').value = lang
}
const getComponentsLocale = computed(() => {
const localeMessage = i18n.global.getLocaleMessage(locale.value) as Record<string, any>
return localeMessage.componentsLocale
})
return {
changeLocale,
getComponentsLocale,
locale,
}
}