DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-locale-ru

B

dsh-locale-ru

Manifest valid

Russian language for DeepSeek Harness: 2615 lines of web interface + 165 lines of shell (menu, tray, dialogs, login window)

UI (client)hasBundlePatchMachine translated

dsh-locale-ru — русский язык для веб-интерфейса DeepSeek Harness

Клиентский плагин DSH: добавляет в веб-интерфейс язык «Русский» и словари перевода для всех пространств имён, которые поставляет DSH.

  • 2615 строк в 58 пространствах имён — это все словари английского и китайского интерфейса, извлечённые из установленного DSH 0.2.0-rc.2 (locales/source-en.json).
  • Непереведённые строки (например, из более новой версии DSH) автоматически остаются английскими: у языка объявлена цепочка отката ru → en.
  • Плагин не содержит зависимостей и не требует сборки: браузерная половина — один самодостаточный файл lib/client.js.

Состав

ФайлНазначение
package.jsonМанифест: dsh.client (браузерная половина), dsh.bundle (patch для установки как набора), exports["./client"]
lib/index.jsХостовая половина: пустой apply, нужна только чтобы у пакета была строка в Loader
lib/client.jsСобранный браузерный бандл: определение языка + все словари (window.__ModuleLoader__.load)
locales/ru.jsonИсходник перевода: пространство имён → ключ → русский текст
locales/source-en.jsonАнглийский/китайский источник, по которому сделан перевод (для проверки и дообновления)
locale/en.json, locale/ru.jsonОтображаемые название и описание плагина на странице «Плагины»
cordis.patch.ymlPatch-слой набора: вставляет собственную строку плагина
tools/build-client.mjsСобирает lib/client.js из locales/ru.json
tools/verify.mjsАвтономная проверка: манифест, хостовая половина, загрузка бандла, регистрация языка и словарей, покрытие источника, совпадение подстановок {...}
tools/install.mjsУстановка/удаление в профиле DSH одной командой
tools/extract-dictionaries.cjsИзвлекает словари из установленного DSH (после обновления DSH)

Установка

Плагин — обычный локальный модуль (не набор из npm), поэтому установка сводится к копированию папки в профиль и одной строке в пользовательском patch-файле профиля.

# из этой папки; по умолчанию профиль "desktop"
node tools/install.mjs --dry-run   # посмотреть, что будет сделано
node tools/install.mjs             # установить

Скрипт:

  1. копирует пакет в <DSH_HOME>\profiles\<профиль>\plugins\dsh-locale-ru;

  2. добавляет в <DSH_HOME>\profiles\<профиль>\cordis.patch.yml (с резервной копией cordis.patch.yml.before-locale-ru):

    - insert:
        - id: locale-ru
          name: './plugins/dsh-locale-ru/lib/index.js'
    

Путь внутри insert-строки разрешается относительно самого patch-файла, поэтому pnpm install и зависимости профиля не нужны.

Вручную

# <DSH_HOME>\profiles\desktop\cordis.patch.yml — добавить в конец
- insert:
    - id: locale-ru
      name: './plugins/dsh-locale-ru/lib/index.js'

Из git (без архива и без npm)

Страница «Плагины» принимает git-адрес, tarball, абсолютный локальный путь или имя пакета: вставьте адрес репозитория в «Добавить плагин», и DSH установит пакет как набор, который потом можно включать и выключать там же.

Публикация собственного репозитория — tools\publish-github.cmd <адрес репозитория>: скрипт добавит origin, запушит ветку main, поставит тег v1.0.0 и напомнит про релиз с архивом. Репозиторий должен существовать и быть пустым; вход в GitHub подтверждается в окне Git Credential Manager.

Включение языка

Настройки → Общие → Язык → «Русский». Выбор запоминается в настройках DSH.

Профильный HMR перечитывает конфигурацию сам, поэтому перезапуск хоста не нужен; если язык не появился — обновите страницу (F5).

Удаление

node tools/install.mjs --remove

Обновление перевода после обновления DSH

# 1. что изменилось в установленном DSH
node tools/extract-dictionaries.cjs --check

# 2. переизвлечь источник (при необходимости)
node tools/extract-dictionaries.cjs

# 3. дополнить locales/ru.json новыми ключами и пересобрать бандл
node tools/build-client.mjs
node tools/verify.mjs

Меню окна («Application» / «Edit»)

Это единственное место интерфейса, которое живёт вне веб-словарей, и оно разделено на две части:

ЧастьКто рисуетПереводится плагином?
Подписи «Application», «Edit» в строке заголовка (Windows)десктоп-оболочка, вставляя меню-бар прямо в страницу (shadow DOM, lib/preload-app.cjs)да — пакет переписывает подписи и aria-label, пока активен русский
Пункты внутри («Undo», «Redo», «Cut», «Copy», «Paste», «Delete», «Select All», подменю «Application»)главный процесс оболочки — это нативное меню Electron (Menu.popup, lib/main.js)нет — из страницы до него не достать

У оболочки свой словарь ровно на два языка (165 строк, английский и китайский, lib/main.js и два preload-скрипта), и её функция выбора языка принимает только zh и en:

// lib/main.js
function resolveDesktopLocale(locale) {
  return locale.toLowerCase().startsWith("zh") ? { id: "zh-CN", messages: zh } : { id: "en", messages: en };
}

Поэтому при выбранном русском (locale.preference = "ru") оболочка откатывается на английский: пункты нативных меню, меню в трее, системные диалоги, экраны приветствия и обновления остаются английскими. Это ограничение приложения, а не пакета: чтобы их перевести, DSH должен сам поставлять русскую таблицу для оболочки. Пакет переводит то, что доступно из страницы, — подписи меню-бара.

Карточка в панели «Плагины»

Пакет регистрирует себя в боковой панели «Плагины» (слот plugins.item): карточка «Русский язык» с кратким описанием, а на её странице — что переведено, как устроен перевод оболочки и какие есть ручные команды. Запускать оттуда ничего не нужно: перевод оболочки пакет готовит сам (см. ниже).

Полный перевод оболочки (патч приложения)

Оболочка приложения (меню окна, трей, диалоги, окно входа, экраны обновления) содержит свой словарь только на английском и китайском, поэтому её перевод дописывается прямо в установленное приложение — в три файла внутри app.asar:

ФайлЧто переводит
lib/main.jsпункты меню окна, меню в трее, системные диалоги (выход, фоновая работа), экраны обновления и ошибок запуска, выбор языка
lib/preload-app.cjsподписи меню-бара «Приложение» / «Правка»
lib/preload-welcome.cjsокно входа и приветствия

Что происходит само:

  1. При запуске хостовая половина пакета (lib/index.js) проверяет архив приложения; если русского словаря там нет, она готовит исправленный архив рядом (app.asar.locale-ru.new). Это обычная запись файла — приложение продолжает работать как обычно.
  2. Лаунчер (launch-dsh-ru.vbs) применяет подготовленный архив тогда, когда приложение ещё не запущено, и затем запускает DeepSeek Harness. Поэтому после обновления DSH достаточно запускать приложение как обычно — перевод вернётся сам.

Чтобы это работало, ярлыки DeepSeek Harness должны указывать на лаунчер:

# один раз; исходные ярлыки сохраняются рядом как *.lnk.before-locale-ru
pwsh -File dsh-locale-ru\tools\install-launcher.ps1
# откат ярлыков
pwsh -File dsh-locale-ru\tools\install-launcher.ps1 -Restore

Ручные способы (если ярлыки менять не хочется):

.\apply-shell-ru.cmd      # применить сразу (DeepSeek Harness должен быть закрыт)
.\watch-shell-ru.cmd      # сторож: применит в момент закрытия приложения
.\restore-shell-ru.cmd    # вернуть исходный app.asar

Сторож — тот же скрипт в режиме --swap-when-free: он проверяет подготовленный архив, а затем каждые 2 секунды пытается его подменить, пока Windows не отдаст файл (то есть ровно в момент выхода приложения). По умолчанию ждёт 12 часов; результат виден в окне и в shell-patch.log.

Скрипт осторожен по устройству: каждая правка — замена точного фрагмента текста, который обязан найтись, иначе ничего не меняется; пересобранный архив проверяется побайтово по всем записям (меняться могут только три файла), а каждый исправленный файл проходит node --check. Исходный архив сохраняется рядом как app.asar.before-locale-ru.

Важно: обновление DSH заменяет app.asar и возвращает английский. Пакет подготовит патч заново, лаунчер применит его при следующем запуске. Это неофициальный патч файлов приложения, поэтому он не заменяет исправление на стороне DSH (оболочке не хватает русской таблицы).

Совместимость

Не включайте пакет одновременно с другой русской локализацией DSH (например, с одноимённым плагином из npm от другого автора): язык ru регистрируется один раз, и второй плагин не загрузится. Если русский язык уже есть в «Настройки → Общие → Язык» до включения пакета — сначала отключите другой плагин.

Ограничения

  • Строки до загрузки плагинов. Экран загрузки самого веб-оболочки (Loading plugins…, Failed to load plugins) зашит в бандл оболочки и плагином не переводится — он виден доли секунды при первом открытии страницы.
  • Нативные меню оболочки. Пункты меню окна, меню в трее, системные диалоги, экраны приветствия и обновления переводит сама оболочка, и у неё есть только английский и китайский (см. раздел выше). Подписи самого меню-бара пакет переписывает из страницы.
  • Текст, который держит реестр хоста. Описания слэш-команд и подобный текст регистрируются на стороне хоста парами {en, zh} и разрешаются вне словарей клиента, поэтому для них показывается английский вариант.
  • Нет правил множественного числа. Система локализации DSH не поддерживает склонения по числам, поэтому строки со {count} переведены нейтральными конструкциями вида «Файлы ({count})», «Выбрано: {count}».
  • Медиа и кнопки сторонних библиотек (например, подписи в просмотрщике PDF) могут остаться английскими.
  • Плагин не переводит ответы модели и системные подсказки — только интерфейс.

Проверка

node tools/verify.mjs

Скрипт загружает lib/client.js так же, как это делает браузерная система модулей, монтирует плагин на подставной ctx и проверяет: идентификатор строки модуля совпадает с именем пакета, бандл самодостаточен, язык ru зарегистрирован с откатом на en, все 58 пространств имён зарегистрированы, все 2615 ключей источника переведены и множества подстановок {...} совпадают с английскими.

Comments

Loading…

Similar plugins

deepseek-harness-locale-ru

by warment

Русский язык для DeepSeek Harness web UI — one-command install, 1061 строка, 100% покрытие

Security & AuditManifest valid

★ 4

MIT

JavaScript

Aug 30, 2026

dsh plugin --profile web add deepseek-harness-locale-ru

by AbsoluteMikhail

Полная русская локализация веб-интерфейса DeepSeek Harness

Security & AuditTerminal & ClientsManifest valid

★ 3

MIT

TypeScript

Sep 19, 2026

dsh plugin --profile web add @absolutemikhail/dsh-locale-ru

by Ragnoryok1

Russian (ru) language pack for the DeepSeek Harness web GUI - installable hybrid dsh.bundle + dsh.client plugin.

Manifest valid

★ 2

MIT

TypeScript

Sep 28, 2026

dsh plugin --profile web add @ragnoryok1/dsh-client-locale-ru

by azizemreozturk

Turkish (tr) language pack for DeepSeek Harness web UI

Terminal & ClientsManifest valid

★ 0

MIT

JavaScript

Sep 10, 2026

dsh plugin --profile web add dsh-locale-tr
dsh-russian-lang

No screenshots

by GooDAnDReaDY

100% русская локализация и Smart UX для DeepSeek Harness (DSH v0.1.5-rc.1+): 5765 ключей (ядро + 40+ плагинов), единый дизайн настроек dsh-clinebot, экспорт в Markdown, инлайн-перевод, живая типографи

Themes & SkinsManifest valid

★ 32

↓ 5.7k/wk

MIT

Python

Oct 10, 2026

dsh plugin --profile web add @goodandready/dsh-russian-lang

by ara-hwang

Korean (ko) language pack for the DeepSeek Harness desktop and web GUI: 2,412 strings across 56 namespaces, plus the tooling that extracts, translates, verifies and rebuilds them.

Development & InfrastructureTerminal & ClientsManifest valid

★ 0

MIT

JavaScript

Oct 5, 2026

dsh plugin --profile web add dsh-ko-locale