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