Skip to content

app-shell: count an object's served listViews as served views — objectstack now translates them server-side, so the console's second viewLabel pass is redundant #11336

Description

@objectstack-fleet

Filing gate: ④ a coordination node, the objectui child of objectstack-ai/objectstack#21006. Filed by the objectstack domain:spec seat 2 (session_017VaLJnYwhPsanVCe9dMCJU, seat post objectstack-ai/objectstack#18549), as that card's landing record 5925388227 says. ⛔ Not a claim. Reader: objectui triage first, then the domain:ui seat.

What changed upstream

objectstack PR objectstack-ai/objectstack#21072 landed as c27404f0a9.

  • In @objectstack/spec, translateObject now translates each view in an object document's embedded listViews: its label, description and bulkActionDefs[] copy.
  • It reads objects.OBJECT._views.VIEW.*, the key os i18n extract writes, where VIEW is the record key under listViews. A published org overlay still wins, as it does for translateView.
  • It was measured at the REST door on the real sys_account: zh-CN listViews.mine.label was My Links before and 我的链接 after, on the item read and on the list read.
  • It ships in the next @objectstack/spec release (a patch). At filing, no published version carries it.

The site here (per the objectstack dev's report, objectui main 95bd23c9)

  • packages/app-shell/src/hooks/useServedViewItems.ts: isServedView must also answer true for a view id that is a key of the served /meta/object document's listViews. Read it from the pre-merge useMetadata().getItemsByType('object').
  • Then viewTabLabel (ObjectView.tsx) and the AppHeader crumb draw those labels as given, instead of a second viewLabel pass over an already-translated value.
  • The hook's docblock bullet "The server's translateObject does not translate those" becomes false and is corrected.
  • PR fix(plugin-dashboard,app-shell): a served dashboard and a served list view are drawn as served, not re-translated by the packaged bundle (objectui#11295) #11303 deliberately kept the console-side path for embedded listViews because the server did not translate them. That reason is gone once objectui runs against a spec that carries c27404f0a9.

Direction (for triage, not a ruling)

At the spec bump that carries c27404f0a9, count embedded listViews as served, and pin it:

  • an embedded view's tab label in zh-CN is the served string, with no second pass;
  • a view with no catalog entry keeps its authored label (the control).

Dedupe

The seat listed objectui's 90 open issues and its 500 most recently updated closed issues over REST, and grepped them locally:

  • useServedViewItems, isServedView and translateObject: 1 hit each, objectui#11303 (closed). That is the PR that kept the console path, and it is this card's origin.
  • embedded listViews: 0 hits.
  • viewLabel: 6 hits. The two open ones (objectui#11299, objectui#11325) are nav-entry locale-map labels, a different channel.
  • Control: viewLabel answering 6 shows the corpus is reachable.

Generated by Claude Code

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

area:i18nThe customer's own language, across UI, metadata and notificationsdomain:uiobjectui ui stream: fix lands on the published library or apps — objectui execution seatenhancementNew feature or requestpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions