Skip to content

ChatbotEnhanced 约 20 处无条件中文,英文用户直接看到中文;其中一处还作为消息发给 agent #2884

Description

@os-zhuang

问题

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,已在那边跟踪。

建议做法

  1. 动作词表和确认卡片文案迁到 packages/i18n/src/locales/{en,zh}.ts(其余 8 语按 语言包 key 缺口:8 个语言各缺 357–359 键,74 键只存在于 zh.ts,且没有任何 parity 测试 #2872 part a 的策略统一处理)
  2. :2348 的 outbound 消息不应该是本地化文案——发给 agent 的指令建议改为固定英文,或更好:改成结构化信号(如一个 confirm action)而不是自然语言,避免污染会话语言
  3. 组件已可直接用 useObjectTranslation(同目录 FloatingChatbotTrigger.tsx:14,20 就是这么做的)

发现来源:排查 objectui#2871 时顺带发现,因为不是语言分支问题所以单独跟踪。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions