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
Commit c86c823
Browse filesBrowse the repository at this point in the historyBrowse files
fix(i18n): localise the console's round-3 leftovers — data table titles, chart fallback, react pages, References columns, Flow Runs diagnostics (#25978)
<!-- claude-projects-attribution: {"github_login":"os-steve"} -->
_Requested by **Steve** · [project
thread](https://claude.ai/code/project/chan_01FdL1XeUyvVNxLreh3F4Qi9?thread=cmsg_01FdL1XeUyvVNxLreh3F4Qi96SEbBcSNaduu5xfTJgz2Y7)_
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
- **Dev-only harnesses left English.** `ui/apps/console/src/dev/*` (Dev
· … headings, `PerformanceDashboard`) and the console `*-preview.tsx`
entries are developer harnesses, moved under `dev/` by the second pass
precisely so a census can exclude them by path; translating their
headings buys no user-facing language. Not done here; this is why the PR
says `Part of`.
- **Out of scope by the dispatch ruling, untouched:** ShareDialog
audience / permission badges (raw enum values,
objectstack-ai/objectui#13353), the three `formatDate` helpers
(objectstack-ai/objectui#13458), the Agent key-name prefill (kept by
decision), `ConnectAgentWidget` product names (proper nouns).
- **`StudioDesignSurface` placeholder:** already localised on `main`;
its only remaining literal is `placeholder="https://"`, a URL scheme,
not copy.
- **`ObjectView.tsx`:** only the Loading-chart region changed; the
view-tab regions belong to #25901.
- No new lint gate (triage ruling 6407863382).
---
_Generated by [Claude
Code](https://claude.ai/code/session_01C6T942afhqAP5w9XBmfTDC)_
---------
Co-authored-by: Claude <noreply@anthropic.com>
fix(i18n): the last English literals on the data table, the chart view, react pages, the References sheet and Flow Runs read the user's language
9
+
10
+
Clause-②: no
11
+
Metadata-protocol: none
12
+
13
+
-**Data table.** The hover "open record" affordance and the inline-edit row's cancel and save buttons are titled from `table.openRecord`, `table.cancelChanges` and `table.saveRow`.
14
+
-**Chart view.** A chart view's loading fallback reads the existing `chart.loading` row.
15
+
-**`kind:'react'` pages.** The capability notice, the empty-source refusal, the loading line and the two error titles read `reactPage.*`. Sentences with an inline code chip are one translated string, so each language decides where the chip sits.
16
+
-**References sheet (Studio).** The table's column headers read `engine.edit.refsColFromType`, `refsColFromName` and `refsColPath` from the Studio's own table, in English and Chinese.
17
+
-**Flow Runs.** When the client lacks the method a panel calls (`meta.getItems`, `automation.execute`, `automation.listRuns`), the panel keeps the method's name and words the diagnostic at render from `console.developer.flowRuns.clientMethodUnavailable`. A message the call threw is still shown as it came.
18
+
19
+
All ten locale packs carry the new rows. With no i18n provider every surface still renders its English.
0 commit comments