Skip to content

platform-objects: the zh-CN bundle ships 192 labels and options as the English source string, and the i18n coverage baseline counts them as translated #20462

Description

@objectstack-fleet

Symptom

On a zh-CN console, several Setup surfaces show English:

  • The org record page's Invite user dialog lists the four membership roles as 所有者 / 管理员 / Delegated Admin / 成员.
  • A team record page shows the field label MEMBER COUNT.

Mechanism

These are not missing keys. packages/platform-objects/src/apps/translations/zh-CN.objects.generated.ts carries the key with the English source string as its value. For example:

  • sys_member.fields.role.options.delegated_admin = "Delegated Admin", and the same value on sys_invitation.fields.role.options.delegated_admin.
  • sys_team.fields.member_count.label = "Member Count".

A walk of the en and zh-CN object bundles at objectstack 3cf6449389 finds 338 zh-CN strings byte-equal to the English source, and 192 of them are label or options.* values. Some are legitimately untranslated, such as brand and protocol names (Google, GitHub, JWKS). Most are ordinary field labels an admin reads. For example:

  • sys_session.fields.last_activity_at.label = "Last Activity At"
  • sys_organization.fields.parent_organization_id.label = "Parent Organization"
  • sys_invitation.fields.positions.label = "Placement Positions"
  • sys_two_factor.fields.locked_until.label = "Locked Until"
  • sys_member._views.mine.label = "My Memberships"

scripts/i18n-coverage-baseline.json records 0 for packages/platform-objects/scripts/i18n-extract.config.ts. So a translated-locale value that is a copy of the source string reads to the coverage ratchet as translated, and nothing flags it.

Reproduction

  1. Boot the showcase: objectstack dev --no-seed-admin on a fresh DB, then create the owner through /_console/setup.
  2. With the console locale zh, open Setup → 组织 → the org record → 邀请用户, and open the 角色 select. Delegated Admin is listed in English.
  3. Create a team (POST /api/v1/auth/organization/create-team) and open its record. The member_count label reads MEMBER COUNT.

Expected

  • The user-facing labels and options carry zh-CN values, and the brand and protocol names that should stay in English are declared as such.
  • The coverage ratchet can tell a copied source string from a translation, so this state cannot re-accumulate silently.

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 notificationsbugSomething isn't workingdomain:enginepriority:p2Medium: important, M3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions