官方中文界面词条

Official Chinese UI strings

别名:汉化、语言设置、中文界面、locale 机制、zh 词条

DSH 本体自带的中文界面:`@deepseek-ai/dsh-client-locale` 用「命名空间 × 语言」字典提供词条,宿主把语言偏好存在 `$DSH_HOME/settings.yaml`,切换即时生效、不用重载页面。想找汉化的第一步是确认语言设置,不是装插件。

一句话

中文界面不是装出来的,是 DSH 本体自带的:它是一套「命名空间 × 语言」的字典注册表加一个语言偏好。所以「我的 DSH 是英文的」这个问题,正确解法是去设置里切语言,而不是去找汉化包——这正是本站要抢在第三方汉化教程之前说清的一件事。

机制

实现(@deepseek-ai/dsh-client-locale,实测 0.1.0-rc.6)里几个关键常量:

常量值含义
LOCALE_IDS["zh", "en"]出厂就是这两套语言
LOCALE_SETTINGS_NAMESPACE"locale"偏好落在这个 settings 命名空间
LOCALE_PREFERENCE_FIELD"preference"字段名
FALLBACK_LOCALE"zh"兜底语言是中文
COMMON_NS(共享命名空间)跨功能的通用词条
SETTINGS_NS"settings.locale"语言这一行自己也是词条(language.title)

偏好落在 $DSH_HOME/settings.yaml 的 locale.preference(宿主 settings,不是 profile 层)。没写这个字段时,浏览器自己的语言作数:按主语言子标签匹配(zh-Hans-CN → zh、en-GB → en),匹配不上就用 zh,而且这个暂定值会在插件激活后被宿主设置实时替换。

查找链(实现注释口径):当前语言的命名空间 → 该命名空间的 zh 回落 → 共享 common 命名空间(当前语言,然后 zh)→ 最后回落成键名本身。最后那一步是排错重点:界面上莫名出现 some.key.name 这种点分文字不是 bug,是词条没注册——先去找对应插件的字典,而不是重装。

语言怎么切

界面上是设置里的一行:注册进 settings.general.item 槽,菜单项是「中文 / English」(language.title 在 zh 字典里就是「语言」)。切换即时生效、不用重载页面:字典变化通过 LocaleFace 的 subscribe 通知渲染路径重新取值,而 locale/change 事件只在真正换语言时触发(注册新字典不触发——这是有意避免启动期事件风暴)。切换后某处没变,说明那段文案不走 slot 渲染路径。

一个真实的坑:有些文案不跟着切

README 列了这条已知限制,值得按原文口径记下:设置行、侧边栏、问题作答器、模型选择使用 locale 席位(跟着切);其他包仍直接拥有静态文本;而在 slot 渲染路径之外、注册时就捕获的文案(例如命令注册表里的命令描述)会保持注册时的语言。

两个直接后果:一是「切成中文了但某处还是英文」可能是上游还没本地化,不是你配错了,别去覆盖它;二是给第三方插件补汉化的正确姿势是给上游字典提 PR,外层覆盖既不跟上游更新走,也修不了「注册时捕获」这一类。

与「第三方插件的中文化」的分工

分区 assets 里另有一条「第三方插件的中文化(占位 · 欢迎贡献)」:本词条管 DSH 本体自带的 zh 字典(你做的是确认/切换语言设置,现状已出厂),那条管第三方插件自己的字典(你做的是给上游 locales 提 PR,现状有缺口)。不要在外层覆盖别人的字典——既不跟上游更新走,也修不了「注册时捕获」这一类。

与其它东西的关系

关系对象说明
落在client/1 官方 Web UI它改的就是这个界面的文字
同层邻居theme/1 官方主题插件一个管词条、一个管配色,都在「设置 → 通用」里
机制层concept/4 client 半端字典是客户端半端插件提供的
相邻概念concept/2 profile语言偏好不在 profile 层,是全机共享的 settings

未核实 / 未声明

  • locale 字段写的是 zh,不是 zh-CN:实现里出厂的 id 就是 zh / en(LOCALE_IDS),匹配也只按主语言子标签做;而分区文件写的是 zh-CN。两者不是一个体系里的东西,本站按实现写 locale: zh,差异如实记录在此。
  • 词条数量:本轮没有统计 zh 字典里到底有多少条,所以不给「汉化覆盖率」这类数字。
  • 「服务端与客户端都用同一套命名空间」:分区条目的 blurb 这么写。本轮实际读到的注册调用都在客户端侧(ctx.provide("locale", …) 与 ctx.slots.installLocale),服务端侧如何使用同一套命名空间的代码路径未核实,所以本词条不重复这个断言。
  • install 不是一条可执行命令:它随 bundle 层出厂,没有 dsh plugin add 形式的安装命令,此字段写的是落点与偏好位置。
  • 远程浏览器:README 说 settings API 仅限回环请求,远程浏览器的语言选择只保留在进程内(不落盘)。上游自述,本轮未复现。
  • repo / 许可证:取自该包 package.json 的 repository.url(directory: packages/client/locale)与 license: MIT;仓库根 LICENSE 本轮未读取。

谁引用了这一条

信息表

assetType
locale
category
appearance.locale
install
内置:随客户端 bundle 自带,没有单独的安装命令;语言偏好写在 $DSH_HOME/settings.yaml 的 locale.preference
locale
zh
provides
界面词条(zh / en 两套字典),走「命名空间 × 语言」注册表;`t()` 由 slot 系统注入,查不到键时回落 zh,再回落到键名本身
repo
deepseek-ai/deepseek-harness
titleEn
Official Chinese UI strings
updatedAt
2026-10-02

标签:本地化、界面、设置、中文