import { computed, onBeforeMount } from 'vue'; import { useI18n } from 'vue-i18n'; import { localGet, localSet } from '@/utils/cache-local-utils'; import { CACHE_LOCAL_I18N } from '@/constants/cache-keys-constants'; export default function useLocale() { //实例化i18n const i18n = useI18n(); // 获取当前语言设置 const currentLocale = computed(() => { return i18n.locale.value; }); // 切换语言 const changeLocale = (value: string) => { i18n.locale.value = value; localSet(CACHE_LOCAL_I18N, value); window.location.reload(); }; // 可选的语言 const optionsLocale = [ { value: 'zh_CN', label: '中文', }, { value: 'en_US', label: 'English', }, ]; // 挂载前根据默认语言再设置一次 onBeforeMount(() => { const localI18n = localGet(CACHE_LOCAL_I18N); if (localI18n) { i18n.locale.value = localI18n; document.documentElement.lang = localI18n.replace('_', '-'); } }); return { optionsLocale, currentLocale, changeLocale, t: i18n.t, }; }