@goodandready/dsh-russian-lang 0.1.8 → 0.1.10
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/README.md +44 -17
- package/lib/client.js +227 -27
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,23 +6,41 @@
|
|
|
6
6
|
|
|
7
7
|
- Регистрирует русские словари для namespace'ов ядра (`common`,
|
|
8
8
|
`conversation`, `settings`, `settings.models`, `workspace`, `subagent`,
|
|
9
|
-
`reference` и другие — **30 namespace'ов ядра, 722 ключа, 100%
|
|
10
|
-
|
|
11
|
-
плагинов (`dsh-market`, `better-sidebar`, `task-board`, `im-hub` и другие —
|
|
12
|
-
**9 namespace'ов, 962 ключа**).
|
|
9
|
+
`reference` и другие — **30 namespace'ов ядра, 722 ключа, 100% покрытия**
|
|
10
|
+
релизной поверхности DSH 0.1.1-rc.2) и для ряда сторонних плагинов.
|
|
13
11
|
- Добавляет **«Русский» третьей позицией** в родной список языков
|
|
14
12
|
(**Настройки → Общие → Язык**). Выбор сохраняется штатным механизмом
|
|
15
13
|
настроек DSH и переживает браузеры.
|
|
16
|
-
- Синхронизирует `<html lang="ru">` при активном русском.
|
|
14
|
+
- Синхронизирует `<html lang="ru-RU">` при активном русском.
|
|
17
15
|
|
|
18
16
|
Непереведённые ключи показываются по-английски (штатный fallback ядра), пустых
|
|
19
17
|
мест в интерфейсе не появляется.
|
|
20
18
|
|
|
19
|
+
### Помимо словарей
|
|
20
|
+
|
|
21
|
+
- **Русские plural-формы.** Обёртка `translate` резолвит `one/few/many` для
|
|
22
|
+
счётных ключей (как с суффиксом `.one/.other`, так и голых — через
|
|
23
|
+
`X.one/X.few/X.many`).
|
|
24
|
+
- **Пользовательские переопределения.** Пространство настроек
|
|
25
|
+
`russian-lang.overrides` — `{ ключ: формулировка }`, применяется верхним
|
|
26
|
+
слоем поверх словарей.
|
|
27
|
+
- **Типографика вывода** (`russian-lang.typography`). Идемпотентный
|
|
28
|
+
постпроцессор текстовых узлов: кавычки-«ёлочки», тире, неразрывные пробелы
|
|
29
|
+
после коротких слов, опциональная ё (флаг `yo`). Код, ссылки и поля ввода не
|
|
30
|
+
трогаются.
|
|
31
|
+
- **Орфография** — браузерный `spellcheck` на текстовых полях при активном
|
|
32
|
+
русском; моноширинные поля (код, команды) исключаются.
|
|
33
|
+
- **Фикс неправильной раскладки.** Если текст набран латиницей вместо
|
|
34
|
+
кириллицы, над инпутом появляется подсказка с превью конвертации; клик
|
|
35
|
+
заменяет. Конверсия кириллицы→латиницы предлагается только для
|
|
36
|
+
slash-команд. Ручной конверт текущего инпута — `Alt+L`.
|
|
37
|
+
|
|
21
38
|
## Как это работает
|
|
22
39
|
|
|
23
40
|
Реестр локалей живёт в браузере: плагин докладывает русские словари в чужие
|
|
24
|
-
namespace'ы через `ctx.locale.register(ns, 'ru', dict)
|
|
25
|
-
|
|
41
|
+
namespace'ы через `ctx.locale.register(ns, 'ru', dict)`. Namespace'ы, которые
|
|
42
|
+
плагины уже локализуют сами на русский, пропускаются (иначе загрузчик падает с
|
|
43
|
+
`already has locale ru`).
|
|
26
44
|
|
|
27
45
|
Список языков штатного селектора (`Настройки → Общие → Язык`) живёт в snapshot
|
|
28
46
|
локаль-runtime; меню строится из него, и `setLocale()` валидирует выбор по
|
|
@@ -47,16 +65,24 @@ dsh plugin --profile web add @goodandready/dsh-russian-lang
|
|
|
47
65
|
## Разработка и проверка
|
|
48
66
|
|
|
49
67
|
```bash
|
|
50
|
-
python3 extract-dicts.py <
|
|
51
|
-
python3 check-coverage.py
|
|
52
|
-
python3 build.py
|
|
53
|
-
python3
|
|
54
|
-
python3
|
|
68
|
+
python3 extract-dicts.py <node_modules ядра> [node_modules профиля] # обновить *-en.json
|
|
69
|
+
python3 check-coverage.py # что не переведено / устарело
|
|
70
|
+
python3 build.py # собрать lib/client.js
|
|
71
|
+
python3 tools/mt_fallback.py --dry-run # непереведённые ключи
|
|
72
|
+
python3 tools/mt_fallback.py --review # очередь ручной выверки MT
|
|
73
|
+
python3 tools/merge_freq.py # обновить freq-словарь для фикса раскладки
|
|
74
|
+
python3 tools/upstream_check.py # ночной апстрим-детектор новых ключей
|
|
75
|
+
python3 tools/top100.py <профиль>/node_modules # отчёт покрытия плагинов
|
|
76
|
+
python3 test/test_extract.py # smoke для extract-dicts/check-coverage
|
|
77
|
+
python3 test/smoke.py # E2E против запущенного контура
|
|
55
78
|
```
|
|
56
79
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
80
|
+
MT-переводы непереведённых ключей (`mt_fallback.py --apply`) пишутся в
|
|
81
|
+
`mt-registry.json` как обычные строки; ручной перевод в `ru/*.json` всегда
|
|
82
|
+
имеет приоритет. Очередь ручной выверки — `upstream/review-queue.md`.
|
|
83
|
+
|
|
84
|
+
`smoke.py` требует `websocket-client` (`pip install websocket-client`) и Chrome
|
|
85
|
+
на `/usr/bin/google-chrome`. Адрес переопределяется через `DSH_URL`.
|
|
60
86
|
|
|
61
87
|
## Скриншоты
|
|
62
88
|
|
|
@@ -65,8 +91,7 @@ python3 test/smoke.py # E2E против запущ
|
|
|
65
91
|
| Интерфейс на русском | `docs/media/ui-russian.png` |
|
|
66
92
|
| Список языков в Настройки → Общие | `docs/media/language-selector.png` |
|
|
67
93
|
|
|
68
|
-
Скриншоты обновляются через `python3 test/screenshots.py
|
|
69
|
-
запущенного стенда с установленным плагином.
|
|
94
|
+
Скриншоты обновляются через `python3 test/screenshots.py`.
|
|
70
95
|
|
|
71
96
|
## Ограничения
|
|
72
97
|
|
|
@@ -75,6 +100,8 @@ python3 test/smoke.py # E2E против запущ
|
|
|
75
100
|
- Плагины, которые рисуют текст инлайном без locale-слотов, не переводятся.
|
|
76
101
|
- Текст, добавленный сторонним плагином без `ctx.locale.register`, остаётся на
|
|
77
102
|
языке плагина — для перевода нужно обновить сам плагин.
|
|
103
|
+
- Фикс раскладки опирается на встроенный частотный словарь (~9k слов) и может
|
|
104
|
+
не распознать редкую терминологию; ложных замен нет — только подсказка.
|
|
78
105
|
|
|
79
106
|
## Лицензия
|
|
80
107
|
|