diff --git a/mcpapps/app.html b/mcpapps/app.html
index 206fd79..effce93 100644
--- a/mcpapps/app.html
+++ b/mcpapps/app.html
@@ -53,18 +53,18 @@
state_pending:"pending",state_in_progress:"in progress",state_completed:"completed",state_blocked:"blocked",state_active:"active",state_running:"running",state_success:"success",state_error:"error",state_failed:"failed",state_online:"online",state_offline:"offline",state_unavailable:"unavailable",state_enabled:"enabled",state_disabled:"disabled",state_ready:"ready",state_configured:"configured",state_exited:"exited",state_killed:"killed",state_timeout:"timeout",state_live:"live"
},
"zh-CN":{
- waiting:"等待工具输出…",item:"项目",step:"步骤",status:"状态",moreItems:"还有 {count} 项",
- noRecallMatches:"没有匹配的 Recall 内容。",noMatches:"没有匹配结果",recallEntry:"Recall 条目",recallCard:"Recall 卡片",
- noChanges:"无变更",previewOnly:"仅预览",written:"已写入",completed:"已完成",recallUpdated:"Recall 已更新",
- items:"{count} 项",workflowMatch:"工作流匹配",score:"分数 {score}",candidates:"{count} 个候选",candidate:"候选项",noWorkflowMatches:"没有匹配的工作流。",
- result:"结果",content:"内容",mcpTool:"MCP 工具",externalMcp:"外部 MCP",server:"服务",tool:"工具",contentCount:"{count} 项内容",externalMcpVia:"通过 {server} 调用外部 MCP",externalMcpInvoked:"已调用外部 MCP 工具",
- artifact:"产物",file:"文件",temporaryLink:"临时链接",type:"类型",size:"大小",dimensions:"尺寸",artifactId:"产物 ID",expires:"过期时间",signedUrl:"签名 URL",published:"已发布",updated:"更新时间",state:"状态",statusLabel:"状态",path:"路径",
- agentDockSkills:"AgentDock Skills",commonSkills:"Common Skills",workflow:"工作流",recall:"Recall",capabilities:"能力",devices:"设备",online:"在线",on:"开启",off:"关闭",
- unavailable:"不可用",contextUnavailable:"上下文暂不可用",nodeOffline:"AgentDock 节点当前离线",nodeUnavailable:"{name} 当前不可用",
- tasks:"{count} 个任务",noTasks:"暂无任务。",steps:"{done} / {total} 步",review:"评审 {status}",sessions:"{count} 个会话",noAcpSessions:"暂无 ACP 会话。",session:"会话",authenticated:"已认证",deleted:"已删除",noMessages:"当前 AgentDock 进程中没有用户或助手消息。",
- dryRun:"试运行",noChange:"无变更",previewTruncated:"预览已截断",noChangeSentence:"无变更。",fileChange:"文件变更",unableInitialize:"无法初始化 MCP App。",
- action_search:"搜索",action_write:"写入",action_match:"匹配",action_call:"调用",action_publish:"发布",action_context:"上下文",action_list:"列表",action_task:"任务",action_change:"变更",action_move:"移动",action_status:"状态",
- state_pending:"待处理",state_in_progress:"进行中",state_completed:"已完成",state_blocked:"已阻塞",state_active:"活动",state_running:"运行中",state_success:"成功",state_error:"错误",state_failed:"失败",state_online:"在线",state_offline:"离线",state_unavailable:"不可用",state_enabled:"已启用",state_disabled:"已停用",state_ready:"就绪",state_configured:"已配置",state_exited:"已退出",state_killed:"已终止",state_timeout:"超时",state_live:"活动"
+ waiting:"Waiting for tool output…",item:"Item",step:"Step",status:"STATUS",moreItems:"还有 {count} 项",
+ noRecallMatches:"No Recall matches.",noMatches:"No matches",recallEntry:"Recall entry",recallCard:"Recall card",
+ noChanges:"No changes",previewOnly:"Preview only",written:"Written",completed:"Completed",recallUpdated:"Recall updated",
+ items:"{count} items",workflowMatch:"Workflow match",score:"score {score}",candidates:"{count} candidates",candidate:"Candidate",noWorkflowMatches:"No workflow matches.",
+ result:"Result",content:"Content",mcpTool:"MCP tool",externalMcp:"external MCP",server:"Server",tool:"Tool",contentCount:"{count} content",externalMcpVia:"External MCP via {server}",externalMcpInvoked:"External MCP tool invoked",
+ artifact:"Artifact",file:"file",temporaryLink:"temporary link",type:"Type",size:"Size",dimensions:"Dimensions",artifactId:"Artifact ID",expires:"Expires",signedUrl:"Signed URL",published:"published",updated:"Updated",state:"State",statusLabel:"Status",path:"Path",
+ agentDockSkills:"AgentDock Skills",commonSkills:"Common Skills",workflow:"Workflow",recall:"Recall",capabilities:"Capabilities",devices:"Devices",online:"在线",on:"ON",off:"OFF",
+ unavailable:"不可用",contextUnavailable:"Context 暂不可用",nodeOffline:"AgentDock 节点当前离线",nodeUnavailable:"{name} 当前不可用",
+ tasks:"{count} tasks",noTasks:"No tasks.",steps:"{done} / {total} steps",review:"review {status}",sessions:"{count} sessions",noAcpSessions:"No ACP sessions.",session:"Session",authenticated:"authenticated",deleted:"deleted",noMessages:"No user or assistant messages in this AgentDock process.",
+ dryRun:"dry run",noChange:"no change",previewTruncated:"preview truncated",noChangeSentence:"No change.",fileChange:"File change",unableInitialize:"Unable to initialize MCP App.",
+ action_search:"SEARCH",action_write:"WRITE",action_match:"MATCH",action_call:"CALL",action_publish:"PUBLISH",action_context:"CONTEXT",action_list:"LIST",action_task:"TASK",action_change:"CHANGE",action_move:"MOVE",action_status:"STATUS",
+ state_pending:"pending",state_in_progress:"in progress",state_completed:"completed",state_blocked:"blocked",state_active:"active",state_running:"running",state_success:"success",state_error:"error",state_failed:"failed",state_online:"online",state_offline:"离线",state_unavailable:"unavailable",state_enabled:"enabled",state_disabled:"disabled",state_ready:"ready",state_configured:"configured",state_exited:"exited",state_killed:"killed",state_timeout:"timeout",state_live:"live"
}
};
const matchLocale=value=>{
diff --git a/mcpapps/apps_test.go b/mcpapps/apps_test.go
index dbf732a..ae4f551 100644
--- a/mcpapps/apps_test.go
+++ b/mcpapps/apps_test.go
@@ -91,3 +91,45 @@ func TestHTMLLocalizesFromBrowserAndHostLocale(t *testing.T) {
}
}
}
+
+func TestHTMLZhCNPreservesHistoricalMixedTerminology(t *testing.T) {
+ html := HTML("agentdock_context", "Context")
+ start := strings.Index(html, `"zh-CN":{`)
+ end := strings.Index(html, `const matchLocale=value=>`)
+ if start < 0 || end <= start {
+ t.Fatal("shared MCP App zh-CN message dictionary is missing")
+ }
+ zhCN := html[start:end]
+
+ // zh-CN 保持 i18n 前已经成熟的中英混排;协议、产品和结构字段不做机械中文化。
+ for _, marker := range []string{
+ `status:"STATUS"`,
+ `workflow:"Workflow"`,
+ `capabilities:"Capabilities"`,
+ `devices:"Devices"`,
+ `artifact:"Artifact"`,
+ `type:"Type"`,
+ `action_task:"TASK"`,
+ `state_pending:"pending"`,
+ `moreItems:"还有 {count} 项"`,
+ `online:"在线"`,
+ `unavailable:"不可用"`,
+ `contextUnavailable:"Context 暂不可用"`,
+ } {
+ if !strings.Contains(zhCN, marker) {
+ t.Fatalf("shared MCP App zh-CN copy drifted from historical UI: missing %q", marker)
+ }
+ }
+
+ for _, forbidden := range []string{
+ `status:"状态"`,
+ `workflow:"工作流"`,
+ `capabilities:"能力"`,
+ `artifact:"产物"`,
+ `action_task:"任务"`,
+ } {
+ if strings.Contains(zhCN, forbidden) {
+ t.Fatalf("shared MCP App zh-CN copy is over-translated: %q", forbidden)
+ }
+ }
+}