From b8cc9c9614a11fcc5405f202b19852365b90a36b Mon Sep 17 00:00:00 2001
From: zhou zhou <3272660260@qq.com>
Date: 星期四, 19 三月 2026 14:46:29 +0800
Subject: [PATCH] #AI.国际化
---
rsf-admin/src/page/system/aiMcpMount/AiMcpMountToolsPanel.jsx | 6 +-
rsf-admin/src/i18n/zh.js | 39 ++++++++++++-------
rsf-admin/src/i18n/en.js | 11 +++++
rsf-admin/src/page/system/aiMcpMount/AiMcpMountList.jsx | 12 +++++-
rsf-admin/src/page/system/aiParam/AiParamList.jsx | 10 ++--
rsf-admin/src/page/system/aiMcpMount/AiMcpMountForm.jsx | 10 ++--
6 files changed, 59 insertions(+), 29 deletions(-)
diff --git a/rsf-admin/src/i18n/en.js b/rsf-admin/src/i18n/en.js
index ae41b15..f469a92 100644
--- a/rsf-admin/src/i18n/en.js
+++ b/rsf-admin/src/i18n/en.js
@@ -355,7 +355,12 @@
transportType: "Transport Type",
builtinCode: "Built-in MCP",
serverUrl: "Server URL",
+ endpoint: "SSE Endpoint",
+ headersJson: "Headers JSON",
command: "Command",
+ argsJson: "Args JSON",
+ envJson: "Env JSON",
+ requestTimeoutMs: "Timeout(ms)",
sort: "Sort",
healthStatus: "Health Status",
lastInitElapsedMs: "Last Init Elapsed(ms)",
@@ -384,6 +389,8 @@
emptyTitle: "No MCP mounts",
emptyDescription: "Create a built-in MCP, remote SSE mount, or local STDIO mount.",
sortValue: "Sort %{value}",
+ timeoutValue: "Timeout %{value} ms",
+ initValue: "Init %{value} ms",
noConnectivityTest: "No connectivity test has been run yet",
connectivityTest: "Connectivity Test",
},
@@ -415,8 +422,12 @@
description: "Supports connectivity checks, structured schema preview, and generated test forms from input parameters.",
refresh: "Refresh Tools",
noTools: "No tools were resolved for this mount.",
+ connectivityInit: "Init %{value} ms",
+ connectivityToolCount: "Tools %{count}",
purpose: "Purpose: %{value}",
fieldCount: "%{count} fields",
+ returnDirect: "Return Direct",
+ normal: "Normal",
queryBoundary: "Query boundary: %{value}",
exampleQuestions: "Example Questions",
formattedSchema: "Formatted Input Schema",
diff --git a/rsf-admin/src/i18n/zh.js b/rsf-admin/src/i18n/zh.js
index ba8a698..acf150c 100644
--- a/rsf-admin/src/i18n/zh.js
+++ b/rsf-admin/src/i18n/zh.js
@@ -291,12 +291,12 @@
fields: {
providerType: "鎻愪緵鏂圭被鍨�",
model: "妯″瀷",
- baseUrl: "Base URL",
- apiKey: "API Key",
- temperature: "Temperature",
- topP: "Top P",
- maxTokens: "Max Tokens",
- timeoutMs: "Timeout(ms)",
+ baseUrl: "鏈嶅姟鍦板潃",
+ apiKey: "API 瀵嗛挜",
+ temperature: "娓╁害",
+ topP: "Top P 閲囨牱",
+ maxTokens: "鏈�澶� Tokens",
+ timeoutMs: "瓒呮椂(ms)",
streamingEnabled: "鍚敤娴佸紡鍝嶅簲",
validateStatus: "鏈�杩戞牎楠岀姸鎬�",
lastValidateElapsedMs: "鏈�杩戞牎楠岃�楁椂(ms)",
@@ -319,7 +319,7 @@
failed: "AI 鍙傛暟楠岃瘉澶辫触",
loading: "楠岃瘉涓�...",
beforeSave: "淇濆瓨鍓嶉獙璇�",
- description: "浼氱洿鎺ユ牎楠屽綋鍓� Base URL銆丄PI Key 涓庢ā鍨嬫槸鍚﹀彲璋冪敤銆�",
+ description: "浼氱洿鎺ユ牎楠屽綋鍓嶆湇鍔″湴鍧�銆丄PI 瀵嗛挜涓庢ā鍨嬫槸鍚﹀彲璋冪敤銆�",
},
form: {
sections: {
@@ -332,8 +332,8 @@
fields: {
code: "缂栫爜",
scene: "鍦烘櫙",
- systemPrompt: "System Prompt",
- userPromptTemplate: "User Prompt Template",
+ systemPrompt: "绯荤粺鎻愮ず璇�",
+ userPromptTemplate: "鐢ㄦ埛鎻愮ず璇嶆ā鏉�",
},
list: {
emptyTitle: "鏆傛棤 Prompt 閰嶇疆",
@@ -354,10 +354,10 @@
metadata: "绀轰緥鍏冩暟鎹� JSON",
loading: "棰勮涓�...",
render: "棰勮娓叉煋",
- description: "鐢ㄥ綋鍓嶈〃鍗曞唴瀹规覆鏌� System Prompt 鍜� User Prompt銆�",
+ description: "鐢ㄥ綋鍓嶈〃鍗曞唴瀹规覆鏌撶郴缁熸彁绀鸿瘝鍜岀敤鎴锋彁绀鸿瘝銆�",
resolvedVariables: "宸茶В鏋愬彉閲忥細%{value}",
- renderedSystemPrompt: "娓叉煋鍚庣殑 System Prompt",
- renderedUserPrompt: "娓叉煋鍚庣殑 User Prompt",
+ renderedSystemPrompt: "娓叉煋鍚庣殑绯荤粺鎻愮ず璇�",
+ renderedUserPrompt: "娓叉煋鍚庣殑鐢ㄦ埛鎻愮ず璇�",
},
form: {
sections: {
@@ -371,7 +371,12 @@
transportType: "浼犺緭绫诲瀷",
builtinCode: "鍐呯疆 MCP",
serverUrl: "鏈嶅姟鍦板潃",
+ endpoint: "SSE 绔偣",
+ headersJson: "璇锋眰澶� JSON",
command: "鍛戒护",
+ argsJson: "鍙傛暟 JSON",
+ envJson: "鐜鍙橀噺 JSON",
+ requestTimeoutMs: "瓒呮椂(ms)",
sort: "鎺掑簭",
healthStatus: "鍋ュ悍鐘舵��",
lastInitElapsedMs: "鏈�杩戝垵濮嬪寲鑰楁椂(ms)",
@@ -400,6 +405,8 @@
emptyTitle: "鏆傛棤 MCP 鎸傝浇",
emptyDescription: "鍙互鏂板缓鍐呯疆 MCP銆佽繙绋� SSE 鎸傝浇鎴栨湰鍦� STDIO 鎸傝浇銆�",
sortValue: "鎺掑簭 %{value}",
+ timeoutValue: "瓒呮椂 %{value} ms",
+ initValue: "鍒濆鍖� %{value} ms",
noConnectivityTest: "灏氭湭鎵ц杩為�氭�ф祴璇�",
connectivityTest: "杩為�氭祴璇�",
},
@@ -421,7 +428,7 @@
},
},
tools: {
- schemaParseFailed: "Input Schema 瑙f瀽澶辫触: %{message}",
+ schemaParseFailed: "杈撳叆 Schema 瑙f瀽澶辫触: %{message}",
loadFailed: "鑾峰彇宸ュ叿鍒楄〃澶辫触",
inputRequired: "璇疯緭鍏ュ伐鍏锋祴璇� JSON",
testSuccess: "宸ュ叿 %{name} 娴嬭瘯瀹屾垚",
@@ -431,11 +438,15 @@
description: "鏀寔杩為�氭�ф祴璇曘�佺粨鏋勫寲 Schema 棰勮鍜屾寜杈撳叆鍙傛暟鑷姩鐢熸垚娴嬭瘯琛ㄥ崟銆�",
refresh: "鍒锋柊宸ュ叿",
noTools: "褰撳墠鎸傝浇鏈В鏋愬嚭浠讳綍宸ュ叿銆�",
+ connectivityInit: "鍒濆鍖� %{value} ms",
+ connectivityToolCount: "宸ュ叿 %{count} 涓�",
purpose: "鐢ㄩ��: %{value}",
fieldCount: "%{count} 涓弬鏁�",
+ returnDirect: "鐩存帴杩斿洖",
+ normal: "鏅�氭ā寮�",
queryBoundary: "鏌ヨ杈圭晫: %{value}",
exampleQuestions: "绀轰緥鎻愰棶",
- formattedSchema: "鏍煎紡鍖� Input Schema",
+ formattedSchema: "鏍煎紡鍖栬緭鍏� Schema",
testInput: "娴嬭瘯杈撳叆 JSON",
testInputPlaceholder: "渚嬪锛歿\"code\":\"A01\"}",
executeTest: "鎵ц娴嬭瘯",
diff --git a/rsf-admin/src/page/system/aiMcpMount/AiMcpMountForm.jsx b/rsf-admin/src/page/system/aiMcpMount/AiMcpMountForm.jsx
index fe4179d..14a4ff9 100644
--- a/rsf-admin/src/page/system/aiMcpMount/AiMcpMountForm.jsx
+++ b/rsf-admin/src/page/system/aiMcpMount/AiMcpMountForm.jsx
@@ -108,10 +108,10 @@
<TextInput source="serverUrl" label="ai.mcp.fields.serverUrl" fullWidth disabled={readOnly} />
</Grid>
<Grid item xs={12}>
- <TextInput source="endpoint" label="SSE Endpoint" fullWidth disabled={readOnly} />
+ <TextInput source="endpoint" label="ai.mcp.fields.endpoint" fullWidth disabled={readOnly} />
</Grid>
<Grid item xs={12}>
- <TextInput source="headersJson" label="Headers JSON" fullWidth multiline minRows={4} disabled={readOnly} />
+ <TextInput source="headersJson" label="ai.mcp.fields.headersJson" fullWidth multiline minRows={4} disabled={readOnly} />
</Grid>
</>
)}
@@ -121,10 +121,10 @@
<TextInput source="command" label="ai.mcp.fields.command" fullWidth disabled={readOnly} />
</Grid>
<Grid item xs={12}>
- <TextInput source="argsJson" label="Args JSON" fullWidth multiline minRows={4} disabled={readOnly} />
+ <TextInput source="argsJson" label="ai.mcp.fields.argsJson" fullWidth multiline minRows={4} disabled={readOnly} />
</Grid>
<Grid item xs={12}>
- <TextInput source="envJson" label="Env JSON" fullWidth multiline minRows={4} disabled={readOnly} />
+ <TextInput source="envJson" label="ai.mcp.fields.envJson" fullWidth multiline minRows={4} disabled={readOnly} />
</Grid>
</>
)}
@@ -132,7 +132,7 @@
)}
</FormDataConsumer>
<Grid item xs={12} md={4}>
- <NumberInput source="requestTimeoutMs" label="Timeout(ms)" fullWidth disabled={readOnly} />
+ <NumberInput source="requestTimeoutMs" label="ai.mcp.fields.requestTimeoutMs" fullWidth disabled={readOnly} />
</Grid>
<Grid item xs={12} md={4}>
<NumberInput source="sort" label="ai.mcp.fields.sort" fullWidth disabled={readOnly} />
diff --git a/rsf-admin/src/page/system/aiMcpMount/AiMcpMountList.jsx b/rsf-admin/src/page/system/aiMcpMount/AiMcpMountList.jsx
index 634aa30..bb8ceee 100644
--- a/rsf-admin/src/page/system/aiMcpMount/AiMcpMountList.jsx
+++ b/rsf-admin/src/page/system/aiMcpMount/AiMcpMountList.jsx
@@ -176,8 +176,16 @@
</Stack>
<Stack direction="row" spacing={1} flexWrap="wrap" useFlexGap mt={1.5}>
<Chip size="small" variant="outlined" label={translate("ai.mcp.list.sortValue", { value: record.sort ?? 0 })} />
- <Chip size="small" variant="outlined" label={`${record.requestTimeoutMs ?? "--"} ms`} />
- <Chip size="small" variant="outlined" label={`Init ${record.lastInitElapsedMs ?? "--"} ms`} />
+ <Chip
+ size="small"
+ variant="outlined"
+ label={translate("ai.mcp.list.timeoutValue", { value: record.requestTimeoutMs ?? "--" })}
+ />
+ <Chip
+ size="small"
+ variant="outlined"
+ label={translate("ai.mcp.list.initValue", { value: record.lastInitElapsedMs ?? "--" })}
+ />
</Stack>
<Divider sx={{ my: 1.5 }} />
<Typography variant="caption" color="text.secondary">{translate("ai.common.target")}</Typography>
diff --git a/rsf-admin/src/page/system/aiMcpMount/AiMcpMountToolsPanel.jsx b/rsf-admin/src/page/system/aiMcpMount/AiMcpMountToolsPanel.jsx
index 1b6158b..af429c5 100644
--- a/rsf-admin/src/page/system/aiMcpMount/AiMcpMountToolsPanel.jsx
+++ b/rsf-admin/src/page/system/aiMcpMount/AiMcpMountToolsPanel.jsx
@@ -274,8 +274,8 @@
{!!connectivity && (
<Alert severity={resolveConnectivitySeverity(connectivity.healthStatus)} sx={{ mb: 2 }}>
{connectivity.message}
- {connectivity.initElapsedMs != null && ` 路 Init ${connectivity.initElapsedMs} ms`}
- {connectivity.toolCount != null && ` 路 Tools ${connectivity.toolCount}`}
+ {connectivity.initElapsedMs != null && ` 路 ${translate("ai.mcp.tools.connectivityInit", { value: connectivity.initElapsedMs })}`}
+ {connectivity.toolCount != null && ` 路 ${translate("ai.mcp.tools.connectivityToolCount", { count: connectivity.toolCount })}`}
{connectivity.testedAt && ` 路 ${connectivity.testedAt}`}
</Alert>
)}
@@ -322,7 +322,7 @@
{translate("ai.mcp.tools.fieldCount", { count: schemaInfo.fields.length })}
</Typography>
<Typography variant="caption" color="text.secondary">
- {tool.returnDirect ? "returnDirect" : "normal"}
+ {translate(tool.returnDirect ? "ai.mcp.tools.returnDirect" : "ai.mcp.tools.normal")}
</Typography>
</Stack>
</Stack>
diff --git a/rsf-admin/src/page/system/aiParam/AiParamList.jsx b/rsf-admin/src/page/system/aiParam/AiParamList.jsx
index ebee4e6..2d854cf 100644
--- a/rsf-admin/src/page/system/aiParam/AiParamList.jsx
+++ b/rsf-admin/src/page/system/aiParam/AiParamList.jsx
@@ -130,26 +130,26 @@
</Stack>
<Divider sx={{ my: 1.5 }} />
<Typography variant="body2" color="text.secondary">
- Base URL
+ {translate("ai.param.fields.baseUrl")}
</Typography>
<Typography variant="body2" sx={{ mb: 1.5, wordBreak: "break-all" }}>
{truncateText(record.baseUrl, 120)}
</Typography>
<Grid container spacing={1}>
<Grid item xs={6}>
- <Typography variant="caption" color="text.secondary">Temperature</Typography>
+ <Typography variant="caption" color="text.secondary">{translate("ai.param.fields.temperature")}</Typography>
<Typography variant="body2">{record.temperature ?? "--"}</Typography>
</Grid>
<Grid item xs={6}>
- <Typography variant="caption" color="text.secondary">Top P</Typography>
+ <Typography variant="caption" color="text.secondary">{translate("ai.param.fields.topP")}</Typography>
<Typography variant="body2">{record.topP ?? "--"}</Typography>
</Grid>
<Grid item xs={6}>
- <Typography variant="caption" color="text.secondary">Max Tokens</Typography>
+ <Typography variant="caption" color="text.secondary">{translate("ai.param.fields.maxTokens")}</Typography>
<Typography variant="body2">{record.maxTokens ?? "--"}</Typography>
</Grid>
<Grid item xs={6}>
- <Typography variant="caption" color="text.secondary">Timeout</Typography>
+ <Typography variant="caption" color="text.secondary">{translate("ai.param.fields.timeoutMs")}</Typography>
<Typography variant="body2">{record.timeoutMs ?? "--"} ms</Typography>
</Grid>
</Grid>
--
Gitblit v1.9.1