Repository navigation
i18n(plugin-security): ship the security objects, built-in permission sets and positions in all eleven platform languages - #30744
Conversation
… sets and positions in all eleven platform languages The security objects, the built-in permission sets and the built-in positions gain zh-Hant, ar, fr, pt-BR, ru, de and ko under the platform locale table's tags. Each object bundle is written and hashed by the repo's own `os i18n extract --source-hashes` and served through withSourceFallback like the existing three; the hand-written permission-set and position tables carry an entry per locale; the extract command and its merge baseline list the seven tags, so check:i18n covers them. position-rename-consistency extends its stale-word scan to zh-Hant, fr, pt-BR, ru, de and ko. Carried from the released handover commit ff28e79 (written by session_01Utp6Cai5CRdAs4u9gTipWU) onto main 06cccd3 without change. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WV4cya5ej5GQV86RPbRPK
Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WV4cya5ej5GQV86RPbRPK
📓 Docs Drift CheckThis PR changes 1 package(s): 23 hand-written doc(s) name something this change touched — list omitted above 15 rows. Re-derive on the tree named below: ⛔ 16 release-owned page(s) also affected — read-only, see AGENTS.md Documentation Guardrails. What this run could not see
Coarse fallback — 17 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin e864b0ece342846378670d6368c399c7a8b46586 && git checkout e864b0ece342846378670d6368c399c7a8b46586
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 82142ed65ce60cad753bea0aa2b76cb0364b132f 99bc8346e5565c98090662643b476625cf619ba4 && git checkout -B drift-repro 82142ed65ce60cad753bea0aa2b76cb0364b132f && git merge --no-ff 99bc8346e5565c98090662643b476625cf619ba4
node scripts/docs-audit/affected-docs.mjs --json 82142ed65ce60cad753bea0aa2b76cb0364b132f
|
|
domain:server#1 · os-elon-musk · session_016WV4cytLmJxfAmgPVjUbbW 席位核对 · ACCEPT · 2026-11-06T00:51Z · #30512 (package 7 of 11, plugin-security)Head-sha: 99bc834
|
Requested by Elon · project thread
domain:server#1 · os-elon-musk · session_016WV4cya5ej5GQV86RPbRPK
Part of #30512 — package 7 of 11 (
@objectstack/plugin-security). The card stays open: settings, sharing, approvals and platform-objects follow, and the last PR of the series makes the bundle check read the platform locale table.Clause-②: no
Metadata-protocol: none
维护者速读
src/translations/index.ts(按表标签注册,zh-CN 在 zh-Hant 前)、permission-sets.ts与builtin-positions.ts(手写的两张表),再看position-rename-consistency.test.ts。node scripts/check-i18n-bundles.mjs --filter=security输出plugins/plugin-security in sync;pnpm --filter @objectstack/plugin-security test全绿。What changes
zh-Hant,ar,fr,pt-BR,ru,de,ko): each aTAG.objects.generated.tswith all 60 object leaves plus itsTAG.source-hashes.generated.ts, written by the repo's ownos i18n extract --fill=default --source-hashesand served throughwithSourceFallbacklike the existing three.zh-CNstays ahead ofzh-Hantinindex.ts.permission-sets.ts(label and description of the nine built-in permission sets) andbuiltin-positions.ts(label and description of the seven built-in positions). Both are registered as each locale'spermissions/positionsgroup, and their header sentence now says "every locale" instead of "three entries".scripts/i18n-extract.config.tslists the seven tags and its merge baseline imports the seven bundles, socheck:i18ncovers them from this PR on.Tests
builtin-positions.test.tsandobjects/permission-set-descriptions.test.tsalready iterate every locale ofSecurityTranslations, so each new locale is held to the existing rules with no test edit: exactly the built-in names, no two labels alike, no English copy, no position id in the text, and the servedGET /meta/positionoverlay.position-rename-consistency.test.tsextends its stale-word scan (no "role" wording left on the renamed objects) tozh-Hant,fr,pt-BR,ru,deandko. Coverage widens; no assertion changed. Arabic is not added: its word for "role" (دور) is also the word in بدوره ("in turn"), which a correct help text onsys_user_position.delegated_fromuses, so a pattern for it would flag correct text.Acceptance notes
en(key set,{{holes}},{holes}, backtick spans, angle tokens: all seven locales OK, zero diffs). Arabic is RTL prose with identifiers left in Latin script.zh-Hantwas checked character by character against OpenCC's Traditional (Taiwan) conversion: no Simplified-only character remains.desys_user_position.fields.position.label=Position(the German word). The extractor records it as a source copy inde.source-hashes.generated.ts.sys_user_position.fields.delegated_from.helpcarries the Chinese term(职务代理); every locale keeps it ases-ESalready does. Not changed here (the source text belongs to the object, not to this bundle).check:i18n-stale-fillpasses with the baseline untouched.ff28e790(sessionsession_01Utp6Cai5CRdAs4u9gTipWU): the patch id of this PR's diff equals that commit's (446fab73). The serial row "after Setup: replace developer wording and hand-written JSON with fields a business administrator can use #30208 lands" was cleared by the seat: Setup: replace developer wording and hand-written JSON with fields a business administrator can use #30208's server rows that touch this package landed in PR fix: Setup form help speaks to an administrator; queue pages, mail status banner and test toast read in Chinese #30551, an ancestor of this branch.Verification
Package suite, typecheck, build (verify lock)
i18n gates and the derived families
The merge of
origin/mainbrought 17 commits, none inplugin-security,plugin-sharing,plugin-approvalsorservice-settings; the package suite and both i18n checks were re-run on the merged head.Dogfood: not run — content-only package PR, no
!in the title and no(narrowing)arm.Generated by Claude Code