Files
deepseek-harness/packages/client/locale/README.zh.md
creatixchu cb754a0319 feat(locale): derive the initial Settings language from the browser
A first visit resolved to Chinese regardless of the browser: LocaleService
read `dsh.locale` and fell straight back to `zh` when nothing was stored,
ignoring the languages the browser already states it reads.

The initial locale now resolves through three ordered sources — the persisted
preference, then `navigator` (first entry of the ordered language list whose
primary subtag names a shipped locale, so `zh-Hans-CN` -> zh and `en-GB` ->
en), then `FALLBACK_LOCALE`. An explicit choice still wins and nothing writes
the detected locale back to storage, so "has the user chosen?" stays a
question only the stored value answers.

Specs asserting the shipped Chinese copy now state the browser they assume:
the web e2e scenarios open their page with `locale: ZH_BROWSER_LOCALE`, and
package specs pin it through the new `pinBrowserLanguages` test helper.
`settings-chrome.e2e.ts` gains an English-browser scenario as the
assembled-app proof.
2026-07-31 15:26:46 +08:00

1.5 KiB
Raw Blame History

@deepseek-ai/dsh-client-locale

English | 中文

locale 插件LocaleService——浏览器 locale 偏好(zhen,以 dsh.locale 持久化;未持久化偏好时,全新浏览器以 navigator 请求的语言开场——按主子标签匹配,若其请求的语言本应用都不提供则为 zhlocale/change 仅在切换语言时触发),加上 ns×locale 字典注册表(类型化 register(ns, {zh, en})LocaleNamespaceMap 校验,bind(ns)TranslateNS<ns>;查找链 ns → common → zh → key。该服务实现 slot 系统的 LocaleFace 并经 ctx.slots.installLocale 自行安装,支撑框架注入的 t 标准席位(TranslateTranslateNS 是 ui-slots 的类型;请从那里导入——本包的再导出仅为字典所有者提供便利)。

模型体验

无。locale 注册表为浏览器 UI 文案提供服务;这里没有任何内容进入模型请求。

KV Cache 影响

该包package既不组装也不发送提供方请求。

已知限制与暂缓事项

  • 多数界面仍保留内联文案——标准席位已由设置行、侧边栏、问题作答器和模型选择接入;其余包在后续 PR 中迁移。
  • 注册表持有的文本只读取一次翻译——在 slot 渲染路径之外于注册时捕获的文案(例如 command 注册表中的 /model 命令描述在重新注册前保持注册时的语言slot 渲染的文案随切换实时更新。