メインコンテンツへスキップ
G

dsh-russian-lang

goodandready/dsh-russian-lang

Russian localization for the DeepSeek Harness web UI: adds Русский as the third option in the native Settings - General - Language menu. Translates 30 core namespaces (722 keys, 100% coverage of the DSH 0.1.1-rc.2 surface) and 9 plugin namespaces (962 key

インストール

dsh plugin --profile web add github:goodandready/dsh-russian-lang

README

@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-market, better-sidebar, task-board, im-hub и другие — 9 namespace'ов, 962 ключа).
  • Добавляет «Русский» третьей позицией в родной список языков (Настройки → Общие → Язык). Выбор сохраняется штатным механизмом настроек DSH и переживает браузеры.
  • Синхронизирует <html lang="ru"> при активном русском.

Непереведённые ключи показываются по-английски (штатный fallback ядра), пустых мест в интерфейсе не появляется.

Как это работает

Реестр локалей живёт в браузере: плагин докладывает русские словари в чужие namespace'ы через ctx.locale.register(ns, 'ru', dict) — конфликт возможен только если пара (namespace, язык) уже занята, а 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 <profile>/node_modules   # обновить *-en.json
python3 check-coverage.py                         # что не переведено / устарело
python3 build.py                                  # собрать lib/client.js
python3 test/test_extract.py                      # smoke для extract-dicts/check-coverage
python3 test/smoke.py                             # E2E против запущенного стенда

Требует websocket-client (pip install websocket-client) и Chrome на /usr/bin/google-chrome для smoke.py. По умолчанию ходит на https://192.168.1.111:3082; переопределяется через DSH_URL.

Скриншоты

ЧтоФайл
Интерфейс на русскомdocs/media/ui-russian.png
Список языков в Настройки → Общиеdocs/media/language-selector.png

Скриншоты обновляются через python3 test/screenshots.py против запущенного стенда с установленным плагином.

Ограничения

  • Переводится только веб-интерфейс. Описания тулов и системные промпты агента — не locale, плагин их не трогает.
  • Плагины, которые рисуют текст инлайном без locale-слотов, не переводятся.
  • Текст, добавленный сторонним плагином без ctx.locale.register, остаётся на языке плагина — для перевода нужно обновить сам плагин.

Лицензия

MIT

関連プラグイン