@goodandready/dsh-russian-lang 0.3.7 → 0.3.9
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 +21 -2
- package/lib/client.js +548 -1732
- package/lib/client.template.js +2685 -0
- package/lib/locales/core.json +1 -1
- package/lib/pure.js +6 -11
- package/lib/translator.js +14 -16
- package/package.json +2 -4
- package/README.ru.md +0 -194
- package/docs/media/banner.jpg +0 -0
package/lib/pure.js
CHANGED
|
@@ -468,23 +468,18 @@ const SHORT_WORDS_RE = /(^|[\s(«])([вВнНсСпПоОкКуУиИаА]|из|
|
|
|
468
468
|
*/
|
|
469
469
|
export const formatInputLive = (text) => {
|
|
470
470
|
if (!text || typeof text !== 'string') return text
|
|
471
|
-
|
|
472
|
-
// Разбиваем по блокам кода (inline `...` или fenced ```...```), чтобы не портить синтаксис
|
|
473
471
|
const parts = text.split(/(```[\s\S]*?```|`[^`\n]*`)/g)
|
|
474
472
|
for (let i = 0; i < parts.length; i += 2) {
|
|
475
473
|
let s = parts[i]
|
|
476
474
|
if (!s) continue
|
|
477
|
-
|
|
478
|
-
|
|
475
|
+
const lq = [], cf = []
|
|
476
|
+
s = s.replace(/"([^"\n]*[a-zA-Z][^"\n]*)"/g, (m) => `\x01L${lq.push(m) - 1}\x01`)
|
|
477
|
+
s = s.replace(/(^|\s)(--[a-zA-Z0-9_\u0400-\u04FF-]+)/g, (m, p1, p2) => `${p1}\x01C${cf.push(p2) - 1}\x01`)
|
|
478
|
+
s = s.replace(/(^|\s)(--)(?=\s|$)/g, (m, p1, p2) => /[a-zA-Z]/.test(text) ? `${p1}\x01C${cf.push(p2) - 1}\x01` : m)
|
|
479
479
|
s = s.replace(/--/g, '—')
|
|
480
|
-
|
|
481
|
-
// 3. Кавычки-ёлочки («...») с учётом открывающейся/закрывающейся
|
|
482
|
-
s = s.replace(/(^|[\s([{-])"/g, '$1«')
|
|
483
|
-
s = s.replace(/"/g, '»')
|
|
484
|
-
|
|
485
|
-
// 4. Неразрывный пробел после коротких слов/предлогов
|
|
480
|
+
s = s.replace(/(^|[\s([{-])"/g, '$1«').replace(/"/g, '»')
|
|
486
481
|
s = s.replace(SHORT_WORDS_RE, '$1$2\u00A0')
|
|
487
|
-
|
|
482
|
+
s = s.replace(/\x01C(\d+)\x01/g, (_, j) => cf[+j]).replace(/\x01L(\d+)\x01/g, (_, j) => lq[+j])
|
|
488
483
|
parts[i] = s
|
|
489
484
|
}
|
|
490
485
|
return parts.join('')
|
package/lib/translator.js
CHANGED
|
@@ -50,26 +50,24 @@ function isLoopback(value) {
|
|
|
50
50
|
)
|
|
51
51
|
}
|
|
52
52
|
|
|
53
|
+
export const TRANSLATOR_HEADER = 'x-dsh-translator'
|
|
54
|
+
|
|
53
55
|
export function isTrustedTranslatorRequest(request) {
|
|
54
|
-
if (request
|
|
55
|
-
return false
|
|
56
|
-
}
|
|
56
|
+
if (header(request, TRANSLATOR_HEADER) !== '1') return false
|
|
57
57
|
const site = header(request, 'sec-fetch-site')
|
|
58
|
-
if (site !== undefined && site !== 'same-origin'
|
|
59
|
-
return false
|
|
60
|
-
}
|
|
58
|
+
if (site !== undefined && site !== 'same-origin') return false
|
|
61
59
|
const origin = header(request, 'origin')
|
|
62
60
|
const host = header(request, 'host')
|
|
63
|
-
if (origin
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
61
|
+
if (origin === undefined || host === undefined) return false
|
|
62
|
+
try {
|
|
63
|
+
const url = new URL(origin)
|
|
64
|
+
if (url.protocol !== 'http:' && url.protocol !== 'https:') return false
|
|
65
|
+
// Same-origin check: Origin host must match Host header.
|
|
66
|
+
// Accepts loopback, LAN, and Tailscale addresses alike.
|
|
67
|
+
return url.host === host
|
|
68
|
+
} catch {
|
|
69
|
+
return false
|
|
71
70
|
}
|
|
72
|
-
return true
|
|
73
71
|
}
|
|
74
72
|
|
|
75
73
|
|
|
@@ -136,7 +134,7 @@ export async function setupLibreTranslateContainer() {
|
|
|
136
134
|
'--name', 'libretranslate',
|
|
137
135
|
'--restart', 'unless-stopped',
|
|
138
136
|
'-p', '127.0.0.1:5000:5000',
|
|
139
|
-
'libretranslate/libretranslate',
|
|
137
|
+
'libretranslate/libretranslate:v1.5.3',
|
|
140
138
|
'--load-only', 'en,ru,zh'
|
|
141
139
|
], 30000)
|
|
142
140
|
return { ok: true, action: 'created', message: 'Контейнер libretranslate создан и запускается (~600 МБ RAM).' }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goodandready/dsh-russian-lang",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.9",
|
|
4
4
|
"description": "Russian localization for DeepSeek Harness (DSH v0.1.7-rc.1+) web UI: adds Русский as native language option. 100.0% coverage across 11,295 keys (127 namespaces). Features full DSH v0.1.7-rc.1 core support (terminal, archive, command palette, Auto review, trajectory, PTC/Creator presets) and complete GoodAndReady plugin catalog (subscriptions, tts, image-gen, voice, key-limits, notify, commandcode, plugin-console).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -15,9 +15,7 @@
|
|
|
15
15
|
"bin",
|
|
16
16
|
"cordis.patch.yml",
|
|
17
17
|
"README.md",
|
|
18
|
-
"
|
|
19
|
-
"LICENSE",
|
|
20
|
-
"docs/media"
|
|
18
|
+
"LICENSE"
|
|
21
19
|
],
|
|
22
20
|
"dsh": {
|
|
23
21
|
"bundle": {
|
package/README.ru.md
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
# 📦 @goodandready/dsh-russian-lang
|
|
2
|
-
|
|
3
|
-
<div align="center">
|
|
4
|
-
|
|
5
|
-
<h3>Полная русская локализация, умная типографика и исправление раскладки клавиатуры для DeepSeek Harness</h3>
|
|
6
|
-
|
|
7
|
-
<p align="center">
|
|
8
|
-
<a href="https://www.npmjs.com/package/@goodandready/dsh-russian-lang"><img src="https://img.shields.io/badge/npm-v0.3.7-6366f1.svg?style=for-the-badge&labelColor=1e1b4b" alt="npm version"></a>
|
|
9
|
-
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-10b981.svg?style=for-the-badge&color=10b981&labelColor=064e3b" alt="license"></a>
|
|
10
|
-
<a href="https://github.com/topics/dsh-plugin"><img src="https://img.shields.io/badge/DSH-Plugin-8b5cf6.svg?style=for-the-badge&labelColor=2e1065" alt="DSH Plugin"></a>
|
|
11
|
-
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node-20%2B-f59e0b.svg?style=for-the-badge&labelColor=451a03" alt="Node version"></a>
|
|
12
|
-
</p>
|
|
13
|
-
|
|
14
|
-
<p align="center">
|
|
15
|
-
<img src="https://img.shields.io/badge/DSH-v0.1.7--rc.1%2B-blue.svg?style=for-the-badge&labelColor=1e1b4b" alt="DSH v0.1.7-rc.1+">
|
|
16
|
-
<img src="https://img.shields.io/badge/Покрытие-100%25-10b981.svg?style=for-the-badge&labelColor=064e3b" alt="Покрытие 100%">
|
|
17
|
-
<img src="https://img.shields.io/badge/Ключей_UI-8735-6366f1.svg?style=for-the-badge&labelColor=1e1b4b" alt="8735 ключей">
|
|
18
|
-
<img src="https://img.shields.io/badge/Ручная_вычитка-100%25-0ea5e9.svg?style=for-the-badge&labelColor=082f49" alt="100% ручная вычитка">
|
|
19
|
-
</p>
|
|
20
|
-
|
|
21
|
-
<p align="center">
|
|
22
|
-
<a href="https://goodandready.app/"><img src="https://img.shields.io/badge/Все_проекты_автора-goodandready.app-ff4500.svg?style=for-the-badge&logo=rocket&logoColor=white&labelColor=1a1a2e" alt="Все проекты автора"></a>
|
|
23
|
-
</p>
|
|
24
|
-
|
|
25
|
-
<p align="center">
|
|
26
|
-
<img src="docs/media/banner.jpg" alt="dsh-russian-lang hero banner" width="100%">
|
|
27
|
-
</p>
|
|
28
|
-
|
|
29
|
-
<table align="center">
|
|
30
|
-
<tr>
|
|
31
|
-
<td align="center">
|
|
32
|
-
⭐ <strong>Если вам нравится этот плагин, поставьте ему звезду на GitHub</strong> — это покажет мне, что плагин вам полезен, и будет мотивировать меня развивать его дальше.
|
|
33
|
-
<br><br>
|
|
34
|
-
🐛 <strong>Если вы нашли баг или хотите предложить новый функционал</strong>, создайте issue на GitHub на любом языке — я рассмотрю ваше предложение и реализую полезные идеи в одной из следующих версий плагина.
|
|
35
|
-
</td>
|
|
36
|
-
</tr>
|
|
37
|
-
</table>
|
|
38
|
-
|
|
39
|
-
</div>
|
|
40
|
-
|
|
41
|
-
---
|
|
42
|
-
|
|
43
|
-
## ⚡ Обзор
|
|
44
|
-
|
|
45
|
-
**`dsh-russian-lang`** — официальный, всеобъемлющий пакет русской локализации для веб-интерфейса [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh).
|
|
46
|
-
|
|
47
|
-
Пакет не просто переводит интерфейс ядра и всех популярных плагинов экосистемы, но и добавляет интеллектуальные функции для комфортной русскоязычной работы: **100% ручная вычитка терминов**, **грамматические формы множественного числа (plural)**, автоматическую **расстановку экранной типографики** («ёлочки», длинные тире, неразрывные пробелы) и **исправление ошибочно набранного текста** на неверной раскладке по горячей клавише <kbd>Alt+L</kbd>.
|
|
48
|
-
|
|
49
|
-
```mermaid
|
|
50
|
-
graph LR
|
|
51
|
-
subgraph DSHCore [Ядро DeepSeek Harness]
|
|
52
|
-
DSH[Web UI Интерфейс] --> Loader[Загрузчик локализации dsh-russian-lang]
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
subgraph TranslationLayer [Слой перевода и адаптации — 8735 ключей / 100% вычитано]
|
|
56
|
-
Loader --> CoreDict[49 Пространств имён ядра DSH / 2146 ключей]
|
|
57
|
-
Loader --> PluginDict[60+ Плагинов экосистемы DSH / 6589 ключей]
|
|
58
|
-
Loader --> PluralEngine[Движок грамматических Plural-форм: 1/2/5]
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
subgraph SmartFeatures [Интеллектуальные модули]
|
|
62
|
-
Loader --> Typo[Модуль типографики: кавычки-«ёлочки» и длинные тире]
|
|
63
|
-
Loader --> LayoutFix[Детектор неверной раскладки + Hotkey Alt+L]
|
|
64
|
-
Loader --> Spell[Активация русской проверки орфографии]
|
|
65
|
-
Loader --> Overrides[Пользовательские переопределения ключей]
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
subgraph Result [Результат]
|
|
69
|
-
CoreDict --> NativeUI[Нативный русский интерфейс]
|
|
70
|
-
PluginDict --> NativeUI
|
|
71
|
-
PluralEngine --> NativeUI
|
|
72
|
-
Typo --> NativeUI
|
|
73
|
-
LayoutFix --> NativeUI
|
|
74
|
-
Spell --> NativeUI
|
|
75
|
-
Overrides --> NativeUI
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
style DSHCore fill:#1e1e2e,stroke:#89b4fa,stroke-width:2px,color:#cdd6f4
|
|
79
|
-
style TranslationLayer fill:#181825,stroke:#cba6f7,stroke-width:2px,color:#cdd6f4
|
|
80
|
-
style SmartFeatures fill:#11111b,stroke:#a6e3a1,stroke-width:2px,color:#cdd6f4
|
|
81
|
-
style Result fill:#181825,stroke:#f38ba8,stroke-width:2px,color:#cdd6f4
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
---
|
|
85
|
-
|
|
86
|
-
## ✨ Полный обзор возможностей
|
|
87
|
-
|
|
88
|
-
### 1. 🌐 100% покрытие ядра DSH (49 Пространств имён, 2146 ключей)
|
|
89
|
-
* **Диалоги и переписка (`conversation`)**: лента сообщений, ветки обсуждений, карточки вызова инструментов, статус генерации и рассуждений (thinking traces).
|
|
90
|
-
* **Модели и провайдеры (`settings.models`)**: каталог моделей, параметры инференса, управление токенами и ключами API.
|
|
91
|
-
* **Трейсы рассуждений (`trajectory`)**: детальные шаги, параметры вызовов инструментов, временные метки и визуализация размышлений модели.
|
|
92
|
-
* **Настройки ядра (`settings`, `common`, `settings.theme`)**: параметры подключения, горячие клавиши, системные уведомления, масштабирование шрифтов, модальные окна и подтверждения.
|
|
93
|
-
* **Рабочие области (`workspace`, `subagent`)**: дерево файлов, управление контекстом, запуск и координация субагентов.
|
|
94
|
-
* **Планировщик и инвентарь (`schedule.catalog`, `settings.pluginInventory`, `settings.plugins`)**: фоновые задания, периодичность, фильтры и каталог установленных плагинов.
|
|
95
|
-
* **Права доступа и безопасность (`permission.access`, `plan`, `skill`)**: пресеты прав (полный доступ, только чтение, запись в рабочую область), выполнение планов и навыки.
|
|
96
|
-
|
|
97
|
-
> **О качестве перевода.** Все **8735 ключей интерфейса (2146 ядра + 6589 плагинов) переведены на 100% и вычитаны вручную**. Черновой машинный перевод полностью замещён проверенными формулировками (`draft = 0`). Перевод регулярно валидируется автоматическими линтерами целостности плейсхолдеров, проверкой соблюдения глоссария (`glossary.json`) и детекторами переполнения верстки. Нашли неточность — кнопка «Сообщить о проблеме перевода» в карточке настроек создаёт готовый issue.
|
|
98
|
-
|
|
99
|
-
### 2. 🧩 Встроенный перевод 60+ плагинов экосистемы DSH (6589 ключей)
|
|
100
|
-
Локализация автоматически распространяется на все ключевые плагины экосистемы DeepSeek Harness:
|
|
101
|
-
* **`dsh-session-control`** — расширенное управление сессиями: закрепление диалогов, архив по периодам, просмотр расшифровок и фильтрация шума;
|
|
102
|
-
* **`dsh-kanban` и `task-board`** — канбан-доски задач, карточки, чек-листы, дедлайны, критерии готовности (DoD) и шлюз приёмки (Acceptance Gate);
|
|
103
|
-
* **`dsh-cost-meter`** — учёт стоимости токенов, калькуляция расходов и тарифные сетки моделей в реальном времени;
|
|
104
|
-
* **`dsh-goal`** — автономный целеполагающий агент с безопасным циклом и рефлексией;
|
|
105
|
-
* **`dsh-moa`** — многоагентная архитектура Mixture-of-Agents;
|
|
106
|
-
* **`dsh-context-lens` и `dsh-context`** — визуализатор и оптимизатор контекста, аналитика токенов и сжатие;
|
|
107
|
-
* **`dsh-time-machine`** — снимки рабочей области и откат состояний файлов;
|
|
108
|
-
* **`dsh-shadow-auditor`** — теневой аудит изменений и безопасность;
|
|
109
|
-
* **`dsh-cron` и `schedule.catalog`** — планировщик периодических cron-задач;
|
|
110
|
-
* **`dsh-clinebot` и `im-hub`** — интеграции и шлюзы для Telegram, Discord, Slack;
|
|
111
|
-
* **`dsh-subscriptions`** — управление персональными подписками на модели;
|
|
112
|
-
* **`dsh-voice` и `dsh-tts`** — распознавание речи и голосовое озвучивание;
|
|
113
|
-
* **`dsh-image-gen`** — генерация изображений;
|
|
114
|
-
* **`dsh-lanmode`** — сетевой доступ по локальной сети и генерация TLS-сертификатов;
|
|
115
|
-
* **`dsh-model-sync`** — синхронизация моделей и эндпоинтов;
|
|
116
|
-
* **`dsh-usage-guard` и `token-dashboard`** — контроль лимитов и аналитика расходов токенов;
|
|
117
|
-
* **`skills-manager` и `dsh-skill-hub`** — менеджер навыков агента и витрина способностей;
|
|
118
|
-
* **`commandcode` и `settings.commandcode`** — провайдеры команд и аккаунты;
|
|
119
|
-
* **`better-sidebar`, `better-input`, `opencode-palette`, `context-doctor`, `plugin-store`, `autoReview`** и др.
|
|
120
|
-
|
|
121
|
-
### 3. 🔢 Русские грамматические формы числительных (Plural)
|
|
122
|
-
Английский язык различает только `1` и `other`. Русский язык требует 3 грамматические формы числительных (`1 файл`, `2 файла`, `5 файлов` / `1 секунда`, `3 секунды`, `10 секунд`). Движок локализации автоматически подставляет правильные окончания в зависимости от числового значения.
|
|
123
|
-
|
|
124
|
-
### 4. ✍️ Интеллектуальный модуль типографики (`russian-lang.typography`)
|
|
125
|
-
Автоматически приводит тексты сообщений и описаний к правилам русской экранной типографики:
|
|
126
|
-
* Заменяет прямые "лапки" на правильные кавычки-«ёлочки» (а вложенные — на „лапки“);
|
|
127
|
-
* Заменяет дефисы между словами на длинные тире (—);
|
|
128
|
-
* Добавляет неразрывные пробелы после коротких союзов и предлогов, предотвращая висячие строки;
|
|
129
|
-
* **Безопасность кода**: типографика строго изолирована и никогда не затрагивает блоки исходного кода, формулы LaTeX и моноширинные поля ввода.
|
|
130
|
-
|
|
131
|
-
### 5. ⌨️ Исправление ошибочной раскладки клавиатуры (<kbd>Alt+L</kbd>)
|
|
132
|
-
Если вы забыли переключить раскладку и набрали текст латиницей (например, `ghjtrn d gzkmt` вместо `проект в пальто`), плагин мгновенно:
|
|
133
|
-
* Определяет ошибочный ввод в реальном времени;
|
|
134
|
-
* Показывает ненавязчивую плавающую подсказку над полем ввода;
|
|
135
|
-
* При нажатии горячей клавиши <kbd>Alt+L</kbd> мгновенно конвертирует набранный текст в правильную кириллицу.
|
|
136
|
-
|
|
137
|
-
### 6. 🔍 Интерактивный Инспектор перевода и живые оверрайды (<kbd>Alt+Click</kbd> / <kbd>Alt+I</kbd>)
|
|
138
|
-
Мощный встроенный инструмент для инспекции строк интерфейса и мгновенного редактирования переводов на лету:
|
|
139
|
-
* **Точечная инспекция (<kbd>Alt+Click</kbd>)**: зажмите клавишу <kbd>Alt</kbd> и кликните по любому элементу интерфейса (кнопке, пункту меню, лейблу), чтобы открыть модальное окно инспектора.
|
|
140
|
-
* **Постоянный режим (<kbd>Alt+I</kbd>)**: переключает интерфейс в интерактивный режим исследования — наведение курсора подсвечивает элементы аккуратной рамкой с бейджем источника (`Core`, `Plugin`, `DOM`, `Untranslated`), а в правом нижнем углу экрана отображается плавающий статус-виджет с кнопкой быстрого выхода.
|
|
141
|
-
* **Модальное окно инспектора**:
|
|
142
|
-
* Точное определение системного ключа, пространства имён и типа источника.
|
|
143
|
-
* Быстрое копирование ключа или готового стандартизированного Markdown-сниппета для баг-репорта в 1 клик.
|
|
144
|
-
* Поле ввода собственного перевода (оверрайда) с кнопкой **«Применить»**: мгновенно изменяет текст в DOM и сохраняет оверрайд в настройки (`russian-lang.overrides`) без перезагрузки страницы. Все аналогичные элементы интерфейса обновляются автоматически.
|
|
145
|
-
* Кнопка **«Сбросить»** для мгновенного отката к стандартному словарному переводу.
|
|
146
|
-
* **Управление в карточке настроек (Раздел 4.5)**:
|
|
147
|
-
* Кнопка быстрого включения/выключения инспектора (<kbd>Alt+I</kbd>).
|
|
148
|
-
* Кнопки **«Экспорт JSON»** и **«Импорт JSON»** для резервного копирования, переноса и синхронизации списка ваших оверрайдов между браузерами и рабочими профилями.
|
|
149
|
-
|
|
150
|
-
### 7. ⚡ Оптимизации производительности и архитектурная безопасность
|
|
151
|
-
* **Пакетная обработка MutationObserver**: оптимизированный наблюдатель мутаций интерфейса с адаптивным debounce (16 мс) предотвращает лавинообразные перерисовки и перерасчёт макета (reflow) при интенсивном рендеринге списков и стриминге LLM-токенов.
|
|
152
|
-
* **Защита HTTP-маршрутов словарей (405 Method Not Allowed)**: серверные эндпоинты `/dict/core`, `/dict/plugins`, `/dict/all`, `/dict/search` строго защищены и принимают только безопасные методы GET/HEAD.
|
|
153
|
-
* **Клиентский бандл с запасом**: оптимизированная архитектура и компактный бутстрап обеспечивают размер клиентского скрипта 153.7 KiB (запас более 10 KiB до предельного лимита).
|
|
154
|
-
|
|
155
|
-
### 8. 🔤 Нативная интеграция в ядро
|
|
156
|
-
Плагин нативно регистрирует пункт **«Русский»** в меню **Настройки → Общие → Язык**, переключает атрибут `<html lang="ru-RU">` и активирует встроенный браузерный словарь проверки орфографии (`spellcheck`).
|
|
157
|
-
|
|
158
|
-
---
|
|
159
|
-
|
|
160
|
-
## 📦 Установка
|
|
161
|
-
|
|
162
|
-
```bash
|
|
163
|
-
dsh plugin --profile web add @goodandready/dsh-russian-lang
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
После установки откройте веб-интерфейс, перейдите в **Настройки → Общие → Язык**, выберите **«Русский»** и обновите страницу.
|
|
167
|
-
|
|
168
|
-
---
|
|
169
|
-
|
|
170
|
-
## ⚙️ Параметры конфигурации (`settings.yaml`)
|
|
171
|
-
|
|
172
|
-
Пространство настроек — `russian-lang`. Схема объявлена в [`lib/index.js`](lib/index.js),
|
|
173
|
-
все поля необязательные:
|
|
174
|
-
|
|
175
|
-
```yaml
|
|
176
|
-
russian-lang:
|
|
177
|
-
enabled: true # Русский язык интерфейса
|
|
178
|
-
typography:
|
|
179
|
-
enabled: true # Ёлочки, длинные тире, неразрывные пробелы
|
|
180
|
-
yo: false # Восстанавливать «ё» (по умолчанию выключено)
|
|
181
|
-
agentPrompt: false # Просить агента отвечать по-русски
|
|
182
|
-
overrides: {} # Свои значения для любых ключей перевода
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
Проще то же самое — в **Настройки → Плагины → Русская локализация**.
|
|
186
|
-
|
|
187
|
-
Исправление раскладки (<kbd>Alt+L</kbd>) и браузерный спелчек включаются вместе с
|
|
188
|
-
русским языком и отдельных ключей не имеют.
|
|
189
|
-
|
|
190
|
-
---
|
|
191
|
-
|
|
192
|
-
## 📄 Лицензия
|
|
193
|
-
|
|
194
|
-
MIT © [GooDAnDReaDY](https://github.com/GooDAnDReaDY)
|
package/docs/media/banner.jpg
DELETED
|
Binary file
|