refactor(language): move language constants to common module and improve language handling
This commit is contained in:
@@ -9,6 +9,7 @@ import type { LLMFactory } from "@/constants/llm";
|
||||
import type { IMcpServer, IMcpServerListResponse } from "@/interfaces/database/mcp";
|
||||
import type { IImportMcpServersRequestBody, ITestMcpRequestBody, ICreateMcpServerRequestBody } from "@/interfaces/request/mcp";
|
||||
import type { IPaginationBody } from "@/interfaces/request/base";
|
||||
import { LanguageAbbreviation, LanguageAbbreviationKeysMap, LanguageTranslationMap } from "@/constants/common";
|
||||
|
||||
/**
|
||||
* 个人中心设置
|
||||
@@ -49,6 +50,28 @@ export function useProfileSetting() {
|
||||
};
|
||||
}
|
||||
|
||||
export function useLanguageSetting() {
|
||||
const { userInfo, updateUserInfo } = useProfileSetting();
|
||||
const [language, setLanguage] = useState(userInfo?.language || 'English');
|
||||
|
||||
const changeLanguage = async (language: LanguageAbbreviation) => {
|
||||
try {
|
||||
// LanguageAbbreviation to language
|
||||
const translatedLanguage = LanguageAbbreviationKeysMap[language];
|
||||
await updateUserInfo({ language: translatedLanguage });
|
||||
setLanguage(translatedLanguage);
|
||||
} catch (error) {
|
||||
logger.error('更新语言设置失败:', error);
|
||||
throw error;
|
||||
}
|
||||
}
|
||||
|
||||
return {
|
||||
language,
|
||||
changeLanguage,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* LLM 模型设置
|
||||
*/
|
||||
|
||||
@@ -2,6 +2,8 @@ import { useEffect, useCallback } from 'react';
|
||||
import { useUserStore } from '@/stores/userStore';
|
||||
import userService from '@/services/user_service';
|
||||
import type { IUserInfo } from '@/interfaces/database/user-setting';
|
||||
import i18n from '@/locales';
|
||||
import { LanguageTranslationMap } from '@/constants/common';
|
||||
|
||||
/**
|
||||
* 用户数据管理Hook
|
||||
@@ -31,6 +33,9 @@ export const useUserData = () => {
|
||||
if (response.data.code === 0) {
|
||||
const userInfoData: IUserInfo | null = response.data.data || null;
|
||||
setUserInfo(userInfoData);
|
||||
i18n.changeLanguage(
|
||||
LanguageTranslationMap[userInfoData?.language as keyof typeof LanguageTranslationMap],
|
||||
);
|
||||
return userInfoData;
|
||||
} else {
|
||||
throw new Error(response.data.message || '获取用户信息失败');
|
||||
@@ -95,15 +100,15 @@ export const useUserData = () => {
|
||||
|
||||
// 检查是否有失败的请求
|
||||
const errors: string[] = [];
|
||||
|
||||
|
||||
if (userInfoResult.status === 'rejected') {
|
||||
errors.push(`用户信息: ${userInfoResult.reason.message}`);
|
||||
}
|
||||
|
||||
|
||||
if (tenantInfoResult.status === 'rejected') {
|
||||
errors.push(`租户信息: ${tenantInfoResult.reason.message}`);
|
||||
}
|
||||
|
||||
|
||||
if (tenantListResult.status === 'rejected') {
|
||||
errors.push(`租户列表: ${tenantListResult.reason.message}`);
|
||||
}
|
||||
@@ -144,7 +149,7 @@ export const useUserData = () => {
|
||||
tenantList,
|
||||
isLoading,
|
||||
error,
|
||||
|
||||
|
||||
// 方法
|
||||
initializeUserData,
|
||||
refreshUserData,
|
||||
|
||||
Reference in New Issue
Block a user