Fill the 408 entries that were missing from the Simplified Chinese
catalogue, bringing coverage of en.json from 72.5% to 100%
(1073 -> 1481 entries; 1480/1480 English keys now translated).
Files updated, per docs/adding_translations.md ("Commit the edited YAML
and all regenerated JSON and TypeScript resources together"):
- src/common/messagesYAML/zh.yaml - source catalogue
- src/common/messagesJson/zh.json - npm run i18n:yaml2json
- src/common/messages/combinedMessages.prod.ts
- npm run i18n:bakejson
The TypeScript resource matters: the release workflow runs
`npm run build`, which is only `node esbuild.config.mjs production` and
does NOT re-run `i18n:bake`. Since src/common/translation.ts imports
combinedMessages.prod.ts directly, a catalogue change that omits this
file would not reach the shipped main.js.
Verification
- No existing translation was modified: every key already present in
zh.json is byte-identical (0 changed, 0 removed).
- Placeholders checked string-for-string against the English source.
15 new entries contain ${...} or {HERE}; all match.
- combinedMessages.prod.ts regenerated with _tools/bakei18n.ts and
formatted with the project's Prettier config. The diff against main is
408 added `zh:` lines plus the expected bookkeeping, and no other
language changes.
- Terminology follows the existing catalogue (Vault -> 库,
Passphrase -> 密码短语, Setup URI -> 设置 URI, chunk -> 块).
Technical identifiers (URL, JWT, CouchDB, S3, TURN, IDB, P2P) are
intentionally left in English, matching current practice.
Two unrelated upstream issues, not addressed here
1. `dialog.yourLanguageAvailable` defines its placeholder as
`%{Display language}` while `$msg()` substitutes on `${...}`, so the
placeholder is never expanded and the literal text is shown in every
language.
2. The committed YAML catalogues appear stale relative to the JSON ones
(e.g. `en.yaml` lacks entries that `en.json` already contains, and
its wrapping differs from current tool output). This affects every
language and probably deserves a separate change.
(src/features/ConfigSync/CmdConfigSync.ts)
- Call the readiness predicate before accepting configuration file events.
- Stop the periodic sweep while settings are applied and let the resume lifecycle scan and restart it once.
(src/features/ConfigSync/CmdConfigSync.applySettings.unit.spec.ts)
- Exercise the ControlService settings path while active, suspended, and resumed.
- Verify that suspended settings application performs no scan and leaves the periodic sweep stopped.
(src/features/ConfigSync/CmdConfigSync.readiness.unit.spec.ts)
- Cover configuration file events before and after application readiness.
(updates.md)
- Document the readiness and suspension behaviour.
Apply the shared settings policy to Markdown files and retain local credentials
and profile selections when connection sharing is disabled. Document the
available manual sharing paths.
Add export and import checks using isolated Obsidian sessions, including
persistence and restart. Use the reviewed local Commonlib candidate for
downstream validation.