Skip to content

fix(i18n): localise the console's round-3 leftovers — data table titles, chart fallback, react pages, References columns, Flow Runs diagnostics - #25978

Merged
objectstack-fleet[bot] merged 7 commits into
mainfrom
claude/project-thread-o8o2xv
Oct 26, 2026
Merged

objectstack-fleet[bot] merged 7 commits into
mainfrom
claude/project-thread-o8o2xv

Conversation

@objectstack-fleet

Copy link
Copy Markdown
Contributor

Requested by Steve · project thread

Part of #25916

Clause-②: no
Metadata-protocol: none

Third pass on the card's leftover list (the second pass's hand-back, comment 6407864045), under claim 6410094565. Implemented by the card-thread session https://claude.ai/code/session_01C6T942afhqAP5w9XBmfTDC.

What changes

Surface Before Now reads
data-table (components) hover affordance title "Open record"; inline-edit row buttons "Cancel changes" / "Save row" table.openRecord, table.cancelChanges, table.saveRow (also in the renderer's provider-less defaults table)
Chart view fallback (ObjectView.tsx, Loading-chart region only) "Loading chart…" twice the existing chart.loading row
kind:'react' page renderer (react-page.tsx, no t( before) capability notice, empty-source refusal, "Loading react runtime…", two error titles reactPage.* (new namespace, six rows)
Studio References sheet (ResourceEditPage.tsx) column headers From type / From name / Path engine.edit.refsColFromType, refsColFromName, refsColPath in the Studio's own engine.* table (en-US + zh-CN), per the carve-out the first pass used
Flow Runs (FlowRunsPage.tsx) three English "X is not available on this client" diagnostics stored in error state error state keeps the missing method's NAME; each panel words it at render through console.developer.flowRuns.clientMethodUnavailable (method interpolated). A message the call threw is still drawn verbatim
  • New pack rows are in all ten packs (en plus nine real translations); each call carries the en value as its inline default, so provider-less mounts and existing English tests are unchanged.
  • The two reactPage sentences with inline code chips are ONE translated string each: the chips' slots are interpolated with private-use marks and the translated sentence is split on them, so each language decides where the chip sits. Same technique as element:metadata_viewer (a local copy of its CHIP / withChips helper, in the same package).
  • scripts/sdui-manifest.record.json: check-sdui-manifest went red because data-table.tsx and react-page.tsx are registry sources. Regenerated with node scripts/gen-sdui-manifest-node.mjs: sdui.manifest.json is byte-unchanged (106 components); only the recorded source hash moved.

Tests

New, through the real renderers / pages and a real I18nProvider (zh expectations read from the packs and guarded as real Han rows, plus provider-less English controls):

  • ui/packages/components/src/__tests__/renderer-copy-locale-25916.test.tsx: data-table titles; react-page notice and empty-source refusal with chips in the zh position and no slot leak. 7/7.
  • ui/packages/app-shell/src/views/metadata-admin/ResourceEditPage.referencesColumns-25916.test.tsx: References column headers zh / en. 3/3.
  • ui/apps/console/src/pages/developer/flowRunsClientDiagnostic-25916.test.tsx: the three diagnostics in zh with the method name, a thrown message verbatim, English controls. 6/6.

Affected set (195 files: every test naming the touched titles, strings or components, plus all of ui/packages/i18n and the i18n script tests), under the verify lock at 962206c5: Test Files 195 passed (195), Tests 3305 passed, 13 skipped. The References-columns file was re-run (3/3) after its typing fix in 522c33d6. Type-check of @object-ui/i18n, components, app-shell, console (turbo, with ^build): green after one test-typing fix.

Gates

Local: the 34 commands dispatch-gates.mjs --commands --repo objectstack-ai/objectstack derived, plus check-changeset-fixed (its roster sits under .changeset): all exit 0 except check-sdui-manifest (cleared by the re-record above, now exit 0) and check:type-check-debt (timed out under the 300 s per-command cap; re-run reported in the os-dev report). ui scripts: check-i18n-call-site-keys, check-i18n-en-drift, check-i18n-dead-keys (none of the new keys listed), check-i18n-designer-table-parity, check-new-cross-file-line-citations (0 new): all exit 0. Repo-wide lint and the full ui shard battery are CI's.

Acceptance notes


Generated by Claude Code

…trols (#25916)

Claim-free WIP on the card branch.

Claude-Session: https://claude.ai/code/session_01C6T942afhqAP5w9XBmfTDC
Co-authored-by: Claude <noreply@anthropic.com>
…round-3 copy edits (#25916)

The manifest's content is unchanged (106 components); only the hash of the
registry sources it was generated from moved, because data-table.tsx and
react-page.tsx are registry sources.

Claude-Session: https://claude.ai/code/session_01C6T942afhqAP5w9XBmfTDC
Co-authored-by: Claude <noreply@anthropic.com>
@github-actions github-actions Bot added size/l documentation Improvements or additions to documentation tooling labels Oct 26, 2026
…d-3 locale pin (#25916)

react-hooks/static-components refused the in-render registry lookup.

Claude-Session: https://claude.ai/code/session_01C6T942afhqAP5w9XBmfTDC
Co-authored-by: Claude <noreply@anthropic.com>
@objectstack-fleet

Copy link
Copy Markdown
Contributor Author

席位核对 · ACCEPT · seat domain:ui#1 · 2026-10-26T08:06Z

Head 3d2fd1da9042 (read from the PR object).

  • Shape. Draft on main; Part of #25916 (the card stays open for the dev-only harnesses named in its Acceptance notes); Clause-②: no, Metadata-protocol: none; changeset .changeset/25916-console-leftover-strings-round-3.md in the root .changeset/, patch for i18n / components / app-shell / console.
  • Checks pinned to the head. 61 named check runs, latest per name: 54 success, 7 skipped, 0 failing, 0 pending. Lint & Repo Gates, TypeScript Type Check, Test UI 16/16, Type Check UI all success.
  • Governed surface. check-governed-merges.mjs --pr 25978: 0 of 21 paths governed, +682/-30.
  • Serial constraints held. ObjectView.tsx changes only the two Loading-chart fallbacks (~3179 / ~3211), not the view-tab regions console: a page or list view whose label is an inline locale map shows a machine name (InterfaceListPage) or reaches viewTabLabel raw (AppHeader view branch, ObjectView tab bar) #25901 holds. Locale packs are append-only rows. The ⛔ paths (ui/.github/**, root ci.yml) are untouched.
  • Changeset against the diff. Data-table titles (table.openRecord / cancelChanges / saveRow), the chart fallback on the existing chart.loading row, reactPage.* with private-use chip marks split at render, References column heads in the Studio table (en + zh), and Flow Runs keeping the method name and wording it at render. Each sentence matches the code; a thrown message is still drawn verbatim (tested).
  • Out-of-surface file. scripts/sdui-manifest.record.json: registrySourcesSha256 only, the derived hash check-sdui-manifest requires after a registry source edit.

⚠️ Merge order: #25977 and #25984 also move that same hash line, and #25984 appends to the same ten locale packs. Whichever lands second will need origin/main merged in and the record regenerated. The seat watches for that.

Landing: ready + auto-merge through the relay.

Resolve the scripts/sdui-manifest.record.json conflict with #25977 by
regenerating the record with node scripts/gen-sdui-manifest-node.mjs.

Claude-Session: https://claude.ai/code/session_01C6T942afhqAP5w9XBmfTDC
Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/l tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants