This repository was archived by the owner on Oct 26, 2026. It is now read-only.
Repository navigation
fix(console, app-shell): localise API Console, Public Forms, Integrations, AI Approvals and the datasource page (objectui#13460) - #13489
Merged
Conversation
…atasource page (objectui#13460) API Console, Public Forms, Integrations & APIs and AI Approvals read console.developer.* / console.system.* keys, translated in all ten packs; the Studio datasource page reads engine.datasource.* rows (en-US and zh-CN, the engine.* carve-out). Inline bold / code elements are slots in one translated sentence (apps/console/src/lib/inlineSlots.tsx). Part of #13460 Claude-Session: https://claude.ai/code/session_01QY7vnZv639mvLbooY6nBKU Co-authored-by: Claude <noreply@anthropic.com>
…; ellipsis glyph in the new keys (objectui#13460) - consolePagesLocale-13460: the four routed pages under zh read the zh pack, slotted sentences place their element where the zh string puts it, and a provider-less mount still reads English. - DatasourceResourcePage.locale-13460: the datasource page reads its engine.datasource.* zh rows; en control. - The new values spell the ellipsis U+2026 (ellipsis-glyph-3878); the de empty-state sentence drops its quote pair so the de-quote-pairing census count stays as pinned. - selectPlaceholderLocale-11252 finds the New datasource button by its locale's row now that the button is translated. Part of #13460 Claude-Session: https://claude.ai/code/session_01QY7vnZv639mvLbooY6nBKU Co-authored-by: Claude <noreply@anthropic.com>
Contributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
Contributor
Author
席位核对 — ACCEPT · PR #13489 @
|
This was referenced Oct 25, 2026
This was referenced Oct 25, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by Elon · project thread
Part of objectstack-ai/objectstack#25916
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.ApiConsolePage.tsx), Developer → Public Forms (PublicFormsPage.tsx), Developer → Integrations & APIs (IntegrationsPage.tsx) and System → AI Approvals (AiPendingActionsPage.tsx) readconsole.developer.apiConsole.*,console.developer.publicForms.*,console.developer.integrations.*andconsole.system.aiApprovals.*throughuseObjectTranslation. 108 new keys, translated in all ten packs (no English copies). Cancel / Save / Refresh / Actions reusecommon.*. Each call carries theenvalue as its inlinedefaultValue(held byte-identical bypnpm check:i18n-keys), so a provider-less mount and every existing English test read exactly what they read before.<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 aselement:metadata_viewer's chips (objectui#12910).`Copy ${label}`are whole translated keys (copyBaseUrl,copySample); toasts likewise (copiedUrl,copiedIframe,copiedReact).DatasourceResourcePage.tsx) reads 55 newengine.datasource.*rows in the Studio table (metadata-admin/i18n.ts, en-US + zh-CN). That page already readengine.*, andpackages/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).contact-us,/thanks,my_database,/api/v1/...), server messages, and the redirect refusal (the spec's own prose).Search endpoints…,Discovering APIs…,Sending request…; they were...), becauseellipsis-glyph-3878holds 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: theSending request…glyph.Verification (local, objectui
mainc85408f+ this branch)turbo run type-checkfor@object-ui/console,@object-ui/app-shell,@object-ui/i18n(38 tasks incl. deps): pass.vitest run packages/i18n/: 87 files, 1353 passed.vitest runover 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.eslinton the touched sources: 0 errors, and the same warning set asmain(no new findings).check-changeset-presence.mjs,check-changeset-no-major.mjs,check:new-line-citations: pass.pnpm test;check:eager-closure(the eagerencatalogue grows by the new keys;i18n-locale-enceiling is inscripts/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.Adds no product-specific widget, dialog, hook or string (see AGENTS.md › Product-neutral renderer)
🤖 Generated with Claude Code
https://claude.ai/code/session_01QY7vnZv639mvLbooY6nBKU