问题
packages/plugin-chatbot/src/ChatbotEnhanced.tsx 里有约 20 处无条件的中文字符串 ——不是"只判断了 zh 导致其它语言回退英文"(那是 objectui#2871),而是根本没有语言判断 ,所以英文/日文/德文用户看到的就是中文 。
变更动作词表(:905-912)
create_object : '新建对象' ,
add_field : '新增字段' ,
modify_field : '修改字段' ,
delete_field : '删除字段' ,
create_metadata : '新建' ,
update_metadata : '修改' ,
create_seed : '生成示例数据' ,
create_package : '新建应用包' ,
formatChangeRow 用它渲染 AI 提议的改动列表——这是 AI 建站流程里用户必读 的确认信息。
确认卡片(:2317-2366)
:2317 确认改动、:2341 已确认、:2353 确认修改、:2361 调整、:2366 回复以确认或调整该改动。
最严重的一处:中文被当作消息发给 agent(:2348)
onClick = { ( ) => onSendMessage ( '确认修改,应用你刚才提议的改动。' ) }
这不只是显示问题:一个英文用户点"确认"按钮,会向 agent 发送一条中文消息 。agent 很可能因此切换到中文回复(该仓库确实有 conversationLanguage.ts 按对话语言选择回复语言的逻辑),等于用户点一下按钮就把整个会话语言带偏了。
另外
同一组件的非配额分支反过来是英文硬编码::3783 'Response failed'、:3796、:3806 'Retry'。
不在本 issue 范围内
:963-973('待补'、'后续'、'稍后' 等)是中文关键词启发式 ,用来识别 AI 回复里"稍后再做"的条目,不是 UI 文案,不要动 。已有测试覆盖(__tests__/ChatbotEnhanced.test.tsx:1534,1544,1653)。
配额横幅里 quota.message / quota.messageEn 的二选一是服务端提供的两份文案 ,归服务端管;该处的 4 条 UI 文案(标题/两个 CTA/兜底)属于 objectui#2871,已在那边跟踪。
建议做法
动作词表和确认卡片文案迁到 packages/i18n/src/locales/{en,zh}.ts(其余 8 语按 语言包 key 缺口:8 个语言各缺 357–359 键,74 键只存在于 zh.ts,且没有任何 parity 测试 #2872 part a 的策略统一处理)
:2348 的 outbound 消息不应该是本地化文案 ——发给 agent 的指令建议改为固定英文,或更好:改成结构化信号(如一个 confirm action)而不是自然语言,避免污染会话语言
组件已可直接用 useObjectTranslation(同目录 FloatingChatbotTrigger.tsx:14,20 就是这么做的)
发现来源:排查 objectui#2871 时顺带发现,因为不是语言分支问题所以单独跟踪。
问题
packages/plugin-chatbot/src/ChatbotEnhanced.tsx里有约 20 处无条件的中文字符串——不是"只判断了 zh 导致其它语言回退英文"(那是 objectui#2871),而是根本没有语言判断,所以英文/日文/德文用户看到的就是中文。变更动作词表(
:905-912)formatChangeRow用它渲染 AI 提议的改动列表——这是 AI 建站流程里用户必读的确认信息。确认卡片(
:2317-2366):2317确认改动、:2341已确认、:2353确认修改、:2361调整、:2366回复以确认或调整该改动。最严重的一处:中文被当作消息发给 agent(
:2348)这不只是显示问题:一个英文用户点"确认"按钮,会向 agent 发送一条中文消息。agent 很可能因此切换到中文回复(该仓库确实有
conversationLanguage.ts按对话语言选择回复语言的逻辑),等于用户点一下按钮就把整个会话语言带偏了。另外
同一组件的非配额分支反过来是英文硬编码:
:3783'Response failed'、:3796、:3806'Retry'。不在本 issue 范围内
:963-973('待补'、'后续'、'稍后'等)是中文关键词启发式,用来识别 AI 回复里"稍后再做"的条目,不是 UI 文案,不要动。已有测试覆盖(__tests__/ChatbotEnhanced.test.tsx:1534,1544,1653)。quota.message/quota.messageEn的二选一是服务端提供的两份文案,归服务端管;该处的 4 条 UI 文案(标题/两个 CTA/兜底)属于 objectui#2871,已在那边跟踪。建议做法
packages/i18n/src/locales/{en,zh}.ts(其余 8 语按 语言包 key 缺口:8 个语言各缺 357–359 键,74 键只存在于 zh.ts,且没有任何 parity 测试 #2872 part a 的策略统一处理):2348的 outbound 消息不应该是本地化文案——发给 agent 的指令建议改为固定英文,或更好:改成结构化信号(如一个confirmaction)而不是自然语言,避免污染会话语言useObjectTranslation(同目录FloatingChatbotTrigger.tsx:14,20就是这么做的)发现来源:排查 objectui#2871 时顺带发现,因为不是语言分支问题所以单独跟踪。