first commit

This commit is contained in:
liu
2026-07-13 15:23:29 +08:00
commit 50885a98c8
473 changed files with 33772 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
import {useTranslation} from 'react-i18next';
import {useMemo} from 'react';
import dayjs from 'dayjs';
import options from '@/locales/options';
/**
* 语言切换 Hook
*/
const useLanguage = () => {
const { i18n } = useTranslation();
/**
* 切换语言
* @param lng 语言代码
*/
const changeLanguage = async (lng: string) => {
const config = getLanguageConfig(lng);
dayjs.locale(config.dayjsLocale);
await i18n.changeLanguage(lng);
localStorage.setItem('i18nextLng', lng);
};
/**
* 获取当前语言配置对象
*/
const getLanguageConfig = (lng: string) => {
return options.find(opt => opt.value === lng) || options[0];
};
/**
* Antd Locale Hook
*/
const antdLocale = useMemo(() => {
const currentLang = i18n.language;
const config = options.find(opt => opt.value === currentLang);
return config ? config.antdLocale : options[0].antdLocale;
}, [i18n.language]);
return {
antdLocale,
language: i18n.language,
changeLanguage,
getLanguageConfig,
languageOptions: options,
};
};
export default useLanguage;