dsh_languages: Extending DeepSeek Harness Web Interface Support to 14 Community Languages

前言

DeepSeek Harness(DSH)桌面/Web 客户端里,英文与简体中文通常随 @deepseek-ai/dsh-client-* 内置;若需要俄语、德语、繁体中文等界面,改 app.asar 或自行重打包既不安全也不易维护。社区插件 dsh_languages 走 DSH 公开的 ctx.locale 机制,在一个 bundle 里注册多种语言包,安装后在设置里切换即可。

下面介绍该插件的定位、能力与安装方式;事实以 GitHub 仓库 README 为准。该项目为社区维护,与 DeepSeek 无官方关联。

这是什么

dsh_languages(维护者 elims777)是 客户端 类 DSH 插件:面向 DeepSeek Harness Web UI 的社区翻译集合。简介为「Community translations (14 languages) for the DeepSeek Harness web UI」——一个插件包、多种语言,覆盖聊天、设置、插件、调度、侧栏、对话框与系统消息等界面文案。

许可证为 MIT(package.json 版本 1.0.1)。插件在 DSH 进程权限下运行;安装前建议浏览源码与 LICENSE,再决定是否启用。

核心功能

语言覆盖

当前打包进构建的语言共 14 种,每种约 2 886 行、63 个 namespace。README 语言表摘要如下(状态均为「就绪」;除俄语标注 100% 外,其余多为社区草稿):

语言 代码
Русский ru
Español es
Português (Brasil) pt-BR
Deutsch de
Français fr
Italiano it
Polski pl
Türkçe tr
日本語 ja
한국어 ko
繁體中文 zh-TW
Bahasa Indonesia id
Tiếng Việt vi
हिन्दी hi

带完整 locales/<代码>/ 目录的语言会自动纳入构建。阿拉伯语 ar 未包含:DSH 界面暂不支持 RTL 布局。

与内置 i18n 的衔接方式

DSH 不把全部翻译放在独立文件里;英文与中文在客户端 bundle 中通过 ctx.locale.register(ns, { zh, en }) 注册。本插件在浏览器侧(lib/client.js)对每个语言调用:

ctx.locale.addLanguage({ id: 'de', label: 'Deutsch', fallback: 'en' });
ctx.locale.register('settings', 'de', { trigger: 'Einstellungen' });

要点如下:

  1. 使用官方 API(ctx.locale.addLanguage + ctx.locale.register),不 patch app.asar,不重编译应用。
  2. 未翻译的 key 自动回退到英文(fallback en)。
  3. 零 npm 运行时依赖;预构建的 JavaScript bundle 随包分发。
  4. 通过 cordis.patch.yml 将 locales 注入 bundle 组合;Node 侧 lib/index.js 主要为满足 Loader 占位。

已知限制(README)

  • 主机下发的动态元数据(如插件/包名等 LocalizedText)仍在 app.asar 清单中,不会被本插件本地化。
  • {count} min、{value} tok/s 等紧凑单位,以及 Cursor、VS Code、PDF 等产品名有意保留不译。
  • DSH 无 ICU 复数;含 {count} 的字符串采用中性表述。
  • 社区翻译可能含机器辅助;欢迎母语者 PR 改进。

安装与启用

图形界面

  1. 侧栏 Plugins → Install。
  2. 填写 spec:dsh_languages(npm)或 github:elims777/dsh_languages(GitHub)。
  3. 启用 bundle 并刷新页面(Ctrl+R)。
  4. Settings → General → Language 选择目标语言。

注意:若语言未出现在列表中,可能是 bundle 未在启动时挂载——需确认 dsh_languages 在 dsh.profile.bundles 中,并重启应用(仅 Ctrl+R 不足以重建组合图)。

CLI

dsh plugin add dsh_languages
# 或从 GitHub:
dsh plugin add github:elims777/dsh_languages

安装后重启 DSH,在 Settings → General → Language 选择语言。

Discover 索引(可选)

若构建启用了插件市场(Plugins 的 Discover tab),可添加本仓库市场索引:

https://raw.githubusercontent.com/elims777/dsh_languages/main/market/index.json

索引格式为 DSH format: 1;版本按 commit 解析,安装可复现。

离线手动安装

从 Releases 下载 dsh_languages-<版本>.zip,解压后执行(Windows 示例):

powershell -ExecutionPolicy Bypass -File install.ps1

脚本会将包复制到 %USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh_languages 并写入 dsh.profile.bundles。可用 -Profile <名称>、-DshHome <路径> 指定配置。完成后重启 DSH。

典型用法与贡献

日常切换

经过上面的安装步骤后,无需额外配置项:在 Settings → General → Language 切换即可全局生效聊天、设置、插件页等已覆盖 namespace。

新增或维护某一语言

维护者或贡献者可使用仓库工具链(需 Node.js 22+ 与已安装 DSH,用于提取英文字符串):

node tools/new-locale.mjs de "Deutsch"   # 创建 locales/de/ 与 locales.json 条目
# 翻译 locales/de/*.json 中的值(勿改 key 与 {占位符})
npm run check                            # 校验完整性并重建 lib/client.js

提交 locales.json、对应 locales/<代码>/ 与 lib/client.js 后发起 PR;细则见仓库 CONTRIBUTING.md。若不想并入本包,可单独发布只做 addLanguage / register 的语言插件,DSH 可同时加载多个语言插件。

DSH 升级后若出现大量英文残留,可按 README 从 app.asar 重新提取基准:

node tools/extract.mjs "<DSH 安装路径>\resources\app.asar"
npm run build

适用场景与注意

适合谁: 日常使用 DSH Web/桌面客户端、界面语言不在内置中英之列、又希望避免改 asar 的开发者或用户。需要 繁体中文 界面时,应选 zh-TW(本包未列出简体 zh 作为独立社区包语言项;内置中文仍由客户端 bundle 提供)。

安全与信任: 插件与 DSH 同进程运行,bundle 会在启动时注入客户端组合。安装前请自行审阅 elims777/dsh_languages 源码与 MIT 许可证。

故障提示(来自 README): 部分字符串仍为英文,多为新版本 DSH 新增 key,需 extract 后补译并 npm run build。账户面板显示「数据暂不可用」通常与 platform.deepseek.com 请求失败有关,非本地化问题。安装后出现空白屏,应暂时从 dsh.profile.bundles 移除 dsh_languages 并反馈 issue(附 DSH 版本)。

结尾

dsh_languages 把 14 种社区语言收进一个 DSH 客户端插件,依托 ctx.locale 官方扩展点,实现「装插件、选语言」的界面本地化路径。目录与源码:

  • 社区目录页:https://www.skillhub.cn/plugins/elims777/dsh_languages
  • GitHub:https://github.com/elims777/dsh_languages
羽毛球分组比赛记分
小程序二维码

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

Xiaoye