Repository navigation
i18n(plugin-sharing): ship the assignment rule object in all eleven platform languages - #30856
Conversation
…latform languages sys_assignment_rule (added by #30760) joins the package's extract config, so its en leaves are generated and check:i18n covers it. Its 30 leaves (label, plural label, description, field labels and help, the recipient and strategy options, the By Object view) are translated in zh-CN, ja-JP, es-ES, zh-Hant, ar, fr, pt-BR, ru, de and ko. The recipient options reuse each locale's existing words for Queue and User, so the recipient-vocabulary consistency test holds across the queue, sharing and assignment-rule objects. Native words equal to English (fr Description, Condition; de Name) are recorded by the extractor as source copies. Co-authored-by: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016WV4cya5ej5GQV86RPbRPK
📓 Docs Drift Check14 anchor(s) derived from 1 changed package(s); no hand-written page names any of them, so this run has nothing to list — not a clean bill of health. This check sees only pages that NAME a derived anchor: one that documents this change in prose, or enumerates it in an authoring dialect, names none and stays invisible to it on every run. What this run could not see
Coarse fallback — 11 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 df41029848c8616546f2b26ae114550638524ffd && git checkout df41029848c8616546f2b26ae114550638524ffd
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin 677d542a0e856d7ff88db8657d09740bff86273a 753d30d0dddcef25cdffcaede5110a1e3468769c && git checkout -B drift-repro 677d542a0e856d7ff88db8657d09740bff86273a && git merge --no-ff 753d30d0dddcef25cdffcaede5110a1e3468769c
node scripts/docs-audit/affected-docs.mjs --json 677d542a0e856d7ff88db8657d09740bff86273a |
|
domain:server#1 · os-elon-musk · session_016WV4cytLmJxfAmgPVjUbbW 席位核对 · ACCEPT · 2026-11-06T07:04Z · #30512 (plugin-sharing follow-up: sys_assignment_rule)Head-sha: 753d30d
|
Requested by Elon · project thread
domain:server#1 · os-elon-musk · session_016WV4cya5ej5GQV86RPbRPK
Part of #30512 — a follow-up to package 8 (
@objectstack/plugin-sharing, #30767): the assignment rule objectsys_assignment_rule, which #30760 added to this package after #30767 landed. It folds in the translations #30066 owed for that object (landing note 6677585327), so no separate card is needed. The card stays open: settings 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
维护者速读
sys_assignment_rule) 的名称、说明、字段名与帮助、两组选项(分配给:队列 / 用户;选择成员:轮流 / 负载最少)和「按对象」视图名,补上英文以外全部 10 种语言(简中、日、西 + 繁中、阿、法、巴葡、俄、德、韩),每种 30 条。check:i18n也覆盖它。scripts/i18n-extract.config.ts(对象列表多了SysAssignmentRule)和src/translations/bundle-ownership.test.ts(同步加一行),再抽看任一语言TAG.objects.generated.ts的sys_assignment_rule段。node scripts/check-i18n-bundles.mjs --filter=sharing输出plugins/plugin-sharing in sync;pnpm --filter @objectstack/plugin-sharing test全绿。What changes
scripts/i18n-extract.config.tslistsSysAssignmentRulebeside the five objects it already extracts, so the repo's ownos i18n extract --fill=default --source-hasheswrites its 30 leaves intoen.objects.generated.tsand every locale bundle, andcheck:i18ncovers them from this PR on.recipient_typeoptionsqueue/user, thestrategyoptionsround_robin/least_loaded, and theby_objectview) are translated inzh-CN,ja-JP,es-ES,zh-Hant,ar,fr,pt-BR,ru,deandko.queue/useroptions read exactly as onsys_sharing_ruleandsys_queue_member, "Organization", "Name", "Display Label", "Description", "Object", "Active" and "By Object" read as onsys_sharing_rule, and the object's name follows the word each locale'ssys_queuehelp already uses for assignment rules (forzh-CNandja-JPalso the Setup menu entry feat(objectql,plugin-sharing): an organization authors its own assignment rules as sys_assignment_rule records #30760 added).loadhelp names theleast_loadedoption by its translated label in each locale, and both expression examples (record.priority == "high",record.status != "closed") stay byte-identical.Tests
bundle-ownership.test.ts(ADR-0029 D8) lists the objects the extract config owns and is red when the two lists differ;sys_assignment_ruleis added to it, the one line this config change requires (without it the package suite fails: "bundle carries objects this package's extract config does not own").recipient-vocabulary-consistency.test.tsalready scans every object of every locale, so the new object is held to "one option key, one rendering per locale" with no edit.Acceptance notes
en(key set,{{holes}},{holes}, backtick spans, angle tokens: all ten locales OK, zero diffs; 181 leaves each). Arabic is RTL prose with identifiers and the expression examples left in Latin script.zh-Hantwas checked against OpenCC's Traditional (Taiwan) conversion: no Simplified-only character in the 30 new strings.frDescription,Condition;deName. All are the native words.check:i18n-stale-fillpasses with the baseline untouched.osfollowed by a lowercase word (check-cli-command-idspasses), and the whole "Lint · docs & code guards" lane was run locally before opening.Verification
Package suite, typecheck, build (verify lock)
i18n gates, the derived families and the docs & code guards lane
The branch is one commit on
mainae82d057(after #30830 landed). Its diff has the same patch id (0760465a) as8f3e8b49, where the suite, the derived families,pnpm lintand the docs & code guards lane ran on mainc17719dd; none of the main commits in between touchesplugin-sharing. Both i18n checks and the two families that changed on main were re-run on this head.Dogfood: not run — content-only package PR, no
!in the title and no(narrowing)arm.Generated by Claude Code