@ragnoryok1/dsh-client-locale-ru 0.2.15 → 0.2.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -0
- package/NAMESPACES.md +3 -3
- package/README.en.md +8 -8
- package/README.md +9 -9
- package/README.zh.md +9 -9
- package/lib/client.js +473 -531
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
## [0.2.16] — 2026-10-23
|
|
2
|
+
|
|
3
|
+
### Добавлено
|
|
4
|
+
|
|
5
|
+
- **Словарь плагина `@norman-else/dsh-claude@0.1.66` — 470 строк.** Плагин запускает
|
|
6
|
+
локальный Claude Code CLI как основную беседу внутри харнесса; своей русской локали у него
|
|
7
|
+
нет, поэтому весь его экран настроек — режимы разрешений, работа с рабочим деревом,
|
|
8
|
+
`/usage` подписки, ограничение простоя — оставался английским. Перевод лежит в namespace
|
|
9
|
+
`settings.claude-code`: термины взяты из уже переведённых словарей пакета («рабочее
|
|
10
|
+
дерево», «пул-реквест», «ревью», «раунд», «поле ввода»), а имена продуктов и команд
|
|
11
|
+
(`Claude Code`, `Jira`, `Atlassian`, `Bedrock`, `Vertex`, `Doctor`, `/usage`)
|
|
12
|
+
остались как есть. Английский текст выгружен из публикации плагина вместе с версией и
|
|
13
|
+
лицензией.
|
|
14
|
+
|
|
15
|
+
### Исправлено
|
|
16
|
+
|
|
17
|
+
- **Удалён словарь-призрак `acp_turn_sep_` — 528 строк, которых у плагина нет.**
|
|
18
|
+
Улучшенный разбор бандлов принял за имя словаря константу
|
|
19
|
+
`RESPONSES_TURN_SEPARATOR_ID_PREFIX` из плагина `billion-context`: `acp_turn_sep_` — это
|
|
20
|
+
префикс служебных идентификаторов, а не имя словаря. Эти строки в принципе не
|
|
21
|
+
могли появиться на экране, зато попадали в пакет, в счётчики и в политики. Настоящий словарь того
|
|
22
|
+
же плагина — `foldPositions` — остался на месте.
|
|
23
|
+
- **Режим `verbose` больше не называется «Подробный».** В списке «Детали работы»
|
|
24
|
+
два режима подписывались одним словом — «Подробный», и пункт «показывать всё, ничего не
|
|
25
|
+
сворачивая» выбирался наугад. Теперь у `verbose` своё
|
|
26
|
+
слово — «Развёрнутый»: рядом с «Компактным», «Стандартным» и «Подробным» он читается как
|
|
27
|
+
отдельный режим. Дефект нашёл `bondarevpm-tech` в PR #4; правка применена в `main`,
|
|
28
|
+
потому что пул-реквест разошёлся с веткой.
|
|
29
|
+
|
|
1
30
|
## [0.2.15] — 2026-10-22
|
|
2
31
|
|
|
3
32
|
### Изменено
|
package/NAMESPACES.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<!-- Сгенерировано `npm run namespaces`; проверяется `npm run check:namespaces`. -->
|
|
2
2
|
# Что переведено
|
|
3
3
|
|
|
4
|
-
Пакет переводит **584 namespace** —
|
|
4
|
+
Пакет переводит **584 namespace** — 67666 строк. Колонка «как это выглядит»
|
|
5
5
|
берёт заголовок самого namespace (то, что читает пользователь), а не отдельное описание:
|
|
6
6
|
список нельзя разойтись с переводами.
|
|
7
7
|
|
|
@@ -15,7 +15,6 @@
|
|
|
15
15
|
| `.ndjson.zst` | Английская страница (USD) | 2 | dsh-usage-badge@0.1.9 |
|
|
16
16
|
| `.runs.json` | Название | 70 | dsh-tongflow@0.8.4 |
|
|
17
17
|
| `about.huaqiu` | О плагине | 9 | @huaqiu/dsh-huaqiu-about@0.6.6 |
|
|
18
|
-
| `acp_turn_sep_` | — | 528 | billion-context@0.1.204 |
|
|
19
18
|
| `agency` | — | 94 | @michengai/dsh-agency-agents@1.2.10 |
|
|
20
19
|
| `agent-community` | Bots团队 | 1 | @dsh-plugin-agent-community/ui-agent-community@0.3.9 |
|
|
21
20
|
| `agent-schedule` | tool.call.toolview | 61 | dsh-agent-toolkit@0.4.13 |
|
|
@@ -423,6 +422,7 @@
|
|
|
423
422
|
| `settings.catppuccin` | — | 34 | dsh-catppuccin@0.2.6 |
|
|
424
423
|
| `settings.chatTranslate` | — | 45 | @lynn123411/dsh-chat-translate@3.5.9 |
|
|
425
424
|
| `settings.checkpointRewind` | Хронология чекпоинтов | 49 | dsh-checkpoint-rewind@0.6.33 |
|
|
425
|
+
| `settings.claude-code` | Claude Code | 470 | @norman-else/dsh-claude@0.1.66 |
|
|
426
426
|
| `settings.codebuddy` | CodeBuddy | 50 | @shatyuka/dsh-llm-codebuddy@0.9.3 |
|
|
427
427
|
| `settings.codebuddy-cli` | Подключение DSH CodeBuddy CLI | 162 | dsh-codebuddy-cli@0.4.3 |
|
|
428
428
|
| `settings.codeIndex` | — | 12 | dsh-code-index@0.11.0 |
|
|
@@ -597,4 +597,4 @@
|
|
|
597
597
|
| `xrn1997-dsh-novel` | — | 160 | @xrn1997/dsh-novel@0.8.0 |
|
|
598
598
|
| `zhihu-search` | — | 19 | dsh-zhihu-search@2.2.1 |
|
|
599
599
|
|
|
600
|
-
Итого: **584** namespace, **
|
|
600
|
+
Итого: **584** namespace, **67666** строк.
|
package/README.en.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<!-- deepseek-harness-meta
|
|
2
2
|
{
|
|
3
3
|
"name": "Russian (ru) language pack for DeepSeek Harness",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.16",
|
|
5
5
|
"tags": ["localization", "russian", "i18n", "web-gui", "language-pack"],
|
|
6
|
-
"description": "Full Russian (ru) interface for the DeepSeek Harness web GUI: 584 namespaces,
|
|
6
|
+
"description": "Full Russian (ru) interface for the DeepSeek Harness web GUI: 584 namespaces, 67666 strings, 520 third-party plugin dictionaries, Russian screen typography and Russian plural forms, with a locale audit in CI pinned to a harness tag.",
|
|
7
7
|
"icon": "https://raw.githubusercontent.com/Ragnoryok1/dsh-client-locale-ru/main/assets/icon.png",
|
|
8
8
|
"compatible_versions": ["v0.2.1-rc.2", "v0.2.1-rc.1", "v0.2.1-alpha.5", "v0.2.1-alpha.4", "v0.2.1-alpha.3", "v0.2.1-alpha.2", "v0.2.1-alpha.1", "v0.2.0-rc.2", "v0.2.0-rc.1", "v0.1.7-rc.2", "v0.1.7-rc.1", "v0.1.7-alpha.2"],
|
|
9
9
|
"screenshots": "images",
|
|
@@ -22,16 +22,16 @@
|
|
|
22
22
|
[](https://github.com/Ragnoryok1/dsh-client-locale-ru/actions/workflows/verify.yml)
|
|
23
23
|
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
24
24
|
[](https://github.com/Ragnoryok1/dsh-client-locale-ru)
|
|
25
|
-
[](https://github.com/Ragnoryok1/dsh-client-locale-ru)
|
|
26
26
|
|
|
27
|
-
Russian (`ru`) language pack for the [DeepSeek Harness](https://github.com/deepseek-ai/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 — 584 namespaces, 67,
|
|
27
|
+
Russian (`ru`) language pack for the [DeepSeek Harness](https://github.com/deepseek-ai/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 — 584 namespaces, 67,666 strings, built against dsh `0.2.1-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 — 64 namespaces (2 996 strings) — plus the dictionaries of 520 third-party plugins, translated from the English each plugin publishes. MIT, community-maintained, not affiliated with DeepSeek.
|
|
28
28
|
|
|
29
29
|
> **If the pack was useful to you, please star the repository.** It is the only signal that a
|
|
30
30
|
> translation is wanted, and it is what decides which parts get worked on next.
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
The complete inventory is in [NAMESPACES.md](NAMESPACES.md): 584 namespaces, 67,
|
|
34
|
+
The complete inventory is in [NAMESPACES.md](NAMESPACES.md): 584 namespaces, 67,666 strings, with the bundled plugin dictionaries marked.
|
|
35
35
|
|
|
36
36
|
Plugins outside the harness tree are translated the same way, but their English text comes from their own publication: `plugins/<namespace>.json` records the package, the version, the licence and the strings extracted from its bundle. What is still English in your installation is shown by `npm run report:plugins`: it walks the profile's `node_modules`, finds each plugin's own dictionary and compares its keys with ours, and a plugin without a dictionary is reported as such — there is nothing to translate until it asks for one.
|
|
37
37
|
|
|
@@ -99,7 +99,7 @@ two (the message names the version) or drop the `minimumReleaseAge` limit in the
|
|
|
99
99
|
settings.
|
|
100
100
|
The manifest is checked against the harness's own rules rather than by eye (`npm run check:manifest`, part of `verify`). Each rule was read out of the harness sources and each is a failure the user would otherwise meet first: `parseDshClient` accepts `platform` as any string while the consumers keep only `platform === 'web'`, so a typo like `'Web'` would **silently drop** the client half; a declared `dsh.client` without the `./client` export makes `client-modules` throw; and `dsh.bundle.patch` has to point at a file that exists.
|
|
101
101
|
|
|
102
|
-
Installing from GitHub works too: `dsh plugin --profile web add Ragnoryok1/dsh-client-locale-ru` (the form the plugin catalogue generates, without the npm scope) installs the repository archive, and the built `lib/` is committed — no build runs on your machine, and none is needed. That is exactly why `npm run check:built` (part of `verify`) rebuilds `lib/` and compares it with the commit: a stale bundle in git would reach the user, while the audit would never see it, because the audit reads the sources. The published package is
|
|
102
|
+
Installing from GitHub works too: `dsh plugin --profile web add Ragnoryok1/dsh-client-locale-ru` (the form the plugin catalogue generates, without the npm scope) installs the repository archive, and the built `lib/` is committed — no build runs on your machine, and none is needed. That is exactly why `npm run check:built` (part of `verify`) rebuilds `lib/` and compares it with the commit: a stale bundle in git would reach the user, while the audit would never see it, because the audit reads the sources. The published package is 2013 kB: the banner ships as JPEG, and the icon and source map stay out of the npm payload.
|
|
103
103
|
|
|
104
104
|
## Why hybrid
|
|
105
105
|
|
|
@@ -385,7 +385,7 @@ Searching the npm registry — six queries instead of one «dsh» — found 40 m
|
|
|
385
385
|
a dictionary of their own. 39 are translated; three names (`dsh-automation`, `remote`,
|
|
386
386
|
`settings.ip-pool`) are already taken by other plugins' dictionaries and stay with their
|
|
387
387
|
owners, so that nobody's product gets somebody else's translation. As of 22 October 2026:
|
|
388
|
-
**584 namespaces, 67
|
|
388
|
+
**584 namespaces, 67 666 values, 520 dictionaries, 47 700 distinct Russian strings** in the
|
|
389
389
|
built package. The competitor measurement, by the same method —
|
|
390
390
|
[docs/competitors.md](https://github.com/Ragnoryok1/dsh-client-locale-ru/blob/main/docs/competitors.md).
|
|
391
391
|
|
|
@@ -468,7 +468,7 @@ The workflow also has a manual run with a «только проверки, бе
|
|
|
468
468
|
|
|
469
469
|
## Contents
|
|
470
470
|
|
|
471
|
-
- `src/client/dicts.ts` — the Russian dictionaries
|
|
471
|
+
- `src/client/dicts.ts` — the Russian dictionaries: 584 namespaces, 67,666 strings, 71,506 lines of file. This is where the main value lies.
|
|
472
472
|
- `src/client/index.ts` — the client plugin entry point (registration of `ru` + the dictionaries).
|
|
473
473
|
- `src/index.ts` — the empty host half (`apply()`).
|
|
474
474
|
- `cordis.patch.yml` — the profile patch (`- insert:` of the client entry `locale-ru`).
|
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<!-- deepseek-harness-meta
|
|
2
2
|
{
|
|
3
3
|
"name": "Russian (ru) language pack for DeepSeek Harness",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.16",
|
|
5
5
|
"tags": ["localization", "russian", "i18n", "web-gui", "language-pack"],
|
|
6
|
-
"description": "Full Russian (ru) interface for the DeepSeek Harness web GUI: 584 namespaces,
|
|
6
|
+
"description": "Full Russian (ru) interface for the DeepSeek Harness web GUI: 584 namespaces, 67666 strings, 520 third-party plugin dictionaries, Russian screen typography and Russian plural forms, with a locale audit in CI pinned to a harness tag.",
|
|
7
7
|
"icon": "https://raw.githubusercontent.com/Ragnoryok1/dsh-client-locale-ru/main/assets/icon.png",
|
|
8
8
|
"compatible_versions": ["v0.2.1-rc.2", "v0.2.1-rc.1", "v0.2.1-alpha.5", "v0.2.1-alpha.4", "v0.2.1-alpha.3", "v0.2.1-alpha.2", "v0.2.1-alpha.1", "v0.2.0-rc.2", "v0.2.0-rc.1", "v0.1.7-rc.2", "v0.1.7-rc.1", "v0.1.7-alpha.2"],
|
|
9
9
|
"screenshots": "images",
|
|
@@ -22,16 +22,16 @@
|
|
|
22
22
|
[](https://github.com/Ragnoryok1/dsh-client-locale-ru/actions/workflows/verify.yml)
|
|
23
23
|
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
24
24
|
[](https://github.com/Ragnoryok1/dsh-client-locale-ru)
|
|
25
|
-
[](https://github.com/Ragnoryok1/dsh-client-locale-ru)
|
|
26
26
|
|
|
27
|
-
Русский (`ru`) язык для веб-интерфейса [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (`dsh`). Пакет регистрирует `ru` как выбираемый язык клиента через сервис локали (`ctx.locale.addLanguage`) и везёт по словарю на каждый namespace — 584 namespace, 67
|
|
27
|
+
Русский (`ru`) язык для веб-интерфейса [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (`dsh`). Пакет регистрирует `ru` как выбираемый язык клиента через сервис локали (`ctx.locale.addLanguage`) и везёт по словарю на каждый namespace — 584 namespace, 67 666 строк, сборка под dsh `0.2.1-rc.2`. Установка: `dsh plugin --profile web add @ragnoryok1/dsh-client-locale-ru`, затем **Русский** в Settings → General. Недостающие ключи падают в английский, поэтому более новый харнесс продолжает работать. Область — собственный интерфейс харнесса (64 namespace и 2 996 строк) и словари 521 стороннего плагина, переведённые с английского, который публикует сам плагин. MIT, поддерживается сообществом, не связан с DeepSeek.
|
|
28
28
|
|
|
29
29
|
> **If the pack was useful to you, please star the repository.** It is the only signal that a
|
|
30
30
|
> translation is wanted, and it is what decides which parts get worked on next.
|
|
31
31
|
|
|
32
32
|
---
|
|
33
33
|
|
|
34
|
-
Полный список переведённого — в [NAMESPACES.md](NAMESPACES.md): 584 namespace, 67
|
|
34
|
+
Полный список переведённого — в [NAMESPACES.md](NAMESPACES.md): 584 namespace, 67 666 строк, словари плагинов помечены отдельно.
|
|
35
35
|
|
|
36
36
|
Плагины за пределами дерева харнесса переводятся так же, но их английский текст берётся из собственной публикации: `plugins/<namespace>.json` хранит пакет, версию, лицензию и строки, выгруженные из бандла. Что осталось английским в вашей установке, покажет `npm run report:plugins`: он обходит `node_modules` профиля, находит у каждого плагина его собственный словарь и сверяет ключи с нашими, а плагин без словаря так и помечает — переводить нечего, пока он не спросит перевод.
|
|
37
37
|
|
|
@@ -98,7 +98,7 @@ dsh plugin --profile web add @ragnoryok1/dsh-client-locale-ru
|
|
|
98
98
|
половину; declared `dsh.client` без экспорта `./client` заставляет `client-modules` бросить
|
|
99
99
|
ошибку; `dsh.bundle.patch` обязан указывать на существующий файл.
|
|
100
100
|
|
|
101
|
-
Установка из GitHub тоже работает: `dsh plugin --profile web add Ragnoryok1/dsh-client-locale-ru` (в таком виде команду генерирует каталог плагинов, без `@`-скоупа) ставит архив репозитория, а собранный `lib/` лежит в git — сборка на вашей машине не запускается и не требуется. Поэтому `npm run check:built` (входит в `verify`) пересобирает `lib/` и сверяет его с коммитом: устаревший бандл в git иначе получил бы именно пользователь, а аудит этого не увидел бы — он читает исходники. Публикуемый пакет занимает
|
|
101
|
+
Установка из GitHub тоже работает: `dsh plugin --profile web add Ragnoryok1/dsh-client-locale-ru` (в таком виде команду генерирует каталог плагинов, без `@`-скоупа) ставит архив репозитория, а собранный `lib/` лежит в git — сборка на вашей машине не запускается и не требуется. Поэтому `npm run check:built` (входит в `verify`) пересобирает `lib/` и сверяет его с коммитом: устаревший бандл в git иначе получил бы именно пользователь, а аудит этого не увидел бы — он читает исходники. Публикуемый пакет занимает 2013 КБ: баннер отдаётся JPEG, а иконка и карта исходников в npm не входят.
|
|
102
102
|
|
|
103
103
|
## Почему гибрид
|
|
104
104
|
|
|
@@ -379,13 +379,13 @@ PLAN_NEXT_ACTION_EN`). Пока читался только первый вид,
|
|
|
379
379
|
|
|
380
380
|
## Область покрытия: харнесс и словари плагинов
|
|
381
381
|
Пакет переводит **собственные namespace клиента харнесса** — 64 namespace сверенных с
|
|
382
|
-
закреплённым тегом, — и **словари сторонних плагинов**: 520
|
|
382
|
+
закреплённым тегом, — и **словари сторонних плагинов**: 520 плагинов, чей английский текст
|
|
383
383
|
выгружен из их собственной публикации вместе с версией и лицензией.
|
|
384
384
|
|
|
385
385
|
Поиск по реестру npm — шесть запросов вместо одного «dsh» — нашёл ещё 40 плагинов со своим
|
|
386
386
|
словарём. 39 из них переведены; три имени (`dsh-automation`, `remote`, `settings.ip-pool`)
|
|
387
387
|
уже заняты словарями других плагинов и оставлены прежним владельцам, чтобы не подменить
|
|
388
|
-
перевод чужого продукта. Итог на 22 октября 2026: **584 namespace, 67
|
|
388
|
+
перевод чужого продукта. Итог на 22 октября 2026: **584 namespace, 67 666 значений,
|
|
389
389
|
520 словарей, 47 700 различных русских строк** в собранном пакете. Замер конкурентов тем же
|
|
390
390
|
методом — [docs/competitors.md](https://github.com/Ragnoryok1/dsh-client-locale-ru/blob/main/docs/competitors.md).
|
|
391
391
|
|
|
@@ -467,7 +467,7 @@ npm run verify -- путь/к/дереву/харнесса
|
|
|
467
467
|
|
|
468
468
|
## Содержимое
|
|
469
469
|
|
|
470
|
-
- `src/client/dicts.ts` — русские
|
|
470
|
+
- `src/client/dicts.ts` — русские словари: 584 namespace и 67 666 строк, файл 71 453 строки. Это и есть основная ценность.
|
|
471
471
|
- `src/client/index.ts` — точка входа клиентского плагина (регистрация `ru` + словарей).
|
|
472
472
|
- `src/index.ts` — пустая host-половина (`apply()`).
|
|
473
473
|
- `cordis.patch.yml` — профиль-патч (`- insert:` клиентской строки `locale-ru`).
|
package/README.zh.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
<!-- deepseek-harness-meta
|
|
2
2
|
{
|
|
3
3
|
"name": "Russian (ru) language pack for DeepSeek Harness",
|
|
4
|
-
"version": "0.2.
|
|
4
|
+
"version": "0.2.16",
|
|
5
5
|
"tags": ["localization", "russian", "i18n", "web-gui", "language-pack"],
|
|
6
|
-
"description": "Full Russian (ru) interface for the DeepSeek Harness web GUI: 584 namespaces,
|
|
6
|
+
"description": "Full Russian (ru) interface for the DeepSeek Harness web GUI: 584 namespaces, 67666 strings, 520 third-party plugin dictionaries, Russian screen typography and Russian plural forms, with a locale audit in CI pinned to a harness tag.",
|
|
7
7
|
"icon": "https://raw.githubusercontent.com/Ragnoryok1/dsh-client-locale-ru/main/assets/icon.png",
|
|
8
8
|
"compatible_versions": ["v0.2.1-rc.2", "v0.2.1-rc.1", "v0.2.1-alpha.5", "v0.2.1-alpha.4", "v0.2.1-alpha.3", "v0.2.1-alpha.2", "v0.2.1-alpha.1", "v0.2.0-rc.2", "v0.2.0-rc.1", "v0.1.7-rc.2", "v0.1.7-rc.1", "v0.1.7-alpha.2"],
|
|
9
9
|
"screenshots": "images",
|
|
@@ -22,15 +22,15 @@
|
|
|
22
22
|
[](https://github.com/Ragnoryok1/dsh-client-locale-ru/actions/workflows/verify.yml)
|
|
23
23
|
[](https://github.com/deepseek-ai/deepseek-harness)
|
|
24
24
|
[](https://github.com/Ragnoryok1/dsh-client-locale-ru)
|
|
25
|
-
[](https://github.com/Ragnoryok1/dsh-client-locale-ru)
|
|
26
26
|
|
|
27
|
-
[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) Web 界面(`dsh`)的俄语(`ru`)语言包。它通过 locale 服务(`ctx.locale.addLanguage`)把 `ru` 注册为可选的客户端语言,并为每个 namespace 提供一份词典——共 584 个 namespace、67,
|
|
27
|
+
[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) Web 界面(`dsh`)的俄语(`ru`)语言包。它通过 locale 服务(`ctx.locale.addLanguage`)把 `ru` 注册为可选的客户端语言,并为每个 namespace 提供一份词典——共 584 个 namespace、67,666 条翻译,基于 dsh `0.2.1-rc.2` 构建。用 `dsh plugin --profile web add @ragnoryok1/dsh-client-locale-ru` 安装,然后在 Settings → General 中选择 **Русский**。缺失的 key 会回退到英文,因此更新的 harness 也能照常工作。覆盖范围是 harness 自带的客户端界面(64 个 namespace,2 996 条翻译),以及 521 个第三方插件的词典——它们各自发布的英文原文都被取来翻译。MIT 许可,由社区维护,与 DeepSeek 无隶属关系。
|
|
28
28
|
|
|
29
29
|
> **如果这个包对你有用,请给仓库点一颗 star。** 这是表明「有人需要这份翻译」的唯一信号,它也决定了接下来优先做哪些部分。
|
|
30
30
|
|
|
31
31
|
---
|
|
32
32
|
|
|
33
|
-
完整清单见 [NAMESPACES.md](NAMESPACES.md):584 个 namespace、67,
|
|
33
|
+
完整清单见 [NAMESPACES.md](NAMESPACES.md):584 个 namespace、67,666 条字符串,随包附带的插件词典单独标注。
|
|
34
34
|
|
|
35
35
|
harness 树之外的插件用同样的方式翻译,但英文取自它们自己的发布物:`plugins/<namespace>.json` 记录包名、版本、许可证,以及从其 bundle 中提取的字符串。安装里还剩哪些英文,用 `npm run report:plugins` 查看:它遍历 profile 的 `node_modules`,找出每个插件自己的词典并与我们的对照;没有词典的插件会照实标注——在它请求翻译之前无从翻译。
|
|
36
36
|
|
|
@@ -87,7 +87,7 @@ dsh plugin --profile web add @ragnoryok1/dsh-client-locale-ru
|
|
|
87
87
|
|
|
88
88
|
清单按 harness 自身的规则检查,而不是靠肉眼(`npm run check:manifest`,包含在 `verify` 中)。每一条规则都取自 harness 源码,每一条都对应一种否则会先落到用户头上的失败:`parseDshClient` 接受任意字符串作为 `platform`,但消费方只保留 `platform === 'web'` 的行,因此写成 `'Web'` 这样的笔误会**悄悄关掉**客户端那一半;声明了 `dsh.client` 却没有 `./client` 导出会让 `client-modules` 抛错;`dsh.bundle.patch` 必须指向确实存在的文件。
|
|
89
89
|
|
|
90
|
-
从 GitHub 安装同样可用:`dsh plugin --profile web add Ragnoryok1/dsh-client-locale-ru`(插件目录生成的就是这种不带 npm scope 的写法)安装的是仓库归档,而构建好的 `lib/` 已提交进 git——你的机器上不会运行构建,也不需要运行。正因如此,`npm run check:built`(包含在 `verify` 中)会重新构建 `lib/` 并与提交内容比对:git 里过期的构建产物会直接落到用户手里,而审计看不到它——审计读的是源码。发布的包为
|
|
90
|
+
从 GitHub 安装同样可用:`dsh plugin --profile web add Ragnoryok1/dsh-client-locale-ru`(插件目录生成的就是这种不带 npm scope 的写法)安装的是仓库归档,而构建好的 `lib/` 已提交进 git——你的机器上不会运行构建,也不需要运行。正因如此,`npm run check:built`(包含在 `verify` 中)会重新构建 `lib/` 并与提交内容比对:git 里过期的构建产物会直接落到用户手里,而审计看不到它——审计读的是源码。发布的包为 2013 kB:横幅以 JPEG 提供,图标与源码映射不进入 npm 包。
|
|
91
91
|
|
|
92
92
|
## 为什么是混合插件
|
|
93
93
|
|
|
@@ -155,7 +155,7 @@ npm run diff:harness -- <old> <new> # harness 改写了哪些英文
|
|
|
155
155
|
|
|
156
156
|
审计在 CI(`.github/workflows/verify.yml`)中针对**锁定的 harness 标签**运行,而不是针对随便一份本地 checkout。同一次运行还会**每周按计划**触发一次:即使没人改动,译文也会腐坏——上游继续前进,本地一切正常,而偏差只在用户构建时才浮现。门禁覆盖完整性(key 与 namespace)、复数形式、占位符、英文与中文残留、术语、正文中的拉丁词、文本卫生、首尾空格、风格、取值的排版、«ё»、组合短语、设置侧栏标签的长度以及对外宣称的数字——每一项都已经抓到过真实缺陷。除此之外,审计还会打印**参考报告**——它们不是门禁,因为需要人来判断:比对了多少个 namespace、哪些无法建立对应关系、是否还留有「数字 + 需变格的名词」,以及短字符串是否长到英文的 2.8 倍以上(排版风险——«Effort» → «Уровень рассуждения» 是俄语的正常长度,不是缺陷)。
|
|
157
157
|
|
|
158
|
-
审计按 harness 实际书写的形式读取模板:字符串、**段落数组**(各模式的指南就是这样存储的)以及**常量引用**(`'hint.plan': PLAN_NEXT_ACTION_EN`)。在只读取第一种形式时,有十个 key——其中八个是整篇指南——悄悄退出了所有比对。反过来也一样:空的策略文件(`keep-english.json`、`terminology.json` 的某个分区)现在会让审计失败,而不是在无人察觉的情况下放宽门禁。README 中宣称的数字也按同样方式与包体核对,因为过期的数字就是错误的说法——同样的数字还会从 `package.json` 的 description 中读取,那是 npm 在搜索与包页面上显示的内容(「55 namespaces」正是在那里活得最久)——包括带千位分隔符的写法:旧版开头写的是 `2 489`,而检查此前只读取不带分隔符的形式,所以数字模式现在也接受千位分隔符。紧随其后还核对「针对哪个 harness 版本构建」这句话:它必须与 workflow 中锁定的标签一致,因为真正验证这个包的是那个 workflow(两个 README 的开头都还写着 `0.2.1-alpha.2`,而 CI 早已换成 `dsh-v0.2.1-rc.2`)。发布包的体积也在这里实测:`npm run check:size` 会打包归档,并把声明的千字节数与实际值对比(允许
|
|
158
|
+
审计按 harness 实际书写的形式读取模板:字符串、**段落数组**(各模式的指南就是这样存储的)以及**常量引用**(`'hint.plan': PLAN_NEXT_ACTION_EN`)。在只读取第一种形式时,有十个 key——其中八个是整篇指南——悄悄退出了所有比对。反过来也一样:空的策略文件(`keep-english.json`、`terminology.json` 的某个分区)现在会让审计失败,而不是在无人察觉的情况下放宽门禁。README 中宣称的数字也按同样方式与包体核对,因为过期的数字就是错误的说法——同样的数字还会从 `package.json` 的 description 中读取,那是 npm 在搜索与包页面上显示的内容(「55 namespaces」正是在那里活得最久)——包括带千位分隔符的写法:旧版开头写的是 `2 489`,而检查此前只读取不带分隔符的形式,所以数字模式现在也接受千位分隔符。紧随其后还核对「针对哪个 harness 版本构建」这句话:它必须与 workflow 中锁定的标签一致,因为真正验证这个包的是那个 workflow(两个 README 的开头都还写着 `0.2.1-alpha.2`,而 CI 早已换成 `dsh-v0.2.1-rc.2`)。发布包的体积也在这里实测:`npm run check:size` 会打包归档,并把声明的千字节数与实际值对比(允许 2013 kB 误差——不同 Node 构建下的 gzip 压缩结果略有差别,而这句话本身也只精确到整千字节)。
|
|
159
159
|
|
|
160
160
|
- **无效 namespace**——包注册的每一个 namespace 都必须在 harness 中存在。在 0.1.6 中,日程目录的翻译被注册在 `schedule.manager` 名下,而读取它们的是 `schedule.catalog`:此时按 key 做的覆盖率检查还报告「全部已翻译」;
|
|
161
161
|
- **复数形式配对**——`.one`/`.other` 的集合必须一致,因为客户端按 `count === 1 ? '.one' : '.other'` 选择形式。这对俄语还不够:每一对还需要 `.few` 与 `.many`,否则包装层会悄悄退回中性的 `.other`,本该是 «2 дня» 的地方显示成 «2 д»。该检查**按 namespace** 进行——包装层在提问的那个 namespace 里查找形式,因此「某个界面上有、另一个界面上缺」这种情况否则不会被发现。它找到了四个时间单位(`schedule.catalog` 中的 `unit.day/hour/minute/second`)和任务管理器里的 `trigger`;同时这些单位不再是缩写(«д»、«ч»、«мин»),而是带正确格位的完整形式——«через 2 дня»、«через 5 часов»,而 «Каждые 2 дня» 现在写作 «Раз в 2 дня»。同样的要求也覆盖本包自己添加的 key(`terminal.expand` 及其同类:harness 会把计数传给它,却从不配对)——这些形式只由我们维护,少一个不会有任何其他检查发现;
|
|
@@ -175,7 +175,7 @@ npm run diff:harness -- <old> <new> # harness 改写了哪些英文
|
|
|
175
175
|
我们按六个关键词(而不是只用「dsh」一个)检索 npm,又找到 40 个自带词典的插件:其中 39 个
|
|
176
176
|
已翻译,三个名字(`dsh-automation`、`remote`、`settings.ip-pool`)已被别的插件的词典占用,
|
|
177
177
|
仍归原来的所有者,以免把别人的翻译安到另一个产品上。截至 2026 年 10 月 22 日:**584 个
|
|
178
|
-
namespace、67
|
|
178
|
+
namespace、67 666 条、520 个词典、构建产物中 47 700 条不同的俄文**。用同样方法做
|
|
179
179
|
的竞争对手测量见 [docs/competitors.md](https://github.com/Ragnoryok1/dsh-client-locale-ru/blob/main/docs/competitors.md)。
|
|
180
180
|
|
|
181
181
|
此前插件词典不在范围内,理由是:`dshmarket` 已经到 1.66.44 版本,它的 key 变化与 harness
|
|
@@ -239,7 +239,7 @@ npm run verify -- путь/к/дереву/харнесса
|
|
|
239
239
|
|
|
240
240
|
## 内容
|
|
241
241
|
|
|
242
|
-
- `src/client/dicts.ts
|
|
242
|
+
- `src/client/dicts.ts`——俄语词典:584 个 namespace、67,666 条字符串,文件 71,506 行。这正是本包的核心价值。
|
|
243
243
|
- `src/client/index.ts`——客户端插件入口(注册 `ru` 和词典)。
|
|
244
244
|
- `src/index.ts`——空的宿主部分(`apply()`)。
|
|
245
245
|
- `cordis.patch.yml`——profile 补丁(`- insert:` 客户端条目 `locale-ru`)。
|