GooDAnDReaDY/dsh-russian-lang
Russian localization for the DeepSeek Harness web UI: ru dictionaries for core namespaces and a third option in the native language list (Settings - General - Language).
项目介绍Project Overview
这是 DeepSeek Harness 网页界面的俄语本地化插件:注册 30 个核心命名空间及部分第三方插件的俄语词典,在语言选择中加入“俄语”,并提供复数形式、用户译文覆盖、俄语排版、拼写检查和错键盘布局转换提示。需要把 DSH 网页界面切换为俄语时使用。注意:它不翻译工具描述、系统提示词,以及未走 locale 机制的插件内联文本。
This is a Russian localization plugin for the DeepSeek Harness web interface. It registers Russian dictionaries for 30 core namespaces and selected third-party plugins, adds “Russian” to the language selector, and provides plural forms, user overrides, Russian typography, spellcheck, and wrong-keyboard-layout conversion hints. Use it when you want the DSH web UI in Russian. It does not translate tool descriptions, system prompts, or plugin text rendered without locale slots.
请帮我了解并安装插件:【dsh-russian-lang】【https://github.com/GooDAnDReaDY/dsh-russian-lang】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add @goodandready/dsh-russian-lang
把 GooDAnDReaDY/dsh-russian-lang 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
@goodandready/dsh-russian-lang
Русская локализация веб-интерфейса DeepSeek Harness.
Что делает
- Регистрирует русские словари для namespace'ов ядра (
common,conversation,settings,settings.models,workspace,subagent,referenceи другие — 30 namespace'ов ядра, 722 ключа, 100% покрытия релизной поверхности DSH 0.1.1-rc.2) и для ряда сторонних плагинов. - Добавляет «Русский» третьей позицией в родной список языков (Настройки → Общие → Язык). Выбор сохраняется штатным механизмом настроек DSH и переживает браузеры.
- Синхронизирует
<html lang="ru-RU">при активном русском.
Непереведённые ключи показываются по-английски (штатный fallback ядра), пустых мест в интерфейсе не появляется.
Помимо словарей
- Русские plural-формы. Обёртка
translateрезолвитone/few/manyдля счётных ключей (как с суффиксом.one/.other, так и голых — черезX.one/X.few/X.many). - Пользовательские переопределения. Пространство настроек
russian-lang.overrides—{ ключ: формулировка }, применяется верхним слоем поверх словарей. - Типографика вывода (
russian-lang.typography). Идемпотентный постпроцессор текстовых узлов: кавычки-«ёлочки», тире, неразрывные пробелы после коротких слов, опциональная ё (флагyo). Код, ссылки и поля ввода не трогаются. - Орфография — браузерный
spellcheckна текстовых полях при активном русском; моноширинные поля (код, команды) исключаются. - Фикс неправильной раскладки. Если текст набран латиницей вместо
кириллицы, над инпутом появляется подсказка с превью конвертации; клик
заменяет. Конверсия кириллицы→латиницы предлагается только для
slash-команд. Ручной конверт текущего инпута —
Alt+L.
Как это работает
Реестр локалей живёт в браузере: плагин докладывает русские словари в чужие
namespace'ы через ctx.locale.register(ns, 'ru', dict). Namespace'ы, которые
плагины уже локализуют сами на русский, пропускаются (иначе загрузчик падает с
already has locale ru).
Список языков штатного селектора (Настройки → Общие → Язык) живёт в snapshot
локаль-runtime; меню строится из него, и setLocale() валидирует выбор по
нему же. На версиях ядра, где ru ещё не в списке (DSH 0.1.1-rc.2 из
коробки), плагин расширяет snapshot пунктом «Русский» — файлы ядра не
правятся. Если ядро когда-нибудь узнает ru само, расширение не происходит
и всё работает штатно. Запись выбора в настройки идёт через собственный
namespace russian-lang (хост-схема ядра знает только zh/en и не
принимает ru).
Ничего в установке DSH не патчится; удаление плагина полностью возвращает интерфейс к исходному состоянию.
Установка
dsh plugin --profile web add @goodandready/dsh-russian-lang
Затем: Настройки → Общие → Язык → Русский.
Разработка и проверка
python3 extract-dicts.py <node_modules ядра> [node_modules профиля] # обновить *-en.json
python3 check-coverage.py # что не переведено / устарело
python3 build.py # собрать lib/client.js
python3 tools/mt_fallback.py --dry-run # непереведённые ключи
python3 tools/mt_fallback.py --review # очередь ручной выверки MT
python3 tools/merge_freq.py # обновить freq-словарь для фикса раскладки
python3 tools/upstream_check.py # ночной апстрим-детектор новых ключей
python3 tools/top100.py <профиль>/node_modules # отчёт покрытия плагинов
python3 test/test_extract.py # smoke для extract-dicts/check-coverage
python3 test/smoke.py # E2E против запущенного контура
MT-переводы непереведённых ключей (mt_fallback.py --apply) пишутся в
mt-registry.json как обычные строки; ручной перевод в ru/*.json всегда
имеет приоритет. Очередь ручной выверки — upstream/review-queue.md.
smoke.py требует websocket-client (pip install websocket-client) и Chrome
на /usr/bin/google-chrome. Адрес переопределяется через DSH_URL.
Скриншоты
| Что | Файл |
|---|---|
| Интерфейс на русском | docs/media/ui-russian.png |
| Список языков в Настройки → Общие | docs/media/language-selector.png |
Скриншоты обновляются через python3 test/screenshots.py.
Ограничения
- Переводится только веб-интерфейс. Описания тулов и системные промпты агента — не locale, плагин их не трогает.
- Плагины, которые рисуют текст инлайном без locale-слотов, не переводятся.
- Текст, добавленный сторонним плагином без
ctx.locale.register, остаётся на языке плагина — для перевода нужно обновить сам плагин. - Фикс раскладки опирается на встроенный частотный словарь (~9k слов) и может не распознать редкую терминологию; ложных замен нет — только подсказка.
Лицензия
MIT
nexu-io/open-design
freestylefly/awesome-gpt-image-2
anywhere-labs/dsh-desktop
walkinglabs/learn-harness-engineering
awesome-dsh-plugin/awesome-dsh-plugin
MemTensor/MemOS