@ragnoryok1/dsh-client-locale-ru 0.2.8 → 0.2.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +47 -0
- package/NAMESPACES.md +18 -3
- package/README.en.md +30 -25
- package/README.md +39 -35
- package/README.zh.md +34 -26
- package/images/plugins-ru.png +0 -0
- package/images/settings-ru.png +0 -0
- package/lib/client.js +4094 -1
- package/package.json +2 -2
package/lib/client.js
CHANGED
|
@@ -5064,6 +5064,7 @@ window.__ModuleLoader__.load({
|
|
|
5064
5064
|
"term.title": "Терминал {id}"
|
|
5065
5065
|
},
|
|
5066
5066
|
"univer": {
|
|
5067
|
+
"collapse": "Свернуть просмотр",
|
|
5067
5068
|
"dock.close": "Закрыть",
|
|
5068
5069
|
"dock.currentVersion": "Текущая версия",
|
|
5069
5070
|
"dock.discard": "Отклонить",
|
|
@@ -5094,11 +5095,13 @@ window.__ModuleLoader__.load({
|
|
|
5094
5095
|
"dock.unit.conflict": "Конфликт",
|
|
5095
5096
|
"dock.unit.deleted": "У",
|
|
5096
5097
|
"dock.unit.modified": "И",
|
|
5098
|
+
"expand": "Развернуть просмотр",
|
|
5097
5099
|
"gateway.checking": "Проверяем Univer Gateway…",
|
|
5098
5100
|
"gateway.failed": "Univer Gateway недоступен — нажмите, чтобы повторить",
|
|
5099
5101
|
"gateway.running": "Univer Gateway работает",
|
|
5100
5102
|
"gateway.starting": "Запускаем Univer Gateway…",
|
|
5101
5103
|
"gateway.stopped": "Univer Gateway остановлен — нажмите, чтобы запустить",
|
|
5104
|
+
"refresh": "Обновить",
|
|
5102
5105
|
"settings.autoOpenLivePreview": "Открывать живой просмотр автоматически",
|
|
5103
5106
|
"settings.autoOpenLivePreviewHint": "Показывать плавающий просмотр, пока агент правит документ. Карточки проверки в разговоре остаются доступны и при выключенном параметре.",
|
|
5104
5107
|
"settings.conversationReviewCards": "Показывать карточки проверки в разговоре",
|
|
@@ -5112,9 +5115,4099 @@ window.__ModuleLoader__.load({
|
|
|
5112
5115
|
"settings.saveFailed": "Не удалось сохранить. Повторите попытку.",
|
|
5113
5116
|
"settings.saving": "Сохраняем…",
|
|
5114
5117
|
"settings.title": "Univer Office",
|
|
5118
|
+
"title": "Просмотр Univer",
|
|
5115
5119
|
"viewer.missing": "Этого файла больше нет в рабочей области текущей сессии"
|
|
5116
5120
|
},
|
|
5117
|
-
"web-ui-plugins": { "title": "Веб-плагины" }
|
|
5121
|
+
"web-ui-plugins": { "title": "Веб-плагины" },
|
|
5122
|
+
"better-input": {
|
|
5123
|
+
"aboutChangelogLabel": "История изменений",
|
|
5124
|
+
"aboutLicenseLabel": "Лицензия",
|
|
5125
|
+
"aboutRepositoryLabel": "Репозиторий",
|
|
5126
|
+
"aboutTitle": "О плагине и обновлениях",
|
|
5127
|
+
"aboutVersionLabel": "Установленная версия",
|
|
5128
|
+
"checkingUpdate": "Проверка…",
|
|
5129
|
+
"checkUpdateButton": "Проверить обновления",
|
|
5130
|
+
"contextTurnsHint": "Включать в контекст оптимизации последние N ходов. 0 — отключено. По умолчанию 3.",
|
|
5131
|
+
"contextTurnsLabel": "Ходы в контексте",
|
|
5132
|
+
"convertAddFile": "Добавить файл",
|
|
5133
|
+
"convertAttach": "Добавить файл",
|
|
5134
|
+
"convertBusy": "Преобразование…",
|
|
5135
|
+
"convertCancel": "Отмена",
|
|
5136
|
+
"convertEdit": "Изменить",
|
|
5137
|
+
"convertEmptyFile": "Файл пуст",
|
|
5138
|
+
"convertFailed": "Не удалось преобразовать, повторите",
|
|
5139
|
+
"convertFileTooLarge": "Файл превышает предел размера для преобразования",
|
|
5140
|
+
"convertNoFile": "Сначала добавьте файл",
|
|
5141
|
+
"convertOverwriteLabel": "Заменить содержимое поля ввода",
|
|
5142
|
+
"convertPlainReady": "DSH поддерживает этот файл напрямую — преобразование не нужно, отправьте его как есть",
|
|
5143
|
+
"convertPreviewFileLabel": "Файл",
|
|
5144
|
+
"convertPreviewFormatLabel": "Формат",
|
|
5145
|
+
"convertPreviewTitle": "Результат преобразования файла",
|
|
5146
|
+
"convertPreviewWarning": "Примечание",
|
|
5147
|
+
"convertRemove": "Удалить",
|
|
5148
|
+
"convertSave": "Сохранить",
|
|
5149
|
+
"convertStart": "Начать преобразование",
|
|
5150
|
+
"convertToggle": "Преобразование документов",
|
|
5151
|
+
"convertTooLarge": "Файл слишком большой, превышен предел преобразования",
|
|
5152
|
+
"convertUnsupported": "Неподдерживаемый тип файла",
|
|
5153
|
+
"defaultPromptLabel": "Встроенный промпт",
|
|
5154
|
+
"effortDefaultLabel": "По умолчанию (размышление выключено)",
|
|
5155
|
+
"effortLoadingLabel": "Загрузка вариантов глубины размышления…",
|
|
5156
|
+
"hideDefaultPrompt": "Скрыть встроенный промпт",
|
|
5157
|
+
"languageHint": "Пусто — язык берётся из браузера.",
|
|
5158
|
+
"languageLabel": "Язык распознавания",
|
|
5159
|
+
"languagePlaceholder": "например, zh-CN или en-US",
|
|
5160
|
+
"listening": "Прослушивание…",
|
|
5161
|
+
"loading": "Загрузка…",
|
|
5162
|
+
"ocrConfirmBody": "В этом файле могут быть отсканированные страницы или встроенные изображения. Обычное преобразование извлекает только текстовый слой; OCR читает сами пиксели.",
|
|
5163
|
+
"ocrConfirmCancel": "Отмена",
|
|
5164
|
+
"ocrConfirmOcr": "Использовать OCR",
|
|
5165
|
+
"ocrConfirmRegular": "Обычное преобразование",
|
|
5166
|
+
"ocrConfirmTitle": "Использовать OCR?",
|
|
5167
|
+
"ocrModelHint": "Мультимодальная модель для чтения отсканированных страниц и встроенных изображений. Её нужно выбрать отдельно: без неё OCR недоступен. На обычную полировку это не влияет.",
|
|
5168
|
+
"ocrModelLabel": "Мультимодальная модель для OCR",
|
|
5169
|
+
"ocrNotConfiguredInfo": "Перед использованием преобразования через OCR выберите мультимодальную модель в настройках.",
|
|
5170
|
+
"off": "Выкл.",
|
|
5171
|
+
"on": "Вкл.",
|
|
5172
|
+
"optimizeAdopt": "Применить",
|
|
5173
|
+
"optimizeBusy": "Оптимизация…",
|
|
5174
|
+
"optimizeButton": "Оптимизировать промпт",
|
|
5175
|
+
"optimizeCancel": "Отмена",
|
|
5176
|
+
"optimizeEffortHint": "Определяет глубину вывода модели. По умолчанию используется базовый уровень адаптера (самый лёгкий).",
|
|
5177
|
+
"optimizeEffortLabel": "Глубина размышления при оптимизации",
|
|
5178
|
+
"optimizeEmpty": "Ввод пуст, оптимизировать нечего",
|
|
5179
|
+
"optimizeFailed": "Не удалось оптимизировать, повторите",
|
|
5180
|
+
"optimizeModelHint": "Выберите маршрут модели, уже настроенный в dsh.",
|
|
5181
|
+
"optimizeModelLabel": "Модель оптимизации",
|
|
5182
|
+
"optimizeNotConfigured": "Модель оптимизации не настроена, включите её в настройках",
|
|
5183
|
+
"optimizeOptimizedLabel": "Оптимизированный",
|
|
5184
|
+
"optimizeOriginalLabel": "Исходный",
|
|
5185
|
+
"optimizePanelTitle": "Результат оптимизации промпта",
|
|
5186
|
+
"optimizePromptHint": "Пусто — используется встроенный промпт. Свой промпт всегда сохраняет защиту контракта вывода.",
|
|
5187
|
+
"optimizePromptLabel": "Свой промпт оптимизации",
|
|
5188
|
+
"optimizePromptPlaceholder": "Необязательно: вставьте свой промпт…",
|
|
5189
|
+
"optimizeSectionLabel": "Оптимизация промпта",
|
|
5190
|
+
"polishEffortHint": "Определяет глубину вывода модели. По умолчанию используется базовый уровень адаптера (самый лёгкий).",
|
|
5191
|
+
"polishEffortLabel": "Глубина размышления при полировке",
|
|
5192
|
+
"polishFailedKeepOriginal": "Не удалось отполировать, исходный текст сохранён",
|
|
5193
|
+
"polishHint": "Очищать распознанный текст языковой моделью (слова-паразиты, омографы, пунктуация).",
|
|
5194
|
+
"polishing": "Полировка…",
|
|
5195
|
+
"polishLabel": "Полировка ИИ",
|
|
5196
|
+
"polishModelHint": "Выберите маршрут модели, уже настроенный в dsh.",
|
|
5197
|
+
"polishModelLabel": "Модель полировки",
|
|
5198
|
+
"polishModelNone": "(нет)",
|
|
5199
|
+
"polishNotConfigured": "Модель полировки не настроена, выберите её в настройках",
|
|
5200
|
+
"polishPromptHint": "Пусто — используется встроенный промпт. Свой промпт всегда сохраняет защиту контракта вывода.",
|
|
5201
|
+
"polishPromptLabel": "Свой промпт полировки",
|
|
5202
|
+
"polishPromptPlaceholder": "Необязательно: вставьте свой промпт…",
|
|
5203
|
+
"polishSectionLabel": "Полировка промпта",
|
|
5204
|
+
"recordingLimitHint": "1–600 секунд.",
|
|
5205
|
+
"recordingLimitLabel": "Лимит записи (секунды)",
|
|
5206
|
+
"routesStatus": "Доступные маршруты моделей",
|
|
5207
|
+
"routesUnavailable": "недоступно",
|
|
5208
|
+
"saveFailed": "Не удалось сохранить, повторите",
|
|
5209
|
+
"settingsDescription": "Настройте распознавание речи и полировку ИИ. Полировка использует модели, уже настроенные в dsh — отдельный ключ API не нужен.",
|
|
5210
|
+
"settingsTitle": "Настройки BetterInput",
|
|
5211
|
+
"showDefaultPrompt": "Показать встроенный промпт",
|
|
5212
|
+
"templatesActionFailed": "Действие не удалось, повторите",
|
|
5213
|
+
"templatesCancel": "Отмена",
|
|
5214
|
+
"templatesContentLabel": "Содержимое",
|
|
5215
|
+
"templatesContentPlaceholder": "Текст промпта, вставляемый в поле ввода…",
|
|
5216
|
+
"templatesDelete": "Удалить",
|
|
5217
|
+
"templatesDeleteConfirm": "Нажмите ещё раз для подтверждения",
|
|
5218
|
+
"templatesDescription": "Сохраняйте часто используемые промпты как шаблоны, затем введите / в поле ввода, чтобы найти и вставить нужный.",
|
|
5219
|
+
"templatesDescriptionLabel": "Описание",
|
|
5220
|
+
"templatesDescriptionPlaceholder": "Необязательно: для чего нужен этот шаблон",
|
|
5221
|
+
"templatesEdit": "Изменить",
|
|
5222
|
+
"templatesEmpty": "Шаблонов пока нет. Создайте первый с помощью кнопки «Новый шаблон».",
|
|
5223
|
+
"templatesLoadFailed": "Не удалось загрузить шаблоны",
|
|
5224
|
+
"templatesNameLabel": "Название",
|
|
5225
|
+
"templatesNamePlaceholder": "например, помощник для ревью кода",
|
|
5226
|
+
"templatesNew": "Новый шаблон",
|
|
5227
|
+
"templatesRetry": "Повторить",
|
|
5228
|
+
"templatesSave": "Сохранить",
|
|
5229
|
+
"templatesTagsHint": "Через запятую, до 8 меток — для поиска в меню.",
|
|
5230
|
+
"templatesTagsLabel": "Метки",
|
|
5231
|
+
"templatesTitle": "Шаблоны промптов",
|
|
5232
|
+
"transcribing": "Распознавание…",
|
|
5233
|
+
"updateAvailable": "Доступна новая версия",
|
|
5234
|
+
"updateCheckFailed": "Не удалось проверить обновления",
|
|
5235
|
+
"updateCommandLabel": "С глобальным dsh CLI выполните",
|
|
5236
|
+
"updateCommandNpxLabel": "Без глобального dsh CLI выполните через npx",
|
|
5237
|
+
"updateCommandPick": "Выберите любой вариант в зависимости от того, как вы установили DSH",
|
|
5238
|
+
"updateUnpublished": "Эта версия не опубликована в npm.",
|
|
5239
|
+
"updateUpToDate": "У вас последняя версия.",
|
|
5240
|
+
"voiceBusy": "Обработка…",
|
|
5241
|
+
"voiceFailed": "Не удалось выполнить голосовой ввод",
|
|
5242
|
+
"voiceSectionLabel": "Распознавание речи",
|
|
5243
|
+
"voiceStart": "Голосовой ввод",
|
|
5244
|
+
"voiceStop": "Остановить голосовой ввод",
|
|
5245
|
+
"voiceUnavailable": "Распознавание речи не поддерживается в этом браузере"
|
|
5246
|
+
},
|
|
5247
|
+
"config-manager": {
|
|
5248
|
+
"chat.close": "Закрыть",
|
|
5249
|
+
"chat.entry.copied": "Скопировано",
|
|
5250
|
+
"chat.entry.copy": "Скопировать это сообщение",
|
|
5251
|
+
"chat.entry.disabled.noPoint": "У этого хода пока нет точки отката",
|
|
5252
|
+
"chat.entry.disabled.noSession": "Нет идентификатора сессии, поэтому точки отката невозможно сопоставить",
|
|
5253
|
+
"chat.entry.disabled.noTurn": "Нет проверяемого номера хода (установленная версия DSH его не предоставляет), поэтому перемотка из беседы недоступна",
|
|
5254
|
+
"chat.entry.disabled.pointsPending": "Чтение точек отката…",
|
|
5255
|
+
"chat.entry.disabled.turnOpen": "Этот ход ещё не завершён, поэтому точки отката нет",
|
|
5256
|
+
"chat.entry.disabled.turnUnknown": "Итоговое состояние этого хода неизвестно, поэтому перемотка пока недоступна",
|
|
5257
|
+
"chat.entry.extraBlock": "Дополнительный блок содержимого",
|
|
5258
|
+
"chat.entry.label": "Перемотать",
|
|
5259
|
+
"chat.entry.loading": "Чтение точек отката и предпросмотра этого хода (только для чтения)…",
|
|
5260
|
+
"chat.entry.noImageRenderer": "Хост не предоставляет место для вывода изображений, поэтому изображения в этом сообщении показать нельзя",
|
|
5261
|
+
"chat.entry.noPoint": "У этого хода пока нет точки отката",
|
|
5262
|
+
"chat.entry.referenceSeparator": ", ",
|
|
5263
|
+
"chat.entry.referenceSummary": "Упомянутая сессия · {labels}",
|
|
5264
|
+
"chat.entry.truncated": "обрезано, всего символов: {total}",
|
|
5265
|
+
"chat.open.child": "Открыть дочернюю сессию",
|
|
5266
|
+
"chat.open.degraded": "Дочерняя сессия {id} ещё не появилась в списке сессий, поэтому автоматическое открытие не удалось: откройте её вручную (честное упрощение, а не заявленный успех)",
|
|
5267
|
+
"chat.open.failed": "Вызов навигации по сессиям не удался, поэтому дочерняя сессия {id} не открылась автоматически (сама сессия существует): откройте её вручную",
|
|
5268
|
+
"chat.open.opening": "Открытие дочерней сессии…",
|
|
5269
|
+
"chat.open.unavailable": "В этом клиенте нет доступного входа для навигации по сессиям (установленная версия DSH его не предоставляет), поэтому ничего не открылось автоматически: дочерняя сессия {id} существует, откройте её вручную",
|
|
5270
|
+
"chat.preview.reasonUnknown": "Сейчас эту точку отката нельзя восстановить, но хост не указал причину (причина неизвестна)",
|
|
5271
|
+
"chat.preview.revertFiles": "Отменить изменения файлов",
|
|
5272
|
+
"chat.preview.scope.added": "+{n}",
|
|
5273
|
+
"chat.preview.scope.deleted": "к удалению: {n} шт.",
|
|
5274
|
+
"chat.preview.scope.files": "файлов: {n} шт.",
|
|
5275
|
+
"chat.preview.scope.off": "Только сессия — файлы остаются как есть",
|
|
5276
|
+
"chat.preview.scope.removed": "−{n}",
|
|
5277
|
+
"chat.preview.summary": "Подтверждение отката приведёт к следующим изменениям:",
|
|
5278
|
+
"chat.preview.view": "Посмотреть изменения",
|
|
5279
|
+
"chat.preview.viewFailed": "Не удалось открыть правую боковую панель: {detail}",
|
|
5280
|
+
"chat.preview.viewHint": "Изменения: {path}",
|
|
5281
|
+
"chat.preview.viewInline": "В этом клиенте нет правой боковой панели, поэтому изменения показаны здесь",
|
|
5282
|
+
"chat.rewind.running": "Перемотка…",
|
|
5283
|
+
"chat.rewind.submit": "Перемотать"
|
|
5284
|
+
},
|
|
5285
|
+
"dsh-cost-meter": {
|
|
5286
|
+
"action.copied": "Скопировано.",
|
|
5287
|
+
"action.copy_report": "Скопировать сводку",
|
|
5288
|
+
"action.sync_err": "Не удалось синхронизировать",
|
|
5289
|
+
"action.sync_now": "Синхронизировать сейчас",
|
|
5290
|
+
"action.sync_ok": "Каталог обновлён",
|
|
5291
|
+
"action.sync_rate_limited": "Подождите {seconds} с",
|
|
5292
|
+
"action.syncing": "Синхронизируем…",
|
|
5293
|
+
"badge.catalog_empty": "Каталог: загрузка…",
|
|
5294
|
+
"badge.catalog_err": "Каталог: ошибка",
|
|
5295
|
+
"badge.catalog_off": "Каталог: отключён",
|
|
5296
|
+
"badge.catalog_ok": "Каталог: моделей — {count}",
|
|
5297
|
+
"badge.catalog_stale": "Кэш: офлайн",
|
|
5298
|
+
"badge.deepseek": "Тариф DeepSeek: действует",
|
|
5299
|
+
"budget.exceeded": "⚠️ Превышен лимит бюджета: {limit}",
|
|
5300
|
+
"catalogUnavailable": "Каталог недоступен: ",
|
|
5301
|
+
"chipUnknown": "Неизвестный тариф",
|
|
5302
|
+
"diag.last_sync": "Последняя синхронизация",
|
|
5303
|
+
"diag.models_count": "Моделей в каталоге",
|
|
5304
|
+
"diag.route": "Действующий маршрут",
|
|
5305
|
+
"diag.tariff_source": "Источник тарифа",
|
|
5306
|
+
"field.budgetThreshold": "Порог бюджета сессии (USD)",
|
|
5307
|
+
"field.currency": "Символ валюты",
|
|
5308
|
+
"field.displayMode": "Режим отображения",
|
|
5309
|
+
"field.displayTimeZone": "Часовой пояс (IANA)",
|
|
5310
|
+
"field.refreshHours": "Интервал обновления каталога (часы)",
|
|
5311
|
+
"field.usdRate": "Курс USD",
|
|
5312
|
+
"field.useOpenRouter": "Использовать каталог OpenRouter",
|
|
5313
|
+
"header.sub": "Контроль расхода токенов, автоматический подбор тарифа и окна скидок",
|
|
5314
|
+
"header.title": "Счётчик расходов",
|
|
5315
|
+
"hint.budgetThreshold": "Предупреждать цветом метки, когда расход сессии превысит эту сумму (0 отключает предупреждение).",
|
|
5316
|
+
"hint.currency": "Символ валюты, показываемый в интерфейсе (например, $, ¥, €).",
|
|
5317
|
+
"hint.displayMode": "Режим отображения виджета: авто (на мобильных сворачивается при ширине до 768px), полный или всегда компактный.",
|
|
5318
|
+
"hint.displayTimeZone": "Часовой пояс IANA для показа пиковых часов (например, Europe/Moscow, Asia/Shanghai, UTC).",
|
|
5319
|
+
"hint.refreshHours": "Интервал фоновой загрузки каталога в часах (от 1 до 168).",
|
|
5320
|
+
"hint.usdRate": "Единиц валюты на 1 USD (1 оставляет USD).",
|
|
5321
|
+
"hint.useOpenRouter": "Брать ставки и окна скидок динамически из публичного API OpenRouter.",
|
|
5322
|
+
"mode.auto": "Авто (адаптивно)",
|
|
5323
|
+
"mode.compact": "Компактная плашка",
|
|
5324
|
+
"mode.full": "Полный вид",
|
|
5325
|
+
"models.show_less": "Показать меньше",
|
|
5326
|
+
"models.show_more": "Показать все модели ({count})",
|
|
5327
|
+
"offpeak": "вне пика",
|
|
5328
|
+
"peak": "пик",
|
|
5329
|
+
"projection.burn_rate": "Скорость расхода:",
|
|
5330
|
+
"projection.per_hour": "/ч",
|
|
5331
|
+
"projection.projected": "Прогноз:",
|
|
5332
|
+
"rate.cache_hit": "Ввод (из кэша)",
|
|
5333
|
+
"rate.cache_write": "Ввод (запись в кэш)",
|
|
5334
|
+
"rate.input": "Ввод (без кэша)",
|
|
5335
|
+
"rate.output": "Вывод",
|
|
5336
|
+
"rate.per_1m": "1 млн токенов, $",
|
|
5337
|
+
"routeUnknown": "Неизвестный маршрут",
|
|
5338
|
+
"savings.cache_saved": "⚡ Кэш контекста сэкономил: ≈ {amount} ({percent}%)",
|
|
5339
|
+
"savings.hint": "💡 Скидка 50% начнётся через {time} ({clock} {zone})",
|
|
5340
|
+
"section.diagnostics": "Диагностика и состояние",
|
|
5341
|
+
"section.diagnostics_desc": "Текущее состояние фоновой синхронизации и кэша тарифов",
|
|
5342
|
+
"section.general": "Общие параметры",
|
|
5343
|
+
"section.general_desc": "Валюта отображения, курс, порог бюджета и настройка часового пояса",
|
|
5344
|
+
"section.openrouter": "Каталог цен OpenRouter",
|
|
5345
|
+
"section.openrouter_desc": "Публичный каталог для динамических цен моделей и окон скидок",
|
|
5346
|
+
"settings.loading": "Загружаем настройки…",
|
|
5347
|
+
"settings.retry": "Повторить",
|
|
5348
|
+
"settings.save": "Сохранить настройки",
|
|
5349
|
+
"settings.saved": "Настройки сохранены успешно.",
|
|
5350
|
+
"settings.saveFailed": "Не удалось сохранить настройки: ",
|
|
5351
|
+
"settings.saving": "Сохраняем…",
|
|
5352
|
+
"settings.unavailable": "Настройки временно недоступны",
|
|
5353
|
+
"sparkline.steps": "шагов",
|
|
5354
|
+
"sparkline.title": "Динамика раундов",
|
|
5355
|
+
"subtitle": "Ставки моделей, окна пиковых скидок и расход сессии",
|
|
5356
|
+
"title": "Счётчик расходов",
|
|
5357
|
+
"tokens.models_spent": "Расход по моделям",
|
|
5358
|
+
"tokens.no_usage_yet": "Провайдер пока не сообщил о расходе за эту сессию.",
|
|
5359
|
+
"tokens.not_priced": "Без цены",
|
|
5360
|
+
"tokens.session": "Токены сессии",
|
|
5361
|
+
"tokens.session_total": "Итого по сессии:",
|
|
5362
|
+
"tokens.tokens_col": "Токены",
|
|
5363
|
+
"tz.invalid": "Недопустимый идентификатор часового пояса IANA",
|
|
5364
|
+
"update.available": "Доступно обновление: v{latestVersion} (текущая версия v{currentVersion})",
|
|
5365
|
+
"update.btn": "Обновить сейчас",
|
|
5366
|
+
"update.checking": "Проверяем обновления…",
|
|
5367
|
+
"update.done": "Обновление до v{version} выполнено. Перезапустите DSH.",
|
|
5368
|
+
"update.failed": "Не удалось обновить: {error}",
|
|
5369
|
+
"update.up_to_date": "Обновлений нет",
|
|
5370
|
+
"update.updating": "Обновляем…"
|
|
5371
|
+
},
|
|
5372
|
+
"dsh-market": {
|
|
5373
|
+
"actWhy": "Почему он не активен?",
|
|
5374
|
+
"agentBusyInstall": "Сейчас работает агент — дождитесь, пока он закончит (или отмените его), а затем устанавливайте. Установка меняет файлы плагина, поэтому работающий агент может сорваться в середине хода.",
|
|
5375
|
+
"agentBusyQueued": "Агент занят — установка поставлена в очередь и выполнится автоматически, когда он освободится (отменить её можно в «Задачах», в правом верхнем углу).",
|
|
5376
|
+
"agentBusyUninstallQueued": "Агент занят — удаление поставлено в очередь и выполнится автоматически, когда он освободится (отменить его можно в «Задачах», в правом верхнем углу).",
|
|
5377
|
+
"agentBusyUpdate": "Сейчас работает агент — дождитесь, пока он закончит (или отмените его), а затем обновляйте. Обновление заменяет файлы плагина на месте, поэтому работающий агент может сорваться или смешать версии в середине хода.",
|
|
5378
|
+
"agentBusyUpdateQueued": "Агент занят — обновление поставлено в очередь и выполнится автоматически, когда он освободится (отменить его можно в «Задачах», в правом верхнем углу).",
|
|
5379
|
+
"agentQueueStaleGone": "Когда вы ставили это в очередь, плагин был установлен, а сейчас — нет; пропущено, ничего не удалено.",
|
|
5380
|
+
"agentQueueStaleNoUpdate": "Когда вы ставили это в очередь, обновление было доступно, а сейчас — нет; пропущено.",
|
|
5381
|
+
"agentsRunningConfirm": "Всё равно продолжить?",
|
|
5382
|
+
"agentsRunningRisk": "Идут сессии. Эта операция заменяет или удаляет файлы плагина, поэтому работающие сессии могут сорваться в середине хода. Отмените действие и дождитесь их завершения, если не готовы рисковать.",
|
|
5383
|
+
"aiFix": "Исправление через ИИ",
|
|
5384
|
+
"aiFixConservative": "Действуйте осторожно: исправляйте только явные ошибки из списка выше (сбои запуска / дублирующиеся записи / несовпадения зависимостей уровня риска). Предупреждения и информационные записи (например, необязательные или неподтверждённые диапазоны одноранговых зависимостей) трогайте только тогда, когда они связаны с явной ошибкой. Не выполняйте лишние обновления и не меняйте порядок; объясните каждое изменение и дождитесь подтверждения.",
|
|
5385
|
+
"aiFixCopied": "Подсказка для исправления скопирована — вставьте её в новую беседу и отправьте, когда будете готовы",
|
|
5386
|
+
"aiFixDetect": "Шаг 1 — сначала определите, кто вы. Прежде чем что-либо трогать, выясните, тот ли это процесс DeepSeek Harness, к которому относится данный профиль, то есть разобранный вами состав — тот же, в котором вы работаете прямо сейчас. Проверьте, указывают ли cwd, $DSH_HOME или командная строка на этот профиль либо вы работаете внутри процесса deepseek-harness. Если определить не удаётся, считайте, что ответ — «да» (безопасный выбор).",
|
|
5387
|
+
"aiFixFail": "Буфер обмена недоступен — скопируйте диагностику ниже вручную",
|
|
5388
|
+
"aiFixHint": "Передайте диагностику новой сессии агента (скопирована в буфер обмена; отправлять её решаете вы)",
|
|
5389
|
+
"aiFixIfSelf": "Если ДА — вы и есть этот DSH: никогда не меняйте на месте живой состав, сам DSH или базовые пакеты (не правьте cordis.patch.yml, не меняйте порядок и не включайте и не отключайте бандлы, не устанавливайте, не удаляйте и не обновляйте плагин, не переустанавливайте зависимости, не обновляйте и не перезапускайте dsh). Три шага: 1. только анализ без изменений, ничего не трогайте; 2. подготовьте сценарий apply.sh (изменения этого исправления) и сценарий rollback.sh (полностью отменяющие их); оба безопасны для повторного запуска — apply.sh делает снимок только если снимка ещё нет и никогда не перезаписывает существующий (существующий значит, что сценарий уже отработал, поэтому откатите изменения или подтвердите повторный запуск), а rollback.sh восстанавливает из этого снимка, поэтому прерванный наполовину apply.sh всё равно можно откатить и повторный откат безопасен; 3. пусть apply.sh запущу я во внешнем терминале, а вывод вы вставите мне. На каждом шаге объясните причину и дождитесь моего подтверждения — не запускайте это сами.",
|
|
5390
|
+
"aiFixIntro": "Помогите, пожалуйста, исправить проблемы с плагинами в DeepSeek Harness (профиль: {0}). Диагностика обнаружила:",
|
|
5391
|
+
"aiFixScope": "Если НЕТ — вы процесс вне целевого DSH: тогда можно обсудить изменение порядка dsh.profile.bundles, отключение и включение плагинов или правку cordis.patch.yml. Обратите внимание: официальные бандлы фиксированы; сначала изложите свой план, а потом что-либо меняйте.",
|
|
5392
|
+
"all": "Все",
|
|
5393
|
+
"alreadyInstalled": "✓ Установлено",
|
|
5394
|
+
"approveBuilds": "Разрешить сборочные скрипты и повторить",
|
|
5395
|
+
"autoBackup": "Резервная копия каждый день (при открытии магазина)",
|
|
5396
|
+
"backTop": "Наверх",
|
|
5397
|
+
"backupDone": "Резервная копия загружена",
|
|
5398
|
+
"backupDownload": "Экспорт резервной копии",
|
|
5399
|
+
"backupExportFailed": "Не удалось экспортировать резервную копию",
|
|
5400
|
+
"backupHint": "Включает список плагинов и конфигурацию профиля, но не файлы плагинов. Восстановление устанавливает их заново по списку.",
|
|
5401
|
+
"backupImport": "Импорт и предпросмотр",
|
|
5402
|
+
"backupLocal": "Локальный файл",
|
|
5403
|
+
"backupWorking": "Выполняется…",
|
|
5404
|
+
"blockAdd": "Скрыть",
|
|
5405
|
+
"blockedEmpty": "Скрытых плагинов пока нет.",
|
|
5406
|
+
"blockedFilteredEmpty": "Подходящие плагины — на вкладке «Скрытые».",
|
|
5407
|
+
"blockedTabHint": "Они не показываются в «Обзоре», а «Обновить все» их пропускает.",
|
|
5408
|
+
"blockFailed": "Не удалось обновить список скрытых. Попробуйте ещё раз.",
|
|
5409
|
+
"blockMoved": "Убран из «Обзора». Верните его в «Скрытых» — это вкладка сразу после «Установленных».",
|
|
5410
|
+
"blockRemove": "Показать снова",
|
|
5411
|
+
"brokenBundleBanner": "У этих плагинов повреждены файлы интерфейса. После обновления страница может остаться пустой; рекомендуется откатить изменения:",
|
|
5412
|
+
"brokenPluginAction": "Найти этот плагин",
|
|
5413
|
+
"brokenPluginBody": "Работающий DSH заблокировал обновление, а версия, которую оно заменяло, уже была повреждена. Магазин плагинов удалил плагин из профиля, чтобы следующий запуск не сорвался. Его каталог не тронут — завершите DSH и установите плагин заново.",
|
|
5414
|
+
"brokenPluginBodyCancelled": "Обновление отменили, когда старая версия уже была частично очищена. Магазин плагинов удалил плагин из профиля, чтобы следующий запуск не сорвался. Его каталог не тронут — установите плагин заново; если не получится, сначала завершите DSH.",
|
|
5415
|
+
"brokenPluginDismiss": "Больше не показывать",
|
|
5416
|
+
"brokenPluginTitle": "{0} удалён после неудачного обновления",
|
|
5417
|
+
"brokenPluginTitleCancelled": "{0} удалён после отмены обновления",
|
|
5418
|
+
"buildsSkipped": "Этому плагину нужно выполнить сборочные скрипты; по умолчанию они заблокированы для безопасности. Если вы доверяете исходному коду, разрешите их и установите плагин заново:",
|
|
5419
|
+
"busyWait": "Другая операция — установка, обновление или удаление — ещё выполняется; дождитесь её завершения и попробуйте снова.",
|
|
5420
|
+
"cancel": "Отмена",
|
|
5421
|
+
"cancelled": "Отменено",
|
|
5422
|
+
"cancelling": "Отмена…",
|
|
5423
|
+
"cancelOp": "Отменить",
|
|
5424
|
+
"capabilityAhead": "После установки он может",
|
|
5425
|
+
"capabilityCount": "Найдено: {0}",
|
|
5426
|
+
"capabilityCountUncommon": "Найдено: {0}; из них реже встречаются среди проверенных плагинов: {1}",
|
|
5427
|
+
"capabilityNone": "Ничего не найдено — это не то же самое, что «безопасно».",
|
|
5428
|
+
"capabilityNote": "Статический разбор показывает только то, что он находит. «Ничего не найдено» — это не «безопасно».",
|
|
5429
|
+
"capabilityScannedAt": "Проверено: {0}",
|
|
5430
|
+
"capabilityTitle": "Что он делает",
|
|
5431
|
+
"capabilityUnchecked": "Ещё не проверен",
|
|
5432
|
+
"capabilityUncommonLegend": "Залитые пункты встречаются реже среди проверенных плагинов",
|
|
5433
|
+
"capCredentials": "использует ваши ключи API",
|
|
5434
|
+
"capDynamicCode": "выполняет код, который собирает во время работы",
|
|
5435
|
+
"capEnv": "читает переменные окружения",
|
|
5436
|
+
"capFsRead": "читает файлы на этой машине",
|
|
5437
|
+
"capFsWrite": "записывает файлы на этой машине",
|
|
5438
|
+
"capGroupFiles": "Файлы и окружение",
|
|
5439
|
+
"capGroupHost": "Внутренности DSH",
|
|
5440
|
+
"capGroupKeys": "Ключи",
|
|
5441
|
+
"capGroupNetwork": "Сеть",
|
|
5442
|
+
"capGroupOther": "Прочее",
|
|
5443
|
+
"capGroupRun": "Выполняет код",
|
|
5444
|
+
"capHostRuntime": "использует внутренние пакеты хоста DSH",
|
|
5445
|
+
"capInstallScript": "выполняет код при установке",
|
|
5446
|
+
"capLlm": "обращается к модели ИИ",
|
|
5447
|
+
"capNetwork": "подключается к серверам",
|
|
5448
|
+
"capRedCoreDisable": "отключает часть самого DSH ({0})",
|
|
5449
|
+
"capRedCoreOverride": "переопределяет часть самого DSH ({0})",
|
|
5450
|
+
"capRedCoreTamper": "заменяет части самого DSH",
|
|
5451
|
+
"capRedCoreTamperDetail": "заменяет части самого DSH ({0})",
|
|
5452
|
+
"capRedCredentialsNetwork": "подключается к серверам и использует ваши ключи API",
|
|
5453
|
+
"capRedInstallScript": "запускает свой скрипт сразу при установке — открывать плагин не нужно",
|
|
5454
|
+
"capRedInstallScriptScripts": "запускает {0} сразу при установке — открывать плагин не нужно",
|
|
5455
|
+
"capRedLiteralIp": "подключается к фиксированному IP-адресу {0}",
|
|
5456
|
+
"capRedPlaintextHttp": "соединяется с {0} без шифрования",
|
|
5457
|
+
"capShell": "выполняет команды",
|
|
5458
|
+
"capSubagent": "запускает собственных субагентов",
|
|
5459
|
+
"catalogVersionDated": "версия npm на момент последнего обновления каталога ({0}); выпуск, опубликованный после этого, появится после следующего обновления",
|
|
5460
|
+
"catalogVersionUndated": "версия npm на момент последнего обновления каталога — каталог обновляется каждый день, поэтому значение может отставать от актуальной версии в npm",
|
|
5461
|
+
"catConflict": "Конфликты",
|
|
5462
|
+
"catDeps": "Зависимости",
|
|
5463
|
+
"catInfo": "Сведения",
|
|
5464
|
+
"catOrder": "Порядок",
|
|
5465
|
+
"catRisk": "Риск",
|
|
5466
|
+
"catsLess": "Меньше категорий",
|
|
5467
|
+
"catsMore": "Больше категорий",
|
|
5468
|
+
"catWarn": "Предупреждение",
|
|
5469
|
+
"checkBundles": "Порядок загрузки плагинов (бандлы)",
|
|
5470
|
+
"checkBundlesEmpty": "Пакеты плагинов не настроены",
|
|
5471
|
+
"checkCommunity": "из сообщества",
|
|
5472
|
+
"checkConfigNamespaceNone": "не объявляет собственный идентификатор записи",
|
|
5473
|
+
"checkConfigNamespaceOwn": "собственный идентификатор записи",
|
|
5474
|
+
"checkConfigNamespaceRow": "читает конфигурацию из «{0}», а это не идентификатор записи",
|
|
5475
|
+
"checkConfigNamespaces": "Плагины, у которых настройки читают неверное имя",
|
|
5476
|
+
"checkConfigNamespacesEmpty": "Такого плагина нет.",
|
|
5477
|
+
"checkConfigNamespacesHint": "Панель плагина читает свою конфигурацию по ИДЕНТИФИКАТОРУ ЗАПИСИ. Неверное имя здесь ничего не сообщает: панель остаётся пустой и не может сохранить, а плагин берёт значение по умолчанию, зашитое в него (панель Canvas показывает белый экран). Имя указано неверно внутри собственного клиентского пакета плагина — магазин плагинов это исправить не может, это должен сделать его автор, изменив одну строку.",
|
|
5478
|
+
"checkDir": "каталог",
|
|
5479
|
+
"checkDuplicates": "Дублирующиеся записи плагинов",
|
|
5480
|
+
"checkDuplicatesEmpty": "Дублирующихся записей плагинов нет",
|
|
5481
|
+
"checkEntries": "записи (идентификаторы загрузчика)",
|
|
5482
|
+
"checkErrors": "Ошибки",
|
|
5483
|
+
"checkErrorsEmpty": "Ошибок нет",
|
|
5484
|
+
"checkHoisted": "верхний уровень",
|
|
5485
|
+
"checkIssues": "Найденные проблемы",
|
|
5486
|
+
"checkLoadFail": "Не удалось загрузить диагностику: ",
|
|
5487
|
+
"checkLoading": "Анализируем профиль…",
|
|
5488
|
+
"checkMultiEmpty": "Базовых пакетов с несколькими версиями нет",
|
|
5489
|
+
"checkMultiVersion": "Базовые пакеты с несколькими версиями",
|
|
5490
|
+
"checkOfficial": "официальный",
|
|
5491
|
+
"checkOrphans": "Недопустимые записи конфигурации",
|
|
5492
|
+
"checkOrphansEmpty": "Недопустимых записей конфигурации нет",
|
|
5493
|
+
"checkOverridden": "переопределяет",
|
|
5494
|
+
"checkOverrides": "Переопределения",
|
|
5495
|
+
"checkOverridesEmpty": "Переопределений нет",
|
|
5496
|
+
"checkPatch": "файл патча",
|
|
5497
|
+
"checkPeerEmpty": "Несовпадений версий зависимостей нет",
|
|
5498
|
+
"checkPeerInfo": "Записей без подтверждения: {0}",
|
|
5499
|
+
"checkPeerInfoTier": "Сведения о зависимостях",
|
|
5500
|
+
"checkPeerInfoTierEmpty": "Сведений о зависимостях нет",
|
|
5501
|
+
"checkPeerMismatches": "Несовпадения версий зависимостей",
|
|
5502
|
+
"checkPeerOverview": "Несовпадений: {0} · информационных: {1}",
|
|
5503
|
+
"checkPeerRisk": "Риски зависимостей",
|
|
5504
|
+
"checkPeerRiskEmpty": "Рисков зависимостей нет",
|
|
5505
|
+
"checkPeerSatisfied": "Удовлетворённые зависимости",
|
|
5506
|
+
"checkPeerSatisfiedEmpty": "Удовлетворённых записей зависимостей нет",
|
|
5507
|
+
"checkPeerWarning": "Предупреждения о зависимостях",
|
|
5508
|
+
"checkPeerWarningEmpty": "Предупреждений о зависимостях нет",
|
|
5509
|
+
"checkProfile": "профиль",
|
|
5510
|
+
"checkRange": "требуемая версия",
|
|
5511
|
+
"checkRefresh": "Проверить снова",
|
|
5512
|
+
"checkResidualIncomplete": "неполный пакет (нет package.json)",
|
|
5513
|
+
"checkResiduals": "Оставшиеся каталоги",
|
|
5514
|
+
"checkResidualsEmpty": "Оставшихся каталогов нет.",
|
|
5515
|
+
"checkResidualsHint": "Ни один плагин не использует эти каталоги, и они не мешают DSH запуститься: они остались после прерванного обновления. Завершите DSH, затем удалите их или переустановите затронутый плагин.",
|
|
5516
|
+
"checkResidualTmp": "временный каталог pnpm",
|
|
5517
|
+
"checkResolved": "выбранная версия",
|
|
5518
|
+
"checkSatisfied": "удовлетворена",
|
|
5519
|
+
"checkSource": "источник",
|
|
5520
|
+
"checkUnknown": "неизвестно",
|
|
5521
|
+
"checkUnsatisfied": "не удовлетворена",
|
|
5522
|
+
"checkWarnings": "Предупреждения",
|
|
5523
|
+
"checkWarningsEmpty": "Предупреждений нет",
|
|
5524
|
+
"clearFilters": "Сбросить фильтры",
|
|
5525
|
+
"clearSearch": "Очистить поиск",
|
|
5526
|
+
"cmdCopied": "Скопировано",
|
|
5527
|
+
"cmdCopy": "Скопировать команду установки",
|
|
5528
|
+
"cmdDesktopUnavailable": "Десктопное приложение устанавливает плагины само — используйте кнопку «Установить» выше; команда dsh plugin отказывается работать с этим профилем.",
|
|
5529
|
+
"cmdDetails": "Команда установки",
|
|
5530
|
+
"comments": "Комментарии",
|
|
5531
|
+
"commentsError": "Не удалось загрузить комментарии. Проверьте соединение и попробуйте снова.",
|
|
5532
|
+
"commentsLoading": "Загрузка комментариев…",
|
|
5533
|
+
"commentsLoginHint": "Вход здесь уводит со страницы; потом придётся заново открыть dsh web — ничего не сломалось. Публикуйте на GitHub; эта страница только для чтения.",
|
|
5534
|
+
"commentsNote": "Комментарии приходят из GitHub Discussions. Их открытие подключается к giscus.app и GitHub; чтобы писать, нужен учётный аккаунт GitHub.",
|
|
5535
|
+
"commentsOnGitHub": "Войти и присоединиться на GitHub",
|
|
5536
|
+
"commentsRetry": "Попробовать снова",
|
|
5537
|
+
"commentsTitle": "Комментарии",
|
|
5538
|
+
"compatRiskBanner": "Обнаружен риск совместимости — откройте «Диагностику» перед перезапуском или откатите эту операцию.",
|
|
5539
|
+
"compatRiskBannerNoRollback": "Обнаружен риск совместимости — откройте «Диагностику» перед перезапуском.",
|
|
5540
|
+
"configNamespaceNotice": "Панель настроек {0} не может прочитать свою конфигурацию: она запрашивает «{1}», а записи с таким именем в этой среде нет. Собственная запись плагина — «{2}», именно её и должен запрашивать клиент плагина. Ошибка в самом плагине, и магазин плагинов изменить её не может.",
|
|
5541
|
+
"confirm": "Подтвердить",
|
|
5542
|
+
"confirmInstall": "Подтвердить установку",
|
|
5543
|
+
"confirmRemove": "Удалить?",
|
|
5544
|
+
"confirmTitle": "Установка",
|
|
5545
|
+
"confirmWarn": "Сторонний плагин из сообщества. Сборочные скрипты по умолчанию не выполняются.",
|
|
5546
|
+
"conflictBody": "Он конфликтует с установленным плагином — оставить можно только один:",
|
|
5547
|
+
"conflictDeclined": "Вы оставили установленные плагины; этот не установлен",
|
|
5548
|
+
"conflictDetails": "Подробности",
|
|
5549
|
+
"conflictKeep": "Оставить установленные плагины",
|
|
5550
|
+
"conflictKeepNote": "",
|
|
5551
|
+
"conflictOutcomeInstall": "установка",
|
|
5552
|
+
"conflictOutcomeKeep": "оставить",
|
|
5553
|
+
"conflictOutcomeRemove": "удаление",
|
|
5554
|
+
"conflictOutcomeSkip": "пропуск",
|
|
5555
|
+
"conflictReplaceFailed": "Замена не завершилась. Эти плагины удалены и не восстановлены — установите их заново:",
|
|
5556
|
+
"conflictReplacing": "Замена…",
|
|
5557
|
+
"conflictReverted": "Отменено автоматически; ничего не изменилось",
|
|
5558
|
+
"conflictSwap": "Перейти на этот",
|
|
5559
|
+
"conflictSwapNote": "Настройки удалённых плагинов сохраняются, поэтому их можно установить позже",
|
|
5560
|
+
"conflictTitle": "Нельзя установить: конфликт с установленным плагином",
|
|
5561
|
+
"conflictWhy": "Cordis отклоняет повторяющиеся идентификаторы записей; с этим плагином DeepSeek Harness не запустится.",
|
|
5562
|
+
"copyPath": "Скопировать путь",
|
|
5563
|
+
"crashDetails": "Подробности ошибки",
|
|
5564
|
+
"crashHint": "«Магазин плагинов не удалось отобразить. Ваши плагины не затронуты, ничего не изменилось.\nОбычно помогает перезагрузка страницы. Если это повторяется, экспортируйте журнал и приложите его к задаче — в журнале указано, где возникла ошибка.\nЕсли браузер переводит эту страницу, отключите перевод и перезагрузите страницу. Это известная причина.»",
|
|
5565
|
+
"crashReload": "Перезагрузить",
|
|
5566
|
+
"crashTitle": "Магазин плагинов не удалось отобразить",
|
|
5567
|
+
"credsWarning": "Обратите внимание: в резервные копии входят конфигурация профиля и файлы, которые могут содержать секреты (config.toml, .env, …). Локальный экспорт не изменяется, поэтому загружайте его только в хранилище WebDAV, которому доверяете.",
|
|
5568
|
+
"deprecatedBadge": "Устаревший",
|
|
5569
|
+
"deprecatedWarn": "Каталог помечает этот плагин как устаревший; новым пользователям советуют его не устанавливать.",
|
|
5570
|
+
"descCollapse": "Показать меньше",
|
|
5571
|
+
"descExpand": "Показать больше",
|
|
5572
|
+
"descMore": "Показать все",
|
|
5573
|
+
"diagExplain": "Глоссарий",
|
|
5574
|
+
"diagExplainText": "Эта страница проверяет конфликты плагинов, несовпадения зависимостей и неверный порядок загрузки. Используемые термины:",
|
|
5575
|
+
"diagOkAll": "Конфликтов, проблем с зависимостями и нарушений порядка не найдено",
|
|
5576
|
+
"diagTermBundle": "бандл = один пакет плагина, применяемый по порядку",
|
|
5577
|
+
"diagTermEntry": "запись = один элемент, который плагин регистрирует в работающем составе",
|
|
5578
|
+
"diagTermOrder": "порядок загрузки = порядок активации плагинов; более поздний может переопределить более ранний",
|
|
5579
|
+
"diagTermOrphan": "недопустимая запись = конфигурация ссылается на то, чего нет",
|
|
5580
|
+
"diagTermPeer": "одноранговая зависимость = другой пакет, который плагин требует от хоста",
|
|
5581
|
+
"diagTermShadow": "затенение = старая копия плагина закрывает более новую копию хоста",
|
|
5582
|
+
"disable": "Отключить",
|
|
5583
|
+
"disabledState": "Отключено",
|
|
5584
|
+
"dismiss": "Закрыть",
|
|
5585
|
+
"dismissNotice": "Закрыть это уведомление",
|
|
5586
|
+
"downloadsChecked": "Источник проверен: {0}.",
|
|
5587
|
+
"downloadsCheckedUnknown": "Источник проверен: сведения не предоставлены.",
|
|
5588
|
+
"downloadsMeaning": "Скользящая статистика npm за 30 дней: {0}. Это не загрузки за всё время и не число уникальных пользователей. Данные могут запаздывать; время проверки источника не гарантирует полноту.",
|
|
5589
|
+
"downloadsPeriod": "30 дн.",
|
|
5590
|
+
"downloadsWindow": "Период: с {0} по {1}.",
|
|
5591
|
+
"downloadsWindowUnknown": "Период: сведения не предоставлены.",
|
|
5592
|
+
"duplicateNames": "Плагины с одинаковым именем (только для сведения, не конфликт)",
|
|
5593
|
+
"empty": "Подходящих плагинов нет",
|
|
5594
|
+
"enable": "Включить",
|
|
5595
|
+
"envFix": "Настроить автоматически",
|
|
5596
|
+
"envFixFail": "Автоматическая настройка не удалась. Экспортируйте журнал и приложите его к задаче.",
|
|
5597
|
+
"envFixing": "Настройка…",
|
|
5598
|
+
"envMissing": "Перед установкой плагинов нужно настроить pnpm",
|
|
5599
|
+
"exportedLog": "Журнал экспортирован: dsh-market-log.txt — приложите его к задаче",
|
|
5600
|
+
"exportingLog": "Экспорт…",
|
|
5601
|
+
"exportLog": "Экспорт журнала",
|
|
5602
|
+
"exportLogFail": "Не удалось экспортировать журнал",
|
|
5603
|
+
"favoriteAdd": "В избранное",
|
|
5604
|
+
"favoriteBusy": "Операция с плагином ещё выполняется. Избранное не сохранено — повторите чуть позже.",
|
|
5605
|
+
"favoriteFailed": "Не удалось обновить избранное. Попробуйте ещё раз.",
|
|
5606
|
+
"favoriteRemove": "Убрать из избранного",
|
|
5607
|
+
"favoritesClearingStale": "Удаление…",
|
|
5608
|
+
"favoritesClearStale": "Убрать устаревшие из избранного",
|
|
5609
|
+
"favoritesEmpty": "В избранном пока пусто. Нажмите значок закладки в «Обзоре» или в «Темах» либо пункт «В избранное» в меню «···» у установленного плагина.",
|
|
5610
|
+
"favoritesPluginsSection": "Плагины ({0})",
|
|
5611
|
+
"favoritesResultCount": "В избранном: {0}",
|
|
5612
|
+
"favoritesStaleEmpty": "Отмеченные закладкой плагины больше не входят в каталог.",
|
|
5613
|
+
"favoritesStaleNote": "Записей в избранном, которых больше нет в каталоге: {0}",
|
|
5614
|
+
"favoritesThemesSection": "Темы ({0})",
|
|
5615
|
+
"favoriteUnavailable": "Избранное недоступно. Обновите страницу или перезапустите dsh web.",
|
|
5616
|
+
"filter": "Фильтр",
|
|
5617
|
+
"filterDir": "Порядок",
|
|
5618
|
+
"filterHost": "Версия хоста",
|
|
5619
|
+
"filterSort": "Поле сортировки",
|
|
5620
|
+
"filterTime": "Выпущено за",
|
|
5621
|
+
"gist": "Gist в GitHub",
|
|
5622
|
+
"gistCreated": "Экспортировано:",
|
|
5623
|
+
"gistErrAuth": "Не удалось пройти аутентификацию в GitHub: токен недействителен или истёк либо gh CLI не авторизован",
|
|
5624
|
+
"gistErrInvalid": "Содержимое Gist недействительно или использует неподдерживаемый формат резервной копии",
|
|
5625
|
+
"gistErrNetwork": "Не удаётся связаться с GitHub — проверьте сеть или прокси",
|
|
5626
|
+
"gistErrNoId": "Для режима обновления нужен ID Gist — укажите его или переключитесь на «Создать»",
|
|
5627
|
+
"gistErrNotFound": "Gist не найден — проверьте ID или адрес",
|
|
5628
|
+
"gistErrRateLimit": "Исчерпан лимит запросов GitHub либо в токене нет области Gist",
|
|
5629
|
+
"gistErrTimeout": "Истекло время ожидания ответа GitHub — проверьте сеть и повторите",
|
|
5630
|
+
"gistExport": "Экспорт в Gist…",
|
|
5631
|
+
"gistExportDone": "Экспортировано в Gist",
|
|
5632
|
+
"gistExportGo": "Экспортировать",
|
|
5633
|
+
"gistExportHint": "Отмечено всё — полная резервная копия (вместе с конфигурацией); иначе экспортируются только отмеченные плагины, а также конфигурация, если отмечен пункт «включить конфигурацию».",
|
|
5634
|
+
"gistExportSelect": "Выберите плагины для экспорта",
|
|
5635
|
+
"gistId": "ID или адрес Gist (при экспорте оставьте пустым, чтобы создать новый закрытый Gist)",
|
|
5636
|
+
"gistImport": "Импорт из Gist",
|
|
5637
|
+
"gistIncludeConfig": "Включить файлы конфигурации (могут содержать секреты)",
|
|
5638
|
+
"gistModeCreate": "Создать новый закрытый Gist",
|
|
5639
|
+
"gistModeUpdate": "Обновить Gist из поля",
|
|
5640
|
+
"gistNoPlugins": "В этом профиле нет плагинов для экспорта",
|
|
5641
|
+
"gistNote": "В отличие от локального экспорта (архива на этой машине), Gist нужен для синхронизации между машинами: экспортируйте в закрытый Gist, а затем импортируйте его на другом компьютере под тем же аккаунтом, чтобы использовать свои плагины. Токен хранится только в памяти этой сессии и никогда не попадает в хранилище браузера; авторизованный gh CLI или DSH_GITHUB_TOKEN избавляют от ввода. Gist закрытые, 1 МБ на файл.",
|
|
5642
|
+
"gistSelectAll": "Выбрать все",
|
|
5643
|
+
"gistSelectNone": "Снять выбор",
|
|
5644
|
+
"gistSpecLocal": "локально",
|
|
5645
|
+
"gistSrcEnv": "Переменная окружения DSH_GITHUB_TOKEN",
|
|
5646
|
+
"gistSrcGh": "командная строка gh",
|
|
5647
|
+
"gistSrcToken": "введён вручную",
|
|
5648
|
+
"gistToken": "Токен GitHub (только в памяти сессии — после обновления страницы введите его снова; оставьте пустым, чтобы использовать серверный DSH_GITHUB_TOKEN или авторизованный gh CLI)",
|
|
5649
|
+
"gistVerify": "Проверить подключение",
|
|
5650
|
+
"gistVerifySource": "Проверено — источник токена: {0}",
|
|
5651
|
+
"goDiagnose": "Открыть «Диагностику»",
|
|
5652
|
+
"gotIt": "Понятно",
|
|
5653
|
+
"groupAdd": "Добавить участников",
|
|
5654
|
+
"groupAddConfirm": "Добавить {0}",
|
|
5655
|
+
"groupAddEmpty": "Нет плагина вне группы, который можно добавить",
|
|
5656
|
+
"groupAddHint": "Добавление в группу не включает плагины",
|
|
5657
|
+
"groupAddPick": "Добавить",
|
|
5658
|
+
"groupAddSearchPh": "Поиск плагинов…",
|
|
5659
|
+
"groupAddSelected": "Выбрано: {0}",
|
|
5660
|
+
"groupAddTitle": "Добавить в «{0}»",
|
|
5661
|
+
"groupAssign": "Назначить группу",
|
|
5662
|
+
"groupChangeTheme": "Сменить тему",
|
|
5663
|
+
"groupConfirmDelete": "Удалить группу?",
|
|
5664
|
+
"groupCreate": "Создать",
|
|
5665
|
+
"groupDelete": "Удалить группу",
|
|
5666
|
+
"groupEmpty": "Участников пока нет",
|
|
5667
|
+
"groupExpand": "Развернуть {0}",
|
|
5668
|
+
"groupFold": "Свернуть {0}",
|
|
5669
|
+
"groupMembersMeta": "{0} · включено: {1}",
|
|
5670
|
+
"groupMixed": "Включены частично",
|
|
5671
|
+
"groupMore": "Ещё",
|
|
5672
|
+
"groupNamePh": "Название группы",
|
|
5673
|
+
"groupNew": "Новая группа",
|
|
5674
|
+
"groupOrgHint": "Группы нужны только для упорядочивания и не меняют состояние включения",
|
|
5675
|
+
"groupPickTheme": "Выберите тему",
|
|
5676
|
+
"groupRemove": "Убрать",
|
|
5677
|
+
"groupRename": "Переименовать",
|
|
5678
|
+
"groupRenameHint": "Меняется только название группы — состав участников и состояние включения остаются прежними",
|
|
5679
|
+
"groupRenameSave": "Сохранить",
|
|
5680
|
+
"groupRenameTitle": "Переименовать группу",
|
|
5681
|
+
"groupSearchEmpty": "Подходящих плагинов нет",
|
|
5682
|
+
"groupStateBroken": "Проверка не удалась",
|
|
5683
|
+
"groupStateInert": "Не активна",
|
|
5684
|
+
"groupStateRestart": "Нужен перезапуск",
|
|
5685
|
+
"groupThemeBadge": "Тема",
|
|
5686
|
+
"groupThemeCurrent": "Текущая",
|
|
5687
|
+
"groupThemeEmpty": "Нет темы вне группы",
|
|
5688
|
+
"groupThemeHint": "В группе может быть только одна тема. Выбор темы не включает её. При замене прежняя тема выходит из группы.",
|
|
5689
|
+
"groupThemeRemove": "Убрать тему",
|
|
5690
|
+
"groupThemeTaken": "Тема уже назначена",
|
|
5691
|
+
"groupThemeTitle": "Выберите тему для «{0}»",
|
|
5692
|
+
"groupThemeUse": "Использовать",
|
|
5693
|
+
"heldReleaseAction": "Установить {0} всё равно",
|
|
5694
|
+
"heldReleaseNotice": "Установлено, но не самое свежее: параметр minimumReleaseAge этого профиля задержал {0}, поэтому была установлена версия {1}.",
|
|
5695
|
+
"hostAll": "Показать все",
|
|
5696
|
+
"hostCompatible": "Совместим с текущим DSH {0}",
|
|
5697
|
+
"hostDependencyMore": "Пропущено ещё: {0}",
|
|
5698
|
+
"hostDependencyWarning": "Плагин перечисляет пакеты, которые DSH уже предоставляет, поэтому две копии могут конфликтовать (только по описанию — не подтверждено):",
|
|
5699
|
+
"hostDetecting": "Определяем версию хоста…",
|
|
5700
|
+
"hostFilterActive": "Скрыто плагинов, несовместимых с DSH {0}: {1}; те, что не заявляют версию, остаются в списке",
|
|
5701
|
+
"hostFilterLoading": "Проверяем требования хоста {0}/{1}; плагины без заявленной версии и недоступные остаются видимыми",
|
|
5702
|
+
"hostIncompatibleAnyway": "Обновить всё равно",
|
|
5703
|
+
"hostIncompatibleBody": "{plugin} заявляет, что ему нужен DSH {requirement}, а у вас работает {host}. Установка скорее всего сломает плагин, и вернуться назад можно будет только вручную, понизив версию.\nНичего не изменилось — плагин остался на текущей версии.\nЕсли номер версии задан неверно (например, в сборке DSH он не указан), обновление всё равно можно выполнить.",
|
|
5704
|
+
"hostIncompatibleBodyInstall": "{plugin} заявляет, что ему нужен DSH {requirement}, а у вас работает {host}. Установка скорее всего сломает плагин.\nНичего не установлено.\nЕсли номер версии задан неверно (например, в сборке DSH он не указан), установку всё равно можно выполнить.",
|
|
5705
|
+
"hostIncompatibleCancel": "Отменить установку",
|
|
5706
|
+
"hostIncompatibleFoundInstall": "Можно установить {version} — плагин заявляет поддержку этого DSH.",
|
|
5707
|
+
"hostIncompatibleFoundUpdate": "Можно обновиться до {version} — плагин заявляет поддержку этого DSH.",
|
|
5708
|
+
"hostIncompatibleInstallAnyway": "Установить всё равно",
|
|
5709
|
+
"hostIncompatibleInstallCompat": "Установить {version}",
|
|
5710
|
+
"hostIncompatibleKeep": "Оставить текущую версию",
|
|
5711
|
+
"hostIncompatibleNoCompat": "Ни одна версия не заявляет поддержку этого DSH.",
|
|
5712
|
+
"hostIncompatibleRetry": "Повторить",
|
|
5713
|
+
"hostIncompatibleSearchFailed": "Не удалось найти совместимые версии.",
|
|
5714
|
+
"hostIncompatibleSearching": "Ищем версию, которая всё ещё поддерживает этот DSH…",
|
|
5715
|
+
"hostIncompatibleTitle": "Для этого выпуска нужен более новый DSH",
|
|
5716
|
+
"hostIncompatibleUnknown": "неизвестная версия",
|
|
5717
|
+
"hostIncompatibleUpdateCompat": "Обновить до {version}",
|
|
5718
|
+
"hostRecoveryBody": "После последнего неудачного запуска восстановление DSH заменило вашу конфигурацию конфигурацией по умолчанию. Прежние настройки ({0}) всё ещё лежат в резервной копии.",
|
|
5719
|
+
"hostRecoveryFail": "Не удалось восстановить: ",
|
|
5720
|
+
"hostRecoveryNote": "Сначала делается снимок, поэтому это можно откатить.",
|
|
5721
|
+
"hostRecoveryRestore": "Восстановить конфигурацию",
|
|
5722
|
+
"hostRecoveryRestored": "Настройки ({0}) восстановлены. Обновите страницу, чтобы увидеть их.",
|
|
5723
|
+
"hostRecoverySource": "Резервная копия: {0}, {1}",
|
|
5724
|
+
"hostRecoveryTitle": "Ваша конфигурация была заменена",
|
|
5725
|
+
"hostRequirement": "Требуется DSH {0}",
|
|
5726
|
+
"hostRequirementLoading": "Читаем требование хоста…",
|
|
5727
|
+
"hostRequirementUnavailable": "Требование хоста неизвестно",
|
|
5728
|
+
"hostRequirementUndeclared": "Требование хоста не заявлено",
|
|
5729
|
+
"hostStatusCompatible": "Требование хоста выполнено (заявлено)",
|
|
5730
|
+
"hostStatusIncompatible": "Подтверждённая несовместимость с этим DSH",
|
|
5731
|
+
"hostUnknown": "Версия хоста неизвестна",
|
|
5732
|
+
"hostUpdateHint": "Устанавливается и обновляется десктопным приложением; обновляйте его там.",
|
|
5733
|
+
"hostUpdateReady": "Новая версия: {0}",
|
|
5734
|
+
"ignoreAllUpdateNotices": "Не напоминать об обновлениях до перезапуска",
|
|
5735
|
+
"ignoreUpdateNotice": "Не напоминать до перезапуска",
|
|
5736
|
+
"install": "Установить",
|
|
5737
|
+
"installCaution": "Перед установкой",
|
|
5738
|
+
"installedBadge": "✓ Установлено",
|
|
5739
|
+
"installedDependencyNote": "Дополнительных пакетов: {0} — они пришли как зависимости плагинов; это не плагины, поэтому выше они не перечислены.",
|
|
5740
|
+
"installedEmpty": "Плагины сообщества ещё не установлены — перейдите на вкладку «Обзор»",
|
|
5741
|
+
"installFail": "Не удалось установить",
|
|
5742
|
+
"installing": "Установка…",
|
|
5743
|
+
"installReplacement": "Установить замену",
|
|
5744
|
+
"lightboxClose": "Закрыть предпросмотр",
|
|
5745
|
+
"lightboxNext": "Далее",
|
|
5746
|
+
"lightboxPrev": "Назад",
|
|
5747
|
+
"linkedDev": "локальная сборка",
|
|
5748
|
+
"loadFail": "Каталог плагинов не загрузился. Попробуйте позже.",
|
|
5749
|
+
"loading": "Загрузка каталога…",
|
|
5750
|
+
"loadRetry": "Повторить",
|
|
5751
|
+
"localOnly": "URL и имя пользователя WebDAV хранятся только в этом браузере.",
|
|
5752
|
+
"marketNoToggle": "Сам магазин отключить нельзя",
|
|
5753
|
+
"marketUpdate": "Обновить магазин плагинов",
|
|
5754
|
+
"migrateContinue": "Подтвердить переключение",
|
|
5755
|
+
"migrateCurrentSource": "Текущий источник",
|
|
5756
|
+
"migrateDescription": "Меняется источник установки плагина, а не его версия.",
|
|
5757
|
+
"migrateFail": "Не удалось сменить источник",
|
|
5758
|
+
"migrateNpm": "Взять версию из npm",
|
|
5759
|
+
"migrateTargetSource": "Новый источник в npm",
|
|
5760
|
+
"migrateTitle": "Взять версию из npm?",
|
|
5761
|
+
"migrateWarning": "Пакет npm может быть опубликован кем-то другим и не быть тем же плагином. Продолжайте, только если доверяете ему.",
|
|
5762
|
+
"nav": "Магазин плагинов",
|
|
5763
|
+
"newerPrereleaseAvailable": "опубликована предрелизная версия {0}",
|
|
5764
|
+
"newerPrereleaseHint": "У пакета нет обновления по последнему тегу; в предрелизной линии, на которой вы находитесь, опубликована более новая сборка.",
|
|
5765
|
+
"nextPage": "Далее",
|
|
5766
|
+
"noGroups": "Групп пока нет. Создайте первую, чтобы начать.",
|
|
5767
|
+
"noteAdd": "Добавить примечание",
|
|
5768
|
+
"noteEdit": "Изменить примечание",
|
|
5769
|
+
"noteMine": "Моё примечание",
|
|
5770
|
+
"notePlaceholder": "Опишите своими словами. Это примечание заменит описание автора.",
|
|
5771
|
+
"noteSave": "Сохранить",
|
|
5772
|
+
"notesCommits": "Коммиты",
|
|
5773
|
+
"notesCommitsRecent": "Последние коммиты (не совпадают с установленной версией — только для справки)",
|
|
5774
|
+
"noteSeeMine": "Вернуться к моему примечанию",
|
|
5775
|
+
"noteSeeTheirs": "Показать описание автора",
|
|
5776
|
+
"notesLink": "Что изменилось",
|
|
5777
|
+
"notesLoadFail": "Сейчас примечания к обновлению недоступны — попробуйте позже.",
|
|
5778
|
+
"notesNone": "Этот плагин не публикует примечания к обновлению.",
|
|
5779
|
+
"notesNpm": "Время публикации версий",
|
|
5780
|
+
"notesRelease": "Примечания к выпуску",
|
|
5781
|
+
"notesSource": "В магазине пока нет примечаний к обновлению этого плагина.",
|
|
5782
|
+
"notesSourceLink": "Посмотреть, что изменилось в репозитории",
|
|
5783
|
+
"notesSourceNoLink": "Об изменениях можно спросить автора плагина.",
|
|
5784
|
+
"notesSourceUnreadable": "Этот плагин установлен не из GitHub, поэтому магазин не может прочитать его историю изменений.",
|
|
5785
|
+
"noteTheirs": "Оригинал",
|
|
5786
|
+
"notInstalled": "Не установлен",
|
|
5787
|
+
"opBlockedCard": "Не удаётся установить · подробности",
|
|
5788
|
+
"opClear": "Очистить завершённые",
|
|
5789
|
+
"opClose": "Свернуть",
|
|
5790
|
+
"opDequeue": "Убрать из очереди",
|
|
5791
|
+
"opDone": "Готово",
|
|
5792
|
+
"opDoneRefresh": "Установлено · обновите страницу, чтобы применить",
|
|
5793
|
+
"opEmpty": "Операций в работе нет",
|
|
5794
|
+
"opEmptyHint": "Здесь показывается ход установки, обновления и удаления",
|
|
5795
|
+
"opInstalling": "Установка",
|
|
5796
|
+
"opKind_install": "Установка",
|
|
5797
|
+
"opKind_uninstall": "Удаление",
|
|
5798
|
+
"opKind_update": "Обновление",
|
|
5799
|
+
"opLeaveHint": "Можно уйти со страницы — о завершении сообщим",
|
|
5800
|
+
"opLeaveHintAgents": "Начнётся само, когда агенты освободятся",
|
|
5801
|
+
"opNeedsChoice": "Не удаётся установить · отменено автоматически, ничего не изменилось",
|
|
5802
|
+
"opNeedsYou": "требуют внимания",
|
|
5803
|
+
"opQueued": "В очереди",
|
|
5804
|
+
"opQueuedAhead": "впереди:",
|
|
5805
|
+
"opQueuedWaitingAgents": "ожидание работающих сессий: {0}",
|
|
5806
|
+
"opRetry": "Повторить",
|
|
5807
|
+
"opRunning": "Выполняется",
|
|
5808
|
+
"opRunNow": "Выполнить сейчас",
|
|
5809
|
+
"opTitle": "Задачи",
|
|
5810
|
+
"opUninstallNow": "Удалить сейчас",
|
|
5811
|
+
"opUpdateNow": "Обновить сейчас",
|
|
5812
|
+
"opWaitingAgents": "задач ждут простоя агентов: {0}",
|
|
5813
|
+
"orderAlreadyOptimal": "Текущий порядок уже удовлетворяет всем правилам и зависимостям плагинов — переставлять нечего",
|
|
5814
|
+
"orderApplied": "✓ Применено — перезапустите, чтобы применить",
|
|
5815
|
+
"orderApply": "Применить порядок",
|
|
5816
|
+
"orderAutoSort": "Автосортировка",
|
|
5817
|
+
"orderConflicts": "конфликты правил «до/после» в текущем порядке",
|
|
5818
|
+
"orderDiffHint": "Этот порядок изменит состав: переопределений: {0}, потерянных: {1}, дубликатов: {2}",
|
|
5819
|
+
"orderDown": "↓",
|
|
5820
|
+
"orderDrag": "Перетащите, чтобы изменить порядок",
|
|
5821
|
+
"orderDragHint": "Перетащите ⠿, чтобы изменить порядок. Изменения сохранятся, когда вы примените порядок.",
|
|
5822
|
+
"orderReset": "Сбросить черновик",
|
|
5823
|
+
"orderSection": "Порядок",
|
|
5824
|
+
"orderSuggestApply": "Применить предложенный порядок",
|
|
5825
|
+
"orderSuggestHint": "Предлагаемый порядок (автосортировка по правилам «до/после»):",
|
|
5826
|
+
"orderTrialFail": "Проверка порядка не пройдена: {0}",
|
|
5827
|
+
"orderUp": "↑",
|
|
5828
|
+
"orphanBundle": "⚠️ Следующий запуск не удастся: профиль объявляет эти плагины, но они не установлены. Установите их заново или уберите из dsh.profile.bundles в package.json профиля:",
|
|
5829
|
+
"orphanIdRequired": "не задан id",
|
|
5830
|
+
"orphanInsertNotArray": "неверный формат",
|
|
5831
|
+
"orphanInsertTargetMissing": "цель не найдена",
|
|
5832
|
+
"orphanInsertTargetNotGroup": "цель не группа",
|
|
5833
|
+
"orphanNameMismatch": "имя не совпадает",
|
|
5834
|
+
"orphanPatchTargetMissing": "цель не найдена",
|
|
5835
|
+
"orphanReasonOther": "другое",
|
|
5836
|
+
"packagesDone": "обработано пакетов: {0}",
|
|
5837
|
+
"pageInfo": "Страница {0} из {1}",
|
|
5838
|
+
"partialNote": "Отменено — часть изменений применена",
|
|
5839
|
+
"pathCopied": "Скопировано",
|
|
5840
|
+
"peerInfoUnverified": "не проверено",
|
|
5841
|
+
"peerRiskAboveMax": "выше явного максимума",
|
|
5842
|
+
"peerRiskBelowMin": "ниже заявленного минимума",
|
|
5843
|
+
"peerWarnAboveMax": "выше заявленного верхнего предела",
|
|
5844
|
+
"peerWarnOptional": "необязательная зависимость",
|
|
5845
|
+
"perPage": "На странице",
|
|
5846
|
+
"phaseBuilding": "Выполняются сборочные скрипты",
|
|
5847
|
+
"phaseDownloading": "Загрузка",
|
|
5848
|
+
"phaseLinking": "Связывание зависимостей",
|
|
5849
|
+
"phaseResolving": "Подготовка зависимостей",
|
|
5850
|
+
"presetApplied": "Применено — перезапустите, чтобы вступило в силу",
|
|
5851
|
+
"presetApply": "Применить",
|
|
5852
|
+
"presetBundleCount": "плагинов: {0}",
|
|
5853
|
+
"presetDelete": "Удалить",
|
|
5854
|
+
"presetDeleted": "Пресет удалён",
|
|
5855
|
+
"presetDisable": "отключить плагинов: {0}",
|
|
5856
|
+
"presetEmpty": "Пресеты пока не сохранены",
|
|
5857
|
+
"presetEnable": "включить плагинов: {0}",
|
|
5858
|
+
"presetFail": "Операция с пресетом не удалась: ",
|
|
5859
|
+
"presetHint": "Сохраните текущий порядок плагинов и отключённые плагины как пресет и переключайтесь в любой момент; перед применением выполняется пробный запуск и создаётся снимок.",
|
|
5860
|
+
"presetListFail": "Не удалось загрузить пресеты: ",
|
|
5861
|
+
"presetName": "Название пресета",
|
|
5862
|
+
"presetNameEmpty": "Введите название пресета",
|
|
5863
|
+
"presetNoop": "без изменений",
|
|
5864
|
+
"presetPreview": "Предпросмотр",
|
|
5865
|
+
"presetPreviewFail": "Не удалось построить предпросмотр: ",
|
|
5866
|
+
"presetPreviewTitle": "Применение этого пресета:",
|
|
5867
|
+
"presetReorder": "переставить плагинов: {0}",
|
|
5868
|
+
"presetSave": "Сохранить текущее состояние",
|
|
5869
|
+
"presetSaved": "Пресет сохранён",
|
|
5870
|
+
"presetSaving": "Сохранение…",
|
|
5871
|
+
"presetSection": "Пресеты плагинов",
|
|
5872
|
+
"prevPage": "Назад",
|
|
5873
|
+
"progressHint": "При первой установке загружаются плагин и его зависимости — крупные плагины могут устанавливаться от 1 до 3 минут",
|
|
5874
|
+
"published": "Дата добавления",
|
|
5875
|
+
"queuedBadge": "В очереди",
|
|
5876
|
+
"queuedInstallGone": "Плагина, который эта запись собиралась установить, больше нет в каталоге (каталог обновился или вы сменили страницу), поэтому запись удалена. Найдите его в каталоге и установите заново.",
|
|
5877
|
+
"queuedRunBlocked": "работающих сессий: {0}, поэтому начать пока нельзя: такие операции заменяют файлы плагинов на месте, а работающий агент может сбиться посреди хода. Начнётся само, когда сессии освободятся (или отмените эту запись в разделе «Задачи»).",
|
|
5878
|
+
"queuedRunBusy": "Другая установка, обновление или удаление ещё выполняется, поэтому начать пока нельзя: запись останется в очереди и начнётся сама, когда та завершится — нажимать ещё раз не нужно.",
|
|
5879
|
+
"readme": "Файл README",
|
|
5880
|
+
"recentlyAdded": "Недавно добавленные",
|
|
5881
|
+
"reconciledNote": "Удалено, но pnpm сообщил об ошибке в конце работы (обычно файл занят). Настройки уже синхронизированы — повторять не нужно.",
|
|
5882
|
+
"recoveryApply": "Сохранить и перезапустить",
|
|
5883
|
+
"recoveryApplyFailed": "Не удалось сохранить: ",
|
|
5884
|
+
"recoveryApplying": "Сохранение и перезапуск…",
|
|
5885
|
+
"recoveryBanner": "Не удалось запуститься: ",
|
|
5886
|
+
"recoveryBlamedHint": "Плагины, отмеченные красным, дали сбой при этом запуске; если снять с них отметку, при следующем запуске они не включатся.",
|
|
5887
|
+
"recoveryCarrier": "отключает остальные",
|
|
5888
|
+
"recoveryLead": "Этот перезапуск не удался, и dsh завершился. Отметьте плагины, которые нужно включить при следующем запуске; виноватые в этом сбое отмечены красным и оставлены без отметки.",
|
|
5889
|
+
"recoveryLogPath": "Полный журнал: ",
|
|
5890
|
+
"recoveryNoBlameHint": "Журнал не указал ни один конкретный плагин; ниже — то, что можно изменить в текущем состоянии.",
|
|
5891
|
+
"recoveryNoSummary": "Журнал не объясняет причину",
|
|
5892
|
+
"recoveryNotToggleable": "здесь нельзя переключить",
|
|
5893
|
+
"recoveryOpening": "Читаем подробности сбоя…",
|
|
5894
|
+
"recoveryOption": "Изменить плагины",
|
|
5895
|
+
"recoveryRawLog": "Исходный вывод dsh (окончание)",
|
|
5896
|
+
"recoveryRestarting": "Перезапуск: страница обновится, как только dsh поднимется; если сбой повторится, вы вернётесь сюда с новой ошибкой.",
|
|
5897
|
+
"recoveryStandalone": "Открыть отдельную страницу восстановления",
|
|
5898
|
+
"recoveryTimeout": "Истекло время ожидания запуска DeepSeek Harness. «Изменить плагины» покажет, какой из них мешает запуску.",
|
|
5899
|
+
"recoveryTitle": "Не удалось запуститься — измените плагины",
|
|
5900
|
+
"recoveryUnmatched": "DSH назвал эти плагины, но здесь их нельзя переключить: ",
|
|
5901
|
+
"recoveryWriteFailed": "Последний выбор сохранился не полностью, поэтому перезапуска не было: ",
|
|
5902
|
+
"refresh": "Обновить",
|
|
5903
|
+
"refreshBanner": "изменения применены — обновите страницу, чтобы их увидеть",
|
|
5904
|
+
"replacementHint": "Каталог предлагает замену",
|
|
5905
|
+
"repoLink": "Посмотреть репозиторий на GitHub",
|
|
5906
|
+
"restartBanner": "изменения ждут перезапуска — перезапустите DeepSeek Harness, чтобы применить",
|
|
5907
|
+
"restartFail": "Не удалось перезапустить",
|
|
5908
|
+
"restartHint": "Как перезапустить: остановите текущий процесс dsh и запустите его снова (например, dsh web)",
|
|
5909
|
+
"restartHintDebugged": "Текущий процесс dsh подключён к отладчику. Остановите его в IDE или в терминале и запустите снова — магазин не может завершить отлаживаемый процесс из интерфейса.",
|
|
5910
|
+
"restartHintSupervised": "Этот процесс — служебный процесс самой службы {0}, поэтому перезапуск в её ведении: перезапуск отсюда убил бы и процесс перехвата вместе с его группой процессов, и служба не поднялась бы. Выполните перезапуск вручную (systemctl restart <ваш юнит> на машине, где работает dsh; для юнита, который должен пережить самоперезапуск, нужен KillMode=process; параметр «Разрешить перезапуск» включите в настройках этого плагина).",
|
|
5911
|
+
"restartHintViaProxy": "Вы обращаетесь к dsh через прокси или шлюз, а перезапуск по соображениям безопасности принимает только прямое локальное соединение. Перезапустите его на машине, где работает dsh, например командой (docker restart или kubectl rollout restart).",
|
|
5912
|
+
"restarting": "Перезапуск…",
|
|
5913
|
+
"restartNow": "Перезапустить сейчас",
|
|
5914
|
+
"restartTimeout": "Истекло время ожидания запуска DeepSeek Harness",
|
|
5915
|
+
"restoreBootError": "После восстановления запустить всё равно не удалось:",
|
|
5916
|
+
"restoreConfirm": "Восстановление перезапишет конфигурацию этого профиля и заново установит плагины. Продолжить?",
|
|
5917
|
+
"restoreContinue": "Продолжить обновление",
|
|
5918
|
+
"restoreDone": "Восстановление завершено — перезапустите DeepSeek Harness",
|
|
5919
|
+
"restoreFail": "Не удалось восстановить",
|
|
5920
|
+
"restoreHint": "Это удалит локальную версию и установит онлайн-версию. Проверка обновлений продолжит работать как обычно. Отменить это нельзя.",
|
|
5921
|
+
"restoreMissing": "Плагинов из этой резервной копии не установлено: {0}",
|
|
5922
|
+
"restoreNameOnlyHint": "Локальная копия не указывает свой репозиторий-источник, поэтому магазин смог сопоставить её только по имени пакета. Плагин ниже может принадлежать другому автору и просто совпадать по имени, а не быть источником вашей копии. Проверьте владельца и репозиторий перед подтверждением. Это удалит локальную версию, установит тот плагин и необратимо.",
|
|
5923
|
+
"restoreNoCatalog": "Этого плагина нет в подборке каталога, поэтому восстановить его нельзя. Удалите локальную копию или продолжайте разрабатывать её локально.",
|
|
5924
|
+
"restoreNoCatalogTitle": "Восстановление невозможно",
|
|
5925
|
+
"restoreNoMatch": "В каталоге есть одноимённый плагин, но он не совпадает с вашим локальным репозиторием, поэтому восстановление небезопасно. Удалите локальную копию или продолжайте разрабатывать её локально.",
|
|
5926
|
+
"restoreOnline": "Взять онлайн-версию",
|
|
5927
|
+
"restorePartial": "Восстановление завершено, но эти плагины установить не удалось:",
|
|
5928
|
+
"restorePreviewDone": "Резервная копия импортирована. Проверьте вкладку «Установленные», затем запустите восстановление.",
|
|
5929
|
+
"restoreProceed": "Подтвердить восстановление",
|
|
5930
|
+
"restoreStart": "Начать восстановление",
|
|
5931
|
+
"restoreUnportable": "устанавливается с пути на другой машине, которого здесь нет — переустановите плагин или укажите локальный путь",
|
|
5932
|
+
"rollbackNow": "Откатить",
|
|
5933
|
+
"rollbackUnavailable": "Автоматический откат недоступен: не удалось проверить прежний точный источник.",
|
|
5934
|
+
"rollingBack": "Откат…",
|
|
5935
|
+
"searchFavoritesPh": "Поиск в избранном…",
|
|
5936
|
+
"searchPh": "Поиск плагинов: уведомления, терминал, память…",
|
|
5937
|
+
"setBuildEnv": "Среда сборки",
|
|
5938
|
+
"setBuildEnvHint": "Действует на каждый процесс, который запускает магазин, — установку, сборку, git, — а не только на компилятор. По одному KEY=значению в строке, например CC=/usr/bin/gcc-11. Переменные PATH и CI управляются магазином. Сохранение пустого списка возвращает исходную конфигурацию.",
|
|
5939
|
+
"setBuildEnvSave": "Сохранить переменные",
|
|
5940
|
+
"setCardDesc": "Посмотреть версию магазина плагинов и его настройки.",
|
|
5941
|
+
"setChannel": "Канал обновлений",
|
|
5942
|
+
"setChannelBeta": "Бета",
|
|
5943
|
+
"setChannelBetaHint": "Ранний доступ к непроверенным версиям. Касается только магазина плагинов.",
|
|
5944
|
+
"setChannelDev": "Разработка",
|
|
5945
|
+
"setChannelDevHint": "Непроверенные сборки из ветки разработки. Не рекомендуется для повседневного использования.",
|
|
5946
|
+
"setChannelStable": "Стабильный",
|
|
5947
|
+
"setChannelStableHint": "Только выпущенные версии.",
|
|
5948
|
+
"setChannelSwitch": "Переключить на",
|
|
5949
|
+
"setChannelSwitchHint": "Эта версия ниже установленной.",
|
|
5950
|
+
"setGithubProxy": "Ускорение GitHub",
|
|
5951
|
+
"setGithubProxyAuto": "Вернуть автоматический выбор",
|
|
5952
|
+
"setGithubProxyAutoHint": "Автоматически выбирает рабочий маршрут и переключается только после сбоя.",
|
|
5953
|
+
"setGithubProxyCustom": "Пользовательский",
|
|
5954
|
+
"setGithubProxyCustomHint": "Сначала пробует ваш маршрут, затем возвращается к прямому обращению к GitHub.",
|
|
5955
|
+
"setGithubProxyEdit": "Изменить",
|
|
5956
|
+
"setGithubProxyInput": "Префикс ускорения HTTPS",
|
|
5957
|
+
"setGithubProxyManagedHint": "Управляется переменной DSHM_GITHUB_PROXY, здесь изменить нельзя.",
|
|
5958
|
+
"setGithubProxySave": "Сохранить",
|
|
5959
|
+
"setIndexSource": "Индекс обзора",
|
|
5960
|
+
"setIndexSourceHint": "В dsh 0.2.1 и более поздних версиях добавьте https://cdn.jsdelivr.net/npm/dsh-plugin-catalog/index.json в разделе «Плагины» → «Обзор» → «Источники индекса» — тогда вкладка «Обзор» и инструмент агента plugin_market будут искать по одному и тому же каталогу.",
|
|
5961
|
+
"setRegion": "Регион загрузки",
|
|
5962
|
+
"setRegionAuto": "Выбран по результату проверки сети. Можно сменить в любой момент.",
|
|
5963
|
+
"setRegionChina": "Материковый Китай",
|
|
5964
|
+
"setRegionChinaHint": "Быстрее на материковом Китае. Меняет маршрут загрузки, а не источник.",
|
|
5965
|
+
"setRegionGlobal": "Глобально",
|
|
5966
|
+
"setRegionGlobalHint": "Загрузка напрямую из npm и GitHub.",
|
|
5967
|
+
"setSelfCancel": "Отмена",
|
|
5968
|
+
"setSelfConfirm": "Удалить магазин плагинов? Для повторной установки понадобится командная строка.",
|
|
5969
|
+
"setSelfFailed": "Операция не удалась",
|
|
5970
|
+
"setSelfHostManagedHint": "Эту копию установило десктопное приложение; обновляйте её там.",
|
|
5971
|
+
"setSelfPurge": "Также удалить собственные данные магазина",
|
|
5972
|
+
"setSelfPurgeOff": "Данные магазина сохранятся. Учтите: плагины, которые магазин отключил, останутся отключёнными, а после его удаления не останется интерфейса, чтобы включить их обратно.",
|
|
5973
|
+
"setSelfPurgeOn": "Будет удалено: список отключений и пользовательские группы магазина, а также записи об отключении, которые магазин вписал в ваш файл конфигурации, — отключённые им плагины снова запустятся. Пароли и токены не затрагиваются: магазин никогда не хранит их на диске.",
|
|
5974
|
+
"setSelfRemove": "Удалить магазин плагинов",
|
|
5975
|
+
"setSelfRemoveConfirm": "Удалить",
|
|
5976
|
+
"setSelfRemoved": "Удалён",
|
|
5977
|
+
"setSelfRemovedHint": "Перезапустите DeepSeek Harness, чтобы завершить очистку.",
|
|
5978
|
+
"setSelfRemoveHint": "Удаляет магазин из этого профиля. Остальные плагины не затрагиваются.",
|
|
5979
|
+
"setSelfRemoveRemote": "Эта страница открыта не на машине, где работает DSH, поэтому магазин не может удалить себя отсюда. Удалите его там: в десктопном приложении «Настройки → Плагины» или из командной строки.",
|
|
5980
|
+
"setSelfUpdate": "Обновить",
|
|
5981
|
+
"setSelfUpdatedHint": "Загружено. Перезапустите DeepSeek Harness, чтобы изменения вступили в силу, — на странице уже будет показана новая версия.",
|
|
5982
|
+
"setSelfUpdateHint": "Обновление загружает новую версию; она вступит в силу после перезапуска.",
|
|
5983
|
+
"setSelfUpdateReady": "Доступна новая версия:",
|
|
5984
|
+
"setSelfUpToDate": "Актуальная версия",
|
|
5985
|
+
"setSelfUpToDateHint": "",
|
|
5986
|
+
"setSelfWorking": "Удаление…",
|
|
5987
|
+
"setSidebar": "Ярлык в боковой панели",
|
|
5988
|
+
"setSidebarHint": "Показывает магазин в боковой панели под разделом «Плагины». Пункт в настройках остаётся.",
|
|
5989
|
+
"setSidebarOff": "Скрыть",
|
|
5990
|
+
"setSidebarOn": "Показать",
|
|
5991
|
+
"setSidebarOnlyDoorHint": "Этот хост не показывает магазин в настройках, поэтому попасть в него можно только через эту строку.",
|
|
5992
|
+
"shadowNameBanner": "Одно имя плагина теперь определено в двух местах; после перезапуска загрузится только одно:",
|
|
5993
|
+
"sidebarTip": "Хотите открывать быстрее? Покажите его в боковой панели.",
|
|
5994
|
+
"sidebarTipDismiss": "Больше не показывать",
|
|
5995
|
+
"snapCreate": "Создать снимок",
|
|
5996
|
+
"snapCreated": "Снимок создан",
|
|
5997
|
+
"snapCreateFail": "Не удалось создать снимок: ",
|
|
5998
|
+
"snapCreating": "Создание…",
|
|
5999
|
+
"snapDelete": "Удалить",
|
|
6000
|
+
"snapDeleteConfirm": "Подтвердить удаление",
|
|
6001
|
+
"snapDeleteConfirmText": "После удаления этот снимок нельзя будет восстановить.",
|
|
6002
|
+
"snapDeleted": "Снимок удалён",
|
|
6003
|
+
"snapDeleteFail": "Не удалось удалить снимок: ",
|
|
6004
|
+
"snapDeleting": "Удаление…",
|
|
6005
|
+
"snapEmpty": "Снимков пока нет",
|
|
6006
|
+
"snapFiles": "файлы",
|
|
6007
|
+
"snapHint": "Снимки создаются автоматически перед применением изменений; вы также можете создать снимок вручную и в любой момент выполнить откат.",
|
|
6008
|
+
"snapListFail": "Не удалось загрузить снимки: ",
|
|
6009
|
+
"snapRestore": "Восстановить",
|
|
6010
|
+
"snapRestoreConfirm": "Подтвердить восстановление",
|
|
6011
|
+
"snapRestoreConfirmText": "Восстановление перезапишет текущие плагины и конфигурацию данными из снимка; отменить это нельзя (если сомневаетесь, сначала создайте новый снимок).",
|
|
6012
|
+
"snapRestored": "Восстановлено — перезапустите, чтобы применить",
|
|
6013
|
+
"snapRestoreFail": "Не удалось восстановить: ",
|
|
6014
|
+
"snapRestoring": "Восстановление…",
|
|
6015
|
+
"snapSection": "Снимки и откат",
|
|
6016
|
+
"sortAdded": "Дата добавления",
|
|
6017
|
+
"sortAsc": "По возрастанию",
|
|
6018
|
+
"sortDesc": "По убыванию",
|
|
6019
|
+
"sortDownloads": "Загрузки npm за 30 дней",
|
|
6020
|
+
"sortNewest": "Новые",
|
|
6021
|
+
"sortOldest": "Старые",
|
|
6022
|
+
"sortStars": "Звёзды",
|
|
6023
|
+
"stateBroken": "Установлен, проверка не пройдена",
|
|
6024
|
+
"stateDependencyLibrary": "Библиотека для {0}",
|
|
6025
|
+
"stateDisabled": "Отключён",
|
|
6026
|
+
"stateIncompatible": "Установлен — несовместим с этой версией dsh",
|
|
6027
|
+
"stateInert": "Установлен, не активен",
|
|
6028
|
+
"stateLive": "Активен",
|
|
6029
|
+
"stateLoadedByProfile": "Загружен вашим профилем",
|
|
6030
|
+
"stateRestart": "Установлен — перезапустите, чтобы применить",
|
|
6031
|
+
"submitPlugin": "Отправить плагин ↗",
|
|
6032
|
+
"subtitle": "Плагины сообщества для DeepSeek Harness",
|
|
6033
|
+
"switchOnLabel": "Включён",
|
|
6034
|
+
"tabAdvanced": "Дополнительно",
|
|
6035
|
+
"tabBackup": "Резервные копии и восстановление",
|
|
6036
|
+
"tabBlocked": "Скрытые",
|
|
6037
|
+
"tabDiagnostics": "Диагностика",
|
|
6038
|
+
"tabDiscover": "Обзор",
|
|
6039
|
+
"tabFavorites": "Избранное",
|
|
6040
|
+
"tabGroups": "Группы",
|
|
6041
|
+
"tabInstalled": "Установленные",
|
|
6042
|
+
"tabList": "Список",
|
|
6043
|
+
"tabThemes": "Темы",
|
|
6044
|
+
"terminalCautionBody": "Это плагин для терминала. В веб-версии он может не работать.",
|
|
6045
|
+
"terminalCautionLink": "Сначала прочитайте его инструкцию ↗",
|
|
6046
|
+
"terminalCautionStartup": "Он может помешать DeepSeek Harness запуститься.",
|
|
6047
|
+
"terminalCautionTitle": "Может не работать в веб-приложении",
|
|
6048
|
+
"themeActive": "Активна",
|
|
6049
|
+
"themeApply": "Использовать",
|
|
6050
|
+
"themeDeactivate": "Отключить",
|
|
6051
|
+
"themeEmpty": "В каталоге пока нет тем",
|
|
6052
|
+
"themeExitFullscreen": "Выйти из полноэкранного режима",
|
|
6053
|
+
"themeFullscreen": "Смотреть во весь экран",
|
|
6054
|
+
"themePreview": "Предпросмотр",
|
|
6055
|
+
"themePreviewCount": "предпросмотров: {0}",
|
|
6056
|
+
"themePreviewLoading": "Ищем предпросмотр…",
|
|
6057
|
+
"themePreviewMissing": "Предпросмотр недоступен",
|
|
6058
|
+
"themeResultCount": "тем: {0}",
|
|
6059
|
+
"timeAll": "За всё время",
|
|
6060
|
+
"timeDay": "Последний день",
|
|
6061
|
+
"timeMonth": "Последние 30 дней",
|
|
6062
|
+
"timeQuarter": "Последние 90 дней",
|
|
6063
|
+
"timeWeek": "Последние 7 дней",
|
|
6064
|
+
"timeYear": "Последний год",
|
|
6065
|
+
"toastReady": "установлен и активен",
|
|
6066
|
+
"toastTheme": "теперь активна. Переключайте в любой момент: «Настройки → Магазин плагинов → Темы»",
|
|
6067
|
+
"toastToggledOff": "теперь выключен, работа сразу прекратилась",
|
|
6068
|
+
"toastToggledOn": "теперь включён",
|
|
6069
|
+
"toggleFail": "Не удалось переключить",
|
|
6070
|
+
"ungrouped": "Без группы",
|
|
6071
|
+
"uninstall": "Удалить",
|
|
6072
|
+
"uninstallConfirmDesc": "Удаляет плагин из текущего профиля.",
|
|
6073
|
+
"uninstalling": "Удаление…",
|
|
6074
|
+
"unreleasedCommits": "Новые коммиты (ещё не выпущены): {0}",
|
|
6075
|
+
"unreleasedCommitsHint": "В выбранной ветке есть коммиты новее вашей установки, но новая версия не опубликована: магазин ставит только выпуски и не применит их сам.",
|
|
6076
|
+
"update": "Обновить",
|
|
6077
|
+
"updateAll": "Обновить все",
|
|
6078
|
+
"updateAvailableShort": "Новая версия",
|
|
6079
|
+
"updated": "✓ Обновлено — перезапустите, чтобы применить",
|
|
6080
|
+
"updatedLive": "✓ Обновлено — работает",
|
|
6081
|
+
"updateExemptAdd": "Никогда не напоминать об обновлениях",
|
|
6082
|
+
"updateExemptFailed": "Не удалось сохранить. Попробуйте снова.",
|
|
6083
|
+
"updateExemptHint": "Новые версии остаются в списке — пропадает только напоминание.",
|
|
6084
|
+
"updateExemptMark": "Напоминания отключены",
|
|
6085
|
+
"updateExemptOff": "Напоминания об обновлениях снова включены.",
|
|
6086
|
+
"updateExemptOn": "Напоминания об обновлениях отключены. Новые версии остаются в списке.",
|
|
6087
|
+
"updateExemptRemove": "Снова включить напоминания об обновлениях",
|
|
6088
|
+
"updateExemptRestore": "Напоминать снова",
|
|
6089
|
+
"updateFail": "Не удалось обновить",
|
|
6090
|
+
"updateNoticeIgnored": "До перезапуска напоминаний не будет",
|
|
6091
|
+
"updateNow": "Обновить сейчас",
|
|
6092
|
+
"updating": "Обновление…",
|
|
6093
|
+
"upToDate": "Актуальная версия",
|
|
6094
|
+
"versionHint": "Версия магазина плагинов — приложите её, когда сообщаете о проблеме",
|
|
6095
|
+
"viewReplacement": "Посмотреть замену",
|
|
6096
|
+
"viewSource": "Исходный код",
|
|
6097
|
+
"webdav": "WebDAV",
|
|
6098
|
+
"webdavNote": "URL и имя пользователя WebDAV хранятся только в этом браузере; пароль остаётся на сервере, и его нужно вводить заново в каждой сессии.",
|
|
6099
|
+
"webdavPassword": "Пароль (необязательно)",
|
|
6100
|
+
"webdavPathHint": "Укажите полный путь к файлу вместе с именем: резервная копия пишет этот файл, а восстановление читает его обратно. При включённом автоматическом резервном копировании файл выгружается не чаще одного раза в сутки.",
|
|
6101
|
+
"webdavPreset": "Пресет провайдера",
|
|
6102
|
+
"webdavRestore": "Восстановить из WebDAV",
|
|
6103
|
+
"webdavUpload": "Выгрузить резервную копию",
|
|
6104
|
+
"webdavUrl": "URL файла резервной копии",
|
|
6105
|
+
"webdavUser": "Имя пользователя (необязательно)"
|
|
6106
|
+
},
|
|
6107
|
+
"dsh-moa": {
|
|
6108
|
+
"actions.retry": "Перезагрузить конфигурацию",
|
|
6109
|
+
"actions.save": "Сохранить конфигурацию",
|
|
6110
|
+
"actions.saved": "Конфигурация сохранена успешно.",
|
|
6111
|
+
"actions.saved_memory_only": "Сохранено только в памяти сессии (на диск не записывается)",
|
|
6112
|
+
"actions.saving": "Сохраняем…",
|
|
6113
|
+
"aggregator.add_fallback_btn": "+ Добавить резервного судью",
|
|
6114
|
+
"aggregator.add_judge_btn": "+ Добавить модель-судью",
|
|
6115
|
+
"aggregator.add_local_btn": "+ Добавить локальную модель",
|
|
6116
|
+
"aggregator.blind_hint": "Если включено: имена моделей-кандидатов и провайдеры скрываются от промпта судьи, чтобы не было предпочтения к семейству или бренду.",
|
|
6117
|
+
"aggregator.blind_label": "Слепое ревью (обезличивание кандидатов для судьи)",
|
|
6118
|
+
"aggregator.budget_action": "Действие:",
|
|
6119
|
+
"aggregator.budget_action_abort": "Прервать",
|
|
6120
|
+
"aggregator.budget_action_trim": "Сократить пул",
|
|
6121
|
+
"aggregator.budget_desc": "Ограничить максимальную стоимость запуска: сокращать пул кандидатов или прерывать запуск, чтобы не потратить токены по ошибке.",
|
|
6122
|
+
"aggregator.budget_max_usd": "Максимум в USD ($):",
|
|
6123
|
+
"aggregator.budget_title": "Ограничители бюджета и автоматический резерв",
|
|
6124
|
+
"aggregator.composite_desc": "Свести модульные блоки кода, типы и алгоритмы из нескольких кандидатов в единую композицию.",
|
|
6125
|
+
"aggregator.composite_title": "Композитный гибридный синтез (AST / слияние блоков)",
|
|
6126
|
+
"aggregator.criteria_label": "Критерии оценки судьи (необязательно):",
|
|
6127
|
+
"aggregator.criteria_placeholder": "например: приоритет — производительность, отсутствие внешних зависимостей, устойчивость к краевым случаям…",
|
|
6128
|
+
"aggregator.curator_hint": "Если включено: куратор выделяет лучшие части каждого кандидата, применяет список антипаттернов и советует, какой моделью агента собрать решение.",
|
|
6129
|
+
"aggregator.curator_label": "Синтез куратора и совет главного сборщика",
|
|
6130
|
+
"aggregator.desc": "Сравнивает предложения кандидатов, устраняет расхождения, отсеивает выдумки и собирает итоговое решение.",
|
|
6131
|
+
"aggregator.fallbacks_desc": "Резервные модели вызываются по очереди, если основной судья упёрся в лимит запросов или в сбой.",
|
|
6132
|
+
"aggregator.fallbacks_title": "Цепочка резервных судей",
|
|
6133
|
+
"aggregator.judge_badge": "Судья №{num}",
|
|
6134
|
+
"aggregator.judge_models_desc": "Укажите две или больше моделей-судей, чтобы коллегия приняла общее решение.",
|
|
6135
|
+
"aggregator.judge_models_empty": "Для голосования по согласию нужно не меньше двух моделей-судей.",
|
|
6136
|
+
"aggregator.judge_models_title": "Модели коллегии судей",
|
|
6137
|
+
"aggregator.local_badge": "Локальная №{num}",
|
|
6138
|
+
"aggregator.local_fallback_desc": "Автоматически переходить к локальным моделям Ollama / MiniPC, когда онлайновые API кандидатов не отвечают.",
|
|
6139
|
+
"aggregator.local_fallback_title": "Плавная деградация и локальный резерв",
|
|
6140
|
+
"aggregator.local_models_desc": "Локальные офлайн-модели, которые используются, когда облачные API кандидатов не отвечают.",
|
|
6141
|
+
"aggregator.local_models_empty": "Настройте хотя бы одну локальную резервную модель (например, Ollama).",
|
|
6142
|
+
"aggregator.local_models_title": "Локальные резервные модели",
|
|
6143
|
+
"aggregator.multi_judge_desc": "Подключить несколько моделей-судей, чтобы оценить кандидатов и определить победителя голосованием по согласию.",
|
|
6144
|
+
"aggregator.multi_judge_title": "Коллегия судей и голосование по согласию",
|
|
6145
|
+
"aggregator.multi_turn_desc": "Сохранять контекст разговора между раундами и отбрасывать повторяющиеся блоки кода.",
|
|
6146
|
+
"aggregator.multi_turn_title": "Контекст нескольких раундов и отсечение различий",
|
|
6147
|
+
"aggregator.override_hint": "Рабочие области кандидатов остаются в .moa, чтобы вы могли применить любые файлы кандидата командой в чате.",
|
|
6148
|
+
"aggregator.override_label": "Разрешить действия с переопределением кандидата",
|
|
6149
|
+
"aggregator.peer_hint": "Кандидаты критикуют решения друг друга и дорабатывают свой код до финального синтеза судьи.",
|
|
6150
|
+
"aggregator.peer_label": "Совет: взаимная критика (раунд 2)",
|
|
6151
|
+
"aggregator.questions_hint": "Если включено: для коротких и общих запросов судья собирает чек-лист из 2–4 вопросов до генерации кода.",
|
|
6152
|
+
"aggregator.questions_label": "Задавать уточняющие вопросы по общим задачам (опросник)",
|
|
6153
|
+
"aggregator.report_desc": "Формировать скачиваемые отчёты в Markdown и JSON: задержка кандидатов, согласие, результат проверки тестами и разбор затрат.",
|
|
6154
|
+
"aggregator.report_title": "Автоматическое сравнение и разбор после запуска",
|
|
6155
|
+
"aggregator.stream_hint": "Токены агрегатора идут прямо в чат в реальном времени, поэтому первый ответ появляется без задержки.",
|
|
6156
|
+
"aggregator.stream_label": "Рассуждения куратора и судьи в прямом эфире",
|
|
6157
|
+
"aggregator.temp_hint": "Рекомендуется: 0.2 – 0.4 для строгой проверки и детерминированного синтеза.",
|
|
6158
|
+
"aggregator.temp_label": "Температура судьи",
|
|
6159
|
+
"aggregator.test_cmd_placeholder": "например, (npm test или node --test)",
|
|
6160
|
+
"aggregator.test_gate_hint": "Перед ревью судьи запускает набор тестов внутри песочниц кандидатов: победителя выбирают по реальным результатам тестов.",
|
|
6161
|
+
"aggregator.test_gate_label": "Проверка тестами (автоматический прогон в песочнице)",
|
|
6162
|
+
"aggregator.test_timeout_label": "Тайм-аут тестов (с):",
|
|
6163
|
+
"aggregator.timeout_label": "Тайм-аут синтеза судьи (с):",
|
|
6164
|
+
"aggregator.title": "⚖️ Ведущая модель и судья (синтез и проверка)",
|
|
6165
|
+
"aggregator.voting_highest_score": "Наивысшая оценка",
|
|
6166
|
+
"aggregator.voting_majority": "Голосование большинством",
|
|
6167
|
+
"aggregator.voting_strategy_label": "Стратегия голосования:",
|
|
6168
|
+
"aggregator.voting_unanimous": "Единогласно",
|
|
6169
|
+
"badge.candidates": "Предлагающих: {count}",
|
|
6170
|
+
"badge.disabled": "MoA выключен",
|
|
6171
|
+
"badge.models": "Доступно моделей: {count}",
|
|
6172
|
+
"badge.offline": "Хост недоступен",
|
|
6173
|
+
"badge.online": "MoA включён",
|
|
6174
|
+
"badge.preset": "Пресет: {name}",
|
|
6175
|
+
"config.enabled_label": "Включить MoA (слэш-команда и маршрутизация раундов)",
|
|
6176
|
+
"config.smart_routing_desc": "Анализировать сложность задачи и автоматически выбирать оптимальный пресет.",
|
|
6177
|
+
"config.smart_routing_model": "Модель маршрутизации:",
|
|
6178
|
+
"config.smart_routing_title": "Умная маршрутизация запросов",
|
|
6179
|
+
"description": "Оркестрация ансамбля агентов: параллельные предложения кандидатов и синтез судьи по команде /moa <запрос>.",
|
|
6180
|
+
"diff.candidate": "Кандидат {num}",
|
|
6181
|
+
"diff.curator": "Синтез куратора",
|
|
6182
|
+
"diff.desc": "Сравнивайте различия между решениями кандидатов и синтезом судьи в рабочей области проекта.",
|
|
6183
|
+
"diff.empty": "Выбранные файлы совпадают (различий нет).",
|
|
6184
|
+
"diff.latest_run": "Последняя / активная рабочая область",
|
|
6185
|
+
"diff.loading": "Загружаем различия…",
|
|
6186
|
+
"diff.no_files": "В рабочих областях кандидатов (.moa) файлов нет. Выполните задачу командой /moa, чтобы получить код кандидатов.",
|
|
6187
|
+
"diff.refresh": "Обновить различия",
|
|
6188
|
+
"diff.select_file": "Файл:",
|
|
6189
|
+
"diff.select_from": "База:",
|
|
6190
|
+
"diff.select_run": "Запуск:",
|
|
6191
|
+
"diff.select_to": "Сравнить с:",
|
|
6192
|
+
"diff.title": "Просмотр различий кандидатов",
|
|
6193
|
+
"error_boundary.retry": "Повторить",
|
|
6194
|
+
"error_boundary.title": "⚠️ Ошибка интерфейса MoA:",
|
|
6195
|
+
"header.sub": "Параллельная генерация кандидатами с финальной оценкой и выбором кода ведущим агрегатором и судьёй. Возврат к модели сессии происходит автоматически.",
|
|
6196
|
+
"header.title": "Оркестрация Mixture of Agents (MoA)",
|
|
6197
|
+
"leaderboard.cost": "Средняя стоимость",
|
|
6198
|
+
"leaderboard.desc": "Метрики результативности, посчитанные по записанным вердиктам запусков MoA.",
|
|
6199
|
+
"leaderboard.empty": "Исторических запусков пока нет.",
|
|
6200
|
+
"leaderboard.export_csv": "Экспорт CSV",
|
|
6201
|
+
"leaderboard.export_json": "Экспорт JSON",
|
|
6202
|
+
"leaderboard.filter_all": "Все пресеты",
|
|
6203
|
+
"leaderboard.model": "Модель",
|
|
6204
|
+
"leaderboard.runs": "Запуски",
|
|
6205
|
+
"leaderboard.title": "🏆 Таблица долей побед моделей",
|
|
6206
|
+
"leaderboard.winrate": "Доля побед",
|
|
6207
|
+
"leaderboard.wins": "Победы",
|
|
6208
|
+
"picker.clear": "Очистить",
|
|
6209
|
+
"picker.custom": "Свой вариант: ",
|
|
6210
|
+
"picker.found": "Найдено",
|
|
6211
|
+
"picker.none": "Подходящих моделей не найдено.",
|
|
6212
|
+
"picker.of": "из",
|
|
6213
|
+
"picker.search_placeholder": "Поиск модели по названию или провайдеру…",
|
|
6214
|
+
"picker.select": "Выберите модель…",
|
|
6215
|
+
"presets.active_badge": "Активный по умолчанию",
|
|
6216
|
+
"presets.cancel": "Отмена",
|
|
6217
|
+
"presets.create": "Создать",
|
|
6218
|
+
"presets.del_btn": "Удалить",
|
|
6219
|
+
"presets.del_confirm": "Удалить пресет «{name}»?",
|
|
6220
|
+
"presets.desc": "Выберите активный пресет или создайте свои конфигурации для отдельных задач (например, ревью кода, математика, быстрая первичная оценка).",
|
|
6221
|
+
"presets.name_placeholder": "Имя нового пресета (например, fast-audit)",
|
|
6222
|
+
"presets.new_btn": "+ Новый пресет",
|
|
6223
|
+
"presets.set_default": "Сделать пресетом по умолчанию",
|
|
6224
|
+
"presets.title": "📋 Управление пресетами",
|
|
6225
|
+
"proposers.add_btn": "+ Добавить модель-кандидат",
|
|
6226
|
+
"proposers.candidate": "Кандидат",
|
|
6227
|
+
"proposers.candidate_temp_tooltip": "Температура кандидата (пусто — по умолчанию или по градиенту)",
|
|
6228
|
+
"proposers.desc": "Параллельно генерировать независимые решения, чтобы расширить разнообразие и охват пространства решений.",
|
|
6229
|
+
"proposers.grace_label": "Срок ожидания (с):",
|
|
6230
|
+
"proposers.parallel_count": "Параллельные кандидаты",
|
|
6231
|
+
"proposers.quorum_hint": "Когда готовы 67% и больше кандидатов, запускается таймер ожидания (по умолчанию 10 с) и работа продолжается без ожидания зависших провайдеров.",
|
|
6232
|
+
"proposers.quorum_label": "Быстрое продвижение по порогу большинства (защита от отстающих)",
|
|
6233
|
+
"proposers.role_general": "Универсальная",
|
|
6234
|
+
"proposers.role_label": "Роль:",
|
|
6235
|
+
"proposers.role_minimalist": "Минималист",
|
|
6236
|
+
"proposers.role_performance": "Производительность",
|
|
6237
|
+
"proposers.role_robustness": "Надёжность",
|
|
6238
|
+
"proposers.role_tester": "Тестировщик",
|
|
6239
|
+
"proposers.temp_hint": "Рекомендуется: 0.6 – 0.8 для творческого независимого поиска решений.",
|
|
6240
|
+
"proposers.temp_label": "Температура кандидатов",
|
|
6241
|
+
"proposers.temperature_gradient": "Исследование по градиенту температуры (0.2 → 0.9 по кандидатам)",
|
|
6242
|
+
"proposers.timeout_label": "Тайм-аут кандидата (с):",
|
|
6243
|
+
"proposers.title": "👥 Модели-кандидаты (предлагающие)",
|
|
6244
|
+
"slash.desc": "Выполнить раунд с синтезом ансамбля Mixture of Agents (/moa [пресет] <запрос>)",
|
|
6245
|
+
"stats.active_models": "Настроенные модели",
|
|
6246
|
+
"stats.avg_cost": "Средняя стоимость запуска",
|
|
6247
|
+
"stats.desc": "Телеметрия сессии, история запусков и учёт долей побед моделей.",
|
|
6248
|
+
"stats.preset_count": "Всего пресетов",
|
|
6249
|
+
"stats.title": "📈 Аналитика и телеметрия MoA",
|
|
6250
|
+
"stats.total_runs": "Всего запусков",
|
|
6251
|
+
"status.error_saving": "Ошибка сохранения: ",
|
|
6252
|
+
"status.loading": "Загружаем настройки MoA…",
|
|
6253
|
+
"status.retry": "Повторить",
|
|
6254
|
+
"status.unavailable": "Служба MoA временно недоступна",
|
|
6255
|
+
"title": "Ансамбль агентов (MoA)",
|
|
6256
|
+
"updater.available": "Доступно обновление: v{version}",
|
|
6257
|
+
"updater.btnCheck": "Проверить обновления",
|
|
6258
|
+
"updater.btnUpdate": "Обновить до v{version}",
|
|
6259
|
+
"updater.checkFailed": "Не удалось проверить реестр",
|
|
6260
|
+
"updater.checking": "Проверяем реестр…",
|
|
6261
|
+
"updater.current": "Текущая версия: v{version}",
|
|
6262
|
+
"updater.desc": "Проверять новые версии в реестре npm и обновлять одним нажатием.",
|
|
6263
|
+
"updater.success": "Обновление до v{version} выполнено. Перезапустите DSH, чтобы применить его.",
|
|
6264
|
+
"updater.title": "Обновления плагина",
|
|
6265
|
+
"updater.updating": "Обновляем плагин…",
|
|
6266
|
+
"updater.upToDate": "Обновлений нет"
|
|
6267
|
+
},
|
|
6268
|
+
"dsh-tts": {
|
|
6269
|
+
"activeProvider": "Активный провайдер",
|
|
6270
|
+
"addProvider": "Добавить провайдера",
|
|
6271
|
+
"addRule": "Добавить правило",
|
|
6272
|
+
"addSubagentRole": "Добавить субагента",
|
|
6273
|
+
"advancedCollapsed": "Дополнительно",
|
|
6274
|
+
"advancedHint": "Лимиты и переопределения адресов. Ключи API провайдеров остаются в редакторе цепочки; имена ячеек учётных данных (*KeyEnv) задаются только в конфигурации.",
|
|
6275
|
+
"advancedTitle": "Дополнительно",
|
|
6276
|
+
"announce": "Озвучивать одобрения",
|
|
6277
|
+
"announceHint": "Проговаривать вслух и играть сигнал, когда агент ждёт одобрения или задаёт вопрос.",
|
|
6278
|
+
"approvalHint": "Произносится, когда запрашивают одобрение; в конец добавляется название инструмента.",
|
|
6279
|
+
"approvalText": "Формулировка одобрения",
|
|
6280
|
+
"autoDetect": "Автоопределение языка по фрагментам",
|
|
6281
|
+
"autoDetectHint": "Определять zh/en для каждого произносимого фрагмента вместо настройки языка.",
|
|
6282
|
+
"autoDetectSubagent": "Автоопределение ролей субагентов",
|
|
6283
|
+
"autoplayBlocked": "Звук заблокирован, пока вы не нажмёте один раз",
|
|
6284
|
+
"available": "доступно",
|
|
6285
|
+
"azureHint": "Нужно для провайдера Azure, например eastus.",
|
|
6286
|
+
"azureRegion": "Регион Azure",
|
|
6287
|
+
"bargeIn": "Заглушать, когда вы говорите",
|
|
6288
|
+
"bargeInHint": "Чтение прекращается, как только микрофон включится.",
|
|
6289
|
+
"binHint": "Ищется в PATH, если путь не абсолютный.",
|
|
6290
|
+
"breakerOpen": "Цепь разомкнута",
|
|
6291
|
+
"cache": "Кэш синтеза",
|
|
6292
|
+
"cacheHint": "Повторно использовать озвучку для одинаковых фраз.",
|
|
6293
|
+
"cacheMaxMb": "Предел размера кэша, МБ",
|
|
6294
|
+
"cacheMaxMbHint": "Сначала вытесняются элементы, которые давно не использовались.",
|
|
6295
|
+
"cacheStats": "Кэш",
|
|
6296
|
+
"cardHint": "Цепочка провайдеров, голоса и параметры воспроизведения.",
|
|
6297
|
+
"chainHint": "Порядок сверху вниз — это порядок резервного переключения. Облачные ключи сохраняются в хранилище учётных данных хоста и никогда не попадают в настройки плагина.",
|
|
6298
|
+
"chainHintCard": "Выберите провайдера, вставьте его ключ API и нажмите «Сохранить» (или оставьте поле ключа пустым). Ключ сразу попадает в хранилище учётных данных хоста. Браузер никогда не читает его обратно.",
|
|
6299
|
+
"chainTitle": "Цепочка провайдеров",
|
|
6300
|
+
"chime": "Сигнал",
|
|
6301
|
+
"chimeHint": "дзинь, писк или без звука.",
|
|
6302
|
+
"clear": "Очистить",
|
|
6303
|
+
"clearCache": "Очистить кэш",
|
|
6304
|
+
"configured": "Настроен",
|
|
6305
|
+
"confirmClearCache": "Очистить кэш синтеза? Это действие нельзя отменить.",
|
|
6306
|
+
"confirmDeleteModel": "Удалить загруженные веса для этого движка?",
|
|
6307
|
+
"currentVoice": "Голос",
|
|
6308
|
+
"customBaseUrl": "Свой адрес TTS",
|
|
6309
|
+
"customBaseUrlHint": "Совместимый с OpenAI адрес, например http://localhost:8880/v1; пусто — выключено.",
|
|
6310
|
+
"customKeyEnv": "Переменная окружения для ключа",
|
|
6311
|
+
"customKeyEnvHint": "Имя учётных данных для токена Bearer своего адреса.",
|
|
6312
|
+
"deleteModel": "Удалить",
|
|
6313
|
+
"dockClearQueue": "Очистить очередь",
|
|
6314
|
+
"dockCurrent": "Сейчас произносится",
|
|
6315
|
+
"dockFavorite": "В избранное",
|
|
6316
|
+
"dockFavorites": "Избранные записи",
|
|
6317
|
+
"dockLabel": "Речь",
|
|
6318
|
+
"dockNone": "Ожидание речи",
|
|
6319
|
+
"dockPause": "Пауза",
|
|
6320
|
+
"dockQueue": "Очередь",
|
|
6321
|
+
"dockReplay": "Повтор",
|
|
6322
|
+
"dockResume": "Продолжить чтение",
|
|
6323
|
+
"dockSkip": "Пропустить",
|
|
6324
|
+
"dockStop": "Остановить чтение",
|
|
6325
|
+
"dockUnfavorite": "Убрать из избранного",
|
|
6326
|
+
"down": "Вниз",
|
|
6327
|
+
"downloading": "Загрузка…",
|
|
6328
|
+
"edgeBin": "бинарный файл edge-tts",
|
|
6329
|
+
"edgeHint": "CLI на Python из пакета edge-tts.",
|
|
6330
|
+
"enableItDictionary": "Встроенный словарь IT-терминов",
|
|
6331
|
+
"enableItDictionaryHint": "Автоисправление произношения для SQL, Nginx, K8s, Docker, API, JSON, YAML и т. д.",
|
|
6332
|
+
"enableLocalEngines": "Включить локальные движки",
|
|
6333
|
+
"enableLocalEnginesHint": "Использовать Kokoro или F5-TTS, если они установлены.",
|
|
6334
|
+
"enableSound": "Включить звук",
|
|
6335
|
+
"errorLoading": "Ошибка загрузки настроек: ",
|
|
6336
|
+
"espeakBin": "бинарный файл eSpeak",
|
|
6337
|
+
"espeakHint": "Обычно espeak-ng.",
|
|
6338
|
+
"exportAudio": "Экспортировать аудиозапись",
|
|
6339
|
+
"exportJson": "📥 Экспортировать JSON",
|
|
6340
|
+
"exportSuccess": "Аудио экспортировано",
|
|
6341
|
+
"fromEnv": "Задано в окружении",
|
|
6342
|
+
"general": "Общее",
|
|
6343
|
+
"importJson": "📤 Импортировать JSON",
|
|
6344
|
+
"installed": "Установлено",
|
|
6345
|
+
"installF5": "Установить (2,1 ГБ)",
|
|
6346
|
+
"installKokoro": "Установить (350 МБ)",
|
|
6347
|
+
"invalidJsonFormat": "Недопустимый формат словаря JSON",
|
|
6348
|
+
"language": "Язык",
|
|
6349
|
+
"languageHint": "Подсказка для голосов, которым нужен региональный язык (eSpeak, Azure SSML).",
|
|
6350
|
+
"lastError": "Последняя ошибка",
|
|
6351
|
+
"loading": "Загрузка…",
|
|
6352
|
+
"loadItDictionary": "Заполнить словарь IT-терминов",
|
|
6353
|
+
"localEnginesHint": "Синтез речи полностью работает офлайн, без ключей API.",
|
|
6354
|
+
"localEnginesTitle": "Локальные движки (офлайн)",
|
|
6355
|
+
"localProvider": "Локальный провайдер / CLI — без ключа API",
|
|
6356
|
+
"longReply": "Длинные ответы",
|
|
6357
|
+
"longReplyFull": "Полностью",
|
|
6358
|
+
"longReplyHint": "обрезать: обрыв по лимиту; пересказать: краткий пересказ; полностью: читать всё.",
|
|
6359
|
+
"longReplySummarize": "Пересказать",
|
|
6360
|
+
"longReplyTruncate": "Обрезать",
|
|
6361
|
+
"maxChars": "Максимум символов",
|
|
6362
|
+
"maxCharsHint": "Жёсткий предел до обработки длинного ответа; 0 отключает.",
|
|
6363
|
+
"maxQueue": "Максимальная длина очереди",
|
|
6364
|
+
"maxQueueHint": "За пределом этого числа самые старые ожидающие фрагменты отбрасываются.",
|
|
6365
|
+
"messengerInstallHint": "Чтобы включить голосовые ответы в мессенджерах, установите плагин командой",
|
|
6366
|
+
"messengerIntegrationHint": "Голосовые ответы и заметки отправляются через @goodandready/dsh-messenger-gateway.",
|
|
6367
|
+
"messengerIntegrationTitle": "Интеграция с мессенджерами (Telegram, Discord)",
|
|
6368
|
+
"messengerNotInstalledTitle": "Нужный плагин @goodandready/dsh-messenger-gateway не установлен",
|
|
6369
|
+
"messengerTtsEnabled": "Голосовые ответы в мессенджерах",
|
|
6370
|
+
"messengerTtsEnabledHint": "Разрешить шлюзу мессенджеров доставлять ответы голосовыми заметками.",
|
|
6371
|
+
"mimoBaseUrl": "Базовый URL MiMo",
|
|
6372
|
+
"mimoBaseUrlHint": "Корень API MiMo; синтез использует его адрес чата.",
|
|
6373
|
+
"mimoFormat": "Формат MiMo",
|
|
6374
|
+
"mimoFormatHint": "mp3 или wav.",
|
|
6375
|
+
"minimaxBin": "CLI MiniMax",
|
|
6376
|
+
"minimaxBinHint": "Ищется в PATH, если путь не абсолютный; устанавливается и авторизуется отдельно.",
|
|
6377
|
+
"modelHint_azure": "регион и имя голоса",
|
|
6378
|
+
"modelHint_custom": "своя модель",
|
|
6379
|
+
"modelHint_deepgram": "по умолчанию провайдера (только английские голоса)",
|
|
6380
|
+
"modelHint_deepinfra": "идентификатор модели (например, hexgrad/Kokoro-82M)",
|
|
6381
|
+
"modelHint_edge": "Голос BCP-47, например en-US-AriaName",
|
|
6382
|
+
"modelHint_elevenlabs": "по умолчанию провайдера",
|
|
6383
|
+
"modelHint_espeak": "код языка, например en",
|
|
6384
|
+
"modelHint_f5": "не входит в комплект — нет офлайн-среды выполнения нейросети",
|
|
6385
|
+
"modelHint_fireworks": "идентификатор модели (например, kokoro)",
|
|
6386
|
+
"modelHint_google": "по умолчанию провайдера",
|
|
6387
|
+
"modelHint_groq": "по умолчанию провайдера",
|
|
6388
|
+
"modelHint_kokoro": "не входит в комплект — нет офлайн-среды выполнения нейросети",
|
|
6389
|
+
"modelHint_mimo": "идентификатор модели (например, mimo-v2.5-tts)",
|
|
6390
|
+
"modelHint_minimax": "идентификатор модели",
|
|
6391
|
+
"modelHint_openai": "по умолчанию провайдера",
|
|
6392
|
+
"modelHint_openrouter": "идентификатор провайдера или модели",
|
|
6393
|
+
"modelHint_piper": "путь к .onnx",
|
|
6394
|
+
"modelHint_siliconflow": "идентификатор модели (например, FunAudioLLM/CosyVoice2-0.5B)",
|
|
6395
|
+
"narrateQuotesHint": "Читать только фрагменты ответа в «кавычках».",
|
|
6396
|
+
"narrateQuotesOnly": "Только цитаты",
|
|
6397
|
+
"newSubagentRole": "Имя субагента (например, coder, reviewer)",
|
|
6398
|
+
"notInstalled": "Не установлено",
|
|
6399
|
+
"notSet": "Не задано",
|
|
6400
|
+
"openaiBaseUrl": "Базовый URL OpenAI",
|
|
6401
|
+
"openaiBaseUrlHint": "Совместимый с OpenAI адрес для провайдера OpenAI.",
|
|
6402
|
+
"piperBin": "Бинарный файл Piper",
|
|
6403
|
+
"piperModel": "Путь к модели Piper",
|
|
6404
|
+
"piperModelHint": "Абсолютный путь к модели ONNX. Оставьте пустым, чтобы пропустить Piper.",
|
|
6405
|
+
"preview": "Предпрослушать",
|
|
6406
|
+
"previewRule": "Прослушать",
|
|
6407
|
+
"pronFrom": "Заменить",
|
|
6408
|
+
"pronHint": "Правила выполняются сверху вниз. Для регулярного выражения оберните левую часть в /…/; поле «Язык» отбирает правило.",
|
|
6409
|
+
"pronLang": "Язык",
|
|
6410
|
+
"pronTitle": "Произношение",
|
|
6411
|
+
"pronTo": "На",
|
|
6412
|
+
"pronWhole": "Целое слово",
|
|
6413
|
+
"questionHint": "Произносится, когда агент задаёт вопрос. Пустое значение отключает его.",
|
|
6414
|
+
"questionText": "Формулировка вопроса",
|
|
6415
|
+
"queueLen": "Очередь",
|
|
6416
|
+
"rate": "Скорость воспроизведения",
|
|
6417
|
+
"rateHint": "От 0,5 до 2. Синтез не меняется; браузер воспроизводит быстрее или медленнее.",
|
|
6418
|
+
"recent": "Недавние",
|
|
6419
|
+
"recentEmpty": "Пока нет недавних записей",
|
|
6420
|
+
"remove": "Удалить",
|
|
6421
|
+
"removeRegex": "Регулярное выражение для удаления",
|
|
6422
|
+
"removeRegexHint": "Глобальное регулярное выражение; совпадения удаляются перед синтезом.",
|
|
6423
|
+
"retry": "Повторить",
|
|
6424
|
+
"role_coder": "Разработчик",
|
|
6425
|
+
"role_planner": "Планировщик",
|
|
6426
|
+
"role_reviewer": "Проверяющий",
|
|
6427
|
+
"roleApproval": "Одобрение",
|
|
6428
|
+
"roleError": "Ошибка",
|
|
6429
|
+
"roleReply": "Ответ",
|
|
6430
|
+
"rolesHint": "Пустые поля наследуют основную цепочку.",
|
|
6431
|
+
"rolesTitle": "Голосовые роли",
|
|
6432
|
+
"runtimeNotBundled": "Среда выполнения для нейросетевого вывода не входит в комплект",
|
|
6433
|
+
"runtimeNotBundledHint": "Установка весов не включает речь. Для офлайн-TTS используйте Edge, Piper или eSpeak.",
|
|
6434
|
+
"save": "Сохранить",
|
|
6435
|
+
"saved": "Сохранено",
|
|
6436
|
+
"sentenceChars": "Размер фрагмента предложения",
|
|
6437
|
+
"sentenceCharsHint": "Максимум символов в одном потоковом фрагменте предложения.",
|
|
6438
|
+
"skipActions": "Пропускать *действия*",
|
|
6439
|
+
"skipActionsHint": "Убирать блоки действий, помеченные звёздочками.",
|
|
6440
|
+
"skipCode": "Пропускать блоки кода",
|
|
6441
|
+
"skipCodeHint": "Произносить короткое уведомление вместо чтения кода вслух.",
|
|
6442
|
+
"speakAsItGoes": "Читать по мере поступления",
|
|
6443
|
+
"speakAsItGoesHint": "Читать каждый ответ сразу, как только он появляется, по одному предложению, вместо ожидания всего хода.",
|
|
6444
|
+
"speakMessage": "Прочитать этот ответ вслух",
|
|
6445
|
+
"speakMessageEmpty": "В этом ответе нечего читать",
|
|
6446
|
+
"speakMessageStop": "Прекратить чтение этого ответа",
|
|
6447
|
+
"speakReplies": "Читать ответы агента вслух",
|
|
6448
|
+
"speakRepliesHint": "Когда включено, каждый готовый ответ синтезируется на хосте и воспроизводится в этом браузере. Аудио не отправляется обратно в модель.",
|
|
6449
|
+
"sseState": "SSE",
|
|
6450
|
+
"ssmlStyle": "Стиль тона SSML",
|
|
6451
|
+
"ssmlStyleHint": "Выразительный тон (например, радостный, серьёзный, участливый).",
|
|
6452
|
+
"statErrors": "Ошибки",
|
|
6453
|
+
"statHits": "Попадания в кэш",
|
|
6454
|
+
"statReset": "Сбросить статистику",
|
|
6455
|
+
"statsTitle": "Статистика",
|
|
6456
|
+
"statTotal": "Всего",
|
|
6457
|
+
"statusOffline": "Хост недоступен",
|
|
6458
|
+
"statusOnline": "Хост на связи",
|
|
6459
|
+
"streamingEnabled": "Мгновенный поток (< 300 мс)",
|
|
6460
|
+
"streamingEnabledHint": "Воспроизводить аудио в реальном времени через AudioWorklet и SSE.",
|
|
6461
|
+
"subtitle": "Синтез речи для DeepSeek Harness",
|
|
6462
|
+
"summaryModel": "Модель для пересказа",
|
|
6463
|
+
"summaryModelHint": "провайдер или модель, пусто — по умолчанию для диалога.",
|
|
6464
|
+
"summarySentences": "Длина пересказа",
|
|
6465
|
+
"summarySentencesHint": "Предложений в озвученном пересказе.",
|
|
6466
|
+
"testProvider": "Проверить провайдера",
|
|
6467
|
+
"timeoutMs": "Тайм-аут провайдера (мс)",
|
|
6468
|
+
"timeoutMsHint": "Прерывать попытку провайдера после указанного числа миллисекунд.",
|
|
6469
|
+
"title": "Речь",
|
|
6470
|
+
"ttsUiError": "⚠️ Ошибка интерфейса TTS:",
|
|
6471
|
+
"unlockAudio": "Нажмите, чтобы включить звук",
|
|
6472
|
+
"up": "Вверх",
|
|
6473
|
+
"updaterCheck": "Проверить обновления",
|
|
6474
|
+
"updaterChecking": "Проверка…",
|
|
6475
|
+
"updaterCurrent": "Текущая версия",
|
|
6476
|
+
"updaterFailed": "Не удалось проверить обновления: ",
|
|
6477
|
+
"updaterLatest": "Последняя версия",
|
|
6478
|
+
"updaterSuccess": "Плагин успешно обновлён. Перезапустите службу DSH.",
|
|
6479
|
+
"updaterTitle": "Обновления плагина",
|
|
6480
|
+
"updaterUpdateNow": "Обновить до v{version}",
|
|
6481
|
+
"updaterUpdating": "Обновление…",
|
|
6482
|
+
"updaterUpToDate": "Актуальная версия",
|
|
6483
|
+
"useF5": "Включить F5-TTS (GPU)",
|
|
6484
|
+
"useF5Hint": "Синтез высокого качества без примеров на GPU NVIDIA.",
|
|
6485
|
+
"useKokoro": "Включить Kokoro-82M (CPU)",
|
|
6486
|
+
"useKokoroHint": "Быстрый нейросетевой синтез на CPU.",
|
|
6487
|
+
"vadBargeIn": "Перебивание по VAD",
|
|
6488
|
+
"vadBargeInHint": "Сразу отключать синтез речи, когда обнаружен голос пользователя.",
|
|
6489
|
+
"voiceDuplex": "Режим «голос в голос»",
|
|
6490
|
+
"voiceDuplexHint": "Диалог голосом с интеграцией dsh-voice.",
|
|
6491
|
+
"voiceDuplexHintToggle": "Автоматически синтезировать ответ агента после окончания разговора.",
|
|
6492
|
+
"voiceDuplexTitle": "Дуплексный голосовой режим (голос в голос)",
|
|
6493
|
+
"voiceInstallHint": "Чтобы включить дуплексный голосовой режим, установите плагин командой",
|
|
6494
|
+
"voiceNotInstalledTitle": "Нужный плагин @goodandready/dsh-voice не установлен"
|
|
6495
|
+
},
|
|
6496
|
+
"dsh-usage-guard": {
|
|
6497
|
+
"badge_active": "Активная защита",
|
|
6498
|
+
"badge_report_only": "Только отчёт",
|
|
6499
|
+
"header_desc": "Защищает проекции истории сессий от испорченных или пропавших счётчиков токенов у всех провайдеров языковых моделей.",
|
|
6500
|
+
"maxStepTokens": "Предел смягчения всплесков токенов",
|
|
6501
|
+
"maxStepTokensDesc": "Смягчать аномально большие счётчики расхода шага (например, больше миллиона) до расчёта проекций, чтобы не было переполнения целого числа и испорченных итогов сессии. Значение 0 отключает ограничение.",
|
|
6502
|
+
"repair": "Автоматически восстанавливать счётчики токенов",
|
|
6503
|
+
"repairDesc": "Заменять пропавшие, нечисловые или испорченные счётчики на 0 перед суммированием, чтобы история не зависала из-за NaN.",
|
|
6504
|
+
"report": "Писать диагностические предупреждения в журнал",
|
|
6505
|
+
"reportDesc": "Писать подробное предупреждение с указанием раунда, шага и исходного замера сессии каждый раз, когда приходит испорченный расход.",
|
|
6506
|
+
"request_timeout": "Истекло время ожидания запроса (15 с)",
|
|
6507
|
+
"save": "Сохранить изменения",
|
|
6508
|
+
"saved": "Настройки сохранены",
|
|
6509
|
+
"saving": "Сохранение…",
|
|
6510
|
+
"settings.loading": "Загрузка настроек Usage Guard…",
|
|
6511
|
+
"settings.retry": "Повторить",
|
|
6512
|
+
"settings.unavailable": "Раздел настроек недоступен (пространство имён хоста не готово).",
|
|
6513
|
+
"stats_mode": "Текущий режим",
|
|
6514
|
+
"stats_mode_repair": "Активное восстановление (безопасно)",
|
|
6515
|
+
"stats_mode_report": "Только проверка (небезопасно)",
|
|
6516
|
+
"stats_scope": "Область действия",
|
|
6517
|
+
"stats_scope_val": "sessionProjections",
|
|
6518
|
+
"stats_title": "Состояние защиты",
|
|
6519
|
+
"subtitle": "Очистка счётчиков токенов и защита сессии от сбоев",
|
|
6520
|
+
"telemetry_clamped": "Смягчённые всплески",
|
|
6521
|
+
"telemetry_last_incident": "Последний случай",
|
|
6522
|
+
"telemetry_no_incidents": "Случаев не обнаружено (система в порядке)",
|
|
6523
|
+
"telemetry_refresh": "Обновить телеметрию",
|
|
6524
|
+
"telemetry_refreshing": "Обновление…",
|
|
6525
|
+
"telemetry_rescued": "Спасённые события",
|
|
6526
|
+
"telemetry_title": "Телеметрия в реальном времени",
|
|
6527
|
+
"telemetry_tokens": "Исправленные токены",
|
|
6528
|
+
"title": "Сторож расхода",
|
|
6529
|
+
"updater_check": "Проверить обновления",
|
|
6530
|
+
"updater_checking": "Проверка…",
|
|
6531
|
+
"updater_current": "Текущая версия",
|
|
6532
|
+
"updater_failed": "Не удалось проверить обновление",
|
|
6533
|
+
"updater_latest": "Последняя версия",
|
|
6534
|
+
"updater_success": "Обновление прошло успешно. Перезагрузите страницу.",
|
|
6535
|
+
"updater_title": "Версия плагина и обновления",
|
|
6536
|
+
"updater_up_to_date": "Плагин уже обновлён",
|
|
6537
|
+
"updater_update_now": "Обновить до {version}",
|
|
6538
|
+
"updater_updating": "Обновление…"
|
|
6539
|
+
},
|
|
6540
|
+
"ego-browser": {
|
|
6541
|
+
"captureBackend": "Источник захвата",
|
|
6542
|
+
"cdpBackstopIntervalMs": "Интервал восстановления CDP",
|
|
6543
|
+
"cdpFps": "CDP, кадр/с",
|
|
6544
|
+
"cdpMaxWidth": "Максимальная ширина CDP",
|
|
6545
|
+
"cdpQuality": "Качество JPEG для CDP",
|
|
6546
|
+
"chromeArgs": "Дополнительные аргументы запуска Chrome",
|
|
6547
|
+
"chromeArgsHint": "Добавляются к аргументам запуска Chrome. Вступают в силу при следующем холодном старте браузера (браузер работает в единственном экземпляре — выполните `ego-browser --stop` или перезапустите DSH, чтобы перезапустить его). Заблокированы: --user-data-dir/--remote-debugging-port/--remote-allow-origins/--headless/--no-startup-window/--proxy-server (для прокси используйте EGO_LINUX_PROXY).",
|
|
6548
|
+
"chromePath": "Путь к исполняемому файлу браузера",
|
|
6549
|
+
"chromePathHint": "Путь к исполняемому файлу Chrome/Chromium/Edge. Пусто — определяется автоматически.",
|
|
6550
|
+
"collapse": "Скрыть настройки",
|
|
6551
|
+
"disableFrameRelay": "Отключить передачу кадров в реальном времени",
|
|
6552
|
+
"disableFrameRelayHint": "Изображение вообще не передаётся: нет процесса ego-cast, нет захвата экрана через CDP/WGC, нет забора кадров через ffmpeg, и панель просмотра не открывает поток. Инструменты ego_* продолжают работать как обычно.",
|
|
6553
|
+
"disableFrameRelayOff": "Выкл. (просмотр в реальном времени включён)",
|
|
6554
|
+
"disableFrameRelayOn": "Вкл. (изображение не передаётся на эту страницу)",
|
|
6555
|
+
"discard": "Отменить",
|
|
6556
|
+
"egoCliArgs": "Дополнительные аргументы CLI ego-browser",
|
|
6557
|
+
"egoCliArgsHint": "Добавляются к аргументам `ego-browser nodejs`. Вступают в силу при следующем вызове ego_*. Заблокированы: --status/--stop/--open/--spaces/--help (они завершают работу до запуска heredoc). Режим --headless задавайте через переменную окружения headless.",
|
|
6558
|
+
"expand": "Показать настройки",
|
|
6559
|
+
"ffmpegBitrateKbps": "Битрейт FFmpeg",
|
|
6560
|
+
"ffmpegChecking": "Проверка локального FFmpeg…",
|
|
6561
|
+
"ffmpegDownloading": "Загрузка FFmpeg…",
|
|
6562
|
+
"ffmpegEncoder": "Кодировщик FFmpeg",
|
|
6563
|
+
"ffmpegExtracting": "Распаковка FFmpeg…",
|
|
6564
|
+
"ffmpegFailed": "Не удалось установить FFmpeg",
|
|
6565
|
+
"ffmpegFps": "FFmpeg, кадр/с",
|
|
6566
|
+
"ffmpegInstall": "Загрузить FFmpeg",
|
|
6567
|
+
"ffmpegMaxWidth": "Максимальная ширина FFmpeg",
|
|
6568
|
+
"ffmpegMissing": "Подходящий FFmpeg не найден",
|
|
6569
|
+
"ffmpegPath": "Путь к исполняемому файлу FFmpeg",
|
|
6570
|
+
"ffmpegProbing": "Проверка возможностей захвата…",
|
|
6571
|
+
"ffmpegReady": "Готово",
|
|
6572
|
+
"ffmpegRecheck": "Проверить снова",
|
|
6573
|
+
"ffmpegReinstall": "Переустановить",
|
|
6574
|
+
"ffmpegRequired": "FFmpeg (требуется установка)",
|
|
6575
|
+
"ffmpegSource": "Источник",
|
|
6576
|
+
"ffmpegTitle": "Установка FFmpeg",
|
|
6577
|
+
"ffmpegUnsupported": "Захват через FFmpeg не поддерживается на этой платформе",
|
|
6578
|
+
"ffmpegVerifying": "Проверка загрузки…",
|
|
6579
|
+
"ffmpegVersion": "Версия",
|
|
6580
|
+
"fpsUnit": "кадр/с",
|
|
6581
|
+
"githubMirror": "Зеркало GitHub",
|
|
6582
|
+
"githubMirrorHint": "Заменяет https://github.com при загрузке с GitHub, например на https://gh-proxy.com/github.com.",
|
|
6583
|
+
"idleTimeoutMin": "Автоостановка при простое (минуты)",
|
|
6584
|
+
"idleTimeoutMinHint": "Останавливать браузер после N минут без вызовов ego_* (0 — отключено). При следующем вызове он запускается с нуля (~2–4 с). Просмотр панели не считается активностью.",
|
|
6585
|
+
"intro": "Интеграция с браузером агента. Ниже настройте путь к исполняемому файлу Chrome/Chromium и параметры трансляции.",
|
|
6586
|
+
"isolateSpaces": "Изоляция пространств",
|
|
6587
|
+
"isolateSpacesHint": "Выключено: используется постоянный профиль на диске, входы сохраняются между перезапусками. Включено: для каждой задачи создаётся изолированная песочница только в памяти.",
|
|
6588
|
+
"isolateSpacesOff": "Выключено (постоянный профиль, входы сохраняются)",
|
|
6589
|
+
"isolateSpacesOn": "Включено (изолированная песочница в памяти)",
|
|
6590
|
+
"kbpsUnit": "кбит/с",
|
|
6591
|
+
"loginImportBusy": "Выполняется… (работающий исходный браузер, возможно, придётся закрыть)",
|
|
6592
|
+
"loginImportClosed": " (исходный браузер был закрыт, его можно открыть снова)",
|
|
6593
|
+
"loginImportCloseSource": "Сначала закройте исходный браузер, если он запущен (окна восстановятся при следующем запуске)",
|
|
6594
|
+
"loginImportDomains": "Домены (через запятую; пусто — ВСЕ)",
|
|
6595
|
+
"loginImportDomainsHint": "например, bilibili.com, zhihu.com — поддомены тоже. Лучше указать явный список, чем импортировать всё.",
|
|
6596
|
+
"loginImportIntro": "Копирование cookie для входа из вашего обычного Chrome/Edge/Brave в браузер агента (передача через CDP — без офлайн-расшифровки). Сначала проверьте, затем импортируйте с явным списком доменов.",
|
|
6597
|
+
"loginImportProbe": "Проверить",
|
|
6598
|
+
"loginImportProbeResult": "Доступно для импорта: cookie — {matched} шт., доменов — {domains} шт. (прочитано всего: {total} шт.) — ничего не записано.",
|
|
6599
|
+
"loginImportResult": "Импортировано {written} шт. cookie из доменов — {domains} шт., источник — {source}. Они сохраняются между перезапусками.",
|
|
6600
|
+
"loginImportRun": "Импортировать",
|
|
6601
|
+
"loginImportSource": "Источник",
|
|
6602
|
+
"loginImportTitle": "Импорт входов из системного браузера",
|
|
6603
|
+
"minUnit": "мин",
|
|
6604
|
+
"msUnit": "мс",
|
|
6605
|
+
"namespaceUnavailable": "Канал настройки ego-browser недоступен. Повторите позже.",
|
|
6606
|
+
"pxUnit": "px",
|
|
6607
|
+
"readOnly": "Настройки в этом развёртывании доступны только для чтения.",
|
|
6608
|
+
"relayDisabledBody": "Отключите «Отключить передачу кадров в реальном времени» в настройках → Плагины → ego-browser, чтобы увидеть здесь просмотр в реальном времени.",
|
|
6609
|
+
"relayDisabledTitle": "Передача кадров в реальном времени отключена",
|
|
6610
|
+
"retry": "Повторить",
|
|
6611
|
+
"save": "Сохранить",
|
|
6612
|
+
"saving": "Сохранение…",
|
|
6613
|
+
"streamProfile": "Профиль качества",
|
|
6614
|
+
"title": "ego-browser",
|
|
6615
|
+
"unsaved": "Есть несохранённые изменения"
|
|
6616
|
+
},
|
|
6617
|
+
"personalDirective": {
|
|
6618
|
+
"disabled": "Директива: выкл.",
|
|
6619
|
+
"enabled": "Директива: вкл.",
|
|
6620
|
+
"failed": "Не удалось переключить директиву — нет соединения",
|
|
6621
|
+
"switching": "Переключение…",
|
|
6622
|
+
"title": "Переключение личной директивы"
|
|
6623
|
+
},
|
|
6624
|
+
"betterSidebar": {
|
|
6625
|
+
"addPluginsBrowseMore": "Больше плагинов на GitHub (тема: dsh-better-sidebar)",
|
|
6626
|
+
"addPluginsEmpty": "Подборки плагинов пока нет — опубликуйте свой под темой на GitHub",
|
|
6627
|
+
"addPluginsNoMatch": "Подходящих плагинов нет",
|
|
6628
|
+
"addPluginsRecommended": "Рекомендуемые плагины",
|
|
6629
|
+
"addPluginsSearch": "Поиск по названию или описанию плагина…",
|
|
6630
|
+
"addPluginsTabCard": "Плагины для вкладок",
|
|
6631
|
+
"addPluginsTabCardDesc": "Регистрация новой страницы боковой панели",
|
|
6632
|
+
"addPluginsTabDesc": "Страницы боковой панели (вкладки) можно расширять плагинами. Плагины регистрируются через службу ctx.betterSidebar; нажатие «Установить» копирует команду установки — вставьте её в терминал, где находится ваш профиль DSH, и выполните.",
|
|
6633
|
+
"addPluginsViewerCard": "Плагины для предпросмотра",
|
|
6634
|
+
"addPluginsViewerCardDesc": "Регистрация предпросмотра для типа файлов",
|
|
6635
|
+
"addPluginsViewerDesc": "Предпросмотр файлов можно расширять плагинами. Плагины регистрируются через службу ctx.betterSidebar; нажатие «Установить» копирует команду установки — вставьте её в терминал, где находится ваш профиль DSH, и выполните.",
|
|
6636
|
+
"addToConversation": "Добавить в беседу",
|
|
6637
|
+
"archiveToolMissing": "В этой системе нет команды архивирования (ни zip, ни tar), поэтому выделение нельзя упаковать для скачивания",
|
|
6638
|
+
"binary": "Двоичный файл, предпросмотр недоступен",
|
|
6639
|
+
"binaryNoPreview": "Предпросмотр этого типа файлов недоступен",
|
|
6640
|
+
"branch": "Ветка",
|
|
6641
|
+
"brokenSymlink": "Битая символическая ссылка",
|
|
6642
|
+
"browser": "Браузер",
|
|
6643
|
+
"browserBack": "Назад",
|
|
6644
|
+
"browserBlockedLoopback": "Заблокировано: локальные и внутренние адреса здесь не открываются",
|
|
6645
|
+
"browserBlockedScheme": "Заблокировано: разрешены только URL по http/https",
|
|
6646
|
+
"browserEmbedAnyway": "Всё равно загрузить",
|
|
6647
|
+
"browserEmbedBlocked": "{host} запретил встраивание",
|
|
6648
|
+
"browserEmbedBlockedDesc": "Сайт запрещает показ внутри других страниц (X-Frame-Options / frame-ancestors), поэтому он не загрузится в боковой панели. Откройте его напрямую в браузере.",
|
|
6649
|
+
"browserForward": "Вперёд",
|
|
6650
|
+
"browserGo": "Перейти",
|
|
6651
|
+
"browserInvalid": "Некорректный URL",
|
|
6652
|
+
"browserOpenExternal": "Открыть в браузере",
|
|
6653
|
+
"browserPlaceholder": "Введите URL, например example.com",
|
|
6654
|
+
"browserStart": "Введите URL, чтобы начать просмотр (режим песочницы)",
|
|
6655
|
+
"cancel": "Отмена",
|
|
6656
|
+
"catalogLoadFailed": "Не удалось загрузить веток: {count}",
|
|
6657
|
+
"changes": "Git",
|
|
6658
|
+
"changesClean": "В рабочем дереве нет изменений",
|
|
6659
|
+
"changesClosePreview": "Закрыть предпросмотр",
|
|
6660
|
+
"changesContentTab": "Содержимое",
|
|
6661
|
+
"changesContext": "контекст",
|
|
6662
|
+
"changesDiffTab": "Различия",
|
|
6663
|
+
"changesEdit": "Правка",
|
|
6664
|
+
"changesError": "ошибка",
|
|
6665
|
+
"changesFilterAll": "Все",
|
|
6666
|
+
"changesFilterEmpty": "Операций такого вида нет",
|
|
6667
|
+
"changesFold": "{count} строк… нажмите, чтобы развернуть",
|
|
6668
|
+
"changesFoldLoading": "Разворачиваем…",
|
|
6669
|
+
"changesFoldUnavailable": "Контекст недоступен",
|
|
6670
|
+
"changesGitLens": "Git",
|
|
6671
|
+
"changesHtmlRaw": "Исходный код",
|
|
6672
|
+
"changesHtmlRender": "Разметка",
|
|
6673
|
+
"changesLoadError": "Записи файлов сессии сейчас недоступны",
|
|
6674
|
+
"changesMdRaw": "Исходный код",
|
|
6675
|
+
"changesMdReading": "Чтение",
|
|
6676
|
+
"changesNewFile": "Новый файл",
|
|
6677
|
+
"changesNoCommit": "Коммит не выбран",
|
|
6678
|
+
"changesNoContent": "Здесь показывать нечего",
|
|
6679
|
+
"changesOpenDiffTab": "Открыть во вкладке различий",
|
|
6680
|
+
"changesOpGone": "Этой операции больше нет в журнале сессии",
|
|
6681
|
+
"changesPriorUnknown": "Предыдущее содержимое находится за пределами загруженного окна; показано как целиком добавленное",
|
|
6682
|
+
"changesRead": "Чтение",
|
|
6683
|
+
"changesReadNoDiff": "У чтения нет различий",
|
|
6684
|
+
"changesRedactBanner": "Скрыто",
|
|
6685
|
+
"changesRedactOff": "Скрытие выключено: содержимое файла показывается дословно; нажмите, чтобы включить",
|
|
6686
|
+
"changesRedactOffLabel": "Скрытие выключено",
|
|
6687
|
+
"changesRedactOn": "Скрытие включено: секреты показываются как [СКРЫТО]; нажмите, чтобы выключить (на свой страх и риск)",
|
|
6688
|
+
"changesRedactOnLabel": "Скрытие",
|
|
6689
|
+
"changesResizePreview": "Изменить размер предпросмотра",
|
|
6690
|
+
"changesRunning": "выполняется",
|
|
6691
|
+
"changesSessionEmpty": "В этой сессии пока нет операций с файлами",
|
|
6692
|
+
"changesSessionLens": "Сессия",
|
|
6693
|
+
"changesStageFailed": "Не удалось проиндексировать: {message}",
|
|
6694
|
+
"changesWrite": "Запись",
|
|
6695
|
+
"checkoutError": "Не удалось переключить ветку",
|
|
6696
|
+
"cherryPickCommit": "Перенести коммит (cherry-pick)",
|
|
6697
|
+
"cherryPickDesc": "Применить изменения из «{subject}» к текущей ветке.",
|
|
6698
|
+
"cherryPickTitle": "Перенос коммита (cherry-pick)",
|
|
6699
|
+
"clearSelection": "Снять выделение",
|
|
6700
|
+
"close": "Закрыть",
|
|
6701
|
+
"closeAllTabs": "Закрыть все вкладки",
|
|
6702
|
+
"closeLeftTabs": "Закрыть вкладки слева",
|
|
6703
|
+
"closeOtherTabs": "Закрыть остальные вкладки",
|
|
6704
|
+
"closeRightTabs": "Закрыть вкладки справа",
|
|
6705
|
+
"closeUnsavedConfirm": "В этом файле есть несохранённые изменения. Закрытие вкладки удалит их. Продолжить?",
|
|
6706
|
+
"codeBlockTitle": "Блок кода",
|
|
6707
|
+
"codeBlockUnwrap": "Не переносить строки",
|
|
6708
|
+
"codeBlockWrap": "Переносить строки",
|
|
6709
|
+
"collapseBottomPanel": "Свернуть нижнюю панель",
|
|
6710
|
+
"commit": "Коммит",
|
|
6711
|
+
"commitModelCurrent": "Текущая: {route}",
|
|
6712
|
+
"commitModelDefaultNote": "по умолчанию",
|
|
6713
|
+
"commitModelDesc": "Выберите модель, которая пишет сообщения коммитов; по умолчанию она следует за моделью текущей беседы.",
|
|
6714
|
+
"commitModelEmpty": "Модели не найдены (введите провайдер/модель выше)",
|
|
6715
|
+
"commitModelFollow": "Следовать за беседой",
|
|
6716
|
+
"commitModelInvalid": "используйте форму провайдер/модель",
|
|
6717
|
+
"commitModelRecentNote": "используется здесь",
|
|
6718
|
+
"commitModelSearchPlaceholder": "Поиск: введите провайдер/модель",
|
|
6719
|
+
"commitModelTitle": "Модель для сообщений коммита",
|
|
6720
|
+
"commitModelUnavailable": "в этом развёртывании нет службы моделей; доступно только следование",
|
|
6721
|
+
"commitPlaceholder": "Сообщение ({shortcut} — коммит в «{branch}»)",
|
|
6722
|
+
"committingMessage": "Создаём коммит…",
|
|
6723
|
+
"contextDiagnostics": "Диагностика контекста",
|
|
6724
|
+
"contextDiagnosticsDismiss": "Скрыть",
|
|
6725
|
+
"contextDiagnosticsFailed": "Не удалось открыть диагностику контекста для «{label}»",
|
|
6726
|
+
"contextDiagnosticsNavigation": "Не удалось найти эту беседу",
|
|
6727
|
+
"contextDiagnosticsOpenFailed": "Страницу открыть не удалось",
|
|
6728
|
+
"contextDiagnosticsTarget": "Текущая сессия",
|
|
6729
|
+
"contextDiagnosticsTimeout": "Время ожидания истекло — попробуйте снова",
|
|
6730
|
+
"contextDiagnosticsUnavailable": "Страница «Context» плагина dsh-context недоступна (плагин не установлен или не зарегистрирован)",
|
|
6731
|
+
"copied": "Скопировано",
|
|
6732
|
+
"copy": "Копировать",
|
|
6733
|
+
"copyAbsolute": "Копировать абсолютный путь",
|
|
6734
|
+
"copyFullHash": "Копировать полный хеш",
|
|
6735
|
+
"copyInstall": "Копировать команду установки",
|
|
6736
|
+
"copyPaths": "Копировать пути",
|
|
6737
|
+
"copyRelative": "Копировать относительный путь",
|
|
6738
|
+
"copyShortHash": "Копировать короткий хеш",
|
|
6739
|
+
"copySubject": "Копировать тему",
|
|
6740
|
+
"delete": "Удалить",
|
|
6741
|
+
"deleteDescDir": "Каталог и всё его содержимое будут удалены безвозвратно. Отменить это нельзя.",
|
|
6742
|
+
"deleteDescFile": "Файл будет удалён безвозвратно. Отменить это нельзя.",
|
|
6743
|
+
"deleteSelected": "Удалить выбранные",
|
|
6744
|
+
"deleteSelectedDesc": "Эти файлы и папки будут удалены безвозвратно. Отменить это нельзя.",
|
|
6745
|
+
"deleteSelectedTitle": "Удалить выбранные элементы ({count})?",
|
|
6746
|
+
"deleteTitle": "Удалить «{name}»?",
|
|
6747
|
+
"diffAdded": "Добавлено",
|
|
6748
|
+
"diffBinary": "Двоичный",
|
|
6749
|
+
"diffDeleted": "Удалено",
|
|
6750
|
+
"diffEmpty": "Текстовых изменений нет",
|
|
6751
|
+
"diffExpand": "Показать ещё {count} строк",
|
|
6752
|
+
"diffLoadError": "Не удалось загрузить различия",
|
|
6753
|
+
"diffRenamed": "Переименовано",
|
|
6754
|
+
"discard": "Отменить изменения",
|
|
6755
|
+
"discardDesc": "Это отменит изменения рабочего дерева в «{path}» (восстановить их будет нельзя).",
|
|
6756
|
+
"discardTitle": "Отменить изменения",
|
|
6757
|
+
"disconnected": "Терминал отключён, переподключаемся…",
|
|
6758
|
+
"dismiss": "Скрыть",
|
|
6759
|
+
"download": "Скачать",
|
|
6760
|
+
"downloadToView": "Скачать, чтобы посмотреть",
|
|
6761
|
+
"edit": "Изменить",
|
|
6762
|
+
"editor": "Редактор",
|
|
6763
|
+
"editorEmptyHint": "Выберите файл на панели дерева или в поле пути выше, чтобы начать предпросмотр",
|
|
6764
|
+
"editorExplorer": "Как открываются файлы",
|
|
6765
|
+
"editorExplorerDesc": "Управляет тем, как открываются файлы",
|
|
6766
|
+
"editorExplorerMerged": "В одном окне",
|
|
6767
|
+
"editorExplorerMergedDesc": "Файлы сменяют друг друга в том же окне; новые окна открываются с деревом",
|
|
6768
|
+
"editorExplorerSplit": "В отдельных окнах",
|
|
6769
|
+
"editorExplorerSplitDesc": "Окна без пути — это отдельный проводник (только дерево); каждый файл открывается в своём окне (дерево закреплено, по умолчанию закрыто)",
|
|
6770
|
+
"editorPathPlaceholder": "Путь к файлу (относительно каталога сессии или абсолютный), Enter — открыть",
|
|
6771
|
+
"editorSearchNoResults": "Подходящих файлов нет",
|
|
6772
|
+
"editorSearchPlaceholder": "Поиск файлов по названию…",
|
|
6773
|
+
"editorSearchTruncated": "Слишком много результатов — показан частичный список",
|
|
6774
|
+
"editorTreeToggle": "Панель дерева файлов",
|
|
6775
|
+
"error": "Не удалось загрузить",
|
|
6776
|
+
"exited": "Процесс терминала завершился",
|
|
6777
|
+
"expandBottomPanel": "Развернуть нижнюю панель",
|
|
6778
|
+
"explorer": "Проводник",
|
|
6779
|
+
"explorerExclude": "Шаблоны исключений",
|
|
6780
|
+
"explorerExcludeAdd": "Добавить",
|
|
6781
|
+
"explorerExcludeDesc": "Исключить подходящие записи из дерева файлов и из поиска целиком (в стиле VS Code files.exclude; подстановочные знаки «*» и «?», паттерн с **/ в начале соответствует любой вложенности); исключённые записи не мешают сворачиванию по хлебным крошкам",
|
|
6782
|
+
"explorerExcludePlaceholder": "Добавьте шаблон, например node_modules, *.log, **/.git",
|
|
6783
|
+
"explorerExcludeRemove": "Убрать",
|
|
6784
|
+
"files": "Файлы",
|
|
6785
|
+
"filesSelected": "Выбрано: {count}",
|
|
6786
|
+
"filesTruncated": "В этой папке слишком много записей; показаны только первые",
|
|
6787
|
+
"generateCommitMessage": "Создать сообщение коммита",
|
|
6788
|
+
"generateCommitMessageWith": "Создать сообщение коммита (с помощью {model})",
|
|
6789
|
+
"generatingCommitMessage": "Создаём сообщение коммита…",
|
|
6790
|
+
"gitBranchesUnavailable": "Ветки недоступны",
|
|
6791
|
+
"gitChanges": "Изменения",
|
|
6792
|
+
"gitDetached": "Отсоединённый HEAD",
|
|
6793
|
+
"gitGraph": "Граф",
|
|
6794
|
+
"gitMergeChanges": "Слить изменения",
|
|
6795
|
+
"gitMoreActions": "Другие действия",
|
|
6796
|
+
"gitNoUpstream": "Нет верхней ветки",
|
|
6797
|
+
"gitRepository": "Репозиторий",
|
|
6798
|
+
"gitStagedChanges": "Проиндексированные изменения",
|
|
6799
|
+
"gitStatusAdded": "Добавлен",
|
|
6800
|
+
"gitStatusConflict": "Конфликт",
|
|
6801
|
+
"gitStatusDeleted": "Удалён",
|
|
6802
|
+
"gitStatusModified": "Изменён",
|
|
6803
|
+
"gitStatusRenamed": "Переименован",
|
|
6804
|
+
"gitStatusUntracked": "Не отслеживается",
|
|
6805
|
+
"gitSync": "Синхронизировать изменения",
|
|
6806
|
+
"gitSyncUnavailable": "Синхронизация недоступна",
|
|
6807
|
+
"graphAllBranches": "Все ветки",
|
|
6808
|
+
"graphBranchFilter": "Фильтр по веткам",
|
|
6809
|
+
"graphDetails": "Сведения о коммите",
|
|
6810
|
+
"graphEmpty": "Коммитов нет",
|
|
6811
|
+
"graphLoadError": "Не удалось загрузить историю коммитов",
|
|
6812
|
+
"graphLoadMore": "Загрузить ещё",
|
|
6813
|
+
"graphParents": "Родители",
|
|
6814
|
+
"graphStale": "История изменилась. Обновите, чтобы продолжить.",
|
|
6815
|
+
"guideDescBrowser": "Встроенный браузер, который может перехватывать ссылки из беседы",
|
|
6816
|
+
"guideDescFiles": "Просмотр дерева рабочей области; нажмите на файл, чтобы показать предпросмотр или изменить его",
|
|
6817
|
+
"guideDescGit": "Изменения Git и правки файлов этой сессии на одной вкладке",
|
|
6818
|
+
"guideDescSidechat": "Отдельная ветка продолжения, наследующая контекст этой сессии",
|
|
6819
|
+
"guideDescSubagent": "Граф Workflow, доска командных задач и фоновые задачи — в реальном времени",
|
|
6820
|
+
"guideDescTerminal": "Настоящая оболочка (xterm + pty) с переподключением",
|
|
6821
|
+
"history": "История",
|
|
6822
|
+
"htmlNoSandboxWarning": "Песочница выключена: этот HTML работает с полными правами интерфейса (включите её снова в настройках)",
|
|
6823
|
+
"jobCopied": "Скопировано",
|
|
6824
|
+
"jobCopyOutput": "Копировать вывод",
|
|
6825
|
+
"jobDragHint": "Перетащите, чтобы переместить",
|
|
6826
|
+
"jobDurationHours": "{hours} ч {minutes} мин",
|
|
6827
|
+
"jobDurationMinutes": "{minutes} мин {seconds} с",
|
|
6828
|
+
"jobDurationSeconds": "{seconds} с",
|
|
6829
|
+
"jobFollowTail": "Следить за новыми",
|
|
6830
|
+
"jobKill": "Завершить",
|
|
6831
|
+
"jobKillConfirm": "Нажмите ещё раз, чтобы подтвердить завершение",
|
|
6832
|
+
"jobKillError": "Не удалось завершить",
|
|
6833
|
+
"jobNoOutput": "Вывода пока нет",
|
|
6834
|
+
"jobNotReadYet": "Ожидание, пока модель прочитает эту задачу; её вывод появится здесь, когда модель выполнит job_output",
|
|
6835
|
+
"jobOutputError": "Не удалось прочитать вывод",
|
|
6836
|
+
"jobOutputTruncated": "Вывод обрезан",
|
|
6837
|
+
"jobs": "Фоновые задачи",
|
|
6838
|
+
"jobsAutoCollapsed": "Свёрнуто автоматически (много агентов)",
|
|
6839
|
+
"jobsCount": "Фоновых задач: {count}",
|
|
6840
|
+
"jobsCountRunning": "Фоновых задач: {count} · выполняется: {running}",
|
|
6841
|
+
"jobStatusCompleted": "Завершено",
|
|
6842
|
+
"jobStatusFailed": "Ошибка",
|
|
6843
|
+
"jobStatusKilled": "Прервано",
|
|
6844
|
+
"jobStatusRunning": "Выполняется",
|
|
6845
|
+
"jobStatusStopping": "Останавливается",
|
|
6846
|
+
"jobViewOutput": "Посмотреть вывод",
|
|
6847
|
+
"jsonCollapseNode": "Свернуть",
|
|
6848
|
+
"jsonCopyButtonTitle": "Копировать: {action}",
|
|
6849
|
+
"jsonCopyCompactJson": "Копировать как компактный JSON",
|
|
6850
|
+
"jsonCopyFailed": "Не удалось скопировать",
|
|
6851
|
+
"jsonCopyPath": "Копировать путь",
|
|
6852
|
+
"jsonCopyPrettyJson": "Копировать как форматированный JSON",
|
|
6853
|
+
"jsonExpandNode": "Развернуть",
|
|
6854
|
+
"jsonlInvalidRecord": "Эта строка не является корректным JSON",
|
|
6855
|
+
"jsonlRecordRange": "Записи {from}–{to}",
|
|
6856
|
+
"largeFileEmpty": "(пустой файл)",
|
|
6857
|
+
"loadAll": "Загрузить все",
|
|
6858
|
+
"loadAllProgress": "Загрузка: {loaded} / {total}",
|
|
6859
|
+
"loading": "Загрузка…",
|
|
6860
|
+
"loadMore": "Загрузить ещё",
|
|
6861
|
+
"mermaidError": "Не удалось отрисовать Mermaid",
|
|
6862
|
+
"mermaidZoomHint": "Прокрутка — масштаб · перетаскивание — сдвиг · Esc — закрыть",
|
|
6863
|
+
"mermaidZoomIn": "Приблизить",
|
|
6864
|
+
"mermaidZoomOut": "Отдалить",
|
|
6865
|
+
"mermaidZoomReset": "Сбросить",
|
|
6866
|
+
"newFile": "Новый файл",
|
|
6867
|
+
"newFileExists": "Файл с таким именем уже есть",
|
|
6868
|
+
"newFileInvalid": "Недопустимое имя файла",
|
|
6869
|
+
"newFilePlaceholder": "Имя файла",
|
|
6870
|
+
"newFolder": "Новая папка",
|
|
6871
|
+
"newFolderInvalid": "Недопустимое имя папки",
|
|
6872
|
+
"newFolderPlaceholder": "Имя папки",
|
|
6873
|
+
"newTab": "Новая вкладка",
|
|
6874
|
+
"noSession": "Выберите беседу, чтобы пользоваться боковой панелью",
|
|
6875
|
+
"notRepo": "Этот каталог не является репозиторием Git",
|
|
6876
|
+
"openEditor": "Открыть редактор",
|
|
6877
|
+
"openFileNewTab": "Открыть в новой вкладке",
|
|
6878
|
+
"openFileSide": "Открыть сбоку",
|
|
6879
|
+
"openInAppDefault": "Открыть приложением по умолчанию",
|
|
6880
|
+
"openInAppEmpty": "Открыть его нечем",
|
|
6881
|
+
"openInAppFailed": "Не удалось открыть: {path}",
|
|
6882
|
+
"openPlugin": "Открыть",
|
|
6883
|
+
"openWithCursor": "Cursor",
|
|
6884
|
+
"openWithExplorer": "Файловый менеджер",
|
|
6885
|
+
"openWithMenu": "Открыть с помощью",
|
|
6886
|
+
"openWithSettingsAdd": "Добавить",
|
|
6887
|
+
"openWithSettingsCustomDesc": "Название + шаблон URL (подстановка {path}) + признак семейства VSCode; в удалённом режиме открыть удалённый путь могут только редакторы семейства VSCode",
|
|
6888
|
+
"openWithSettingsCustomTitle": "Свои редакторы",
|
|
6889
|
+
"openWithSettingsFamily": "Семейство VSCode",
|
|
6890
|
+
"openWithSettingsFamilyDesc": "Этот редактор понимает формат URL VSCode (поддерживает открытие по SSH)",
|
|
6891
|
+
"openWithSettingsInvalidHint": "Редакторы без названия или с шаблоном без {path} / scheme:// не показываются в меню",
|
|
6892
|
+
"openWithSettingsName": "Название",
|
|
6893
|
+
"openWithSettingsRemove": "Убрать",
|
|
6894
|
+
"openWithSettingsSshDesc": "Пусто — локальная рабочая область; с user@host или псевдонимом SSH редакторы семейства VSCode переключаются на протокол vscode-remote/ssh-remote, а файловый менеджер, Zed и свои редакторы вне семейства VSCode скрываются из меню",
|
|
6895
|
+
"openWithSettingsSshPlaceholder": "user@host или псевдоним SSH",
|
|
6896
|
+
"openWithSettingsSshTitle": "Удалённый узел SSH",
|
|
6897
|
+
"openWithSettingsTemplate": "например cursor://file/{path}",
|
|
6898
|
+
"openWithSshSuffix": " (SSH)",
|
|
6899
|
+
"openWithVscode": "VS Code",
|
|
6900
|
+
"openWithZed": "Zed",
|
|
6901
|
+
"pagedLineRange": "Строки {from}–{to}",
|
|
6902
|
+
"parent": "Родительский каталог",
|
|
6903
|
+
"pinAgentTerminal": "Закрепить терминал агента",
|
|
6904
|
+
"pinOpenWith": "Закрепить в меню",
|
|
6905
|
+
"pinTerminal": "Закрепить терминал",
|
|
6906
|
+
"pinToGlobal": "Закрепить глобально",
|
|
6907
|
+
"pinToWorkspace": "Закрепить в рабочей области",
|
|
6908
|
+
"pluginAgentPersonaDesc": "Персоны системного промпта по рабочим областям или сессиям: одна персона может охватывать несколько каталогов рабочих областей и несколько сессий, сопоставляться точно, по префиксу, по подстроке или по регулярному выражению, побеждает самая специфичная, а одну персону можно отметить как используемую по умолчанию; управление ведётся со страницы настроек и вкладки «Персоны» в беседе, изменения вступают в силу со следующего сообщения",
|
|
6909
|
+
"pluginAgentPersonaName": "dsh-agent-persona Персоны",
|
|
6910
|
+
"pluginAudioDesc": "Встроенный предпросмотр аудио (.mp3/.wav/.flac/.ogg/.m4a/.aac/.opus) для редактора better-sidebar: масштабируемый плеер волновой формы (перемотка по щелчку и перетаскиванию, цикл A-B, переключение каналов), а также живой спектр и спектрограмма всего файла — собственный медиамаршрут поддерживает HTTP Range, поэтому перемотка работает для файлов любого размера",
|
|
6911
|
+
"pluginAudioName": "Предпросмотр аудио",
|
|
6912
|
+
"pluginBetterOverleafDesc": "Вкладка Overleaf для better-sidebar: вход прямо в браузере через CDP (поддерживается сторонний Chromium), список проектов и переключение между ними, локальные зеркала Git в <workspace>/overleaf/, двусторонняя синхронизация Git с откатом на API только для чтения и предпросмотр файлов через рабочую среду боковой панели",
|
|
6913
|
+
"pluginBetterOverleafName": "dsh-better-overleaf Вкладка Overleaf",
|
|
6914
|
+
"pluginBilingualReaderDesc": "Чтение PDF со статьями в боковой панели DSH: встроенная отрисовка PDF, выделите текст, чтобы перевести его с помощью LLM с учётом контекста, при этом полностью изолированно от основной беседы — это только помощь для чтения",
|
|
6915
|
+
"pluginBilingualReaderName": "dsh-bilingual-reader Двуязычное чтение",
|
|
6916
|
+
"pluginCodeNavDesc": "Навигатор предпросмотра кода: определяет язык по типу файла и подсвечивает синтаксис, показывает структуру символов (фильтры по классам, методам и переменным + переход в один клик) и ищет по файлу (подсветка всех совпадений, предыдущее и следующее, с учётом регистра) — перехватывает предпросмотр файлов кода в редакторе better-sidebar",
|
|
6917
|
+
"pluginCodeNavName": "Навигатор предпросмотра кода",
|
|
6918
|
+
"pluginDevGitGraphDesc": "Вкладка с графом коммитов, повторяющая vscode-git-graph: подключается как встроенная вкладка better-sidebar с автоматической привязкой к рабочей области сессии, с полным набором git-команд (checkout/merge/rebase/push/tag/stash), отслеживанием светлой и тёмной темы и просмотром различий по файлу через встроенную вкладку DiffTab; сначала нужно установить dsh-better-sidebar",
|
|
6919
|
+
"pluginDocsPanelDesc": "Глобальные документы в боковой панели DSH: читайте свои заметки в Markdown из любой рабочей области — список файлов, оглавление, открытие в Chrome / VS Code и кнопки копирования; каталог документов настраивается (по умолчанию ~/.dsh/docs)",
|
|
6920
|
+
"pluginDocsPanelName": "dsh-docs-panel Глобальные документы",
|
|
6921
|
+
"pluginDshMemoryDeltaDesc": "Память между сессиями, которая подставляет только изменившееся — ровно ничего, если ничего не изменилось, — с напоминаниями о дате пересмотра, поиском по релевантности и вкладкой в боковой панели.",
|
|
6922
|
+
"pluginDshMemoryDeltaName": "dsh-memory-delta Память",
|
|
6923
|
+
"pluginEgoBrowserDesc": "Браузер агента для DeepSeek Harness: 32 инструмента ego_* управляют настоящим Chromium, а встроенная вкладка боковой панели «ego browser» показывает вживую каждую страницу, которую открывает агент — можно щёлкать, перетаскивать и печатать, чтобы перехватить управление. Вкладка регистрируется автоматически, если доступен better-sidebar, иначе используется всплывающий пузырь",
|
|
6924
|
+
"pluginEgoBrowserName": "ego-browser Браузер агента",
|
|
6925
|
+
"pluginFileTraceDesc": "Записывает каждый файл, который модель читает, пишет или изменяет; сгруппированный список с содержимым и различиями по строкам, режим чтения Markdown и скрытие секретов; отдельное всплывающее окно без better-sidebar",
|
|
6926
|
+
"pluginFileTraceName": "dsh-file-trace Отслеживание файлов",
|
|
6927
|
+
"pluginFlowglassDesc": "Живой граф потока сессии с тремя дорожками для пользователя, ассистента и вызовов инструментов, а также с группами параллельных веток, ветками субагентов, детализацией и живым статусом; регистрирует встроенную вкладку Flowglass, если установлен better-sidebar, и сохраняет отдельную панель как запасной вариант",
|
|
6928
|
+
"pluginFlowglassName": "dsh-flowglass Flowglass",
|
|
6929
|
+
"pluginGitForgeDesc": "Вкладка Git Forge: библиотека аккаунтов GitHub/Gitea (и других площадок) + права по проектам + строгая политика push; токены остаются в локальных секретах (никогда не попадают в контекст модели); инструмент GitForge только для чтения и помощник агента с учётными данными HTTPS",
|
|
6930
|
+
"pluginGitForgeName": "dsh-git-forge Учётные данные Git",
|
|
6931
|
+
"pluginGithubWorkbenchDesc": "Вкладка GitHub Workbench: дерево удалённого репозитория + Issues / Pull requests / Actions с полной поддержкой записи — создание Issue/PR, комментарии, правки, закрытие и переоткрытие, слияние squash·merge·rebase (с усиленным подтверждением), перезапуск и отмена CI; переключатель репозиториев сам выводит доступные репозитории и ищет публичные; без better-sidebar работает как отдельная панель справа",
|
|
6932
|
+
"pluginGithubWorkbenchName": "dsh-github-workbench GitHub Workbench",
|
|
6933
|
+
"pluginIdeGitDesc": "Вкладка Git для better-sidebar: дерево веток (значки ahead/behind, метка рабочего дерева), граф коммитов с фильтрами по тексту, ветке, автору, дате и пути, различия по строкам для каждого файла, список изменений и поле коммита, а также merge, rebase, cherry-pick, reset, stash и теги; разрушительные действия сначала подтверждаются, а удаления и отмены можно обратить. Без better-sidebar плагин регистрируется в правой боковой панели DSH, поэтому работает и сам по себе",
|
|
6934
|
+
"pluginIdeGitName": "dsh-ide-git Окно инструментов Git",
|
|
6935
|
+
"pluginMdExportDesc": "Добавляет кнопку «Экспорт» на панель инструментов Markdown в better-sidebar: одним нажатием текущий .md отрисовывается в самостоятельный HTML (таблицы, блоки кода и диаграммы Mermaid встраиваются, оформление соответствует теме предпросмотра) и сохраняется рядом с .md либо экспортируется в PDF через окно печати",
|
|
6936
|
+
"pluginMdExportName": "Экспорт Markdown",
|
|
6937
|
+
"pluginMnemeDesc": "Движок памяти между сессиями: фоновая консолидация autoDream, сворачивание сессий и профиль пользователя; SQLite и зеркала в Markdown, которые можно править вручную, полностью офлайн и приватно. Регистрирует вкладку «Библиотека памяти» (представления: воспоминания, сущности, статус, настройки), если доступен better-sidebar, и сохраняет отдельную панель боковой панели как запасной вариант",
|
|
6938
|
+
"pluginMnemeName": "dsh-mneme Библиотека памяти",
|
|
6939
|
+
"pluginNotLoaded": "Плагин не загружен; вкладка недоступна:",
|
|
6940
|
+
"pluginOfficeDesc": "Предпросмотр документов Office (.docx / .xlsx / .pptx) для редактора better-sidebar: тяжёлые библиотеки отрисовки Office остаются вне основного пакета",
|
|
6941
|
+
"pluginOfficeName": "Предпросмотр Office",
|
|
6942
|
+
"pluginSentinelDesc": "Пробуждение агента по условиям: датчики файлов, процессов, портов, HTTP, команд и вебхуков будят спящие сессии при выполнении условий; регистрирует вкладку «Sentinel» с общей таблицей наблюдения",
|
|
6943
|
+
"pluginSentinelName": "dsh-sentinel Система пробуждения",
|
|
6944
|
+
"pluginServerDeckDesc": "Панель карточек серверов: по карточке на каждый узел с онлайн-статусом, ОС, временем работы и загрузкой CPU, памяти и диска с задержкой; нажатие на карточку открывает интерактивный терминал xterm.js; импорт ~/.ssh/config в одно нажатие (псевдонимы хостингов Git пропускаются автоматически). Регистрирует встроенную вкладку «Серверы», если установлен better-sidebar, и сохраняет отдельную панель как запасной вариант",
|
|
6945
|
+
"pluginServerDeckName": "dsh-server-deck Панель серверов",
|
|
6946
|
+
"pluginSidebarQaDesc": "Выделить и спросить: выделите текст беседы → задайте вопрос в правой панели → появится отдельная сессия продолжения (❓уточняющий вопрос) в той же рабочей области; быстрая модель без размышлений сжимает основной контекст и подставляет его вместе с цитатой, не прерывая основную беседу. Вопросы вложены друг в друга, продолжаются и архивируются",
|
|
6947
|
+
"pluginSidebarQaName": "dsh-sidebar-qa Выделить и спросить",
|
|
6948
|
+
"pluginSidenoteDesc": "Боковая беседа в духе Codex + заметки к выделенному: ответвите текущую сессию в постоянную боковую панель (архивируется вне списка сессий, несколько экземпляров, команда /side, переживает перезагрузку, модель следует за основной сессией); выделите текст ассистента → нумерованная метка и редактор заметок → чип «N заметок» отправится вместе со следующим сообщением, либо задайте вопрос прямо в боковой беседе",
|
|
6949
|
+
"pluginSidenoteName": "dsh-sidenote Боковая беседа",
|
|
6950
|
+
"pluginSshTunnelDesc": "Вкладка SSH-туннеля: список нескольких узлов + права по проектам + локальные секреты; инструмент SSHManager (стратегии exec/SFTP/сессия); интерактивный терминал по центру и SFTP в две панели",
|
|
6951
|
+
"pluginSshTunnelName": "dsh-ssh-tunnel SSH-туннель",
|
|
6952
|
+
"pluginSuhuangScrollDesc": "Подключите локальный Suhuang Scroll Runtime к настройкам DSH и better-sidebar для конфигурации моделей, проверки соединения и постоянного управления оценкой; нужны Suhuang Scroll Runtime и плагин dsh-better-sidebar",
|
|
6953
|
+
"pluginSuhuangScrollName": "dsh-suhuang-scroll Suhuang Scroll",
|
|
6954
|
+
"pluginTurnOutlineDesc": "Сверните сессию в раунды пользователя (ввод + шаги инструментов + вывод) и нажмите любой шаг, чтобы вернуться к его точному месту в беседе — без вызовов LLM, только чтение",
|
|
6955
|
+
"pluginTurnOutlineName": "dsh-turn-outline Схема хода",
|
|
6956
|
+
"pluginTylinaDesc": "Редактор документов Typst, использующий рабочую область текущей сессии, с WYSIWYG-вёрсткой статей, отчётов, экзаменационных материалов, резюме, диаграмм, плакатов, нот и слайдов с экспортом в PPTX",
|
|
6957
|
+
"pluginTylinaName": "dsh-tylina Редактор документов Typst",
|
|
6958
|
+
"pluginVideoPreviewDesc": "Встроенный предпросмотр видео (.mp4/.webm/.mov/.mkv/.avi и т. д.) для редактора better-sidebar, работающий через отдельный маршрут хоста /video с поддержкой HTTP Range (206) — перемотка работает, а воспроизведение начинается до загрузки файла целиком",
|
|
6959
|
+
"pluginVideoPreviewName": "Предпросмотр видео",
|
|
6960
|
+
"preview": "Предпросмотр",
|
|
6961
|
+
"previewOnlyNotice": "Файл слишком большой ({size}) — доступен только постраничный предпросмотр; правка доступна до {limit}",
|
|
6962
|
+
"previewRowLimit": "Предпросмотр ограничен числом строк: {rows} — остальное скачайте",
|
|
6963
|
+
"produced": "Создано",
|
|
6964
|
+
"pull": "Получить",
|
|
6965
|
+
"pullError": "Не удалось получить",
|
|
6966
|
+
"push": "Отправить",
|
|
6967
|
+
"pushError": "Не удалось отправить",
|
|
6968
|
+
"referenceFile": "@file",
|
|
6969
|
+
"refresh": "Обновить",
|
|
6970
|
+
"refreshUnsavedConfirm": "Файл изменился на диске. Обновление отменит несохранённые правки. Продолжить?",
|
|
6971
|
+
"rename": "Переименовать",
|
|
6972
|
+
"renameInvalid": "Имя не может быть пустым или содержать разделители пути.",
|
|
6973
|
+
"retry": "Повторить",
|
|
6974
|
+
"revealInFileManager": "Показать в файловом менеджере",
|
|
6975
|
+
"revealTabInFileManager": "Показать в файловом менеджере",
|
|
6976
|
+
"revertCommit": "Отменить коммит",
|
|
6977
|
+
"revertDesc": "Создать новый коммит в текущей ветке, отменяющий «{subject}».",
|
|
6978
|
+
"revertTitle": "Отмена коммита",
|
|
6979
|
+
"sandboxRestore": "Вернуть песочницу",
|
|
6980
|
+
"sandboxStatusOn": "Режим песочницы: вкл. · страницы не могут обращаться к данным интерфейса и локальным файлам; вход на сайты и сторонние cookie могут не работать",
|
|
6981
|
+
"sandboxUnlock": "Временно отключить (небезопасно)",
|
|
6982
|
+
"save": "Сохранить",
|
|
6983
|
+
"saveConflict": "Файл изменился на диске после загрузки. Сохранение остановлено; ваши правки остались в редакторе.",
|
|
6984
|
+
"saveConflictReload": "Перезагрузить с диска",
|
|
6985
|
+
"saved": "Сохранено",
|
|
6986
|
+
"saveFailed": "Не удалось сохранить",
|
|
6987
|
+
"searchAll": "все",
|
|
6988
|
+
"searchCurrentMatch": "текущее совпадение",
|
|
6989
|
+
"searchFind": "Найти",
|
|
6990
|
+
"searchGo": "перейти",
|
|
6991
|
+
"searchGoToLine": "Перейти к строке",
|
|
6992
|
+
"searchMatchCase": "учёт регистра",
|
|
6993
|
+
"searchNext": "далее",
|
|
6994
|
+
"searchOnLine": "в строке",
|
|
6995
|
+
"searchPrevious": "назад",
|
|
6996
|
+
"searchRegexp": "регулярное выражение",
|
|
6997
|
+
"searchReplace": "Заменить",
|
|
6998
|
+
"searchReplaceAll": "заменить все",
|
|
6999
|
+
"searchReplacedMatches": "заменено $ совпадений",
|
|
7000
|
+
"searchReplacedMatchOnLine": "заменено совпадений в строке $",
|
|
7001
|
+
"searchWholeWord": "по слову",
|
|
7002
|
+
"settingsBottomTerminalDesc": "Когда нижняя панель впервые за сессию разворачивается, в ней пытается открыться новая вкладка терминала (лимит терминалов по-прежнему действует; включено по умолчанию)",
|
|
7003
|
+
"settingsBottomTerminalTitle": "Автоматически открывать терминал при первом разворачивании нижней панели",
|
|
7004
|
+
"settingsBrowserLoopbackDesc": "Список разрешённых петлевых адресов через запятую (например, localhost:5174 или 127.0.0.1:8080), которые может посещать браузер боковой панели; пустое значение по умолчанию блокирует все локальные адреса. Песочница по-прежнему действует — страницы не могут читать данные интерфейса",
|
|
7005
|
+
"settingsBrowserLoopbackPlaceholder": "например, localhost:5174, 127.0.0.1:8080",
|
|
7006
|
+
"settingsBrowserLoopbackTitle": "Разрешённые локальные адреса",
|
|
7007
|
+
"settingsBrowserSandboxDesc": "При выключенной песочнице любой посещённый сайт работает с тем же источником, что и интерфейс: он может читать данные сессии и действовать от имени вашей сессии. Включайте только для полностью доверенных сайтов",
|
|
7008
|
+
"settingsBrowserSandboxTitle": "Отключать песочницу браузера (небезопасно)",
|
|
7009
|
+
"settingsConflict": "Настройка изменилась в другом окне — повторите попытку",
|
|
7010
|
+
"settingsCustomCssPlaceholder": "/* например, переключите нижнюю панель на моноширинный шрифт */n[data-dsh-bottom-panel] {n font-family: var(--dsw-font-mono);n}",
|
|
7011
|
+
"settingsCustomCssTitle": "Свой CSS",
|
|
7012
|
+
"settingsDone": "Готово",
|
|
7013
|
+
"settingsEditorGitGutterDesc": "Подкрашивать колонку номеров строк редактора кода для незакоммиченных изменений и показывать при наведении авторство этой строки (автор, время и сводку коммита); в выключенном режиме все метки скрыты",
|
|
7014
|
+
"settingsEditorGitGutterTitle": "Метки незакоммиченных изменений в редакторе",
|
|
7015
|
+
"settingsFontFamilyDesc": "Свой шрифт терминала (стек CSS font-family вида «JetBrains Mono», monospace; оставьте пустым, чтобы использовать моноширинный шрифт темы)",
|
|
7016
|
+
"settingsFontFamilyPlaceholder": "«JetBrains Mono», monospace",
|
|
7017
|
+
"settingsFontFamilyTitle": "Шрифт терминала",
|
|
7018
|
+
"settingsFontSizeDesc": "Размер шрифта терминала в px (9–32, по умолчанию 13)",
|
|
7019
|
+
"settingsFontSizeTitle": "Размер шрифта терминала",
|
|
7020
|
+
"settingsGeneralTitle": "Общие",
|
|
7021
|
+
"settingsHtmlDefaultUnsafeDesc": "Если включено, каждый новый предпросмотр HTML открывается без песочницы (тот же источник, что и у интерфейса — он может читать файлы сессии и вызывать внутренние API); в строке состояния по-прежнему есть возврат в одно нажатие",
|
|
7022
|
+
"settingsHtmlDefaultUnsafeTitle": "Открывать предпросмотр HTML без песочницы по умолчанию (небезопасно)",
|
|
7023
|
+
"settingsHtmlSandboxDesc": "При выключенной песочнице предпросматриваемый HTML работает с тем же источником, что и интерфейс: он может читать файлы сессии, локальное хранилище и вызывать внутренние API. Включайте только для полностью доверенных файлов",
|
|
7024
|
+
"settingsHtmlSandboxTitle": "Отключать песочницу предпросмотра HTML (небезопасно)",
|
|
7025
|
+
"settingsIntro": "Настройте, что показывает боковая карточка и как она себя ведёт",
|
|
7026
|
+
"settingsJobsDesc": "Когда для текущего диалога появляется новая фоновая задача, страница «Задачи» создаётся в боковой карточке и помечается точкой непрочитанного (срабатывает на каждой новой задаче); боковая карточка, уже развёрнутая на другой странице, остаётся нетронутой и не переключается — нажмите на точку, чтобы перейти туда; на широких экранах боковая карточка тоже разворачивается, а узкие полноэкранные панели принудительно не открываются; выключите, чтобы не создавать её автоматически",
|
|
7027
|
+
"settingsJobsTitle": "Автоматически активировать страницу «Задачи» при новой фоновой задаче",
|
|
7028
|
+
"settingsMobileNoAutoOpenDesc": "На телефоне или узком экране новый субагент или фоновая задача больше не переключают на страницу «Задачи» сами (её по-прежнему можно открыть вручную)",
|
|
7029
|
+
"settingsMobileNoAutoOpenTitle": "Не открывать автоматически на узких экранах",
|
|
7030
|
+
"settingsMobileTitle": "Мобильный",
|
|
7031
|
+
"settingsMobileTreeDesc": "На телефоне или узком экране страница «Задачи» открывается обычным деревом вместо графа workflow; переключатель внутри страницы всё равно меняет вид на лету",
|
|
7032
|
+
"settingsMobileTreeTitle": "По умолчанию показывать страницу «Задачи» деревом",
|
|
7033
|
+
"settingsNav": "Боковая карточка",
|
|
7034
|
+
"settingsOpenToolsDesc": "Если включено, модель может сама открывать файлы, папки и страницы HTTP(S) в боковой панели через инструмент sidebar_open (по умолчанию выключено)",
|
|
7035
|
+
"settingsOpenToolsTitle": "Добавлять инструмент sidebar_open для модели",
|
|
7036
|
+
"settingsOpenWithPluginDesc": "По умолчанию собственные цели плагина (файловый менеджер / VS Code / Cursor / Zed / пользовательские редакторы, удалённые хосты по SSH) показываются только тогда, когда хост не сообщает о локальном связанном приложении; включите, чтобы оставить и те, и другие рядом",
|
|
7037
|
+
"settingsOpenWithPluginTitle": "Всегда показывать собственные цели «Открыть с помощью» плагина",
|
|
7038
|
+
"settingsPopup": "Настройки функции",
|
|
7039
|
+
"settingsPopupDesc": "Настройте связанные параметры для {feature}",
|
|
7040
|
+
"settingsSaveFailed": "Не удалось сохранить",
|
|
7041
|
+
"settingsShellArgsDesc": "Явные аргументы оболочки, разделённые пробелом; если они заданы, полностью заменяют значения по умолчанию (тот же контракт, что и у yaml shellArgs)",
|
|
7042
|
+
"settingsShellArgsPlaceholder": "например, -l (пусто = по умолчанию)",
|
|
7043
|
+
"settingsShellArgsTitle": "Аргументы оболочки",
|
|
7044
|
+
"settingsShellDesc": "Оболочка, запускаемая для терминалов интерфейса и модели (полный путь или просто имя исполняемого файла). Пустое значение оставляет прежний порядок: yaml config.shell → $SHELL / оболочка входа / Windows powershell.exe. Применяется к терминалам, открытым позже",
|
|
7045
|
+
"settingsShellPlaceholder": "например, /bin/zsh (пусто = авто)",
|
|
7046
|
+
"settingsShellTitle": "Путь к оболочке",
|
|
7047
|
+
"settingsSubagentDesc": "Когда текущий диалог порождает нового субагента, страница «Задачи» создаётся в боковой карточке и помечается точкой непрочитанного; боковая карточка, уже развёрнутая на другой странице, остаётся нетронутой и не переключается — нажмите на точку, чтобы перейти туда; на широких экранах боковая карточка тоже разворачивается, а узкие полноэкранные панели принудительно не открываются; выключите, чтобы не создавать её автоматически",
|
|
7048
|
+
"settingsSubagentTitle": "Автоматически активировать страницу «Задачи» при появлении субагента",
|
|
7049
|
+
"settingsTabsTitle": "Содержимое боковой панели",
|
|
7050
|
+
"settingsToolsDesc": "Если включено, модель может создавать терминалы боковой панели и управлять ими через восемь инструментов terminal_* (по умолчанию выключено)",
|
|
7051
|
+
"settingsToolsTitle": "Добавлять инструменты terminal_* для модели",
|
|
7052
|
+
"settingsViewerCatchAll": "Любой файл",
|
|
7053
|
+
"settingsViewersTitle": "Просмотр файлов",
|
|
7054
|
+
"settingsViewModeDesc": "Как страница «Задачи» отображается при открытии (переключатель внутри страницы всё равно меняет вид на лету)",
|
|
7055
|
+
"settingsViewModeGraph": "Граф workflow",
|
|
7056
|
+
"settingsViewModeGraphDesc": "Слойный граф узлов с масштабированием и перемещением",
|
|
7057
|
+
"settingsViewModeTitle": "Вид страницы «Задачи» по умолчанию",
|
|
7058
|
+
"settingsViewModeTree": "Дерево",
|
|
7059
|
+
"settingsViewModeTreeDesc": "Классическое дерево с отступами, управляется с клавиатуры",
|
|
7060
|
+
"showInFolder": "Показать в папке",
|
|
7061
|
+
"sideChat": "Боковой чат (бета)",
|
|
7062
|
+
"sideChatArchive": "Архивировать этот побочный диалог (найдёте его снова через «Показать архивные» в списке сессий)",
|
|
7063
|
+
"sideChatArchiveRunning": "Это обсуждение выполняется — остановите его перед архивированием",
|
|
7064
|
+
"sideChatBlockCollapse": "Свернуть",
|
|
7065
|
+
"sideChatBlockCollapseAria": "Свернуть",
|
|
7066
|
+
"sideChatBlockCommandLine": "Строка команды {line}",
|
|
7067
|
+
"sideChatBlockDone": "Готово",
|
|
7068
|
+
"sideChatBlockExitCode": "Код выхода {code}",
|
|
7069
|
+
"sideChatBlockExpand": "Показать скрытые строки: {hidden}",
|
|
7070
|
+
"sideChatBlockExpandAria": "Показать ещё строк: {hidden}",
|
|
7071
|
+
"sideChatBlockFailed": "Ошибка",
|
|
7072
|
+
"sideChatBlockNoExitCode": "Завершился без кода выхода",
|
|
7073
|
+
"sideChatBlockNoOutput": "(нет вывода)",
|
|
7074
|
+
"sideChatBlockRunning": "Выполняется",
|
|
7075
|
+
"sideChatBlockSignal": "Убит сигналом: {signal}",
|
|
7076
|
+
"sideChatBlockWindow": "Строк показано: {shown} из {total}",
|
|
7077
|
+
"sideChatCancelTitle": "Прервать выполняющийся ход (работа в очереди сохраняется)",
|
|
7078
|
+
"sideChatComposerPlaceholder": "Задайте уточняющий вопрос…",
|
|
7079
|
+
"sideChatConnConnecting": "Переподключение…",
|
|
7080
|
+
"sideChatConnDisconnected": "Соединение потеряно, переподключиться",
|
|
7081
|
+
"sideChatConnReconnectAction": "Переподключиться",
|
|
7082
|
+
"sideChatConnRecovered": "Соединение восстановлено",
|
|
7083
|
+
"sideChatConnRestartAction": "Перезапустить соединение",
|
|
7084
|
+
"sideChatCreating": "Создаём побочный диалог…",
|
|
7085
|
+
"sideChatDequeue": "Убрать из очереди",
|
|
7086
|
+
"sideChatEmpty": "Побочных диалогов нет",
|
|
7087
|
+
"sideChatEmptyDesc": "Каждый побочный диалог — отдельная вкладка в полосе вкладок: он наследует контекст текущей сессии и никогда не попадает в основной диалог",
|
|
7088
|
+
"sideChatError": "Ошибка бокового чата: {message}",
|
|
7089
|
+
"sideChatFirstPlaceholder": "Задайте первый вопрос — контекст наследуется…",
|
|
7090
|
+
"sideChatInjection": "Контекст внедрён",
|
|
7091
|
+
"sideChatModel": "Модель",
|
|
7092
|
+
"sideChatModelInherit": "Наследовать модель основного диалога (каталог моделей недоступен)",
|
|
7093
|
+
"sideChatNew": "Новое обсуждение",
|
|
7094
|
+
"sideChatNoTurn": "Сохранение доступно после первого завершённого хода",
|
|
7095
|
+
"sideChatPendingDrop": "Последний без ответа уточняющий вопрос не попадёт в сохранённую сессию",
|
|
7096
|
+
"sideChatQueued": "В очереди",
|
|
7097
|
+
"sideChatReasoning": "Глубина размышления",
|
|
7098
|
+
"sideChatRetry": "Повторить",
|
|
7099
|
+
"sideChatRunError": "Запуск не удался: {message}",
|
|
7100
|
+
"sideChatSave": "Сохранить как новую сессию",
|
|
7101
|
+
"sideChatSaved": "Сохранено как новая сессия",
|
|
7102
|
+
"sideChatSaveTitle": "Перевести это обсуждение в сессию верхнего уровня в основном списке сессий",
|
|
7103
|
+
"sideChatSend": "Отправить",
|
|
7104
|
+
"sideChatSending": "Отправляем…",
|
|
7105
|
+
"sideChatThink": "Размышление",
|
|
7106
|
+
"sideChatThinking": "Погружаемся…",
|
|
7107
|
+
"sideChatThreads": "Сменить обсуждение / новое",
|
|
7108
|
+
"sideChatTurnUsage": "Ввод {input} ток · Вывод {output} ток",
|
|
7109
|
+
"sideChatUntitled": "Новое обсуждение",
|
|
7110
|
+
"sort": "Сортировка",
|
|
7111
|
+
"sortByName": "Сортировать по имени",
|
|
7112
|
+
"sortByType": "Сортировать по типу",
|
|
7113
|
+
"sortFoldersFirst": "Сначала папки",
|
|
7114
|
+
"stage": "Добавить в индекс",
|
|
7115
|
+
"stageAll": "Добавить всё в индекс",
|
|
7116
|
+
"staged": "В индексе",
|
|
7117
|
+
"statusTruncated": "Слишком много изменений: показаны первые 2 000 записей",
|
|
7118
|
+
"subagent": "Задачи",
|
|
7119
|
+
"subagentCount": "Субагентов: {count}",
|
|
7120
|
+
"subagentCountRunning": "Субагентов: {count} · выполняется: {running}",
|
|
7121
|
+
"subagentEmpty": "Субагентов нет",
|
|
7122
|
+
"subagentEmptyDesc": "Здесь появятся субагенты, созданные основным агентом",
|
|
7123
|
+
"subagentInactive": "Неактивен",
|
|
7124
|
+
"subagentMainAgent": "Основной агент",
|
|
7125
|
+
"subagentModeContinuable": "Можно продолжить",
|
|
7126
|
+
"subagentModeOneShot": "Одноразовый",
|
|
7127
|
+
"subagentThinking": "Думаем…",
|
|
7128
|
+
"suggestCommitEmpty": "Нет изменений для описания",
|
|
7129
|
+
"suggestCommitError": "Не удалось составить сообщение коммита",
|
|
7130
|
+
"tabUnread": "Появилась новая страница, которую вы не открывали",
|
|
7131
|
+
"tasksFoldCollapse": "Свернуть завершённые узлы",
|
|
7132
|
+
"tasksFoldCompleted": "✓ Завершено: {count}",
|
|
7133
|
+
"tasksFoldExpand": "Развернуть завершённые узлы",
|
|
7134
|
+
"tasksFoldExpandShort": "Развернуть",
|
|
7135
|
+
"tasksFoldIdle": "Простаивающих: {count}",
|
|
7136
|
+
"tasksFoldIdleGroup": "Ожидающих: {count}",
|
|
7137
|
+
"tasksFoldOne": "Свернуть в завершённые",
|
|
7138
|
+
"tasksKindSubagent": "Субагент",
|
|
7139
|
+
"tasksKindTeammate": "Участник команды",
|
|
7140
|
+
"tasksKindWorkflow": "Workflow",
|
|
7141
|
+
"tasksNodeDetail": "Подробности узла",
|
|
7142
|
+
"tasksNodeDuration": "Длительность",
|
|
7143
|
+
"tasksNodeJump": "Открыть журнал",
|
|
7144
|
+
"tasksNodeMode": "Режим",
|
|
7145
|
+
"tasksNodeModel": "Модель",
|
|
7146
|
+
"tasksNodeOpenMain": "Открыть в главном окне",
|
|
7147
|
+
"tasksNodeState": "Состояние",
|
|
7148
|
+
"tasksNodeTasks": "Общие задачи",
|
|
7149
|
+
"tasksNodeTeamRole": "Роль в команде",
|
|
7150
|
+
"tasksNodeTokens": "Токены",
|
|
7151
|
+
"tasksStateDone": "Готово",
|
|
7152
|
+
"tasksStateError": "Ошибка",
|
|
7153
|
+
"tasksStateIdle": "Простаивает",
|
|
7154
|
+
"tasksStateProvisioning": "Подготовка",
|
|
7155
|
+
"tasksStateRunning": "Выполняется",
|
|
7156
|
+
"tasksTreeCollapseAll": "Свернуть всё",
|
|
7157
|
+
"tasksTreeCollapseRow": "Свернуть потомков",
|
|
7158
|
+
"tasksTreeExpandAll": "Развернуть всё",
|
|
7159
|
+
"tasksTreeExpandRow": "Развернуть потомков",
|
|
7160
|
+
"tasksViewGraph": "Граф workflow",
|
|
7161
|
+
"tasksViewSwitchToGraph": "Переключиться на граф workflow",
|
|
7162
|
+
"tasksViewSwitchToTree": "Переключиться на дерево",
|
|
7163
|
+
"tasksViewTree": "Дерево",
|
|
7164
|
+
"tasksZoomFit": "По размеру холста",
|
|
7165
|
+
"tasksZoomIn": "Приблизить",
|
|
7166
|
+
"tasksZoomOut": "Отдалить",
|
|
7167
|
+
"taskWindowCreate": "Новая задача",
|
|
7168
|
+
"taskWindowDetail": "Подробности задачи",
|
|
7169
|
+
"teamBoard": "Доска командных задач",
|
|
7170
|
+
"teamChip": "Команда: участников — {members}, задач — {tasks}",
|
|
7171
|
+
"teamFilterAll": "Все",
|
|
7172
|
+
"teamTaskActions": "Действия с задачей",
|
|
7173
|
+
"teamTaskBlocked": "Заблокирована",
|
|
7174
|
+
"teamTaskBlockedBy": "Блокирует",
|
|
7175
|
+
"teamTaskCancel": "Отмена",
|
|
7176
|
+
"teamTaskClaim": "Взять",
|
|
7177
|
+
"teamTaskComplete": "Завершить",
|
|
7178
|
+
"teamTaskCompleted": "Завершена",
|
|
7179
|
+
"teamTaskConflict": "Задача изменилась в другом месте; данные обновлены",
|
|
7180
|
+
"teamTaskCreate": "Новая задача",
|
|
7181
|
+
"teamTaskDelete": "Удалить",
|
|
7182
|
+
"teamTaskDeleteConfirm": "Подтвердите удаление",
|
|
7183
|
+
"teamTaskDeleted": "Удалена",
|
|
7184
|
+
"teamTaskDescription": "Описание",
|
|
7185
|
+
"teamTaskDescriptionPlaceholder": "Дополнительный контекст (необязательно)",
|
|
7186
|
+
"teamTaskDetail": "Подробности задачи",
|
|
7187
|
+
"teamTaskEdit": "Изменить",
|
|
7188
|
+
"teamTaskError": "Операция не удалась: {message}",
|
|
7189
|
+
"teamTaskInProgress": "В работе",
|
|
7190
|
+
"teamTaskNoDescription": "Описания пока нет — нажмите «Изменить», чтобы добавить его",
|
|
7191
|
+
"teamTaskOwner": "Ответственный",
|
|
7192
|
+
"teamTaskPending": "В ожидании",
|
|
7193
|
+
"teamTaskReopen": "Переоткрыть",
|
|
7194
|
+
"teamTaskSave": "Сохранить",
|
|
7195
|
+
"teamTasksEmpty": "Общих задач пока нет",
|
|
7196
|
+
"teamTaskSubject": "Тема",
|
|
7197
|
+
"teamTaskSubjectPlaceholder": "Одна строка с описанием работы",
|
|
7198
|
+
"teamTaskUnowned": "Без ответственного",
|
|
7199
|
+
"terminal": "Терминал",
|
|
7200
|
+
"terminalConnectFailed": "Терминал несколько раз не смог подключиться",
|
|
7201
|
+
"terminalDepsFailed": "Не удалось загрузить зависимость терминала node-pty",
|
|
7202
|
+
"terminalDepsHint": "Выполните команду ниже в терминале или cmd на машине DSH, чтобы устранить проблему, затем повторите попытку (node-pty остаётся в паре с версией ядра DSH):",
|
|
7203
|
+
"terminalDepsProfile": " (определённый профиль: {profile})",
|
|
7204
|
+
"terminalError": "Ошибка подключения к терминалу",
|
|
7205
|
+
"terminalGone": "Этого терминала больше нет — запустите новый",
|
|
7206
|
+
"terminalNew": "Новый терминал",
|
|
7207
|
+
"terminalRetry": "Повторить",
|
|
7208
|
+
"terminalShellNotFound": "Настроенная оболочка не найдена: {name} — проверьте путь к оболочке в разделе «Настройки» → «Боковая карточка» → «Терминал»",
|
|
7209
|
+
"terminalSkipWait": "Не ждать",
|
|
7210
|
+
"terminalUnavailable": "Хост не поддерживает терминалы",
|
|
7211
|
+
"terminalWaitBanner": "Агент ждёт {needle}",
|
|
7212
|
+
"timeHoursAgo": "{n} ч назад",
|
|
7213
|
+
"timeJustNow": "только что",
|
|
7214
|
+
"timeMinutesAgo": "{n} мин назад",
|
|
7215
|
+
"timeYesterday": "вчера",
|
|
7216
|
+
"toc": "Содержание",
|
|
7217
|
+
"unpinOpenWith": "Открепить",
|
|
7218
|
+
"unpinTerminal": "Открепить",
|
|
7219
|
+
"unsaved": "Не сохранено",
|
|
7220
|
+
"unstage": "Убрать из индекса",
|
|
7221
|
+
"unstageAll": "Убрать всё из индекса",
|
|
7222
|
+
"unstaged": "Вне индекса",
|
|
7223
|
+
"uploadCancelled": "Загрузка отменена",
|
|
7224
|
+
"uploadDone": "Загружено файлов: {count}",
|
|
7225
|
+
"uploadDropChat": "Перетащите в чат, чтобы добавить изображения",
|
|
7226
|
+
"uploadDropHint": "Перетащите сюда файлы или папки, чтобы загрузить их",
|
|
7227
|
+
"uploadFailed": "Не удалось загрузить: {error}",
|
|
7228
|
+
"uploadFailedUnknown": "Неизвестная ошибка",
|
|
7229
|
+
"uploadFiles": "Загрузить файлы",
|
|
7230
|
+
"uploadFolder": "Загрузить папку",
|
|
7231
|
+
"uploadHere": "Загрузить сюда",
|
|
7232
|
+
"uploadingTo": "Загружаем в {dir}…",
|
|
7233
|
+
"uploadProgress": "Загрузка {done}/{total}: {name}",
|
|
7234
|
+
"uploadTo": "Загрузить в {dir}",
|
|
7235
|
+
"uploadTooLarge": "Файл слишком большой (превышен предел загрузки)",
|
|
7236
|
+
"viewCommitDiff": "Посмотреть изменения коммита",
|
|
7237
|
+
"viewerCode": "Код",
|
|
7238
|
+
"viewerHtml": "HTML",
|
|
7239
|
+
"viewerJsonl": "JSONL",
|
|
7240
|
+
"viewerMarkdown": "Markdown",
|
|
7241
|
+
"workflowCancelled": "Отменено",
|
|
7242
|
+
"workflowCompleted": "Завершено",
|
|
7243
|
+
"workflowFailed": "Ошибка",
|
|
7244
|
+
"workflowMembers": "Участников: {done}/{total}",
|
|
7245
|
+
"workflowPhaseUnnamed": "Фаза без имени",
|
|
7246
|
+
"workflowRun": "Workflow",
|
|
7247
|
+
"workflowRunning": "Выполняется",
|
|
7248
|
+
"worktree": "Рабочее дерево",
|
|
7249
|
+
"zipDownload": "Упаковать и скачать",
|
|
7250
|
+
"zipDownloadCount": "Упаковать и скачать (элементов: {count})",
|
|
7251
|
+
"zipFailed": "Не удалось создать архив: {message}"
|
|
7252
|
+
},
|
|
7253
|
+
"dsh-cron": {
|
|
7254
|
+
"actions.approve": "Одобрить",
|
|
7255
|
+
"actions.archive": "Архив",
|
|
7256
|
+
"actions.archiveTitle": "Архив выполнений и журналы",
|
|
7257
|
+
"actions.create": "Создать",
|
|
7258
|
+
"actions.createWithDsh": "💬 Создать с помощью DSH",
|
|
7259
|
+
"actions.delete": "Удалить задачу",
|
|
7260
|
+
"actions.dryRun": "Пробный запуск",
|
|
7261
|
+
"actions.dryRunTitle": "Пробный запуск (тестовое выполнение без побочных эффектов и уведомлений)",
|
|
7262
|
+
"actions.duplicate": "Дублировать задачу",
|
|
7263
|
+
"actions.edit": "Изменить / Подробнее",
|
|
7264
|
+
"actions.pause": "Пауза",
|
|
7265
|
+
"actions.reject": "Отклонить",
|
|
7266
|
+
"actions.resume": "Возобновить",
|
|
7267
|
+
"actions.runNow": "Запустить сейчас",
|
|
7268
|
+
"actions.runNowShort": "Запустить",
|
|
7269
|
+
"actions.settings": "Уведомления и каналы",
|
|
7270
|
+
"actions.setupManually": "✏️ Настроить вручную",
|
|
7271
|
+
"actions.tuneWithDsh": "Настроить с помощью DSH",
|
|
7272
|
+
"adaptive.backoff": "с задержкой",
|
|
7273
|
+
"adaptive.badge": "Адаптивный",
|
|
7274
|
+
"adaptive.idle": "простой",
|
|
7275
|
+
"approval.approved": "Одобрено",
|
|
7276
|
+
"approval.rejected": "Отклонено",
|
|
7277
|
+
"approval.waiting": "Ожидает одобрения человека",
|
|
7278
|
+
"archive.close": "Закрыть",
|
|
7279
|
+
"archive.empty": "Для этой задачи пока нет архивных запусков.",
|
|
7280
|
+
"archive.loadMore": "Загрузить ещё ({shown} из {total})",
|
|
7281
|
+
"archive.title": "📜 Архив выполнений",
|
|
7282
|
+
"archive.totalRuns": "Всего запусков: {total}",
|
|
7283
|
+
"banner.loadError": "Не удалось загрузить задачи: {error}",
|
|
7284
|
+
"banner.retry": "Повторить",
|
|
7285
|
+
"chainGraph.close": "Закрыть",
|
|
7286
|
+
"chainGraph.decisionNode": "Узел решения",
|
|
7287
|
+
"chainGraph.modalTitle": "Визуальный граф цепочки и контрольных точек",
|
|
7288
|
+
"chainGraph.noNodes": "Для этой задачи или запуска цепочек шагов не найдено.",
|
|
7289
|
+
"chainGraph.retryStep": "Повторить шаг",
|
|
7290
|
+
"chainGraph.stepFailed": "Ошибка",
|
|
7291
|
+
"chainGraph.stepPending": "В ожидании",
|
|
7292
|
+
"chainGraph.stepSkipped": "Пропущено",
|
|
7293
|
+
"chainGraph.stepSuccess": "Успешно",
|
|
7294
|
+
"chainGraph.viewGraph": "Граф цепочки",
|
|
7295
|
+
"chip.title": "Задачи по расписанию (Cron)",
|
|
7296
|
+
"confirm.delete": "Удалить эту задачу?",
|
|
7297
|
+
"digest.buttonLabel": "Сводка",
|
|
7298
|
+
"digest.buttonTitle": "Показать аналитику автоматизации и сводку расходов за 7 или 30 дней",
|
|
7299
|
+
"digest.copied": "Скопировано.",
|
|
7300
|
+
"digest.copyMarkdown": "Копировать Markdown",
|
|
7301
|
+
"digest.cost": "Расход (USD)",
|
|
7302
|
+
"digest.executions": "Запуски",
|
|
7303
|
+
"digest.expensiveTitle": "Лидеры по потреблению ресурсов",
|
|
7304
|
+
"digest.fleet": "Автоматизации",
|
|
7305
|
+
"digest.modalTitle": "Сводка по автоматизации и расходам",
|
|
7306
|
+
"digest.period30": "Последние 30 дней",
|
|
7307
|
+
"digest.period7": "Последние 7 дней",
|
|
7308
|
+
"digest.sendTelegram": "Отправить в Telegram",
|
|
7309
|
+
"digest.sentSuccess": "Успешно отправлено в Telegram.",
|
|
7310
|
+
"digest.tokens": "Токены",
|
|
7311
|
+
"digest.unstableTitle": "Самые нестабильные автоматизации",
|
|
7312
|
+
"dryRun.close": "Закрыть",
|
|
7313
|
+
"dryRun.duration": "Длительность",
|
|
7314
|
+
"dryRun.output": "Имитация вывода",
|
|
7315
|
+
"dryRun.preflight": "Предварительная проверка",
|
|
7316
|
+
"dryRun.status": "Статус имитации",
|
|
7317
|
+
"dryRun.task": "Задача",
|
|
7318
|
+
"dryRun.title": "🧪 Имитация пробного запуска",
|
|
7319
|
+
"dsh.descLabel": "Опишите задачу и желаемую частоту:",
|
|
7320
|
+
"dsh.launchError": "Не удалось запустить: {error}",
|
|
7321
|
+
"dsh.modalTitle": "Запланируйте задачу с помощью агента DSH",
|
|
7322
|
+
"dsh.placeholder": "Например: каждые 2 часа проверять свободное место на диске и упавшие службы systemd и сообщать только о проблемах…",
|
|
7323
|
+
"dsh.sendHint": "Ctrl+Enter — отправить",
|
|
7324
|
+
"dsh.sendTitle": "Отправить агенту",
|
|
7325
|
+
"dsh.startFailed": "Не удалось открыть диалог с агентом: {error}",
|
|
7326
|
+
"duplicate.done": "Копия создана и на паузе: проверьте её расписание перед возобновлением.",
|
|
7327
|
+
"duplicate.failed": "Не удалось дублировать задачу: {error}",
|
|
7328
|
+
"duplicate.oneShotHint": "Копия одноразовая и на паузе — исходное время, скорее всего, уже прошло, поэтому задайте новое время перед возобновлением.",
|
|
7329
|
+
"filters.any": "Любой",
|
|
7330
|
+
"filters.channel": "Канал",
|
|
7331
|
+
"filters.empty": "Нет задач, соответствующих текущим фильтрам.",
|
|
7332
|
+
"filters.model": "Модель",
|
|
7333
|
+
"filters.reset": "Сбросить фильтры",
|
|
7334
|
+
"filters.showing": "Показано {shown} из {total}",
|
|
7335
|
+
"filters.title": "Фильтры",
|
|
7336
|
+
"filters.type": "Тип",
|
|
7337
|
+
"form.adaptiveEnabled": "Адаптивный опрос",
|
|
7338
|
+
"form.adaptiveHint": "Экспоненциальная задержка, когда изменения не обнаружены",
|
|
7339
|
+
"form.agentPresetHint": "Пресет агента из dsh-agent-presets (например, standard, minimal, cordis, ptc). Подключает инструменты рабочей области и программирования.",
|
|
7340
|
+
"form.agentPresetLabel": "Пресет агента",
|
|
7341
|
+
"form.agentPresetPlaceholder": "standard (оставьте пустым для настроенного по умолчанию)",
|
|
7342
|
+
"form.autoDiagnoseLabel": "Автодиагностика сбоев агентом ИИ",
|
|
7343
|
+
"form.autoHealHint": "Автоматически диагностировать сбой и применять безопасные исправления (не более 1 автоисправления в день)",
|
|
7344
|
+
"form.autoHealLabel": "Автономный самоисцеляющий доктор",
|
|
7345
|
+
"form.chainingTitle": "Цепочки и оркестрация по DAG",
|
|
7346
|
+
"form.channelBark": "Bark",
|
|
7347
|
+
"form.channelDiscord": "Discord",
|
|
7348
|
+
"form.channelGitea": "Задача Gitea",
|
|
7349
|
+
"form.channelKanban": "Карточка dsh-kanban",
|
|
7350
|
+
"form.channelNtfy": "ntfy",
|
|
7351
|
+
"form.channelPushplus": "PushPlus",
|
|
7352
|
+
"form.channelsHint": "Выберите каналы для этой задачи. Явный выбор имеет приоритет над переключателем Telegram выше; если ничего не отмечено, действует он.",
|
|
7353
|
+
"form.channelSlack": "Slack",
|
|
7354
|
+
"form.channelsTitle": "Каналы доставки",
|
|
7355
|
+
"form.channelTelegram": "Telegram",
|
|
7356
|
+
"form.channelTts": "Голос (dsh-tts)",
|
|
7357
|
+
"form.concurrencyGroupLabel": "Группа параллельности",
|
|
7358
|
+
"form.cwdLabel": "Рабочий каталог (необязательно)",
|
|
7359
|
+
"form.dependsOnHint": "Ждать эти ID задач перед выполнением (барьер Fan-In)",
|
|
7360
|
+
"form.dependsOnLabel": "Зависимости (dependsOn)",
|
|
7361
|
+
"form.dockerImageLabel": "Образ контейнера",
|
|
7362
|
+
"form.elseTaskHint": "Задача, которую нужно запустить, если не сработало ни одно правило условной ветки",
|
|
7363
|
+
"form.elseTaskLabel": "Резервная задача по умолчанию (elseTask)",
|
|
7364
|
+
"form.elseTaskPlaceholder": "например, task-fallback",
|
|
7365
|
+
"form.envHint": "Применяется только к средам выполнения без LLM. Не храните здесь секреты.",
|
|
7366
|
+
"form.envLabel": "Переменные окружения (KEY=VALUE в каждой строке)",
|
|
7367
|
+
"form.envPlaceholder": "NODE_ENV=production\nTZ=Europe/Berlin",
|
|
7368
|
+
"form.fallbackModelHint": "Если запуск на указанной выше модели завершится с ошибкой, он один раз повторяется на этой модели. В расход входят обе попытки.",
|
|
7369
|
+
"form.fallbackModelLabel": "Резервная модель (необязательно)",
|
|
7370
|
+
"form.fallbackModelPlaceholder": "например, deepseek-reasoner",
|
|
7371
|
+
"form.gracePeriodLabel": "Льготный период пульса (секунды)",
|
|
7372
|
+
"form.heartbeatIntervalLabel": "Дедлайн пульса (секунды, 0 = отключено)",
|
|
7373
|
+
"form.httpBodyLabel": "Тело запроса (необязательно)",
|
|
7374
|
+
"form.httpHeadersLabel": "Заголовки (JSON, необязательно)",
|
|
7375
|
+
"form.httpMethodLabel": "Метод HTTP",
|
|
7376
|
+
"form.httpUrlLabel": "URL",
|
|
7377
|
+
"form.inspectOnFailureHint": "После неудачного запуска модель читает промпт, ошибку и вывод, а диагноз с предлагаемым изменением промпта сохраняется вместе с запуском. Ничего не применяется автоматически.",
|
|
7378
|
+
"form.inspectOnFailureLabel": "Диагностика сбоев моделью",
|
|
7379
|
+
"form.joinPolicyAll": "Все предварительные условия (all_success)",
|
|
7380
|
+
"form.joinPolicyAny": "Любое из предварительных условий (any_success)",
|
|
7381
|
+
"form.joinPolicyLabel": "Политика объединения",
|
|
7382
|
+
"form.kanbanAlways": "Создавать карточку при каждом завершении (Done / Backlog)",
|
|
7383
|
+
"form.kanbanLabel": "Создание карточек Kanban (dsh-kanban)",
|
|
7384
|
+
"form.kanbanNone": "Не создавать карточки (отключено)",
|
|
7385
|
+
"form.kanbanOnFailure": "Создавать карточку при сбое (в Backlog)",
|
|
7386
|
+
"form.keepWorktreeLabel": "Сохранять рабочее дерево после запуска",
|
|
7387
|
+
"form.misfireCatchUp": "Выполнить один раз с опозданием и зафиксировать разрыв (catchUpAll)",
|
|
7388
|
+
"form.misfireLabel": "При пропущенном запуске (после простоя)",
|
|
7389
|
+
"form.misfireRunOnce": "Выполнить один раз с опозданием (runOnce)",
|
|
7390
|
+
"form.misfireSkip": "Пропустить запуск (skip)",
|
|
7391
|
+
"form.modelDefault": "По умолчанию",
|
|
7392
|
+
"form.modelLabel": "Модель LLM",
|
|
7393
|
+
"form.nameLabel": "Название задачи",
|
|
7394
|
+
"form.namePlaceholder": "Например: dsh-tags-watch",
|
|
7395
|
+
"form.nextRunLabel": "Следующий запуск: ",
|
|
7396
|
+
"form.notifyOnlyFailure": "Только при сбоях (onlyOnFailure / тихо при успехе)",
|
|
7397
|
+
"form.notifyTelegram": "Отправлять отчёт о запуске в Telegram",
|
|
7398
|
+
"form.notifyTitle": "Уведомления в Telegram",
|
|
7399
|
+
"form.notScheduled": "не по расписанию",
|
|
7400
|
+
"form.onFailureHint": "ID задач через запятую, выполняемых при сбое",
|
|
7401
|
+
"form.onFailureLabel": "Запуск при сбое (ID задач)",
|
|
7402
|
+
"form.onSuccessHint": "ID задач через запятую, выполняемых при успехе (Fan-Out)",
|
|
7403
|
+
"form.onSuccessLabel": "Запуск при успехе (ID задач)",
|
|
7404
|
+
"form.overlapLabel": "Политика пересечений",
|
|
7405
|
+
"form.overlapQueue": "Поставить следующий запуск в очередь (queue)",
|
|
7406
|
+
"form.overlapReplace": "Отменить текущий запуск и запустить заново (replace)",
|
|
7407
|
+
"form.overlapSkip": "Пропустить новый запуск (skip)",
|
|
7408
|
+
"form.permissionDefault": "По умолчанию (как настроено в DSH)",
|
|
7409
|
+
"form.permissionFull": "Полный доступ",
|
|
7410
|
+
"form.permissionLabel": "Права сессии",
|
|
7411
|
+
"form.permissionReadonly": "Только чтение",
|
|
7412
|
+
"form.permissionWrite": "Запись в рабочую область",
|
|
7413
|
+
"form.preflightDisk": "Место на диске (путь:минПроцент)",
|
|
7414
|
+
"form.preflightHttp": "HTTP (проверка 2xx)",
|
|
7415
|
+
"form.preflightLabel": "Предварительная проверка",
|
|
7416
|
+
"form.preflightNone": "Нет",
|
|
7417
|
+
"form.preflightShell": "Команда shell (код возврата 0)",
|
|
7418
|
+
"form.preflightTargetLabel": "Цель предварительной проверки",
|
|
7419
|
+
"form.preflightTargetPlaceholder": "https://example.com/healthz ИЛИ ls /data ИЛИ /:10%",
|
|
7420
|
+
"form.previewSchedule": "Показать следующие запуски",
|
|
7421
|
+
"form.previewScheduleTitle": "Следующие 5 запусков по расписанию:",
|
|
7422
|
+
"form.priorityLabel": "Приоритет в очереди (1–10, больший выполняется раньше)",
|
|
7423
|
+
"form.promptLabelLlm": "Инструкция / промпт для агента",
|
|
7424
|
+
"form.promptLabelScript": "Команда shell или скрипт",
|
|
7425
|
+
"form.promptPlaceholderLlm": "Точно опишите, что должен делать агент…",
|
|
7426
|
+
"form.promptPlaceholderScript": "curl -fsSL https://… || exit 1",
|
|
7427
|
+
"form.providerDefault": "По умолчанию (DSH)",
|
|
7428
|
+
"form.providerLabel": "Провайдер LLM",
|
|
7429
|
+
"form.reliabilityTitle": "🛡️ Надёжность, пульс и самоисцеление",
|
|
7430
|
+
"form.requireApprovalHint": "Если включено, задача не выполняется, пока авторизованный пользователь не одобрит предложение запуска (#318).",
|
|
7431
|
+
"form.requireApprovalLabel": "Требовать одобрения человека перед выполнением",
|
|
7432
|
+
"form.retriesLabel": "Автоматические повторы при сбое (0 = отключено)",
|
|
7433
|
+
"form.scheduleLabel": "Расписание (cron или интервал)",
|
|
7434
|
+
"form.schedulePlaceholder": "0 */6 * * * или every 2h или in 30m или at: 2026-09-05T15:00:00Z",
|
|
7435
|
+
"form.selfHealingLabel": "Команда сценария самоисцеления (shell)",
|
|
7436
|
+
"form.selfHealingPlaceholder": "systemctl restart app || true",
|
|
7437
|
+
"form.silentRuleHint": "Для задач с выводом: дешёвая модель оценивает запуск по этому правилу, и отчёт пропускается, если она велит молчать. Если модель недоступна или не уверена, отчёт доставляется.",
|
|
7438
|
+
"form.silentRuleLabel": "Правило молчания (необязательно)",
|
|
7439
|
+
"form.silentRulePlaceholder": "Молчать, когда ни одна файловая система не занята больше 80%",
|
|
7440
|
+
"form.skillNameLabel": "Название навыка",
|
|
7441
|
+
"form.sshKeyLabel": "Путь к закрытому ключу (резервный, необязательно)",
|
|
7442
|
+
"form.sshProfileHint": "Предпочтительно: хост и учётные данные остаются в плагине remote-workspace.",
|
|
7443
|
+
"form.sshProfileLabel": "ID профиля dsh-remote-workspace",
|
|
7444
|
+
"form.sshTargetLabel": "Резервная цель (user@host, необязательно)",
|
|
7445
|
+
"form.targetSessionIdHint": "Если задан, запуски по расписанию продолжают эту сессию, чтобы сохранять контекст диалога между запусками, а не создавать новую изолированную сессию.",
|
|
7446
|
+
"form.targetSessionIdLabel": "ID постоянной сессии",
|
|
7447
|
+
"form.targetSessionIdPlaceholder": "например, audit-chat или dev-summary (пусто = изолированный запуск)",
|
|
7448
|
+
"form.targetSessionResetDaily": "Ежедневная ротация (новая сессия каждый день)",
|
|
7449
|
+
"form.targetSessionResetHint": "Автоматически меняет идентификатор сессии, чтобы контекстное окно не разрасталось при долгой работе.",
|
|
7450
|
+
"form.targetSessionResetLabel": "Ротация контекста сессии",
|
|
7451
|
+
"form.targetSessionResetNever": "Непрерывно (без ротации)",
|
|
7452
|
+
"form.targetSessionResetWeekly": "Еженедельная ротация (новая сессия каждую неделю)",
|
|
7453
|
+
"form.templateHint": "Переменные: {title} {id} {status} {output} {error} {duration} {schedule} {time} {tokens} {cost} {model}. Пусто = встроенный текст.",
|
|
7454
|
+
"form.templateLabel": "Шаблон сообщения (необязательно)",
|
|
7455
|
+
"form.templatePlaceholder": "⏰ {title} — {status} за {duration}",
|
|
7456
|
+
"form.timeoutLabel": "Тайм-аут выполнения (секунды)",
|
|
7457
|
+
"form.timezoneLabel": "Часовой пояс (IANA, необязательно)",
|
|
7458
|
+
"form.timezonePlaceholder": "например, Europe/Berlin (пусто = локальное время сервера)",
|
|
7459
|
+
"form.typeDocker": "Контейнер Docker",
|
|
7460
|
+
"form.typeHttp": "HTTP-запрос / вебхук",
|
|
7461
|
+
"form.typeLabel": "Тип выполнения",
|
|
7462
|
+
"form.typeLlm": "LLM (агент ИИ)",
|
|
7463
|
+
"form.typeNode": "Node.js",
|
|
7464
|
+
"form.typePython": "Python",
|
|
7465
|
+
"form.typeScript": "Команда shell / скрипт",
|
|
7466
|
+
"form.typeSkill": "Навык DSH",
|
|
7467
|
+
"form.typeSsh": "Удалённый SSH",
|
|
7468
|
+
"form.typeWorkflow": "Workflow DSH",
|
|
7469
|
+
"form.workflowNameLabel": "Название Workflow",
|
|
7470
|
+
"form.workspaceLabel": "ID или путь рабочей области (необязательно)",
|
|
7471
|
+
"form.worktreeLabel": "Выполнять в изолированном рабочем дереве git",
|
|
7472
|
+
"heatmap.buttonLabel": "Тепловая карта",
|
|
7473
|
+
"heatmap.matrixDesc": "Концентрация расходов по часам недели (7 дней × 24 часа):",
|
|
7474
|
+
"heatmap.modalTitle": "Тепловая карта расходов и расхода токенов",
|
|
7475
|
+
"heatmap.tabHeatmap": "Тепловая карта расходов",
|
|
7476
|
+
"history.applySuggestion": "Открыть форму редактирования с этим предложением",
|
|
7477
|
+
"history.artifacts": "Артефакты",
|
|
7478
|
+
"history.autoHealed": "Автоматически исправлено доктором",
|
|
7479
|
+
"history.diagnosis": "Диагноз",
|
|
7480
|
+
"history.doctorApply": "Применить исправление в один клик",
|
|
7481
|
+
"history.doctorDiagnosis": "Диагноз доктора и предлагаемое исправление",
|
|
7482
|
+
"history.doctorRevert": "Вернуть предыдущий код",
|
|
7483
|
+
"history.empty": "Запусков пока не записано",
|
|
7484
|
+
"history.loading": "Загружаем историю…",
|
|
7485
|
+
"history.openSession": "Открыть сессию",
|
|
7486
|
+
"history.refresh": "Обновить историю",
|
|
7487
|
+
"history.resolveCompleted": "Отметить как выполнено",
|
|
7488
|
+
"history.resolveFailed": "Отметить как сбой",
|
|
7489
|
+
"history.retryDelivery": "Повторить доставку",
|
|
7490
|
+
"history.retryingDelivery": "Повторяем доставку…",
|
|
7491
|
+
"history.silentSkip": "промолчала:",
|
|
7492
|
+
"history.stage_delivery": "Доставка",
|
|
7493
|
+
"history.stage_execution": "Выполнение",
|
|
7494
|
+
"history.stage_preflight": "Проверка",
|
|
7495
|
+
"history.stage_queue": "Очередь",
|
|
7496
|
+
"history.stage_validation": "Валидация",
|
|
7497
|
+
"history.statusFailed": "Сбой",
|
|
7498
|
+
"history.statusMissed": "Не выполнен",
|
|
7499
|
+
"history.statusSkipped": "Пропущен",
|
|
7500
|
+
"history.statusSuccess": "Успешно",
|
|
7501
|
+
"history.statusTimeout": "Тайм-аут",
|
|
7502
|
+
"history.statusUncertain": "Неопределённо",
|
|
7503
|
+
"history.statusUncertainHint": "Прервано перезапуском — проверьте результат",
|
|
7504
|
+
"history.statusValidationFailed": "проверка не пройдена",
|
|
7505
|
+
"history.stoppedReasonTitle": "Причина остановки:",
|
|
7506
|
+
"list.configManaged": "Конфигурация",
|
|
7507
|
+
"list.configManagedHint": "Объявлено в config.jobs в файле конфигурации профиля; измените файл, чтобы изменить или удалить задачу",
|
|
7508
|
+
"list.empty": "Задач по расписанию пока нет",
|
|
7509
|
+
"list.loadErrorPrefix": "Не удалось загрузить задачи",
|
|
7510
|
+
"list.loading": "Загружаем задачи по расписанию…",
|
|
7511
|
+
"list.next": " · следующий: {time}",
|
|
7512
|
+
"list.oneShot": "Одноразовая",
|
|
7513
|
+
"list.runningNow": "Выполняется сейчас",
|
|
7514
|
+
"list.typeLlm": "LLM",
|
|
7515
|
+
"list.typeShell": "Shell",
|
|
7516
|
+
"liveLog.autoScroll": "Автопрокрутка",
|
|
7517
|
+
"liveLog.close": "Закрыть поток",
|
|
7518
|
+
"liveLog.completed": "Поток выполнения завершён",
|
|
7519
|
+
"liveLog.connecting": "Подключаемся к потоку журнала…",
|
|
7520
|
+
"liveLog.modalTitle": "Журнал выполнения в реальном времени",
|
|
7521
|
+
"liveLog.viewLog": "Поток в реальном времени",
|
|
7522
|
+
"liveLog.waiting": "Ждём вывод исполнителя…",
|
|
7523
|
+
"modal.cancel": "Отмена",
|
|
7524
|
+
"modal.close": "Закрыть",
|
|
7525
|
+
"modal.confirmDiscard": "Отменить несохранённые изменения?",
|
|
7526
|
+
"modal.create": "Создать задачу",
|
|
7527
|
+
"modal.editTitle": "Изменение задачи",
|
|
7528
|
+
"modal.history": "История запусков ({count})",
|
|
7529
|
+
"modal.newTitle": "Новая задача по расписанию",
|
|
7530
|
+
"modal.params": "Параметры",
|
|
7531
|
+
"modal.save": "Сохранить изменения",
|
|
7532
|
+
"modal.statusActive": "● Активна",
|
|
7533
|
+
"modal.statusPaused": "○ На паузе",
|
|
7534
|
+
"panel.back": "Вернуться в чат",
|
|
7535
|
+
"panel.subtitle": "Попросите DSH спланировать задачи, настроить напоминания или следить за обновлениями",
|
|
7536
|
+
"panel.title": "Задачи по расписанию",
|
|
7537
|
+
"prompt.history": "История промптов",
|
|
7538
|
+
"prompt.rollback": "Вернуть v",
|
|
7539
|
+
"prompt.successRate": "СР",
|
|
7540
|
+
"prompt.version": "Версия промпта",
|
|
7541
|
+
"recipe.dependenciesMissing": "Не хватает обязательных интеграций или учётных данных",
|
|
7542
|
+
"recs.hint": "Готовые рецепты. Нажатие открывает форму с заполненными полями — ничего не создаётся, пока вы не сохраните.",
|
|
7543
|
+
"recs.title": "Рекомендуемые задачи",
|
|
7544
|
+
"search.placeholder": "Поиск задач по расписанию",
|
|
7545
|
+
"settings.apiTokenLabel": "Внешний API-токен",
|
|
7546
|
+
"settings.apiTokenPlaceholder": "Bearer-токен для /dsh-cron/api/* (пусто = отключено)",
|
|
7547
|
+
"settings.automationHint": "Модели для небольших вспомогательных вызовов (проверка правил, анализ сбоев). Оставьте пустым, чтобы использовать модель задачи.",
|
|
7548
|
+
"settings.automationSection": "Модели автоматизации",
|
|
7549
|
+
"settings.barkKeyLabel": "Ключ устройства Bark",
|
|
7550
|
+
"settings.barkServerLabel": "URL сервера Bark",
|
|
7551
|
+
"settings.botTokenRefLabel": "Имя учётных данных с токеном бота",
|
|
7552
|
+
"settings.botTokenRefPlaceholder": "например, TELEGRAM_BOT_TOKEN",
|
|
7553
|
+
"settings.cardDesc": "Выполнение задач по расписанию (cron/интервалы), фоновые сценарии агента и доставка отчётов о запусках в Telegram, Discord, Slack, ntfy, Bark, PushPlus, голосом и Gitea.",
|
|
7554
|
+
"settings.cardTitle": "⏰ Планировщик задач (Cron)",
|
|
7555
|
+
"settings.channelTemplateLabel": "Шаблон для {channel}",
|
|
7556
|
+
"settings.chatIdLabel": "ID чата Telegram",
|
|
7557
|
+
"settings.chatIdPlaceholder": "Например: 345678901",
|
|
7558
|
+
"settings.checkingKanban": "Проверяем Kanban…",
|
|
7559
|
+
"settings.defaultHint": "✓ В профиле DSH найден настроенный бот",
|
|
7560
|
+
"settings.deliverySection": "Каналы доставки",
|
|
7561
|
+
"settings.deliveryTimeoutMsLabel": "Тайм-аут доставки для каждого канала (мс)",
|
|
7562
|
+
"settings.discordLabel": "URL вебхука Discord",
|
|
7563
|
+
"settings.dynamicCredentials": "Динамическое разрешение учётных данных (credential://…)",
|
|
7564
|
+
"settings.dynamicCredentialsHint": "Разрешать credential://… в памяти из учётных данных DeepSeek Harness во время выполнения (#335)",
|
|
7565
|
+
"settings.giteaBaseUrlLabel": "Базовый URL Gitea",
|
|
7566
|
+
"settings.giteaRepoLabel": "Репозиторий Gitea (владелец/репозиторий)",
|
|
7567
|
+
"settings.giteaTokenRefLabel": "Имя учётных данных с токеном Gitea",
|
|
7568
|
+
"settings.globalNotify": "Глобально доставлять отчёты всех задач в Telegram",
|
|
7569
|
+
"settings.globalOnlyFailure": "Глобальный режим: только при сбоях (тихо при успехе)",
|
|
7570
|
+
"settings.inspectorModelLabel": "Модель для диагностики сбоев",
|
|
7571
|
+
"settings.kanbanFail": "❌ {error}",
|
|
7572
|
+
"settings.kanbanOk": "✅ Карточка Kanban создана",
|
|
7573
|
+
"settings.kanbanUrlLabel": "Базовый URL Kanban",
|
|
7574
|
+
"settings.loading": "Загружаем настройки…",
|
|
7575
|
+
"settings.modalTitle": "Уведомления и каналы доставки",
|
|
7576
|
+
"settings.ntfyTokenRefLabel": "Имя учётных данных с токеном ntfy",
|
|
7577
|
+
"settings.ntfyTopicLabel": "Тема ntfy",
|
|
7578
|
+
"settings.ntfyUrlLabel": "URL сервера ntfy",
|
|
7579
|
+
"settings.openPanel": "Открыть панель задач",
|
|
7580
|
+
"settings.pushplusTokenRefLabel": "Имя учётных данных с токеном PushPlus",
|
|
7581
|
+
"settings.pushplusUrlLabel": "Конечная точка PushPlus",
|
|
7582
|
+
"settings.retry": "Повторить",
|
|
7583
|
+
"settings.save": "Сохранить настройки",
|
|
7584
|
+
"settings.saved": "✓ Сохранено",
|
|
7585
|
+
"settings.saveError": "Не удалось сохранить: {error}",
|
|
7586
|
+
"settings.saveErrorUnknown": "неизвестная ошибка",
|
|
7587
|
+
"settings.secretsHint": "Введите ИМЯ учётных данных DSH, а не сам секрет. Секреты остаются в хранилище учётных данных.",
|
|
7588
|
+
"settings.secretsOnCard": "Учётные данные, на которые ссылается панель настроек, показываются в замаскированном виде и хранятся по имени.",
|
|
7589
|
+
"settings.secretsSection": "Учётные данные (ссылки)",
|
|
7590
|
+
"settings.sending": "Отправка…",
|
|
7591
|
+
"settings.silentRuleModelLabel": "Модель для беззвучных правил",
|
|
7592
|
+
"settings.slackLabel": "URL вебхука Slack",
|
|
7593
|
+
"settings.telegramSection": "Telegram",
|
|
7594
|
+
"settings.templateHint": "Применяется к каждому каналу, у которого нет своего шаблона. Пусто — встроенный текст.",
|
|
7595
|
+
"settings.templateLabel": "Шаблон сообщения по умолчанию",
|
|
7596
|
+
"settings.templatesSection": "Шаблоны сообщений",
|
|
7597
|
+
"settings.testFail": "❌ {error}",
|
|
7598
|
+
"settings.testKanban": "📋 Проверка Kanban",
|
|
7599
|
+
"settings.testOk": "✅ Тестовое сообщение доставлено в Telegram.",
|
|
7600
|
+
"settings.testTelegram": "🔔 Проверка доставки в Telegram",
|
|
7601
|
+
"settings.tokenLabel": "Токен бота Telegram",
|
|
7602
|
+
"settings.tokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ",
|
|
7603
|
+
"settings.tokenPlaceholderDefault": "Используется бот из настроек DSH (или введите своего)",
|
|
7604
|
+
"settings.ttsBaseUrlLabel": "Базовый URL dsh-tts",
|
|
7605
|
+
"settings.unavailable": "Настройки сейчас недоступны.",
|
|
7606
|
+
"sidebar.jobsTitle": "Активные задачи",
|
|
7607
|
+
"sidebar.label": "Задачи по расписанию",
|
|
7608
|
+
"sidebar.moreJobs": "и ещё {count} шт.",
|
|
7609
|
+
"sidebar.noActiveJobs": "Активных задач нет",
|
|
7610
|
+
"stats.activeTasks": "Активные задачи",
|
|
7611
|
+
"stats.totalCost": "Оценочная стоимость",
|
|
7612
|
+
"stats.totalRuns": "Всего запусков",
|
|
7613
|
+
"stats.totalTokens": "Потрачено токенов",
|
|
7614
|
+
"tabs.active": "Активные",
|
|
7615
|
+
"tabs.all": "Все",
|
|
7616
|
+
"tabs.completed": "Завершённые",
|
|
7617
|
+
"tabs.paused": "Приостановленные",
|
|
7618
|
+
"timeline.buttonLabel": "Хронология",
|
|
7619
|
+
"timeline.buttonTitle": "Показать прогноз расписания и хронологию параллельности за 24 часа",
|
|
7620
|
+
"timeline.legendDesc": "Прогноз распределения запусков по часовым интервалам за 24 часа:",
|
|
7621
|
+
"timeline.modalTitle": "Хронология расписания за 24 часа",
|
|
7622
|
+
"timeline.peakWarning": "Предупреждение о пиковой параллельности",
|
|
7623
|
+
"timeline.tabTimeline": "Хронология расписания",
|
|
7624
|
+
"transfer.badFile": "Выбранный файл не является корректным экспортом в JSON: {error}",
|
|
7625
|
+
"transfer.confirm": "Импортировать",
|
|
7626
|
+
"transfer.exported": "Экспортировано задач: {count}.",
|
|
7627
|
+
"transfer.exportFailed": "Не удалось экспортировать: {error}",
|
|
7628
|
+
"transfer.exportPrompt": "Выберите режим экспорта:\nOK = очищенный (удаляет пользовательские переменные окружения и заголовки)\nCancel = полный сырой экспорт",
|
|
7629
|
+
"transfer.exportTitle": "Экспорт задач",
|
|
7630
|
+
"transfer.imported": "Импортировано задач: {count}.",
|
|
7631
|
+
"transfer.importFailed": "Не удалось импортировать: {error}",
|
|
7632
|
+
"transfer.importHint": "Только конфигурация задач: без истории запусков и счётчиков. Конфигурации каналов ссылаются на учётные данные по имени; учтите, что сырые экспорты сохраняют пользовательские переменные окружения и заголовки HTTP-запросов.",
|
|
7633
|
+
"transfer.importTitle": "Импорт задач",
|
|
7634
|
+
"transfer.importTitleModal": "Импорт задач",
|
|
7635
|
+
"transfer.strategyAdd": "Добавить как новые задачи (новые id, существующие останутся нетронутыми)",
|
|
7636
|
+
"transfer.strategyReplace": "Заменить задачи с тем же id",
|
|
7637
|
+
"transfer.strategySkip": "Пропустить задачи, чей id уже существует",
|
|
7638
|
+
"transfer.summary": "В файле задач: {total}, новых: {add}, с совпадающим id: {replace}, уже пропущено: {skip}.",
|
|
7639
|
+
"tune.startFailed": "Не удалось начать диалог настройки: {error}",
|
|
7640
|
+
"updater.available": "Доступно обновление: v{version}",
|
|
7641
|
+
"updater.btnCheck": "Проверить обновления",
|
|
7642
|
+
"updater.btnUpdate": "Обновить до v{version}",
|
|
7643
|
+
"updater.checking": "Проверяем…",
|
|
7644
|
+
"updater.current": "Текущая версия: v{version}",
|
|
7645
|
+
"updater.desc": "Проверять реестр npm и устанавливать обновления плагинов на месте без доступа по SSH.",
|
|
7646
|
+
"updater.success": "Обновление до v{version} выполнено. Перезапустите DSH или перезагрузите профиль, чтобы применить изменения.",
|
|
7647
|
+
"updater.title": "Автообновление плагинов",
|
|
7648
|
+
"updater.updating": "Обновляем…",
|
|
7649
|
+
"updater.upToDate": "Обновлений нет"
|
|
7650
|
+
},
|
|
7651
|
+
"dsh-image-gen": {
|
|
7652
|
+
"approval.aspectLabel": "Соотношение сторон / Размер",
|
|
7653
|
+
"approval.cancelled": "Генерация отменена или прервана по таймауту.",
|
|
7654
|
+
"approval.confirmBtn": "Подтвердить генерацию",
|
|
7655
|
+
"approval.confirmed": "Генерация подтверждена пользователем, продолжаем…",
|
|
7656
|
+
"approval.confirmPrompt": "Генерация изображения подтверждена: generate_image(prompt: «{p}», approved: true)",
|
|
7657
|
+
"approval.editBtn": "Изменить / Отменить",
|
|
7658
|
+
"approval.modelLabel": "Модель / Провайдер",
|
|
7659
|
+
"approval.promptLabel": "Промпт",
|
|
7660
|
+
"approval.title": "Требуется подтверждение генерации",
|
|
7661
|
+
"card.actionRemoveBg": "Удалить фон",
|
|
7662
|
+
"card.actionReroll": "Перегенерировать изображение",
|
|
7663
|
+
"card.actionUpscale": "Увеличить изображение",
|
|
7664
|
+
"card.copyPrompt": "Копировать промпт",
|
|
7665
|
+
"card.desc": "Настройка генерации изображений через несколько провайдеров, дорисовки, увеличения и векторизации.",
|
|
7666
|
+
"card.dirty": "Есть несохранённые изменения",
|
|
7667
|
+
"card.discard": "Отменить изменения",
|
|
7668
|
+
"card.draftPreview": "Предпросмотр черновика",
|
|
7669
|
+
"card.failed": "Генерация не удалась",
|
|
7670
|
+
"card.generating": "Генерация изображения…",
|
|
7671
|
+
"card.image": "Результат студии изображений",
|
|
7672
|
+
"card.inpaint": "Дорисовка",
|
|
7673
|
+
"card.nextRevision": "Следующая ревизия",
|
|
7674
|
+
"card.origPrompt": "Исходный промпт",
|
|
7675
|
+
"card.prevRevision": "Предыдущая ревизия",
|
|
7676
|
+
"card.remix": "Ремикс",
|
|
7677
|
+
"card.removeBg": "Удалить фон",
|
|
7678
|
+
"card.rendering": "Отрисовка…",
|
|
7679
|
+
"card.reroll": "Перегенерировать",
|
|
7680
|
+
"card.responsiveTabs": "Адаптивные размеры окна",
|
|
7681
|
+
"card.revisions": "Ревизии",
|
|
7682
|
+
"card.save": "Сохранить изменения",
|
|
7683
|
+
"card.saving": "Сохранение…",
|
|
7684
|
+
"card.seedPrefix": "Сид",
|
|
7685
|
+
"card.sizePrefix": "Размер",
|
|
7686
|
+
"card.title": "Студия ИИ-изображений",
|
|
7687
|
+
"card.unknownError": "Во время генерации произошла неизвестная ошибка.",
|
|
7688
|
+
"card.upscale": "Увеличение 2x/4x",
|
|
7689
|
+
"diagnostics.desc": "Мгновенная проверка состояния соединения и задержки до API выбранного провайдера.",
|
|
7690
|
+
"diagnostics.ready": "Готово",
|
|
7691
|
+
"diagnostics.test": "Проверить соединение",
|
|
7692
|
+
"diagnostics.testing": "Проверяем…",
|
|
7693
|
+
"diagnostics.title": "Диагностика связи с провайдером",
|
|
7694
|
+
"f.activeProjectProfile": "Активный профиль проекта",
|
|
7695
|
+
"f.activeProjectProfileHint": "Выберите сохранённый визуальный профиль (палитра, стиль, формат), который будет единообразно применяться ко всем генерациям (#435).",
|
|
7696
|
+
"f.allowCustomBaseUrl": "Разрешить свой хост провайдера",
|
|
7697
|
+
"f.allowCustomBaseUrlHint": "Явно разрешить customBaseURL или baseURL обращаться к внешним хостам за пределами доверенного списка ИИ-провайдеров.",
|
|
7698
|
+
"f.apiKeyEnv": "Ссылка на ключ FAL",
|
|
7699
|
+
"f.apiKeyEnvHint": "Ссылка на учётные данные с ключом FAL API.",
|
|
7700
|
+
"f.approvalTimeoutSec": "Таймаут подтверждения (секунды)",
|
|
7701
|
+
"f.approvalTimeoutSecHint": "Максимальное время ожидания подтверждения пользователя до отмены задачи (5–600 секунд).",
|
|
7702
|
+
"f.autoEnhancePrompt": "Автоулучшение промпта",
|
|
7703
|
+
"f.autoEnhancePromptHint": "Дополняет промпты маркерами качества фотографии, освещения и композиции.",
|
|
7704
|
+
"f.baseURL": "Базовый URL FAL",
|
|
7705
|
+
"f.baseURLHint": "Адрес сервиса очередей FAL.",
|
|
7706
|
+
"f.cacheByPrompt": "Кэш только по промпту",
|
|
7707
|
+
"f.cacheByPromptHint": "Использовать существующий результат, если этот промпт уже генерировался.",
|
|
7708
|
+
"f.cacheBySeed": "Кэш по сиду и промпту",
|
|
7709
|
+
"f.cacheBySeedHint": "Использовать существующий результат, если запрошены точно такие же сид и промпт.",
|
|
7710
|
+
"f.cacheTtlDays": "Срок хранения кэша (устаревшее)",
|
|
7711
|
+
"f.cacheTtlDaysHint": "Устаревшее название срока хранения в днях.",
|
|
7712
|
+
"f.comfyTemplate": "Шаблон workflow ComfyUI",
|
|
7713
|
+
"f.comfyTemplateHint": "Проверенный шаблон workflow (например, SDXL txt2img, img2img, перенос лиц InstantID, увеличитель RealESRGAN).",
|
|
7714
|
+
"f.comfyWorkflowJson": "JSON workflow ComfyUI",
|
|
7715
|
+
"f.comfyWorkflowJsonHint": "Свой граф workflow ComfyUI API (JSON) с подстановками {{prompt}}.",
|
|
7716
|
+
"f.customBaseURL": "Свой базовый URL API",
|
|
7717
|
+
"f.customBaseURLHint": "Корень эндпоинта изображений с совместимостью с OpenAI (например, https://api.openai.com/v1).",
|
|
7718
|
+
"f.customKeyEnv": "Ссылка на свой ключ",
|
|
7719
|
+
"f.customKeyEnvHint": "Ссылка на учётные данные с ключом API для своего эндпоинта.",
|
|
7720
|
+
"f.customModel": "ID своей модели",
|
|
7721
|
+
"f.customModelHint": "Имя модели, отправляемое в свой эндпоинт изображений.",
|
|
7722
|
+
"f.customSize": "Свой размер изображения",
|
|
7723
|
+
"f.customSizeHint": "Фиксированный размер, отправляемый в свой эндпоинт (например, 1024x1024).",
|
|
7724
|
+
"f.dailyBudgetUsd": "Дневной бюджет расходов ($ USD)",
|
|
7725
|
+
"f.dailyBudgetUsdHint": "Жёсткий предел расходов в день по всем инструментам генерации изображений (0 — без ограничений).",
|
|
7726
|
+
"f.defaultFormat": "Формат результата",
|
|
7727
|
+
"f.defaultFormatHint": "Итоговый формат файла (PNG, JPEG или WEBP).",
|
|
7728
|
+
"f.defaultSize": "Соотношение сторон по умолчанию",
|
|
7729
|
+
"f.defaultSizeHint": "Соотношение сторон и разрешение, применяемые, если image_size не задан.",
|
|
7730
|
+
"f.defaultStylePreset": "Пресет стиля по умолчанию",
|
|
7731
|
+
"f.defaultStylePresetHint": "Пресет стиля по умолчанию, применяемый к генерациям (например, кинематографичный, аниме, фотореализм).",
|
|
7732
|
+
"f.deliverAs": "Режим передачи",
|
|
7733
|
+
"f.deliverAsHint": "Как изображения попадают в беседу: «link» (безопасно для текстовой LLM) или «image» (мультимодальное зрение).",
|
|
7734
|
+
"f.diskCache": "Дисковый кэш с адресацией по содержимому",
|
|
7735
|
+
"f.diskCacheHint": "Мгновенное получение (<50 мс) и нулевая стоимость API при повторных одинаковых генерациях.",
|
|
7736
|
+
"f.enabled": "Главный переключатель",
|
|
7737
|
+
"f.enabledHint": "Включает или выключает инструменты генерации изображений во всей рабочей области.",
|
|
7738
|
+
"f.enableLlmEnhancer": "Включить улучшитель LLM (устаревшее)",
|
|
7739
|
+
"f.enableLlmEnhancerHint": "Устаревший переключатель расширения промптов через LLM.",
|
|
7740
|
+
"f.enhanceBelowChars": "Порог улучшения",
|
|
7741
|
+
"f.enhanceBelowCharsHint": "Промпты длиннее указанного числа символов не расширяются.",
|
|
7742
|
+
"f.enhanceModel": "Модель улучшения",
|
|
7743
|
+
"f.enhanceModelHint": "Отдельная модель LLM для расширения промптов (пусто — модель беседы).",
|
|
7744
|
+
"f.enhancePrompt": "Улучшитель промптов на LLM",
|
|
7745
|
+
"f.enhancePromptHint": "Расширяет краткие промпты художественными деталями перед генерацией.",
|
|
7746
|
+
"f.fallbackProviders": "Цепочка резервных провайдеров",
|
|
7747
|
+
"f.fallbackProvidersHint": "Список резервных провайдеров через запятую, к которым переходим при кодах 429, 5xx или достижении лимита квоты (например, replicate, custom, gemini).",
|
|
7748
|
+
"f.geminiKeyEnv": "Ссылка на ключ Gemini",
|
|
7749
|
+
"f.geminiKeyEnvHint": "Ссылка на учётные данные с ключом Google Gemini API.",
|
|
7750
|
+
"f.geminiModel": "ID модели Gemini",
|
|
7751
|
+
"f.geminiModelHint": "Идентификатор модели генерации изображений Google Gemini.",
|
|
7752
|
+
"f.historyLimit": "Лимит истории",
|
|
7753
|
+
"f.historyLimitHint": "Максимальное число последних записей о генерации, которые хранятся в памяти.",
|
|
7754
|
+
"f.inherit": "По умолчанию / Наследовать",
|
|
7755
|
+
"f.localA1111Url": "Локальный URL A1111 (устаревшее)",
|
|
7756
|
+
"f.localA1111UrlHint": "Прямой URL эндпоинта Automatic1111.",
|
|
7757
|
+
"f.localBaseURL": "URL локального сервера",
|
|
7758
|
+
"f.localBaseURLHint": "Адрес сервера (например, http://127.0.0.1:8188 для ComfyUI, http://127.0.0.1:7860 для A1111).",
|
|
7759
|
+
"f.localCfg": "Шкала CFG",
|
|
7760
|
+
"f.localCfgHint": "Шкала руководства без классификатора.",
|
|
7761
|
+
"f.localComfyUrl": "Локальный URL ComfyUI (устаревшее)",
|
|
7762
|
+
"f.localComfyUrlHint": "Прямой URL эндпоинта ComfyUI.",
|
|
7763
|
+
"f.localKind": "Архитектура локального движка",
|
|
7764
|
+
"f.localKindHint": "Выбор бэкенда: ComfyUI API или Automatic1111 WebUI.",
|
|
7765
|
+
"f.localModel": "Локальная модель / чекпоинт",
|
|
7766
|
+
"f.localModelHint": "Имя чекпоинта или имя workflow ComfyUI.",
|
|
7767
|
+
"f.localSteps": "Шаги сэмплирования",
|
|
7768
|
+
"f.localStepsHint": "Число шагов сэмплирования при удалении шума.",
|
|
7769
|
+
"f.loopGuardLimit": "Лимит защиты от цикла в сессии",
|
|
7770
|
+
"f.loopGuardLimitHint": "Максимальное число подряд идущих генераций изображений до запроса ввода пользователя (0 — отключено).",
|
|
7771
|
+
"f.model": "ID модели FAL",
|
|
7772
|
+
"f.modelHint": "Целевая модель в эндпоинте FAL (например, fal-ai/flux-2/klein/9b).",
|
|
7773
|
+
"f.needCodex": "Встроенная подписка Codex",
|
|
7774
|
+
"f.needCustom": "Нужен эндпоинт с совместимостью с OpenAI",
|
|
7775
|
+
"f.needFal": "Нужен ключ FAL API",
|
|
7776
|
+
"f.needGemini": "Нужен ключ Google Gemini API",
|
|
7777
|
+
"f.needGrok": "Встроенная подписка Grok",
|
|
7778
|
+
"f.needLocal": "Локальный ComfyUI или A1111",
|
|
7779
|
+
"f.needReplicate": "Нужен токен Replicate API",
|
|
7780
|
+
"f.needSeedream": "Нужен ключ SeaDream API",
|
|
7781
|
+
"f.outputDir": "Каталог результатов",
|
|
7782
|
+
"f.outputDirHint": "Путь каталога, куда на диске сохраняются сгенерированные изображения.",
|
|
7783
|
+
"f.pollIntervalMs": "Интервал опроса (мс)",
|
|
7784
|
+
"f.pollIntervalMsHint": "Как часто проверяется ход задачи в асинхронных очередях.",
|
|
7785
|
+
"f.provider": "Провайдер изображений",
|
|
7786
|
+
"f.providerHint": "Сервис-бэкенд для генерации изображений.",
|
|
7787
|
+
"f.pruneDays": "Срок хранения (дни)",
|
|
7788
|
+
"f.pruneDaysHint": "Автоматически удалять файлы изображений и кэш старше указанного числа дней (0 — хранить вечно).",
|
|
7789
|
+
"f.qualityGate": "Тихий контроль качества",
|
|
7790
|
+
"f.qualityGateHint": "Автоматически проверяет готовые кадры и незаметно перегенерирует пустые или повреждённые результаты.",
|
|
7791
|
+
"f.replicateKeyEnv": "Ссылка на ключ Replicate",
|
|
7792
|
+
"f.replicateKeyEnvHint": "Ссылка на учётные данные с токеном Replicate API.",
|
|
7793
|
+
"f.replicateModel": "ID модели Replicate",
|
|
7794
|
+
"f.replicateModelHint": "Идентификатор целевой модели в Replicate.",
|
|
7795
|
+
"f.requireApproval": "Интерактивное подтверждение",
|
|
7796
|
+
"f.requireApprovalHint": "Требовать явного подтверждения пользователя в беседе перед вызовом платных API генерации изображений.",
|
|
7797
|
+
"f.seedreamBaseURL": "Базовый URL SeaDream",
|
|
7798
|
+
"f.seedreamBaseURLHint": "URL эндпоинта SeaDream API (ByteDance/Volcengine Ark).",
|
|
7799
|
+
"f.seedreamKeyEnv": "Ссылка на ключ SeaDream",
|
|
7800
|
+
"f.seedreamKeyEnvHint": "Ссылка на учётные данные с ключом SeaDream API.",
|
|
7801
|
+
"f.seedreamModel": "ID модели SeaDream",
|
|
7802
|
+
"f.seedreamModelHint": "Идентификатор модели ByteDance SeaDream.",
|
|
7803
|
+
"f.stylePreset": "Пресет художественного стиля",
|
|
7804
|
+
"f.stylePresetHint": "Автоматический суффикс визуального стиля, добавляемый ко всем сгенерированным промптам.",
|
|
7805
|
+
"f.subscriptionQuality": "Качество по подписке",
|
|
7806
|
+
"f.subscriptionQualityHint": "Целевой профиль качества при работе с подписками Codex или Grok.",
|
|
7807
|
+
"f.timeoutMs": "Таймаут (мс)",
|
|
7808
|
+
"f.timeoutMsHint": "Общий максимальный таймаут до признания запроса генерации неудачным.",
|
|
7809
|
+
"f.toolsetCreative": "Творческий набор инструментов",
|
|
7810
|
+
"f.toolsetCreativeHint": "Включить творческие инструменты: spritesheet, seamless_pattern, sketch_to_image, image_pack.",
|
|
7811
|
+
"f.toolsetDesign": "Набор инструментов для дизайна",
|
|
7812
|
+
"f.toolsetDesignHint": "Включить инструменты дизайна: style_matrix, theme_pair, ui_asset, character_sheet, beautify_diagram, anchor.",
|
|
7813
|
+
"f.toolsetFrontend": "Набор инструментов для фронтенда",
|
|
7814
|
+
"f.toolsetFrontendHint": "Включить инструменты фронтенда: extract_design_tokens, image_to_css_gradient, check_image_contrast, responsive_mockups.",
|
|
7815
|
+
"f.toolsetProcessing": "Набор инструментов для обработки",
|
|
7816
|
+
"f.toolsetProcessingHint": "Включить инструменты обработки: remove_background, upscale, vectorize, convert, grid, smart_crop, asset_pack, replace_image_text.",
|
|
7817
|
+
"f.toolsetProfile": "Профиль набора инструментов",
|
|
7818
|
+
"f.toolsetProfileHint": "Выбор инструментов, которые регистрируются в контексте: minimal (не больше 3 основных инструментов, экономия ~8k токенов промпта), all (30 инструментов) или свой.",
|
|
7819
|
+
"gallery.copy_link": "Копировать ссылку Markdown",
|
|
7820
|
+
"gallery.copy_prompt": "Копировать промпт",
|
|
7821
|
+
"gallery.empty": "Генераций пока нет. Сгенерированные изображения появятся здесь.",
|
|
7822
|
+
"gallery.inspector": "Сведения о генерации",
|
|
7823
|
+
"gallery.title": "Последние генерации",
|
|
7824
|
+
"inpaint.apply": "Применить дорисовку",
|
|
7825
|
+
"inpaint.brush": "Кисть",
|
|
7826
|
+
"inpaint.brush_size": "Размер",
|
|
7827
|
+
"inpaint.clear": "Очистить маску",
|
|
7828
|
+
"inpaint.copied": "✓ Инструкция скопирована.",
|
|
7829
|
+
"inpaint.eraser": "Ластик",
|
|
7830
|
+
"inpaint.invert": "Инвертировать маску",
|
|
7831
|
+
"inpaint.prompt_placeholder": "Опишите, что нужно сгенерировать в замаскированной области…",
|
|
7832
|
+
"inpaint.title": "Холст дорисовки (закрасьте белым маску над областью, которую нужно изменить)",
|
|
7833
|
+
"inpaint.undo": "Отменить",
|
|
7834
|
+
"label.settingsSections": "Разделы настроек",
|
|
7835
|
+
"matrix.blind_on": "Слепой режим включён",
|
|
7836
|
+
"matrix.blind_toggle": "Показать стили",
|
|
7837
|
+
"matrix.copied": "✓ Выбрано.",
|
|
7838
|
+
"matrix.title": "Тест матрицы стилей (2×2)",
|
|
7839
|
+
"matrix.use_style": "Применить стиль",
|
|
7840
|
+
"p.apiKeyEnv": "FAL_API_KEY",
|
|
7841
|
+
"p.approvalTimeoutSec": "120",
|
|
7842
|
+
"p.baseURL": "https://queue.fal.run",
|
|
7843
|
+
"p.cacheTtlDays": "0",
|
|
7844
|
+
"p.comfyWorkflowJson": "{«3»: {«class_type»: «KSampler», …}}",
|
|
7845
|
+
"p.customBaseURL": "https://api.openai.com/v1",
|
|
7846
|
+
"p.customKeyEnv": "OPENAI_API_KEY",
|
|
7847
|
+
"p.customModel": "dall-e-3",
|
|
7848
|
+
"p.customSize": "1024x1024",
|
|
7849
|
+
"p.dailyBudgetUsd": "0.00",
|
|
7850
|
+
"p.defaultStylePreset": "none",
|
|
7851
|
+
"p.enhanceBelowChars": "200",
|
|
7852
|
+
"p.enhanceModel": "Оставьте пустым, чтобы использовать модель беседы по умолчанию",
|
|
7853
|
+
"p.fallbackProviders": "replicate, custom, gemini",
|
|
7854
|
+
"p.geminiKeyEnv": "GEMINI_API_KEY",
|
|
7855
|
+
"p.geminiModel": "gemini-3.1-flash-image",
|
|
7856
|
+
"p.historyLimit": "50",
|
|
7857
|
+
"p.localA1111Url": "http://127.0.0.1:7860",
|
|
7858
|
+
"p.localBaseURL": "http://127.0.0.1:8188",
|
|
7859
|
+
"p.localCfg": "7",
|
|
7860
|
+
"p.localComfyUrl": "http://127.0.0.1:8188",
|
|
7861
|
+
"p.localModel": "v1-5-pruned-emaonly.safetensors",
|
|
7862
|
+
"p.localSteps": "20",
|
|
7863
|
+
"p.loopGuardLimit": "3",
|
|
7864
|
+
"p.model": "fal-ai/flux-2/klein/9b",
|
|
7865
|
+
"p.outputDir": "generated/images",
|
|
7866
|
+
"p.pollIntervalMs": "2000",
|
|
7867
|
+
"p.pruneDays": "0",
|
|
7868
|
+
"p.replicateKeyEnv": "REPLICATE_API_TOKEN",
|
|
7869
|
+
"p.replicateModel": "black-forest-labs/flux-schnell",
|
|
7870
|
+
"p.seedreamBaseURL": "https://api.bytedanceapi.com/v1",
|
|
7871
|
+
"p.seedreamKeyEnv": "SEEDREAM_API_KEY",
|
|
7872
|
+
"p.seedreamModel": "seedream-4.0",
|
|
7873
|
+
"p.timeoutMs": "180000",
|
|
7874
|
+
"remix.copied": "✓ Скопировано.",
|
|
7875
|
+
"remix.copy_instruction": "Копировать инструкцию",
|
|
7876
|
+
"remix.creative_btn": "Творческий (0.65)",
|
|
7877
|
+
"remix.creativity_label": "Творческая свобода / Сила удаления шума",
|
|
7878
|
+
"remix.drawer_title": "Рабочая область вариаций и смены стиля",
|
|
7879
|
+
"remix.prompt_placeholder": "Опишите стилистические правки, новый фон или варианты…",
|
|
7880
|
+
"remix.subtle_btn": "Едва заметный (0.25)",
|
|
7881
|
+
"settings.collapse": "Свернуть",
|
|
7882
|
+
"settings.credentialHint": "Ключи API хранятся в учётных данных DSH (~/.dsh/.credentials.yaml) и никогда не попадают в файлы конфигурации.",
|
|
7883
|
+
"settings.description": "Генерация ИИ-изображений, дорисовка, вариации, увеличение и векторизация.",
|
|
7884
|
+
"settings.discard": "Отменить изменения",
|
|
7885
|
+
"settings.expand": "Развернуть",
|
|
7886
|
+
"settings.invalidNumber": "Введите допустимое число",
|
|
7887
|
+
"settings.loading": "Загрузка настроек плагина…",
|
|
7888
|
+
"settings.navLabel": "Студия изображений",
|
|
7889
|
+
"settings.overridden": "переопределено",
|
|
7890
|
+
"settings.readOnly": "В этом контексте настройки доступны только для чтения.",
|
|
7891
|
+
"settings.reset": "Сбросить к значениям по умолчанию",
|
|
7892
|
+
"settings.save": "Сохранить настройки",
|
|
7893
|
+
"settings.saveFailed": "Не удалось сохранить настройки. Проверьте учётные данные и повторите.",
|
|
7894
|
+
"settings.saving": "Сохранение…",
|
|
7895
|
+
"settings.title": "Студия изображений",
|
|
7896
|
+
"settings.unavailable": "Настройки плагина недоступны: пространство имён настроек хоста ещё не готово.",
|
|
7897
|
+
"settings.unsaved": "Есть несохранённые изменения",
|
|
7898
|
+
"stat.active_provider": "Активный провайдер",
|
|
7899
|
+
"stat.approvalAuto": "Без подтверждения",
|
|
7900
|
+
"stat.approvalRequired": "Подтверждение включено",
|
|
7901
|
+
"stat.budget_cache": "Бюджет и кэш",
|
|
7902
|
+
"stat.cacheOff": "Выключено",
|
|
7903
|
+
"stat.cacheOn": "Кэш включён",
|
|
7904
|
+
"stat.format_size": "Формат и размер по умолчанию",
|
|
7905
|
+
"stat.gateActive": "Включено",
|
|
7906
|
+
"stat.gateOff": "Выключено",
|
|
7907
|
+
"stat.guard": "Защита: {n}",
|
|
7908
|
+
"stat.noLimit": "Без ограничения",
|
|
7909
|
+
"stat.safety_status": "Безопасность и защита от цикла",
|
|
7910
|
+
"studio.aspectRatio": "Соотношение сторон:",
|
|
7911
|
+
"studio.canvas": "Холст студии",
|
|
7912
|
+
"studio.copiedCommand": "Команда генерации скопирована в буфер обмена.",
|
|
7913
|
+
"studio.copiedSnippet": "Фрагмент скопирован в буфер обмена.",
|
|
7914
|
+
"studio.copyHtml": "Копировать HTML",
|
|
7915
|
+
"studio.copyMarkdown": "Копировать Markdown",
|
|
7916
|
+
"studio.download": "Скачать",
|
|
7917
|
+
"studio.emptyCanvas": "Выберите изображение в ленте ниже или нажмите «Сгенерировать».",
|
|
7918
|
+
"studio.exitFullscreen": "Выйти из полноэкранного режима",
|
|
7919
|
+
"studio.fullscreen": "Полноэкранный режим",
|
|
7920
|
+
"studio.generate": "Сгенерировать в беседе",
|
|
7921
|
+
"studio.parameters": "Параметры генерации",
|
|
7922
|
+
"studio.prompt": "Промпт:",
|
|
7923
|
+
"studio.promptPlaceholder": "Опишите замысел…",
|
|
7924
|
+
"studio.provider": "Провайдер:",
|
|
7925
|
+
"studio.random": "Случайный",
|
|
7926
|
+
"studio.randomizeSeed": "Случайный сид",
|
|
7927
|
+
"studio.recent": "Последние генерации",
|
|
7928
|
+
"studio.seed": "Сид (необязательно):",
|
|
7929
|
+
"studio.stylePreset": "Пресет стиля:",
|
|
7930
|
+
"studio.title": "Студия изображений",
|
|
7931
|
+
"studio.vault": "Хранилище ресурсов",
|
|
7932
|
+
"subtitle": "Генерация ИИ-изображений через нескольких провайдеров, редактирование, увеличение и векторизация.",
|
|
7933
|
+
"tab.cache": "Кэш и хранилище",
|
|
7934
|
+
"tab.enhancer": "Промпты и стили",
|
|
7935
|
+
"tab.gallery": "Галерея",
|
|
7936
|
+
"tab.general": "Общие",
|
|
7937
|
+
"tab.provider": "Провайдер",
|
|
7938
|
+
"tab.safety": "Безопасность и бюджет",
|
|
7939
|
+
"themePair.copiedCss": "CSS скопирован.",
|
|
7940
|
+
"themePair.copiedHtml": "HTML скопирован.",
|
|
7941
|
+
"themePair.copyCss": "Копировать CSS",
|
|
7942
|
+
"themePair.copyHtml": "Копировать HTML",
|
|
7943
|
+
"themePair.dark": "Тёмная",
|
|
7944
|
+
"themePair.light": "Светлая",
|
|
7945
|
+
"themePair.title": "Графика пары тем",
|
|
7946
|
+
"title": "Студия ИИ-изображений",
|
|
7947
|
+
"updater.check": "Проверить обновления",
|
|
7948
|
+
"updater.checking": "Проверяем…",
|
|
7949
|
+
"updater.current": "Текущая версия",
|
|
7950
|
+
"updater.failed": "Не удалось проверить обновление: ",
|
|
7951
|
+
"updater.latest": "Последняя версия",
|
|
7952
|
+
"updater.success": "Плагин успешно обновлён. Перезапустите службу DSH.",
|
|
7953
|
+
"updater.title": "Обновления плагинов",
|
|
7954
|
+
"updater.updateNow": "Обновить до v{version}",
|
|
7955
|
+
"updater.updating": "Обновляем…",
|
|
7956
|
+
"updater.upToDate": "Актуальная версия",
|
|
7957
|
+
"vault.allProviders": "Все провайдеры",
|
|
7958
|
+
"vault.allRatios": "Все соотношения",
|
|
7959
|
+
"vault.confirmDelete": "Вы уверены, что хотите удалить этот ресурс?",
|
|
7960
|
+
"vault.copiedMarkdown": "Фрагмент Markdown скопирован в буфер обмена.",
|
|
7961
|
+
"vault.copiedPrompt": "Промпт и сид скопированы в буфер обмена.",
|
|
7962
|
+
"vault.delete": "Удалить",
|
|
7963
|
+
"vault.deleted": "Ресурс удалён",
|
|
7964
|
+
"vault.deleteFailed": "Не удалось удалить ресурс",
|
|
7965
|
+
"vault.download": "Скачать",
|
|
7966
|
+
"vault.empty": "В хранилище нет ресурсов.",
|
|
7967
|
+
"vault.exportDesign": "🎨 OpenDesign",
|
|
7968
|
+
"vault.exportDesignCopied": "Фрагмент Figma/Penpot и Data-URL скопированы в буфер обмена.",
|
|
7969
|
+
"vault.exportDesignFailed": "Не удалось экспортировать фрагмент дизайна",
|
|
7970
|
+
"vault.insert": "Вставить в беседу",
|
|
7971
|
+
"vault.inspector": "Инспектор ресурсов",
|
|
7972
|
+
"vault.loading": "Загрузка…",
|
|
7973
|
+
"vault.loadMore": "Загрузить ещё ресурсы",
|
|
7974
|
+
"vault.newest": "Сначала новые",
|
|
7975
|
+
"vault.noPrompt": "Без промпта",
|
|
7976
|
+
"vault.oldest": "Сначала старые",
|
|
7977
|
+
"vault.provider": "Провайдер",
|
|
7978
|
+
"vault.reroll": "Перегенерировать по сиду",
|
|
7979
|
+
"vault.search": "Поиск по промпту или тегам…",
|
|
7980
|
+
"vault.seed": "Сид",
|
|
7981
|
+
"vault.title": "Обозреватель ресурсов и хранилище"
|
|
7982
|
+
},
|
|
7983
|
+
"dsh-kanban": {
|
|
7984
|
+
"acceptance.accept": "Принять (Готово)",
|
|
7985
|
+
"acceptance.acceptAndMerge": "Принять и слить (--no-ff)",
|
|
7986
|
+
"acceptance.merging": "Слитие…",
|
|
7987
|
+
"acceptance.reject": "Вернуть на доработку",
|
|
7988
|
+
"acceptance.rejectedAlert": "Возвращено на доработку: {reason}",
|
|
7989
|
+
"acceptance.rejectedBadge": "Доработка",
|
|
7990
|
+
"acceptance.rejectReasonPlaceholder": "Опишите, что нужно исправить или улучшить…",
|
|
7991
|
+
"acceptance.rejectSubmit": "Вернуть",
|
|
7992
|
+
"acceptance.rejectTitle": "Вернуть в работу",
|
|
7993
|
+
"acceptance.title": "Шлюз приёмки после проверки",
|
|
7994
|
+
"action.cancelWorkflow": "Отменить Workflow",
|
|
7995
|
+
"action.exportCsv": "Экспорт CSV (Excel)",
|
|
7996
|
+
"action.resume": "↻ Возобновить",
|
|
7997
|
+
"archive.empty": "Архив пуст.",
|
|
7998
|
+
"archive.hint": "Карточки, которые отслужили свой срок в колонке «Готово». Ничего не удаляется: восстановленная карточка возвращается в ту колонку, из которой вышла.",
|
|
7999
|
+
"archive.restore": "Вернуть на доску",
|
|
8000
|
+
"archive.since": "архивировано {ago} назад",
|
|
8001
|
+
"batch.hint": "Одна сессия на все задачи. Задачи выполняются по одной: агент берёт следующую, когда заканчивает текущую. В колонку «В работе» переходит только первая — остальные ждут своей очереди на своих местах.",
|
|
8002
|
+
"batch.start": "Начать",
|
|
8003
|
+
"batch.title": "Запуск задач в одном чате: {n}",
|
|
8004
|
+
"board.allRepos": "Все репозитории",
|
|
8005
|
+
"board.archive": "Архив",
|
|
8006
|
+
"board.back": "К чату",
|
|
8007
|
+
"board.backHint": "Закрыть доску и вернуться к диалогу",
|
|
8008
|
+
"board.clearFilters": "Сбросить фильтры",
|
|
8009
|
+
"board.collapse": "Свернуть колонку",
|
|
8010
|
+
"board.empty": "Задач пока нет.",
|
|
8011
|
+
"board.expand": "Развернуть колонку",
|
|
8012
|
+
"board.export": "Скачать",
|
|
8013
|
+
"board.exportHint": "Скачать всю доску в формате JSON",
|
|
8014
|
+
"board.import": "Импорт",
|
|
8015
|
+
"board.imported": "Импортировано задач: {n}",
|
|
8016
|
+
"board.limit": "лимит {n}",
|
|
8017
|
+
"board.loading": "Загружаем доску…",
|
|
8018
|
+
"board.metrics": "Метрики",
|
|
8019
|
+
"board.mine": "Мои: {n}",
|
|
8020
|
+
"board.mineHint": "Задачи, назначенные на {who}",
|
|
8021
|
+
"board.newTask": "Задача",
|
|
8022
|
+
"board.noMatch": "Ничего не найдено по запросу.",
|
|
8023
|
+
"board.noRepo": "без проекта",
|
|
8024
|
+
"board.overdueCount": "Просрочено: {n}",
|
|
8025
|
+
"board.overdueHint": "Показывать только просроченные задачи",
|
|
8026
|
+
"board.pickArchive": "В архив",
|
|
8027
|
+
"board.pickedCount": "выбрано: {n}",
|
|
8028
|
+
"board.pickMove": "Переместить в…",
|
|
8029
|
+
"board.pickNone": "Снять выделение",
|
|
8030
|
+
"board.pickStart": "Запустить выбранные",
|
|
8031
|
+
"board.pickUnqueue": "Убрать из очереди",
|
|
8032
|
+
"board.refresh": "Обновить",
|
|
8033
|
+
"board.repo": "репозиторий",
|
|
8034
|
+
"board.search": "Поиск",
|
|
8035
|
+
"board.shown": "показано {shown} из {total}",
|
|
8036
|
+
"board.someFailed": "Готово для {done} из {total}; остальные отказались.",
|
|
8037
|
+
"board.sync": "Проверить Gitea",
|
|
8038
|
+
"board.syncing": "Проверяем…",
|
|
8039
|
+
"board.waitCount": "Ждут вас: {n}",
|
|
8040
|
+
"board.waitCountHint": "Задачи, где агент задал вопрос или хочет разрешения.",
|
|
8041
|
+
"board.waiting": "ждёт вас",
|
|
8042
|
+
"boardName.main": "Доска проекта",
|
|
8043
|
+
"boardName.simple": "Простая доска",
|
|
8044
|
+
"card.assigneeHint": "Кто взял задачу",
|
|
8045
|
+
"card.costLimitExceeded": "Превышен лимит расходов",
|
|
8046
|
+
"card.due": "до {date}",
|
|
8047
|
+
"card.move": "переместить",
|
|
8048
|
+
"card.nudge": "Подтолкнуть",
|
|
8049
|
+
"card.nudgeHint": "Отправить указание работающему агенту",
|
|
8050
|
+
"card.pack": "пакет {at} из {total}",
|
|
8051
|
+
"card.packHint": "Запущены вместе, одна сессия; агент берёт их в таком порядке.",
|
|
8052
|
+
"card.pick": "Выбрать для группового запуска",
|
|
8053
|
+
"card.queue": "в очередь…",
|
|
8054
|
+
"card.revive": "возобновить работу",
|
|
8055
|
+
"card.stop": "остановить",
|
|
8056
|
+
"card.toChat": "к чату",
|
|
8057
|
+
"card.unqueue": "убрать из очереди",
|
|
8058
|
+
"checklist.add": "Добавить",
|
|
8059
|
+
"checklist.empty": "Пункты DoD пока не заданы.",
|
|
8060
|
+
"checklist.evidence": "Подтверждение: {text}",
|
|
8061
|
+
"checklist.placeholder": "Новый критерий DoD…",
|
|
8062
|
+
"checklist.progress": "DoD: {done}/{total}",
|
|
8063
|
+
"checklist.required": "Обязательный",
|
|
8064
|
+
"checklist.title": "Определение готовности (DoD)",
|
|
8065
|
+
"chip.moveTo": "Переместить в",
|
|
8066
|
+
"chip.note": "Оставить заметку",
|
|
8067
|
+
"chip.noteHint": "Заметка дописывается в тело задачи. Тело уходит агенту вместе с первым сообщением, поэтому заметка, оставленная до старта, попадёт в работу, а оставленная после — нет.",
|
|
8068
|
+
"chip.noteSave": "Дописать",
|
|
8069
|
+
"chip.openCard": "Открыть карточку",
|
|
8070
|
+
"column.backlog": "Бэклог",
|
|
8071
|
+
"column.cleanup": "Очистка",
|
|
8072
|
+
"column.deploy": "Развёртывание",
|
|
8073
|
+
"column.done": "Готово",
|
|
8074
|
+
"column.in-progress": "В работе",
|
|
8075
|
+
"column.review": "Проверка",
|
|
8076
|
+
"comments.add": "Отправить комментарий",
|
|
8077
|
+
"comments.authorAgent": "Агент",
|
|
8078
|
+
"comments.authorUser": "Пользователь",
|
|
8079
|
+
"comments.empty": "Комментариев пока нет.",
|
|
8080
|
+
"comments.placeholder": "Добавьте заметку или отзыв…",
|
|
8081
|
+
"comments.title": "Обсуждение и комментарии",
|
|
8082
|
+
"console.empty": "Вывод агента пока не записан.",
|
|
8083
|
+
"console.tab": "Живая консоль",
|
|
8084
|
+
"costMeter.active": "Плагин @goodandready/dsh-cost-meter включён",
|
|
8085
|
+
"costMeter.inactive": "Плагин @goodandready/dsh-cost-meter не обнаружен",
|
|
8086
|
+
"costMeter.notice": "Для учёта расходов и токенов нужен установленный и включённый в профиле DSH плагин @goodandready/dsh-cost-meter.",
|
|
8087
|
+
"dialog.archived": "в архиве",
|
|
8088
|
+
"dialog.bodyHint": "Уходит агенту первым сообщением при запуске задачи.",
|
|
8089
|
+
"dialog.cancel": "Отмена",
|
|
8090
|
+
"dialog.create": "Создать",
|
|
8091
|
+
"dialog.fromGitea": "Из Gitea",
|
|
8092
|
+
"dialog.imported": "уже на доске",
|
|
8093
|
+
"dialog.kind": "Какая задача",
|
|
8094
|
+
"dialog.kindPlain": "Не проект",
|
|
8095
|
+
"dialog.kindPlainHint": "Заметка, не связанная с репозиторием. Она живёт на простой доске и никогда не попадает в Gitea.",
|
|
8096
|
+
"dialog.kindProject": "Проект",
|
|
8097
|
+
"dialog.kindProjectHint": "В Gitea создаётся задача, и карточка привязывается к ней. Карточка живёт на доске проекта.",
|
|
8098
|
+
"dialog.labelsHint": "через запятую",
|
|
8099
|
+
"dialog.loadingRepos": "Загружаем репозитории…",
|
|
8100
|
+
"dialog.noIssues": "Открытых задач в Gitea не найдено.",
|
|
8101
|
+
"dialog.noRepos": "Репозитории недоступны",
|
|
8102
|
+
"dialog.own": "Своя задача",
|
|
8103
|
+
"dialog.pickRepo": "Выберите репозиторий",
|
|
8104
|
+
"dialog.repo": "Репозиторий",
|
|
8105
|
+
"dialog.repoNamePlaceholder": "название нового репозитория",
|
|
8106
|
+
"dialog.repoNew": "— новый репозиторий —",
|
|
8107
|
+
"dialog.repoNewHint": "Репозиторий будет создан в организации: приватный и пустой, без README и без заготовок. Создание репозитория нельзя отменить отсюда.",
|
|
8108
|
+
"dialog.taskBody": "Описание",
|
|
8109
|
+
"dialog.taskColumn": "Колонка",
|
|
8110
|
+
"dialog.taskLabels": "Метки",
|
|
8111
|
+
"dialog.taskTitle": "Заголовок",
|
|
8112
|
+
"dialog.title": "Новая задача",
|
|
8113
|
+
"diff.commits": "Коммиты ({n})",
|
|
8114
|
+
"diff.confirmDiscard": "Отклонить изменения в {file}?",
|
|
8115
|
+
"diff.discard": "Отклонить изменения",
|
|
8116
|
+
"diff.empty": "В рабочем дереве изменений не обнаружено.",
|
|
8117
|
+
"diff.filesChanged": "Изменённых файлов: {n}",
|
|
8118
|
+
"diff.hide": "Скрыть различия",
|
|
8119
|
+
"diff.show": "Показать различия",
|
|
8120
|
+
"diff.title": "Изменения Git и различия",
|
|
8121
|
+
"diff.truncated": "Различия обрезаны (превышен предел)",
|
|
8122
|
+
"discard": "Отклонить",
|
|
8123
|
+
"epic.addSubtask": "Добавить подзадачу",
|
|
8124
|
+
"epic.badge": "Эпик",
|
|
8125
|
+
"epic.createGiteaIssues": "Также создать связанные задачи в Gitea",
|
|
8126
|
+
"epic.noSubtasks": "Подзадач пока нет.",
|
|
8127
|
+
"epic.progress": "подзадач: {done}/{total}",
|
|
8128
|
+
"epic.subtasks": "Подзадачи",
|
|
8129
|
+
"epic.triage": "Разбор / Декомпозиция",
|
|
8130
|
+
"epic.triageHelp": "Введите по одному названию подзадачи в строке. Дочерние задачи будут связаны с этим эпиком.",
|
|
8131
|
+
"epic.triageSubmit": "Создать подзадачи",
|
|
8132
|
+
"epic.triageTitle": "Разбить задачу на подзадачи",
|
|
8133
|
+
"error.bad-repo-name": "Имя репозитория может содержать только латинские буквы, цифры, точку, дефис и подчёркивание.",
|
|
8134
|
+
"error.badImport": "Этот файл не является корректной резервной копией доски.",
|
|
8135
|
+
"error.crossSite": "Запрос отклонён как межсайтовый.",
|
|
8136
|
+
"error.gitea-unreachable": "Gitea не ответил, поэтому некому взять задачу.",
|
|
8137
|
+
"error.giteaAbsent": "Плагин Gitea не установлен, поэтому импорт недоступен.",
|
|
8138
|
+
"error.giteaUnconfigured": "Сначала настройте Gitea в карточке плагина Gitea.",
|
|
8139
|
+
"error.issue-not-created": "Задача в Gitea не создана. Если репозиторий был новым, он остался — ничего не удалено.",
|
|
8140
|
+
"error.issueNotFound": "Задача в Gitea не найдена.",
|
|
8141
|
+
"error.modelNotSelected": "Модель не выбрана — выберите её в настройках или укажите здесь.",
|
|
8142
|
+
"error.no-live-sessions": "Нет работающей сессии, в очередь которой можно добавить задачу.",
|
|
8143
|
+
"error.permission-refused": "В доступе отказано; задача не запущена.",
|
|
8144
|
+
"error.permission-unavailable": "В этом развёртывании нет уровней доступа — задача не запущена, поэтому выполнить её с правами выше запрошенных не удалось.",
|
|
8145
|
+
"error.repo-not-created": "Репозиторий не создан; больше ничего не сделано.",
|
|
8146
|
+
"error.repo-required": "Выберите репозиторий или укажите название нового.",
|
|
8147
|
+
"error.session-not-live": "Эта сессия больше не работает.",
|
|
8148
|
+
"error.sessionNotOpened": "Сессия запущена ({id}), но эта сборка не может переключиться на неё. Найдите её в списке сессий.",
|
|
8149
|
+
"error.startFailed": "Не удалось запустить сессию.",
|
|
8150
|
+
"error.task-not-queued": "Эта задача не в очереди.",
|
|
8151
|
+
"error.taskHasNoIssue": "У этой задачи нет связанной задачи в Gitea.",
|
|
8152
|
+
"error.taskNotFound": "Задача не найдена.",
|
|
8153
|
+
"error.timeout": "Время ожидания запроса истекло. Попробуйте ещё раз.",
|
|
8154
|
+
"error.titleRequired": "Заголовок обязателен.",
|
|
8155
|
+
"error.unknown": "Запрос не выполнен.",
|
|
8156
|
+
"facet.assignee": "Исполнитель",
|
|
8157
|
+
"facet.author": "Автор",
|
|
8158
|
+
"facet.priority": "Приоритет",
|
|
8159
|
+
"facet.release": "Релиз",
|
|
8160
|
+
"facet.repo": "Репозиторий",
|
|
8161
|
+
"facet.risk": "Риск",
|
|
8162
|
+
"facet.scope": "Область",
|
|
8163
|
+
"facet.signal": "Сигнал",
|
|
8164
|
+
"facet.status": "Статус",
|
|
8165
|
+
"facet.type": "Тип",
|
|
8166
|
+
"field.announceToAgent": "Передавать доску в системном промпте",
|
|
8167
|
+
"field.archiveAfterDays": "Срок архивации готовой карточки (дни)",
|
|
8168
|
+
"field.autoSyncSessions": "Автосинхронизация внешних чат-сессий",
|
|
8169
|
+
"field.boardToolEnabled": "Разрешить агенту перемещать карточки",
|
|
8170
|
+
"field.columnNames": "Свои названия колонок",
|
|
8171
|
+
"field.costMeterEnabled": "Телеметрия Cost Meter",
|
|
8172
|
+
"field.cronEnabled": "Включить cron задач на стороне хоста",
|
|
8173
|
+
"field.defaultProjectRoot": "Корень проекта",
|
|
8174
|
+
"field.giteaOwner": "Организация Gitea",
|
|
8175
|
+
"field.giteaTokenRef": "Имя учётных данных",
|
|
8176
|
+
"field.giteaUrl": "URL экземпляра",
|
|
8177
|
+
"field.githubOwner": "Организация или пользователь GitHub",
|
|
8178
|
+
"field.githubTokenRef": "Токен учётных данных GitHub",
|
|
8179
|
+
"field.githubWebhookSecretRef": "Секрет вебхука GitHub",
|
|
8180
|
+
"field.gitProvider": "Провайдер Git",
|
|
8181
|
+
"field.maxConcurrentSessions": "Максимум одновременных сессий агента",
|
|
8182
|
+
"field.permissionGateEnabled": "Включить шлюз подтверждения разрешений",
|
|
8183
|
+
"field.preventIdleSleep": "Не давать системе засыпать в простое",
|
|
8184
|
+
"field.progressDumpEnabled": "Включить передачи PROGRESSDUMP",
|
|
8185
|
+
"field.pushToGitea": "Закрывать задачу в Gitea",
|
|
8186
|
+
"field.replyInstruction": "Постоянная заметка",
|
|
8187
|
+
"field.sessionDefaultPermission": "Базовый уровень разрешений по умолчанию",
|
|
8188
|
+
"field.staleAfterMin": "Срок молчания задачи (минуты)",
|
|
8189
|
+
"field.startPrompt": "Шаблон первого сообщения",
|
|
8190
|
+
"field.syncIntervalSec": "Интервал проверки Gitea (секунды)",
|
|
8191
|
+
"field.taskCostLimit": "Лимит расходов на задачу (USD)",
|
|
8192
|
+
"field.verificationCommand": "Команда проверки",
|
|
8193
|
+
"field.verificationGateEnabled": "Шлюз проверки",
|
|
8194
|
+
"field.verificationTimeoutMs": "Тайм-аут проверки (мс)",
|
|
8195
|
+
"field.watchRepos": "Ограничить сбор этими репозиториями",
|
|
8196
|
+
"field.webhookSecretRef": "Имя учётных данных вебхука",
|
|
8197
|
+
"field.wipInProgress": "Лимит колонки «В работе»",
|
|
8198
|
+
"field.wipReview": "Лимит колонки «Проверка»",
|
|
8199
|
+
"field.workspaceClaimBoundaries": "Границы закрепления рабочей области",
|
|
8200
|
+
"field.worktreeIsolation": "Изолировать задачи в рабочих деревьях git",
|
|
8201
|
+
"field.worktreeRoot": "Каталог рабочих деревьев",
|
|
8202
|
+
"filter.active": "Активные",
|
|
8203
|
+
"filter.all": "Все",
|
|
8204
|
+
"filter.epics": "Эпики",
|
|
8205
|
+
"filter.review": "Проверка",
|
|
8206
|
+
"filter.stale": "Молчащие",
|
|
8207
|
+
"group.assignee": "По исполнителю",
|
|
8208
|
+
"group.forge": "Git-фордж",
|
|
8209
|
+
"group.general": "Общее",
|
|
8210
|
+
"group.gitea": "Gitea",
|
|
8211
|
+
"group.github": "GitHub",
|
|
8212
|
+
"group.limits": "Лимиты колонок",
|
|
8213
|
+
"group.nobody": "никто не взял",
|
|
8214
|
+
"group.repo": "По проекту",
|
|
8215
|
+
"group.sync": "Автоматические переходы",
|
|
8216
|
+
"hint.announceToAgent": "Добавляет раздел с указаниями в системный промпт агента.",
|
|
8217
|
+
"hint.archiveAfterDays": "Считается с момента, когда карточка попала в «Готово». Ноль оставляет всё на доске.",
|
|
8218
|
+
"hint.autoSyncSessions": "Автоматически создаёт карточки доски для обычных диалогов DSH.",
|
|
8219
|
+
"hint.boardToolEnabled": "Выключено, пока навык workflow запрещает этой CLI работать с канбаном.",
|
|
8220
|
+
"hint.columnNames": "Пары «id=Название» через запятую, например «backlog=Идеи, review=Проверка». Пустое значение оставляет обычные названия.",
|
|
8221
|
+
"hint.costMeterEnabled": "Включает интеграцию телеметрии токенов и расходов через @goodandready/dsh-cost-meter.",
|
|
8222
|
+
"hint.cronEnabled": "Запускает задачи по пятисегментному cron на хосте, даже если браузер закрыт.",
|
|
8223
|
+
"hint.defaultProjectRoot": "Где живут рабочие копии проектов. Пустое значение — рабочий каталог Harness.",
|
|
8224
|
+
"hint.giteaOwner": "Чьи репозитории отслеживает доска. Пустое значение подходит, пока токен принадлежит ровно одной организации.",
|
|
8225
|
+
"hint.giteaTokenRef": "ИМЯ учётных данных DSH, в которых хранится токен. Никогда не вводите сам токен сюда.",
|
|
8226
|
+
"hint.giteaUrl": "Например https://gitea.example.com. Пустое значение означает, что импорт недоступен.",
|
|
8227
|
+
"hint.githubOwner": "Учётная запись GitHub, отслеживаемая по умолчанию. Пустое значение — авторизованный пользователь.",
|
|
8228
|
+
"hint.githubTokenRef": "Имя учётных данных DSH, в которых хранится PAT или токен приложения GitHub. Никогда не вводите сам токен.",
|
|
8229
|
+
"hint.githubWebhookSecretRef": "Имя учётных данных DSH, в которых хранится секрет вебхука GitHub (HMAC-SHA256).",
|
|
8230
|
+
"hint.gitProvider": "Активный фордж: «auto» (определять по учётным данным), «gitea» или «github».",
|
|
8231
|
+
"hint.label": "Пустое значение — для этой колонки метка не задана.",
|
|
8232
|
+
"hint.limit": "Ноль — без ограничения. Превышение подсвечивается, но не блокируется.",
|
|
8233
|
+
"hint.permissionGateEnabled": "Требует ручного подтверждения пользователя перед запуском задач с повышенными разрешениями.",
|
|
8234
|
+
"hint.preventIdleSleep": "Не даёт хосту уснуть, пока задачи выполняются или стоят наготове.",
|
|
8235
|
+
"hint.progressDumpEnabled": "Захватывает дампы прогресса сессии и даёт чистые вступления следующим агентам.",
|
|
8236
|
+
"hint.pushToGitea": "Карточка, дошедшая до «Готово», закрывает свою задачу в Gitea. Доска метки не ставит: шаг и так виден по ветке и запросу на слияние.",
|
|
8237
|
+
"hint.replyInstruction": "Дописывается к каждому первому сообщению — например, язык ответа. Пустое значение ничего не добавляет.",
|
|
8238
|
+
"hint.sessionDefaultPermission": "Задачи, запрашивающие разрешения выше этого уровня, требуют подтверждения.",
|
|
8239
|
+
"hint.staleAfterMin": "Отмечаются только задачи, у которых есть сессия. Ноль отключает отметку.",
|
|
8240
|
+
"hint.startPrompt": "Шаблон первого сообщения агенту. Пустое значение — встроенный шаблон.",
|
|
8241
|
+
"hint.syncIntervalSec": "Ноль отключает проверку. Значение меньше пятнадцати секунд поднимается до пятнадцати.",
|
|
8242
|
+
"hint.taskCostLimit": "Порог расходов на задачу в USD; 0 отключает предупреждения о пороге.",
|
|
8243
|
+
"hint.verificationCommand": "Команда проверки по умолчанию, выполняемая в рабочем дереве задачи перед переходом в «Проверка» (по умолчанию: npm test).",
|
|
8244
|
+
"hint.verificationGateEnabled": "Запускает автоматический шлюз проверки (например, npm test), прежде чем разрешить карточкам перейти в «Проверка».",
|
|
8245
|
+
"hint.verificationTimeoutMs": "Тайм-аут выполнения шлюза проверки в миллисекундах (по умолчанию: 120000).",
|
|
8246
|
+
"hint.watchRepos": "Через запятую: «owner/repo» или только «repo». Пустое значение — все репозитории организации, где есть открытые задачи.",
|
|
8247
|
+
"hint.webhookSecretRef": "ИМЯ учётных данных DSH, в которых хранится секрет вебхука Gitea. Пустое значение оставляет только опрос.",
|
|
8248
|
+
"hint.worktreeIsolation": "Создаёт отдельное рабочее дерево git для каждой сессии задачи, чтобы файлы не конфликтовали.",
|
|
8249
|
+
"hint.worktreeRoot": "Свой каталог для рабочих деревьев задач. Оставьте пустым, чтобы использовать $DSH_HOME/worktrees.",
|
|
8250
|
+
"metrics.columns": "Время в колонке",
|
|
8251
|
+
"metrics.empty": "Переходов пока нет — измерять нечего.",
|
|
8252
|
+
"metrics.hint": "Задач на доске: {n} · готово за неделю: {week} · за месяц: {month}",
|
|
8253
|
+
"metrics.mean": "среднее {time}",
|
|
8254
|
+
"metrics.median": "медиана {time}",
|
|
8255
|
+
"metrics.noStale": "Ничего не лежит так долго.",
|
|
8256
|
+
"metrics.stale": "Стоит без движения дольше {days} дн.",
|
|
8257
|
+
"move.backlog": "Работа над задачей останавливается: текущий раунд агента прерывается. Если сессии нет, карточка просто переезжает.",
|
|
8258
|
+
"move.cleanup": "Агент удаляет ветку Gitea, рабочее дерево и локальную ветку и записывает это в задачу в Gitea.",
|
|
8259
|
+
"move.confirm": "Переместить",
|
|
8260
|
+
"move.deploy": "Агент сливает запрос на слияние и выполняет развёртывание. Этот переход — ваше явное согласие на развёртывание, агент больше не спросит.",
|
|
8261
|
+
"move.done": "Задача считается выполненной. Это решение человека: агент сам никогда не переносит сюда карточки.",
|
|
8262
|
+
"move.in-progress": "Агенту дано указание начать или продолжить реализацию.",
|
|
8263
|
+
"move.review": "Агент передаёт работу на проверку: снимает отметку «черновик» с запроса на слияние и просит проверить.",
|
|
8264
|
+
"move.title": "Переместить в «{column}»?",
|
|
8265
|
+
"nudge.failed": "Не удалось доставить указание",
|
|
8266
|
+
"nudge.placeholder": "Введите немедленное указание или поправку для агента…",
|
|
8267
|
+
"nudge.send": "Отправить",
|
|
8268
|
+
"nudge.sending": "Отправляем…",
|
|
8269
|
+
"nudge.success": "Указание доставлено агенту",
|
|
8270
|
+
"nudge.title": "Управление в реальном времени",
|
|
8271
|
+
"order.manual": "Как разложено",
|
|
8272
|
+
"order.new": "Сначала новые",
|
|
8273
|
+
"order.old": "Сначала старые",
|
|
8274
|
+
"panel.agentPreset": "Профиль агента",
|
|
8275
|
+
"panel.archive": "В архив",
|
|
8276
|
+
"panel.assignDrop": "Отпустить здесь",
|
|
8277
|
+
"panel.assignee": "исполнитель: {who}",
|
|
8278
|
+
"panel.assignMe": "Взять",
|
|
8279
|
+
"panel.author": "автор: {who}",
|
|
8280
|
+
"panel.bodyLoading": "читаем описание…",
|
|
8281
|
+
"panel.cleanupWorktree": "Очистить рабочее дерево",
|
|
8282
|
+
"panel.close": "Закрыть",
|
|
8283
|
+
"panel.continue": "Продолжить",
|
|
8284
|
+
"panel.continueHint": "У задачи остаётся свой чат: открывается существующая сессия, а не новая.",
|
|
8285
|
+
"panel.created": "создано {ago} назад",
|
|
8286
|
+
"panel.delete": "Удалить",
|
|
8287
|
+
"panel.deleteConfirm": "Удалить «{title}»? Это нельзя отменить.",
|
|
8288
|
+
"panel.due": "Срок выполнения",
|
|
8289
|
+
"panel.issue": "Задача в Gitea",
|
|
8290
|
+
"panel.labels": "Метки",
|
|
8291
|
+
"panel.log": "Переходы",
|
|
8292
|
+
"panel.message": "Сообщение агенту",
|
|
8293
|
+
"panel.messageHint": "Отредактируйте перед отправкой. Пустое значение — встроенный текст.",
|
|
8294
|
+
"panel.model": "Модель",
|
|
8295
|
+
"panel.noLog": "Переходов пока нет.",
|
|
8296
|
+
"panel.noModels": "Этот провайдер не предлагает моделей",
|
|
8297
|
+
"panel.noProviders": "Провайдеры недоступны",
|
|
8298
|
+
"panel.openChat": "Открыть чат",
|
|
8299
|
+
"panel.permission": "Уровень доступа",
|
|
8300
|
+
"panel.pickModel": "Выберите модель",
|
|
8301
|
+
"panel.pickProvider": "Выберите провайдера",
|
|
8302
|
+
"panel.pickProviderFirst": "Сначала выберите провайдера",
|
|
8303
|
+
"panel.presetDefault": "По умолчанию Harness",
|
|
8304
|
+
"panel.priority": "Приоритет",
|
|
8305
|
+
"panel.priorityNone": "Без приоритета",
|
|
8306
|
+
"panel.provider": "Провайдер",
|
|
8307
|
+
"panel.refresh": "Обновить из Gitea",
|
|
8308
|
+
"panel.saveEdit": "Сохранить",
|
|
8309
|
+
"panel.start": "Запустить",
|
|
8310
|
+
"panel.startHint": "Для этой задачи открывается отдельная сессия агента. Ветку и рабочее дерево создаёт агент после своей подготовки, а не здесь.",
|
|
8311
|
+
"panel.starting": "Запускаем…",
|
|
8312
|
+
"panel.startWorkflow": "⚡ Workflow",
|
|
8313
|
+
"panel.startWorkflowHint": "Запустить мультиагентный workflow через базовый движок workflow",
|
|
8314
|
+
"panel.updated": "последнее изменение {ago} назад",
|
|
8315
|
+
"panel.verificationFailed": "Автоматическая проверка перед переводом в «Ревью» не пройдена",
|
|
8316
|
+
"panel.workDir": "Рабочая папка: {path}",
|
|
8317
|
+
"panel.workDirHint": "Корень проекта не задан в настройках, поэтому используется эта папка.",
|
|
8318
|
+
"panel.worktree": "Рабочее дерево: {path}",
|
|
8319
|
+
"panel.worktreeDirty": "Незакоммиченные изменения в рабочем дереве: {files}",
|
|
8320
|
+
"plan.counter": "{done} из {total}",
|
|
8321
|
+
"plan.title": "План агента",
|
|
8322
|
+
"pr.create": "Создать PR в Gitea",
|
|
8323
|
+
"pr.created": "Создан PR #{n}",
|
|
8324
|
+
"pr.creating": "Создание PR…",
|
|
8325
|
+
"pr.view": "Посмотреть PR",
|
|
8326
|
+
"priority.high": "Высокий",
|
|
8327
|
+
"priority.low": "Низкий",
|
|
8328
|
+
"priority.medium": "Средний",
|
|
8329
|
+
"queue.add": "В очередь",
|
|
8330
|
+
"queue.hint": "Задача попадает в очередь сессии: агент возьмёт её, когда закончит текущую работу. До этого карточка остаётся на месте.",
|
|
8331
|
+
"queue.option": "{title} — задач: {n}",
|
|
8332
|
+
"queue.session": "Сессия",
|
|
8333
|
+
"queue.title": "Добавить в работающую сессию",
|
|
8334
|
+
"reasoning.default": "По умолчанию (модель)",
|
|
8335
|
+
"reasoning.high": "Высокий (глубокое мышление)",
|
|
8336
|
+
"reasoning.label": "Уровень рассуждения",
|
|
8337
|
+
"reasoning.low": "Низкий (быстро / экономно)",
|
|
8338
|
+
"reasoning.medium": "Средний (сбалансированно)",
|
|
8339
|
+
"report.artifacts": "Артефакты",
|
|
8340
|
+
"report.changedFiles": "Изменённые файлы",
|
|
8341
|
+
"report.checksRun": "Проверки",
|
|
8342
|
+
"report.risks": "Риски и заметки",
|
|
8343
|
+
"report.summary": "Сводка",
|
|
8344
|
+
"report.title": "Отчёт о выполнении",
|
|
8345
|
+
"revive.fresh": "Старая сессия исчезла, поэтому началась новая; прежней беседы больше нет.",
|
|
8346
|
+
"revive.same": "Старая сессия вернулась — беседа там, где вы её оставили.",
|
|
8347
|
+
"save": "Сохранить",
|
|
8348
|
+
"section.label": "Канбан",
|
|
8349
|
+
"settings.loading": "Загрузка настроек…",
|
|
8350
|
+
"settings.readOnly": "В этой сессии настройки доступны только для чтения.",
|
|
8351
|
+
"settings.saved": "Сохранено.",
|
|
8352
|
+
"settings.saveFailed": "Не удалось сохранить: {fields}",
|
|
8353
|
+
"settings.unavailable": "Хост не знает пространство настроек dsh-kanban. После установки плагина перезапустите веб-интерфейс.",
|
|
8354
|
+
"slash.hint": "Введите / для команд и навыков",
|
|
8355
|
+
"state.queued": "в очереди · {n}",
|
|
8356
|
+
"state.running": "в работе",
|
|
8357
|
+
"state.stopped": "остановлено",
|
|
8358
|
+
"stop.idle": "Агент не работал — останавливать было нечего.",
|
|
8359
|
+
"stop.no-session": "У этой задачи нет сессии.",
|
|
8360
|
+
"subtitle": "Доска задач: задачи Gitea и отдельная сессия на каждую задачу",
|
|
8361
|
+
"sync.failed": "проверка не проходит",
|
|
8362
|
+
"sync.lastSeen": "последняя успешная проверка {ago} назад",
|
|
8363
|
+
"sync.never": "ещё не проверялось в Gitea",
|
|
8364
|
+
"sync.neverSeen": "с момента запуска Harness успешных проверок не было",
|
|
8365
|
+
"sync.okAgo": "проверено {ago} назад",
|
|
8366
|
+
"sync.running": "проверка в Gitea…",
|
|
8367
|
+
"task.confirmPermission": "Подтвердить разрешение",
|
|
8368
|
+
"task.cron": "Расписание Cron",
|
|
8369
|
+
"task.nextRun": "Следующий запуск: {date}",
|
|
8370
|
+
"task.noRuns": "Запусков пока нет",
|
|
8371
|
+
"task.permissionConfirmed": "Разрешение подтверждено",
|
|
8372
|
+
"task.permissionGateWarning": "Требуется подтверждение для повышенного разрешения ({permission})",
|
|
8373
|
+
"task.progressDump": "Снимок прогресса (передача)",
|
|
8374
|
+
"task.runs": "История выполнения",
|
|
8375
|
+
"telemetry.cache": "Из кэша",
|
|
8376
|
+
"telemetry.cost": "Расчётная стоимость",
|
|
8377
|
+
"telemetry.input": "Ввод",
|
|
8378
|
+
"telemetry.limit": "Лимит бюджета",
|
|
8379
|
+
"telemetry.output": "Вывод",
|
|
8380
|
+
"telemetry.title": "Телеметрия ресурсов",
|
|
8381
|
+
"telemetry.tokens": "Токены",
|
|
8382
|
+
"template.bugfix": "Исправление ошибки (устранение дефекта)",
|
|
8383
|
+
"template.feature": "Функция (новая функциональность)",
|
|
8384
|
+
"template.label": "Шаблон задачи",
|
|
8385
|
+
"template.none": "Нет (пустой шаблон)",
|
|
8386
|
+
"template.refactor": "Рефакторинг (очистка кода)",
|
|
8387
|
+
"template.release": "Релиз (подготовка релиза)",
|
|
8388
|
+
"template.security": "Безопасность (аудит и CVE)",
|
|
8389
|
+
"time.day": "{n} д",
|
|
8390
|
+
"time.hour": "{n} ч",
|
|
8391
|
+
"time.min": "{n} мин",
|
|
8392
|
+
"time.now": "только что",
|
|
8393
|
+
"title": "Канбан",
|
|
8394
|
+
"updater.check": "Проверить обновления",
|
|
8395
|
+
"updater.checking": "Проверка…",
|
|
8396
|
+
"updater.current": "Текущая версия",
|
|
8397
|
+
"updater.failed": "Не удалось проверить обновления: ",
|
|
8398
|
+
"updater.latest": "Последняя версия",
|
|
8399
|
+
"updater.success": "Плагин успешно обновлён. Перезапустите службу DSH.",
|
|
8400
|
+
"updater.title": "Обновления плагинов",
|
|
8401
|
+
"updater.updateNow": "Обновить до v{version}",
|
|
8402
|
+
"updater.updating": "Обновление…",
|
|
8403
|
+
"updater.upToDate": "Всё актуально"
|
|
8404
|
+
},
|
|
8405
|
+
"dsh-voice": {
|
|
8406
|
+
"addCustom": "Добавить своего провайдера",
|
|
8407
|
+
"addMacro": "Добавить макрос",
|
|
8408
|
+
"addProvider": "Добавить провайдера",
|
|
8409
|
+
"assistantSpeakingGated": "Ассистент говорит (режим приглушения)",
|
|
8410
|
+
"autoSendVisualRing": "Анимация обратного отсчёта кольца тишины",
|
|
8411
|
+
"avgLatency": "Средняя задержка",
|
|
8412
|
+
"badgeHostOffline": "Хост недоступен",
|
|
8413
|
+
"badgeHostOnline": "Хост на связи ({ms} мс)",
|
|
8414
|
+
"badgeProviders": "Провайдеров готово: {count}",
|
|
8415
|
+
"badgeSenseVoiceActive": "SenseVoice активен",
|
|
8416
|
+
"badgeSenseVoiceInactive": "SenseVoice не в сети",
|
|
8417
|
+
"badgeWhisperActive": "Whisper активен",
|
|
8418
|
+
"badgeWhisperInactive": "Whisper не в сети",
|
|
8419
|
+
"bargeIn": "Перебивание",
|
|
8420
|
+
"bargeInDesc": "Настоящее перебивание (ваша речь прерывает речь ассистента)",
|
|
8421
|
+
"beep": "Звуковой сигнал при старте и остановке",
|
|
8422
|
+
"benchmarkHint": "Измеряет коэффициент реального времени (RTF) и задержку инференса на аудио 1.0 с для текущего провайдера выполнения.",
|
|
8423
|
+
"benchmarking": "Выполняется тест производительности…",
|
|
8424
|
+
"benchmarkTitle": "Тест производительности оборудования (скорость и задержка)",
|
|
8425
|
+
"bilingualDeveloperPrompt": "Двуязычный контекст для разработчика (RU/EN)",
|
|
8426
|
+
"bilingualDeveloperPromptHint": "Подсказывать модели STT технические термины и команды CLI, чтобы не было фонетической транслитерации",
|
|
8427
|
+
"browserFailed": "Браузер не распознал: ",
|
|
8428
|
+
"browserHint": "Распознавание Web Speech (в режиме авто использует язык страницы или браузера, Chrome отправляет аудио в Google)",
|
|
8429
|
+
"browserWebGpu": "Whisper в браузере через WebGPU (офлайн)",
|
|
8430
|
+
"browserWebGpuHint": "Запускает модель Whisper прямо на GPU в браузере через WebGPU/WASM: офлайн, без отправки на хост и в облако.",
|
|
8431
|
+
"calibratedMsg": "Порог задан: {db} дБ (фон: {noise} дБ)",
|
|
8432
|
+
"calibratedValue": "Откалибровано",
|
|
8433
|
+
"calibrateNoise": "Калибровка шума (2 с)",
|
|
8434
|
+
"calibrateNoiseHint": "Измерить шум в помещении за 2 секунды и автоматически задать оптимальный шумовой порог",
|
|
8435
|
+
"calibrating": "Измеряем шум…",
|
|
8436
|
+
"cancel": "Отмена",
|
|
8437
|
+
"cancelPreview": "Отмена",
|
|
8438
|
+
"cardHint": "Диктовка и голосовые сообщения: провайдеры, цепочки, локальный whisper",
|
|
8439
|
+
"chainHint": "Сверху вниз — порядок перебора",
|
|
8440
|
+
"checkingUpdates": "Проверяем обновления…",
|
|
8441
|
+
"clearKey": "Очистить ключ",
|
|
8442
|
+
"clipping": "Перегрузка",
|
|
8443
|
+
"clippingHint": "Слишком громко (перегрузка)",
|
|
8444
|
+
"collapse": "Свернуть",
|
|
8445
|
+
"composerUnavailable": "Поле ввода недоступно",
|
|
8446
|
+
"contextGlossary": "Внедрение глоссария в контекст",
|
|
8447
|
+
"contextGlossaryHint": "Автоматически извлекать идентификаторы кода и термины из поля ввода, чтобы повысить точность STT",
|
|
8448
|
+
"customHint": "Любой совместимый с OpenAI API. Имя станет доступно в цепочках выше.",
|
|
8449
|
+
"customKeyName": "имя ключа",
|
|
8450
|
+
"customModel": "модель",
|
|
8451
|
+
"customModelHint": "модель для запроса (пусто — значит встроенная)",
|
|
8452
|
+
"customName": "имя, используемое в цепочке",
|
|
8453
|
+
"customTitle": "Свои провайдеры",
|
|
8454
|
+
"deepgramEndpoint": "Deepgram: базовый URL",
|
|
8455
|
+
"deepgramEndpointHint": "Базовый URL для Deepgram или собственного развёртывания (по умолчанию https://api.deepgram.com)",
|
|
8456
|
+
"deepinfraHint": "openai/whisper-large-v3-turbo · ключ DEEPINFRA_API_KEY",
|
|
8457
|
+
"diagBytes": "Аудио: {bytes} Б",
|
|
8458
|
+
"diagExportNotice": "Экспортированный JSON содержит обезличенные тайминги, цепочку провайдеров, формат MIME и коды ошибок, но не сырое аудио и не расшифровки речи.",
|
|
8459
|
+
"diagLatencyBreakdown": "Разбор задержки:",
|
|
8460
|
+
"diagnosticsExportSuccess": "Отчёт скачан",
|
|
8461
|
+
"diagPolish": "Полировка: {ms} мс",
|
|
8462
|
+
"diagStt": "STT: {ms} мс",
|
|
8463
|
+
"diagTotal": "Всего: {ms} мс",
|
|
8464
|
+
"diagVad": "VAD: {ms} мс",
|
|
8465
|
+
"diagWords": "Слов: {count}",
|
|
8466
|
+
"dictationBtn": "Голосовой набор",
|
|
8467
|
+
"dictationHint": "Речь делится на паузах, а текст добавляется к введённому.",
|
|
8468
|
+
"dictationModeDesc": "Выберите, как обрабатывать продиктованную речь перед вставкой: дословно (0 вызовов LLM), чистый текст (форматирование и удаление слов-паразитов), задача агента (структурированная подсказка) или заметка (ключевые тезисы и действия).",
|
|
8469
|
+
"dictationModeTitle": "Режим постобработки диктовки",
|
|
8470
|
+
"dictationPill": "Диктовка — текст добавляется к введённому",
|
|
8471
|
+
"dictationPromptsDesc": "Свои шаблоны подсказок для постобработки диктовки. Используйте {text} как плейсхолдер для распознанной речи.",
|
|
8472
|
+
"dictationPromptsTitle": "Шаблоны подсказок для диктовки",
|
|
8473
|
+
"down": "Вниз",
|
|
8474
|
+
"editablePreview": "Предпросмотр с правкой перед отправкой",
|
|
8475
|
+
"editablePreviewHint": "Показывать распознанный текст перед отправкой с возможностью правки, сравнения и отмены.",
|
|
8476
|
+
"editPreview": "Править",
|
|
8477
|
+
"error": "Ошибка",
|
|
8478
|
+
"errorPrefix": "Ошибка",
|
|
8479
|
+
"expand": "Развернуть",
|
|
8480
|
+
"exportDiagnosticsBtn": "Экспортировать отчёт диагностики",
|
|
8481
|
+
"exportingDiagnostics": "Экспортируем отчёт…",
|
|
8482
|
+
"fast": "Быстро",
|
|
8483
|
+
"fireworksHint": "whisper-v3-turbo · ключ FIREWORKS_API_KEY",
|
|
8484
|
+
"gatedTurnTaking": "Режим приглушения (микрофон выключается, пока говорит ассистент)",
|
|
8485
|
+
"general": "Общее",
|
|
8486
|
+
"hardwareDesc": "Микрофон, локальный whisper.cpp и настройки среды выполнения SenseVoice.",
|
|
8487
|
+
"hardwareTitle": "Оборудование и локальные движки",
|
|
8488
|
+
"hide": "Скрыть",
|
|
8489
|
+
"holdHint": "Удерживайте — отпустите, чтобы отправить",
|
|
8490
|
+
"hotkey": "Клавиша голосового сообщения",
|
|
8491
|
+
"hotkeyHint1": "Удерживайте для записи, отпустите, чтобы отправить агенту, Esc отменяет. ",
|
|
8492
|
+
"hotkeyHint2": "Подойдёт любая клавиша: буква, функциональная клавиша или клавиша-модификатор.",
|
|
8493
|
+
"idle": "Вызовов нет",
|
|
8494
|
+
"installingSensevoice": "Устанавливаем SenseVoice…",
|
|
8495
|
+
"installSensevoice": "Установить SenseVoice-Small (в один клик)",
|
|
8496
|
+
"jargonAdd": "Добавить замену",
|
|
8497
|
+
"jargonFormatHint": " (произносимое -> замена)",
|
|
8498
|
+
"jargonFrom": "Произносимый сленг",
|
|
8499
|
+
"jargonPlaceholder": "k8s -> kubernetesnpr -> pull request",
|
|
8500
|
+
"jargonTitle": "Лексикон разработчика и IT-жаргон",
|
|
8501
|
+
"jargonTo": "Правильное написание",
|
|
8502
|
+
"keepPending": "Не отправлять",
|
|
8503
|
+
"keySpace": "Пробел",
|
|
8504
|
+
"keyUnset": "не задан",
|
|
8505
|
+
"langAuto": "Автоопределение",
|
|
8506
|
+
"langDe": "Немецкий (de)",
|
|
8507
|
+
"langEn": "Английский (en)",
|
|
8508
|
+
"langRu": "Русский (ru)",
|
|
8509
|
+
"language": "Язык",
|
|
8510
|
+
"langUk": "Украинский (uk)",
|
|
8511
|
+
"langZh": "Китайский (zh)",
|
|
8512
|
+
"lastRecording": "Последнее голосовое сообщение",
|
|
8513
|
+
"listenBack": "Прослушать",
|
|
8514
|
+
"listening": "Слушаем в браузере…",
|
|
8515
|
+
"liveInterimPreview": "Живой предпросмотр речи (предпросмотр призрачным текстом)",
|
|
8516
|
+
"llmUnavailableFallback": "LLM недоступна, показываем сырую расшифровку",
|
|
8517
|
+
"loadingSettings": "Загружаем настройки…",
|
|
8518
|
+
"localHint": "задаётся при запуске сервера",
|
|
8519
|
+
"localOnly": "Только локальный whisper",
|
|
8520
|
+
"localOnlyHint": "Ограничить обе цепочки локальным сервером whisper.cpp: полностью офлайн.",
|
|
8521
|
+
"lowVolume": "Слабый сигнал",
|
|
8522
|
+
"lowVolumeHint": "Говорите громче",
|
|
8523
|
+
"macroDelete": "Удалить",
|
|
8524
|
+
"macroTemplate": "Раскрытый шаблон подсказки",
|
|
8525
|
+
"macroTrigger": "Произносимая триггерная фраза",
|
|
8526
|
+
"messageBtn": "Голосовое сообщение — нажмите или удерживайте",
|
|
8527
|
+
"messageHint": "Одна целая запись, отправленная агенту после расшифровки.",
|
|
8528
|
+
"messagePill": "Записываем голосовое сообщение",
|
|
8529
|
+
"messageTitle": "Голосовое сообщение",
|
|
8530
|
+
"mic": "Микрофон",
|
|
8531
|
+
"micDefault": "Системное по умолчанию",
|
|
8532
|
+
"micLevel": "Уровень микрофона",
|
|
8533
|
+
"micUnavailable": "Микрофон недоступен: нужен HTTPS или localhost",
|
|
8534
|
+
"mistralHint": "voxtral-mini-latest · ключ MISTRAL_API_KEY",
|
|
8535
|
+
"modeClean": "Чистый текст",
|
|
8536
|
+
"modeNote": "Заметка",
|
|
8537
|
+
"modeTask": "Задача агента",
|
|
8538
|
+
"modeVerbatim": "Дословно",
|
|
8539
|
+
"noiseGate": "Шумовой порог (дБ)",
|
|
8540
|
+
"noiseGateHint": "Заглушать фоновый гул вентилятора и щелчки клавиатуры ниже порога. Выключено — порог отключён.",
|
|
8541
|
+
"noiseGateOff": "Выключено",
|
|
8542
|
+
"noiseSuppression": "Аппаратное шумоподавление",
|
|
8543
|
+
"noiseSuppressionHint": "Включить шумоподавление в браузере, подавление эха и автоподстройку усиления",
|
|
8544
|
+
"noRecognitionsYet": "Записей о распознавании пока нет.",
|
|
8545
|
+
"noRecorder": "MediaRecorder не поддерживается этим браузером",
|
|
8546
|
+
"normal": "Обычный",
|
|
8547
|
+
"normalizeTranscript": "Нормализовать расшифровки файлов",
|
|
8548
|
+
"normalizeTranscriptHint": "transcribe_audio: числа словами — цифрами, пунктуация приводится в порядок",
|
|
8549
|
+
"nothingHeard": "Ничего не распознано",
|
|
8550
|
+
"nothingToUndo": "Отменять нечего",
|
|
8551
|
+
"notReady1": "DSH ещё не получил настройки этого плагина. Если он только что перезапустился, ",
|
|
8552
|
+
"notReady2": "раздел появится сам через несколько секунд.",
|
|
8553
|
+
"npuProvider": "Аппаратное ускорение (NPU SBC / хост)",
|
|
8554
|
+
"npuProviderHint": "Провайдер выполнения для SenseVoice / sherpa-onnx: CPU, NPU Rockchip RK3588 (rknpu), OpenVINO или CUDA.",
|
|
8555
|
+
"npuThreads": "Потоки (CPU/SBC)",
|
|
8556
|
+
"openaiHint": "whisper-1 · ключ OPENAI_API_KEY",
|
|
8557
|
+
"openrouterHint": "google/gemini-2.5-flash · ключ OPENROUTER_API_KEY",
|
|
8558
|
+
"openrouterWarning": "В OpenRouter нет /audio/transcriptions — используйте там шаблон openai-chat-audio",
|
|
8559
|
+
"pause": "Пауза",
|
|
8560
|
+
"pauseHint": "Меньшее значение даёт более частые фрагменты и быстрее текст, но повышает риск разрезать слово",
|
|
8561
|
+
"pauseMs": "Пауза, завершающая фразу, мс",
|
|
8562
|
+
"play": "Воспроизвести",
|
|
8563
|
+
"polish": "Полировать расшифровку моделью",
|
|
8564
|
+
"polishBaseUrl": "Адрес офлайн-полировки",
|
|
8565
|
+
"polishBaseUrlHint": "Базовый URL /chat/completions, совместимый с OpenAI, например локальный Ollama. Пусто — модель DSH",
|
|
8566
|
+
"polishedText": "Отполировано",
|
|
8567
|
+
"polishHint": "Исправлять пунктуацию и слова-паразиты моделью DSH перед вставкой",
|
|
8568
|
+
"polishKeyEnv": "Учётные данные ключа офлайн-полировки",
|
|
8569
|
+
"polishModel": "Модель офлайн-полировки",
|
|
8570
|
+
"polishSend": "Полировать весь черновик перед отправкой",
|
|
8571
|
+
"polishSendHint": "Прогнать собранный черновик через модель прямо перед отправкой",
|
|
8572
|
+
"pressKey": "Нажмите клавишу…",
|
|
8573
|
+
"profileLockCheckError": "Проверка блокировки профиля не удалась. Требуется осмотр файловой системы (не удаляйте файл блокировки).",
|
|
8574
|
+
"profileLockedExisting": "Профиль заблокирован существующим файлом блокировки. Если он устарел, следуйте задокументированной процедуре восстановления оператором.",
|
|
8575
|
+
"profileLockedPid": "Профиль заблокирован процессом (PID {pid}). Если блокировка устарела, следуйте задокументированной процедуре восстановления оператором.",
|
|
8576
|
+
"promptClean": "Подсказка для чистого текста",
|
|
8577
|
+
"promptNote": "Подсказка для заметки",
|
|
8578
|
+
"promptTask": "Подсказка для задачи агента",
|
|
8579
|
+
"providerDashboard": "Задержка и состояние провайдеров",
|
|
8580
|
+
"rawTab": "Сырой STT",
|
|
8581
|
+
"rawText": "Сырой",
|
|
8582
|
+
"recentRecognitionsTitle": "Телеметрия последних распознаваний",
|
|
8583
|
+
"recognitionError": "не удалось распознать",
|
|
8584
|
+
"recordSlot": "Запись голоса",
|
|
8585
|
+
"refreshStats": "Обновить статистику",
|
|
8586
|
+
"remove": "Убрать",
|
|
8587
|
+
"resetPrompts": "Сбросить к значениям по умолчанию",
|
|
8588
|
+
"resultTab": "Результат",
|
|
8589
|
+
"retry": "Повторить",
|
|
8590
|
+
"runBenchmarkBtn": "Запустить тест производительности",
|
|
8591
|
+
"save": "Сохранить",
|
|
8592
|
+
"saved": "Сохранено ✓",
|
|
8593
|
+
"saveFailed": "Некоторые поля не сохранены —",
|
|
8594
|
+
"secondsShort": " с",
|
|
8595
|
+
"sendDelay": "Задержка отправки диктовки (мс)",
|
|
8596
|
+
"sendDelayHint": "Ждать перед добавлением продиктованной фразы, оставляя окно для отмены. 0 — выключено",
|
|
8597
|
+
"sendingIn": "Отправка агенту через",
|
|
8598
|
+
"sendNow": "Отправить",
|
|
8599
|
+
"sensevoiceAutostart": "Автозапуск сервера SenseVoice",
|
|
8600
|
+
"sensevoiceBin": "SenseVoice: исполняемый файл",
|
|
8601
|
+
"sensevoiceBinHint": "используется при включённом автозапуске",
|
|
8602
|
+
"sensevoiceDesc": "Сверхбыстрое офлайн-распознавание речи на CPU (задержка 50–100 мс, русский и английский).",
|
|
8603
|
+
"sensevoiceDownloading": "Скачиваем модель…",
|
|
8604
|
+
"sensevoiceEndpoint": "SenseVoice: адрес",
|
|
8605
|
+
"sensevoiceEndpointHint": "POST-адрес sherpa-onnx или совместимого сервера",
|
|
8606
|
+
"sensevoiceHint": "SenseVoice-ONNX / Sherpa-ONNX · сверхбыстрый локальный STT (~50 мс)",
|
|
8607
|
+
"sensevoiceModel": "SenseVoice: путь к модели",
|
|
8608
|
+
"sensevoiceModelHint": "Абсолютный путь или идентификатор модели SenseVoice / sherpa-onnx",
|
|
8609
|
+
"sensevoiceNotInstalled": "Не установлен",
|
|
8610
|
+
"sensevoiceReady": "Готов",
|
|
8611
|
+
"sensevoiceTitle": "Локальное распознавание речи SenseVoice (настройка в один клик)",
|
|
8612
|
+
"sessionCommands": "Голосовые команды сессии",
|
|
8613
|
+
"sessionCommandsHint": "«send», «cancel», «stop», «continue» управляют сессией, а не попадают в текст",
|
|
8614
|
+
"sessionMismatch": "Активен другой чат; отменено, чтобы не допустить утечки.",
|
|
8615
|
+
"silence": "Пауза…",
|
|
8616
|
+
"siliconflowHint": "FunAudioLLM/SenseVoiceSmall · ключ SILICONFLOW_API_KEY",
|
|
8617
|
+
"slow": "Медленно",
|
|
8618
|
+
"smartActionsTitle": "Голосовое управление и умные действия",
|
|
8619
|
+
"speaking": "Вы говорите…",
|
|
8620
|
+
"statusDesc": "Текущее состояние подключения к голосовым бэкендам и сервисам распознавания.",
|
|
8621
|
+
"statusTitle": "Подключение и состояние движков",
|
|
8622
|
+
"stop": "Остановить",
|
|
8623
|
+
"stopTest": "Остановить тест",
|
|
8624
|
+
"stream": "Непрерывная диктовка",
|
|
8625
|
+
"streamChunkMs": "Фрагмент потока (мс)",
|
|
8626
|
+
"streamHint": "Фразы делятся по таймеру, пока вы говорите, вместо ожидания долгой паузы",
|
|
8627
|
+
"streamingWs": "Потоковый WebSocket",
|
|
8628
|
+
"streamingWsHint": "Потоковая передача аудио по WebSocket в реальном времени в локальный ASR",
|
|
8629
|
+
"structuredPromptVoice": "Голосовые ответы на интерактивные подсказки с выбором",
|
|
8630
|
+
"successRate": "Успех",
|
|
8631
|
+
"techJargonCorrection": "Автоисправление технического жаргона (GitHub, Docker, pnpm, Kubernetes и т. д.)",
|
|
8632
|
+
"testMic": "Проверить микрофон",
|
|
8633
|
+
"title": "Голос",
|
|
8634
|
+
"transcribing": "Расшифровываем…",
|
|
8635
|
+
"turnTakingDesc": "Согласовать говорение и слушание, чтобы звук ассистента не попадал обратно в микрофон.",
|
|
8636
|
+
"turnTakingTitle": "Очередность и координация аудио",
|
|
8637
|
+
"uiError": "Ошибка голосового интерфейса:",
|
|
8638
|
+
"undo": "Отменить последнюю вставку",
|
|
8639
|
+
"undoHint": "Сколько ещё можно отменить автоматическую отправку",
|
|
8640
|
+
"undoMs": "Окно отмены, мс",
|
|
8641
|
+
"undone": "Вставка отменена",
|
|
8642
|
+
"up": "Вверх",
|
|
8643
|
+
"updateAvailable": "Доступно обновление",
|
|
8644
|
+
"updateCheckFailed": "Не удалось проверить обновление",
|
|
8645
|
+
"updateFailed": "Не удалось обновить. Проверьте журналы.",
|
|
8646
|
+
"updateNow": "Обновить сейчас",
|
|
8647
|
+
"updatePrompt": "В npm доступна новая версия. Нажмите «Обновить сейчас», чтобы установить.",
|
|
8648
|
+
"updateStatusUnknown": "Состояние версии неизвестно",
|
|
8649
|
+
"updateSuccess": "Обновление выполнено! Перезапустите DSH, чтобы применить.",
|
|
8650
|
+
"updating": "Обновляем…",
|
|
8651
|
+
"upToDate": "Актуальная версия",
|
|
8652
|
+
"vadAdapt": "Адаптивная тишина",
|
|
8653
|
+
"vadAdaptHint": "Автоматически подстраивать порог тишины под темп вашей речи. 0 — фиксированный",
|
|
8654
|
+
"vadAmplitude": "Порог по амплитуде",
|
|
8655
|
+
"vadEngine": "Движок VAD",
|
|
8656
|
+
"vadEngineHint": "Нейросетевой Silero VAD (WASM/ONNX) или классический порог по амплитуде",
|
|
8657
|
+
"vadSilero": "Silero VAD (нейросетевой)",
|
|
8658
|
+
"versionHint": "Проверять новые версии и обновляться прямо из npm.",
|
|
8659
|
+
"versionTitle": "Версия плагина и обновления",
|
|
8660
|
+
"visBars": "Классические полосы",
|
|
8661
|
+
"visDynamicOrb": "Динамическая сфера",
|
|
8662
|
+
"visLiquidWave": "Жидкая волна",
|
|
8663
|
+
"visOff": "Выключено",
|
|
8664
|
+
"visualizerStyle": "Стиль визуализатора звука",
|
|
8665
|
+
"visualizerStyleHint": "Анимация звуковой волны внутри плашки записи",
|
|
8666
|
+
"vocabulary": "Свой словарь (по одному слову в строке)",
|
|
8667
|
+
"voiceActionsLabel": "Голосовые команды действий («send», «cancel», «clear», «new line»)",
|
|
8668
|
+
"voiceCommandsLabel": "Голосовые команды правки («new line», «paragraph»)",
|
|
8669
|
+
"voiceInput": "Голосовой ввод",
|
|
8670
|
+
"voiceMacrosDesc": "Произносимые триггерные фразы автоматически разворачиваются в структурированные шаблоны подсказок.",
|
|
8671
|
+
"voiceMacrosTitle": "Макросы голосовых действий",
|
|
8672
|
+
"wakeWord": "Слово активации",
|
|
8673
|
+
"wakeWordHint": "Распознавание в браузере начинает запись, когда речь начинается с этой фразы. Пусто — выключено",
|
|
8674
|
+
"webgpuAvailable": "WebGPU доступен (аппаратное ускорение готово)",
|
|
8675
|
+
"webgpuNotAvailable": "WebGPU не обнаружен (будет откат на сервер)",
|
|
8676
|
+
"webgpuStatus": "Состояние WebGPU в браузере",
|
|
8677
|
+
"whisperAutostart": "Автозапуск локального whisper",
|
|
8678
|
+
"whisperBin": "Локальный whisper: исполняемый файл",
|
|
8679
|
+
"whisperBinHint": "используется при включённом автозапуске",
|
|
8680
|
+
"whisperEndpoint": "Локальный whisper: адрес",
|
|
8681
|
+
"whisperEndpointHint": "POST /inference сервера whisper.cpp",
|
|
8682
|
+
"whisperModel": "Локальный whisper: модель",
|
|
8683
|
+
"whisperModelHint": "Абсолютный путь к файлу модели ggml",
|
|
8684
|
+
"wizardAreaBrowser": "В браузере (WebGPU / WebSpeech)",
|
|
8685
|
+
"wizardAreaCloud": "Удалённый облачный провайдер",
|
|
8686
|
+
"wizardAreaServer": "Локальный сервер MiniPC (SenseVoice / Whisper)",
|
|
8687
|
+
"wizardBtnLaunch": "Открыть мастер микрофона и STT",
|
|
8688
|
+
"wizardClose": "Закрыть мастер",
|
|
8689
|
+
"wizardDesc": "Пошаговый диагностический тест: проверка безопасного контекста, разрешений микрофона, уровня звука и обратного пути STT.",
|
|
8690
|
+
"wizardFinishSuccess": "Настройка и проверка завершены",
|
|
8691
|
+
"wizardHintDevice": "Проверьте подключение микрофона или выберите другое устройство ввода.",
|
|
8692
|
+
"wizardHintHttps": "Откройте DeepSeek Harness по HTTPS или через адрес localhost.",
|
|
8693
|
+
"wizardHintPermission": "Нажмите «Запросить доступ к микрофону» и разрешите запрос браузера.",
|
|
8694
|
+
"wizardHintProvider": "Настройте учётные данные движка STT или установите модель SenseVoice ниже.",
|
|
8695
|
+
"wizardMediaDevicesBad": "В браузере нет API mediaDevices",
|
|
8696
|
+
"wizardMediaDevicesOk": "Браузер поддерживает API mediaDevices",
|
|
8697
|
+
"wizardMediaRecorderBad": "API MediaRecorder не поддерживается этим браузером",
|
|
8698
|
+
"wizardMediaRecorderOk": "API MediaRecorder поддерживается",
|
|
8699
|
+
"wizardMicLabel": "Устройство ввода микрофона:",
|
|
8700
|
+
"wizardMicPermissionBad": "Доступ к микрофону запрещён",
|
|
8701
|
+
"wizardMicPermissionOk": "Доступ к микрофону разрешён",
|
|
8702
|
+
"wizardMicPermissionPrompt": "Доступ к микрофону ещё не разрешён",
|
|
8703
|
+
"wizardNextStepHint": "Следующий шаг: {hint}",
|
|
8704
|
+
"wizardProcessingArea": "Область обработки:",
|
|
8705
|
+
"wizardProviderLabel": "Активный движок и модель STT:",
|
|
8706
|
+
"wizardRecordingTest": "Записываем тестовую фразу… говорите сейчас ({left} с)",
|
|
8707
|
+
"wizardRequestMic": "Запросить доступ к микрофону",
|
|
8708
|
+
"wizardSecureContextBad": "Небезопасный контекст (нужен HTTPS или localhost)",
|
|
8709
|
+
"wizardSecureContextOk": "Безопасный контекст / HTTPS проверен",
|
|
8710
|
+
"wizardSignalOk": "Аудиосигнал обнаружен (RMS: {level}%)",
|
|
8711
|
+
"wizardSignalTesting": "Ждём аудиосигнал… говорите в микрофон",
|
|
8712
|
+
"wizardSignalZero": "Обнаружен нулевой уровень звука — говорите в микрофон или выберите правильное устройство",
|
|
8713
|
+
"wizardSkip": "Пропустить мастер",
|
|
8714
|
+
"wizardStartSignalCheck": "Начать проверку уровня звука",
|
|
8715
|
+
"wizardStartTestRecord": "Записать тестовую фразу на 3 секунды",
|
|
8716
|
+
"wizardStatusCompleted": "Микрофон и STT проверены",
|
|
8717
|
+
"wizardStep1": "1. Звук и окружение",
|
|
8718
|
+
"wizardStep2": "2. Проверка сигнала вживую",
|
|
8719
|
+
"wizardStep3": "3. Тест расшифровки STT",
|
|
8720
|
+
"wizardStopSignalCheck": "Остановить проверку звука",
|
|
8721
|
+
"wizardTestEmpty": "В тестовой записи речь не обнаружена. Говорите чётче и попробуйте ещё раз.",
|
|
8722
|
+
"wizardTestFailed": "Тест STT не удался: {error}",
|
|
8723
|
+
"wizardTestResult": "Результат теста STT:",
|
|
8724
|
+
"wizardTestSuccess": "Обратный путь STT успешно проверен! Задержка: {latency} мс",
|
|
8725
|
+
"wizardTitle": "Мастер первичной настройки и диагностики",
|
|
8726
|
+
"wizardTranscribingTest": "Расшифровываем тестовую фразу…"
|
|
8727
|
+
},
|
|
8728
|
+
"foldPositions": {
|
|
8729
|
+
"advisory.desc": ": в текущей версии есть серьёзный дефект; bili сам обновляет её до безопасной версии. Причина:",
|
|
8730
|
+
"advisory.hint": ". Если обновление не завершилось автоматически, выполните его вручную:",
|
|
8731
|
+
"advisory.on": "Уведомление о критическом дефекте",
|
|
8732
|
+
"advisory.restartDesc": ": безопасная версия уже установлена на диске, но этот процесс всё ещё работает на затронутой версии. Причина:",
|
|
8733
|
+
"advisory.restartHint": ". Перезапустите bili, чтобы она вступила в силу.",
|
|
8734
|
+
"alert.dismiss": "Понятно",
|
|
8735
|
+
"alert.hint.connect_refused": "TCP отклонён (через прокси, если он настроен, иначе напрямую к апстриму) — эндпоинт недоступен или указан неверный порт",
|
|
8736
|
+
"alert.hint.connect_timeout": "Рукопожатие TCP так и не завершилось — апстрим или прокси недоступен либо трафик уходит в никуда; возможна ограниченная повторная попытка отправки (BILI_REPLAY_RETRY_MAX)",
|
|
8737
|
+
"alert.hint.dns": "не удалось разрешить имя — ошибка DNS-сервера или опечатка в имени узла; возможна ограниченная повторная попытка отправки (BILI_REPLAY_RETRY_MAX)",
|
|
8738
|
+
"alert.hint.proxy_reset": "прокси разорвал соединение до получения ответа — проверьте ограничения прокси на простой и на размер передаваемых данных (BILI_PROXY_KEEPALIVE_MAX_MS может сократить окно переиспользования соединения); возможна ограниченная повторная попытка отправки (BILI_REPLAY_RETRY_MAX)",
|
|
8739
|
+
"alert.hint.tls": "Сбой TLS или сертификата на шаге CONNECT или рукопожатия с апстримом — проверьте настройки CA и MITM в прокси.",
|
|
8740
|
+
"alert.hint.unknown": "неклассифицированный сбой транспорта — сообщите с полной цепочкой ошибок",
|
|
8741
|
+
"alert.hint.upstream_reset": "апстрим или сеть сбросили соединение до получения ответа — проверьте апстрим и локальную сеть; возможна ограниченная повторная попытка отправки (BILI_REPLAY_RETRY_MAX)",
|
|
8742
|
+
"alert.item": "Не удаётся связаться с {host} ({kind} ×{count}, с {first}) — {hint}",
|
|
8743
|
+
"alert.note.skipped_proxy": "доступный прокси {proxy} ({source}) пропущен — upstreamProxyMode не задан (прямое подключение предусмотрено по умолчанию, #346/#357); задайте «upstreamProxyMode»: «auto» или BILI_UPSTREAM_PROXY_MODE=auto либо назначьте этому провайдеру канал «proxy», чтобы включить его",
|
|
8744
|
+
"alert.title": "Проблемы с подключением к апстриму",
|
|
8745
|
+
"ca.not_ready": "(ещё не создан; появится при первом MITM)",
|
|
8746
|
+
"card.claude_key": "Claude Code",
|
|
8747
|
+
"card.codex_key": "Codex",
|
|
8748
|
+
"card.codex_login": "Codex (вход через ChatGPT)",
|
|
8749
|
+
"card.opencode": "OpenCode",
|
|
8750
|
+
"card.other": "Другие клиенты",
|
|
8751
|
+
"card.pi": "Pi",
|
|
8752
|
+
"cfg.file": "Файл конфигурации",
|
|
8753
|
+
"cfg.file_desc": "Эта карточка правит файл конфигурации напрямую — действуют все поля верхнего уровня в этом JSON (маршруты, сжатие, сеть, проброс, promptPack, ccr, …). Сохранение применяется сразу",
|
|
8754
|
+
"cfg.invalid_json": "Некорректный JSON — не сохранено",
|
|
8755
|
+
"cfg.parse_error": "Файл конфигурации не содержит корректный JSON — вместо него показан пустой вид",
|
|
8756
|
+
"cfg.passthrough": "Проброс",
|
|
8757
|
+
"cfg.passthrough_desc": "Определяет, проходит ли трафик, не подпадающий ни под один маршрут, в целевую службу без изменений (без перехвата и без переписывания). Состояние хранится в файле конфигурации; если его принудительно задала переменная окружения ACP_PASSTHROUGH, интерфейс помечает источник, и вам нужно сбросить переменную и перезапустить, прежде чем менять её здесь",
|
|
8758
|
+
"cfg.pt_clear": "Отключить проброс",
|
|
8759
|
+
"cfg.pt_off": "Выключено",
|
|
8760
|
+
"cfg.pt_on": "Включено",
|
|
8761
|
+
"cfg.q_absorb": "Мгновенное поглощение результатов инструментов (absorb) — крупные результаты модель перерабатывает сразу при получении; оригиналы скрыты до следующего раунда сжатия (по умолчанию выключено)",
|
|
8762
|
+
"cfg.q_absorb_hint": "по умолчанию поглощаются только результаты с изображениями (#3422); задайте mediaOnly: false, чтобы поглощать и текст целиком. Подполяня (minToolTokens, contextThresholdPct, excludeTools) указываются в редакторе JSON ниже",
|
|
8763
|
+
"cfg.q_debug": "Отладочный журнал (debug)",
|
|
8764
|
+
"cfg.q_imgrescale": "Уменьшение исходящих изображений (imageRescale) — крупные исходящие изображения сжимаются до отправки модели; оригиналы остаются в локальном хранилище сессии (по умолчанию включено)",
|
|
8765
|
+
"cfg.q_imgrescale_hint": "порог по длинной стороне через переменную окружения BILI_IMAGE_RESCALE_MAX_DIM (по умолчанию 1600)",
|
|
8766
|
+
"cfg.q_mitm": "Домены для расшифровки MITM, через запятую (mitm.domains)",
|
|
8767
|
+
"cfg.q_mitm_ph": "api.anthropic.com, open.bigmodel.cn",
|
|
8768
|
+
"cfg.q_more": "Другие настройки (полный справочник полей)",
|
|
8769
|
+
"cfg.q_more_url": "https://github.com/ranxianglei/billion-context/blob/master/CONFIGURATION.md",
|
|
8770
|
+
"cfg.q_never": "Исключить инструменты из сохранения недавних сообщений (compress.neverPreserveRecentTools)",
|
|
8771
|
+
"cfg.q_never_note": "По умолчанию исключаются decompress, search_context, read, bash — при массовом чтении уберите read из списка, чтобы только что прочитанные файлы не сжимались сразу",
|
|
8772
|
+
"cfg.q_never_ph": "через запятую, допускаются маски *; пусто — встроенный список ядра (включая read, bash)",
|
|
8773
|
+
"cfg.q_nudge": "Порог прироста для сжатия, токены (compress.nudgeGrowthTokens)",
|
|
8774
|
+
"cfg.q_nudge_high": "выше 100000: слишком длинный контекст между сжатиями может ослабить внимание модели",
|
|
8775
|
+
"cfg.q_nudge_low": "ниже 20000: слишком частое сжатие ухудшает качество сводки (по умолчанию ядра 50000)",
|
|
8776
|
+
"cfg.q_nudge_step": "шаг 5000",
|
|
8777
|
+
"cfg.q_pack": "Набор промптов для сжатия (compress.promptPack)",
|
|
8778
|
+
"cfg.q_pack_custom": "свой набор — загружается по имени из ~/.config/billion-context/packs/ (или из каталога проекта .billion-context/packs/)",
|
|
8779
|
+
"cfg.q_pack_default_desc": "по умолчанию (полный набор): подробные описания инструментов и полные правила сжатия — самые полные указания. Замерено ≈2,900+ токенов на запрос (токенизатор qwen)",
|
|
8780
|
+
"cfg.q_pack_lean_desc": "краткий: однострочные описания инструментов, сжатые правила — более краткие указания. Замерено ≈1,400 токенов на запрос (токенизатор qwen), примерно вдвое меньше, чем в наборе по умолчанию",
|
|
8781
|
+
"cfg.q_parse_err": "Расширенный JSON сейчас не разбирается — быстрые настройки приостановлены, пока он снова не станет корректным",
|
|
8782
|
+
"cfg.q_passthrough": "Режим проброса (passthrough) — только проксирование, без внедрения и без сжатия",
|
|
8783
|
+
"cfg.q_prm": "Сохранение недавних сообщений (compress.preserveRecentMessages)",
|
|
8784
|
+
"cfg.q_prm_ph": "пусто — по умолчанию ядра",
|
|
8785
|
+
"cfg.q_ptools": "Имена защищённых инструментов (protectedTools, никогда не сжимаются)",
|
|
8786
|
+
"cfg.q_ptools_ph": "через запятую, допускаются маски *, например skill, skill_*; по умолчанию пусто",
|
|
8787
|
+
"cfg.q_ptools_warn": "Не защищайте многословные инструменты вроде read / bash / edit — их вывод занимает большую часть токенов большинства сессий; защита означает, что он никогда не сжимается, и контекст продолжает расти",
|
|
8788
|
+
"cfg.q_tiers": "Пороги срабатывания сжатия по уровням, токены (compress.tierNudgeTokens; предзаполнены расчётными значениями по умолчанию, сохраняются только изменённые)",
|
|
8789
|
+
"cfg.q_tiers_auto": "авто",
|
|
8790
|
+
"cfg.q_tiers_desc": "Предзаполнены текущими расчётными значениями по умолчанию (T1 = шаг роста, T2/T3 = ×1.5); неизменённые значения не сохраняются. Обратите внимание: T2/T3 считают токены СВОДКИ нижнего уровня, а не сырые — при значении по умолчанию 75K и коэффициенте сжатия сводки примерно 10:1 один блок T2 несёт около 750K сырого контекста; для длинных проектов увеличьте T2.",
|
|
8791
|
+
"cfg.q_tiers_step": "шаг 5000",
|
|
8792
|
+
"cfg.q_tiers_tip_t1": "Порог сжатия сырых сообщений T1 (измеряется в сырых токенах) — по умолчанию равен порогу роста для сжатия выше",
|
|
8793
|
+
"cfg.q_tiers_tip_t2": "Порог повторной переработки T2 (измеряется в токенах сводки T1) — по умолчанию равен порогу роста × 1.5; увеличьте его, чтобы каждый блок T2 содержал больше истории проекта",
|
|
8794
|
+
"cfg.q_tiers_tip_t3": "Порог уплотнения T3 (измеряется в токенах сводки T2) — по умолчанию равен порогу роста × 1.5",
|
|
8795
|
+
"cfg.quick": "Быстрые настройки",
|
|
8796
|
+
"cfg.quick_desc": "Переключайте частые параметры, не трогая JSON — каждое изменение сразу попадает в редактор ниже (тот же файл, новых полей конфигурации нет); сложные структуры вроде таблицы провайдеров остаются в JSON",
|
|
8797
|
+
"cfg.resign": "Подписанные апстримы (переподпись)",
|
|
8798
|
+
"cfg.resign_awaiting": "ожидание поддержки переподписи в bili (по контракту «сжать или отказать» никакая конфигурация не может пропустить это)",
|
|
8799
|
+
"cfg.resign_builtin": "Встроенная схема {scheme} ({label}): bili переподписывает автоматически (обычное сжатие), когда срабатывает служба учётных данных dsh; иначе — локальный отказ",
|
|
8800
|
+
"cfg.resign_copy_hint": "Скопируйте этот фрагмент в файл конфигурации: эта ссылка передаётся без изменений байтов и БЕЗ сжатия (только для встроенной схемы)",
|
|
8801
|
+
"cfg.resign_desc": "Апстримы, подписывающие тело запроса: любое переписывание ломает их проверку подписи (401). По контракту «сжать или отказать» у подписанного запроса ровно два исхода — переподписан и сжат либо отклонён локально (403); режима передачи без подписи нет. Встроенная схема может включить проброс (явно согласившись на передачу без сжатия), если учётные данные не найдены; любая другая схема остаётся недоступной, пока bili не поставит переподписант (никакая конфигурация это не обойдёт). Записи появляются по подписям, наблюдаемым во время работы",
|
|
8802
|
+
"cfg.resign_disabled": "защита отключена (поведение до переподписи: тело переписывается, апстрим может вернуть 401)",
|
|
8803
|
+
"cfg.resign_loading": "Загрузка…",
|
|
8804
|
+
"cfg.resign_none": "Отказов по подписи нет — подписанных запросов, которые нельзя переподписать, не наблюдалось",
|
|
8805
|
+
"cfg.resign_passthrough": "напрямую (без сжатия)",
|
|
8806
|
+
"cfg.resign_refusing": "отказ по умолчанию",
|
|
8807
|
+
"cfg.resign_row": "{origin} · отказов {count}× (с {firstSeen})",
|
|
8808
|
+
"cfg.save": "Сохранить",
|
|
8809
|
+
"cfg.saved": "Сохранено в файл конфигурации ✓",
|
|
8810
|
+
"cfg.state": "Состояние подключения",
|
|
8811
|
+
"cfg.state_reached": "HTTP {status} · доступен (аутентификацию берёт на себя клиент)",
|
|
8812
|
+
"cfg.sub": "Правки сразу попадают в файл конфигурации и применяются на ходу — проверьте синтаксис JSON перед сохранением",
|
|
8813
|
+
"cfg.test_btn": "Проверить подключение",
|
|
8814
|
+
"cfg.test_hint": "Отправляет один минимальный запрос, чтобы проверить доступность; ничего не меняет",
|
|
8815
|
+
"cfg.title": "Конфигурация",
|
|
8816
|
+
"cfg.unsaved": "⚠ Есть несохранённые изменения — ничего не записывается, пока вы не нажмёте «Сохранить»",
|
|
8817
|
+
"cfg.untested": "Ещё не проверено",
|
|
8818
|
+
"cfg.up_auto": "авто (следовать системному прокси)",
|
|
8819
|
+
"cfg.up_direct": "напрямую (принудительно напрямую)",
|
|
8820
|
+
"cfg.up_manual": "вручную (явный прокси)",
|
|
8821
|
+
"cfg.upstream_net": "Сеть апстрима",
|
|
8822
|
+
"common.back": "← К списку сессий",
|
|
8823
|
+
"common.context": "контекст",
|
|
8824
|
+
"common.copied_hint": "Скопировано ✓",
|
|
8825
|
+
"common.copy": "Копировать",
|
|
8826
|
+
"common.ctx_est": "оценка",
|
|
8827
|
+
"common.ctx_est_calib": "оценка·с калибровкой",
|
|
8828
|
+
"common.ctx_est_raw": "оценка·без калибровки",
|
|
8829
|
+
"common.ctx_meas": "замерено",
|
|
8830
|
+
"common.ctx_upper": "оценка·верхняя граница",
|
|
8831
|
+
"common.empty": "Данных пока нет",
|
|
8832
|
+
"common.label": "метка",
|
|
8833
|
+
"common.live": "активно",
|
|
8834
|
+
"common.loading": "Загрузка…",
|
|
8835
|
+
"common.none": "—",
|
|
8836
|
+
"common.protocol": "протокол",
|
|
8837
|
+
"common.requests": "запросы",
|
|
8838
|
+
"common.saved": "сохранено",
|
|
8839
|
+
"common.sessions": "сессии",
|
|
8840
|
+
"common.title": "заголовок",
|
|
8841
|
+
"common.upstream": "апстрим",
|
|
8842
|
+
"common.window": "окно",
|
|
8843
|
+
"con.launcher_help_pre": "Полный список:",
|
|
8844
|
+
"con.launcher_mitm": "Добавьте домены в белый список для расшифровки по сертификату MITM (например, собственный релей): bili pi --mitm-domain api.foo.com",
|
|
8845
|
+
"con.method_a": "Способ 3 · Универсальный прокси (маршрутизация по префиксу URL)",
|
|
8846
|
+
"con.method_a_hint": "Только для клиентов, у которых можно изменить baseURL (добавьте указанный ниже адрес к их базовому URL); для большинства клиентов лучше средство запуска выше",
|
|
8847
|
+
"con.method_b": "Альтернатива: маршрутизация через сертификат MITM",
|
|
8848
|
+
"con.method_b_hint": "Клиенты с жёстко заданными эндпоинтами используют перехват HTTPS; сначала доверьте сертификату CA",
|
|
8849
|
+
"con.method_launcher": "Способ 2 · Средство запуска bili (без установки — заменяет привычную команду запуска)",
|
|
8850
|
+
"con.method_launcher_hint": "Когда billion-context установлен, запускайте клиент одной из команд ниже вместо обычного способа: bili proxy + состояние сжатия подставляется автоматически, правки конфигурации клиента не нужны",
|
|
8851
|
+
"con.method_plugin": "Способ 1 · Установить плагин (рекомендуется · нативный режим)",
|
|
8852
|
+
"con.method_plugin_hint": "Рекомендуется — после установки просто запускайте агента как обычно; он автоматически пойдёт через billion-context и получит самый полный набор возможностей. Частые команды управления:",
|
|
8853
|
+
"con.note_aider": "Aider (парное программирование на Python): сертификат MITM через HTTPS_PROXY + SSL_CERT_FILE/REQUESTS_CA_BUNDLE; адрес берётся из унаследованного окружения, из --openai-api-base или из .aider.conf.yml; локальные адреса напрямую через NO_PROXY (#1048)",
|
|
8854
|
+
"con.note_amp": "Amp CLI (Sourcegraph, закрытый бинарник на Go) — сертификат MITM; ampcode.com в белом списке (#1049)",
|
|
8855
|
+
"con.note_antigravity": "Antigravity CLI (agy, Google, преемник Gemini CLI): CLOUD_CODE_URL /bili/ переписан в daily-cloudcode-pa.googleapis.com — реальный апстрим по умолчанию (чистый cloudcode-pa отвечает 400 на /v1internal:*, #3129; недокументированный переопределитель окружения языкового сервера, проверен в бинарнике v2.19.1; обмен распознаётся как нативный Google по пути) (#2115)",
|
|
8856
|
+
"con.note_claude": "Запустите claude",
|
|
8857
|
+
"con.note_codebuddy": "Tencent CodeBuddy Code CLI: переписывание CODEBUDDY_BASE_URL /bili/ (протокол OpenAI chat-completions); бюджет согласован через CODEBUDDY_AUTO_COMPACT_WINDOW; настоящий ~/.codebuddy не затрагивается",
|
|
8858
|
+
"con.note_codex": "Запустите codex",
|
|
8859
|
+
"con.note_copilot": "Copilot CLI (GitHub, закрытый бинарник на Go) — сертификат MITM; api.githubcopilot.com и поддомены уровней в белом списке (#1049)",
|
|
8860
|
+
"con.note_dsh": "deepseek-harness: полный нативный плагин внедряется через --patch (#941) — compress/decompress/acp_status регистрируются как настоящие инструменты dsh; нелокальный апстрим через переменные окружения прокси, локальный сохраняет подмены DSH_HOME; встроенный маршрут deepseek через DEEPSEEK_BASE_URL; нативное автосжатие отключено",
|
|
8861
|
+
"con.note_gemini": "Gemini CLI (Google): GOOGLE_GEMINI_BASE_URL /bili/ переписывается в generativelanguage.googleapis.com (нативный протокол Google); настоящий ~/.gemini не затрагивается",
|
|
8862
|
+
"con.note_goose": "Goose (Block, Rust/reqwest): сборки rustls не доверяют файлам CA — переменных окружения прокси нет вовсе; встроенные ветки openai/anthropic перенаправляются через OPENAI_HOST/ANTHROPIC_HOST; собственные декларативные провайдеры получают заново созданный наложенный каталог GOOSE_PATH_ROOT, который переписывает base_url в /bili/; сторонние провайдеры с фиксированным адресом вызывают предупреждение (#1049)",
|
|
8863
|
+
"con.note_hermes": "без файлов (#535): HTTPS_PROXY + SSL_CERT_FILE с объединённым пакетом CA — https через CONNECT MITM, http с пересылкой в абсолютной форме; настоящий ~/.hermes не затрагивается",
|
|
8864
|
+
"con.note_iflow": "iFlow CLI: IFLOW_BASE_URL /bili/ переписывается в apis.iflow.cn/v1 (протокол OpenAI chat-completions); настоящий ~/.iflow не затрагивается",
|
|
8865
|
+
"con.note_jcode": "Терминальный агент для кода на Rust — запуск с сертификатом MITM через переменные окружения; api.z.ai по умолчанию в белом списке; локальный провайдер напрямую через NO_PROXY",
|
|
8866
|
+
"con.note_kimi": "Kimi Code CLI (Moonshot): кроме безусловного обхода локальных адресов весь трафик идёт по стандартным переменным окружения прокси — для нелокальных адресов https идёт через сертификат MITM, http пересылается в абсолютной форме; узлы берутся из ~/.kimi-code/config.toml; локальные адреса собраны с ручными подсказками о префиксе /bili/ (#757)",
|
|
8867
|
+
"con.note_mcode": "MiniMax Code CLI: кроме безусловного обхода локальных адресов — стандартные переменные окружения прокси; для нелокальных адресов https идёт через сертификат MITM, http пересылается в абсолютной форме; узлы берутся из ~/.minimax*/config.yaml; сессии связываются заголовком X-Mavis-Session-Id (#1050)",
|
|
8868
|
+
"con.note_omp": "Тот же подход, что и у pi, без файлов (#535): переменные окружения + расширение registerProvider; настоящий ~/.omp не затрагивается",
|
|
8869
|
+
"con.note_opencode": "OpenCode (1.x и 2.x): подробное руководство в разделе OpenCode ниже",
|
|
8870
|
+
"con.note_pi": "Запустите pi через прокси — без файлов (#535): переменные окружения + расширение registerProvider; настоящий ~/.pi не затрагивается",
|
|
8871
|
+
"con.note_qoder": "адрес модели жёстко задан по https (переписать на /bili/ нельзя) — сертификат MITM (HTTPS_PROXY + NODE_EXTRA_CA_CERTS); узел модели по умолчанию заранее в белом списке (#653)",
|
|
8872
|
+
"con.note_qwen": "Qwen Code (форк gemini-cli с несколькими протоколами, без перехвата базового URL): сертификат MITM через HTTPS_PROXY + NODE_EXTRA_CA_CERTS; узлы моделей DashScope/Qwen по умолчанию в белом списке; собственные релеи добавляются через --mitm-domain",
|
|
8873
|
+
"con.note_trae": "Trae CLI (ByteDance, закрытый бинарник на Go, без переопределения базового URL) — сертификат MITM; узел модели берётся из TRAE_CLI_API_HOST или из корпоративного шлюза по умолчанию (#655)",
|
|
8874
|
+
"con.origin": "Адрес прокси",
|
|
8875
|
+
"con.plugin_note": "Режим плагина сейчас охватывает эти 9 агентов: pi · omp · claude · codex · opencode · dsh · kimi · hermes · zcode — остальные клиенты используют способ 2 или способ 3. Для opencode добавьте --with-mcp при установке, чтобы зарегистрировать и его инструменты MCP",
|
|
8876
|
+
"con.sub": "Направьте ИИ-клиентов на этот прокси",
|
|
8877
|
+
"con.title": "Подключение клиентов",
|
|
8878
|
+
"conflict.age_active": "{n} за последние 7 дней",
|
|
8879
|
+
"conflict.age_historical": "{n} раньше",
|
|
8880
|
+
"conflict.clear_btn": "Очистить записи",
|
|
8881
|
+
"conflict.cleared": "Записи о конфликтах очищены",
|
|
8882
|
+
"conflict.dismiss": "Больше не показывать",
|
|
8883
|
+
"conflict.dismissed": "Скрыто — плашка появится снова, если произойдёт новый конфликт",
|
|
8884
|
+
"conflict.docs": "полная таблица: CONFIGURATION.md → «Detecting other compression plugins (#1206)»",
|
|
8885
|
+
"conflict.found": ": следы ",
|
|
8886
|
+
"conflict.hint_label": "Что делать (по клиентам):",
|
|
8887
|
+
"conflict.hint_more": "ещё клиентов: {n} — смотрите страницу сессий ниже",
|
|
8888
|
+
"conflict.hint.claude": "claude: запускайте через bili claude (он сам выравнивает CLAUDE_CODE_AUTO_COMPACT_WINDOW) или задайте CLAUDE_CODE_AUTO_COMPACT_WINDOW равным действующему окну bili",
|
|
8889
|
+
"conflict.hint.codex": "codex: bili по умолчанию перехватывает нативное сжатие (BILI_CODEX_COMPACT=intercept) — если вы задали pass, уберите переопределение, чтобы отключить; иначе сообщите версию bili",
|
|
8890
|
+
"conflict.hint.generic": "отключите собственное автосжатие клиента (или направьте эту сессию в обход bili), затем начните новую сессию — реестр ведётся по сессиям, поэтому старые записи исчезнут вместе со старой сессией",
|
|
8891
|
+
"conflict.hint.omp": "omp: расширение bili отменяет нативное автосжатие клиента, пока ведёт беседу — если вы это видите, вероятно, не хватает подтверждений переноса или версия устарела; сообщите клиент и версию bili",
|
|
8892
|
+
"conflict.hint.opencode": "opencode: задайте в конфигурации opencode «compaction»: { «auto»: false } (или выполните bili opencode / bili plugin install opencode — они сделают это за вас)",
|
|
8893
|
+
"conflict.hint.pi": "pi: расширение bili отменяет нативное автосжатие клиента, пока ведёт беседу — если вы это видите, вероятно, не хватает подтверждений переноса или версия устарела; сообщите клиент и версию bili",
|
|
8894
|
+
"conflict.on": "Обнаружен конфликт сжатия",
|
|
8895
|
+
"conflict.on_suspected": "Обнаружен возможный плагин сжатия",
|
|
8896
|
+
"conflict.on_unconfirmed": "Обнаружены неподтверждённые признаки, связанные со сжатием",
|
|
8897
|
+
"conflict.risk_active": " найдены. Два сжимателя в одной беседе сжимают дважды и портят ссылки на сообщения, из-за чего контекст путается — оставьте ровно один сжиматель.",
|
|
8898
|
+
"conflict.risk_historical": " найдены (событий за последние 7 дней нет — только штатные записи) — когда вы убедитесь, что другой сжиматель удалён или заблокирован bili, очистите их кнопкой.",
|
|
8899
|
+
"conflict.risk_sibling": " найдены. Это собственные родственные расширения bili, а не сторонние сжиматели: пока сессию ведёт bili, они автоматически бездействуют (метка BILLION_CONTEXT_NATIVE в нативном режиме, иначе самопроверка baseUrl с /bili/), так что второй сжиматель не активен — проверьте, что версии свежие, и очистите эту запись; ничего удалять не нужно.",
|
|
8900
|
+
"conflict.risk_suspected": " — только сигнал по имени [подозрение], а не наблюдаемое доказательство двойного сжатия. Прежде чем действовать, убедитесь, что он действительно переписывает контекст модели; плагин отображения или сворачивания вывода инструментов (например, pi-compact-transcript) не сжимает дважды и удаления не требует.",
|
|
8901
|
+
"conflict.risk_unconfirmed": " — все перечисленные выше признаки НЕПОДТВЕРЖДЕНЫ: они не доказывают существование второго сжимателя (возможные причины: правки на стороне клиента, нераспознанный формат сжатия или другой плагин). Проверьте, прежде чем действовать; просмотрщик контекста только для чтения или плагин отображения и сворачивания вывода инструментов не является сжимателем и удаления не требует.",
|
|
8902
|
+
"conflict.what_join": " и ",
|
|
8903
|
+
"conflict.what_native": "нативное автосжатие клиента, переписывающее историю беседы",
|
|
8904
|
+
"conflict.what_plugin": "сторонний плагин сжатия, работающий рядом с bili",
|
|
8905
|
+
"conflict.what_signal": "переписывание истории беседы (изменение замечено, причина пока не установлена)",
|
|
8906
|
+
"conflict.what_suspected": "плагин, имя которого совпадает с ключевыми словами про сжатие (пока не подтверждено, что он действительно сжимает контекст)",
|
|
8907
|
+
"conflict.where": "Подробности: страница сессий ниже или поле conflicts в ответе GET /__bili/stats.",
|
|
8908
|
+
"copy.ca": "Скопировать путь к CA",
|
|
8909
|
+
"data.error": "Не удалось загрузить данные: {msg} · автоматический повтор с задержкой",
|
|
8910
|
+
"data.generic": "сетевая ошибка или истекло время ожидания запроса",
|
|
8911
|
+
"data.timeout": "истекло время ожидания запроса (20 с)",
|
|
8912
|
+
"det.active_pack": "Набор промптов",
|
|
8913
|
+
"det.attr_abort": "⏻ Связано с прерыванием",
|
|
8914
|
+
"det.attr_abort_tip": "Промахи уложились в 30 с после прерывания клиента в середине потока — повторные попытки переписывают пересылаемый хвост; это корреляция, а не причина (метка наложения, а не отдельная категория)",
|
|
8915
|
+
"det.attr_client": "✎ Переписывание клиентом в середине истории",
|
|
8916
|
+
"det.attr_client_tip": "Собственная пересылка истории клиента разошлась в середине списка (вставка или переписывание — другой плагин на хосте, подъём вставок, повторный рендер): пара отпечатков входящих сообщений не совпадает на этом индексе, и точная пересборка bili перенесла изменение в запрос. Пересчёт на стороне клиента, а не шов пересборки bili (#3023)",
|
|
8917
|
+
"det.attr_provider": "▲ Промах на стороне провайдера (аномалия)",
|
|
8918
|
+
"det.attr_provider_tip": "Пришёл вскоре после предыдущего запроса, весь список сообщений которого вернулся байт в байт (целиком или его префикс с добавленными только хвостовыми сообщениями; выше предела криминалистики в 512 КиБ, что доказано устойчивой записанной головой и точным ростом числа сообщений), но апстрим не отдал свой кэш — аномалия: вытеснение или смена релей-узла. Парные случаи с большим интервалом учитываются как истечение TTL у апстрима",
|
|
8919
|
+
"det.attr_rest": "остальное {x}",
|
|
8920
|
+
"det.attr_rest_tip": "мелкие остатки ниже порога классификации (<8K или <30% ввода на один замер) по отдельности не классифицируются",
|
|
8921
|
+
"det.attr_restart": "⟳ сброс при перезапуске",
|
|
8922
|
+
"det.attr_restart_tip": "После перезапуска bili или восстановления сессии окно реестра разрывается: первый запрос после перезапуска не сопоставляется с замерами до перезапуска, поэтому его промах учитывается как первый (исходный контент)",
|
|
8923
|
+
"det.attr_rewind": "↩ История перемотана назад",
|
|
8924
|
+
"det.attr_rewind_tip": "Откат или обрезка на стороне клиента уменьшили число сообщений — это разрешённый однократный пересчёт сохранённого префикса, а не дефект",
|
|
8925
|
+
"det.attr_seam": "⚠ Шов кэша",
|
|
8926
|
+
"det.attr_seam_tip": "Исходящие тела разошлись в середине истории без привязки к сжатию, смене модели или перезапуску — подозревается шов пересборки. Значение = токены, пересчитанные на подозрительных замерах. Если сжатие произошло за несколько минут до этого, обычно это пересчёт клиентского эха после сжатия (принадлежит сжатию начиная с #2929)",
|
|
8927
|
+
"det.attr_ttl": "⏱ Истечение TTL у апстрима (норма)",
|
|
8928
|
+
"det.attr_ttl_tip": "Промахи с неизменившимися байтами или с добавлением в хвост уложились более чем через 10 минут после предыдущего замера — кэш префикса апстрима просто устарел; это ожидаемая стоимость, ничего делать не нужно",
|
|
8929
|
+
"det.auto_mode_forge": "Вердикты авторежима",
|
|
8930
|
+
"det.auto_mode_forge_local": "вердикты авторежима, на которые bili отвечает локально (нулевой трафик к апстриму)",
|
|
8931
|
+
"det.auto_mode_forge_short": "кузница",
|
|
8932
|
+
"det.auto_mode_forge_tip": "Вердикты безопасности авторежима для этой сессии отвечает локально bili — без вызова модели апстрима и без списаний (#2740)",
|
|
8933
|
+
"det.block_active": "активные",
|
|
8934
|
+
"det.block_external": "внешние",
|
|
8935
|
+
"det.block_inactive": "неактивные",
|
|
8936
|
+
"det.blocks_copy_md": "скопировать Markdown",
|
|
8937
|
+
"det.blocks_count": "Всего: {total} · активных: {active}",
|
|
8938
|
+
"det.blocks_download": "скачать блоки (.md)",
|
|
8939
|
+
"det.blocks_empty": "Блоков сжатия пока нет",
|
|
8940
|
+
"det.blocks_title": "Блоки сжатия",
|
|
8941
|
+
"det.cache_econ": "Экономика кэша",
|
|
8942
|
+
"det.calib_chip": "k̂={k} · замеров: {n} · разброс {spread}× · {origin}",
|
|
8943
|
+
"det.calib_tip": "Коэффициент калибровки k̂: среднее по последним {n} согласованным замерам (разброс {spread}×) на этом маршруте и модели; занижает только оценки; переучивается после смены маршрута или модели. Источник: {origin}{model}.",
|
|
8944
|
+
"det.cause_cold": "холодный старт (кэша раньше не было)",
|
|
8945
|
+
"det.cause_comp": "пересборка после сжатия",
|
|
8946
|
+
"det.cause_ttl": "пересчёт без причины · остальное",
|
|
8947
|
+
"det.cause_unattrib": "пересчёт без причины",
|
|
8948
|
+
"det.ccr": "CCR — извлечение содержимого",
|
|
8949
|
+
"det.ccr_detail": "вызовов: {calls} · попаданий: {hits} · промахов: {misses}",
|
|
8950
|
+
"det.ce_balanced": "Реестр сходится ✓",
|
|
8951
|
+
"det.ce_breakdown": "из них:",
|
|
8952
|
+
"det.ce_comp": "Пересборка после сжатия",
|
|
8953
|
+
"det.ce_comp_hint": "Совет: уменьшение compress.preserveRecentMessages (числа защищённых недавних сообщений) сокращает эту долю — минимум 1",
|
|
8954
|
+
"det.ce_new": "Новое содержимое",
|
|
8955
|
+
"det.ce_residual": "Остаток",
|
|
8956
|
+
"det.ce_ttl": "Пересчёт без причины",
|
|
8957
|
+
"det.ce_unbalanced": "Реестр не сходится ✗",
|
|
8958
|
+
"det.client_hint": "клиент",
|
|
8959
|
+
"det.conflicts_clear": "Очистить записи этой сессии",
|
|
8960
|
+
"det.conflicts_cleared": "Очищено",
|
|
8961
|
+
"det.conflicts_hint": "Признаки того, что к сессии прикасался другой сжиматель (диагностика, а не история)",
|
|
8962
|
+
"det.conflicts_more": "Более ранних событий: {n}…",
|
|
8963
|
+
"det.conflicts_title": "Конфликты сжатия",
|
|
8964
|
+
"det.covlost_sub": "сжатий потеряно покрытие: {n} ({x} заморожено): покрытые ими сообщения исчезли из пересылаемой истории — начисление остановлено",
|
|
8965
|
+
"det.ctx_age": "снимок {v} назад",
|
|
8966
|
+
"det.ctx_age_tip": "Когда это значение контекста было измерено или оценено; оно перестаёт обновляться при восстановлении или простое — старый снимок не отражает текущее отправленное состояние",
|
|
8967
|
+
"det.fold_h": "попаданий после сжатия, %",
|
|
8968
|
+
"det.fold_s": "сжато, S",
|
|
8969
|
+
"det.fold_short": "сжатие",
|
|
8970
|
+
"det.fold_sigma": "сводка, σ",
|
|
8971
|
+
"det.fold_t": "накопленный пересчёт, T",
|
|
8972
|
+
"det.fold_time": "когда",
|
|
8973
|
+
"det.folds": "Разбивка по сжатиям",
|
|
8974
|
+
"det.folds_empty": "Событий сжатия пока нет",
|
|
8975
|
+
"det.handoff": "Документ передачи",
|
|
8976
|
+
"det.handoff_copy_md": "Скопировать как Markdown",
|
|
8977
|
+
"det.handoff_download": "Скачать .md",
|
|
8978
|
+
"det.handoff_hint": "То же содержимое, что и в экспорте bili — вставьте в новую сессию, чтобы продолжить",
|
|
8979
|
+
"det.handoff_truncated": "⚠️ Содержимое обрезано для показа",
|
|
8980
|
+
"det.hit_pct": "доля попаданий в кэш",
|
|
8981
|
+
"det.identity": "Идентификатор",
|
|
8982
|
+
"det.key_events": "Смены ключа ({n})",
|
|
8983
|
+
"det.key_events_tip": "Смена отпечатка учётных данных = релей переключился на другую учётную запись; отпечатки — это префиксы sha256 из 12 шестнадцатеричных символов, а не сами ключи",
|
|
8984
|
+
"det.key_fp": "отпечаток ключа",
|
|
8985
|
+
"det.last_input": "Ввод последнего одиночного раунда",
|
|
8986
|
+
"det.ledger_gap": "Запросов не учтено в реестре: {n}",
|
|
8987
|
+
"det.ledger_gap_tip": "Реестр попаданий и промахов учитывает только запросы с момента последней пересборки; запросы вне этого окна не считаются — это типично для нескольких экземпляров с общим каталогом состояния. Сжатия внутри разрыва также не попадают в экономику сжатия",
|
|
8988
|
+
"det.leg_client": "✎ переписывание клиентом",
|
|
8989
|
+
"det.leg_pside": "▲ промах на стороне провайдера",
|
|
8990
|
+
"det.leg_pttl": "⏱ истечение TTL у апстрима",
|
|
8991
|
+
"det.leg_rest": "остальное",
|
|
8992
|
+
"det.leg_rewind": "↩ перемотка",
|
|
8993
|
+
"det.legend_base": "базовая линия системного промпта (измеряется, не сжимается)",
|
|
8994
|
+
"det.legend_base_est": "оценка базовой линии (системный промпт и инструменты, не сжимаются)",
|
|
8995
|
+
"det.legend_cached": "из них в кэше",
|
|
8996
|
+
"det.legend_fold": "сжатие",
|
|
8997
|
+
"det.legend_input": "ввод",
|
|
8998
|
+
"det.legend_seam": "шов кэша",
|
|
8999
|
+
"det.legend_window": "предел окна контекста",
|
|
9000
|
+
"det.log": "Журнал",
|
|
9001
|
+
"det.log_view": "посмотреть журнал этой сессии ▸",
|
|
9002
|
+
"det.miss_split_line": "разбивка промахнутых токенов по доле попаданий: новое содержимое {n} (−{pn}%) · пересборка после сжатия {c} (−{pc}%) · пересчёт без причины {x} (−{px}%, TTL у апстрима/вытеснение/неизвестно)",
|
|
9003
|
+
"det.miss_sub": "пересчёт без причины −{x}% · пересборка после сжатия −{c}% · новое −{n}%",
|
|
9004
|
+
"det.not_found": "Сессия не найдена",
|
|
9005
|
+
"det.not_found_hint": "Возможно, её удалили или она находится за пределами этого каталога данных",
|
|
9006
|
+
"det.obudget_degraded": "⚠️ У модели {model} НЕТ известного верхнего предела вывода: её бюджет вывода поднят до {value} токенов (большее из собственной оценки клиента и абсолютного минимума; авторитетного предела, который можно подтвердить, нет), поэтому более длинные ответы могут обрываться на пределе вывода. Задайте предел вывода для этого провайдера и модели в конфигурации bili или задайте maxTokens у модели в профиле хоста (#2904/#3071)",
|
|
9007
|
+
"det.omitted": "Самые ранние замеры обрезаны при записи: {n} — каждая сессия хранит только 4096 последних замеров кэша (восстановить их нельзя), поэтому график начинается с самого старого сохранённого замера",
|
|
9008
|
+
"det.proj_events": "Смены проекции или режима ({n})",
|
|
9009
|
+
"det.proj_events_tip": "Отпечаток пересылаемой проекции изменился, хотя каноническое входящее содержимое system и developer осталось тем же — значит, сам прокси переключил режим сжатия или проекцию (например, самовосстановление с переходом на прокси); отпечатки — это префиксы sha256 из 16 шестнадцатеричных символов, а не исходный текст (#2867)",
|
|
9010
|
+
"det.proj_fp": "отпечаток проекции",
|
|
9011
|
+
"det.prompt_events": "Переписывания системного промпта ({n})",
|
|
9012
|
+
"det.prompt_events_tip": "Отпечаток пересылаемой проекции изменился И каноническое входящее содержимое тоже изменилось — значит, хост переписал свой системный промпт между запросами; отпечатки — это префиксы sha256 из 16 шестнадцатеричных символов, а не исходный текст (#2350/#2867)",
|
|
9013
|
+
"det.prompt_fp": "отпечаток промпта",
|
|
9014
|
+
"det.report_dl": "скачать отчёт по кэшу (.md)",
|
|
9015
|
+
"det.report_masked": "[скрыто]",
|
|
9016
|
+
"det.report_md": "полный отчёт · Markdown",
|
|
9017
|
+
"det.report_note": "заголовок и другие персональные данные по умолчанию скрыты",
|
|
9018
|
+
"det.report_png": "полный отчёт · изображение (PNG)",
|
|
9019
|
+
"det.rpt_cached": "из кэша",
|
|
9020
|
+
"det.rpt_hit": "попаданий, %",
|
|
9021
|
+
"det.rpt_input": "ввод",
|
|
9022
|
+
"det.rpt_missed": "промахнуто",
|
|
9023
|
+
"det.seam_col_div": "первое расхождение",
|
|
9024
|
+
"det.seam_col_hit": "попаданий, %",
|
|
9025
|
+
"det.seam_col_input": "ввод",
|
|
9026
|
+
"det.seam_events": "⚠ События шва кэша · {n}",
|
|
9027
|
+
"det.seam_events_tip": "Первое расхождение между соседними исходящими телами; если оно повторяется, приложите bili.log за это время (семейство #1548)",
|
|
9028
|
+
"det.seam_mark_tip": "⚠ ШОВ КЭША #{seq} · {at} · попаданий {hit}% · первое расхождение ≥{lcp} байт @ сообщение[{msg}] ({prev}→{cur} сообщ.)",
|
|
9029
|
+
"det.seam_msg": "сообщение[{i}] ({prev}→{cur} сообщ.)",
|
|
9030
|
+
"det.self_heal": "Самовосстановление",
|
|
9031
|
+
"det.self_heal_degrade_to_proxy": "плагин-канал исчез → переход в режим прокси (инструменты внедрены заново)",
|
|
9032
|
+
"det.self_heal_short": "починка",
|
|
9033
|
+
"det.self_heal_suppress_nudge": "цикл подталкивания в простое → подавлен (снимется, когда сжатие возобновится)",
|
|
9034
|
+
"det.self_heal_tip": "Самовосстановление застрявшей сессии взяло управление на себя — смотрите подробности сессии (#2155)",
|
|
9035
|
+
"det.stab_append": "добавление в хвост",
|
|
9036
|
+
"det.stab_gap": "медианный интервал между запросами: при низкой доле попаданий (<80%) {a} с против {b} с при высокой доле",
|
|
9037
|
+
"det.stab_head": "начало <1КиБ (смена параметров)",
|
|
9038
|
+
"det.stab_identical": "идентичны байт в байт",
|
|
9039
|
+
"det.stab_mid": "переписывание в середине истории",
|
|
9040
|
+
"det.stab_pairs": "соседних пар: {n}",
|
|
9041
|
+
"det.stab_size": "доля попаданий по размеру ввода (медиана)",
|
|
9042
|
+
"det.stab_tail": "хвост (параметры / временные заметки)",
|
|
9043
|
+
"det.stab_tip": "Побайтовое сравнение SHA-256 каждого исходящего тела с предыдущим устоявшимся запросом: совпадение — полное совпадение байтов (например, повтор транспорта); различающиеся пары классифицируются по первому расхождению — начало <1КиБ = смена параметров на стороне хоста (модель, инструменты, сэмплирование), добавление в хвост = чистый рост хвоста, середина истории = настоящее переписывание префикса, хвост = завершающие параметры верхнего уровня или временные заметки в конце или за концом массива сообщений (байты истории не тронуты, кэш не задет), смещение неизвестно = тела выше предела хранения (неравенство всё равно доказано дайджестом)",
|
|
9044
|
+
"det.stab_title": "Стабильность тел (побайтовое доказательство по каждому вызову)",
|
|
9045
|
+
"det.stab_unknown": "смещение неизвестно (превышен предел)",
|
|
9046
|
+
"det.storage_mode": "Режим хранения",
|
|
9047
|
+
"det.storage_mode_full": "полный (сначала единое хранилище, двойная запись)",
|
|
9048
|
+
"det.storage_mode_legacy": "устаревший (только JSON)",
|
|
9049
|
+
"det.storage_mode_shadow": "теневой (пробная двойная запись)",
|
|
9050
|
+
"det.store": "Хранилище содержимого",
|
|
9051
|
+
"det.thinking": "размышление",
|
|
9052
|
+
"det.traj_reset": "Сбросить вид",
|
|
9053
|
+
"det.traj_zoom_hint": "Проведите по графику, чтобы приблизить диапазон замеров; дважды щёлкните или нажмите Esc, чтобы сбросить",
|
|
9054
|
+
"det.traj_zoomed": "Вид #{a}–#{b} ({times})",
|
|
9055
|
+
"det.trajectory": "Траектория контекста",
|
|
9056
|
+
"det.trajectory_empty": "Замеров расхода для этой сессии пока нет",
|
|
9057
|
+
"det.trajectory_sub": "Ввод в токенах и попадания в кэш по каждому запросу; красные отметки — сжатия",
|
|
9058
|
+
"det.upper_bound": "граница {v} (верхняя граница по числу символов — только защита, а не фактический расход)",
|
|
9059
|
+
"det.usage": "Расход",
|
|
9060
|
+
"det.version": "Версия прокси",
|
|
9061
|
+
"dt.auth": "Аутентификация",
|
|
9062
|
+
"dt.ca_cert": "Сертификат CA",
|
|
9063
|
+
"dt.config_file": "Файл конфигурации",
|
|
9064
|
+
"dt.env": "Окружение",
|
|
9065
|
+
"dt.example": "Пример",
|
|
9066
|
+
"dt.setting": "Настройка",
|
|
9067
|
+
"fork.label": "★ Сделать форк на GitHub",
|
|
9068
|
+
"hostplug.desc": "Его состав по сегментам и хронология оцениваются по локальному счётчику до сжатия (по требованиям архитектуры dsh долговременный журнал остаётся без потерь), поэтому доли сегментов могут не совпадать с тем, что отправляется на самом деле; итоговый размер контекста отражает реально отправленный объём.",
|
|
9069
|
+
"hostplug.dismiss_btn": "Закрыть",
|
|
9070
|
+
"hostplug.dismissed": "Уведомление закрыто",
|
|
9071
|
+
"hostplug.hint": "Достоверные данные об эффективном контексте: /acp или GET /__bili/plugin/status → contextTokens.",
|
|
9072
|
+
"hostplug.on": "Обнаружен плагин на стороне хоста",
|
|
9073
|
+
"logs.count": "показано последних {n} из {total} подходящих строк",
|
|
9074
|
+
"logs.ctx": "контекст ±3 строки",
|
|
9075
|
+
"logs.dl": "скачать текущий вид (.txt)",
|
|
9076
|
+
"logs.dl_all": "скачать полный журнал (.txt)",
|
|
9077
|
+
"logs.empty": "подходящих строк нет (файл журнала мог ещё не появиться)",
|
|
9078
|
+
"logs.filter_ph": "фильтр (id сессии или ключевое слово)",
|
|
9079
|
+
"logs.omitted": " · {o} более ранних строк обрезано (увеличьте лимит строк)",
|
|
9080
|
+
"logs.path": "файл журнала",
|
|
9081
|
+
"logs.sub": "живой просмотр bili.log · фильтр по id сессии или ключевому слову, с расширением контекста и окна времени",
|
|
9082
|
+
"logs.title": "Журнал запуска",
|
|
9083
|
+
"logs.win": "окно времени ±2 мин",
|
|
9084
|
+
"nav.config": "Конфигурация",
|
|
9085
|
+
"nav.connect": "Подключение",
|
|
9086
|
+
"nav.logs": "Журналы",
|
|
9087
|
+
"nav.overview": "Обзор",
|
|
9088
|
+
"nav.sessions": "Сессии",
|
|
9089
|
+
"other.rule": "Добавить в начало любого baseURL:",
|
|
9090
|
+
"ov.by_protocol": "По протоколу обмена",
|
|
9091
|
+
"ov.cached_tokens": "Токены из кэша",
|
|
9092
|
+
"ov.covlost_note": "Потеряно покрытие: {n} сжатий, заморожено: {x}",
|
|
9093
|
+
"ov.global_hitpct": "Общая доля попаданий в кэш",
|
|
9094
|
+
"ov.gross_note": "суммирует экономию каждого сжатия по всем последующим запросам (теоретический верхний предел)",
|
|
9095
|
+
"ov.gross_saved": "Экономия от сжатия (накопительно)",
|
|
9096
|
+
"ov.hist": "исторические",
|
|
9097
|
+
"ov.input_tokens": "Входные токены",
|
|
9098
|
+
"ov.live_now": "сейчас активны",
|
|
9099
|
+
"ov.miss_split": "непокрытые токены (учтённые сессии): новое содержимое {n} · пересборка после сжатия {c} · неатрибутированный возврат {x} (на удалённом сервере: TTL/вытеснение/неизвестно)",
|
|
9100
|
+
"ov.net_excl": "сессии до тегирования без замеров не включены",
|
|
9101
|
+
"ov.net_saved": "Чистая экономия",
|
|
9102
|
+
"ov.output_tokens": "Выходные токены",
|
|
9103
|
+
"ov.recent": "Недавно активные сессии",
|
|
9104
|
+
"ov.saved_from_legacy": "{n} из них оценено локально по сессиям до тегирования",
|
|
9105
|
+
"ov.saved_neg_tip": "Отрицательная чистая экономия: пересборка после сжатия (стоимость повторного чтения сводки) превысила теоретическую выгоду; это типично для коротких сессий, завершившихся сразу после сжатия",
|
|
9106
|
+
"ov.sub": "Глобальная статистика по всем живым и сохранённым на диске сессиям",
|
|
9107
|
+
"ov.sub_repay": "после вычета пересборки после сжатия {r} и стоимости сводки {s}",
|
|
9108
|
+
"ov.title": "Обзор",
|
|
9109
|
+
"ov.tokens_saved": "Сэкономлено сжатием",
|
|
9110
|
+
"ov.total_requests": "Всего запросов",
|
|
9111
|
+
"ov.total_sessions": "Всего сессий",
|
|
9112
|
+
"ov.view_all": "Смотреть все →",
|
|
9113
|
+
"pck.hint": "Этот удалённый сервер отклоняет запросы с prompt_cache_key (400 с ключом, без ключа — принимает), поэтому bili не передаёт ключ туда до перезапуска. Если это ваш пул промежуточных серверов и учётных записей, привязка к префиксному кэшу для таких сессий может ухудшиться.",
|
|
9114
|
+
"pck.on": "Ключ маршрутизации кэша (prompt_cache_key) не передаётся",
|
|
9115
|
+
"pck.sessions": "Затронутые сессии: {ids}",
|
|
9116
|
+
"pluginadv.desc": "Этот плагин перед каждым вызовом инструмента заново отправляет модели всю беседу для проверки, поэтому префиксный кэш удалённого сервера почти не срабатывает (процент попаданий обычно однозначный), а расход токенов резко растёт. Это не связано со сжатием bili: bili выносит такие запросы в отдельную подсессию, оставляя префиксный кэш основной сессии нетронутым.",
|
|
9117
|
+
"pluginadv.hint": "Подумайте, стоит ли отключить плагин или попросить его разработчиков оптимизировать его; подробности — в ссылке выше (эта задача).",
|
|
9118
|
+
"pluginadv.on": "Обнаружен плагин с высокой стоимостью",
|
|
9119
|
+
"protocol.unmarked": "не отмечено (сессии старой версии)",
|
|
9120
|
+
"routing.codex_auth_note": "(Передача токена OAuth без изменений, сертификат не нужен)",
|
|
9121
|
+
"routing.codex_note_a": "Провайдер по умолчанию — openai, model_provider не нужен; если вы изменили",
|
|
9122
|
+
"routing.codex_note_b": "в config.toml, добавьте также",
|
|
9123
|
+
"routing.codex_note_c": ". Если подключение не работает и задан HTTP(S)_PROXY, добавьте также",
|
|
9124
|
+
"routing.codex_note_d": "; если bili работает в WSL2/Docker, используйте",
|
|
9125
|
+
"routing.codex_note_e": "из Windows (пересылается автоматически); 127.0.0.1 не сработает.",
|
|
9126
|
+
"ses.badge_live_tip": "Сессию обрабатывает текущий демон (живые данные)",
|
|
9127
|
+
"ses.count": "Сессий: {count}",
|
|
9128
|
+
"ses.covlost_tip": "Потеряно покрытие: {n} сжатий ({x} заморожено): хост удалил сжатые оригиналы вне ведения bili (например, штатным сжатием dsh) — их экономия больше не накапливается",
|
|
9129
|
+
"ses.drop_ph": "потери попаданий в процентах от всего ввода, порядок: новое содержимое / пересборка после сжатия / неатрибутированный возврат",
|
|
9130
|
+
"ses.empty": "Сессий пока нет",
|
|
9131
|
+
"ses.empty_hidden": "Скрыто пустых сессий: {n} (без запросов, контекста и учёта; по прямой ссылке они всё ещё доступны)",
|
|
9132
|
+
"ses.empty_hint": "Первый запрос через прокси создаёт сессию автоматически",
|
|
9133
|
+
"ses.load_more": "Загрузить ещё",
|
|
9134
|
+
"ses.no_title": "без названия",
|
|
9135
|
+
"ses.refresh": "Обновить",
|
|
9136
|
+
"ses.search_ph": "Поиск по названию, метке или id…",
|
|
9137
|
+
"ses.sub": "Все сессии из памяти и с диска — нажмите на строку, чтобы открыть подробности, траекторию и документ передачи",
|
|
9138
|
+
"ses.th_blocks": "Блоки",
|
|
9139
|
+
"ses.th_client": "Клиент",
|
|
9140
|
+
"ses.th_ctx": "Контекст сейчас",
|
|
9141
|
+
"ses.th_folds": "Сжатий",
|
|
9142
|
+
"ses.th_hit": "Попадания, %",
|
|
9143
|
+
"ses.th_input": "Накопленный ввод",
|
|
9144
|
+
"ses.th_keyswitches_tip": "Ротация ключа и учётной записи промежуточного сервера (за тем же URL сменился отпечаток учётных данных) · токены пересчитаны, потому что новая учётная запись начинает с холодного кэша (#2131)",
|
|
9145
|
+
"ses.th_projswitches_tip": "Прокси переключил свой режим сжатия или проекцию (например, самовосстановление с переходом в режим прокси заново поднимает сообщения разработчика из середины истории в системный блок) · каждое переключение сбрасывает все последующие записи префиксного кэша — токены пересчитаны для стабильного префикса (#2867)",
|
|
9146
|
+
"ses.th_promptswitches_tip": "Хост переписал свой системный промпт (отпечаток изменился между запросами, например из-за периодической динамической секции) · каждая перезапись сбрасывает все последующие записи префиксного кэша — токены пересчитаны для стабильного префикса (#2350)",
|
|
9147
|
+
"ses.th_proto": "Протокол",
|
|
9148
|
+
"ses.th_reqs": "Запросы",
|
|
9149
|
+
"ses.th_saved": "Сэкономлено",
|
|
9150
|
+
"ses.th_seen": "Последняя активность",
|
|
9151
|
+
"ses.th_switches": "Переключения",
|
|
9152
|
+
"ses.th_switches_tip": "Переключения модели в середине сессии · токены пересчитаны, потому что новая модель начинает с холодного префиксного кэша (#1535) · 🔑 = ротация ключа и учётной записи промежуточного сервера (смена отпечатка учётных данных, #2131) · ✍️ = переписывание системного промпта хостом (смена отпечатка промпта, #2350) · 🔀 = переключение режима сжатия или проекции прокси (например, самовосстановление с переходом в режим прокси, #2867)",
|
|
9153
|
+
"ses.th_title": "Сессия",
|
|
9154
|
+
"ses.th_upstream": "Удалённый сервер",
|
|
9155
|
+
"ses.title": "Сессии",
|
|
9156
|
+
"summary.add": "Добавить цель",
|
|
9157
|
+
"summary.bytes": "Лимит сводки (байт)",
|
|
9158
|
+
"summary.concurrency": "Размер пула (от 1 до 32, по умолчанию 4)",
|
|
9159
|
+
"summary.credentials": "Учётные данные рецепта",
|
|
9160
|
+
"summary.down": "Переместить ниже",
|
|
9161
|
+
"summary.enabled": "Включено",
|
|
9162
|
+
"summary.invalid": "Некорректная конфигурация сводки; исправьте её в JSON",
|
|
9163
|
+
"summary.key": "Ключ API",
|
|
9164
|
+
"summary.key_bad_ref": "Некорректный формат ссылки",
|
|
9165
|
+
"summary.key_delete": "Удалить ключ",
|
|
9166
|
+
"summary.key_invalid": "Значение непригодно (пусто, пробельные или управляющие символы либо слишком длинное)",
|
|
9167
|
+
"summary.key_missing": "Не настроено",
|
|
9168
|
+
"summary.key_save": "Сохранить ключ",
|
|
9169
|
+
"summary.key_saved": "Ключ сохранён",
|
|
9170
|
+
"summary.key_set": "Настроено",
|
|
9171
|
+
"summary.key_unreadable": "Хранилище учётных данных недоступно для чтения (права доступа или содержимое)",
|
|
9172
|
+
"summary.no_recipes": "В провайдерах пока нет именованных рецептов подключения (записей без URL, с полями baseUrl/api) — сначала добавьте один в JSON",
|
|
9173
|
+
"summary.ref": "Цель (провайдер/модель)",
|
|
9174
|
+
"summary.remove": "Убрать цель",
|
|
9175
|
+
"summary.timeout": "Тайм-аут для каждой цели (мс)",
|
|
9176
|
+
"summary.title": "Общая служба сводок (экспериментально)",
|
|
9177
|
+
"summary.total": "Общий лимит времени (мс)",
|
|
9178
|
+
"summary.up": "Переместить выше",
|
|
9179
|
+
"sys.attribution_broken": "Перехват сломан ({agent}): запросы к модели идут напрямую (без сжатия), отклонено {n} — перезапустите хост, чтобы вернуть сжатие",
|
|
9180
|
+
"sys.blind_tunnels": "Слепые туннели MITM (CONNECT без TLS)",
|
|
9181
|
+
"sys.disk_version": "Версия на диске",
|
|
9182
|
+
"sys.inflight": "Запросы в работе",
|
|
9183
|
+
"sys.policy_hold": "HOLD действует для всего парка — автообновления заморожены; вручную по-прежнему можно: bili update",
|
|
9184
|
+
"sys.policy_pinned": "парк закреплён на v{version} — ничего новее не установится автоматически; вручную: npm install -g billion-context@<version>",
|
|
9185
|
+
"sys.policy_title": "Автообновления по удалённой политике обновлений:",
|
|
9186
|
+
"sys.pt_env": "Переменная окружения ACP_PASSTHROUGH (или флаг --passthrough)",
|
|
9187
|
+
"sys.pt_file": "в файле конфигурации passthrough: true",
|
|
9188
|
+
"sys.pt_on": "Passthrough включён: все запросы пересылаются без изменений, сжатие отключено. Источник:",
|
|
9189
|
+
"sys.report_copy": "Копировать диагностику",
|
|
9190
|
+
"sys.report_issue": "Сообщить на GitHub",
|
|
9191
|
+
"sys.stale": "На диске новая версия v{disk} — работает v{running}; перезапустите хост, чтобы загрузить новый код",
|
|
9192
|
+
"sys.stale_auto": "Автоперезапуск включён — переключается автоматически в простое",
|
|
9193
|
+
"sys.stale_manual": "Автоперезапуск не включён (нужен --auto-restart-on-update)",
|
|
9194
|
+
"sys.storage_degraded": "В одном из будущих выпусков единое хранилище SQLite станет стандартным, но эта система не может работать с ним ({reason}). Вас автоматически вернули на хранилище JSON — сегодня это ни на что не влияет. Сообщите об этом, чтобы вашу среду учли до переключения.",
|
|
9195
|
+
"sys.storage_degraded_title": "Хранилище SQLite работает с ограничениями:",
|
|
9196
|
+
"sys.title": "Состояние системы",
|
|
9197
|
+
"sys.update": "Напоминание об обновлении:",
|
|
9198
|
+
"sys.update_available": "доступно критическое исправление — обновитесь до v{version} или новее: {summary}",
|
|
9199
|
+
"sys.update_ready": "критическое исправление готово (v{version}) — перезапустите bili, чтобы применить",
|
|
9200
|
+
"sys.version": "Версия",
|
|
9201
|
+
"toast.connect_ok": "Соединение установлено, HTTP {status}",
|
|
9202
|
+
"toast.failed": "Операция не удалась: {msg}",
|
|
9203
|
+
"toast.passthrough_cleared": "Passthrough отключён ✓",
|
|
9204
|
+
"toast.upstream_reachable": "Доступен (HTTP {status}) — сеть в порядке; авторизацию обрабатывает клиент",
|
|
9205
|
+
"zcode.hint_a": "Путь к CA — это абсолютный путь, который bili действительно создал на этой машине — нажмите «Скопировать путь к CA» и вставьте его прямо в ZCode. ⚠️ В Windows ZCode не разворачивает",
|
|
9206
|
+
"zcode.hint_b": ", не набирайте вручную",
|
|
9207
|
+
"zcode.hint_c": "пути вида -.",
|
|
9208
|
+
"zcode.method": "Прозрачный прокси MITM",
|
|
9209
|
+
"zcode.title": "ZCode (тариф для программирования)"
|
|
9210
|
+
}
|
|
5118
9211
|
};
|
|
5119
9212
|
//#endregion
|
|
5120
9213
|
//#region src/client/plural.ts
|