Skip to content

[Decision] Repeater row-property localisation: 604 catalog leaves across four locales — who authors the translated copy? #17508

Description

@os-bill

维护者速读

Studio 的属性面板里,重复项(repeater)表格的列头现在开始有了正式英文名——PR #17500 已经给 13 个载体、83 个属性加上了。但要让中文、日文、西班牙文用户也看到母语列头,需要有人写这些译文:合计 604 条目录条目(en / zh-CN / ja-JP / es-ES 四种语言),其中 348 条属于今天已经加了英文名的 87 个属性。

这一轮故意没有写任何译文,也没有做机器翻译——这是产品文案,不是工程决定。⛔ 本席不代维护者决定产品文案。

今天不做的代价是可控的:英文标题会通过回退链到达所有语言,面板在任何语言下都可读,只是列头是英文。

请回一个字母:A(推荐)/ B / C


The decision

option consequence
A (recommended) A maintainer or translator authors all four locales; a follow-up card lands the *.form.ts child enumeration plus the catalogs together, pinned the way dashboard-header-children.test.ts pins the #17227 leaves one coherent landing; needs human copy for 3 non-English locales
B Land the form-child enumeration and the generated en leaves now; fill the three translated catalogs later ⚠️ creates exactly the half-state dashboard-header-children.test.ts pins AGAINST — its last test asserts each translated leaf is not a copy of the en source, so en-only leaves either red that pin's shape when extended or normalise catalogs that echo English
C Leave it — the English title already reaches every locale through the fallback chain defensible as a stopping point, but it is a product-copy call, not an engineering one — which is why it is here and not decided by the seat

Four axes

  • Reversibility — high. Catalog leaves are additive data; a wrong translation is corrected by editing one leaf. Nothing here changes an accept set or a stored shape.
  • Blast radius — presentation only, and only in the Studio property panel. No runtime behaviour, no stored metadata, no API payload.
  • Cost of delay — low and flat. The English fallback works today, so C is survivable indefinitely; the cost is a permanently half-localised panel, not a growing debt.
  • Cost of the wrong call — B is the only option with a real downside: it is a half-state a pin already exists to refuse, so it risks either a red or a catalog of English strings masquerading as translations.

Measured

origin/main 76ddab772f, 2026-09-10T18:04Z. All figures derived in #17232's round through the platform's own predicate, not from source regex:

604   catalog leaves for full localisation of all 21 object-row carriers × 4 locales
348   of those belong to the 87 properties titled today (83 new + 4 from #17227)
 87   row properties titled today, across 14 carriers

Each also needs its children enumerated in the owning *.form.ts before os i18n extract will emit the key. This round enumerated no repeater children in any form file, so no catalog key was emitted and no catalog moveddashboard-header-children.test.ts stays green (11 passed).

⭐ Worth stating plainly: the round invented no product copy and machine-translated nothing. That was the right call and is why this card exists.

Raised from #17232's round (PR #17500). Related: #17227 (the precedent), #17501, #17502.


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

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions