fix(i18n): translate SSO/SCIM/user-position/import-job admin objects - #3531
Merged
Conversation
Four live, UI-facing system objects were registered but never added to their package's i18n extract config, so non-English admins saw raw English `label` metadata. Adds sys_sso_provider, sys_scim_provider, sys_import_job (platform-objects) and sys_user_position (plugin-security) to their extract configs with real zh-CN/ja-JP/es-ES translations across all four locale bundles, and extends the bundle-ownership guards' OWNED_OBJECTS to cover them. sys_import_job is included after confirming it is genuinely UI-surfaced (the objectui plugin-grid Import Wizard's import-history view, the Setup import grid, and dashboards) and consistent with its already-translated siblings sys_job / sys_job_run. The orphan-only guards from #3502 could not catch this "owned-and-live-but-never-extracted" gap. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
📓 Docs Drift CheckThis PR changes 2 package(s): 12 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:
|
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
What
An audit following the bundle-ownership guard rollout (#3502) found live, registered, UI-facing system objects that were never added to their package's
i18n-extract.config.tsand carried no translation bundle entry — so non-English admins saw raw Englishlabelmetadata. The orphan-only guards from #3502 catch stray bundle keys, not owned-and-live-but-never-extracted objects, so this gap was invisible.This adds i18n coverage for four such objects, with real zh-CN / ja-JP / es-ES translations (not
--fill=defaultEnglish placeholders):sys_sso_providersys_scim_providersys_user_positionuserActionscreate/edit/delete (siblingsys_user_permission_setalready translated)sys_import_jobThe three verified-internal objects (
sys_approval_approver,sys_approval_token,sys_audience_binding_suggestion) are correctly left untranslated.sys_import_job— why includedLower-confidence at audit time (engine-owned, view-only, no
listViews). Confirmed genuinely UI-surfaced: the objectui@object-ui/plugin-gridImport Wizard has a real import-history view (importHistory.test.ts,isImportJobActive/isImportJobUndoable), its own docstring names the Setup import grid + dashboards, and its structurally-identical siblingssys_job/sys_job_runare already translated. Leaving it out would reproduce the very sibling-inconsistency this audit fixes.How
Per object: added the schema to its package's extract config (import +
objects[]), added the translation block to all four locale bundles, and extended thebundle-ownership.test.tsOWNED_OBJECTS. English blocks were tool-scaffolded viaos i18n extract(proven regen-stable — a no-op run on the unmodified config produced a 0-line diff), then non-English leaves were hand-translated. Out-of-scopemetadata-formsregen and pre-existing plugin-security object drift were reverted so the diff is exactly these four objects.Verify
pnpm turbo test --filter=@objectstack/platform-objects --filter=@objectstack/plugin-security— green (both ownership guards pass; platform-objects guard re-run fresh to rule out cache)pnpm turbo build --filter=... --force— green, DTS type-check active (OS_SKIP_DTSunset) → bundles are validTranslationDataID, OAuth/SAML placeholders,urn:NameID format)Single
patchchangeset (both packages share onefixedgroup).🤖 Generated with Claude Code