@goodandready/dsh-russian-lang 0.2.0 → 0.2.2

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@goodandready/dsh-russian-lang",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Russian localization for the DeepSeek Harness web UI: adds Русский as the third option in the native Settings - General - Language menu. Translates the full core surface (100% coverage of DSH 0.1.1-rc.2) plus 16 community plugin namespaces - 51 namespaces, 2899 strings (about 64% hand-reviewed, the rest machine-drafted and tracked as status: draft), with Russian plural forms, count-key plurals, a typography pass (guillemets, em dash, nbsp), a wrong-layout input hint and browser spellcheck. The locale runtime snapshot is extended at runtime on unpatched cores; no files in the DSH installation are modified. The choice is persisted through the plugin-owned russian-lang namespace.",
5
5
  "type": "module",
6
6
  "main": "lib/index.js",
@@ -427,6 +427,101 @@
427
427
  "themePreviewMissing": "Предпросмотр недоступен",
428
428
  "themeResultCount": "{0} темы",
429
429
  "toastToggledOff": "теперь выключено — перестало работать сразу",
430
- "toastToggledOn": "включён"
430
+ "toastToggledOn": "включён",
431
+ "setCardDesc": "Просмотр версии и настроек магазина плагинов.",
432
+ "setSelfUpToDate": "Установлена последняя версия",
433
+ "setSelfUpdateReady": "Доступна новая версия:",
434
+ "setSelfUpdateHint": "При обновлении скачивается новая версия; она вступит в силу после перезапуска.",
435
+ "setSelfUpdate": "Обновить",
436
+ "setSelfUpdatedHint": "Загружено. Перезапустите DeepSeek Harness, чтобы изменения вступили в силу — клиент обновится сразу, сервер после перезапуска.",
437
+ "setGithubProxy": "Ускорение GitHub",
438
+ "setGithubProxyAutoHint": "Автоматически выбирает рабочий маршрут и переключается только при сбое.",
439
+ "setGithubProxyCustom": "Пользовательский",
440
+ "setGithubProxyCustomHint": "Сначала пробует ваш маршрут, затем переключается на GitHub напрямую.",
441
+ "setGithubProxyManagedHint": "Управляется переменной DSHM_GITHUB_PROXY и не может быть изменено здесь.",
442
+ "setGithubProxyEdit": "Изменить",
443
+ "setGithubProxyAuto": "Вернуть автовыбор",
444
+ "setGithubProxyInput": "Префикс HTTPS-ускорения",
445
+ "setGithubProxySave": "Сохранить",
446
+ "setSelfRemove": "Удалить магазин плагинов",
447
+ "setSelfRemoveHint": "Удалить магазин из этого профиля. Ваши остальные плагины затронуты не будут.",
448
+ "setSelfConfirm": "Удалить магазин плагинов? Повторная установка возможна только через командную строку.",
449
+ "setSelfPurge": "Также очистить собственные данные магазина",
450
+ "setSelfPurgeOn": "Будут удалены: списки отключений магазина, пользовательские группы и записи отключений в файле патча профиля — отключённые плагины снова запустятся. Пароли и токены не затрагиваются (магазин не сохраняет их на диске).",
451
+ "setSelfPurgeOff": "Сохранить данные магазина. Обратите внимание: отключённые плагины останутся выключенными, и после удаления магазина вернуть их через интерфейс будет невозможно.",
452
+ "setSelfRemoveConfirm": "Удалить",
453
+ "setSelfCancel": "Отмена",
454
+ "setSelfWorking": "Удаление…",
455
+ "setSelfRemoved": "Удалено",
456
+ "setSelfRemovedHint": "Перезапустите DeepSeek Harness для завершения очистки.",
457
+ "setSelfFailed": "Сбой операции",
458
+ "versionHint": "Версия магазина плагинов — укажите её при сообщении об ошибке",
459
+ "searchFavoritesPh": "Поиск в избранном…",
460
+ "favoriteAdd": "Добавить в избранное",
461
+ "favoriteRemove": "Удалить из избранного",
462
+ "favoritesEmpty": "В избранном пока ничего нет. Добавляйте плагины в разделах Обзор или Темы.",
463
+ "favoritesResultCount": "Избранное: {0}",
464
+ "favoritesPluginsSection": "Плагины ({0})",
465
+ "favoritesThemesSection": "Темы ({0})",
466
+ "favoritesStaleEmpty": "Сохранённые записи больше не найдены в каталоге.",
467
+ "favoritesStaleNote": "Записей из избранного нет в каталоге: {0}",
468
+ "favoritesClearStale": "Удалить устаревшее избранное",
469
+ "favoritesClearingStale": "Удаление…",
470
+ "tabFavorites": "Избранное",
471
+ "restartHintDebugged": "Процесс DSH запущен под отладчиком. Перезапустите его из IDE или терминала — магазин не может принудительно завершить отлаживаемый хост из интерфейса.",
472
+ "favoriteFailed": "Не удалось обновить избранное. Попробуйте снова.",
473
+ "favoriteUnavailable": "Избранное недоступно. Обновите страницу или перезапустите dsh web.",
474
+ "favoriteBusy": "Выполняется операция с плагином. Изменение добавлено в очередь — подождите немного.",
475
+ "compatRiskBannerNoRollback": "Обнаружен риск несовместимости — откройте Диагностику перед перезапуском.",
476
+ "rollbackUnavailable": "Автоматический откат недоступен, так как не удалось проверить точный исходный источник.",
477
+ "migrateNpm": "Использовать версию из npm",
478
+ "migrateTitle": "Использовать версию из npm?",
479
+ "migrateDescription": "Это изменит источник установки плагина, а не только его версию.",
480
+ "migrateCurrentSource": "Текущий источник",
481
+ "migrateTargetSource": "Новый источник npm",
482
+ "migrateWarning": "Пакет npm может поддерживаться другим издателем. Продолжайте, только если доверяете этому сопоставлению каталога.",
483
+ "migrateContinue": "Подтвердить источник npm",
484
+ "migrateFail": "Сбой миграции источника",
485
+ "restoreOnline": "Использовать онлайн-версию",
486
+ "restoreNameOnlyHint": "В локальной копии не указан исходный репозиторий, поэтому сопоставление выполнено только по имени пакета. Убедитесь, что автор и репозиторий ниже соответствуют ожидаемым. Это заменит локальную версию и не может быть отменено.",
487
+ "restoreProceed": "Подтвердить восстановление",
488
+ "restoreNoCatalogTitle": "Восстановление невозможно",
489
+ "restoreNoMatch": "Плагин с таким именем есть в каталоге, но он не соответствует вашему локальному репозиторию. Удалите локальную копию или продолжите локальную разработку.",
490
+ "commentsLoginHint": "Вход в аккаунт откроется в новой вкладке. После авторизации на GitHub вернитесь сюда — комментарии обновятся.",
491
+ "filterHost": "Версия хоста",
492
+ "hostAll": "Показать все",
493
+ "hostCompatible": "Совместимо с текущим DSH {0}",
494
+ "hostDetecting": "Определение версии хоста…",
495
+ "hostUnknown": "Версия хоста неизвестна",
496
+ "hostFilterLoading": "Проверка требований хоста {0}/{1}; не объявленные плагины остаются видимыми",
497
+ "hostFilterActive": "Фильтр для DSH {0}; не объявленные плагины остаются видимыми",
498
+ "hostRequirement": "DSH {0}",
499
+ "hostRequirementLoading": "Чтение требований хоста…",
500
+ "hostRequirementUndeclared": "Требования к хосту не объявлены",
501
+ "hostRequirementUnavailable": "Требования к хосту неизвестны",
502
+ "ignoreUpdateNotice": "Игнорировать при этом запуске",
503
+ "ignoreAllUpdateNotices": "Игнорировать все при этом запуске",
504
+ "updateNoticeIgnored": "Напоминание скрыто для текущего сеанса",
505
+ "orderSection": "Порядок загрузки",
506
+ "orderUp": "↑",
507
+ "orderDown": "↓",
508
+ "orderApply": "Применить порядок",
509
+ "orderDrag": "Перетащите для изменения порядка",
510
+ "orderDragHint": "Перетаскивайте ⠿ для сортировки. Изменения сохраняются при нажатии «Применить порядок».",
511
+ "orderApplied": "✓ Применено — перезапустите для активации",
512
+ "orderSuggestApply": "Применить рекомендуемый порядок",
513
+ "orderSuggestHint": "Рекомендуемый порядок (автосортировка по правилам before/after):",
514
+ "orderAutoSort": "Автосортировка",
515
+ "orderAlreadyOptimal": "Текущий порядок уже оптимален и удовлетворяет всем зависимостям плагинов",
516
+ "orderTrialFail": "Ошибка статической валидации композиции: {0}",
517
+ "orderDiffHint": "Этот порядок изменит композицию: {0} переопределений, {1} изолированных, {2} дубликатов",
518
+ "orderReset": "Сбросить черновик",
519
+ "aiFix": "Исправление через AI",
520
+ "aiFixHint": "Передать отчёт диагностики в новую сессию Агента (скопировано в буфер обмена)",
521
+ "aiFixIntro": "Пожалуйста, помоги исправить проблемы с плагинами в DeepSeek Harness (профиль: {0}). Данные диагностики:",
522
+ "aiFixScope": "Если нет — вы процесс вне целевого харнесса: вы можете переупорядочить dsh.profile.bundles, отключить/включить плагины или скорректировать cordis.patch.yml. Официальные бандлы фиксированы; опишите план перед изменениями.",
523
+ "aiFixConservative": "Действуйте консервативно: исправляйте только явные ошибки (сбои запуска, дубликаты, несовпадения критических зависимостей). Не выполняйте лишних обновлений; объясняйте каждое действие и ждите подтверждения.",
524
+ "aiFixCopied": "Промпт для исправления скопирован — вставьте его в новую беседу с агентом",
525
+ "aiFixFail": "Буфер обмена недоступен — скопируйте диагностику вручную ниже"
431
526
  }
432
527
  }
@@ -351,6 +351,60 @@
351
351
  "uploadTo": "Загрузить в {dir}",
352
352
  "uploadTooLarge": "Файл слишком большой (превышен лимит загрузки)",
353
353
  "uploadingTo": "Загрузка в {dir}…",
354
- "worktree": "Рабочее дерево"
354
+ "worktree": "Рабочее дерево",
355
+ "changesSessionEmpty": "В этой сессии пока не было операций с файлами",
356
+ "changesRead": "Чтение",
357
+ "changesWrite": "Запись",
358
+ "changesEdit": "Правка",
359
+ "changesRunning": "выполняется",
360
+ "changesError": "ошибка",
361
+ "changesFold": "Строк: {count}… нажмите, чтобы развернуть",
362
+ "changesContext": "контекст",
363
+ "changesPriorUnknown": "Предыдущее содержимое вне окна загрузки; показано как полностью добавленное",
364
+ "changesGitLens": "Git",
365
+ "changesSessionLens": "Сессия",
366
+ "changesFilterAll": "Все",
367
+ "changesFilterEmpty": "Нет операций этого типа",
368
+ "changesOpenDiffTab": "Открыть во вкладке diff",
369
+ "changesClosePreview": "Закрыть просмотр",
370
+ "changesResizePreview": "Изменить размер",
371
+ "changesDiffOpenTitle": "Открывать diff как",
372
+ "changesDiffOpenDesc": "Где открывать diff при разворачивании во вкладку",
373
+ "changesDiffOpenFloat": "Свободное окно",
374
+ "changesDiffOpenFloatDesc": "Плавающее окно по центру экрана — перемещайте, меняйте размер, держите поверх",
375
+ "changesDiffOpenPane": "Панель",
376
+ "changesDiffOpenPaneDesc": "Закреплено под исходной панелью (в стиле сплита VS Code)",
377
+ "changesLoadError": "Записи файлов сессии сейчас недоступны",
378
+ "settingsFenceTitle": "Ограничение рабочей области (Fence)",
379
+ "settingsFenceDesc": "Если включено, файловые функции боковой панели ограничены рабочей областью сессии (по умолчанию); если выключено — доступен любой файл на хосте",
380
+ "fenceErrorReason": "Этот путь находится за пределами рабочей области сессии и заблокирован защитным экраном",
381
+ "fenceDisableAction": "Отключить ограничение рабочей области",
382
+ "sideChatTurnUsage": "Вход: {input} токенов · Выход: {output} токенов",
383
+ "sideChatBlockCollapse": "Свернуть",
384
+ "sideChatBlockCollapseAria": "Свернуть",
385
+ "sideChatBlockExpand": "Развернуть {hidden} строк",
386
+ "sideChatBlockExpandAria": "Развернуть ещё {hidden} строк",
387
+ "sideChatBlockSignal": "Завершено по сигналу: {signal}",
388
+ "sideChatBlockExitCode": "Код завершения {code}",
389
+ "sideChatBlockRunning": "Выполняется",
390
+ "sideChatBlockFailed": "Сбой",
391
+ "sideChatBlockDone": "Готово",
392
+ "sideChatBlockNoOutput": "(нет вывода)",
393
+ "sideChatBlockFiles": "Файлов: {count}",
394
+ "sideChatBlockWindow": "Показано {shown} из {total} строк",
395
+ "sideChatConnDisconnected": "Соединение разорвано",
396
+ "sideChatConnReconnect": "Переподключиться",
397
+ "sideChatConnConnecting": "Подключение…",
398
+ "sideChatConnRecovered": "Соединение восстановлено",
399
+ "sideChatConnReconnectAction": "Подключиться сейчас",
400
+ "sideChatConnRestartAction": "Перезапустить соединение",
401
+ "pluginMdExportDesc": "Добавляет кнопку «Экспорт» на панель Markdown в better-sidebar: рендерит текущий .md в автономный HTML или экспортирует в PDF",
402
+ "pluginGithubWorkbenchDesc": "Вкладка GitHub Workbench: дерево репозитория, Issues, PR и Actions с полной поддержкой управления",
403
+ "pluginServerDeckDesc": "Панель серверов: карточки хостов с мониторингом CPU/памяти/диска и встроенным терминалом xterm.js",
404
+ "pluginSidenoteDesc": "Боковой чат в стиле Codex + аннотации к выделенному тексту",
405
+ "pluginSuhuangScrollDesc": "Интеграция Suhuang Scroll Runtime с настройками DSH и better-sidebar для конфигурации моделей и тестов",
406
+ "pluginCodeNavDesc": "Навигатор по коду: подсветка синтаксиса, дерево символов (классы, методы, переменные) и поиск по файлу",
407
+ "pluginBetterOverleafDesc": "Вкладка Overleaf для better-sidebar: синхронизация проектов и предпросмотр файлов",
408
+ "pluginBilingualReaderDesc": "Чтение PDF-статей в боковой панели DSH с контекстным переводом через LLM"
355
409
  }
356
410
  }
@@ -222,6 +222,36 @@
222
222
  "settings.readOnly": "Настройки этого развёртывания доступны только для чтения.",
223
223
  "settings.notExposed": "Это развёртывание не предоставляет пространство настроек.",
224
224
  "settings.collapse": "Скрыть настройки",
225
- "settings.expand": "Показать настройки"
225
+ "settings.expand": "Показать настройки",
226
+ "market.versionTitle": "Переключить отслеживаемую версию",
227
+ "market.versionText": "Выберите версию для отслеживания репозитория {repo}; после этого обновите и синхронизируйте навыки",
228
+ "market.versionCurrent": "текущая {ref}",
229
+ "market.versionReleases": "Релизы",
230
+ "market.versionBranches": "Ветки",
231
+ "market.versionCustom": "Пользовательская (тег / ветка / коммит)",
232
+ "market.versionConfirm": "Переключить на {ref}",
233
+ "market.versionHint": "Нажмите для переключения отслеживаемой версии",
234
+ "market.unpinned": "не закреплено",
235
+ "repo.truncated": "⚠ Репозиторий слишком большой, показаны не все навыки (сокращено GitHub)",
236
+ "row.duplicate": "дубликат",
237
+ "row.duplicateHint": "Это имя предоставляется несколькими источниками; показан наиболее приоритетный",
238
+ "row.copy": "Копировать",
239
+ "row.copyMention": "Копировать $mention",
240
+ "row.copied": "Скопировано",
241
+ "row.copyPath": "Копировать путь",
242
+ "detail.copyMention": "Копировать $mention",
243
+ "detail.copyPath": "Копировать путь",
244
+ "detail.copied": "Скопировано",
245
+ "diag.fix": "Исправить",
246
+ "diag.fixing": "Исправление…",
247
+ "diag.fixed": "Исправлено",
248
+ "diag.fixConfirm": "Перезаписать frontmatter этого файла автоисправлением? Сначала создайте резервную копию: {path}",
249
+ "filter.invocation": "Тип вызова",
250
+ "filter.invocationAll": "Все",
251
+ "filter.modelOnly": "Модель",
252
+ "filter.userOnly": "Пользователь",
253
+ "filter.showing": "Показано {shown} из {total} (включено){filtered}",
254
+ "filter.filteredSuffix": " · отфильтровано",
255
+ "filter.shortened": "Кратких описаний: {count}, наведите для полного текста"
226
256
  }
227
257
  }
@@ -166,6 +166,25 @@
166
166
  "root.codex": "Codex",
167
167
  "root.claude": "Claude",
168
168
  "root.gemini": "Gemini",
169
- "root.opencode": "OpenCode"
169
+ "root.opencode": "OpenCode",
170
+ "link.project": "GitHub",
171
+ "link.feedback": "Обратная связь",
172
+ "summary.total.one": "{count} навык",
173
+ "summary.total.other": "{count} навыков",
174
+ "summary.enabled.one": "{count} включён",
175
+ "summary.enabled.other": "{count} включено",
176
+ "summary.disabled.one": "{count} отключён",
177
+ "summary.disabled.other": "{count} отключено",
178
+ "summary.issues.one": "{count} проблема",
179
+ "summary.issues.other": "{count} проблем",
180
+ "summary.group.one": "{count} навык",
181
+ "summary.group.other": "{count} навыков",
182
+ "upload.selected.one": "Выбран {count} файл · {size}",
183
+ "upload.selected.other": "Выбрано {count} файлов · {size}",
184
+ "trash.count.one": "{count} навык в корзине",
185
+ "trash.count.other": "{count} навыков в корзине",
186
+ "error.skill.notLoadable": "Структура навыка неполная, невозможно выполнить {action}: {name}",
187
+ "root.ccswitch": "CC Switch",
188
+ "root.cursor": "Cursor"
170
189
  }
171
- }
190
+ }
@@ -107,6 +107,67 @@
107
107
  "usageUpdated": "Обновлено",
108
108
  "usageWeekly": "Еженедельное окно",
109
109
  "workingDir": "Рабочая директория",
110
- "workingDirHint": "Необязательно. Оставьте пустым, чтобы использовать текущий рабочий каталог процесса (указан в поле); укажите путь только для фиксации конкретного расположения."
110
+ "workingDirHint": "Необязательно. Оставьте пустым, чтобы использовать текущий рабочий каталог процесса (указан в поле); укажите путь только для фиксации конкретного расположения.",
111
+ "accountTitle": "📊 {label}{badges}",
112
+ "accountSeparator": "────────────────────",
113
+ "activeBadge": " ✅ активен",
114
+ "invalidCredentialBadge": " ⛔ неверный ключ",
115
+ "cooldownBadge": " ⏳ охлаждение, сброс {when}",
116
+ "rateLimitBadge": " ⏳ лимит запросов (ожидание окна)",
117
+ "unconfigured": " (API-ключ не настроен)",
118
+ "blockedInvalidKey": "⛔ API-ключ недействителен или истёк — сервер отклонил запросы (401); проверьте ключ аккаунта",
119
+ "blockedServiceUnavailable": "⚠️ Сервис Command Code временно недоступен (5xx); повторите позже",
120
+ "blockedNetwork": "⚠️ Не удалось подключиться к Command Code — проверьте сеть или адрес API",
121
+ "planLine": " 📦 Тариф {name}{status}{period}",
122
+ "planPeriodSuffix": " · окончание периода: {date}",
123
+ "usageHeader": "── Запросы ──────────────────────────",
124
+ "requestsLine": " 💬 Запросы {n} / сбоев {f} успешность {r}%",
125
+ "costLine": " 💰 Расход {money} ({credits} кредитов)",
126
+ "tokensLine": " 🔤 Токены {in} вход / {out} выход",
127
+ "creditsHeader": "── Кредиты ──────────────────────────",
128
+ "monthlyLine": " 💳 В месяц {monthly} (куплено {purchased} / бесплатно {free})",
129
+ "barLine": " └ {bar} {pct}%",
130
+ "windowsHeader": "── Использование окна ───────────────",
131
+ "fiveHourLine": " ⏱ 5-часовое {used} / {cap}{warn}",
132
+ "weeklyLine": " 📅 Недельное {used} / {cap}{warn}",
133
+ "windowBarLine": " └ {bar} сброс {when}",
134
+ "exceededWarning": " ⚠️ превышен!",
135
+ "resetSuffix": "сброс {when}",
136
+ "partialFailures": "⚠️ Сбои на некоторых эндпоинтах: {list}",
137
+ "noData": "(нет данных — проверьте API-ключ)",
138
+ "errorText": "Не удалось получить статистику Command Code: {message}",
139
+ "imageGate": "В сессии уже есть изображения, а модель {model} не поддерживает изображения; выберите модель с поддержкой зрения или удалите изображения из сессии."
140
+ },
141
+ "commandcode": {
142
+ "title": "📊 Использование Command Code{account}",
143
+ "accountTitle": "📊 {label}{badges}",
144
+ "accountSeparator": "────────────────────",
145
+ "activeBadge": " ✅ активен",
146
+ "invalidCredentialBadge": " ⛔ неверный ключ",
147
+ "cooldownBadge": " ⏳ охлаждение, сброс {when}",
148
+ "rateLimitBadge": " ⏳ лимит запросов (ожидание окна)",
149
+ "unconfigured": " (API-ключ не настроен)",
150
+ "blockedInvalidKey": "⛔ API-ключ недействителен или истёк — сервер отклонил запросы (401); проверьте ключ аккаунта",
151
+ "blockedServiceUnavailable": "⚠️ Сервис Command Code временно недоступен (5xx); повторите позже",
152
+ "blockedNetwork": "⚠️ Не удалось подключиться к Command Code — проверьте сеть или адрес API",
153
+ "planLine": " 📦 Тариф {name}{status}{period}",
154
+ "planPeriodSuffix": " · окончание периода: {date}",
155
+ "usageHeader": "── Запросы ──────────────────────────",
156
+ "requestsLine": " 💬 Запросы {n} / сбоев {f} успешность {r}%",
157
+ "costLine": " 💰 Расход {money} ({credits} кредитов)",
158
+ "tokensLine": " 🔤 Токены {in} вход / {out} выход",
159
+ "creditsHeader": "── Кредиты ──────────────────────────",
160
+ "monthlyLine": " 💳 В месяц {monthly} (куплено {purchased} / бесплатно {free})",
161
+ "barLine": " └ {bar} {pct}%",
162
+ "windowsHeader": "── Использование окна ───────────────",
163
+ "fiveHourLine": " ⏱ 5-часовое {used} / {cap}{warn}",
164
+ "weeklyLine": " 📅 Недельное {used} / {cap}{warn}",
165
+ "windowBarLine": " └ {bar} сброс {when}",
166
+ "exceededWarning": " ⚠️ превышен!",
167
+ "resetSuffix": "сброс {when}",
168
+ "partialFailures": "⚠️ Сбои на некоторых эндпоинтах: {list}",
169
+ "noData": "(нет данных — проверьте API-ключ)",
170
+ "errorText": "Не удалось получить статистику Command Code: {message}",
171
+ "imageGate": "В сессии уже есть изображения, а модель {model} не поддерживает изображения; выберите модель с поддержкой зрения или удалите изображения из сессии."
111
172
  }
112
173
  }
@@ -248,6 +248,33 @@
248
248
  "tool.unknownTitle": "Инструмент был зарегистрирован до загрузки контекстного плагина, или его плагин был выгружен, поэтому его провайдер не может быть определен",
249
249
  "trend.empty": "Отправьте сообщение, и состав контекста каждого запроса модели появится здесь",
250
250
  "trend.hint": "Наведите курсор для просмотра деталей, ✂ обозначает уплотнение/удаление, Шаг/Ход переключает детализацию",
251
- "trend.title": "История контекста"
251
+ "trend.title": "История контекста",
252
+ "timing.title": "Статистика таймингов",
253
+ "timing.hint": "Распределение времени активности за всю сессию",
254
+ "timing.total": "Время активности",
255
+ "timing.ttft": "TTFT",
256
+ "timing.gen": "Генерация LLM",
257
+ "timing.tools": "Вызовы инструментов",
258
+ "timing.other": "Накладные расходы",
259
+ "timing.callTimes": "Вызовов: {n}",
260
+ "timing.toolTimes": "Запусков: {n}",
261
+ "timing.empty": "Данных о таймингах пока нет — они появятся в процессе беседы",
262
+ "tokens.title": "Статистика токенов",
263
+ "tokens.hint": "Суммарное использование по данным провайдера",
264
+ "tokens.cacheHit": "Попадание в кэш",
265
+ "tokens.cacheRead": "Вход из кэша",
266
+ "tokens.cacheWrite": "Запись в кэш",
267
+ "tokens.uncached": "Вход без кэша",
268
+ "tokens.output": "Выход",
269
+ "tokens.outputNote": "вкл. рассуждения",
270
+ "plugin.settings": "Настройки",
271
+ "plugin.settingsOpen": "Открыть в Настройках",
272
+ "jump.title": "Посмотреть этот шаг во вкладке Контекст",
273
+ "tip.turn1": "Шаг {t} · 1 действие",
274
+ "browser.headerMetaOnly": "Эта среда не может загрузить заголовки по запросу; только оценка токенов",
275
+ "browser.noSystem": "В заголовке этого запроса не было системного промпта",
276
+ "rich.md.copy": "Копировать",
277
+ "rich.md.copied": "Скопировано",
278
+ "rich.md.footnotes": "Сноски"
252
279
  }
253
280
  }
@@ -0,0 +1,142 @@
1
+ {
2
+ "settings.subagentDirector": {
3
+ "nav": "Директор субагентов",
4
+ "sectionIntro": "Настройте провайдера и модель LLM для каждого субагента, а также шаблоны ролей, связывающие модель и персону с делегированием. Выбирать можно только провайдеров/модели из пула субагентов в настройках плагина (Плагины → Настройки плагинов → Subagent).",
5
+ "defaultsHeading": "Модель по умолчанию",
6
+ "defaultsHint": "Используется, если при вызове или в роли не указан конкретный провайдер или модель.",
7
+ "noAllowedModels": "Нет авторизованных моделей. Выберите модели в официальном списке субагентов (Настройки плагинов → Subagent); выбор здесь ограничен этим списком.",
8
+ "defaultProvider": "Провайдер",
9
+ "defaultModel": "Модель",
10
+ "defaultReasoningEffort": "Уровень рассуждений",
11
+ "restoreDefaults": "Сбросить по умолчанию",
12
+ "provider": "Провайдер",
13
+ "model": "Модель",
14
+ "reasoningEffort": "Уровень рассуждений",
15
+ "persona": "Персона",
16
+ "rolesHeading": "Шаблоны ролей",
17
+ "rolesHint": "Роль связывает инструкции делегирования, персону и (опционально) провайдера/модель с субагентом.",
18
+ "addRole": "Добавить роль",
19
+ "emptyRoles": "Шаблонов ролей пока нет. Добавьте роль, чтобы распределить обязанности субагентов.",
20
+ "roleId": "Идентификатор роли",
21
+ "roleDisplayName": "Отображаемое имя",
22
+ "roleDescription": "Инструкции делегирования",
23
+ "rolePersona": "Персона",
24
+ "setDefaultRole": "Сделать по умолчанию",
25
+ "defaultRoleBadge": "По умолчанию",
26
+ "deleteRole": "Удалить",
27
+ "confirmDeleteRole": "Удалить роль «{id}»? Роли, на которые ссылается defaultRole, вернутся к настройкам плагина по умолчанию.",
28
+ "removeRoleDone": "Роль удалена",
29
+ "addedRole": "Роль добавлена",
30
+ "roleUpdated": "Роль обновлена",
31
+ "conflict": "Конфликт",
32
+ "rejected": "Изменение отклонено провайдером настроек.",
33
+ "fatal": "Не удалось сохранить: {message}",
34
+ "loadError": "Не удалось загрузить настройки предпочтений.",
35
+ "readonly": "Настройки доступны только для чтения.",
36
+ "retry": "Повторить",
37
+ "fallbackOnInvalid": "Откатываться к родительскому агенту, если привязанная модель недоступна",
38
+ "displayNamePlaceholder": "например, Ревьюер кода",
39
+ "descriptionPlaceholder": "Когда делегировать задачи этой роли и что она должна делать…",
40
+ "personaPlaceholder": "Инструкции системного промпта, передаваемые субагенту…",
41
+ "modelOptional": "Сохраните карточку для применения изменений",
42
+ "providerMissing": "Провайдер не выбран",
43
+ "toolFilter": "Набор инструментов",
44
+ "toolFilterHint": "Ограничить субагента этими инструментами. Оставьте пустым для наследования всех инструментов родителя.",
45
+ "toolFilterNone": "Наследовать инструменты родителя (без ограничений)",
46
+ "toolFilterEmpty": "Нет доступных инструментов",
47
+ "toolFilterSearch": "Поиск инструментов…",
48
+ "toolFilterSelectAll": "Выбрать все",
49
+ "toolFilterDeselectAll": "Снять выбор",
50
+ "toolFilterCount": "Выбрано {count} из {total}",
51
+ "toolFilterExpand": "Развернуть",
52
+ "toolFilterCollapse": "Свернуть",
53
+ "toolFilterNoMatch": "Инструментов не найдено.",
54
+ "restoreDone": "Значения по умолчанию восстановлены",
55
+ "invalidRoleId": "Идентификатор роли должен быть в kebab-case (строчные буквы, цифры, дефис).",
56
+ "bridgeUnavailable": "Мост настроек Subagent Director недоступен на этом сервере. Обновите/перезапустите dsh web.",
57
+ "modelRanOn": "Субагент запущен на",
58
+ "modelNotRecorded": "Модель субагента пока не записана",
59
+ "modelQueryFailed": "Модель субагента недоступна",
60
+ "modelRanOnTitle": "Маршрут модели: {model}",
61
+ "closeContinuable": "Освободить субагент",
62
+ "closeContinuableTitle": "Освободить этот непрерывный субагент (освободить резидентный дескриптор)",
63
+ "closingContinuable": "Освобождение…",
64
+ "closedSubagent": "Освобождён",
65
+ "confirmCloseContinuable": "Освободить субагент «{id}»? Он перестанет быть резидентным; продолжение через send_message будет невозможно.",
66
+ "closeFailed": "Сбой освобождения: {message}",
67
+ "save": "Сохранить",
68
+ "cancel": "Отмена",
69
+ "edit": "Редактировать",
70
+ "roleIdPlaceholder": "например, code-reviewer"
71
+ },
72
+ "subagent-director": {
73
+ "nav": "Директор субагентов",
74
+ "sectionIntro": "Настройте провайдера и модель LLM для каждого субагента, а также шаблоны ролей, связывающие модель и персону с делегированием. Выбирать можно только провайдеров/модели из пула субагентов в настройках плагина (Плагины → Настройки плагинов → Subagent).",
75
+ "defaultsHeading": "Модель по умолчанию",
76
+ "defaultsHint": "Используется, если при вызове или в роли не указан конкретный провайдер или модель.",
77
+ "noAllowedModels": "Нет авторизованных моделей. Выберите модели в официальном списке субагентов (Настройки плагинов → Subagent); выбор здесь ограничен этим списком.",
78
+ "defaultProvider": "Провайдер",
79
+ "defaultModel": "Модель",
80
+ "defaultReasoningEffort": "Уровень рассуждений",
81
+ "restoreDefaults": "Сбросить по умолчанию",
82
+ "provider": "Провайдер",
83
+ "model": "Модель",
84
+ "reasoningEffort": "Уровень рассуждений",
85
+ "persona": "Персона",
86
+ "rolesHeading": "Шаблоны ролей",
87
+ "rolesHint": "Роль связывает инструкции делегирования, персону и (опционально) провайдера/модель с субагентом.",
88
+ "addRole": "Добавить роль",
89
+ "emptyRoles": "Шаблонов ролей пока нет. Добавьте роль, чтобы распределить обязанности субагентов.",
90
+ "roleId": "Идентификатор роли",
91
+ "roleDisplayName": "Отображаемое имя",
92
+ "roleDescription": "Инструкции делегирования",
93
+ "rolePersona": "Персона",
94
+ "setDefaultRole": "Сделать по умолчанию",
95
+ "defaultRoleBadge": "По умолчанию",
96
+ "deleteRole": "Удалить",
97
+ "confirmDeleteRole": "Удалить роль «{id}»? Роли, на которые ссылается defaultRole, вернутся к настройкам плагина по умолчанию.",
98
+ "removeRoleDone": "Роль удалена",
99
+ "addedRole": "Роль добавлена",
100
+ "roleUpdated": "Роль обновлена",
101
+ "conflict": "Конфликт",
102
+ "rejected": "Изменение отклонено провайдером настроек.",
103
+ "fatal": "Не удалось сохранить: {message}",
104
+ "loadError": "Не удалось загрузить настройки предпочтений.",
105
+ "readonly": "Настройки доступны только для чтения.",
106
+ "retry": "Повторить",
107
+ "fallbackOnInvalid": "Откатываться к родительскому агенту, если привязанная модель недоступна",
108
+ "displayNamePlaceholder": "например, Ревьюер кода",
109
+ "descriptionPlaceholder": "Когда делегировать задачи этой роли и что она должна делать…",
110
+ "personaPlaceholder": "Инструкции системного промпта, передаваемые субагенту…",
111
+ "modelOptional": "Сохраните карточку для применения изменений",
112
+ "providerMissing": "Провайдер не выбран",
113
+ "toolFilter": "Набор инструментов",
114
+ "toolFilterHint": "Ограничить субагента этими инструментами. Оставьте пустым для наследования всех инструментов родителя.",
115
+ "toolFilterNone": "Наследовать инструменты родителя (без ограничений)",
116
+ "toolFilterEmpty": "Нет доступных инструментов",
117
+ "toolFilterSearch": "Поиск инструментов…",
118
+ "toolFilterSelectAll": "Выбрать все",
119
+ "toolFilterDeselectAll": "Снять выбор",
120
+ "toolFilterCount": "Выбрано {count} из {total}",
121
+ "toolFilterExpand": "Развернуть",
122
+ "toolFilterCollapse": "Свернуть",
123
+ "toolFilterNoMatch": "Инструментов не найдено.",
124
+ "restoreDone": "Значения по умолчанию восстановлены",
125
+ "invalidRoleId": "Идентификатор роли должен быть в kebab-case (строчные буквы, цифры, дефис).",
126
+ "bridgeUnavailable": "Мост настроек Subagent Director недоступен на этом сервере. Обновите/перезапустите dsh web.",
127
+ "modelRanOn": "Субагент запущен на",
128
+ "modelNotRecorded": "Модель субагента пока не записана",
129
+ "modelQueryFailed": "Модель субагента недоступна",
130
+ "modelRanOnTitle": "Маршрут модели: {model}",
131
+ "closeContinuable": "Освободить субагент",
132
+ "closeContinuableTitle": "Освободить этот непрерывный субагент (освободить резидентный дескриптор)",
133
+ "closingContinuable": "Освобождение…",
134
+ "closedSubagent": "Освобождён",
135
+ "confirmCloseContinuable": "Освободить субагент «{id}»? Он перестанет быть резидентным; продолжение через send_message будет невозможно.",
136
+ "closeFailed": "Сбой освобождения: {message}",
137
+ "save": "Сохранить",
138
+ "cancel": "Отмена",
139
+ "edit": "Редактировать",
140
+ "roleIdPlaceholder": "например, code-reviewer"
141
+ }
142
+ }
@@ -0,0 +1,43 @@
1
+ {
2
+ "dsh-moa": {
3
+ "title": "Смесь агентов (MoA)",
4
+ "description": "Выполнение задач с несколькими параллельными моделями-советниками и синтезирующей моделью-судьёй",
5
+ "slashMoa": "Выполнить задачу через Mixture of Agents (/moa <промпт>)",
6
+ "defaultPreset": "Пресет по умолчанию (используется для /moa без аргументов)",
7
+ "isDefault": "по умолчанию",
8
+ "presetSelectLabel": "Активный пресет для настройки:",
9
+ "createNewPreset": "Создать новый пресет...",
10
+ "makeDefault": "Сделать по умолчанию",
11
+ "makeDefaultHint": "Использовать этот пресет для /moa, когда аргумент пресета не указан",
12
+ "deletePreset": "Удалить пресет",
13
+ "delete": "Удалить",
14
+ "confirmDeletePreset": "Вы уверены, что хотите удалить пресет",
15
+ "newPresetPlaceholder": "Имя нового пресета (например, fast-audit)",
16
+ "create": "Создать",
17
+ "cancel": "Отмена",
18
+ "aggregatorTitle": "Модель-судья / Агрегатор (проверяет и синтезирует)",
19
+ "aggregatorDesc": "Оценивает предложения кандидатов, исправляет галлюцинации и формирует итоговое единое решение.",
20
+ "temperature": "Температура",
21
+ "aggTempHint": "Рекомендуется 0.2 - 0.4 для строгой проверки и фактологического синтеза.",
22
+ "proposersTitle": "Модели-кандидаты (Советники)",
23
+ "proposersDesc": "Параллельно генерируют независимые варианты ответов для предоставления различных точек зрения.",
24
+ "refTempLabel": "Температура кандидатов (разнообразие решений):",
25
+ "refTempHint": "Рекомендуется 0.6 - 0.8 для генерации разнообразных творческих гипотез.",
26
+ "parallelCount": "Параллельные воркеры",
27
+ "candidate": "Кандидат",
28
+ "addCandidate": "Добавить слот параллельной модели",
29
+ "remove": "Удалить",
30
+ "save": "Сохранить изменения",
31
+ "saved": "Успешно сохранено",
32
+ "loading": "Сохранение…",
33
+ "retry": "Повторить подключение",
34
+ "unavailable": "Сервис MoA временно недоступен (переподключение...)",
35
+ "searchPlaceholder": "Поиск по названию модели или провайдеру...",
36
+ "modelsFound": "Найдено",
37
+ "of": "из",
38
+ "clear": "Очистить",
39
+ "noModelsMatch": "Моделей по запросу не найдено.",
40
+ "useCustom": "Использовать свою",
41
+ "selectModel": "Выберите модель..."
42
+ }
43
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "personalDirective": {
3
+ "enabled": "Директива: Вкл",
4
+ "disabled": "Директива: Выкл",
5
+ "switching": "Переключение…",
6
+ "title": "Переключить персональную директиву",
7
+ "failed": "Сбой подключения переключателя директивы"
8
+ }
9
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "dsh-hooks": {
3
+ "addHook": "+ Добавить hook",
4
+ "noHooks": "Нет хуков, нажмите «Редактировать» для добавления",
5
+ "currentHooks": "Текущие хуки",
6
+ "notifyWebhook": "Webhook уведомлений",
7
+ "hookTriggered": "срабатываний хука",
8
+ "fillRunOrChannel": "hook #{i}:укажите команду run или выберите канал уведомлений",
9
+ "routeUnavailable": "Не удаётся получить доступ к маршрутам /dsh-hooks/*: убедитесь, что плагин dsh-hooks установлен и DSH перезапущен."
10
+ }
11
+ }