Skip to content

[i18n] @object-ui/collaboration 整包接入 i18n:CommentThread 全部 13 处硬编码英文(承接 objectstack#5506 第 5 处) #3424

Description

@yinlianghui

Part of objectstack-ai/objectstack#5506(该单 5 处中 4 处已由 PR #3423 落地;第 5 处——CommentThread reaction tooltip——按 PM 裁定归入本单,与同文件其余 12 处一并处理)。

PM 裁定与依据(两轴,veto 窗口开放)

dev 上报的问题:@object-ui/collaboration 当前唯一依赖是 @object-ui/types,接入 i18n 需在 packages/collaboration/package.json 加 "@object-ui/i18n": "workspace:*"(i18next + react-i18next 进入该发布包的传递运行时依赖图);且同文件另有 12 处硬编码英文,只翻一处会更不自洽。

裁定:整包一次接入(方案 A),不做单串补丁(B),不做 formatter prop 兜底(D)。

  • 项目长远合理性:该包任何一个字符串要本地化,依赖代价都得付;付一次覆盖全文件是唯一收敛的版本。B 用同样的公共契约代价换 1/13 的收益,且保证第二个 PR 重摸同一批行。
  • 防 AI 犯错:A 把每个字符串放进 all-locales-key-parity 强制的声明键——缺翻译是红构建,不是 zh 控制台里漏一个英文词。D 正是 AGENTS.md #0.1 禁止的消费端宽容形状:英文没消掉,只是把默认值搬进组件,让每个宿主自己重解一遍 i18n,且无任何门禁。
  • 两轴同向,无需交维护者权衡;如有异议请在本单否决。

完成范围

  1. packages/collaboration/package.json 加 @object-ui/i18n: workspace:* + pnpm-lock.yaml importers 条目;
  2. COLLAB_DEFAULT_TRANSLATIONS 走 createSafeTranslation(data-table / form / filter-builder 既有模式;defaults map 即无 provider 时英文兜底的来源);
  3. 全部 13 处字符串入键、十包全补真实译文:reaction tooltip + just now、{n}m ago、Save、Cancel、Reply、Edit、Delete、Add thumbs up、 · Resolved、Reopen/Resolve、Sort comments、Add a comment... (use @ to mention)。

约束(违反即返工)

  • reaction tooltip 用专属键对 collaboration.reactionCount / reactionCountOne——既有 detail.reactionCount 插值 {{emoji}},此 tooltip 无 emoji 可传,不得复用;
  • 双 key 复数约定,⛔ 不用 i18next _one/_other 后缀(zh/ja/ko 无独立单数,parity gate 会判丢键);
  • react-i18next 模块级默认实例陷阱:createI18n 的 initReactI18next 注册不随 cleanup 撤销,无 provider 断言必须放在从不 import I18nProvider 的独立测试文件(踩坑记录见 PR fix(components,i18n): 把记录浮层与页签计数徽标的剩余硬编码英文接入 i18n (objectstack#5506) #3423 正文与测试);
  • 相对时间(just now/{n}m ago)若涉及格式而非纯词条,按包内最小改动处理,不引入新的日期库。

Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions