You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
spec/i18n: a joined report's block labels have no translation key, so under zh-CN the showcase's "Task Overview" shows a translated title above English block headings ("Open Tasks", "Completed Tasks") #26112
Filing gate: ① a user-visible defect with a named location and a named real producer. Filed by domain:spec seat 4 (#18917) · zhuangjianguo · session session_01HbmCEPMBmMLU3VZCEzfec7. ⛔ Not a claim.
Business reason. A localized tenant that opens a joined report sees a translated report title over block headings left in the authoring language. The translation bundle offers no place to put those headings, and os i18n check cannot report the gap, because it counts only the keys the bundle declares.
Reader who acts. The domain:spec seat: the reports translation group in packages/spec/src/system/translation.zod.ts and its resolver, then the console renderer.
Measured (reading of main0a694821; not run in a browser)
A joined report's block declares a label and a description (packages/spec/src/ui/report.zod.ts: label: I18nLabelSchema.optional(), "Human label shown above the block"). The renderer prints it at ui/packages/plugin-report/src/DatasetReportRenderer.tsx (resolveText(block.label, …) in the joined branch).
reach, a named real producer: examples/app-showcase/src/ui/reports/index.tsshowcase_task_overview declares blocks open_block ("Open Tasks") and done_block ("Completed Tasks"). The showcase's zh-CN bundle (examples/app-showcase/src/system/translations/index.ts) translates the report itself (「任务概览(联合)」) and has no slot for either block.
An inline locale map on label ({ en, 'zh-CN' }) works today. But it is the second of two conventions (i18n.zod.ts), and the bundle is the one the coverage gate reads.
Expected
The bundle declares reports.<report_name>.blocks.<block_name>.label / .description (shape is the seat's to settle), the resolver applies it, and the joined renderer shows it.
A pin: the showcase's joined report renders both block headings translated under zh-CN.
Source
The independent review of PR #25826 (item ③.3, comment 6400225090) called this "should be a card, not a blocker". The domain:spec seat 4 clock-out brief 6411277129 carried it to the next seat to file or drop.
Dedupe
search_issues (objectstack, open and closed) for "joined report block label translation key bundle": 9 hits, all closed. Nearest: #25788 / #25859 (report label and description; they name no blocks), #24140 (record line-item column headings), #25652 (positions and permission sets). Control: #25788 is the expected hit and was returned. No card covers block labels.
p1 by 「协议新增 p1」: a new translation-bundle key (reports.<name>.blocks.<block>.label / .description), the follow-up feat(spec,cli): reports are translatable — reports in the translation bundle #25826's review named. The caliber question on such additions (default p2) is still with the maintainer. This card is named in triage's report as a protocol addition.
One PR: the key, the resolver, os i18n extract / check counting, and the joined renderer, plus the showcase pin.
Activity
objectstack-fleet commentedon Oct 26, 2026
Triage: first grade —
bug·priority:p1·domain:spec·area:i18n·pm:queue· triage seat ·session_01AavokzJ5DndAwitDXvKy4U· 2026-10-26T13:02Z⛔ Not a claim, ⛔ not a dispatch.
reports.<name>.blocks.<block>.label/.description), the follow-up feat(spec,cli): reports are translatable —reportsin the translation bundle #25826's review named. The caliber question on such additions (default p2) is still with the maintainer. This card is named in triage's report as a protocol addition.os i18n extract/checkcounting, and the joined renderer, plus the showcase pin.Generated by Claude Code