@goodandready/dsh-russian-lang 0.2.9 → 0.2.11

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/lib/pure.js CHANGED
@@ -363,11 +363,8 @@ export const formatInputLive = (text) => {
363
363
  let s = parts[i]
364
364
  if (!s) continue
365
365
 
366
- // 1. Троеточие
367
- s = s.replace(/\.{3}/g, '…')
368
-
369
366
  // 2. Длинное тире (-- -> —)
370
- s = s.replace(/(^|\s)--(\s|$)/g, '$1—$2')
367
+ s = s.replace(/--/g, '')
371
368
 
372
369
  // 3. Кавычки-ёлочки («...») с учётом открывающейся/закрывающейся
373
370
  s = s.replace(/(^|[\s([{-])"/g, '$1«')
@@ -385,6 +382,9 @@ export const formatInputLive = (text) => {
385
382
 
386
383
  export const RUSSIAN_SLASH_ALIASES = {
387
384
  '/цель': '/goal',
385
+ '/справка': '/help',
386
+ '/задача': '/task',
387
+ '/контекст': '/context',
388
388
  '/сжать': '/compact',
389
389
  '/план': '/plan',
390
390
  '/экспорт': '/export',
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@goodandready/dsh-russian-lang",
3
- "version": "0.2.9",
4
- "description": "Russian localization for DeepSeek Harness (DSH v0.1.5-alpha.1+) web UI: adds Русский as the native language option in Settings - General - Language. 100.0% coverage across 5395 keys (1144 core UI keys + 4251 keys across 40+ ecosystem plugins) with zero machine drafts. Features Russian plural forms (one/few/many), automatic typography pass (guillemets, em dashes, non-breaking spaces, optional ё), wrong-layout input hint (Alt+L), browser spellcheck, and runtime snapshot extension without modifying core files.",
3
+ "version": "0.2.11",
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 Smart Russian UX (localized Markdown export, turn translation, live typography, slash command aliases, Alt+L layout fix), 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": {
@@ -44,7 +44,8 @@
44
44
  "session.new": "Новая сессия",
45
45
  "session.new.label": "Новая сессия",
46
46
  "toggle.collapse": "Свернуть панель",
47
- "toggle.open": "Открыть панель"
47
+ "toggle.open": "Открыть панель",
48
+ "panels.label": "Глобальные панели"
48
49
  },
49
50
  "settings": {
50
51
  "close": "Закрыть",
@@ -92,7 +93,41 @@
92
93
  "produced.more": "+ {count} файлов",
93
94
  "produced.moreOne": "+ 1 файл",
94
95
  "produced.open": "Открыть {name}",
95
- "produced.showInFolder": "Показать в папке"
96
+ "produced.showInFolder": "Показать в папке",
97
+ "presented.action": "Открыть",
98
+ "presented.all": "Все {count} файлов",
99
+ "presented.collapse": "Свернуть",
100
+ "presented.collapseAria": "Свернуть файлы результатов",
101
+ "presented.defaultApp": "Открыть в приложении по умолчанию",
102
+ "presented.directory": "Открыть папку с файлом",
103
+ "presented.directoryError": "Не удалось открыть папку с файлом. Попробуйте снова.",
104
+ "presented.directoryOpened": "Запрошено открытие папки с файлом",
105
+ "presented.directoryOpening": "Открытие папки с файлом…",
106
+ "presented.error": "Не удалось открыть. Нажмите для повтора.",
107
+ "presented.expandAria": "Показать все {count} файлов результатов",
108
+ "presented.explorer": "Показать в Проводнике",
109
+ "presented.file": "Файл",
110
+ "presented.finder": "Показать в Finder",
111
+ "presented.hostError": "Не удалось прочитать сведения о рабочем столе хоста",
112
+ "presented.more": "Другие действия с файлом {name}",
113
+ "presented.nativeUnavailable": "Для этого файла нет доступного пути на хосте. Просмотрите его на боковой панели.",
114
+ "presented.open": "Открыть {name} в приложении по умолчанию",
115
+ "presented.opened": "Открыто в приложении по умолчанию",
116
+ "presented.opening": "Открытие…",
117
+ "presented.preview": "Предпросмотр на боковой панели",
118
+ "presented.previewButton": "Открыть {name} на боковой панели",
119
+ "presented.previewCard": "Предпросмотр {name} на боковой панели",
120
+ "presented.retry": "Повторить",
121
+ "presented.revealError": "Не удалось показать в файловом менеджере. Попробуйте снова.",
122
+ "presented.revealed": "Запрошен показ в файловом менеджере",
123
+ "presented.revealing": "Отображение в файловом менеджере…",
124
+ "presented.unavailable": "На этом хосте нет доступного рабочего стола для открытия файлов или папок",
125
+ "row.error": "Сбой создания результатов",
126
+ "row.inspect": "Инспектировать вызов",
127
+ "row.ok": "Результаты подготовлены",
128
+ "row.running": "Подготовка результатов",
129
+ "row.stopped": "Прервано",
130
+ "row.title": "Предоставление файлов"
96
131
  },
97
132
  "command": {
98
133
  "listbox.aria": "Совпадения /{command}",
@@ -125,7 +160,9 @@
125
160
  "dialog.preparingTitle": "Экспорт сессии",
126
161
  "dialog.successDescription": "Браузер загружает ZIP с сессией.",
127
162
  "dialog.successTitle": "Загрузка сессии началась",
128
- "header.action": "Журнал сессии"
163
+ "header.action": "Журнал сессии",
164
+ "header.more": "Другие действия",
165
+ "menu.download": "Скачать журнал сессии"
129
166
  },
130
167
  "approval": {
131
168
  "allowOnce": "Разрешить один раз",
@@ -138,7 +175,9 @@
138
175
  "action.inspect": "Инспектировать"
139
176
  },
140
177
  "model": {
141
- "trigger.loading": "Загрузка моделей…"
178
+ "trigger.loading": "Загрузка моделей…",
179
+ "option.deepseekV4Flash.description": "Быстрая, эффективная и экономичная; подходит для типовых, повседневных или параллельных задач.",
180
+ "option.deepseekV4Pro.description": "Улучшенное агентное написание кода, глубокие знания и сложное мышление; подходит для комплексных задач с высокими требованиями к качеству при более высокой стоимости."
142
181
  },
143
182
  "permission.access": {
144
183
  "preset.fullAccess": "Полный доступ",
@@ -159,4 +198,4 @@
159
198
  "tokens.thousand": "{value}K",
160
199
  "tokens.total": "{value} ток."
161
200
  }
162
- }
201
+ }
@@ -98,7 +98,8 @@
98
98
  "settingsPathUnresolvable": "неразрешимый путь настроек",
99
99
  "welcomeBody": "DeepSeek Harness 0.1 находится на стадии тестирования для разработчиков Harness. Многие компоненты требуют дальнейшего улучшения, и мы приветствуем обратную связь от сообщества. Базовые плагины и системные API DeepSeek Harness продолжат активно развиваться в ближайшие месяцы.\n\nМы с нетерпением ждём возможности исследовать границы искусственного интеллекта вместе с разработчиками по всему миру на базе открытой, модульной и повторно используемой инфраструктуры. Приглашаем разработчиков присоединиться к экосистеме плагинов DSH.",
100
100
  "welcomeContinue": "Продолжить",
101
- "welcomeTitle": "Уведомление о внутреннем тестировании"
101
+ "welcomeTitle": "Уведомление о внутреннем тестировании",
102
+ "customBaseUrlInvalid": "Введите корректный URL (HTTP или HTTPS)."
102
103
  },
103
104
  "workspace": {
104
105
  "actions.newSession.aria": "Новая сессия в {name}",
@@ -186,4 +187,4 @@
186
187
  "connection.restart": "Подключение, перезапустить сейчас",
187
188
  "connection.retry": "Переподключиться сейчас"
188
189
  }
189
- }
190
+ }
package/ru/06-rest.json CHANGED
@@ -100,7 +100,20 @@
100
100
  "note.dialog": "Отзыв",
101
101
  "note.open": "Добавить комментарий",
102
102
  "note.placeholder": "Что получилось хорошо, а что нет? (необязательно)",
103
- "note.save": "Сохранить"
103
+ "note.save": "Сохранить",
104
+ "category.instruction-following": "Понимание и следование инструкциям",
105
+ "category.other": "Другое",
106
+ "category.product-interaction": "Возможности продукта и взаимодействие",
107
+ "category.resource-cost": "Использование ресурсов и стоимость",
108
+ "category.security-privacy-permission": "Безопасность, конфиденциальность и разрешения",
109
+ "category.service-stability": "Стабильность работы сервиса",
110
+ "category.task-result": "Результат выполнения задачи",
111
+ "dialog.categories": "Категория отзыва",
112
+ "dialog.detail": "Подробности отзыва",
113
+ "dialog.hint": "Добавьте детали, чтобы помочь нам стать лучше. Ваше сообщение будет включать журнал текущей беседы.",
114
+ "dialog.title": "Отправить отзыв",
115
+ "error.noteTooLarge": "Описание слишком длинное; сократите его и отправьте снова",
116
+ "toast.recorded": "Спасибо за ваш отзыв"
104
117
  },
105
118
  "reference": {
106
119
  "candidate.file": "Файл",
@@ -167,7 +180,14 @@
167
180
  "guide.body": "Файлы и артефакты из диалога открываются в этой колонке; элементы ниже открывают больше возможностей.",
168
181
  "guide.lead": "В боковой панели отображается то, к чему вам нужен постоянный доступ.",
169
182
  "tab.guide.title": "Начало",
170
- "tab.unavailable": "Пока нет средств для отображения данного типа содержимого."
183
+ "tab.unavailable": "Пока нет средств для отображения данного типа содержимого.",
184
+ "chrome.collapseAria": "Свернуть правую боковую панель",
185
+ "chrome.expandAria": "Открыть правую боковую панель",
186
+ "dock.drop.bottom": "Разделить по горизонтали снизу",
187
+ "dock.drop.center": "Переместить сюда",
188
+ "dock.drop.left": "Разделить по вертикали слева",
189
+ "dock.drop.right": "Разделить по вертикали справа",
190
+ "dock.drop.top": "Разделить по горизонтали сверху"
171
191
  },
172
192
  "sidebarFiles": {
173
193
  "empty": "Файлы не найдены",
@@ -234,4 +254,4 @@
234
254
  "open.title": "Открыть рабочую область в {app}",
235
255
  "open.tooltip": "Открыть локально"
236
256
  }
237
- }
257
+ }
@@ -0,0 +1,57 @@
1
+ {
2
+ "documentMarkdown": {
3
+ "code.copied": "Скопировано",
4
+ "code.copy": "Копировать",
5
+ "footnotes": "Сноски",
6
+ "viewer.label": "Markdown"
7
+ },
8
+ "documentHtml": {
9
+ "failed": "Не удалось отобразить предпросмотр этого HTML-документа.",
10
+ "frame": "Предпросмотр HTML-документа",
11
+ "loading": "Подготовка предпросмотра HTML…",
12
+ "title": "HTML"
13
+ },
14
+ "sidebarImage": {
15
+ "failed": "Не удалось отобразить изображение.",
16
+ "loading": "Открытие изображения…",
17
+ "preview": "Предпросмотр изображения: {name}",
18
+ "title": "Изображение",
19
+ "unsupported": "Для предпросмотра изображения требуется полное содержимое файла."
20
+ },
21
+ "sidebarPdf": {
22
+ "failed": "Не удалось отобразить PDF: {message}",
23
+ "loading": "Открытие PDF…",
24
+ "pageImage": "Страница PDF {page}",
25
+ "password": "Этот PDF защищён паролем; предпросмотр документов с паролем не поддерживается.",
26
+ "rendering": "Рендеринг страницы…",
27
+ "retry": "Повторить",
28
+ "title": "PDF",
29
+ "unsupported": "Для предпросмотра PDF требуется полное содержимое файла.",
30
+ "workerFailed": "Процесс рендеринга PDF не смог продолжить работу. Попробуйте снова."
31
+ },
32
+ "sidebarCodePreview": {
33
+ "copied": "Скопировано",
34
+ "copy": "Копировать",
35
+ "title": "Код"
36
+ },
37
+ "sidebarDocumentPreview": {
38
+ "changed": "Файл изменился, показано предыдущее содержимое.",
39
+ "error.notFound": "Файл не найден. Возможно, он был перемещён или удалён.",
40
+ "error.notRegularFile": "Не является обычным файлом, нечего отобразить.",
41
+ "error.notText": "Не текстовый файл, предпросмотр пока недоступен.",
42
+ "error.tooLarge": "Размер страницы превышает лимит {limit} и не может быть прочитан.",
43
+ "error.unavailable": "Сбой чтения: {message}",
44
+ "loadMore": "Загрузить ещё",
45
+ "loading": "Чтение…",
46
+ "openWith": "Открыть с помощью",
47
+ "reload": "Перечитать файл",
48
+ "reloadNow": "Обновить",
49
+ "rendererUnavailable": "Предпросмотр {name} недоступен.",
50
+ "resourceUnavailable": "Служба файловых ресурсов недоступна.",
51
+ "retry": "Повторить",
52
+ "viewer.text": "Простой текст",
53
+ "wrap.aria": "Перенос строк",
54
+ "wrap.disable": "Отключить перенос строк",
55
+ "wrap.enable": "Включить перенос строк"
56
+ }
57
+ }
@@ -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
  }
@@ -288,6 +288,12 @@
288
288
  "detail.loadFailed": "Не удалось загрузить историю — нажмите для повтора",
289
289
  "detail.loading": "Загрузка истории…",
290
290
  "tip.cat": "{cat} ≈ {n}",
291
- "trend.focus": "Отображается только {cat}"
291
+ "trend.focus": "Отображается только {cat}",
292
+ "sidebar.guideDescription": "Анализ состава контекста сессии, пошаговой истории и сообщений.",
293
+ "trend.adaptive": "Адаптивный",
294
+ "trend.adaptiveHint": "Масштабировать высоту столбцов под видимый диапазон с учётом прокрутки",
295
+ "timing.reasoning": "Размышление",
296
+ "timing.text": "Ответ",
297
+ "timing.toolArgs": "Аргументы инструментов"
292
298
  }
293
- }
299
+ }
@@ -25,6 +25,8 @@
25
25
  "sub": "Теневые снимки, diff и мгновенный откат для безопасности агента.",
26
26
  "tabTitle": "Машина времени",
27
27
  "unavailable": "Настройки недоступны",
28
- "sidebarNotice": "Снимки состояния рабочей области сохраняются автоматически перед каждым крупным действием агента."
28
+ "sidebarNotice": "Снимки состояния рабочей области сохраняются автоматически перед каждым крупным действием агента.",
29
+ "guideTitle": "Машина времени",
30
+ "guideDesc": "Контрольные точки, визуальные диффы и мгновенный откат рабочей области."
29
31
  }
30
32
  }
@@ -342,6 +342,13 @@
342
342
  "removeSourceHint": "Удалить: убрать этот источник из списка (установленные плагины не пострадают)",
343
343
  "repoLandSourceUnknown": "настроенный источник git",
344
344
  "setPrimaryHint": "Сделать основным: опрашивается первым, при сбое используются остальные",
345
- "unknown": "неизвестно"
345
+ "unknown": "неизвестно",
346
+ "registryScan": "Сканировать источники",
347
+ "registryScanBest": "Свежая {version} получена из: {name}",
348
+ "registryScanFail": "недоступен",
349
+ "registryScanHint": "Опрос реестров npm: доступность, пинг и последняя версия dsh-plugin-console для выбора основного источника",
350
+ "registryScanNoVersion": "Пакет отсутствует в этом реестре",
351
+ "registryScanSummary": "Сканирование завершено: {ok} из {total} доступны",
352
+ "registryScanning": "Сканирование…"
346
353
  }
347
- }
354
+ }
@@ -0,0 +1,49 @@
1
+ {
2
+ "dsh-remote-workspace": {
3
+ "title": "Удалённое рабочее пространство",
4
+ "subtitle": "Управление подключениями по SSH, синхронизацией SFTP и туннелями",
5
+ "status": "Готово",
6
+ "activeBadge": "Активен",
7
+ "setActiveBtn": "Сделать активным",
8
+ "pinned": "Активный хост",
9
+ "profilesTitle": "🖥️ Профили SSH серверов",
10
+ "profilesDesc": "Настройка удалённых хостов для выполнения команд, SFTP доступа и синхронизации.",
11
+ "addBtn": "+ Добавить хост",
12
+ "nameCol": "Имя",
13
+ "hostCol": "Хост / Пользователь",
14
+ "portCol": "Порт",
15
+ "pathCol": "Удалённый путь",
16
+ "actionsCol": "Действия",
17
+ "noHosts": "Удалённые хосты ещё не настроены. Нажмите «+ Добавить хост».",
18
+ "formTitleNew": "Добавление нового SSH хоста",
19
+ "formTitleEdit": "Редактирование профиля хоста",
20
+ "fName": "Название подключения",
21
+ "fHost": "Хост / IP-адрес",
22
+ "fPort": "Порт",
23
+ "fUser": "Имя пользователя",
24
+ "fAuthType": "Способ авторизации",
25
+ "fAuthKey": "SSH-ключ",
26
+ "fAuthPass": "Пароль",
27
+ "fKeyPath": "Путь к ключу",
28
+ "fPassphrase": "Кодовая фраза ключа (если есть)",
29
+ "fPassword": "Пароль учетной записи",
30
+ "fRemotePath": "Удалённая папка проекта",
31
+ "fRemotePathHint": "(Не обязательно сейчас — можно выбрать позже при работе)",
32
+ "btnBrowse": "📁 Выбрать на сервере…",
33
+ "btnSelectThis": "Выбрать эту папку",
34
+ "btnTest": "⚡ Проверить связь (Ping)",
35
+ "btnSave": "Сохранить профиль",
36
+ "btnCancel": "Отмена",
37
+ "btnDelete": "Удалить",
38
+ "testing": "Проверка соединения…",
39
+ "saving": "Сохранение…",
40
+ "diagTitle": "📊 Диагностика активного подключения",
41
+ "diagDesc": "Проверка доступности и измерение задержки активного сервера.",
42
+ "syncTitle": "🔄 Синхронизация зеркала и туннели",
43
+ "syncDesc": "Ручная синхронизация файлов с удалённым сервером и статус проброса портов.",
44
+ "pullBtn": "⬇️ Скачать с сервера (Pull)",
45
+ "pushBtn": "⬆️ Загрузить на сервер (Push)",
46
+ "syncSuccess": "Синхронизация успешно выполнена",
47
+ "syncFailed": "Ошибка синхронизации: "
48
+ }
49
+ }
@@ -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
+ }