dsh-client-locale-ru
Manifest validRussian (ru) language pack for the DeepSeek Harness web GUI - installable hybrid dsh.bundle + dsh.client plugin.
@ragnoryok1/dsh-client-locale-ru
In English. Russian (ru) language pack for the DeepSeek Harness web GUI (dsh). It registers ru as a selectable client language through the locale service (ctx.locale.addLanguage) plus one dictionary per namespace — 52 namespaces, 2,304 strings, built against dsh 0.1.7-rc.2. Install with dsh plugin --profile web add @ragnoryok1/dsh-client-locale-ru, then pick Русский in Settings → General. Missing keys fall back to English, so a newer harness keeps working. The scope is the harness's own client interface only — third-party plugin dictionaries are deliberately out of scope, and 11 of the 17 most-downloaded ecosystem plugins ship no strings of their own, so they are already Russian through these namespaces. MIT, community-maintained, not affiliated with DeepSeek. Details below are in Russian.
Как это выглядит
Русский в списке языков и переведённые разделы настроек (снимки сделаны в текущей сборке 0.1.7-alpha.2):


На втором снимке единица счёта показана в том виде, в каком она была в 0.1.4 («187 плагины») — в 0.1.5 исправлено на «187 плагинов».
Русская локаль (ru) для веб-интерфейса DeepSeek Harness (dsh).
Плагин добавляет русский как выбираемый язык через контракт языковых пакетов локали: ctx.locale.addLanguage({ id: 'ru', label: 'Русский', fallback: 'en' }) и по ru-словарю на каждый namespace. После выбора Русский в Settings → General интерфейс переключается сразу.
Установка
Это гибридный плагин (dsh.bundle + dsh.client), поэтому он ставится как обычный профиль-бандл через dsh plugin:
dsh plugin --profile web add @ragnoryok1/dsh-client-locale-ru
Дальше при следующем старте dsh web в настройках появится Русский. Отдельно pnpm add в собранный dsh web не нужен — плагин тянет штатную локаль через сервис locale.
Почему гибрид
dsh web берёт клиентские (UI) плагины только из workspace-пакетов, а внешний npm-пакет с одним dsh.client не подхватывается. Чтобы внешний плагин с UI-частью был устанавливаемым, он должен объявлять dsh.bundle (профиль-слой), чей cordis.patch.yml через - insert: добавляет клиентскую строку locale-ru в браузерный ростер. Так устроены и другие сторонние плагины (например @zseven-w/dsh-android).
Как это работает
- Хост-половина (
lib/index.js) — пустойapply(): языковому плагину не нужна серверная логика, она лишь даёт корректную cordis-строку для Loader. - Браузерная половина (
lib/client.js) — регистрируетruи словари через сервисlocale(инжект изctx). Рантайм-импортов фреймворка нет — только сервис. - Рантайм-зависимостей нет —
lib/client.jsне импортирует другие пакеты, поэтому не тянет тяжёлых зависимостей. - Эффекты — язык и словари регистрируются через
ctx.effect(...), поэтому выгружаются вместе с плагином (HMR-безопасно). - Плюралы — контракт локали не несёт правил плюрализации (нет ICU/
Intl.PluralRules), и компоненты выбирают форму какcount === 1 ? 'ключ.one' : 'ключ.other'. Русский язык требует трёх форм дляn ≥ 2(2 задачи / 5 задач), поэтому одна строка.otherне может быть верной всегда. Пакет решает это без изменения апстрима:.one(это ровноn = 1) содержит естественную форму, а.other— конструкцию, корректную при любомn ≥ 2(«Субагентов: 3», «Фоновых задач: 5») или инвариантное сокращение («каждые 2 ч», «ещё 3 стр.»). Ни одна видимая строка не показывает неверную форму числа. - Фолбэк — отсутствующий русский ключ падает на
en(настроенныйfallback).
Типографика
Пакет приводит уже отрисованный русский текст к типографским правилам: «ёлочки» вместо
прямых кавычек, длинное тире вместо дефиса между словами, многоточие вместо трёх точек и
неразрывный пробел между числом и следующим словом или единицей измерения (чтобы «187
плагинов» не разрывалось на две строки). Правила намеренно осторожны: срабатывают только
на однозначных шаблонах, а код, поля ввода, редактируемый текст и элементы с
data-typography="off" не трогаются вообще. Повторный проход ничего не меняет.
Правила проверяются скриптом, а не на глаз: npm run check:typography.
Проверки
npm run build # сборка трёх выходов
npm run check:typography # 12 правил типографики, включая «не трогать»
npm run audit -- <дерево харнеса> # аудит локали
npm run verify -- <дерево харнеса> # всё вместе
Аудит выполняется в CI (.github/workflows/verify.yml) против закреплённого тега
харнеса, а не против случайного локального чекаута. Гейтом проверяются две вещи, и обе
уже ловили настоящие дефекты:
- мёртвые namespace — каждый namespace, который регистрирует пакет, обязан
существовать в харнессе. В 0.1.6 переводы каталога расписания были зарегистрированы
под именем
schedule.manager, тогда как читает ихschedule.catalog: проверка покрытия по ключам при этом рапортовала «всё переведено»; - пары форм числа — множества
.one/.otherдолжны совпадать, потому что клиент выбирает форму какcount === 1 ? '.one' : '.other'.
Число покрытия выводится, но не является гейтом: точный список «добавить / удалить» требует сравнения ключей по namespace (это делает релизная оснастка), а сравнение имён ключей глобально отметило бы разделы, которые пакет сознательно оставляет на английском.
Область покрытия: только официальный интерфейс
Пакет переводит собственные namespace клиента харнеса — 52 namespace, сверенные с закреплённым тегом. Словари сторонних плагинов в область сознательно не входят, и вот почему.
Мы проверили 17 самых скачиваемых плагинов экосистемы (npm, keywords:dsh-plugin,
скачивания за месяц) и посмотрели, какие из них вообще поставляют собственные строки:
| Что обнаружено | Плагинов |
|---|---|
| Своих строк нет — интерфейс берёт текст из namespace харнеса | 11 из 17 |
| Крупный собственный словарь (подтверждено вручную) | 2 — dshmarket (~1262 ключа), @nanmicoder/dsh-agent-teams (420) |
Только типы .d.ts, строк нет | 1 — dsh-plugin-model-proxy |
| Требует отдельной проверки | 3 |
Практическое следствие: у 11 из 17 популярнейших плагинов русский интерфейс уже
работает — их текст лежит в общих namespace харнеса, которые пакет переводит полностью.
Отдельный словарь нужен только там, где плагин везёт свои строки, а такой словарь — это
обязательство следить за чужими релизами: у dshmarket уже версия 1.66.3, и её ключи
меняются независимо от харнеса.
Поэтому здесь один пакет и одно обязательство: официальный интерфейс, переведённый и проверенный, без гонки за чужими словарями. Нужен конкретный плагин — заведите issue: словарь для него возможен как отдельный слой, привязанный к версии, а не как молчаливое обещание «покрыто всё».
Разработка
pnpm install
pnpm run build # tsdown -> lib/index.js (node half) + lib/client.js (client bundle)
npm pack # -> ragnoryok1-dsh-client-locale-ru-<version>.tgz
lib/client.js собирается в формате, который понимает клиентский загрузчик dsh (__ModuleLoader__.load), и экспортирует inject/apply.
Содержимое
src/client/dicts.ts— русские словари (52 namespace, 2304 перевода, ~2700 строк). Это и есть основная ценность.src/client/index.ts— точка входа клиентского плагина (регистрацияru+ словарей).src/index.ts— пустая host-половина (apply()).cordis.patch.yml— профиль-патч (- insert:клиентской строкиlocale-ru).
Что переведено
Актуальный набор — по тегам харнеса: ключи сняты с профильного коммита, а добавленные
позже падают на en при поиске, поэтому пакет не ломает интерфейс на новых версиях.
0.1.7 — исправлен мёртвый namespace, переведён менеджер задач, переписаны числительные
Главное в релизе — исправление ошибки из 0.1.6. Тогда было записано, что namespace
schedule.catalog упразднён, а его место занял schedule.manager. На деле в харнесе
оба namespace живут и по отдельности: schedule.catalog — это каталог напоминаний в
шапке сессии с частотами и единицами, schedule.manager — новый менеджер задач
автоматизации. Из-за неверного вывода ~30 строк переводов (напоминания, частота, единицы
времени) были зарегистрированы под именем, которое никто не читает, и никогда не
показывались в интерфейсе. Теперь каталог зарегистрирован как schedule.catalog.
- исправлено: переводы каталога расписания снова видны —
trigger.*,list.*,delete.*,frequency.*,cron.*,unit.*,relative.*,mark.aria,hover.more; - добавлен
schedule.manager(188 ключей) — менеджер задач автоматизации целиком на русском: панель и каталог задач, поиск, фильтр состояний, сведения о задаче и её вкладки, журнал запусков с правилами хранения, редактор расписания (дата, время, час, минута, секунда, часовой пояс, интервал повтора), правила повтора (разово, каждые N минут/часов/ секунд, ежедневно, пн–пт, еженедельно, свой cron), cron-форма с выбором дат и минуты, удаление с подтверждением, уведомления и карточки; - числительные переписаны (17 пар ключей): формы, которые ломались на числах 2–4,
заменены на корректные при любом
n ≥ 2— например «2 субагентов» → «Субагентов: 2», «каждые 2 часов» → «каждые 2 ч». Ещё 8 строк с{count}перед склоняемым словом переведены на сокращения: «ещё 3 строк» → «ещё 3 стр.»; - добавлено 7 ключей, которые отсутствовали:
blocked.composer,defaultWorkspace.title,schedule.active,settings.transcript.expanded,status.scheduled,status.overdueи namespaceshortcuts.layout(подпись команды показа левой панели); - новая проверка в проекте: аудит имён namespace. Прежняя проверка покрытия
сверяла ключи внутри namespace, но не сверяла сами имена, поэтому целый namespace
мог быть зарегистрирован под несуществующим именем и тихо не работать. Теперь имена
извлекаются из всех способов их объявления (
const NS/SETTINGS_NS/namespace,locale.register,locale.bind,PropsLocale<…>) и сравниваются множествами.
В 0.1.2 добавлены разделы, которых не было в 0.1.1: open-in-app («Открыть в
приложении»), sidebarFiles, sidebarRight (правый сайдбар с файлами) и
sidebarCodePreview (предпросмотр кода). Также обновлены ключи, изменившиеся в
харнесе 0.1.5, и удалены 21 ключ, которых в нём больше нет.
В 0.1.3 пакет догнал харнес 0.1.6-alpha.1: добавлено 139 ключей и 7 новых
разделов — sidebarTerminal (терминал в правом сайдбаре), settings.archivedSessions
(архивные сессии) и семейство предпросмотра документов (sidebarDocumentPreview,
documentHtml, sidebarImage, documentMarkdown, sidebarPdf). Кроме этого
переведена экспериментальная «Автопроверка» (permission.access: auto.*),
подписи и токены палитры команд, поля эндпоинтов в настройках моделей и
изменения в conversation, trajectory, chat, session-log-download.
28 ключей, исчезнувших из харнеса, удалены.
Проверка покрытия выполняется по исходникам харнеса: для каждого namespace сравниваются множества ключей, поэтому следующий выпуск начинается с точного списка «добавить / проверить / удалить».
В 0.1.6 пакет догнал харнес 0.1.7-rc.2: добавлено 252 ключа, 18 обновлены, 26 удалены, добавлены два новых namespace. Изменения:
shortcuts(новый namespace, 56 ключей) — редактор горячих клавиш: запись сочетания, конфликты, зарезервированные комбинации, подсказки для macOS и Windows, восстановление значений по умолчанию;schedule.manager(70 ключей на тот момент) — менеджер задач автоматизации: список, удаление, повтор, история запусков, выражения Cron. Ошибочно было записано, что namespaceschedule.catalogпри этом упразднён; в 0.1.7 это исправлено — оба namespace существуют параллельно;settings.account(50 ключей) — первый запуск приложения: приветствие, выбор назначения и глубины показа хода работы, пополнение баланса, выход из учётной записи во время выполнения задач;- добавлены подписи добавления и удаления инструментов на ходу
(
message.tools*,trajectory.layout.*), команды правой боковой панели (sidebarRight), состояния «сначала выберите сессию» в панелях, обновлено название раздела настроек: «Инструменты для кода» вместо «Инструментов разработчика»; - 18 ключей обновлены под изменившийся английский текст, 26 удалены. Единый термин «рабочая папка» вместо «рабочей области» в одном месте.
В 0.1.5 пакет догнал харнес 0.1.7-rc.1: добавлено 49 ключей, 13 обновлены,
16 удалены, namespace directory-browser убран (в rc.1 его больше нет). Появились
подписи шагов работы инструментов (message.stepProcess.prepare.* и done.* —
чтение изображений, запись файлов, подготовка к поиску по коду, веб-поиску,
координации субагентов и другие), просмотр изображений во весь экран
(image.*), режимы показа ходов «Стандартный» и «Подробный», установка плагинов
из GitHub с таймаутом и китайским зеркалом, предупреждение о несовместимой версии
плагина, выбор источника загрузки моделей для голосового ввода и сообщения
команды Cordis. Уточнены формулировки, где upstream заменил «teammate/agent»
на «subagent», а «Beta» — на «Experimental».
Также в 0.1.5 исправлена единица счёта в инвентаре плагинов: было «187 плагины»,
стало «187 плагинов». Переведены и встроенные снимки интерфейса, добавлены npm
keywords и исправлен peer-диапазон @deepseek-ai/dsh-client-locale
(>=0.1.0-rc.2 <0.2.0) — раньше ^0.1.0 не разрешался, потому что пакет
публикуется только под prerelease-версиями.
В 0.1.4 пакет догнал харнес 0.1.7-alpha.2 — самый крупный скачок: добавлено 905 ключей, 29 изменены, 126 удалены. Новые разделы:
pluginManager— встроенная панель плагинов: установка, удаление, включение и отключение компонентов, версии, реестры и подсказки по установке;settings.account— учётная запись DeepSeek: вход, баланс, расход, API-ключ;- отдельные разделы настроек, на которые разъехался прежний
settings.plugins:settings.agentLoop,settings.shell,settings.subagent,settings.webSearch; sidebarBrowser— встроенный браузер в правой панели (адрес, песочница, восстановление страницы);sidebarExcelиsidebarOffice— предпросмотр таблиц и документов Office; масштабирование (zoom.*) добавлено в PDF и изображения;voice-input— экспериментальный голосовой ввод.
Также переведены новые тексты в conversation (+194), chat (+53),
workspace (+43: архив сессий, закрепление), deliverables (+31: обзор
изменений хода), job (+24: живой вывод фоновых задач), settings (+22:
обновление десктопного приложения), plan, open-in-app, trajectory,
model, reference, session-log-download и в руководствах по режимам
агента (settings.agentPreset, 12 длинных текстов). Раздел
settings.archivedSessions удалён: в 0.1.7 upstream убрал этот пакет, а архив
сессий переехал в workspace.
Лицензия
MIT
История изменений
CHANGELOG.md — что было в каждом выпуске.
Comments
Loading…
Similar plugins
by Dragonk
Polish (Polski) language pack for the DeepSeek Harness web UI — a community DSH client plugin adding pl to Settings → General → Language.
★ 0
MIT
JavaScript
Sep 11, 2026
dsh plugin --profile web add dsh-locale-plby warment
Русский язык для DeepSeek Harness web UI — one-command install, 1061 строка, 100% покрытие
★ 4
MIT
JavaScript
Aug 30, 2026
dsh plugin --profile web add deepseek-harness-locale-ruby azizemreozturk
Turkish (tr) language pack for DeepSeek Harness web UI
★ 0
MIT
JavaScript
Sep 10, 2026
dsh plugin --profile web add dsh-locale-trby GooDAnDReaDY
100% русская локализация и Smart UX для DeepSeek Harness (DSH v0.1.5-rc.1+): 5765 ключей (ядро + 40+ плагинов), единый дизайн настроек dsh-clinebot, экспорт в Markdown, инлайн-перевод, живая типографи
★ 17
↓ 2.5k/wk
MIT
Python
Sep 27, 2026
dsh plugin --profile web add @goodandready/dsh-russian-langby grstein
Pacote de idioma Português (Brasil) para a GUI Web do DeepSeek Harness
★ 0
MIT
JavaScript
Aug 31, 2026
dsh plugin --profile web add @grstein/dsh-locale-ptbrby DshMarketPlace
Browse and install DSH plugins from inside DeepSeek Harness. /store, a settings tab, and agent tools — bilingual.
★ 7
↓ 355/wk
MIT
JavaScript
Aug 28, 2026
dsh plugin --profile web add dshmarketplace-plugin