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.

或使用命令行安装(适合开发者)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

上一个 Prev dsh-cultivation 下一个 Next dsh-client-ui-shortcuts