dsh-locale-ru:为 DeepSeek Harness Web GUI 提供俄语界面

前言

DeepSeek Harness(DSH)的 Web 客户端通过 @deepseek-ai/dsh-client-locale 服务管理界面文案:按 namespace 注册词典,用户在 Settings → General → Language 里切换语言。默认 shipped 语言以英语为主;若团队或用户需要俄语界面,要么等上游补全 ru 键,要么自行维护语言包插件。

下面介绍社区维护的 dsh-locale-ru(vowa-antilamer/dsh-locale-ru):它为 DSH Web GUI 注册 Русский,并覆盖对话、侧栏、设置、目标与插件相关的大量 namespace。该包不发布到 npm(npm 上的 dsh-locale-ru 名称属于无关项目),需从 GitHub 安装。

这是什么

dsh-locale-ru 是 DSH 的客户端语言包插件,维护者为 vowa-antilamer。它在浏览器侧向 locale 服务注册 ru 词典,并声明对 @deepseek-ai/dsh-client-locale 的注入(package.json 中 dsh.client.platform 为 web,immediately: true)。Host 侧为空实现,无运行时依赖,安装后不会改动 profile 的依赖图。

README 写明当前规模约为 61 个 message namespace、3844 条字符串,覆盖聊天与 Composer、会话与轨迹视图、各类侧栏、全部设置页、插件与 Cordis、目标/计划/任务、子智能体、问答与审批流,以及 dsh-market、better-sidebar、dsh-pet、dsh-mcp、dsh-git-graph 等第三方插件 namespace。许可证为 MIT(见仓库 README 与 package.json)。

核心功能

语言注册与回退

插件注册 locale 代码 ru,并配置英语回退:某键没有俄语翻译时先解析为 en,再落到共享的 common namespace,避免词典不完整导致界面报错或空白。

首次加载与语言选择

安装后第一次在页面加载时会尝试选用俄语;通过 localStorage 标记把选择权交给用户。之后在设置里改回 English 不会被插件再次覆盖。

第三方插件词典

第三方插件的俄语词条放在 src/locales/plugins/,每个 namespace 一个 JSON 文件。这些 namespace 在页面启动后延迟一个 task 再注册,以免与插件自带的 ru 词典抢同一 (namespace, locale)(locale 服务拒绝重复注册)。若插件自己已通过 ctx.locale.register(...) 提供俄语,则以插件为准;语言包只补「未自带俄语」的插件。

构建与质量门禁

仓库以 { "<key>": { "en": "…", "ru": "…" } } 形式并排保存英文源文与译文;scripts/build.mjs 生成提交的 lib/client.js。维护者可用 scripts/extract-dictionaries.mjs 对比已安装的 DSH/profile,发现键漂移;CI 与 npm run verify(check + test)用于保证生成物未过期、键与占位符一致。

安装与启用

安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。插件在 web profile 的浏览器环境中运行,权限与当前 DSH 进程及已装插件一致;只从可信来源安装。

安装到 DSH profile

官方 README 给出的安装方式为 GitHub spec:

dsh plugin --profile web add github:vowa-antilamer/dsh-locale-ru

也可在 Settings → Plugins → Install 中填写同一 spec。插件管理器会添加包并写入 bundle 行;Settings → General → Language 中应立刻出现 Русский。

本地开发 checkout 时,将路径指向目录即可:

dsh plugin --profile web add /path/to/dsh-locale-ru

并在 profile 的 package.json 里把 "dsh-locale-ru" 加入 dsh.profile.bundles(UI 安装流程通常会自动完成)。

切换界面语言

在 Settings → General → Language 中选择 Русский。选项写入 host 设置文档,重启后保留。选 English 可切回英语。

典型用法与维护者工作流

普通用户

完成安装后打开 Web GUI,按上一节在设置中选择 Русский 即可。无需额外配置文件。

为新的第三方插件补译(维护者)

若你 fork 或参与维护语言包,README 建议流程如下。

  1. 先把目标插件装进 profile,再对比 live 安装与仓库词典:
node scripts/extract-dictionaries.mjs <dsh>/node_modules/@deepseek-ai "$DSH_PROFILE_DIR/node_modules" --drafts
  1. 在 .plugin-drafts/<namespace>.json 中填写 "ru",将文件移到 src/locales/plugins/,然后执行:
npm run verify

工具会列出所有 namespace,插件专有的标为 [plugin];--drafts 会为尚无俄语的条目写出草稿(git 忽略)。省略 profile 参数时仅 diff 核心 bundle;<dsh> 为 DSH 安装目录(npx 安装时常为 ~/.npm/_npx/<hash>)。

DSH 升级后同步词典

node scripts/extract-dictionaries.mjs /path/to/dsh/node_modules/@deepseek-ai "$DSH_PROFILE_DIR/node_modules"

输出中的 MISSING / REMOVED 表示键漂移,NEW 为未译 namespace,UNUSED 为已无 bundle 注册的词典,OWN-RU 表示插件自带俄语、语言包中对应文件应删除。补译或删键后运行 npm run verify。

开发常用命令(README Development 节):

npm run build     # 重新生成 lib/client.js
npm run check     # 生成物是否与源码一致(CI 门禁)
npm test          # 模块形态、注册与键/占位符 parity
npm run verify    # check + test

覆盖范围(摘要)

README 用表格归纳了主要 namespace 分组,包括:conversation、chat、各类 sidebar*、settings.*、goal / plan / job、question / approval、以及 dsh-market、betterSidebar、pet、mcp、gitGraph 等。完整列表见仓库 README 的 What is translated。

适用场景与限制

适合谁: 需要在 DSH Web 界面使用俄语的开发者或团队;希望在社区语言包基础上为第三方插件补译的维护者(仓库提供 extractor 与测试)。

应注意:

  • 未经过 locale 服务的文案不会翻译,例如 host 侧纯文本响应(如 dsh web authentication required),或插件用自有词典、按 document.documentElement.lang 渲染的部分(README 以 @linxin666/dsh-pet 的浮动精灵与 HUD 为例:设置页可走 locale,游戏 HUD 仍可能保持插件内置语言)。
  • 语言包中未收录的插件(如 README 提到的 dsh-hud)界面仍为英语;可用 extract-dictionaries.mjs 查看缺口。
  • locale 服务没有复数规则,带数量的字符串使用 number-ind 等形式(README Limitations 节,正文截断处亦指向同一限制)。

插件分类为客户端(仅 web profile);与 SkillHub 插件目录 上的社区收录一致,该目录为独立生态站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-locale-ru 把 DSH Web GUI 的俄语界面做成可安装、可验证的语言包:英语回退、延迟注册第三方 namespace、无 Host 依赖。若你需要俄语工作环境,从 GitHub spec 安装并在设置里选 Русский 即可。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye