Repository navigation
Commit eb68b98
i18n(platform-objects): ship the platform objects, Setup, Studio and Account in Arabic (#31120)
<!-- claude-projects-attribution: {"github_login":"marchtian"} -->
_Requested by **田騏** · [project
thread](https://claude.ai/code/project/chan_01VmuUhXU9SSUzqJYyXSmYSi?thread=cmsg_01VmuUhXU9SSUzqJYyXSmYSiP9RS1KjicEPyef7VNhFzFa)_
Part of #30512
Clause-②: no
Metadata-protocol: none
## 维护者速读
- 业务影响:阿拉伯语(ar)用户打开平台对象、Setup、Studio 和 Account 时,界面不再是英文。
- 范围:只动 `@objectstack/platform-objects`,按 #30951 加 zh-Hant 的同一套路加
ar;spec、ui、邮件模板都不碰。
- 翻译:从 main 的 en 源重新翻译 3078 个叶子,术语对齐 ui/packages/i18n 的 ar;只有 17
个标识符(JWKS、cron、JSON 示例等)保留英文。
- 跨包对齐:审批、分配规则、各设置页的导航名与对应包的 ar 标题逐字一致,并由现有测试守住。
- 风险:只新增语言与测试里的语言列表,不改任何既有语言的文本;新文本同样走 source-hash 回退。
- 合并:生成文件让 PR 超过 3000 行,需要座位契约复审后由人工合并。
## What changes
- New `ar` bundles in `packages/platform-objects/src/apps/translations`:
`ar.objects.generated.ts` (1676 leaves),
`ar.metadata-forms.generated.ts` (1263 leaves), their provenance table
`ar.source-hashes.generated.ts` (16 deliberate echoes), the
hand-authored `ar.ts` (139 leaves) and `ar.source-hashes.ts` recording
the `en` digest of every hand leaf.
- Registration: the extract config's `--locales` docstring and
`translations:` baseline, `setup.translation.ts`, the `apps` barrel, and
`metadata-translations/index.ts`.
- Inline maps: 35 in `sys-user.page.ts`, 6 in
`sys-organization.page.ts`, and the System Overview null label in
`system.datasets.ts`.
- Wording pins: `nav_account_approvals` reads as plugin-approvals'
`my_pending` label, `nav_assignment_rules` as `sys_assignment_rule`'s
plural label, each `nav_settings_*` as its service-settings hub title,
and the four #30935 keys (`grp_account_ai_assistant`, both
`nav_connect_agent` entries, `pages.connect_agent.label`).
- Changeset `.changeset/30512-platform-objects-ar.md` (patch).
## Tests
- `ar` added to the locale lists of the platform-objects tests that
#30951 widened for zh-Hant (vocabulary, nav parity, dead-key tombstone,
source-hash, copy tests, record-page tabs, plugin translation loads),
plus plugin-approvals `approval-status-vocabulary`, plugin-security
`people-org-assignment-nav-contribution` and service-settings
`setup-nav-hub-parity`. The cli `platform-page-i18n-parity` LOCALE_KEY
shape already accepts `ar`.
## Acceptance notes
- Every leaf is translated; the only byte copies of `en` are identifiers
and code examples, and the extract records them in the provenance table.
- Lists of Latin identifiers use the Arabic comma, and no proclitic `و`
is glued to a Latin token.
- `Position` on the add-record button is الموضع and the job position is
المنصب; a hook's `Body` is المتن.
## Verification
- `os i18n extract ... --locales=zh-CN,ja-JP,es-ES,zh-Hant,ar
--fill=default --source-hashes`: regenerates the ar files byte-identical
and leaves the other locales unchanged.
- `vitest run` in platform-objects: 117 files, 1683 tests passed. The
plugin-approvals, plugin-security, service-settings and cli parity tests
passed.
- `dispatch-gates --ran`: 64 derived families, 64 run, 0 NOT-MEASURED,
all exit 0 (including `check:i18n`).
- `pnpm lint`, platform-objects `typecheck`, and all 57 commands of the
"Lint · docs & code guards" lane (including `check:cli-command-ids`):
exit 0.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 21c1f74 commit eb68b98
36 files changed
Lines changed: 7233 additions & 48 deletions
File tree
- .changeset
- packages
- platform-objects
- scripts
- src
- apps
- dashboards
- translations
- identity
- metadata-translations
- pages
- plugins
- plugin-approvals/src/translations
- plugin-security/src
- services/service-settings/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
222 | 222 | | |
223 | 223 | | |
224 | 224 | | |
| 225 | + | |
225 | 226 | | |
226 | 227 | | |
227 | 228 | | |
228 | 229 | | |
229 | 230 | | |
| 231 | + | |
230 | 232 | | |
231 | 233 | | |
232 | 234 | | |
| |||
250 | 252 | | |
251 | 253 | | |
252 | 254 | | |
| 255 | + | |
253 | 256 | | |
254 | 257 | | |
255 | 258 | | |
| |||
351 | 354 | | |
352 | 355 | | |
353 | 356 | | |
| 357 | + | |
354 | 358 | | |
355 | 359 | | |
356 | 360 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
31 | 31 | | |
32 | 32 | | |
33 | 33 | | |
| 34 | + | |
34 | 35 | | |
35 | 36 | | |
36 | 37 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
60 | | - | |
| 60 | + | |
61 | 61 | | |
62 | 62 | | |
63 | 63 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
49 | 50 | | |
50 | 51 | | |
51 | 52 | | |
52 | 53 | | |
53 | 54 | | |
| 55 | + | |
54 | 56 | | |
55 | 57 | | |
56 | 58 | | |
57 | 59 | | |
58 | 60 | | |
| 61 | + | |
59 | 62 | | |
60 | 63 | | |
61 | 64 | | |
| |||
130 | 133 | | |
131 | 134 | | |
132 | 135 | | |
133 | | - | |
| 136 | + | |
134 | 137 | | |
135 | | - | |
| 138 | + | |
136 | 139 | | |
137 | 140 | | |
138 | 141 | | |
139 | 142 | | |
| 143 | + | |
140 | 144 | | |
141 | 145 | | |
142 | 146 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
16 | 16 | | |
17 | 17 | | |
18 | 18 | | |
| 19 | + | |
19 | 20 | | |
20 | | - | |
| 21 | + | |
21 | 22 | | |
22 | 23 | | |
23 | 24 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
111 | 111 | | |
112 | 112 | | |
113 | 113 | | |
| 114 | + | |
114 | 115 | | |
115 | 116 | | |
116 | | - | |
| 117 | + | |
117 | 118 | | |
118 | 119 | | |
119 | 120 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| 62 | + | |
62 | 63 | | |
63 | | - | |
| 64 | + | |
64 | 65 | | |
65 | 66 | | |
66 | 67 | | |
| |||
0 commit comments