DeepSeek Harness Hub
← 返回列表

rbstxt/dsh-locale-ja

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

这是一个将 DeepSeek Harness DSH 的 Web GUI 日语化的语言包插件。

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/13 · 已提供中文文档

DeepSeek Harness Web GUI 的日语(ja)语言包插件

综合分
29.6
GitHub 分
29.6
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add rbstxt/dsh-locale-ja
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-locale-ja

这是一个将 DeepSeek Harness (DSH) 的 Web GUI 日语化的语言包插件。

它并非替换 en / zh,而是新增 ja 区域设置。其中收录了 in-box 客户端 UI 所拥有的 42 个命名空间 / 1257 个键。缺失译文的键会回退到 en,因此画面上不会出现原始键名。

安装

dsh plugin --profile web add file:/path/to/jpdsh

dsh plugin add 会在配置文件目录中执行 pnpm,并根据安装结果更新 dsh.profile.bundles。由于本包声明了 dsh.bundle,它会作为配置文件的一个层被集成进来。

也可以直接从 git 安装。

dsh plugin --profile web add github:rbstxt/dsh-locale-ja

安装后,在 设置 → 通用 → 语言 中选择“日本語”,或在 $DSH_HOME/settings.yaml 中写入以下内容。

locale:
preference: ja

headless 或 sdk 等不具备浏览器面的配置文件不在支持范围内。

工作原理

DSH 的插件由 bundle 和 client 两个面构成。本包也遵循这一约定。

| 面 | 声明 | 作用 |
|---|---|---|
| bundle | dsh.bundle.patch | 向配置文件插入一行 Loader 行 |
| client | dsh.client、platform: web | 将 lib/client.js 作为浏览器面进行分发 |

启动流程如下。

1. dsh plugin add 将包添加到 dsh.profile.bundles
2. cordis.patch.yml 插入 id: locale-ja 的 Loader 行
3. @deepseek-ai/dsh-client-modules 检测到 dsh.client,并将其作为 /plugins/dsh-locale-ja/client.js 分发
4. 浏览器侧的 cordis 执行 lib/client.js 的 apply(ctx)

apply 只使用 @deepseek-ai/dsh-client-locale 的语言包 API。

ctx.effect(() => ctx.locale.addLanguage({ id: "ja", label: "日本語", fallback: "en" }), "…");
for (const [ns, dict] of Object.entries(DICTIONARIES)) {
ctx.effect(() => ctx.locale.register(ns, "ja", dict), …);
}

addLanguage 注册语言的定义,register(ns, locale, dict) 注册按命名空间划分的词典。这种单一区域设置形式是语言包专用的入口,可以为既有功能所拥有的命名空间追加其他区域设置。重复判定以 namespace 和 locale 的组合为单位。所有注册都归 ctx.effect 所有,因此移除插件时 ja 也会一并消失。

宿主面的 lib/index.js 不做任何事情。它的作用仅仅是一个声明了 dsh.client 的可解析 Loader 行,不会增加模型可见的服务。

文件结构

| 路径 | 作用 |
|---|---|
| lib/client.js | 浏览器面。生成物 |
| lib/index.js | 宿主面 |
| cordis.patch.yml | bundle 补丁 |
| locales/ja.json | 合并后的日语词典 |
| translation/ | 原文的提取结果、翻译的输入输出、术语表 |
| tools/ | 提取、拆分、一致性校验、构建、验证的脚本 |

同捆包

better-sidebar-ja/ 是独立的第二个包 dsh-better-sidebar-ja。它并非针对 DSH 本体,而是将 dsh-better-sidebar 的 UI 日语化的桥接包,通过 ctx.betterLocale 存储启用侧边栏同捆的 ja 词典。由于 dsh-better-sidebar 自身只原生注册 zh / en,日语只能通过该存储解析,因此若没有它,侧边栏会以英语渲染。详情请参阅 better-sidebar-ja/README.md。

dsh plugin --profile web add file:/path/to/jpdsh/better-sidebar-ja
node better-sidebar-ja/tools/verify.mjs

维护

当更新 DSH 本体导致 UI 字符串增加时,执行同样的步骤。

node tools/capture-dictionaries.mjs --out translation/source-en-zh.json --verbose
node tools/split-translation.mjs translation/source-en-zh.json
翻译 translation/in/part-NN.json 并写入 out/part-NN.json
node tools/consistency-pass.mjs --write
node tools/build-plugin.mjs
node tools/verify-client.mjs

capture-dictionaries.mjs 会在 VM 中加载各个 lib/client.js,取出 window.__ModuleLoader__.load 的工厂函数。然后,在模拟的客户端上下文中调用 apply(ctx),
记录 locale.register。由于 bundle 使用 Rolldown 的 __toESM 辅助函数自行组装模块的
命名空间,因此 harness 使用会公开 bundle 中所有标识符的代理,
以免 react.memo 这样的具名导出消失。

build-plugin.mjs 会验证命名空间、键集合和占位符,若有缺失或多余
则中止构建。译文遗漏在画面上只会表现为回退到英文,
因此在构建时让其失败更安全。

验证

node tools/verify-client.mjs
ok: 日本語 (ja), 42 namespaces, 1257 keys, 44 owned effects

按照与生产环境相同的契约,即 __ModuleLoader__.load → factory(require) →
apply(ctx) 的顺序执行生成的 bundle,并确认注册内容与 locales/ja.json 一致。

使用隔离的 DSH_HOME,即可在不污染本地环境的情况下进行集成确认。

DSH_HOME=/tmp/dsh-ja-test dsh plugin --profile web add file:$PWD
printf 'locale:\n  preference: ja\n' > /tmp/dsh-ja-test/settings.yaml
DSH_HOME=/tmp/dsh-ja-test dsh web --port 3081 --no-open

使用无头 Chrome 能够确认的范围如下。

- 设置了
- 侧边栏、设置的所有标签页、插件列表、引导流程均以日文显示
- 不含日文的行中不残留未翻译的英文字符。插件 ID 和模型名等标识符除外

验证时的截图

字体

该插件还会设置面向日文的字体。DSH 的排版全部
集中在 --dsw-font-family 和 --ds-font-family-code 这两个变量上,因此只需覆盖这两个
即可切换整个 GUI。实际加载的字体栈如下。

| 用途 | 首位 | 后续回退 |
|---|---|---|
| 无衬线 | Noto Sans JP | Noto Sans CJK JP、Hiragino Sans、Yu Gothic、Meiryo、DSH 默认的顺序 |
| 等宽 | Geist Mono | SF Mono、JetBrains Mono、Fira Code、Consolas、Menlo、DSH 默认的顺序 |

字体仅按名称指定本地已安装的字体,不获取 Web 字体。
即使在未安装 Noto Sans JP 的环境中,也将日文字体系列排在前面,
以免日文以中文字体显示。

--dsw-font-family 由主题在 :root 中定义,因此覆盖在 html:root
(优先级高一级)上应用。不依赖于样式标签的插入顺序。

翻译方针

译词表位于 translation/GLOSSARY.md,机械性规则位于 tools/consistency-pass.mjs。

- 按钮和标签使用名词结句
- 不修改 {placeholder}。省略号为 …
- 英文字母与日文之间使用 1 个半角空格。数字与量词相连。例如 {n}件、1回
- 时间单位用日文书写。例如 {seconds}秒、{n}日。token 的单位保持原拼写。例如 {value} tok、{value}K
- API、JSON、CLI、Diff、Schema、TTFT 等技术术语和产品名保持原拼写

限制

- 受 @deepseek-ai/dsh-client-locale 侧的限制,注册时引入的文案在切换语言后不会跟随变化。通过 slot 渲染的文案会即时切换。
- 仅翻译客户端 UI 的文案。插件 ID、模型 ID、命令名、文件路径、宿主返回的错误码属于标识符,因此不翻译。
- 当 DSH 本体版本升级、命名空间或键增加时,需要重新执行上述步骤。未翻译的键将以英文显示。

许可证

MIT

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

💬 加入 DPharness 群聊

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

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