Files
template-vue-hucky/src/hooks/globalLanguageHook.ts

38 lines
946 B
TypeScript

import {
useLanguageStore,
GlobalLanguage,
languageMap,
} from "@/stores/LanguageStore";
import { languageChangeBus } from "./bus/languageChangeBus";
const languageStore = useLanguageStore();
export const optionalLanguages = Object.entries(languageMap).map(
([key, value]) => ({
label: key as GlobalLanguage,
value,
}),
);
// 一定不要通过改变 curGlobalLanguage 来改变语言,而要通过 changeGlobalLanguage 来改变语言
const curGlobalLanguage = computed(() => languageStore.language);
function changeGlobalLanguage(
language: GlobalLanguage,
locale: WritableComputedRef<string>,
) {
// 延迟切换先通知其他组件播放动画
languageChangeBus.emit("language changed");
setTimeout(() => {
languageStore.setLanguage(language);
locale.value = language;
}, 300);
}
export const useGlobalLanguageHook = () => ({
optionalLanguages,
curGlobalLanguage,
changeGlobalLanguage,
});