DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Multi Lang Ui — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
M

dsh-multi-lang-ui

Multi Lang Ui

DSH Web UI 多語言插件:新增繁體中文/日本語/한국어/Français/Deutsch/Español 語言選項,官方介面字串逐條精譯,英文內容保持英文

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:asd13006/dsh-multi-lang-ui#e71fa6997a3b7bcaa2ff5a23fe5102faa6e69e17
README兼容性版本

兼容性与来源证明

Multi Lang Ui 以 dsh-multi-lang-ui 发布,当前版本为 0.1.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/11

版本

0.1.1stable
2026/9/11
0.1.0stable
2026/8/21

相关插件

正在加载相关插件…

最新版
0.1.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 2
周下载
0
最近提交
2026/9/11
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rClient Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。

README

dsh-multi-lang-ui

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

A DSH plugin that adds multiple languages to the DeepSeek Harness Web UI language options — 繁體中文, 日本語, 한국어, Français, Deutsch, Español. Known UI strings use hand-polished translations (each language translated from the English baseline); any new / updated / third-party strings fall back to English (or, for 繁體中文, a runtime Simplified→Traditional converter) — so upstream UI updates and other plugins are covered without re-translating every language.

Features

  • Adds 6 languages to the "Settings → General → Language" menu (alongside the built-in 中文 / English): 繁體中文, 日本語, 한국어, Français, Deutsch, Español.
  • Hand-polished translations per language: every official locale namespace is translated string-by-string from the English baseline (700+ strings per language).
  • Fallback for untranslated strings: upstream-added or third-party-plugin strings — 繁體中文 uses a built-in Simplified→Traditional char table (720+ chars) converted on the fly; the other languages fall back to English (the official en dictionaries are complete for every namespace), so no garbled or missing text appears.
  • DOM-level fallback conversion (zh-TW only): non-dictionary content (e.g. plugin-market descriptions) is converted from Simplified to Traditional via MutationObserver in zh-TW mode (inputs, code blocks and other user content are always excluded).
  • Persistence: the language choice is stored in browser localStorage and survives reloads.
  • Zero-intrusion: a pure client plugin — no upstream packages are modified; it silently degrades if the locale service is unavailable, without affecting other plugins.

Installation

Recommended: install from GitHub (give this link to an agent, or run it yourself)

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

Or let an agent install it: paste this repository link into DSH and ask the agent to run the command above.

After installation, restart dsh web, then pick your language in "Settings → General → Language".

Removal (important): always use dsh plugin remove — it cleans up the profile's bundle list; manually deleting the package can leave dangling references that prevent DSH from starting:

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

npm install (once published):

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

How it works

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
        │           └─ others → fall back to the en value
        └─ other languages → handled by dsh-client-locale as usual

At startup the plugin:

  1. Registers the per-language dictionaries for every locale namespace;
  2. Wraps locale.translate (curated → fallback) and locale.setLocale (accepts our language ids, writes localStorage);
  3. Adds all our languages to the language-options list (patches the locale snapshot and fires locale/change to refresh the settings row);
  4. Wraps locale.adopt — the built-in locale's host preference loads asynchronously and resets active to locale.preference ?? browser language; if the user's preference is one of our languages, it is re-asserted;
  5. Starts the DOM-level fallback conversion (MutationObserver) in zh-TW mode for non-dictionary content, restoring on switch-away.

Do I need to re-translate after upstream updates?

No. Three layers of protection:

  1. Upstream-added strings → covered on the fly by the fallback mechanism;
  2. Upstream-changed strings → curated dictionaries keep the old values, while new/third-party strings still fall back automatically; regenerate the curated dicts when you want full sync (below);
  3. To fully sync the curated translations: run the regeneration flow once — no per-string manual work.

Regenerating the curated dictionaries (optional)

node scripts/extract.mjs <path-to-node_modules/@deepseek-ai>   # 1. extract the latest zh/en dicts into src/zh-src/ and src/en/
# 2. translate src/en/*.json → src/<lang>/*.json (LLM batch OK; keys and placeholders must match)
node scripts/assemble.mjs                                     # 3. regenerate lib/client.js

Checking for uncovered Simplified characters (after upstream/third-party updates)

node scripts/collect-chars.mjs [third-party-client.js...]   # collect all Simplified characters in use
node scripts/check-missing-chars.mjs                        # list Simplified-only characters missing from the char table

If any are reported, add the "简字": "繁字" mapping to src/zh-tw-parts/chars.json, then run node scripts/assemble.mjs.

Repository layout

dsh-multi-lang-ui/
├── package.json              # plugin manifest (dsh.client.inject / bundle.patch)
├── index.mjs                 # Host side: no-op entry (pure client plugin)
├── cordis.patch.yml          # Host plugin entry
├── lib/client.js             # generated browser bundle (do not edit by hand)
├── src/
│   ├── zh-src/               # extracted zh (Simplified Chinese) dicts (generated data)
│   ├── en/                   # extracted en dicts (translation baseline for all languages)
│   ├── zh-tw/ ja/ ko/ fr/ de/ es/   # per-language curated translations (quality baseline)
│   ├── zh-tw-parts/
│   │   ├── chars.json        # Simplified→Traditional char table (zh-TW runtime fallback)
│   │   ├── simplified-only.txt  # Simplified-only character checklist (maintenance)
│   │   └── collected-chars.txt  # collect-chars output
│   └── TERMINOLOGY.md        # terminology reference (used when polishing translations)
├── scripts/                  # extract / assemble / verify / collect / check
└── verify/                   # Playwright end-to-end verification scripts

Known limitations

  • One-to-many Simplified characters (e.g. 复 in 复制/恢复/复杂 maps to different Traditional forms) use a single mapping (復); the curated dictionaries cover the main strings, but a few new strings may convert imperfectly.
  • The language preference lives in browser localStorage (per-browser); the built-in locale is also non-persistent for remote browsers — this is a consistent design.
  • Simplified characters not in the char table pass through unchanged — run check-missing-chars.mjs periodically and extend the table.

Security & privacy

  • No network traffic: the plugin never makes any network request (no fetch / WebSocket / telemetry); the only external URL is the documentation link in this README.
  • No data collection: no telemetry, analytics, or error reporting; the only persisted data is localStorage["dsh-multi-lang-ui.preference"] (a language id such as "ja").
  • No access to sensitive data: no credentials / tokens / session records / filesystem access; the host side (index.mjs) is a no-op.
  • Read-only DOM conversion: only text nodes are rewritten (no innerHTML, no injection); inputs, textarea, contenteditable and code blocks (pre/code) are always excluded, so typing and code are never affected. Displayed session messages are converted (read-only display effect; stored data unchanged) and restored when switching back.
  • Zero supply-chain risk: dependencies is empty — installing downloads nothing new; the client bundle is fully self-contained (zero require); peer dependencies are official packages already present in DSH.

FAQ

Q: Why doesn't dshmarket show my plugin's description? A: The market's description and category come from the curated "awesome-dsh-plugin" registry (data/plugins/<owner>__<repo>.yml), not from the local package.json. Once the entry is merged into that registry it will appear.

Q: Do I need to publish to npm to get a version number in the market? A: No. The version of an installed plugin is read from its local node_modules package.json (a GitHub install already shows v0.1.0). npm publishing only affects npm search and plain-npm installs.

Q: Do I need to update the plugin when upstream adds new strings? A: No — the runtime fallback covers new strings immediately, including third-party plugins' Simplified Chinese strings. Regenerate the curated dictionaries with scripts/ when you want best-quality sync.

Q: DSH won't start after removing the plugin? A: Always remove via dsh plugin --profile web remove dsh-multi-lang-ui (it cleans up the profile's bundle list). Manually deleting the package can leave dangling references that break startup.

Q: After a DSH update the plugin's languages disappeared, or the page says "authentication required"? A: DSH 0.1.1+ added browser authentication — open the tokenized URL printed by dsh web in your terminal (e.g. http://127.0.0.1:3080/?token=…); without it the server answers 401. If the languages still don't appear, update the plugin (dsh plugin --profile web remove dsh-multi-lang-ui, then add it again) — plugin 0.1.1+ declares inject: ["locale"] and no longer depends on plugin load order.

License

MIT