This repository was archived by the owner on Oct 26, 2026. It is now read-only.
Repository navigation
Commit d0c9650
fix(console, app-shell): localise API Console, Public Forms, Integrations, AI Approvals and the datasource page (objectui#13460) (#13489)
<!-- claude-projects-attribution: {"github_login":"os-elon-musk"} -->
_Requested by **Elon** · [project
thread](https://claude.ai/code/project/chan_01WedDzV26nniwxv7jC88B9D?thread=cmsg_01WedDzV26nniwxv7jC88B9DTZuga4rm1n3SpVeS6ojvFA)_
Part of #13460
Clause-②: no
Metadata-protocol: none
Claim: objectui#13460 comment 6392274945, amended by comment 6392316827
(file surface adds
`packages/app-shell/src/views/metadata-admin/i18n.ts`). Seat:
`domain:ui#4`.
## What changed
Four routed console pages imported nothing from `@object-ui/i18n`, and
the Studio datasource page drew its copy as English literals, so a zh /
ja / ar operator got English on these screens.
- **Developer → API Console** (`ApiConsolePage.tsx`), **Developer →
Public Forms** (`PublicFormsPage.tsx`), **Developer → Integrations &
APIs** (`IntegrationsPage.tsx`) and **System → AI Approvals**
(`AiPendingActionsPage.tsx`) read `console.developer.apiConsole.*`,
`console.developer.publicForms.*`, `console.developer.integrations.*`
and `console.system.aiApprovals.*` through `useObjectTranslation`. 108
new keys, translated in all ten packs (no English copies). Cancel / Save
/ Refresh / Actions reuse `common.*`. Each call carries the `en` value
as its inline `defaultValue` (held byte-identical by `pnpm
check:i18n-keys`), so a provider-less mount and every existing English
test read exactly what they read before.
- A sentence with an inline element (a bold action name, a `<code>` key)
is ONE translated string: the element's `{{slot}}` is filled with a
private-use mark and the sentence is split on it, so each language
places the element (ja and ko put the action after its object). Helper:
`apps/console/src/lib/inlineSlots.tsx` (`withSlots`), the same technique
as `element:metadata_viewer`'s chips (objectui#12910).
- Aria names that used to be glued as `` `Copy ${label}` `` are whole
translated keys (`copyBaseUrl`, `copySample`); toasts likewise
(`copiedUrl`, `copiedIframe`, `copiedReact`).
- **Setup → Datasources** (`DatasourceResourcePage.tsx`) reads 55 new
`engine.datasource.*` rows in the Studio table
(`metadata-admin/i18n.ts`, en-US + zh-CN). That page already read
`engine.*`, and `packages/i18n/README.md` § "Scope — the engine.*
carve-out" keeps that namespace out of the ten packs. Covered: heading,
toolbar, empty state (action slot), status chips, row actions, the
create/edit dialog including the Schema mode options, the sync dialog,
and the toasts. The driver config schema's enum option values are
untouched (objectui#13353).
- Left as written on purpose: the cURL / iframe / React snippets (code),
HTTP verbs, paths and status codes, example slugs and paths in
placeholders (`contact-us`, `/thanks`, `my_database`, `/api/v1/...`),
server messages, and the redirect refusal (the spec's own prose).
- Typography: three new English values spell the ellipsis U+2026
(`Search endpoints…`, `Discovering APIs…`, `Sending request…`; they were
`...`), because `ellipsis-glyph-3878` holds every pack value to it.
## Tests
- `apps/console/src/pages/developer/consolePagesLocale-13460.test.tsx`
(new): under zh each page draws its heading and copy from the zh pack
(guarded as real Han-script rows, not English copies); the three slotted
sentences render with the element where the zh string puts it and no
`{{` or slot mark leaks; control: with no provider each page still reads
its English.
-
`packages/app-shell/src/views/metadata-admin/datasource/DatasourceResourcePage.locale-13460.test.tsx`
(new): zh heading, empty state with its action slot, status chip, row
actions and the create dialog read the zh rows; en control.
- `DatasourceResourcePage.selectPlaceholderLocale-11252.test.tsx`: finds
the New datasource button by its locale's row (the button is now
translated). `ApiConsolePage.requestPreset-10591.test.tsx`: the `Sending
request…` glyph.
## Verification (local, objectui `main` `c85408f` + this branch)
- `turbo run type-check` for `@object-ui/console`,
`@object-ui/app-shell`, `@object-ui/i18n` (38 tasks incl. deps): pass.
- `vitest run packages/i18n/`: 87 files, 1353 passed.
- `vitest run` over every test file importing the five pages,
`inlineSlots`, or reading the Studio table's source (32 files): 559
passed.
- `node scripts/check-i18n-call-site-keys.mjs`,
`check-i18n-en-drift.mjs`, `check-i18n-dead-keys.mjs`,
`check-i18n-designer-table-parity.mjs`: exit 0.
- `eslint` on the touched sources: 0 errors, and the same warning set as
`main` (no new findings).
- `check-changeset-presence.mjs`, `check-changeset-no-major.mjs`,
`check:new-line-citations`: pass.
- NOT MEASURED locally, left to CI: the sharded full `pnpm test`;
`check:eager-closure` (the eager `en` catalogue grows by the new keys;
`i18n-locale-en` ceiling is in
`scripts/check-eager-closure-budget.mjs`); `check:readme-exports` (needs
every dist).
## Acceptance notes
- Out of this PR by the claim, left on the card: objectui#13353 (enum
option labels), moving dev-only surfaces under `dev/`, and the remaining
literals on other surfaces (`AuditLogPage`, `FlowRunsPage`,
`ShareDialog`, …).
- The Studio table covers en + zh only (the carve-out), so the
datasource page renders English in the other eight languages, as every
other Studio screen does.
- Overlap: the objectui#13461 card thread may add keys to the same ten
packs; whichever lands second merges `main`.
- [x] Adds no product-specific widget, dialog, hook or string (see
AGENTS.md › Product-neutral renderer)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
https://claude.ai/code/session_01QY7vnZv639mvLbooY6nBKU
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 6c3340c commit d0c9650
22 files changed
Lines changed: 1979 additions & 187 deletions
File tree
- .changeset
- apps/console/src
- lib
- pages
- developer
- system
- packages
- app-shell/src/views/metadata-admin
- datasource
- i18n/src/locales
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
186 | 186 | | |
187 | 187 | | |
188 | 188 | | |
189 | | - | |
| 189 | + | |
190 | 190 | | |
191 | 191 | | |
192 | 192 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
30 | 30 | | |
31 | 31 | | |
32 | 32 | | |
| 33 | + | |
33 | 34 | | |
34 | 35 | | |
35 | 36 | | |
| |||
46 | 47 | | |
47 | 48 | | |
48 | 49 | | |
| 50 | + | |
49 | 51 | | |
50 | 52 | | |
51 | 53 | | |
| |||
62 | 64 | | |
63 | 65 | | |
64 | 66 | | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
| 67 | + | |
| 68 | + | |
73 | 69 | | |
74 | 70 | | |
75 | 71 | | |
| |||
154 | 150 | | |
155 | 151 | | |
156 | 152 | | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
157 | 158 | | |
158 | 159 | | |
159 | 160 | | |
| |||
281 | 282 | | |
282 | 283 | | |
283 | 284 | | |
284 | | - | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
285 | 289 | | |
286 | 290 | | |
287 | 291 | | |
288 | 292 | | |
289 | 293 | | |
290 | | - | |
| 294 | + | |
291 | 295 | | |
292 | 296 | | |
293 | 297 | | |
| |||
318 | 322 | | |
319 | 323 | | |
320 | 324 | | |
| 325 | + | |
| 326 | + | |
| 327 | + | |
| 328 | + | |
| 329 | + | |
| 330 | + | |
| 331 | + | |
| 332 | + | |
| 333 | + | |
321 | 334 | | |
322 | 335 | | |
323 | 336 | | |
324 | 337 | | |
325 | 338 | | |
326 | 339 | | |
327 | | - | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
328 | 343 | | |
329 | 344 | | |
330 | 345 | | |
331 | 346 | | |
332 | | - | |
| 347 | + | |
333 | 348 | | |
334 | 349 | | |
335 | 350 | | |
| |||
340 | 355 | | |
341 | 356 | | |
342 | 357 | | |
343 | | - | |
| 358 | + | |
344 | 359 | | |
345 | 360 | | |
346 | 361 | | |
| |||
350 | 365 | | |
351 | 366 | | |
352 | 367 | | |
353 | | - | |
| 368 | + | |
354 | 369 | | |
355 | 370 | | |
356 | 371 | | |
357 | 372 | | |
358 | | - | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
359 | 378 | | |
360 | 379 | | |
361 | 380 | | |
| |||
400 | 419 | | |
401 | 420 | | |
402 | 421 | | |
403 | | - | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
404 | 425 | | |
405 | 426 | | |
406 | 427 | | |
407 | 428 | | |
408 | 429 | | |
409 | | - | |
| 430 | + | |
410 | 431 | | |
411 | 432 | | |
412 | 433 | | |
413 | 434 | | |
414 | 435 | | |
415 | 436 | | |
416 | | - | |
417 | | - | |
| 437 | + | |
| 438 | + | |
418 | 439 | | |
419 | | - | |
| 440 | + | |
420 | 441 | | |
421 | | - | |
| 442 | + | |
422 | 443 | | |
423 | 444 | | |
424 | 445 | | |
| |||
437 | 458 | | |
438 | 459 | | |
439 | 460 | | |
440 | | - | |
| 461 | + | |
441 | 462 | | |
442 | 463 | | |
443 | 464 | | |
444 | 465 | | |
445 | 466 | | |
446 | 467 | | |
447 | | - | |
| 468 | + | |
448 | 469 | | |
449 | 470 | | |
450 | 471 | | |
| |||
478 | 499 | | |
479 | 500 | | |
480 | 501 | | |
481 | | - | |
| 502 | + | |
482 | 503 | | |
483 | 504 | | |
484 | 505 | | |
| |||
491 | 512 | | |
492 | 513 | | |
493 | 514 | | |
494 | | - | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
495 | 518 | | |
496 | 519 | | |
497 | 520 | | |
| |||
505 | 528 | | |
506 | 529 | | |
507 | 530 | | |
508 | | - | |
| 531 | + | |
509 | 532 | | |
510 | 533 | | |
511 | 534 | | |
| |||
526 | 549 | | |
527 | 550 | | |
528 | 551 | | |
529 | | - | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
530 | 555 | | |
531 | 556 | | |
532 | 557 | | |
| |||
539 | 564 | | |
540 | 565 | | |
541 | 566 | | |
542 | | - | |
543 | | - | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
544 | 581 | | |
545 | 582 | | |
546 | 583 | | |
| |||
549 | 586 | | |
550 | 587 | | |
551 | 588 | | |
552 | | - | |
| 589 | + | |
553 | 590 | | |
554 | 591 | | |
555 | 592 | | |
556 | 593 | | |
557 | 594 | | |
558 | 595 | | |
559 | | - | |
| 596 | + | |
560 | 597 | | |
561 | 598 | | |
562 | 599 | | |
| |||
581 | 618 | | |
582 | 619 | | |
583 | 620 | | |
584 | | - | |
| 621 | + | |
585 | 622 | | |
586 | 623 | | |
587 | 624 | | |
| |||
0 commit comments