DeepSeek Harness Hub
← 返回列表

asd13006/dsh-multi-lang-ui

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
⚠ 装前注意

语言: English · 繁體中文 · 日本語 · 한국어 · Français · Deutsch ·…

基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/11 · 已提供中文文档

Multi-language UI plugin for DeepSeek Harness: 繁體中文 / 日本語 / 한국어 / Français / Deutsch / Español language options with hand-polished translations and automatic fallbacks

综合分
37.9
GitHub 分
37.9
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add asd13006/dsh-multi-lang-ui
未发布到 npm registry,仅可从源码安装,改用 GitHub 源安装
数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

npm 包dsh-multi-lang-ui(未发布到 npm,仅可源码安装)
Node 引擎未声明 engines.node
dsh CLI 依赖未声明 dsh 版本约束
入口文件main/exports/bin 已声明

未发布到 npm registry,仅可从源码安装

验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/19 07:35:50

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-client-locale
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-multi-lang-ui

语言: English · 繁體中文 · 日本語 · 한국어 · Français · Deutsch · Español

一个 DSH 插件,为 DeepSeek Harness Web UI 的语言选项添加多种语言——繁體中文、日本語、한국어、Français、Deutsch、Español。已知的 UI 字符串使用手工打磨的翻译(每种语言均以英文为基准翻译);任何新增 / 更新 / 第三方字符串则回退到英文(对于繁體中文,则使用运行时的简体→繁体转换器)——因此上游 UI 更新和其他插件都能被覆盖,无需为每种语言重新翻译。

功能特性

- 在“设置 → 通用 → 语言”菜单中(与内置的中文 / English 并列)添加 6 种语言:繁體中文、日本語、한국어、Français、Deutsch、Español。
- 每种语言均手工打磨翻译:每个官方 locale 命名空间都以英文基准逐字符串翻译(每种语言 700+ 条字符串)。
- 未翻译字符串的回退:上游新增或第三方插件字符串——繁體中文使用内置的简体→繁体字符表(720+ 字符)实时转换;其他语言回退到英文(官方 en 词典对每个命名空间都是完整的),因此不会出现乱码或缺失文本。
- DOM 级回退转换(仅 zh-TW):非词典内容(例如插件市场描述)在 zh-TW 模式下通过 MutationObserver 从简体转换为繁体(输入框、代码块及其他用户内容始终被排除)。
- 持久化:语言选择存储在浏览器 localStorage 中,刷新后依然保留。
- 零侵入:纯客户端插件——不修改任何上游包;若 locale 服务不可用则静默降级,不影响其他插件。

安装

推荐:从 GitHub 安装(将此链接交给 agent,或自行运行)

dsh plugin --profile web add https://github.com/asd13006/dsh-multi-lang-ui

或让 agent 安装:将此仓库链接粘贴到 DSH 中,并让 agent 运行上述命令。

安装后,重启 dsh web,然后在“设置 → 通用 → 语言”中选择你的语言。

卸载(重要):务必使用 dsh plugin remove——它会清理 profile 的 bundle 列表;手动删除包可能会留下悬空引用,导致 DSH 无法启动:

dsh plugin --profile web remove dsh-multi-lang-ui

npm 安装(发布后):

dsh plugin --profile web add dsh-multi-lang-ui

工作原理

locale translate(ns, key)
│
├─ active is one of our languages ?
│     ├─ curated translation exists (DICTS) ?  → return it
│     └─ missing (new strings / third-party plugins)
│           ├─ zh-TW  → convert the zh value via the char table
│           └─ 其他 → 回退到 en 值
└─ 其他语言 → 照常由 dsh-client-locale 处理

启动时,该插件会:

1. 为每个 locale 命名空间注册各语言词典;
2. 包装 locale.translate(精选 → 回退)和 locale.setLocale(接受我们的语言 id,写入 localStorage);
3. 将所有我们的语言添加到语言选项列表中(修补 locale 快照并触发 locale/change 以刷新设置行);
4. 包装 locale.adopt —— 内置 locale 的主机偏好会异步加载,并将 active 重置为 locale.preference ?? 浏览器语言;如果用户的偏好是我们的语言之一,则会重新断言该偏好;
5. 在 zh-TW 模式下为非词典内容启动 DOM 级回退转换(MutationObserver),在切换离开时恢复。

上游更新后我需要重新翻译吗?

不需要。 三层保护:

1. 上游新增的字符串 → 由回退机制即时覆盖;
2. 上游更改的字符串 → 精选词典保留旧值,而新增/第三方字符串仍会自动回退;当你想要完全同步时,重新生成精选词典(见下文);
3. 要完全同步精选翻译:运行一次重新生成流程 —— 无需逐字符串手动处理。

重新生成精选词典(可选)
bash
node scripts/extract.mjs    # 1. 将最新的 zh/en 词典提取到 src/zh-src/ 和 src/en/
2. 翻译 src/en/.json → src//.json(LLM 批量处理即可;键和占位符必须匹配)
node scripts/assemble.mjs                                     # 3. 重新生成 lib/client.js

检查未覆盖的简体字符(在上游/第三方更新后)
bash
node scripts/collect-chars.mjs [third-party-client.js...]   # 收集所有正在使用的简体字符
node scripts/check-missing-chars.mjs                        # 列出字符表中缺失的仅简体字符

如果报告了任何字符,请将 "简字": "繁字" 映射添加到 src/zh-tw-parts/chars.json,然后运行 node scripts/assemble.mjs。

仓库布局

dsh-multi-lang-ui/
├── package.json              # 插件清单(dsh.client.inject / bundle.patch)
├── index.mjs                 # 主机侧:空操作入口(纯客户端插件)
├── cordis.patch.yml          # 主机插件入口
├── lib/client.js             # 生成的浏览器 bundle(请勿手动编辑)
├── src/
│   ├── zh-src/               # 提取的 zh(简体中文)词典(生成的数据)
│   ├── en/                   # 提取的 en 词典(所有语言的翻译基线)
│   ├── zh-tw/ ja/ ko/ fr/ de/ es/   # 各语言的精选翻译(质量基线)
│   ├── zh-tw-parts/
│   │   ├── chars.json        # 简体→繁体字符表(zh-TW 运行时回退)
│   │   ├── simplified-only.txt  # 仅简体字符清单(维护用)
│   │   └── collected-chars.txt  # collect-chars 输出
│   └── TERMINOLOGY.md        # 术语参考(用于润色翻译时)
├── scripts/                  # extract / assemble / verify / collect / check
└── verify/                   # Playwright 端到端验证脚本

已知限制

- 一对多的简体字(例如 复 在 复制/恢复/复杂 中对应不同的繁体形式)使用单一映射(復);精选词典覆盖了主要字符串,但少数新字符串可能转换不完美。
- 语言偏好存储在浏览器 localStorage 中(按浏览器区分);对于远程浏览器,内置语言环境也是非持久化的——这是一致的设计。
- 字符表中没有的简体字会原样通过——请定期运行 check-missing-chars.mjs 并扩展该表。

安全与隐私

- 无网络流量:该插件从不发起任何网络请求(无 fetch / WebSocket / 遥测);唯一的外部 URL 是本 README 中的文档链接。
- 无数据收集:无遥测、分析或错误报告;唯一持久化的数据是 localStorage["dsh-multi-lang-ui.preference"](一个语言 id,例如 "ja")。
- 不访问敏感数据:无凭据 / 令牌 / 会话记录 / 文件系统访问;宿主侧(index.mjs)为空操作。
- 只读 DOM 转换:仅重写文本节点(无 innerHTML,无注入);输入框、textarea、contenteditable 和代码块(pre/code)始终被排除,因此输入和代码永远不会受到影响。已显示的会话消息会被转换(只读显示效果;存储的数据不变),并在切换回来时恢复。
- 零供应链风险:dependencies 为空——安装不会下载任何新内容;客户端 bundle 完全自包含(零 require);peer 依赖是 DSH 中已有的官方包。

常见问题

问:为什么 dshmarket 不显示我的插件描述?
答:市场的描述和分类来自精选的 "awesome-dsh-plugin" 注册表(data/plugins/__.yml),而非本地 package.json。一旦条目合并到该注册表中,它就会显示出来。

问:我需要在市场中发布到 npm 才能获得版本号吗?
答:不需要。已安装插件的版本从其本地 node_modules 的 package.json 中读取(GitHub 安装已经显示 v0.1.0)。npm 发布只影响 npm 搜索和普通 npm 安装。

问:上游添加新字符串时,我需要更新插件吗?
答:不需要——运行时回退会立即覆盖新字符串,包括第三方插件的简体中文字符串。当你想要最佳质量的同步时,使用 scripts/ 重新生成精选词典。

问:移除插件后 DSH 无法启动?
答:请始终通过 dsh plugin --profile web remove dsh-multi-lang-ui 移除(它会清理配置文件的 bundle 列表)。手动删除包可能会留下悬空引用,导致启动失败。
问:DSH 更新后,插件的语言消失了,或者页面显示“需要身份验证”?
答:DSH 0.1.1+ 新增了浏览器身份验证——请在终端中打开 dsh web 打印的带令牌 URL(例如 http://127.0.0.1:3080/?token=…);没有它,服务器会返回 401。如果语言仍然没有出现,请更新插件(dsh plugin --profile web remove dsh-multi-lang-ui,然后再次添加它)——插件 0.1.1+ 声明了 inject: ["locale"],并且不再依赖插件加载顺序。

许可证

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群