DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

shwili /

shwili/dsh-plugin-market-zh

Verified

为多个 DSH 插件市场索引源生成本地中文机翻镜像,在「插件 → 发现」里用中文浏览。

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHubProject homepage
READMESource: main@3271656c

dsh-plugin-market-zh · DSH 插件市场汉化

把 DSH 接入的多个插件市场索引源,在本地机翻成中文镜像,直接显示在「插件 → 发现」里。源还是原来的源,只是标题、分类、标签和描述补成了中文,不用再对着满屏英文猜。

起因

给 DSH 接插件索引源之后,我发现一个问题:里面一大半是英文。看不懂,就判断不了这些源接得对不对、插件选得好不好。纠结了一阵,干脆换个思路——让 DS 做一个机翻的本地镜像:源还接原来的源,只把中文补齐,在本地起个服务给「发现」页读。于是有了这个插件。

它做了什么

  • 本地镜像:为每个上游索引开一条本地路由,/plugin-market-zh/index/<id>.json 返回中文版索引(格式 1,结构与上游一致)。上游不用改,也不对外发布任何东西。
  • 补中文,不覆盖中文:插件包名保留原文;索引里已有的中文原样保留;只有缺中文的标题、分类、标签、描述才走机翻。
  • 聚合去重:额外注册一个「全部索引源 · 中文」市场,把各来源按包名合并,同一插件的版本取并集,重复来源只留一份。
  • 零配置可用:默认内置 6 个公开索引源,启用后自动注册为市场来源;停用或卸载时自动移除。

实测效果

2026-10-23 在 DSH Desktop(Windows 10,中文界面)实测:

市场(镜像标题) 插件数
Awesome DSH Plugin 插件精选 · 镜像 3,261
DSH 插件索引 · 镜像 7,413
Bruce 的精选插件 · 镜像 1,000
DSH 插件健康索引 · 镜像 300
vlln 的 dsh 插件 · 镜像 9
贾维斯机制插件族(六插件) · 镜像 6

聚合市场「全部索引源 · 中文」:6 个来源合计 11,989 条记录,按包名去重后 8,233 个插件(重合 3,756 条)。机翻描述 5,452 条(4,911 + 541),检查时待译 0。

数字是快照,上游索引一直在变,重开后会跟着上游更新。

安装

克隆到本地任意目录:

git clone https://github.com/shwili/dsh-plugin-market-zh.git

在 DSH profile 的 package.json 里挂上这个包,并加进 bundles(以 Windows 路径为例,换成你的实际路径):

{
  "dependencies": {
    "dsh-plugin-market-zh": "link:D:/path/to/dsh-plugin-market-zh"
  },
  "dsh": {
    "profile": {
      "bundles": [
        // ...原有条目
        "dsh-plugin-market-zh"
      ]
    }
  }
}

重启 DSH,在「设置 → 插件」里启用。插件通过 inject 等待 webServer 与 pluginMarket 两个 Host 服务就绪后才激活,所以 bundles 里的顺序不影响加载。

使用

  1. 打开「插件」→「发现」。市场菜单第一个是「全部索引源 · 中文」,后面是每个来源各自的中文镜像。
  2. 首次启用会并行预取所有索引,再按来源顺序串行机翻。大来源(7,000+ 条)要几分钟,期间部分内容仍是英文,刷新后补齐。
  3. 诊断:http://127.0.0.1:<端口>/plugin-market-zh/status.json,端口就是当前 Web GUI 的端口(例如 63499)。

如果自动注册市场来源失败(status.json 里 registered.sources=false),可以在「发现 → 市场菜单 → 管理索引来源…」里手动添加 sources[].mirrorUrl,或者聚合地址 http://127.0.0.1:<端口>/plugin-market-zh/all.json。

默认索引源

市场 上游索引
Awesome DSH Plugin https://dshmarket.com/index.json
DSH 插件索引 https://realoiyo.github.io/dsh-plugin-market/index.json
Bruce 的精选插件 https://bruc3van.com/dsh-plugins/index.json
DSH 插件健康索引 https://easonmws.github.io/dsh-plugin-health/index.json
vlln 的 dsh 插件 https://raw.githubusercontent.com/vlln/plugin-registry/main/index.json
贾维斯机制插件族 https://raw.githubusercontent.com/weft-audit/dsh-market/main/plugin_index.json

dshmarket.com 是 dsh-plugin-catalog 自带的索引域名;cdn.jsdelivr.net/npm/dsh-plugin-catalog/index.json 与 awesome-dsh-plugin.com/index.json 是同一份目录的镜像,内容相同,所以没有重复添加。默认用 dshmarket.com 是因为 jsDelivr 在本机网络下出现过间歇性连接失败。

dsh.so、dsh.directory、DSH Get、OMDSH Hub 等也提供插件数据,但不是格式 1 索引,不能直接作为市场来源;要接需要单独的转换器。dsh.works/awesome-dsh-plugins 是另一个英文索引,默认不镜像,需要的话加进 sourceUrls 即可。

工作方式

  • 每个来源预取一次上游索引,校验格式 1,解析图标(相对路径按上游 URL 解析;http: 图标因为镜像域名不同会被丢弃),再逐条补中文,生成内存文档并写入本地翻译缓存。
  • 翻译优先走 Host 的 translator 服务(匿名 Bing 通道);该实验服务未挂载时,直连同一个 Bing Edge 匿名端点。多个来源共用一条串行队列,避免同时压满匿名端点;失败后按冷却时间重试。
  • 缓存按来源分开:$DSH_HOME/cache/plugin-market-zh/translations-<hash>.json。已存在的中文不会被覆盖,只补缺失的部分。
  • 聚合用 mergeMarketDocuments:按包名去重,版本取并集,标题/描述优先保留中文,分类/标签/排序键加 s<slot>: 命名空间,避免不同目录的同名 id 冲突。
  • 只在本地起 HTTP 路由,不向模型发请求,不记录会话事件。翻译文本只发往匿名翻译端点,且只缓存在本地。

HTTP 路由

路由 说明
GET /plugin-market-zh/index/<id>.json 单个来源的中文镜像,id 是上游 URL 的 SHA-256 前 10 位
GET /plugin-market-zh/index.json 第一个来源的别名(兼容旧地址)
GET /plugin-market-zh/all.json 全部来源聚合去重后的中文市场
GET /plugin-market-zh/sources.json 各来源的信息:上游 URL、镜像 URL、标题、插件数、翻译进度、注册状态
GET /plugin-market-zh/status.json 诊断:路由/来源注册状态、服务挂载情况、翻译通道与统计
POST /plugin-market-zh/reconcile 重新注册市场来源(插件自己调用,带进程内随机令牌)
POST /plugin-market-zh/remove-source 移除所有镜像来源(同上,带令牌)

配置

在 cordis.patch.yml 的 plugin-market-zh 行里配置:

键 默认值 含义
sourceUrls 上表 6 个索引 要镜像的索引列表,按顺序注册为市场来源
sourceUrl — 旧版单来源配置,没有 sourceUrls 时使用
aggregate true 是否额外注册「全部索引源」聚合市场
maxSources 8 最多镜像多少个来源
targetLanguage zh 目标语言,zh/zh-CN 映射为简体
provider bing 匿名翻译通道;google 在部分网络不可达
transport auto auto 优先 Host 服务、缺失时直连;也支持 service、direct
translateTitles false 是否翻译插件标题(默认保留包名/品牌名)
autoTranslate true 后台继续翻译未命中的描述
warmupOnStart true 启动预取完成后立即开始后台翻译
translateFirst 80 每个来源首次请求同步翻译的条数
prefetch true 启动时预取所有索引
autoRegister true 自动把镜像地址加入市场来源
removeSourceOnDispose true 停用/卸载时移除所有镜像来源
batchChars 3200 单次翻译请求的最大字符数
maxBatchItems 18 单次翻译请求的最大条数
requestTimeoutMs 60000 上游索引请求超时
translateTimeoutMs 5000 单次翻译请求超时
initialTranslateBudgetMs 6000 首次请求里同步翻译的时间预算
routeWaitMs 9000 镜像路由等待预取的最长时间(避免拖过市场服务的 15 秒期限)
aggregateWaitMs 8000 聚合路由等待各来源就绪的预算
documentTtlMs 600000 每个来源内存文档的刷新间隔
maxSourceBytes 67108864 单个上游索引的大小上限(64 MB)
warmupChunk 120 后台每批补译的条数
warmupPauseMs 250 后台两批补译之间的停顿

已知限制

  • 机器翻译质量有限,仅供浏览;安装插件前请以插件主页和仓库为准。
  • 匿名翻译端点由第三方提供,可能限流或变更;失败时保留英文原文,并按冷却时间重试。
  • 上游索引会变,README 里的数字只是 2026-10-23 的快照。
  • 首次启用后的后台翻译需要几分钟;大索引在慢网络下预取可能超时(内置市场服务对单个来源有 15 秒读取期限)。
  • 多个来源的文档同时驻留内存(原始 JSON 约 15–30 MB;聚合文档约 13 MB),内存占用高于单个来源。
  • 汉化来源之间仍有重叠(realoiyo 与 dshmarket/bruc3van 收录同一批插件)。聚合按包名去重,但各目录自己的分类体系会保留,因此会看到两个「工具与能力」这类相似但来源不同的分类。
  • 中文内容依赖 Web UI 当前语言为中文:镜像同时保留 en 原文,英文界面下显示原文。
  • 纯技术标识(例如 env ↔ JSON)会被翻译服务原样返回,此时保留原文而不生成中文。
  • 翻译缓存写在 $DSH_HOME/cache,删掉它等于清空已机翻的内容,需要重新翻。

目录结构

index.js            Host 侧入口:路由注册、来源注册、聚合、诊断
lib/source.js       抓取并校验上游格式 1 索引
lib/mirror.js       生成中文镜像文档
lib/translate.js    批量机翻(Host 服务 / Bing 直连)
lib/cache.js        本地翻译缓存
lib/dictionary.js   分类、标签、排序键的中文词表
lib/localized.js    LocalizedText 的读写工具
lib/runtime.js      单个来源的运行时:预取、文档、缓存、后台补译
lib/aggregate.js    多来源按包名合并
cordis.patch.yml    插入一行 Host 插件配置
locale/zh.json      插件在市场里的中文标题与描述
locale/en.json      英文标题与描述
icon.svg            插件图标

许可证

MIT。索引内容与插件信息版权归各上游索引作者,本项目只做本地格式转换,不重新分发上游数据。

—/ 5

No ratings yet

Verified DSH bundle

Commit 3271656cc22f

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout