feat(i18n): add internationalization support across multiple components

This commit is contained in:
2025-10-29 16:40:20 +08:00
parent 184c232cc8
commit 9199ed7c29
34 changed files with 1455 additions and 761 deletions

View File

@@ -1,4 +1,5 @@
import { useState, useEffect, useCallback, useMemo } from 'react';
import { useTranslation } from 'react-i18next';
import knowledgeService from '@/services/knowledge_service';
import type { IKnowledge, IKnowledgeGraph, IKnowledgeResult } from '@/interfaces/database/knowledge';
import type { IFetchKnowledgeListRequestBody, IFetchKnowledgeListRequestParams } from '@/interfaces/request/knowledge';
@@ -80,6 +81,7 @@ export interface UseKnowledgeListReturn extends UseKnowledgeListState {
export const useKnowledgeList = (
initialParams?: IFetchKnowledgeListRequestParams & IFetchKnowledgeListRequestBody
): UseKnowledgeListReturn => {
const { t } = useTranslation();
const [knowledgeBases, setKnowledgeBases] = useState<IKnowledge[]>([]);
const [total, setTotal] = useState(0);
const [loading, setLoading] = useState(false);
@@ -137,10 +139,10 @@ export const useKnowledgeList = (
setKnowledgeBases(data.kbs || []);
setTotal(data.total || 0);
} else {
throw new Error(response.data.message || '获取知识库列表失败');
throw new Error(response.data.message || t('knowledgeHooks.fetchKnowledgeListFailed'));
}
} catch (err: any) {
const errorMessage = err.response?.data?.message || err.message || '获取知识库列表失败';
const errorMessage = err.response?.data?.message || err.message || t('knowledgeHooks.fetchKnowledgeListFailed');
setError(errorMessage);
console.error('Failed to fetch knowledge bases:', err);
} finally {
@@ -210,6 +212,7 @@ export const useKnowledgeList = (
* 知识库详情Hook
*/
export const useKnowledgeDetail = (kbId: string) => {
const { t } = useTranslation();
const [knowledge, setKnowledge] = useState<IKnowledge | null>(null);
const [loading, setLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
@@ -232,10 +235,10 @@ export const useKnowledgeDetail = (kbId: string) => {
if (response.data.code === 0) {
setKnowledge(response.data.data);
} else {
throw new Error(response.data.message || '获取知识库详情失败');
throw new Error(response.data.message || t('knowledgeHooks.fetchKnowledgeDetailFailed'));
}
} catch (err: any) {
const errorMessage = err.response?.data?.message || err.message || '获取知识库详情失败';
const errorMessage = err.response?.data?.message || err.message || t('knowledgeHooks.fetchKnowledgeDetailFailed');
setError(errorMessage);
console.error('Failed to fetch knowledge detail:', err);
} finally {
@@ -255,10 +258,10 @@ export const useKnowledgeDetail = (kbId: string) => {
if (response.data.code === 0) {
setKnowledgeGraph(response.data.data);
} else {
throw new Error(response.data.message || '获取知识库图失败');
throw new Error(response.data.message || t('knowledgeHooks.fetchKnowledgeGraphFailed'));
}
} catch (err: any) {
const errorMessage = err.response?.data?.message || err.message || '获取知识库图失败';
const errorMessage = err.response?.data?.message || err.message || t('knowledgeHooks.fetchKnowledgeGraphFailed');
setError(errorMessage);
console.error('Failed to fetch knowledge graph:', err);
} finally {
@@ -286,6 +289,7 @@ export const useKnowledgeDetail = (kbId: string) => {
* 提供创建、更新、删除知识库的功能
*/
export const useKnowledgeOperations = () => {
const { t } = useTranslation();
const [loading, setLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
@@ -302,10 +306,10 @@ export const useKnowledgeOperations = () => {
if (response.data.code === 0) {
return response.data.data;
} else {
throw new Error(response.data.message || '创建知识库失败');
throw new Error(response.data.message || t('knowledgeHooks.createKnowledgeFailed'));
}
} catch (err: any) {
const errorMessage = err.response?.data?.message || err.message || '创建知识库失败';
const errorMessage = err.response?.data?.message || err.message || t('knowledgeHooks.createKnowledgeFailed');
setError(errorMessage);
console.error('Failed to create knowledge:', err);
throw err;
@@ -330,10 +334,10 @@ export const useKnowledgeOperations = () => {
if (response.data.code === 0) {
return response.data.data;
} else {
throw new Error(response.data.message || '更新知识库基础信息失败');
throw new Error(response.data.message || t('knowledgeHooks.updateKnowledgeBasicInfoFailed'));
}
} catch (err: any) {
const errorMessage = err.response?.data?.message || err.message || '更新知识库基础信息失败';
const errorMessage = err.response?.data?.message || err.message || t('knowledgeHooks.updateKnowledgeBasicInfoFailed');
setError(errorMessage);
console.error('Failed to update knowledge basic info:', err);
throw err;
@@ -362,10 +366,10 @@ export const useKnowledgeOperations = () => {
if (response.data.code === 0) {
return response.data.data;
} else {
throw new Error(response.data.message || '更新知识库模型配置失败');
throw new Error(response.data.message || t('knowledgeHooks.updateKnowledgeModelConfigFailed'));
}
} catch (err: any) {
const errorMessage = err.response?.data?.message || err.message || '更新知识库模型配置失败';
const errorMessage = err.response?.data?.message || err.message || t('knowledgeHooks.updateKnowledgeModelConfigFailed');
setError(errorMessage);
console.error('Failed to update knowledge model config:', err);
throw err;
@@ -387,10 +391,10 @@ export const useKnowledgeOperations = () => {
if (response.data.code === 0) {
return response.data.data;
} else {
throw new Error(response.data.message || '删除知识库失败');
throw new Error(response.data.message || t('knowledgeHooks.deleteKnowledgeFailed'));
}
} catch (err: any) {
const errorMessage = err.response?.data?.message || err.message || '删除知识库失败';
const errorMessage = err.response?.data?.message || err.message || t('knowledgeHooks.deleteKnowledgeFailed');
setError(errorMessage);
console.error('Failed to delete knowledge:', err);
throw err;
@@ -422,6 +426,7 @@ export const useKnowledgeOperations = () => {
* 提供批量删除等功能
*/
export const useKnowledgeBatchOperations = () => {
const { t } = useTranslation();
const [loading, setLoading] = useState(false);
const [error, setError] = useState<string | null>(null);
@@ -443,12 +448,12 @@ export const useKnowledgeBatchOperations = () => {
.map(({ index }) => kbIds[index]);
if (failures.length > 0) {
throw new Error(`删除失败的知识库: ${failures.join(', ')}`);
throw new Error(`${t('knowledgeHooks.batchDeleteFailedKnowledgeBases')}: ${failures.join(', ')}`);
}
return results;
} catch (err: any) {
const errorMessage = err.response?.data?.message || err.message || '批量删除知识库失败';
const errorMessage = err.response?.data?.message || err.message || t('knowledgeHooks.batchDeleteKnowledgeFailed');
setError(errorMessage);
console.error('Failed to batch delete knowledge:', err);
throw err;