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

38 lines
946 B
TypeScript
Raw Normal View History

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