@goodandready/dsh-russian-lang 0.2.10 → 0.2.12
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 +10 -10
- package/docs/media/banner.jpg +0 -0
- package/lib/client.js +229 -92
- package/lib/pure.js +6 -2
- package/package.json +2 -2
- package/ru-plugins/07-better-sidebar.json +8 -1
- package/ru-plugins/17-dsh-context.json +5 -2
- package/ru-plugins/54-workshop-market.json +58 -0
- package/ru-plugins/55-skin-center.json +97 -0
package/lib/pure.js
CHANGED
|
@@ -184,16 +184,20 @@ export const ERROR_MAP = {
|
|
|
184
184
|
EACCES: { title: 'Отказано в доступе', message: 'Недостаточно прав для чтения или записи', hint: 'Проверьте права доступа к файлу или директории (chmod/chown).' },
|
|
185
185
|
EPERM: { title: 'Операция запрещена', message: 'Недостаточно системных привилегий', hint: 'Запустите процесс с соответствующими правами.' },
|
|
186
186
|
ECONNREFUSED: { title: 'Соединение отклонено', message: 'Целевой сервер или сервис не отвечает', hint: 'Убедитесь, что локальный или удаленный сервис запущен и слушает порт.' },
|
|
187
|
+
ECONNRESET: { title: 'Сброс соединения', message: 'Соединение было принудительно разорвано удаленной стороной', hint: 'Проверьте стабильность сети и работу целевого сервера.' },
|
|
187
188
|
ETIMEDOUT: { title: 'Таймаут соединения', message: 'Превышено время ожидания ответа', hint: 'Проверьте стабильность сети или увеличьте лимит ожидания.' },
|
|
188
189
|
ENOTFOUND: { title: 'Хост не найден', message: 'Не удалось разрешить сетевой адрес', hint: 'Проверьте правильность URL или настройки DNS.' },
|
|
189
190
|
EADDRINUSE: { title: 'Порт уже занят', message: 'Сетевой порт используется другим процессом', hint: 'Остановите конфликтующий процесс или выберите другой порт.' },
|
|
191
|
+
ENOSPC: { title: 'Недостаточно места на диске', message: 'На устройстве закончилось свободное пространство', hint: 'Освободите место на диске и повторите операцию.' },
|
|
192
|
+
400: { title: 'Некорректный запрос (Bad Request)', message: 'Параметры запроса не соответствуют ожидаемому формату', hint: 'Проверьте синтаксис команды или переданные аргументы.' },
|
|
190
193
|
401: { title: 'Требуется авторизация', message: 'API-ключ или токен отсутствуют или недействительны', hint: 'Проверьте настройки учетных данных и актуальность токена.' },
|
|
191
194
|
403: { title: 'Доступ запрещен', message: 'Недостаточно прав для выполнения операции', hint: 'Проверьте область действия токена или права роли.' },
|
|
192
195
|
404: { title: 'Ресурс не найден', message: 'Запрошенный адрес или объект не существует', hint: 'Проверьте правильность пути или идентификатора ресурса.' },
|
|
193
196
|
429: { title: 'Превышен лимит запросов', message: 'Слишком много запросов (Rate Limit)', hint: 'Подождите несколько минут перед повторным запросом.' },
|
|
194
197
|
500: { title: 'Внутренняя ошибка сервера', message: 'На стороне сервера произошел сбой', hint: 'Попробуйте повторить запрос позже или проверьте серверные логи.' },
|
|
195
198
|
502: { title: 'Ошибочный шлюз (Bad Gateway)', message: 'Промежуточный прокси не получил корректный ответ', hint: 'Проверьте работу нижележащей службы или upstream-сервера.' },
|
|
196
|
-
503: { title: 'Служба временно недоступна', message: 'Сервер перегружен или находится на обслуживании', hint: 'Попробуйте повторить операцию через некоторое время.' }
|
|
199
|
+
503: { title: 'Служба временно недоступна', message: 'Сервер перегружен или находится на обслуживании', hint: 'Попробуйте повторить операцию через некоторое время.' },
|
|
200
|
+
504: { title: 'Шлюз не отвечает (Gateway Timeout)', message: 'Превышено время ожидания ответа от upstream-сервера', hint: 'Попробуйте повторить запрос позже.' }
|
|
197
201
|
}
|
|
198
202
|
|
|
199
203
|
const fromMap = (key, rawMsg) => ({
|
|
@@ -204,7 +208,7 @@ export const humanizeError = (err) => {
|
|
|
204
208
|
if (!err) return null
|
|
205
209
|
const rawMsg = typeof err === 'string' ? err : (err.message || String(err))
|
|
206
210
|
const code = err.code || (rawMsg.match(/\b(E[A-Z]{2,20})\b/) || [])[1]
|
|
207
|
-
const status = err.status || err.statusCode || (rawMsg.match(/\b([45]\d{2})\b/) || [])[1]
|
|
211
|
+
const status = err.status || err.statusCode || (err.response && err.response.status) || (rawMsg.match(/\b([45]\d{2})\b/) || [])[1]
|
|
208
212
|
const lookupKey = code || status
|
|
209
213
|
if (lookupKey && ERROR_MAP[lookupKey]) return fromMap(lookupKey, rawMsg)
|
|
210
214
|
if (/rate limit|too many requests/i.test(rawMsg)) return fromMap(429, rawMsg)
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goodandready/dsh-russian-lang",
|
|
3
|
-
"version": "0.2.
|
|
4
|
-
"description": "Russian localization for DeepSeek Harness (DSH v0.1.5-
|
|
3
|
+
"version": "0.2.12",
|
|
4
|
+
"description": "Russian localization for DeepSeek Harness (DSH v0.1.5-rc.1+) web UI: adds Русский as the native language option in Settings - General - Language. 100.0% coverage across 5688 keys (1225 core UI keys + 4463 keys across 40+ ecosystem plugins) with zero machine drafts. Features unified dsh-clinebot visual design standard for Settings Card, Smart Russian UX (localized Markdown export, turn translation, live typography, slash command aliases, Alt+L layout fix), expanded error humanizer (POSIX, HTTP 4xx/5xx), Skin Center & Wallpaper Engine support, Workshop market integration, sidebar previewers, and runtime snapshot extension without modifying core files.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"exports": {
|
|
@@ -476,6 +476,13 @@
|
|
|
476
476
|
"pluginVideoPreviewName": "Предпросмотр видео",
|
|
477
477
|
"presetDshDesktopDesc": "Расширенный режим Electron (безрамочный): macOS резервирует верхнюю полосу 20px; Windows резервирует заголовок 32px, если WCO недоступен",
|
|
478
478
|
"rename": "Переименовать",
|
|
479
|
-
"renameInvalid": "Имя не может быть пустым или содержать разделители пути."
|
|
479
|
+
"renameInvalid": "Имя не может быть пустым или содержать разделители пути.",
|
|
480
|
+
"guideDescFiles": "Просмотр дерева рабочей области; клик по файлу открывает предпросмотр или редактор",
|
|
481
|
+
"guideDescGit": "Изменения Git и правки файлов текущей сессии на одной вкладке",
|
|
482
|
+
"guideDescSubagent": "Топология субагентов и фоновые задачи в реальном времени",
|
|
483
|
+
"guideDescSidechat": "Независимая ветка диалога, наследующая контекст текущей сессии",
|
|
484
|
+
"guideDescTerminal": "Полноценный терминал (xterm + pty) с автоматическим переподключением",
|
|
485
|
+
"guideDescBrowser": "Встроенный браузер для открытия ссылок непосредственно из чата",
|
|
486
|
+
"terminalShellNotFound": "Настроенный командный шелл не найден: {name} — проверьте путь к шеллу в Настройки → Боковая карточка → Терминал"
|
|
480
487
|
}
|
|
481
488
|
}
|
|
@@ -291,6 +291,9 @@
|
|
|
291
291
|
"trend.focus": "Отображается только {cat}",
|
|
292
292
|
"sidebar.guideDescription": "Анализ состава контекста сессии, пошаговой истории и сообщений.",
|
|
293
293
|
"trend.adaptive": "Адаптивный",
|
|
294
|
-
"trend.adaptiveHint": "Масштабировать высоту столбцов под видимый диапазон с учётом прокрутки"
|
|
294
|
+
"trend.adaptiveHint": "Масштабировать высоту столбцов под видимый диапазон с учётом прокрутки",
|
|
295
|
+
"timing.reasoning": "Размышление",
|
|
296
|
+
"timing.text": "Ответ",
|
|
297
|
+
"timing.toolArgs": "Аргументы инструментов"
|
|
295
298
|
}
|
|
296
|
-
}
|
|
299
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
{
|
|
2
|
+
"dsh-web-ui-market": {
|
|
3
|
+
"settings.collapse": "Свернуть",
|
|
4
|
+
"settings.expand": "Развернуть",
|
|
5
|
+
"settings.notExposed": "Раздел недоступен (отсутствует пространство имён хоста)",
|
|
6
|
+
"settings.unsaved": "Несохранённые изменения",
|
|
7
|
+
"settings.readOnly": "Только чтение",
|
|
8
|
+
"settings.saveFailed": "Не удалось сохранить",
|
|
9
|
+
"settings.discard": "Отменить изменения",
|
|
10
|
+
"settings.save": "Сохранить",
|
|
11
|
+
"settings.saving": "Сохранение…",
|
|
12
|
+
"settings.overridden": "Переопределяет умолчание",
|
|
13
|
+
"settings.reset": "Сбросить",
|
|
14
|
+
"settings.invalidNumber": "Недопустимое значение",
|
|
15
|
+
"settings.inherit": "Наследовать",
|
|
16
|
+
"settings.on": "Вкл",
|
|
17
|
+
"settings.off": "Выкл",
|
|
18
|
+
"settings.title": "Витрина (Workshop)",
|
|
19
|
+
"settings.description": "Просматривайте скины, питомцев и плагины сообщества с dsh-market.com и устанавливайте их локально в один клик.",
|
|
20
|
+
"settings.enable": "Включить карточку витрины",
|
|
21
|
+
"settings.enableHint": "Скрывает содержимое витрины, оставляя только переключатель.",
|
|
22
|
+
"tab.skin": "Скины",
|
|
23
|
+
"tab.pet": "Питомцы",
|
|
24
|
+
"tab.plugin": "Плагины",
|
|
25
|
+
"search.label": "Поиск по названию, автору или описанию…",
|
|
26
|
+
"result.count": "Показано {shown} из {total}",
|
|
27
|
+
"empty": "Список витрины пуст (нет подключения к сети? нажмите «Повторить»)",
|
|
28
|
+
"noMatch": "Ничего не найдено",
|
|
29
|
+
"retry": "Повторить",
|
|
30
|
+
"online": null,
|
|
31
|
+
"offline": "Данные витрины недоступны",
|
|
32
|
+
"install": "Установить",
|
|
33
|
+
"installNow": "Установить сейчас",
|
|
34
|
+
"installing": "Установка…",
|
|
35
|
+
"installed": "Установлено",
|
|
36
|
+
"installFailed": "Ошибка установки: {reason}",
|
|
37
|
+
"installSpecInvalid": "Неверный источник установки; поддерживаются только имена npm-пакетов и git-ссылки https://",
|
|
38
|
+
"copied": "Скопировано",
|
|
39
|
+
"copyCommand": "Скопировать команду установки",
|
|
40
|
+
"command.title": "Скопируйте эту команду в терминал хоста DSH",
|
|
41
|
+
"conflict.title": "Каталог с таким именем уже существует",
|
|
42
|
+
"conflict.text": "Каталог {dest} уже существует. Продолжение перезапишет файлы старой версией (действие необратимо).",
|
|
43
|
+
"replace": "Заменить и установить",
|
|
44
|
+
"cancel": "Отмена",
|
|
45
|
+
"preview": "Предпросмотр",
|
|
46
|
+
"openSite": "Открыть сайт витрины",
|
|
47
|
+
"repository": "Исходный репозиторий",
|
|
48
|
+
"like": "Нравится",
|
|
49
|
+
"liked": "Понравилось",
|
|
50
|
+
"likeFailed": "Не удалось поставить лайк",
|
|
51
|
+
"badge.market": "dsh-market.com",
|
|
52
|
+
"install.path": "Каталог установки: {path}",
|
|
53
|
+
"installedAt": "Установлено в {path}",
|
|
54
|
+
"loading": "Загрузка…",
|
|
55
|
+
"votes": "{count} голосов",
|
|
56
|
+
"remote.note": "В удалённых браузерах доступен только просмотр и копирование команд; установка в один клик требует локального браузера (loopback)."
|
|
57
|
+
}
|
|
58
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
{
|
|
2
|
+
"skinCenter": {
|
|
3
|
+
"title": "Центр оформления",
|
|
4
|
+
"cardDescription": "Переключайте стандартный вид и скин «Песнь кита», а также светлую и тёмную темы.",
|
|
5
|
+
"enabled": "Включить центр оформления",
|
|
6
|
+
"enabledHint": "При выключении примерка, применение и настройки фона будут отключены; включите обратно для возобновления.",
|
|
7
|
+
"offNote": "Центр оформления выключен.",
|
|
8
|
+
"intro": "Примеряйте любые скины вживую — они вступают в силу мгновенно, выход возвращает текущий вид. Применение сохраняет скин между перезапусками.",
|
|
9
|
+
"official": "Официальный по умолчанию",
|
|
10
|
+
"officialTagline": "Стандартный внешний вид DSH без применения скинов.",
|
|
11
|
+
"active": "Активен",
|
|
12
|
+
"tryingOn": "Примерка…",
|
|
13
|
+
"tryOn": "Примерить",
|
|
14
|
+
"loading": "Загрузка…",
|
|
15
|
+
"exitTryOn": "Завершить примерку",
|
|
16
|
+
"apply": "Применить",
|
|
17
|
+
"applying": "Применение…",
|
|
18
|
+
"restore": "Восстановить",
|
|
19
|
+
"applyFailed": "Не удалось применить",
|
|
20
|
+
"appliedUnconfirmed": "Применено, но изменение не подтверждено — обновите страницу в dev-режиме; готовым сборкам (DSH Desktop) требуется перезапуск",
|
|
21
|
+
"appliedNeedRestart": "Применено и подтверждено, но хост не выполнил горячую перезагрузку — перезапустите DSH для применения изменений",
|
|
22
|
+
"theme": "Предпросмотр темы",
|
|
23
|
+
"themeLight": "Светлая",
|
|
24
|
+
"themeDark": "Тёмная",
|
|
25
|
+
"advanced": "Расширенные настройки",
|
|
26
|
+
"advancedHint": "Затемнение фона, размытие и пользовательская тема расположены ниже.",
|
|
27
|
+
"tryOnError": "Ошибка примерки — см. консоль",
|
|
28
|
+
"backgroundOpacity": "Затемнение фона",
|
|
29
|
+
"backgroundBlurEmpty": "Размытие на пустом экране",
|
|
30
|
+
"backgroundBlurContent": "Размытие при наличии сообщений",
|
|
31
|
+
"inputCardBlur": "Размытие карточки ввода",
|
|
32
|
+
"inputCardBlurHint": "Размывает только область под карточкой ввода при видимом фоне; не размывает обои целиком.",
|
|
33
|
+
"bubbleOpacity": "Прозрачность сообщений",
|
|
34
|
+
"bubbleOpacityHint": "Регулирует полупрозрачность блоков сообщений для скинов с поддержкой альфа-канала.",
|
|
35
|
+
"backgroundBlurHint": "Применяет раздельное гауссово размытие фона для пустого диалога и диалога с сообщениями; 0 отключает размытие.",
|
|
36
|
+
"backgroundBlurInert": "Видимо только у скинов с фоновым артом; в официальном скине по умолчанию фон отсутствует.",
|
|
37
|
+
"backgroundHint": "Мгновенно накладывает вуаль на фон под панелями — высокие значения скрывают арт, помогая сосредоточиться.",
|
|
38
|
+
"backgroundHintInert": "Применяется только к скинам с фоновым рисунком (Голубая фантазия / Песнь кита). Автоматически применяется к стандартному скину при активации такого скина.",
|
|
39
|
+
"wallpaperTitle": "Wallpaper Engine",
|
|
40
|
+
"wallpaperEnable": "Включить живые обои",
|
|
41
|
+
"wallpaperHint": "Используйте локальную библиотеку Wallpaper Engine в качестве фона интерфейса: видео, веб-страницы и сцены рендерятся вживую (для сцен требуется WebGL).",
|
|
42
|
+
"wallpaperLoadError": "Не удалось загрузить библиотеку обоев",
|
|
43
|
+
"wallpaperLibraryFound": "Обнаружена библиотека Wallpaper Engine",
|
|
44
|
+
"wallpaperLibraryManual": "Только пользовательские папки (Wallpaper Engine не найден; укажите папки в настройках обоев)",
|
|
45
|
+
"wallpaperLibrarySystem": "Обнаружены системные обои macOS (аэропанорамы и обои рабочего стола)",
|
|
46
|
+
"wallpaperRefresh": "Обновить",
|
|
47
|
+
"wallpaperMode": "Режим рендеринга",
|
|
48
|
+
"wallpaperModeLive": "Живой",
|
|
49
|
+
"wallpaperModeFrame": "Статичный кадр",
|
|
50
|
+
"wallpaperFit": "Масштабирование",
|
|
51
|
+
"wallpaperFitCover": "Заполнение (с обрезкой)",
|
|
52
|
+
"wallpaperFitContain": "Вписать (целиком)",
|
|
53
|
+
"wallpaperFitFill": "Растянуть",
|
|
54
|
+
"wallpaperClear": "Отключить обои",
|
|
55
|
+
"wallpaperDim": "Затемнение обоев",
|
|
56
|
+
"wallpaperOpacity": "Непрозрачность обоев",
|
|
57
|
+
"wallpaperBlur": "Размытие обоев",
|
|
58
|
+
"wallpaperPauseHidden": "Ставить на паузу при скрытии окна",
|
|
59
|
+
"wallpaperSound": "Звук обоев",
|
|
60
|
+
"wallpaperSoundHint": "Воспроизведение аудиодорожки видео-обоев. Браузер может держать звук на паузе до первого клика или нажатия клавиши.",
|
|
61
|
+
"wallpaperVolume": "Громкость обоев",
|
|
62
|
+
"wallpaperImport": "Импортировать",
|
|
63
|
+
"wallpaperImportHint": "Скопировать эти обои в локальное хранилище, чтобы они продолжали работать даже при перемещении библиотеки Steam",
|
|
64
|
+
"wallpaperReimport": "Обновить",
|
|
65
|
+
"wallpaperRemove": "Удалить",
|
|
66
|
+
"wallpaperUpdateAvailable": "Оригинал в Workshop изменился после импорта — обновите локальную копию",
|
|
67
|
+
"wallpaperEmpty": "Обои не найдены. Подпишитесь на них в мастерской Wallpaper Engine или добавьте папки в настройках.",
|
|
68
|
+
"wallpaperTypeVideo": "Видео",
|
|
69
|
+
"wallpaperTypeWeb": "Веб",
|
|
70
|
+
"wallpaperTypeScene": "Сцена (статичная)",
|
|
71
|
+
"wallpaperTypeApp": "Не поддерживается",
|
|
72
|
+
"wallpaperTypeImage": "Изображение",
|
|
73
|
+
"wallpaperLoadMore": "Загрузить ещё",
|
|
74
|
+
"wallpaperDirs": "Пользовательские папки",
|
|
75
|
+
"wallpaperDirsEmpty": "Пока нет добавленных папок.",
|
|
76
|
+
"wallpaperDirsHint": "Нет Wallpaper Engine (например, на macOS)? Укажите папку с файлами .mp4/.webm или проектами обоев — они станут вашей библиотекой обоев.",
|
|
77
|
+
"wallpaperDirPlaceholder": "/path/to/wallpapers или ~/Movies/wallpapers",
|
|
78
|
+
"wallpaperDirAdd": "Добавить",
|
|
79
|
+
"wallpaperDirBrowse": "Обзор…",
|
|
80
|
+
"wallpaperDirBrowseHint": "Выберите папку через системный проводник (Finder / Проводник)",
|
|
81
|
+
"wallpaperDirBrowseFailed": "Не удалось открыть системный диалог выбора папки — введите путь вручную",
|
|
82
|
+
"customThemeTitle": "Пользовательская тема",
|
|
83
|
+
"customThemeTagline": "Отдельно сохраняемая палитра, основанная на официальной теме по умолчанию.",
|
|
84
|
+
"customThemeEdit": "Настроить",
|
|
85
|
+
"customThemeCloseEdit": "Свернуть",
|
|
86
|
+
"customThemeMode": "Режим редактирования",
|
|
87
|
+
"customThemeLight": "Светлая",
|
|
88
|
+
"customThemeDark": "Тёмная",
|
|
89
|
+
"customThemeAccent": "Акцент",
|
|
90
|
+
"customThemeBackground": "Фон",
|
|
91
|
+
"customThemeForeground": "Текст",
|
|
92
|
+
"customThemeContrast": "Контраст",
|
|
93
|
+
"customThemeReset": "Восстановить умолчания текущего режима",
|
|
94
|
+
"customThemeResetHint": "Сбрасывает только выбранный светлый или тёмный профиль.",
|
|
95
|
+
"customThemeSaveFailed": "Не удалось сохранить изменения пользовательской темы."
|
|
96
|
+
}
|
|
97
|
+
}
|