← 返回列表
⚠ 装前注意
语言: 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
扫码进群