docs(i18n): apply reviewed Chinese proofreading updates

This commit is contained in:
xjt
2026-08-12 09:59:19 +08:00
parent 82d21ab3c3
commit 7b450d121e
258 changed files with 535 additions and 535 deletions

View File

@@ -3,4 +3,4 @@
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write packages/settings/settings/README.md
README.md: b1c32c7f4cd05b05802400b33dfdd40f7ed20e61
README.zh.md: 47fa75d13ad607554de1aa51de03557a769e2366
README.zh.md: 7f7d2773f7bcb35857253c2d3c0d0f341a42c1e7

View File

@@ -14,13 +14,13 @@
- `update(ns, patch)` — 把普通对象 patch 深合并进用户分节(绝不合并进 `base`校验解析候选值经提供方持久化后提交。patch 只能包含与 JSON 兼容的数据Date、Map、BigInt、非有限数或循环引用会在任何内容持久化前带着以 `$` 为根的路径拒绝YAML/JSON 存储在重载时会静默改变这类值)。校验失败在持久化前拒绝;只读提供方(`writable: false`)拒绝一切写入。同一 namespace 的写入按调用顺序串行。
- `replace(ns, section)` — 整体替换用户分节:这是刻意的重置(`replace({})` 重新继承 `base` 与 schema 默认值)。
- `mutate(ns, ops)` — 在写入排到队首那一刻的分节上,按序施加 `{ op: 'set' | 'unset', path }` 编辑。这是任何持有**不完整**视图的调用方的删除路径:配置 UI 读到的是脱敏后的 descriptor据此重建分节再整体替换会把 wire 从未回传的每个机密都删掉,而一条 op 只点名它真正要改的那个字段。
- 每次写入都可携带可选的 `expectedRevision`。每个 descriptor 都带有该 namespace 的 `revision`——一个针对其**原始**分节的单调计数器;期望值不再匹配的写入会以 `SettingsConflictError``code: 'SETTINGS_CONFLICT'`,并附上两个 revision被拒绝而不是覆盖先完成写入的写入方。写队列只保证写入的先后次序它本身分辨不出的写入方与持有陈旧快照的写入方。
- 解析值是深冻结快照。每次提交后观察者收到 `(next, prev)`:同一回调的调用异步、逐次、按提交顺序执行(慢的旧调用绝不会覆盖更新的结果异常——同步抛出与异步拒绝——均被隔离。watch 的 disposer 返回后不再启动新的调用(已排队的那一次会被跳过);已启动的调用仍会结算。`settings/updated` 事件逐监听器扇出,一个抛错的 listener 不会饿死其余 listener异步 listener 的拒绝会被隔离并记入日志,这正是 `INVARIANT` 编码的失败只从同步 listener 重新抛出的原因。
- 每次写入都可携带可选的 `expectedRevision`。每个 descriptor 都带有该 namespace 的 `revision`——一个针对其**原始**分节的单调计数器;期望值不再匹配的写入会以 `SettingsConflictError``code: 'SETTINGS_CONFLICT'`,并附上两个 revision被拒绝而不是覆盖先完成写入的写入方。写队列只保证写入的先后次序它本身分辨不出持有新鲜快照的写入方与持有陈旧快照的写入方。
- 解析值是深冻结快照。每次提交后观察者收到 `(next, prev)`:同一回调的调用异步、逐次、按提交顺序执行(慢的旧调用绝不会晚于较新的调用生效异常——同步抛出与异步拒绝——均被隔离。watch 的 disposer 返回后不再启动新的调用(已排队的那一次会被跳过);已启动的调用仍会结算。`settings/updated` 事件逐监听器扇出,一个抛错的 listener 不会饿死其余 listener异步 listener 的拒绝会被隔离并记入日志,这正是 `INVARIANT` 编码的失败只从同步 listener 重新抛出的原因。
- 服务卸载先拒绝新写入与观察者调用的启动再排干全部排队写入与已启动的观察者调用后才完成registrant fiber 在写入途中被 dispose 时,该写入仍到达存储,但不向任何人提交或通知。
## 提供方约定
子类实现 `writable``load()``persist(ns, section)`,可选择为一个本地用户可编辑文件重写 `documentPath``prepareDocument()`,并通过受保护的 `publish(doc)` 推入外部观察到的文档。基类 service init 在服务可注入前加载并发布一次文档;自有 initwatcher、连接provider 先经 `yield* super[Service.init]()` 委托。publish 时每个已注册 namespace 独立重解析:非法分节保留该 namespace 的最后可用值并告警——热重载绝不拖垮进程;启动期与注册期校验则立即报错。
子类实现 `writable``load()``persist(ns, section)`,可选择为一个本地用户可编辑文件重写 `documentPath``prepareDocument()`,并通过受保护的 `publish(doc)` 推入外部观察到的文档。基类 service init 在服务可注入前加载并发布一次文档;自有 initwatcher、连接提供方先经 `yield* super[Service.init]()` 委托。publish 时每个已注册 namespace 独立重解析:非法分节保留该 namespace 的最后可用值并告警——热重载绝不拖垮进程;启动期与注册期校验则立即报错。
## 事件