dsh-locale-ru
Russian (ru) language pack for the DeepSeek Harness web UI - 63 namespaces, 2730 strings
- Stars
- 0
- Language
- JavaScript
- Created
- Oct 20, 2026
- Updated
- Oct 20, 2026
Introduction
dsh-locale-ru
Russian (ru) language pack for the DeepSeek Harness
web UI — 63 namespaces, 2730 strings, prepared against DSH Desktop 0.2.1-rc.2 (332895e).
The pack is built on the documented external-locale API, so it needs no core changes:
ctx.locale.addLanguage({ id: 'ru', label: 'Русский', fallback: 'en' })
ctx.locale.register(ns, 'ru', dictionary)
Lookup walks ru → en per namespace, then common, then the key itself, so a key added by a
future DSH release shows English instead of a raw key.
Install
Copy the package into the profile's plugin directory and add one loader row.
<DSH_HOME>/profiles/<name>/plugins/dsh-locale-ru/
index.js client.js package.json
<DSH_HOME>/profiles/<name>/cordis.patch.yml:
- id: locale
name: '@deepseek-ai/dsh-client-locale'
config:
preference: ru
- insert:
- id: locale-ru
name: ./plugins/dsh-locale-ru/index.js
Reload the window (Ctrl+R); if the UI is still English, restart DSH. The language then also
appears in Settings → General → Language as «Русский», next to English and 中文.
Set preference to en (or drop the two rows) to go back.
What is covered
dictionaries/<namespace>.json holds { namespace, packages, en, ru } for every client-owned
dictionary: common, chat, conversation, trajectory, settings*, sidebar*, job,
question, plan, goal, pluginManager, pluginMarket, voice-input, workspace,
schedule.*, deliverables, feedback, skill, subagent, workflowRun, … See
coverage.json.
Translation notes
- Placeholders (
{count},{name},{version}, …) are kept byte-identical. - Formatting seams are preserved:
chat/message.stepProcess.sharedPrefixis""andpluginManager/sentenceSeparatoris" "— both are concatenation seams, not copy. - The locale registry has no plural rules (documented limitation), so Russian strings avoid
number agreement instead of guessing:
Файлов: {count},Ходов: {turns}, шагов: {steps}. - One glossary across namespaces: session → сессия, workspace → рабочая область, tool → инструмент, subagent → субагент, approval → подтверждение, sandbox → песочница, …
Verification
- structure: every English key exists in
ru, no extras, no empty values, placeholder sets match; - bundle: parses, registers one module
dsh-locale-ru,applyperforms exactly two effects; - host: mounts as a client row,
/plugins/…/client.jsserves it; - runtime: the shipped
LocaleRuntimeactivatesrufrom a stored preference, serves Russian, falls back to English for a missing key, interpolates parameters and lists «Русский».
Details in proposal/VERIFICATION.md.
Upstream proposal
proposal/ISSUE.md is a ready feature request asking DSH to ship ru as a
selectable language, and proposal/INTEGRATION.md describes two ways to
do it (official language pack, or folding the dictionaries into each package as a built-in locale).
License
MIT. Strings are original translations of the English dictionaries shipped in the packages listed
in coverage.json.