@goodandready/dsh-russian-lang 0.3.12 → 0.3.14

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.
@@ -1 +1 @@
1
- {"dsh-kanban":{"DEFAULT_BOARDS.main.title":"Проектная доска","DEFAULT_BOARDS.simple.title":"Простая доска","acceptance.accept":"Принять (Выполнено)","acceptance.acceptAndMerge":"Принять и смержить ветку","acceptance.merging":"Выполняется слияние ветки…","acceptance.reject":"Вернуть на доработку","acceptance.rejectReasonPlaceholder":"Укажите, что необходимо исправить или доработать...","acceptance.rejectSubmit":"Отправить на доработку","acceptance.rejectTitle":"Возврат на доработку","acceptance.rejectedAlert":"Возвращено на доработку: {reason}","acceptance.rejectedBadge":"На доработке","acceptance.title":"Приёмка и проверка задачи","action.exportCsv":"Экспорт доски в CSV","action.resume":"Возобновить выполнение","archive.empty":"В архиве пусто.","archive.hint":"Карточки, отстоявшие свой срок в «Выполнено». Ничего не удалено: возвращённая карточка встаёт в ту же колонку, откуда ушла.","archive.restore":"Вернуть на доску","archive.since":"в архиве {ago}","archiveAfterDays":"Через сколько дней в колонке «Выполнено» карточка уходит в архив. Ноль — не убирать.","batch.hint":"Одна сессия на все. Задачи приходят по очереди: агент берёт следующую, закончив текущую. В «В работе» уезжает только первая — остальные ждут своей очереди там, где лежат.","batch.start":"Запустить","batch.title":"Запустить {n} задач в одном чате","board.allRepos":"Все репозитории","board.archive":"Архив","board.back":"В чат","board.backHint":"Закрыть доску и вернуться в разговор","board.clearFilters":"Снять отборы","board.collapse":"Свернуть колонку","board.empty":"Задач пока нет.","board.expand":"Развернуть колонку","board.export":"Скачать","board.exportHint":"Экспортировать всю доску в файл JSON","board.import":"Импорт","board.imported":"Импортировано {n} задач","board.limit":"предел {n}","board.loading":"Доска загружается…","board.metrics":"Метрики","board.mine":"Мои: {n}","board.mineHint":"Задачи, назначенные на {who}","board.newTask":"Задача","board.noMatch":"Ничего не найдено.","board.noRepo":"без проекта","board.overdueCount":"Просрочено: {n}","board.overdueHint":"Показать только просроченные задачи","board.pickArchive":"В архив","board.pickMove":"Перенести…","board.pickNone":"Снять выбор","board.pickStart":"Запустить выбранные","board.pickUnqueue":"Снять с очереди","board.pickedCount":"выбрано {n}","board.refresh":"Обновить","board.repo":"репозиторий","board.search":"Поиск","board.shown":"показано {shown} из {total}","board.someFailed":"Сделано у {done} из {total}, остальные отказали.","board.sync":"Сверить с Gitea","board.syncing":"Сверяю…","board.waitCount":"Ждут ответа: {n}","board.waitCountHint":"Задачи, где агент задал вопрос или просит разрешения.","board.waiting":"нужен человек","boardName.main":"Проектная доска","boardName.simple":"Простая доска","boardToolEnabled":"Разрешить агенту двигать карточки инструментом board_move.","card.assigneeHint":"Кто взял задачу","card.attach":"Прикрепить файл","card.checklist":"Чеклист","card.comments":"Комментарии","card.created":"Создано {date}","card.deadline":"Срок выполнения","card.deleteConfirm":"Удалить эту карточку?","card.description":"Описание задачи","card.due":"срок {date}","card.dueDate":"Крайний срок","card.edit":"Редактировать","card.labels":"Метки","card.move":"Переместить в колонку","card.pack":"пачка {at} из {total}","card.packHint":"Запущены вместе, одной сессией; агент берёт их в этом порядке.","card.pick":"Отметить для группового запуска","card.priority":"Приоритет","card.progress":"Прогресс","card.queue":"в очередь...","card.revive":"Восстановить","card.stop":"остановить","card.tags":"Теги","card.title":"Название карточки","card.toChat":"перейти в чат","card.unqueue":"снять с очереди","checklist.add":"Добавить","checklist.empty":"Критерии готовности ещё не настроены.","checklist.evidence":"Подтверждение: {text}","checklist.placeholder":"Новый критерий готовности...","checklist.progress":"DoD: {done} из {total}","checklist.required":"Обязательно","checklist.title":"Критерии готовности (DoD)","chip.moveTo":"Перенести в","chip.note":"Оставить заметку","chip.noteHint":"Заметка дописывается в тело задачи. Тело уходит агенту первым сообщением, поэтому заметка до запуска попадёт в работу, а после запуска — нет.","chip.noteSave":"Дописать","chip.openCard":"Перейти к карточке","column.addCard":"+ Добавить карточку","column.backlog":"Бэклог","column.cleanup":"Уборка","column.clear":"Очистить колонку","column.collapse":"Свернуть колонку","column.delete":"Удалить колонку","column.deploy":"Выкатка","column.done":"Выполнено","column.empty":"В этой колонке нет задач","column.expand":"Развернуть колонку","column.in-progress":"В работе","column.limit":"Лимит WIP: {n}","column.rename":"Переименовать колонку","column.review":"Ревью","column.title":"Название колонки","columnNames":"Свои названия колонок парами «идентификатор=Название» через запятую. Пусто — обычные названия.","comments.add":"Опубликовать комментарий","comments.authorAgent":"Агент","comments.authorUser":"Пользователь","comments.empty":"Комментариев пока нет.","comments.placeholder":"Добавьте заметку или отзыв...","comments.title":"Обсуждение и комментарии","console.empty":"Вывод агента пока не записан.","console.tab":"Живая консоль","defaultProjectRoot":"Корень, в котором лежат рабочие копии проектов. Пусто — рабочая папка харнесса.","dialog.archived":"архив","dialog.bodyHint":"Уйдёт агенту первым сообщением при запуске задачи.","dialog.cancel":"Отмена","dialog.create":"Создать","dialog.fromGitea":"Из Gitea","dialog.imported":"уже на доске","dialog.kind":"Какая это задача","dialog.kindPlain":"Не проект","dialog.kindPlainHint":"Заметка, не относящаяся ни к какому репозиторию. Живёт на простой доске и в Gitea не попадает.","dialog.kindProject":"Проект","dialog.kindProjectHint":"В Gitea заводится issue, карточка привязывается к нему и живёт на проектной доске.","dialog.labelsHint":"через запятую","dialog.loadingRepos":"Репозитории загружаются…","dialog.noIssues":"Открытых issue не найдено.","dialog.noRepos":"Репозиториев нет","dialog.own":"Своя задача","dialog.pickRepo":"Выберите репозиторий","dialog.repo":"Репозиторий","dialog.repoNamePlaceholder":"имя нового репозитория, латиницей","dialog.repoNew":"— новый репозиторий —","dialog.repoNewHint":"Будет создан в организации: приватный и пустой, без README и заготовок. Создание репозитория отсюда не отменить.","dialog.taskBody":"Описание","dialog.taskColumn":"Колонка","dialog.taskLabels":"Метки","dialog.taskTitle":"Заголовок","dialog.title":"Новая задача","diff.additions":"Добавлено","diff.author":"Автор","diff.branch":"Ветка: {name}","diff.cherryPick":"Перенести коммит (Cherry-pick)","diff.commits":"Коммиты задачи ({n})","diff.date":"Дата","diff.deletions":"Удалено","diff.empty":"Нет коммитов или изменений файлов для этой задачи.","diff.filesChanged":"Изменено файлов: {n}","diff.hash":"Хеш","diff.hide":"Скрыть просмотр diff","diff.loadFailed":"Не удалось загрузить изменения: {error}","diff.loading":"Загрузка коммитов и diff…","diff.mergeConflict":"Обнаружены конфликты слияния","diff.mergeFailed":"Сбой слияния ветки: {error}","diff.mergeSuccess":"Ветка успешно смержена в основную","diff.message":"Сообщение коммита","diff.resolveConflicts":"Разрешить конфликты","diff.revert":"Откатить коммит","diff.show":"Показать просмотр diff","diff.staged":"Подготовленные изменения","diff.title":"Изменения в ветке задачи","diff.truncated":"Дифф обрезан (превышен лимит)","diff.uncommitted":"Незакоммиченные изменения","diff.view":"Просмотр изменений","discard":"Отменить","epic.addSubtask":"Добавить подзадачу","epic.badge":"Эпик","epic.createGiteaIssues":"Также создать связанные задачи в Gitea","epic.noSubtasks":"Подзадач пока нет.","epic.progress":"Подзадач: {done}/{total}","epic.subtasks":"Подзадачи","epic.triage":"Декомпозировать","epic.triageHelp":"Введите по одному названию подзадачи в строке. Дочерние задачи будут привязаны к этому эпику.","epic.triageSubmit":"Создать подзадачи","epic.triageTitle":"Декомпозиция задачи на подзадачи","error.bad-repo-name":"В имени репозитория допустимы только латинские буквы, цифры, точка, дефис и подчёркивание.","error.badImport":"Неверный формат файла импорта","error.crossSite":"Запрос отклонён как межсайтовый.","error.gitea-unreachable":"Сервер Gitea недоступен","error.giteaAbsent":"Плагин Gitea не установлен, импорт недоступен.","error.giteaUnconfigured":"Сначала настройте Gitea в карточке плагина Gitea.","error.issue-not-created":"Issue не заведён. Если репозиторий был новым, он остался — ничего не удалено.","error.issueNotFound":"Issue не найден.","error.modelNotSelected":"Модель не выбрана — задайте её в настройках или укажите здесь.","error.no-live-sessions":"Нет ни одной идущей сессии, в очередь ставить некуда.","error.permission-refused":"Уровень доступа не принят, задача не запущена.","error.permission-unavailable":"В этой сборке уровней доступа нет — задача не запущена, чтобы не пойти с бо́льшими правами, чем просили.","error.repo-not-created":"Репозиторий не создан; больше ничего не сделано.","error.repo-required":"Выберите репозиторий или назовите новый.","error.session-not-live":"Эта сессия больше не идёт.","error.sessionNotOpened":"Сессия поднята ({id}), но эта сборка не умеет в неё переключиться. Найдите её в списке сессий.","error.startFailed":"Не удалось поднять сессию.","error.task-not-queued":"Задача не стоит в очереди.","error.taskHasNoIssue":"За этой задачей нет issue в Gitea.","error.taskNotFound":"Задача не найдена.","error.titleRequired":"Нужен заголовок.","error.unknown":"Запрос не выполнен.","facet.assignee":"Исполнитель","facet.author":"Автор","facet.priority":"Приоритет","facet.release":"Выпуск","facet.repo":"Репозиторий","facet.risk":"Риск","facet.scope":"Область","facet.signal":"Сигнал","facet.status":"Статус","facet.type":"Тип","field.announceToAgent":"Уведомлять агента об изменениях","field.archiveAfterDays":"Убирать в архив из «Выполнено» через, дней","field.autoSyncSessions":"Автосинхронизация внешних сессий чата","field.boardToolEnabled":"Разрешить агенту двигать карточки","field.columnNames":"Свои названия колонок","field.cronEnabled":"Включить планировщик задач","field.defaultProjectRoot":"Корень проектов","field.gitProvider":"Git-провайдер","field.giteaOwner":"Организация Gitea","field.giteaTokenRef":"Имя учётной записи","field.giteaUrl":"Адрес инстанса","field.githubOwner":"Организация или пользователь GitHub","field.githubTokenRef":"Токен учётных данных GitHub","field.githubWebhookSecretRef":"Секрет вебхука GitHub","field.maxConcurrentSessions":"Макс. параллельных сессий агентов","field.permissionGateEnabled":"Контроль прав доступа к доске","field.preventIdleSleep":"Предотвращать засыпание при активных задачах","field.progressDumpEnabled":"Дамп прогресса выполнения","field.pushToGitea":"Закрывать issue в Gitea","field.replyInstruction":"Постоянная приписка","field.sessionDefaultPermission":"Права доступа сессии по умолчанию","field.staleAfterMin":"Считать задачу молчащей после, минут","field.startPrompt":"Шаблон первого сообщения","field.syncIntervalSec":"Сверяться с Gitea раз в, секунд","field.watchRepos":"Сузить подхват до репозиториев","field.webhookSecretRef":"Имя учётной записи для вебхука","field.wipInProgress":"Предел «В работе»","field.wipReview":"Предел «Ревью»","field.workspaceClaimBoundaries":"Границы захвата рабочей области","field.worktreeIsolation":"Изоляция рабочих деревьев (worktree)","field.worktreeRoot":"Корневой каталог worktree","filter.active":"Активные","filter.all":"Все задачи","filter.assignee":"Исполнитель","filter.epics":"Эпики","filter.label":"Метка","filter.overdue":"Просроченные","filter.priority":"Приоритет","filter.review":"На проверке","filter.search":"Поиск задач…","filter.stale":"Без активности","giteaOwner":"Организация Gitea, чьи репозитории смотрит доска. Пусто — определяется сама, если организация одна.","giteaTokenRef":"ИМЯ учётной записи DSH, в которой лежит токен. Сам токен сюда не вводить.","giteaUrl":"Адрес инстанса Gitea или Forgejo, например https://gitea.example.com. Пусто — импорт недоступен.","group.assignee":"По исполнителям","group.forge":"Git-кузница","group.general":"Общее","group.gitea":"Gitea","group.github":"GitHub","group.limits":"Пределы колонок","group.nobody":"Без исполнителя","group.repo":"По репозиториям","group.sync":"Автоперемещение","hint.announceToAgent":"Автоматически отправлять агенту сообщения о перемещении карточек","hint.archiveAfterDays":"Считается с попадания карточки в «Выполнено». Ноль — оставлять всё на доске.","hint.autoSyncSessions":"Автоматически создавать карточки на доске для стандартных диалогов чата DSH.","hint.boardToolEnabled":"Выключено, пока скилл воркфлоу запрещает этому CLI трогать канбан.","hint.columnNames":"Пары «идентификатор=Название» через запятую, например «backlog=Идеи, review=Проверка». Пусто — обычные названия.","hint.cronEnabled":"Запуск фоновых периодических проверок статусов задач","hint.defaultProjectRoot":"Где лежат рабочие копии проектов. Пусто — рабочая папка харнесса.","hint.gitProvider":"Активная кузница: «auto» (определять по учётным данным), «gitea» или «github».","hint.giteaOwner":"Чьи репозитории смотрит доска. Пусто — определится сама, пока у токена ровно одна организация.","hint.giteaTokenRef":"ИМЯ учётной записи DSH, в которой лежит токен. Сам токен сюда не вводить.","hint.giteaUrl":"Например https://gitea.example.com. Пусто — импорт недоступен.","hint.githubOwner":"Основная учётная запись GitHub для отслеживания. Если пусто, используется авторизованный пользователь.","hint.githubTokenRef":"Имя учётных данных DSH, содержащих токен PAT или GitHub App. Никогда не вводите сам токен открытым текстом.","hint.githubWebhookSecretRef":"Имя учётных данных DSH, содержащих секрет вебхука GitHub (HMAC-SHA256).","hint.label":"Пусто — метка для этой колонки не ставится.","hint.limit":"Ноль — без предела. Превышение подсвечивается, но не запрещается.","hint.permissionGateEnabled":"Требовать подтверждения при выполнении деструктивных операций","hint.preventIdleSleep":"Не усыплять фоновый процесс DSH, пока есть незавершённые задачи","hint.progressDumpEnabled":"Периодически сохранять прогресс выполнения в файл progress.md","hint.pushToGitea":"Карточка, дошедшая до «Выполнено», закрывает свой issue. Меток доска не ставит: стадия и так видна по ветке и pull request.","hint.replyInstruction":"Дописывается к каждому первому сообщению — например язык ответа. Пусто — ничего не добавляется.","hint.sessionDefaultPermission":"Уровень прав, выдаваемый сессиям без явных настроек","hint.staleAfterMin":"Помечаются только задачи с сессией. Ноль отключает отметку.","hint.startPrompt":"Шаблон первого сообщения агенту. Пусто — встроенный шаблон.","hint.syncIntervalSec":"Ноль отключает сверку. Меньше пятнадцати секунд поднимается до пятнадцати.","hint.watchRepos":"Через запятую, «владелец/репо» или просто «репо». Пусто — все репозитории организации, где есть открытые задачи.","hint.webhookSecretRef":"ИМЯ учётной записи DSH с секретом вебхука Gitea. Пусто — остаётся только опрос.","hint.worktreeIsolation":"Создавать отдельный git worktree для каждой задачи","hint.worktreeRoot":"Каталог, в котором создаются временные изолированные worktree","import.error":"Ошибка импорта JSON доски","import.success":"Доска успешно импортирована","label.assigned":"Назначено","label.blocked":"Заблокировано","label.completed":"Выполнено","label.inProgress":"В работе","label.pending":"В очереди","label.review":"На проверке","metrics.columns":"Время в колонках","metrics.completed":"Завершено задач: {n}","metrics.cycleTime":"Среднее время выполнения: {days} дн.","metrics.empty":"Переходов ещё не было — измерять нечего.","metrics.hint":"{n} задач на доске • выполнено за неделю: {week} • за месяц: {month}","metrics.leadTime":"Общее время от создания: {days} дн.","metrics.leadTimeAvg":"Средний Lead Time","metrics.mean":"среднее {time}","metrics.median":"медиана {time}","metrics.noStale":"Ни одна задача не задерживалась так долго.","metrics.stale":"Без движения дольше {days} дн.","metrics.throughput":"Пропускная способность","metrics.total":"Всего задач: {n}","metrics.wip":"Задач в работе (WIP): {n}","metrics.wipLimit":"Лимит задач в работе (WIP)","modal.confirmDelete":"Подтверждение удаления","modal.createTask":"Создание новой задачи","modal.editTask":"Редактирование задачи","move.backlog":"Работа по задаче останавливается: идущий ход агента будет прерван. Если сессии нет, карточка просто переедет.","move.cleanup":"Агент удалит ветку в Gitea, worktree и локальную ветку и запишет это в issue.","move.confirm":"Перенести","move.deploy":"Агент вольёт pull request и выкатит. Сам перенос в эту колонку И ЕСТЬ ваше «ок» на deploy — второй раз агент спрашивать не станет.","move.done":"Задача считается завершённой. Это решение человека: сам агент карточку сюда не переносит.","move.in-progress":"Агент получит команду начать или продолжить реализацию.","move.review":"Агент доведёт работу до ревью: снимет с pull request пометку черновика и запросит проверку.","move.title":"Перенести в «{column}»?","nav.all":"Все доски","nav.back":"Назад к доске","nav.settings":"Настройки доски","order.manual":"Как разложено","order.new":"Сначала новые","order.old":"Сначала старые","panel.agentPreset":"Профиль агента","panel.archive":"В архив","panel.assignDrop":"Отказаться","panel.assignMe":"Взять себе","panel.assignee":"взял {who}","panel.author":"завёл {who}","panel.bodyLoading":"читаю описание…","panel.cleanupWorktree":"Очистить worktree","panel.close":"Закрыть","panel.continue":"Продолжить","panel.continueHint":"У задачи один чат: открывается прежняя сессия, а не новая.","panel.created":"заведена {ago} назад","panel.delete":"Удалить","panel.deleteConfirm":"Удалить «{title}»? Отменить будет нельзя.","panel.due":"Срок","panel.issue":"Issue","panel.labels":"Метки","panel.log":"Переходы","panel.message":"Сообщение агенту","panel.messageHint":"Правьте перед отправкой. Пустое — уйдёт встроенный текст.","panel.model":"Модель","panel.noLog":"Переходов пока нет.","panel.noModels":"У этого провайдера нет моделей","panel.noProviders":"Провайдеров нет","panel.openChat":"Открыть чат","panel.permission":"Уровень доступа","panel.pickModel":"Выберите модель","panel.pickProvider":"Выберите провайдера","panel.pickProviderFirst":"Сначала выберите провайдера","panel.presetDefault":"Как в харнессе по умолчанию","panel.priority":"Приоритет","panel.priorityNone":"Без приоритета","panel.provider":"Провайдер","panel.refresh":"Обновить из Gitea","panel.saveEdit":"Сохранить","panel.start":"Начать","panel.startHint":"Откроется отдельная сессия агента по этой задаче. Ветку и worktree заводит агент после preflight, а не отсюда.","panel.starting":"Запускается…","panel.updated":"последнее изменение {ago} назад","panel.workDir":"Рабочая папка: {path}","panel.workDirHint":"Корень проекта не указан в настройках, поэтому используется эта папка.","panel.worktree":"Worktree: {path}","panel.worktreeDirty":"Незакоммиченные изменения в worktree: {files}","plan.counter":"{done} из {total}","plan.title":"План агента","pr.create":"Создать PR в Gitea","pr.created":"PR #{n} создан","pr.creating":"Создание PR…","pr.view":"Открыть PR","priority.high":"Высокий","priority.highest":"Критический","priority.low":"Низкий","priority.lowest":"Минимальный","priority.medium":"Средний","priority.normal":"Обычный","priority.urgent":"Срочный","queue.add":"В очередь","queue.hint":"Задача встанет в очередь сессии: агент возьмёт её, закончив текущую работу. До этого карточка остаётся там, где лежит.","queue.option":"{title} - задач: {n}","queue.session":"Сессия","queue.title":"Поставить в очередь идущей сессии","reasoning.default":"По умолчанию (модель)","reasoning.high":"Высокое (глубокие рассуждения)","reasoning.label":"Глубина рассуждений","reasoning.low":"Низкая (быстро / экономно)","reasoning.medium":"Средняя (сбалансировано)","replyInstruction":"Постоянная приписка к первому сообщению — например язык ответа. Пусто — ничего не добавляется.","report.artifacts":"Артефакты","report.changedFiles":"Изменённые файлы","report.checksRun":"Проверки и тесты","report.risks":"Риски и примечания","report.summary":"Сводка","report.title":"Отчёт о выполнении","revive.fresh":"Предыдущая сессия завершена, поэтому запущена новая; старый чат больше недоступен.","revive.same":"Предыдущая сессия восстановлена — чат на том месте, где вы остановились.","save":"Сохранить","section.label":"Канбан","settings.autoArchive":"Автоархивация завершённых задач","settings.autoArchiveHint":"Перемещать завершённые задачи в архив через указанное число дней","settings.boardName":"Название доски","settings.columns":"Колонки доски","settings.description":"Описание канбан-доски","settings.general":"Основные настройки","settings.integrations":"Интеграции","settings.loading":"Загрузка настроек доски…","settings.readOnly":"Настройки в этой сессии доступны только для чтения.","settings.save":"Сохранить настройки","settings.saveFailed":"Не сохранены поля: {fields}","settings.saved":"Настройки сохранены","settings.saving":"Сохранение настроек…","settings.subtitle":"Канбан-доска для сессий и задач","settings.unavailable":"Хост не знает пространство настроек dsh-kanban. Перезапустите веб-интерфейс после установки плагина.","slash.hint":"Введите / для списка команд и навыков","staleAfterMin":"После скольких минут молчания задача с сессией помечается тревожно. Ноль — не помечать.","startPrompt":"Шаблон первого сообщения агенту. Пусто — встроенный шаблон.","state.queued":"в очереди · {n}","state.running":"в работе","state.stopped":"остановился","status.active":"Активна","status.archived":"В архиве","status.closed":"Закрыта","status.open":"Открыта","stop.idle":"Агент не работал, останавливать было нечего.","stop.no-session":"У задачи нет сессии.","subtitle":"Доска задач: issue из Gitea и отдельная сессия под задачу","sync.failed":"сверка не проходит","sync.lastSeen":"последняя удачная сверка {ago} назад","sync.never":"сверки с Gitea ещё не было","sync.neverSeen":"удачной сверки с запуска харнесса не было","sync.okAgo":"сверено {ago} назад","sync.running":"сверяемся с Gitea…","syncIntervalSec":"Как часто сверяться с Gitea, в секундах. Ноль — не сверяться.","task.confirmPermission":"Подтвердить права","task.cron":"Расписание Cron","task.nextRun":"Следующий запуск: {date}","task.noRuns":"Запусков ещё не было","task.permissionConfirmed":"Права подтверждены","task.permissionGateWarning":"Требуется подтверждение повышенных прав ({permission})","task.progressDump":"Дамп прогресса (Handover)","task.runs":"История выполнений","template.bugfix":"Исправление бага (Bugfix)","template.feature":"Новая функция (Feature)","template.label":"Шаблон задачи","template.none":"Без шаблона (пусто)","template.refactor":"Рефакторинг (Refactor)","template.release":"Релиз (Подготовка выпуска)","template.security":"Безопасность (Аудит и CVE)","time.day":"{n} дн","time.hour":"{n} ч","time.min":"{n} мин","time.now":"только что","title":"Канбан","updater.check":"Проверить обновления","updater.checking":"Проверка…","updater.current":"Текущая версия","updater.failed":"Ошибка проверки обновлений: ","updater.latest":"Последняя версия","updater.success":"Плагин успешно обновлен! Пожалуйста, перезапустите сервис DSH.","updater.title":"Обновления плагина","updater.upToDate":"Актуальная версия","updater.updateNow":"Обновить до v{version}","updater.updating":"Обновление…","view.analytics":"Аналитика","view.archive":"Архив","view.board":"Доска","view.calendar":"Календарь","view.gantt":"Диаграмма Ганта","view.list":"Список","view.table":"Таблица","watchRepos":"Сузить подхват до этих репозиториев, через запятую. Пусто — все репозитории организации, где есть открытые задачи.","wipInProgress":"Предел числа карточек в колонке «В работе». Ноль — без предела.","wipReview":"Предел числа карточек в колонке «Ревью». Ноль — без предела."}}
1
+ {"dsh-kanban":{"DEFAULT_BOARDS.main.title":"Проектная доска","DEFAULT_BOARDS.simple.title":"Простая доска","acceptance.accept":"Принять (Выполнено)","acceptance.acceptAndMerge":"Принять и смержить ветку","acceptance.merging":"Выполняется слияние ветки…","acceptance.reject":"Вернуть на доработку","acceptance.rejectReasonPlaceholder":"Укажите, что необходимо исправить или доработать...","acceptance.rejectSubmit":"Отправить на доработку","acceptance.rejectTitle":"Возврат на доработку","acceptance.rejectedAlert":"Возвращено на доработку: {reason}","acceptance.rejectedBadge":"На доработке","acceptance.title":"Приёмка и проверка задачи","action.cancelWorkflow":"Отменить Workflow","action.exportCsv":"Экспорт доски в CSV","action.resume":"Возобновить выполнение","archive.empty":"В архиве пусто.","archive.hint":"Карточки, отстоявшие свой срок в «Выполнено». Ничего не удалено: возвращённая карточка встаёт в ту же колонку, откуда ушла.","archive.restore":"Вернуть на доску","archive.since":"в архиве {ago}","archiveAfterDays":"Через сколько дней в колонке «Выполнено» карточка уходит в архив. Ноль — не убирать.","batch.hint":"Одна сессия на все. Задачи приходят по очереди: агент берёт следующую, закончив текущую. В «В работе» уезжает только первая — остальные ждут своей очереди там, где лежат.","batch.start":"Запустить","batch.title":"Запустить {n} задач в одном чате","board.allRepos":"Все репозитории","board.archive":"Архив","board.back":"В чат","board.backHint":"Закрыть доску и вернуться в разговор","board.clearFilters":"Снять отборы","board.collapse":"Свернуть колонку","board.empty":"Задач пока нет.","board.expand":"Развернуть колонку","board.export":"Скачать","board.exportHint":"Экспортировать всю доску в файл JSON","board.import":"Импорт","board.imported":"Импортировано {n} задач","board.limit":"предел {n}","board.loading":"Доска загружается…","board.metrics":"Метрики","board.mine":"Мои: {n}","board.mineHint":"Задачи, назначенные на {who}","board.newTask":"Задача","board.noMatch":"Ничего не найдено.","board.noRepo":"без проекта","board.overdueCount":"Просрочено: {n}","board.overdueHint":"Показать только просроченные задачи","board.pickArchive":"В архив","board.pickMove":"Перенести…","board.pickNone":"Снять выбор","board.pickStart":"Запустить выбранные","board.pickUnqueue":"Снять с очереди","board.pickedCount":"выбрано {n}","board.refresh":"Обновить","board.repo":"репозиторий","board.search":"Поиск","board.shown":"показано {shown} из {total}","board.someFailed":"Сделано у {done} из {total}, остальные отказали.","board.sync":"Сверить с Gitea","board.syncing":"Сверяю…","board.waitCount":"Ждут ответа: {n}","board.waitCountHint":"Задачи, где агент задал вопрос или просит разрешения.","board.waiting":"нужен человек","boardName.main":"Проектная доска","boardName.simple":"Простая доска","boardToolEnabled":"Разрешить агенту двигать карточки инструментом board_move.","card.assigneeHint":"Кто взял задачу","card.attach":"Прикрепить файл","card.checklist":"Чеклист","card.comments":"Комментарии","card.created":"Создано {date}","card.deadline":"Срок выполнения","card.deleteConfirm":"Удалить эту карточку?","card.description":"Описание задачи","card.due":"срок {date}","card.dueDate":"Крайний срок","card.edit":"Редактировать","card.labels":"Метки","card.move":"Переместить в колонку","card.pack":"пачка {at} из {total}","card.packHint":"Запущены вместе, одной сессией; агент берёт их в этом порядке.","card.pick":"Отметить для группового запуска","card.priority":"Приоритет","card.progress":"Прогресс","card.queue":"в очередь...","card.revive":"Восстановить","card.stop":"остановить","card.tags":"Теги","card.title":"Название карточки","card.toChat":"перейти в чат","card.unqueue":"снять с очереди","checklist.add":"Добавить","checklist.empty":"Критерии готовности ещё не настроены.","checklist.evidence":"Подтверждение: {text}","checklist.placeholder":"Новый критерий готовности...","checklist.progress":"DoD: {done} из {total}","checklist.required":"Обязательно","checklist.title":"Критерии готовности (DoD)","chip.moveTo":"Перенести в","chip.note":"Оставить заметку","chip.noteHint":"Заметка дописывается в тело задачи. Тело уходит агенту первым сообщением, поэтому заметка до запуска попадёт в работу, а после запуска — нет.","chip.noteSave":"Дописать","chip.openCard":"Перейти к карточке","column.addCard":"+ Добавить карточку","column.backlog":"Бэклог","column.cleanup":"Уборка","column.clear":"Очистить колонку","column.collapse":"Свернуть колонку","column.delete":"Удалить колонку","column.deploy":"Выкатка","column.done":"Выполнено","column.empty":"В этой колонке нет задач","column.expand":"Развернуть колонку","column.in-progress":"В работе","column.limit":"Лимит WIP: {n}","column.rename":"Переименовать колонку","column.review":"Ревью","column.title":"Название колонки","columnNames":"Свои названия колонок парами «идентификатор=Название» через запятую. Пусто — обычные названия.","comments.add":"Опубликовать комментарий","comments.authorAgent":"Агент","comments.authorUser":"Пользователь","comments.empty":"Комментариев пока нет.","comments.placeholder":"Добавьте заметку или отзыв...","comments.title":"Обсуждение и комментарии","console.empty":"Вывод агента пока не записан.","console.tab":"Живая консоль","defaultProjectRoot":"Корень, в котором лежат рабочие копии проектов. Пусто — рабочая папка харнесса.","dialog.archived":"архив","dialog.bodyHint":"Уйдёт агенту первым сообщением при запуске задачи.","dialog.cancel":"Отмена","dialog.create":"Создать","dialog.fromGitea":"Из Gitea","dialog.imported":"уже на доске","dialog.kind":"Какая это задача","dialog.kindPlain":"Не проект","dialog.kindPlainHint":"Заметка, не относящаяся ни к какому репозиторию. Живёт на простой доске и в Gitea не попадает.","dialog.kindProject":"Проект","dialog.kindProjectHint":"В Gitea заводится issue, карточка привязывается к нему и живёт на проектной доске.","dialog.labelsHint":"через запятую","dialog.loadingRepos":"Репозитории загружаются…","dialog.noIssues":"Открытых issue не найдено.","dialog.noRepos":"Репозиториев нет","dialog.own":"Своя задача","dialog.pickRepo":"Выберите репозиторий","dialog.repo":"Репозиторий","dialog.repoNamePlaceholder":"имя нового репозитория, латиницей","dialog.repoNew":"— новый репозиторий —","dialog.repoNewHint":"Будет создан в организации: приватный и пустой, без README и заготовок. Создание репозитория отсюда не отменить.","dialog.taskBody":"Описание","dialog.taskColumn":"Колонка","dialog.taskLabels":"Метки","dialog.taskTitle":"Заголовок","dialog.title":"Новая задача","diff.additions":"Добавлено","diff.author":"Автор","diff.branch":"Ветка: {name}","diff.cherryPick":"Перенести коммит (Cherry-pick)","diff.commits":"Коммиты задачи ({n})","diff.date":"Дата","diff.deletions":"Удалено","diff.empty":"Нет коммитов или изменений файлов для этой задачи.","diff.filesChanged":"Изменено файлов: {n}","diff.hash":"Хеш","diff.hide":"Скрыть просмотр diff","diff.loadFailed":"Не удалось загрузить изменения: {error}","diff.loading":"Загрузка коммитов и diff…","diff.mergeConflict":"Обнаружены конфликты слияния","diff.mergeFailed":"Сбой слияния ветки: {error}","diff.mergeSuccess":"Ветка успешно смержена в основную","diff.message":"Сообщение коммита","diff.resolveConflicts":"Разрешить конфликты","diff.revert":"Откатить коммит","diff.show":"Показать просмотр diff","diff.staged":"Подготовленные изменения","diff.title":"Изменения в ветке задачи","diff.truncated":"Дифф обрезан (превышен лимит)","diff.uncommitted":"Незакоммиченные изменения","diff.view":"Просмотр изменений","discard":"Отменить","epic.addSubtask":"Добавить подзадачу","epic.badge":"Эпик","epic.createGiteaIssues":"Также создать связанные задачи в Gitea","epic.noSubtasks":"Подзадач пока нет.","epic.progress":"Подзадач: {done}/{total}","epic.subtasks":"Подзадачи","epic.triage":"Декомпозировать","epic.triageHelp":"Введите по одному названию подзадачи в строке. Дочерние задачи будут привязаны к этому эпику.","epic.triageSubmit":"Создать подзадачи","epic.triageTitle":"Декомпозиция задачи на подзадачи","error.bad-repo-name":"В имени репозитория допустимы только латинские буквы, цифры, точка, дефис и подчёркивание.","error.badImport":"Неверный формат файла импорта","error.crossSite":"Запрос отклонён как межсайтовый.","error.gitea-unreachable":"Сервер Gitea недоступен","error.giteaAbsent":"Плагин Gitea не установлен, импорт недоступен.","error.giteaUnconfigured":"Сначала настройте Gitea в карточке плагина Gitea.","error.issue-not-created":"Issue не заведён. Если репозиторий был новым, он остался — ничего не удалено.","error.issueNotFound":"Issue не найден.","error.modelNotSelected":"Модель не выбрана — задайте её в настройках или укажите здесь.","error.no-live-sessions":"Нет ни одной идущей сессии, в очередь ставить некуда.","error.permission-refused":"Уровень доступа не принят, задача не запущена.","error.permission-unavailable":"В этой сборке уровней доступа нет — задача не запущена, чтобы не пойти с бо́льшими правами, чем просили.","error.repo-not-created":"Репозиторий не создан; больше ничего не сделано.","error.repo-required":"Выберите репозиторий или назовите новый.","error.session-not-live":"Эта сессия больше не идёт.","error.sessionNotOpened":"Сессия поднята ({id}), но эта сборка не умеет в неё переключиться. Найдите её в списке сессий.","error.startFailed":"Не удалось поднять сессию.","error.task-not-queued":"Задача не стоит в очереди.","error.taskHasNoIssue":"За этой задачей нет issue в Gitea.","error.taskNotFound":"Задача не найдена.","error.titleRequired":"Нужен заголовок.","error.unknown":"Запрос не выполнен.","facet.assignee":"Исполнитель","facet.author":"Автор","facet.priority":"Приоритет","facet.release":"Выпуск","facet.repo":"Репозиторий","facet.risk":"Риск","facet.scope":"Область","facet.signal":"Сигнал","facet.status":"Статус","facet.type":"Тип","field.announceToAgent":"Уведомлять агента об изменениях","field.archiveAfterDays":"Убирать в архив из «Выполнено» через, дней","field.autoSyncSessions":"Автосинхронизация внешних сессий чата","field.boardToolEnabled":"Разрешить агенту двигать карточки","field.columnNames":"Свои названия колонок","field.cronEnabled":"Включить планировщик задач","field.defaultProjectRoot":"Корень проектов","field.gitProvider":"Git-провайдер","field.giteaOwner":"Организация Gitea","field.giteaTokenRef":"Имя учётной записи","field.giteaUrl":"Адрес инстанса","field.githubOwner":"Организация или пользователь GitHub","field.githubTokenRef":"Токен учётных данных GitHub","field.githubWebhookSecretRef":"Секрет вебхука GitHub","field.maxConcurrentSessions":"Макс. параллельных сессий агентов","field.permissionGateEnabled":"Контроль прав доступа к доске","field.preventIdleSleep":"Предотвращать засыпание при активных задачах","field.progressDumpEnabled":"Дамп прогресса выполнения","field.pushToGitea":"Закрывать issue в Gitea","field.replyInstruction":"Постоянная приписка","field.sessionDefaultPermission":"Права доступа сессии по умолчанию","field.staleAfterMin":"Считать задачу молчащей после, минут","field.startPrompt":"Шаблон первого сообщения","field.syncIntervalSec":"Сверяться с Gitea раз в, секунд","field.watchRepos":"Сузить подхват до репозиториев","field.webhookSecretRef":"Имя учётной записи для вебхука","field.wipInProgress":"Предел «В работе»","field.wipReview":"Предел «Ревью»","field.workspaceClaimBoundaries":"Границы захвата рабочей области","field.worktreeIsolation":"Изоляция рабочих деревьев (worktree)","field.worktreeRoot":"Корневой каталог worktree","filter.active":"Активные","filter.all":"Все задачи","filter.assignee":"Исполнитель","filter.epics":"Эпики","filter.label":"Метка","filter.overdue":"Просроченные","filter.priority":"Приоритет","filter.review":"На проверке","filter.search":"Поиск задач…","filter.stale":"Без активности","giteaOwner":"Организация Gitea, чьи репозитории смотрит доска. Пусто — определяется сама, если организация одна.","giteaTokenRef":"ИМЯ учётной записи DSH, в которой лежит токен. Сам токен сюда не вводить.","giteaUrl":"Адрес инстанса Gitea или Forgejo, например https://gitea.example.com. Пусто — импорт недоступен.","group.assignee":"По исполнителям","group.forge":"Git-кузница","group.general":"Общее","group.gitea":"Gitea","group.github":"GitHub","group.limits":"Пределы колонок","group.nobody":"Без исполнителя","group.repo":"По репозиториям","group.sync":"Автоперемещение","hint.announceToAgent":"Автоматически отправлять агенту сообщения о перемещении карточек","hint.archiveAfterDays":"Считается с попадания карточки в «Выполнено». Ноль — оставлять всё на доске.","hint.autoSyncSessions":"Автоматически создавать карточки на доске для стандартных диалогов чата DSH.","hint.boardToolEnabled":"Выключено, пока скилл воркфлоу запрещает этому CLI трогать канбан.","hint.columnNames":"Пары «идентификатор=Название» через запятую, например «backlog=Идеи, review=Проверка». Пусто — обычные названия.","hint.cronEnabled":"Запуск фоновых периодических проверок статусов задач","hint.defaultProjectRoot":"Где лежат рабочие копии проектов. Пусто — рабочая папка харнесса.","hint.gitProvider":"Активная кузница: «auto» (определять по учётным данным), «gitea» или «github».","hint.giteaOwner":"Чьи репозитории смотрит доска. Пусто — определится сама, пока у токена ровно одна организация.","hint.giteaTokenRef":"ИМЯ учётной записи DSH, в которой лежит токен. Сам токен сюда не вводить.","hint.giteaUrl":"Например https://gitea.example.com. Пусто — импорт недоступен.","hint.githubOwner":"Основная учётная запись GitHub для отслеживания. Если пусто, используется авторизованный пользователь.","hint.githubTokenRef":"Имя учётных данных DSH, содержащих токен PAT или GitHub App. Никогда не вводите сам токен открытым текстом.","hint.githubWebhookSecretRef":"Имя учётных данных DSH, содержащих секрет вебхука GitHub (HMAC-SHA256).","hint.label":"Пусто — метка для этой колонки не ставится.","hint.limit":"Ноль — без предела. Превышение подсвечивается, но не запрещается.","hint.permissionGateEnabled":"Требовать подтверждения при выполнении деструктивных операций","hint.preventIdleSleep":"Не усыплять фоновый процесс DSH, пока есть незавершённые задачи","hint.progressDumpEnabled":"Периодически сохранять прогресс выполнения в файл progress.md","hint.pushToGitea":"Карточка, дошедшая до «Выполнено», закрывает свой issue. Меток доска не ставит: стадия и так видна по ветке и pull request.","hint.replyInstruction":"Дописывается к каждому первому сообщению — например язык ответа. Пусто — ничего не добавляется.","hint.sessionDefaultPermission":"Уровень прав, выдаваемый сессиям без явных настроек","hint.staleAfterMin":"Помечаются только задачи с сессией. Ноль отключает отметку.","hint.startPrompt":"Шаблон первого сообщения агенту. Пусто — встроенный шаблон.","hint.syncIntervalSec":"Ноль отключает сверку. Меньше пятнадцати секунд поднимается до пятнадцати.","hint.watchRepos":"Через запятую, «владелец/репо» или просто «репо». Пусто — все репозитории организации, где есть открытые задачи.","hint.webhookSecretRef":"ИМЯ учётной записи DSH с секретом вебхука Gitea. Пусто — остаётся только опрос.","hint.worktreeIsolation":"Создавать отдельный git worktree для каждой задачи","hint.worktreeRoot":"Каталог, в котором создаются временные изолированные worktree","import.error":"Ошибка импорта JSON доски","import.success":"Доска успешно импортирована","label.assigned":"Назначено","label.blocked":"Заблокировано","label.completed":"Выполнено","label.inProgress":"В работе","label.pending":"В очереди","label.review":"На проверке","metrics.columns":"Время в колонках","metrics.completed":"Завершено задач: {n}","metrics.cycleTime":"Среднее время выполнения: {days} дн.","metrics.empty":"Переходов ещё не было — измерять нечего.","metrics.hint":"{n} задач на доске • выполнено за неделю: {week} • за месяц: {month}","metrics.leadTime":"Общее время от создания: {days} дн.","metrics.leadTimeAvg":"Средний Lead Time","metrics.mean":"среднее {time}","metrics.median":"медиана {time}","metrics.noStale":"Ни одна задача не задерживалась так долго.","metrics.stale":"Без движения дольше {days} дн.","metrics.throughput":"Пропускная способность","metrics.total":"Всего задач: {n}","metrics.wip":"Задач в работе (WIP): {n}","metrics.wipLimit":"Лимит задач в работе (WIP)","modal.confirmDelete":"Подтверждение удаления","modal.createTask":"Создание новой задачи","modal.editTask":"Редактирование задачи","move.backlog":"Работа по задаче останавливается: идущий ход агента будет прерван. Если сессии нет, карточка просто переедет.","move.cleanup":"Агент удалит ветку в Gitea, worktree и локальную ветку и запишет это в issue.","move.confirm":"Перенести","move.deploy":"Агент вольёт pull request и выкатит. Сам перенос в эту колонку И ЕСТЬ ваше «ок» на deploy — второй раз агент спрашивать не станет.","move.done":"Задача считается завершённой. Это решение человека: сам агент карточку сюда не переносит.","move.in-progress":"Агент получит команду начать или продолжить реализацию.","move.review":"Агент доведёт работу до ревью: снимет с pull request пометку черновика и запросит проверку.","move.title":"Перенести в «{column}»?","nav.all":"Все доски","nav.back":"Назад к доске","nav.settings":"Настройки доски","order.manual":"Как разложено","order.new":"Сначала новые","order.old":"Сначала старые","panel.agentPreset":"Профиль агента","panel.archive":"В архив","panel.assignDrop":"Отказаться","panel.assignMe":"Взять себе","panel.assignee":"взял {who}","panel.author":"завёл {who}","panel.bodyLoading":"читаю описание…","panel.cleanupWorktree":"Очистить worktree","panel.close":"Закрыть","panel.continue":"Продолжить","panel.continueHint":"У задачи один чат: открывается прежняя сессия, а не новая.","panel.created":"заведена {ago} назад","panel.delete":"Удалить","panel.deleteConfirm":"Удалить «{title}»? Отменить будет нельзя.","panel.due":"Срок","panel.issue":"Issue","panel.labels":"Метки","panel.log":"Переходы","panel.message":"Сообщение агенту","panel.messageHint":"Правьте перед отправкой. Пустое — уйдёт встроенный текст.","panel.model":"Модель","panel.noLog":"Переходов пока нет.","panel.noModels":"У этого провайдера нет моделей","panel.noProviders":"Провайдеров нет","panel.openChat":"Открыть чат","panel.permission":"Уровень доступа","panel.pickModel":"Выберите модель","panel.pickProvider":"Выберите провайдера","panel.pickProviderFirst":"Сначала выберите провайдера","panel.presetDefault":"Как в харнессе по умолчанию","panel.priority":"Приоритет","panel.priorityNone":"Без приоритета","panel.provider":"Провайдер","panel.refresh":"Обновить из Gitea","panel.saveEdit":"Сохранить","panel.start":"Начать","panel.startHint":"Откроется отдельная сессия агента по этой задаче. Ветку и worktree заводит агент после preflight, а не отсюда.","panel.startWorkflow":"⚡ Workflow","panel.startWorkflowHint":"Запустить мультиагентный рабочий процесс через движок ядра","panel.starting":"Запускается…","panel.updated":"последнее изменение {ago} назад","panel.workDir":"Рабочая папка: {path}","panel.workDirHint":"Корень проекта не указан в настройках, поэтому используется эта папка.","panel.worktree":"Worktree: {path}","panel.worktreeDirty":"Незакоммиченные изменения в worktree: {files}","plan.counter":"{done} из {total}","plan.title":"План агента","pr.create":"Создать PR в Gitea","pr.created":"PR #{n} создан","pr.creating":"Создание PR…","pr.view":"Открыть PR","priority.high":"Высокий","priority.highest":"Критический","priority.low":"Низкий","priority.lowest":"Минимальный","priority.medium":"Средний","priority.normal":"Обычный","priority.urgent":"Срочный","queue.add":"В очередь","queue.hint":"Задача встанет в очередь сессии: агент возьмёт её, закончив текущую работу. До этого карточка остаётся там, где лежит.","queue.option":"{title} - задач: {n}","queue.session":"Сессия","queue.title":"Поставить в очередь идущей сессии","reasoning.default":"По умолчанию (модель)","reasoning.high":"Высокое (глубокие рассуждения)","reasoning.label":"Глубина рассуждений","reasoning.low":"Низкая (быстро / экономно)","reasoning.medium":"Средняя (сбалансировано)","replyInstruction":"Постоянная приписка к первому сообщению — например язык ответа. Пусто — ничего не добавляется.","report.artifacts":"Артефакты","report.changedFiles":"Изменённые файлы","report.checksRun":"Проверки и тесты","report.risks":"Риски и примечания","report.summary":"Сводка","report.title":"Отчёт о выполнении","revive.fresh":"Предыдущая сессия завершена, поэтому запущена новая; старый чат больше недоступен.","revive.same":"Предыдущая сессия восстановлена — чат на том месте, где вы остановились.","save":"Сохранить","section.label":"Канбан","settings.autoArchive":"Автоархивация завершённых задач","settings.autoArchiveHint":"Перемещать завершённые задачи в архив через указанное число дней","settings.boardName":"Название доски","settings.columns":"Колонки доски","settings.description":"Описание канбан-доски","settings.general":"Основные настройки","settings.integrations":"Интеграции","settings.loading":"Загрузка настроек доски…","settings.readOnly":"Настройки в этой сессии доступны только для чтения.","settings.save":"Сохранить настройки","settings.saveFailed":"Не сохранены поля: {fields}","settings.saved":"Настройки сохранены","settings.saving":"Сохранение настроек…","settings.subtitle":"Канбан-доска для сессий и задач","settings.unavailable":"Хост не знает пространство настроек dsh-kanban. Перезапустите веб-интерфейс после установки плагина.","slash.hint":"Введите / для списка команд и навыков","staleAfterMin":"После скольких минут молчания задача с сессией помечается тревожно. Ноль — не помечать.","startPrompt":"Шаблон первого сообщения агенту. Пусто — встроенный шаблон.","state.queued":"в очереди · {n}","state.running":"в работе","state.stopped":"остановился","status.active":"Активна","status.archived":"В архиве","status.closed":"Закрыта","status.open":"Открыта","stop.idle":"Агент не работал, останавливать было нечего.","stop.no-session":"У задачи нет сессии.","subtitle":"Доска задач: issue из Gitea и отдельная сессия под задачу","sync.failed":"сверка не проходит","sync.lastSeen":"последняя удачная сверка {ago} назад","sync.never":"сверки с Gitea ещё не было","sync.neverSeen":"удачной сверки с запуска харнесса не было","sync.okAgo":"сверено {ago} назад","sync.running":"сверяемся с Gitea…","syncIntervalSec":"Как часто сверяться с Gitea, в секундах. Ноль — не сверяться.","task.confirmPermission":"Подтвердить права","task.cron":"Расписание Cron","task.nextRun":"Следующий запуск: {date}","task.noRuns":"Запусков ещё не было","task.permissionConfirmed":"Права подтверждены","task.permissionGateWarning":"Требуется подтверждение повышенных прав ({permission})","task.progressDump":"Дамп прогресса (Handover)","task.runs":"История выполнений","template.bugfix":"Исправление бага (Bugfix)","template.feature":"Новая функция (Feature)","template.label":"Шаблон задачи","template.none":"Без шаблона (пусто)","template.refactor":"Рефакторинг (Refactor)","template.release":"Релиз (Подготовка выпуска)","template.security":"Безопасность (Аудит и CVE)","time.day":"{n} дн","time.hour":"{n} ч","time.min":"{n} мин","time.now":"только что","title":"Канбан","updater.check":"Проверить обновления","updater.checking":"Проверка…","updater.current":"Текущая версия","updater.failed":"Ошибка проверки обновлений: ","updater.latest":"Последняя версия","updater.success":"Плагин успешно обновлен! Пожалуйста, перезапустите сервис DSH.","updater.title":"Обновления плагина","updater.upToDate":"Актуальная версия","updater.updateNow":"Обновить до v{version}","updater.updating":"Обновление…","view.analytics":"Аналитика","view.archive":"Архив","view.board":"Доска","view.calendar":"Календарь","view.gantt":"Диаграмма Ганта","view.list":"Список","view.table":"Таблица","watchRepos":"Сузить подхват до этих репозиториев, через запятую. Пусто — все репозитории организации, где есть открытые задачи.","wipInProgress":"Предел числа карточек в колонке «В работе». Ноль — без предела.","wipReview":"Предел числа карточек в колонке «Ревью». Ноль — без предела."}}
@@ -1 +1 @@
1
- {"@goodandready/dsh-remote-workspace":{"checkUpdate":"Проверить обновления","checking":"Проверка...","currentVersion":"Текущая версия","latestVersion":"npm Последняя","restartRequired":"Обновление успешно установлено. Перезапустите DSH для применения.","upToDate":"Актуальная версия","updateAvailable":"Доступно обновление","updateFailed":"Сбой обновления","updateNow":"Обновить сейчас","updaterTitle":"Обновление плагина","updating":"Обновление..."},"dsh-remote-workspace":{"actionFailed":"Запрос не выполнен.","authPromptCode":"Одноразовый код","authPromptSubmit":"Продолжить","authPromptTitle":"Код авторизации","btnDownload":"Скачать","btnUpload":"Загрузить","checkUpdate":"Проверить обновления","checking":"Проверка…","clusterDeleteConfirm":"Удалить этот узел кластера?","clusterHealth":"Кластер: {status}","clusterNoNodes":"Узлы кластера не настроены.","clusterNodeAdd":"Добавить узел","clusterNodeName":"Имя узла","clusterNodeRole":"Роль","clusterTitle":"Узлы кластера","currentVersion":"Установленная версия","diagAuth":"Аутентификация","diagLatency":"Задержка","diagOs":"Операционная система","diagPorts":"Открытые порты","diagUptime":"Время работы","dockerCompose":"Стеки Compose","dockerComposeDown":"Остановить","dockerComposeRestart":"Перезапустить","dockerComposeUp":"Запустить","dockerNoStacks":"Стеков Compose не найдено.","emptyClusterNodes":"В этом кластере нет узлов.","emptyContainers":"Нет работающих контейнеров.","emptyFiles":"Каталог пуст.","emptyHosts":"Хосты не настроены.","emptyTunnels":"Нет активных туннелей.","fAuthCode":"Код подтверждения","fKey":"Закрытый ключ","fKeyUpload":"Загрузить файл ключа","fPortForward":"Проброшенные порты","fTunnelLocal":"Локальная привязка","fTunnelRemote":"Удалённый адрес","importEmpty":"В ~/.ssh/config не найдено хостов","importFound":"Найдено хостов в ~/.ssh/config: {count}","importSelected":"Импортировать выбранные","importSsh":"Импорт из ~/.ssh/config","importSuccess":"Импортировано хостов: {count}","latestVersion":"Последняя версия в npm","noFiles":"Файлов не найдено.","noHostsConfigured":"Удалённые хосты не настроены.","pinned":"Закреплён","restartRequired":"Обновление установлено. Перезапустите DSH для применения.","setActiveBtn":"Сделать текущим","skipDuplicate":"уже импортирован","skipMatch":"Блоки Match не импортируются","skipMissing":"включённый файл не найден","skipWildcard":"шаблон не является отдельным хостом","statusEmpty":"Нет активного хоста","statusError":"Статус недоступен","statusLoading":"Проверка соединения","statusReady":"Хост готов","tabCluster":"Кластер","tabFiles":"Файлы","testGroup":"Группа тестов","transferCancel":"Отмена","transferFailed":"Сбой передачи: {name}","transferProgress":"{name}: {percent}%","upToDate":"Уже последняя версия","updateAvailable":"Доступно обновление","updateFailed":"Не удалось обновить","updateNow":"Обновить","updaterTitle":"Обновление плагина","updating":"Обновление…","versionUnknown":"Версия неизвестна","wsBack":"Назад","wsCluster":"Кластер","wsDocker":"Контейнеры","wsFiles":"Файлы","wsHosts":"Хосты","wsTerminal":"Терминал","wsTunnels":"Туннели"}}
1
+ {"@goodandready/dsh-remote-workspace":{"actionFailed":"Запрос не выполнен.","actionsCol":"Действия","activeBadge":"Активен","addBtn":"+ Добавить хост","alertLabel":"Оповещения ({count})","authPromptCode":"Одноразовый код","authPromptSubmit":"Продолжить","authPromptTitle":"Код авторизации","autoSyncDesc":"Автоматически отправлять изменённые файлы в удалённое рабочее пространство при локальном сохранении.","autoSyncTitle":"Автосинхронизация при сохранении","badgeKey":"🔑 Вход по ключу","badgeOffline":"Хост не выбран","badgeOnline":"Активный хост: {name} ({latency} мс)","badgePassword":"🔒 Вход по паролю","badgeTunnels":"Туннелей: {count}","btnBrowse":"📁 Выбрать на сервере…","btnCancel":"Отмена","btnDelete":"Удалить","btnDownload":"Скачать","btnImportSsh":"Импорт из ~/.ssh/config","btnLogs":"Логи","btnRestart":"Перезапустить","btnSave":"Сохранить профиль","btnSaveFile":"Сохранить изменения","btnSelectThis":"Выбрать эту папку","btnStop":"Остановить","btnTest":"⚡ Проверить связь (Ping)","btnTransfer":"Передать на хост…","btnUpload":"Загрузить","checkUpdate":"Проверить обновления","checking":"Проверка…","clusterCommand":"Команда","clusterCount":"Настроено серверов: {count}","clusterFail":"ошибка","clusterOk":"успешно","clusterRun":"Выполнить","clusterRunning":"Выполняется...","clusterTitle":"Запуск на группе","containerImage":"Образ","containerName":"Контейнер","containerPorts":"Порты","containerStatus":"Статус","containersTitle":"Удалённый Docker / Podman Engine","currentVersion":"Установленная версия","delBtn":"Удалить","delConfirm":"Удалить профиль хоста «{name}»?","diagDesc":"Проверка доступности и измерение задержки активного сервера.","diagProbeBtn":"⚡ Быстрая диагностика","diagTitle":"📊 Диагностика активного подключения","diagnoseDisk":"Использование диска","diagnoseOom":"Проверка OOM Killer","diagnosePorts":"Открытые порты","diagnoseTitle":"Экспресс-диагностика","editBtn":"Изменить","envHideVal":"Скрыть","envKey":"Ключ","envSaveVar":"Сохранить","envShowVal":"Показать","envTitle":"Удалённые переменные окружения (.env)","envVal":"Значение","explorerTitle":"Удалённый файловый менеджер","fAgentPath":"Сокет агента","fAgentPathHint":"Оставьте пустым для использования SSH_AUTH_SOCK. В Windows используйте pageant.","fAuthAgent":"SSH Agent","fAuthAgentShort":"агент","fAuthKey":"SSH-ключ","fAuthKeyShort":"ключ","fAuthPass":"Пароль","fAuthPassShort":"пароль","fAuthType":"Способ авторизации","fDescription":"Описание","fEnvironment":"Окружение","fHost":"Хост / IP-адрес","fJumpHost":"Jump-хост (бастион)","fJumpHostNone":"Прямое подключение (без jump-хоста)","fJumpHosts":"Jump-хосты","fJumpHostsHint":"ID профилей по порядку через запятую. Первый хост — входной бастион.","fKeyPath":"Путь к ключу","fKeyPathHint":"Путь к ~/.ssh/id_rsa или /home/user/.ssh/id_ed25519","fLocalMirror":"Локальная папка зеркала","fLocalMirrorHint":"Локальная директория для зеркалирования файлов при быстрой трёхсторонней синхронизации","fLocation":"Локация","fName":"Название подключения","fPassphrase":"Кодовая фраза ключа (если есть)","fPassword":"Пароль учетной записи","fPort":"Порт","fProxyCommand":"Proxy-команда","fProxyCommandHint":"OpenSSH ProxyCommand. Заполнители: %h хост, %p порт, %r пользователь, %n имя профиля.","fRemotePath":"Удалённая папка проекта","fRemotePathHint":"(Не обязательно сейчас — можно выбрать позже при работе)","fTags":"Теги","fTerminalFont":"Шрифт терминала","fTerminalFontHint":"Семейство шрифтов для терминала. Оставьте пустым для моноширинного стека по умолчанию.","fUser":"Имя пользователя","filePreviewTitle":"Просмотр файла: {path}","fileSaved":"Файл успешно сохранён.","fileSize":"{size} КБ","formTitleEdit":"Редактирование профиля хоста","formTitleNew":"Добавление нового SSH хоста","groupEnvironment":"По окружению","groupFlat":"Сплошной список","groupOffline":"не в сети: {err}","groupOnline":"в сети, {latency} мс","groupTag":"По тегам","groupUngrouped":"Без группы","healthCpu":"ЦП: {val}%","healthDisk":"Диск: {val}%","healthMem":"ОЗУ: {val}% ({used}/{total} МБ)","healthUptime":"Аптайм: {val}","hostCol":"Хост / Пользователь","importAdded":"Импортировано серверов: {count}.","latestVersion":"Последняя на npm","nameCol":"Имя","navLabel":"Удаленные серверы","noContainers":"Активных контейнеров не найдено или демон Docker не запущен.","noHosts":"Удалённые хосты ещё не настроены. Нажмите «+ Добавить хост».","openLocalLink":"🌐 Открыть локальный порт","pathCol":"Удалённый путь","pinBtn":"Закрепить активный","pinned":"Активный хост","portCol":"Порт","profilesDesc":"Настройка удалённых хостов для выполнения команд, SFTP доступа и синхронизации.","profilesTitle":"🖥️ Профили SSH серверов","pullBtn":"⬇️ Скачать с сервера (Pull)","pulling":"Получение файлов…","pushBtn":"⬆️ Загрузить на сервер (Push)","pushing":"Отправка файлов…","restartRequired":"Обновление установлено. Перезапустите DSH для применения.","saving":"Сохранение…","setActiveBtn":"Сделать активным","skipDuplicate":"уже импортировано","skipMatch":"Блоки Match не импортируются","skipMissing":"включённый файл не найден","skipWildcard":"шаблон не является отдельным хостом","status":"Готово","statusEmpty":"Нет активного хоста","statusError":"Статус недоступен","statusLoading":"Проверка соединения","statusReady":"Хост готов","subtitle":"Управление подключениями по SSH, синхронизацией SFTP и туннелями","syncConflict":"Предупреждение о конфликте: изменено с обеих сторон файлов — {count}.","syncDesc":"Ручная синхронизация файлов с удалённым сервером и статус проброса портов.","syncErr":"Ошибка синхронизации: {err}","syncFailed":"Ошибка синхронизации: ","syncOk":"Синхронизация завершена! Обновлено файлов: {count}.","syncSuccess":"Синхронизация успешно выполнена","syncTitle":"🔄 Синхронизация зеркала и туннели","tLocalPort":"Локальный порт","tNoTunnels":"Нет активных туннелей проброса портов.","tOpenBtn":"+ Открыть туннель","tOpenErr":"Не удалось открыть туннель: {err}","tOpenOk":"Туннель открыт: 127.0.0.1:{localPort} -> Удалённый:{remotePort}","tOpening":"Открытие…","tRemotePort":"Удалённый порт","tStopBtn":"Остановить","tabCluster":"Кластер","tabContainers":"🐳 Контейнеры","tabEnv":"🗃️ Менеджер .env","tabExplorer":"📂 Проводник файлов","tabFiles":"Файлы","tabProfiles":"🖥️ Профили хостов","tabSync":"🔄 Станция синхронизации","tabTerminal":"⚡ Веб-терминал","tabTunnels":"🔗 Порт-туннели","tarSyncFast":"🚀 Быстрый поток архива (Tarball Stream)","termClear":"Очистить","termConnected":"Подключено к PTY-сессии {id} на {host}","termDisconnected":"Терминал отключён.","termPlaceholder":"Введите команду и нажмите Enter (напр. htop, ls, docker ps)…","termStart":"Подключить терминал","termStop":"Отключить","testFail":"❌ Ошибка подключения: {err}","testGroup":"Тестовая группа","testOk":"✅ Соединение установлено! Задержка: {latency} мс | ОС: {os}","testing":"Проверка соединения…","title":"Удалённое рабочее пространство","transferBtnExec":"Передать напрямую","transferCancel":"Отмена","transferDestHost":"Целевой сервер","transferDestPath":"Целевой путь к файлу","transferFailed":"Сбой передачи: {name}","transferProgress":"{name}: {percent}%","transferSuccess":"Успешно передано {bytes} байт на {host}:{path}","transferTitle":"Прямая передача сервер-сервер","tunnelTraffic":"Вход: {rx} | Выход: {tx}","tunnelUptime":"Работает: {sec} с","tunnelsColActions":"Действия","tunnelsColId":"ID туннеля","tunnelsColRoute":"Маршрут проброса","tunnelsDesc":"Проброс удалённых портов (базы данных, веб-серверы, API) на локальный компьютер через зашифрованные SSH-туннели.","tunnelsTitle":"🔀 Проброс портов SSH (туннели)","upToDate":"Актуальная версия","updateAvailable":"Доступно обновление","updateFailed":"Сбой обновления","updateNow":"Обновить сейчас","updaterTitle":"Обновление плагина","updating":"Обновление…","vaultProtectedBadge":"🛡️ Защищено .env Vault","versionUnknown":"Версия неизвестна","wsBack":"Назад","wsCluster":"Кластер","wsDocker":"Контейнеры","wsFiles":"Файлы","wsHosts":"Хосты","wsTerminal":"Терминал","wsTunnels":"Туннели"},"dsh-remote-workspace":{"actionFailed":"Запрос не выполнен.","actionsCol":"Действия","activeBadge":"Активен","addBtn":"+ Добавить хост","alertLabel":"Оповещения ({count})","authPromptCode":"Одноразовый код","authPromptSubmit":"Продолжить","authPromptTitle":"Код авторизации","autoSyncDesc":"Автоматически отправлять изменённые файлы в удалённое рабочее пространство при локальном сохранении.","autoSyncTitle":"Автосинхронизация при сохранении","badgeKey":"🔑 Вход по ключу","badgeOffline":"Хост не выбран","badgeOnline":"Активный хост: {name} ({latency} мс)","badgePassword":"🔒 Вход по паролю","badgeTunnels":"Туннелей: {count}","btnBrowse":"📁 Выбрать на сервере…","btnCancel":"Отмена","btnDelete":"Удалить","btnDownload":"Скачать","btnImportSsh":"Импорт из ~/.ssh/config","btnLogs":"Логи","btnRestart":"Перезапустить","btnSave":"Сохранить профиль","btnSaveFile":"Сохранить изменения","btnSelectThis":"Выбрать эту папку","btnStop":"Остановить","btnTest":"⚡ Проверить связь (Ping)","btnTransfer":"Передать на хост…","btnUpload":"Загрузить","checkUpdate":"Проверить обновления","checking":"Проверка…","clusterCommand":"Команда","clusterCount":"Настроено серверов: {count}","clusterDeleteConfirm":"Удалить этот узел кластера?","clusterFail":"ошибка","clusterHealth":"Кластер: {status}","clusterNoNodes":"Узлы кластера не настроены.","clusterNodeAdd":"Добавить узел","clusterNodeName":"Имя узла","clusterNodeRole":"Роль","clusterOk":"успешно","clusterRun":"Выполнить","clusterRunning":"Выполняется...","clusterTitle":"Запуск на группе","containerImage":"Образ","containerName":"Контейнер","containerPorts":"Порты","containerStatus":"Статус","containersTitle":"Удалённый Docker / Podman Engine","currentVersion":"Установленная версия","delBtn":"Удалить","delConfirm":"Удалить профиль хоста «{name}»?","diagAuth":"Аутентификация","diagDesc":"Проверка доступности и измерение задержки активного сервера.","diagLatency":"Задержка","diagOs":"Операционная система","diagPorts":"Открытые порты","diagProbeBtn":"⚡ Быстрая диагностика","diagTitle":"📊 Диагностика активного подключения","diagUptime":"Время работы","diagnoseDisk":"Использование диска","diagnoseOom":"Проверка OOM Killer","diagnosePorts":"Открытые порты","diagnoseTitle":"Экспресс-диагностика","dockerCompose":"Стеки Compose","dockerComposeDown":"Остановить","dockerComposeRestart":"Перезапустить","dockerComposeUp":"Запустить","dockerNoStacks":"Стеков Compose не найдено.","editBtn":"Изменить","emptyClusterNodes":"В этом кластере нет узлов.","emptyContainers":"Нет работающих контейнеров.","emptyFiles":"Каталог пуст.","emptyHosts":"Хосты не настроены.","emptyTunnels":"Нет активных туннелей.","envHideVal":"Скрыть","envKey":"Ключ","envSaveVar":"Сохранить","envShowVal":"Показать","envTitle":"Удалённые переменные окружения (.env)","envVal":"Значение","explorerTitle":"Удалённый файловый менеджер","fAgentPath":"Сокет агента","fAgentPathHint":"Оставьте пустым для использования SSH_AUTH_SOCK. В Windows используйте pageant.","fAuthAgent":"SSH Agent","fAuthAgentShort":"агент","fAuthCode":"Код подтверждения","fAuthKey":"SSH-ключ","fAuthKeyShort":"ключ","fAuthPass":"Пароль","fAuthPassShort":"пароль","fAuthType":"Способ авторизации","fDescription":"Описание","fEnvironment":"Окружение","fHost":"Хост / IP-адрес","fJumpHost":"Jump-хост (бастион)","fJumpHostNone":"Прямое подключение (без jump-хоста)","fJumpHosts":"Jump-хосты","fJumpHostsHint":"ID профилей по порядку через запятую. Первый хост — входной бастион.","fKey":"Закрытый ключ","fKeyPath":"Путь к ключу","fKeyPathHint":"Путь к ~/.ssh/id_rsa или /home/user/.ssh/id_ed25519","fKeyUpload":"Загрузить файл ключа","fLocalMirror":"Локальная папка зеркала","fLocalMirrorHint":"Локальная директория для зеркалирования файлов при быстрой трёхсторонней синхронизации","fLocation":"Локация","fName":"Название подключения","fPassphrase":"Кодовая фраза ключа (если есть)","fPassword":"Пароль учетной записи","fPort":"Порт","fPortForward":"Проброшенные порты","fProxyCommand":"Proxy-команда","fProxyCommandHint":"OpenSSH ProxyCommand. Заполнители: %h хост, %p порт, %r пользователь, %n имя профиля.","fRemotePath":"Удалённая папка проекта","fRemotePathHint":"(Не обязательно сейчас — можно выбрать позже при работе)","fTags":"Теги","fTerminalFont":"Шрифт терминала","fTerminalFontHint":"Семейство шрифтов для терминала. Оставьте пустым для моноширинного стека по умолчанию.","fTunnelLocal":"Локальная привязка","fTunnelRemote":"Удалённый адрес","fUser":"Имя пользователя","filePreviewTitle":"Просмотр файла: {path}","fileSaved":"Файл успешно сохранён.","fileSize":"{size} КБ","formTitleEdit":"Редактирование профиля хоста","formTitleNew":"Добавление нового SSH хоста","groupEnvironment":"По окружению","groupFlat":"Сплошной список","groupOffline":"не в сети: {err}","groupOnline":"в сети, {latency} мс","groupTag":"По тегам","groupUngrouped":"Без группы","healthCpu":"ЦП: {val}%","healthDisk":"Диск: {val}%","healthMem":"ОЗУ: {val}% ({used}/{total} МБ)","healthUptime":"Аптайм: {val}","hostCol":"Хост / Пользователь","importAdded":"Импортировано серверов: {count}.","importEmpty":"В ~/.ssh/config не найдено хостов","importFound":"Найдено хостов в ~/.ssh/config: {count}","importSelected":"Импортировать выбранные","importSsh":"Импорт из ~/.ssh/config","importSuccess":"Импортировано хостов: {count}","latestVersion":"Последняя на npm","nameCol":"Имя","navLabel":"Удаленные серверы","noContainers":"Активных контейнеров не найдено или демон Docker не запущен.","noFiles":"Файлов не найдено.","noHosts":"Удалённые хосты ещё не настроены. Нажмите «+ Добавить хост».","noHostsConfigured":"Удалённые хосты не настроены.","openLocalLink":"🌐 Открыть локальный порт","pathCol":"Удалённый путь","pinBtn":"Закрепить активный","pinned":"Активный хост","portCol":"Порт","profilesDesc":"Настройка удалённых хостов для выполнения команд, SFTP доступа и синхронизации.","profilesTitle":"🖥️ Профили SSH серверов","pullBtn":"⬇️ Скачать с сервера (Pull)","pulling":"Получение файлов…","pushBtn":"⬆️ Загрузить на сервер (Push)","pushing":"Отправка файлов…","restartRequired":"Обновление установлено. Перезапустите DSH для применения.","saving":"Сохранение…","setActiveBtn":"Сделать активным","skipDuplicate":"уже импортировано","skipMatch":"Блоки Match не импортируются","skipMissing":"включённый файл не найден","skipWildcard":"шаблон не является отдельным хостом","status":"Готово","statusEmpty":"Нет активного хоста","statusError":"Статус недоступен","statusLoading":"Проверка соединения","statusReady":"Хост готов","subtitle":"Управление подключениями по SSH, синхронизацией SFTP и туннелями","syncConflict":"Предупреждение о конфликте: изменено с обеих сторон файлов — {count}.","syncDesc":"Ручная синхронизация файлов с удалённым сервером и статус проброса портов.","syncErr":"Ошибка синхронизации: {err}","syncFailed":"Ошибка синхронизации: ","syncOk":"Синхронизация завершена! Обновлено файлов: {count}.","syncSuccess":"Синхронизация успешно выполнена","syncTitle":"🔄 Синхронизация зеркала и туннели","tLocalPort":"Локальный порт","tNoTunnels":"Нет активных туннелей проброса портов.","tOpenBtn":"+ Открыть туннель","tOpenErr":"Не удалось открыть туннель: {err}","tOpenOk":"Туннель открыт: 127.0.0.1:{localPort} -> Удалённый:{remotePort}","tOpening":"Открытие…","tRemotePort":"Удалённый порт","tStopBtn":"Остановить","tabCluster":"Кластер","tabContainers":"🐳 Контейнеры","tabEnv":"🗃️ Менеджер .env","tabExplorer":"📂 Проводник файлов","tabFiles":"Файлы","tabProfiles":"🖥️ Профили хостов","tabSync":"🔄 Станция синхронизации","tabTerminal":"⚡ Веб-терминал","tabTunnels":"🔗 Порт-туннели","tarSyncFast":"🚀 Быстрый поток архива (Tarball Stream)","termClear":"Очистить","termConnected":"Подключено к PTY-сессии {id} на {host}","termDisconnected":"Терминал отключён.","termPlaceholder":"Введите команду и нажмите Enter (напр. htop, ls, docker ps)…","termStart":"Подключить терминал","termStop":"Отключить","testFail":"❌ Ошибка подключения: {err}","testGroup":"Тестовая группа","testOk":"✅ Соединение установлено! Задержка: {latency} мс | ОС: {os}","testing":"Проверка соединения…","title":"Удалённое рабочее пространство","transferBtnExec":"Передать напрямую","transferCancel":"Отмена","transferDestHost":"Целевой сервер","transferDestPath":"Целевой путь к файлу","transferFailed":"Сбой передачи: {name}","transferProgress":"{name}: {percent}%","transferSuccess":"Успешно передано {bytes} байт на {host}:{path}","transferTitle":"Прямая передача сервер-сервер","tunnelTraffic":"Вход: {rx} | Выход: {tx}","tunnelUptime":"Работает: {sec} с","tunnelsColActions":"Действия","tunnelsColId":"ID туннеля","tunnelsColRoute":"Маршрут проброса","tunnelsDesc":"Проброс удалённых портов (базы данных, веб-серверы, API) на локальный компьютер через зашифрованные SSH-туннели.","tunnelsTitle":"🔀 Проброс портов SSH (туннели)","upToDate":"Актуальная версия","updateAvailable":"Доступно обновление","updateFailed":"Сбой обновления","updateNow":"Обновить сейчас","updaterTitle":"Обновление плагина","updating":"Обновление…","vaultProtectedBadge":"🛡️ Защищено .env Vault","versionUnknown":"Версия неизвестна","wsBack":"Назад","wsCluster":"Кластер","wsDocker":"Контейнеры","wsFiles":"Файлы","wsHosts":"Хосты","wsTerminal":"Терминал","wsTunnels":"Туннели"}}
@@ -1 +1 @@
1
- {"dsh-moa":{"actions.retry":"Повторить","actions.save":"Сохранить конфигурацию","actions.saved":"Сохранено!","actions.saving":"Сохранение…","addCandidate":"Добавить слот параллельной модели","aggTempHint":"Рекомендуется 0.2 - 0.4 для строгой проверки и фактологического синтеза.","aggregator.add_fallback_btn":"Добавить резервную модель…","aggregator.blind_hint":"Анонимизировать ответы кандидатов, чтобы исключить предвзятость к конкретной модели","aggregator.blind_label":"Слепое судейство (Blind Evaluation)","aggregator.criteria_label":"Критерии оценки судьи","aggregator.criteria_placeholder":"Оценивай корректность кода, отсутствие галлюцинаций, следование стилю...","aggregator.curator_hint":"Специальные указания по синтезу ответов","aggregator.curator_label":"Инструкция куратора","aggregator.desc":"Модель, которая оценивает ответы кандидатов, применяет критерии и формирует итоговый результат","aggregator.fallbacks_desc":"Цепочка запасных моделей при отказе или превышении квот основного судьи","aggregator.fallbacks_title":"Резервные модели-судьи","aggregator.override_hint":"Заменить системную инструкцию судьи на собственную","aggregator.override_label":"Переопределение системного промпта","aggregator.peer_hint":"Включить раунд критики между кандидатами перед вынесением вердикта","aggregator.peer_label":"Режим взаимного консилиума","aggregator.questions_hint":"Список контрольных проверок при сопоставлении ответов кандидатов","aggregator.questions_label":"Контрольные вопросы для критики","aggregator.stream_hint":"Отображать финальный синтез в реальном времени","aggregator.stream_label":"Потоковый вывод агрегатора","aggregator.temp_hint":"Степень вариативности синтеза (обычно 0.1–0.3 для строгой оценки)","aggregator.temp_label":"Температура судьи","aggregator.timeout_label":"Таймаут агрегатора (сек)","aggregator.title":"Модель-судья и агрегация (Judge / Aggregator)","aggregatorDesc":"Оценивает предложения кандидатов, исправляет галлюцинации и формирует итоговое единое решение.","aggregatorTitle":"Модель-судья / Агрегатор (проверяет и синтезирует)","badge.candidates":"Кандидатов: {count}","badge.disabled":"Отключено","badge.models":"Доступно моделей: {count}","badge.offline":"Хост недоступен","badge.online":"MoA активен","badge.preset":"Пресет: {name}","btn.clear_stats":"Очистить статистику","btn.export_stats":"Экспорт статистики (CSV/JSON)","btn.refresh":"Обновить статус","btn.reset":"Сбросить к умолчаниям","btn.run":"Запустить раунд MoA","btn.running":"Генерация ответов…","btn.save":"Сохранить конфигурацию","btn.saving":"Сохранение…","cancel":"Отмена","candidate":"Кандидат","card.consensus":"Степень согласия консилиума: {consensus}%","card.critique_score":"Средний балл: {score}/10","card.critique_title":"Карточка взаимной критики","card.strengths":"Сильные стороны:","card.verdict":"Вердикт судьи:","card.weaknesses":"Замечания:","card.winner":"Выбранный кандидат: {model}","clear":"Очистить","col.avg_latency":"Средняя задержка","col.critique_score":"Оценка консилиума","col.model":"Модель","col.win_rate":"Винрейт","col.wins":"Побед","config.enabled_label":"Включить модуль Mixture of Agents","confirmDeletePreset":"Вы уверены, что хотите удалить пресет","create":"Создать","createNewPreset":"Создать новый пресет...","defaultPreset":"Пресет по умолчанию (используется для /moa без аргументов)","delete":"Удалить","deletePreset":"Удалить пресет","description":"Выполнение задач с несколькими параллельными моделями-советниками и синтезирующей моделью-судьёй","empty.models":"Нет доступных моделей для выбора","empty.proposers":"Выберите хотя бы одну модель-кандидата в списке выше","error.no_judge":"Необходимо указать модель-судью","error.no_proposers":"Необходимо выбрать хотя бы одну модель-кандидата","error.timeout":"Превышено время ожидания ответа моделей ({timeout}с)","export.copied":"Данные скопированы в буфер обмена","export.csv":"Экспорт CSV","export.json":"Экспорт JSON","field.blind_review":"Слепое рецензирование (Blind Review)","field.blind_review_hint":"Скрывать имена моделей при взаимной оценке для исключения предвзятости","field.curator_advice":"Совет куратора (Curator Guidance)","field.curator_advice_hint":"Инструкция судье, на какие аспекты обращать внимание (точность, лаконичность, код)","field.fallback_judges":"Резервные судьи (Fallback Judges)","field.fallback_judges_hint":"Цепочка моделей на случай превышения лимитов или недоступности основного судьи","field.judge_model":"Модель-судья (Judge / Synthesizer)","field.judge_model_hint":"Финальная модель, которая оценивает ответы кандидатов и формирует итоговый ответ","field.max_tokens":"Лимит токенов на раунд","field.max_tokens_hint":"Максимальное число токенов для ответов каждого кандидата","field.peer_critique":"Включить взаимную критику (Peer Critique)","field.peer_critique_hint":"Перед передачей судье кандидаты выставляют оценки и пишут замечания к чужим ответам","field.proposer_models":"Модели-кандидаты (Proposers)","field.proposer_models_hint":"Модели, генерирующие независимые варианты ответа в параллельном режиме","field.rounds":"Количество раундов синтеза","field.rounds_hint":"Число итераций доработки и взаимной критики (рекомендуется 1–2)","field.temperature":"Температура генерации","field.temperature_hint":"Степень креативности для моделей-кандидатов (0.0 — детерминировано, 1.0 — вариативно)","field.timeout_sec":"Таймаут раунда (сек)","field.timeout_sec_hint":"Максимальное время ожидания ответа самого медленного кандидата","header.sub":"Параллельная генерация несколькими моделями-кандидатами с финальной оценкой и объединением ведущей моделью-судьёй. Автоматически возвращает результат в модель текущей сессии.","header.title":"Оркестрация Mixture of Agents (MoA)","help.desc":"MoA комбинирует сильные стороны разных моделей (код, фактология, логика) для получения результата, превосходящего любую одиночную модель.","help.doc_link":"Документация и лучшие практики","help.slash_command":"Слэш-команда:","help.slash_example":"/moa Сравни подходы к кэшированию и составь архитектуру","help.title":"Справка по Mixture of Agents","isDefault":"по умолчанию","leaderboard.cost":"Расход токенов","leaderboard.desc":"Рейтинг эффективности кандидатов по оценкам судьи за все проведённые раунды","leaderboard.empty":"История раундов пока пуста","leaderboard.export_csv":"Экспорт CSV","leaderboard.export_json":"Экспорт JSON","leaderboard.filter_all":"Все модели","leaderboard.model":"Модель","leaderboard.runs":"Раундов","leaderboard.title":"Таблица побед моделей (Leaderboard)","leaderboard.winrate":"Винрейт","leaderboard.wins":"Побед","loading":"Сохранение…","makeDefault":"Сделать по умолчанию","makeDefaultHint":"Использовать этот пресет для /moa, когда аргумент пресета не указан","modelsFound":"Найдено","msg.reset":"Настройки сброшены к значениям по умолчанию","msg.saved":"Настройки MoA успешно сохранены","msg.stats_cleared":"История побед и статистика очищены","newPresetPlaceholder":"Имя нового пресета (например, fast-audit)","noModelsMatch":"Моделей по запросу не найдено.","of":"из","parallelCount":"Параллельные воркеры","picker.clear":"Очистить","picker.custom":"Указать вручную…","picker.found":"Найдено:","picker.none":"Модель не выбрана","picker.of":"из","picker.search_placeholder":"Поиск модели по имени или провайдеру…","picker.select":"Выбрать модель","presetSelectLabel":"Активный пресет для настройки:","presets.active_badge":"Активный пресет","presets.cancel":"Отмена","presets.create":"Создать","presets.del_btn":"Удалить пресет","presets.del_confirm":"Вы уверены, что хотите удалить этот пресет?","presets.desc":"Готовые наборы ролей, моделей-кандидатов и параметров судейства для различных типов задач","presets.name_placeholder":"Имя пресета (например: Code Review, Deep Debate)","presets.new_btn":"Создать пресет…","presets.set_default":"Сделать по умолчанию","presets.title":"Управление пресетами MoA","proposers.add_btn":"Добавить модель-кандидата…","proposers.candidate":"Кандидат #{index}","proposers.desc":"Список независимых моделей, параллельно генерирующих варианты ответа","proposers.grace_label":"Льготное время ожидания (сек)","proposers.parallel_count":"Параллельных потоков: {count}","proposers.quorum_hint":"Минимальное количество успешных ответов кандидатов для продолжения раунда","proposers.quorum_label":"Кворум ответов","proposers.role_general":"Общий ассистент (General)","proposers.role_label":"Специализация кандидата","proposers.role_minimalist":"Минималист (Ponytail/KISS)","proposers.role_performance":"Производительность и оптимизация","proposers.role_robustness":"Надёжность и безопасность","proposers.role_tester":"Тестирование и валидация","proposers.temp_hint":"Степень вариативности ответа кандидата","proposers.temp_label":"Температура кандидата","proposers.timeout_label":"Таймаут кандидатов (сек)","proposers.title":"Пул моделей-кандидатов (Proposers)","proposersDesc":"Параллельно генерируют независимые варианты ответов для предоставления различных точек зрения.","proposersTitle":"Модели-кандидаты (Советники)","refTempHint":"Рекомендуется 0.6 - 0.8 для генерации разнообразных творческих гипотез.","refTempLabel":"Температура кандидатов (разнообразие решений):","remove":"Удалить","retry":"Повторить подключение","save":"Сохранить изменения","saved":"Успешно сохранено","searchPlaceholder":"Поиск по названию модели или провайдеру...","sec.critique_desc":"Кандидаты анонимно рецензируют ответы друг друга перед финальным решением судьи","sec.critique_title":"Режим взаимной критики (Peer Review)","sec.roles_desc":"Выберите пул моделей-кандидатов (proposers) и синтезирующую модель-судью (judge)","sec.roles_title":"Назначение ролей моделей","sec.stats_desc":"Статистика качества ответов и частота выбора модели судьёй","sec.stats_title":"Метрики и победы моделей","selectModel":"Выберите модель...","slash.desc":"Выполнить запрос через оркестрацию нескольких моделей (MoA)","slashMoa":"Выполнить задачу через Mixture of Agents (/moa <промпт>)","stat.avg_latency":"Среднее время раунда","stat.no_data":"Статистика раундов пока пуста. Запустите MoA через /moa или кнопку выше.","stat.successful_runs":"Успешных раундов","stat.tokens_saved":"Экономия токенов","stat.total_runs":"Всего раундов MoA","stat.win_rate":"Доля побед моделей (Win Rate)","stats.active_models":"Активных моделей","stats.avg_cost":"Средняя стоимость","stats.desc":"Общая статистика генераций, экономия и средняя стоимость","stats.preset_count":"Пресетов","stats.title":"Сводная телеметрия MoA","stats.total_runs":"Всего раундов","status.completed":"Раунд успешно завершён","status.critique":"Взаимная критика и оценка ответов…","status.error":"Ошибка раунда: {error}","status.idle":"Готов к работе","status.judging":"Судья {judge} синтезирует финальный ответ…","status.proposing":"Генерация ответов кандидатами ({current}/{total})…","tab.advanced":"Дополнительно","tab.critique":"Консилиум и критика","tab.orchestration":"Оркестрация","tab.stats":"Лидерборд и винрейт","tag.coder":"Для кода","tag.fast":"Быстрая","tag.reasoning":"Рассуждающая","tag.recommended":"Рекомендуется","temperature":"Температура","title":"Смесь агентов (MoA)","toast.cleared":"История очищена","toast.copied":"Скопировано в буфер обмена","unavailable":"Сервис MoA временно недоступен (переподключение...)","updater.available":"Доступно обновление: v{version}","updater.btnCheck":"Проверить обновления","updater.btnUpdate":"Обновить до v{version}","updater.checkFailed":"Ошибка проверки реестра","updater.checking":"Проверка реестра...","updater.current":"Текущая версия: v{version}","updater.desc":"Проверка npm-реестра на новые версии и обновление в один клик.","updater.success":"Успешно обновлено до v{version}. Перезапустите DSH для применения.","updater.title":"Обновление плагина","updater.upToDate":"Актуальная версия","updater.updating":"Обновление плагина...","useCustom":"Использовать свою"}}
1
+ {"dsh-moa":{"actions.retry":"Повторить","actions.save":"Сохранить конфигурацию","actions.saved":"Сохранено!","actions.saving":"Сохранение…","addCandidate":"Добавить слот параллельной модели","aggTempHint":"Рекомендуется 0.2 - 0.4 для строгой проверки и фактологического синтеза.","aggregator.add_fallback_btn":"Добавить резервную модель…","aggregator.blind_hint":"Анонимизировать ответы кандидатов, чтобы исключить предвзятость к конкретной модели","aggregator.blind_label":"Слепое судейство (Blind Evaluation)","aggregator.criteria_label":"Критерии оценки судьи","aggregator.criteria_placeholder":"Оценивай корректность кода, отсутствие галлюцинаций, следование стилю...","aggregator.curator_hint":"Специальные указания по синтезу ответов","aggregator.curator_label":"Инструкция куратора","aggregator.desc":"Модель, которая оценивает ответы кандидатов, применяет критерии и формирует итоговый результат","aggregator.fallbacks_desc":"Цепочка запасных моделей при отказе или превышении квот основного судьи","aggregator.fallbacks_title":"Резервные модели-судьи","aggregator.override_hint":"Заменить системную инструкцию судьи на собственную","aggregator.override_label":"Переопределение системного промпта","aggregator.peer_hint":"Включить раунд критики между кандидатами перед вынесением вердикта","aggregator.peer_label":"Режим взаимного консилиума","aggregator.questions_hint":"Список контрольных проверок при сопоставлении ответов кандидатов","aggregator.questions_label":"Контрольные вопросы для критики","aggregator.stream_hint":"Отображать финальный синтез в реальном времени","aggregator.stream_label":"Потоковый вывод агрегатора","aggregator.temp_hint":"Степень вариативности синтеза (обычно 0.1–0.3 для строгой оценки)","aggregator.temp_label":"Температура судьи","aggregator.test_cmd_placeholder":"например, npm test или node --test","aggregator.test_gate_hint":"Выполняет запуск тестов в песочницах кандидатов до судейской оценки. Реальные результаты направляют выбор лучшего решения.","aggregator.test_gate_label":"Гейт выполнения тестов (автоматическое тестирование в песочнице)","aggregator.test_timeout_label":"Таймаут тестов (сек):","aggregator.timeout_label":"Таймаут агрегатора (сек)","aggregator.title":"Модель-судья и агрегация (Judge / Aggregator)","aggregatorDesc":"Оценивает предложения кандидатов, исправляет галлюцинации и формирует итоговое единое решение.","aggregatorTitle":"Модель-судья / Агрегатор (проверяет и синтезирует)","badge.candidates":"Кандидатов: {count}","badge.disabled":"Отключено","badge.models":"Доступно моделей: {count}","badge.offline":"Хост недоступен","badge.online":"MoA активен","badge.preset":"Пресет: {name}","btn.clear_stats":"Очистить статистику","btn.export_stats":"Экспорт статистики (CSV/JSON)","btn.refresh":"Обновить статус","btn.reset":"Сбросить к умолчаниям","btn.run":"Запустить раунд MoA","btn.running":"Генерация ответов…","btn.save":"Сохранить конфигурацию","btn.saving":"Сохранение…","cancel":"Отмена","candidate":"Кандидат","card.consensus":"Степень согласия консилиума: {consensus}%","card.critique_score":"Средний балл: {score}/10","card.critique_title":"Карточка взаимной критики","card.strengths":"Сильные стороны:","card.verdict":"Вердикт судьи:","card.weaknesses":"Замечания:","card.winner":"Выбранный кандидат: {model}","clear":"Очистить","col.avg_latency":"Средняя задержка","col.critique_score":"Оценка консилиума","col.model":"Модель","col.win_rate":"Винрейт","col.wins":"Побед","config.enabled_label":"Включить модуль Mixture of Agents","confirmDeletePreset":"Вы уверены, что хотите удалить пресет","create":"Создать","createNewPreset":"Создать новый пресет...","defaultPreset":"Пресет по умолчанию (используется для /moa без аргументов)","delete":"Удалить","deletePreset":"Удалить пресет","description":"Выполнение задач с несколькими параллельными моделями-советниками и синтезирующей моделью-судьёй","diff.candidate":"Кандидат {num}","diff.curator":"Синтез куратора (судьи)","diff.desc":"Визуальное сравнение файлов между решениями кандидатов и синтезом судьи в рабочей области проекта.","diff.empty":"Выбранные файлы идентичны (различий нет).","diff.loading":"Загрузка различий…","diff.no_files":"В рабочих областях кандидатов (.moa) файлов не найдено. Запустите задачу с /moa для генерации кода.","diff.refresh":"Обновить дифф","diff.select_file":"Файл:","diff.select_from":"Базовый вариант:","diff.select_to":"Сравнить с:","diff.title":"Просмотр различий решений кандидатов (Diff Viewer)","empty.models":"Нет доступных моделей для выбора","empty.proposers":"Выберите хотя бы одну модель-кандидата в списке выше","error.no_judge":"Необходимо указать модель-судью","error.no_proposers":"Необходимо выбрать хотя бы одну модель-кандидата","error.timeout":"Превышено время ожидания ответа моделей ({timeout}с)","export.copied":"Данные скопированы в буфер обмена","export.csv":"Экспорт CSV","export.json":"Экспорт JSON","field.blind_review":"Слепое рецензирование (Blind Review)","field.blind_review_hint":"Скрывать имена моделей при взаимной оценке для исключения предвзятости","field.curator_advice":"Совет куратора (Curator Guidance)","field.curator_advice_hint":"Инструкция судье, на какие аспекты обращать внимание (точность, лаконичность, код)","field.fallback_judges":"Резервные судьи (Fallback Judges)","field.fallback_judges_hint":"Цепочка моделей на случай превышения лимитов или недоступности основного судьи","field.judge_model":"Модель-судья (Judge / Synthesizer)","field.judge_model_hint":"Финальная модель, которая оценивает ответы кандидатов и формирует итоговый ответ","field.max_tokens":"Лимит токенов на раунд","field.max_tokens_hint":"Максимальное число токенов для ответов каждого кандидата","field.peer_critique":"Включить взаимную критику (Peer Critique)","field.peer_critique_hint":"Перед передачей судье кандидаты выставляют оценки и пишут замечания к чужим ответам","field.proposer_models":"Модели-кандидаты (Proposers)","field.proposer_models_hint":"Модели, генерирующие независимые варианты ответа в параллельном режиме","field.rounds":"Количество раундов синтеза","field.rounds_hint":"Число итераций доработки и взаимной критики (рекомендуется 1–2)","field.temperature":"Температура генерации","field.temperature_hint":"Степень креативности для моделей-кандидатов (0.0 — детерминировано, 1.0 — вариативно)","field.timeout_sec":"Таймаут раунда (сек)","field.timeout_sec_hint":"Максимальное время ожидания ответа самого медленного кандидата","header.sub":"Параллельная генерация несколькими моделями-кандидатами с финальной оценкой и объединением ведущей моделью-судьёй. Автоматически возвращает результат в модель текущей сессии.","header.title":"Оркестрация Mixture of Agents (MoA)","help.desc":"MoA комбинирует сильные стороны разных моделей (код, фактология, логика) для получения результата, превосходящего любую одиночную модель.","help.doc_link":"Документация и лучшие практики","help.slash_command":"Слэш-команда:","help.slash_example":"/moa Сравни подходы к кэшированию и составь архитектуру","help.title":"Справка по Mixture of Agents","isDefault":"по умолчанию","leaderboard.cost":"Расход токенов","leaderboard.desc":"Рейтинг эффективности кандидатов по оценкам судьи за все проведённые раунды","leaderboard.empty":"История раундов пока пуста","leaderboard.export_csv":"Экспорт CSV","leaderboard.export_json":"Экспорт JSON","leaderboard.filter_all":"Все модели","leaderboard.model":"Модель","leaderboard.runs":"Раундов","leaderboard.title":"Таблица побед моделей (Leaderboard)","leaderboard.winrate":"Винрейт","leaderboard.wins":"Побед","loading":"Сохранение…","makeDefault":"Сделать по умолчанию","makeDefaultHint":"Использовать этот пресет для /moa, когда аргумент пресета не указан","modelsFound":"Найдено","msg.reset":"Настройки сброшены к значениям по умолчанию","msg.saved":"Настройки MoA успешно сохранены","msg.stats_cleared":"История побед и статистика очищены","newPresetPlaceholder":"Имя нового пресета (например, fast-audit)","noModelsMatch":"Моделей по запросу не найдено.","of":"из","parallelCount":"Параллельные воркеры","picker.clear":"Очистить","picker.custom":"Указать вручную…","picker.found":"Найдено:","picker.none":"Модель не выбрана","picker.of":"из","picker.search_placeholder":"Поиск модели по имени или провайдеру…","picker.select":"Выбрать модель","presetSelectLabel":"Активный пресет для настройки:","presets.active_badge":"Активный пресет","presets.cancel":"Отмена","presets.create":"Создать","presets.del_btn":"Удалить пресет","presets.del_confirm":"Вы уверены, что хотите удалить этот пресет?","presets.desc":"Готовые наборы ролей, моделей-кандидатов и параметров судейства для различных типов задач","presets.name_placeholder":"Имя пресета (например: Code Review, Deep Debate)","presets.new_btn":"Создать пресет…","presets.set_default":"Сделать по умолчанию","presets.title":"Управление пресетами MoA","proposers.add_btn":"Добавить модель-кандидата…","proposers.candidate":"Кандидат #{index}","proposers.desc":"Список независимых моделей, параллельно генерирующих варианты ответа","proposers.grace_label":"Льготное время ожидания (сек)","proposers.parallel_count":"Параллельных потоков: {count}","proposers.quorum_hint":"Минимальное количество успешных ответов кандидатов для продолжения раунда","proposers.quorum_label":"Кворум ответов","proposers.role_general":"Общий ассистент (General)","proposers.role_label":"Специализация кандидата","proposers.role_minimalist":"Минималист (Ponytail/KISS)","proposers.role_performance":"Производительность и оптимизация","proposers.role_robustness":"Надёжность и безопасность","proposers.role_tester":"Тестирование и валидация","proposers.temp_hint":"Степень вариативности ответа кандидата","proposers.temp_label":"Температура кандидата","proposers.timeout_label":"Таймаут кандидатов (сек)","proposers.title":"Пул моделей-кандидатов (Proposers)","proposersDesc":"Параллельно генерируют независимые варианты ответов для предоставления различных точек зрения.","proposersTitle":"Модели-кандидаты (Советники)","refTempHint":"Рекомендуется 0.6 - 0.8 для генерации разнообразных творческих гипотез.","refTempLabel":"Температура кандидатов (разнообразие решений):","remove":"Удалить","retry":"Повторить подключение","save":"Сохранить изменения","saved":"Успешно сохранено","searchPlaceholder":"Поиск по названию модели или провайдеру...","sec.critique_desc":"Кандидаты анонимно рецензируют ответы друг друга перед финальным решением судьи","sec.critique_title":"Режим взаимной критики (Peer Review)","sec.roles_desc":"Выберите пул моделей-кандидатов (proposers) и синтезирующую модель-судью (judge)","sec.roles_title":"Назначение ролей моделей","sec.stats_desc":"Статистика качества ответов и частота выбора модели судьёй","sec.stats_title":"Метрики и победы моделей","selectModel":"Выберите модель...","slash.desc":"Выполнить запрос через оркестрацию нескольких моделей (MoA)","slashMoa":"Выполнить задачу через Mixture of Agents (/moa <промпт>)","stat.avg_latency":"Среднее время раунда","stat.no_data":"Статистика раундов пока пуста. Запустите MoA через /moa или кнопку выше.","stat.successful_runs":"Успешных раундов","stat.tokens_saved":"Экономия токенов","stat.total_runs":"Всего раундов MoA","stat.win_rate":"Доля побед моделей (Win Rate)","stats.active_models":"Активных моделей","stats.avg_cost":"Средняя стоимость","stats.desc":"Общая статистика генераций, экономия и средняя стоимость","stats.preset_count":"Пресетов","stats.title":"Сводная телеметрия MoA","stats.total_runs":"Всего раундов","status.completed":"Раунд успешно завершён","status.critique":"Взаимная критика и оценка ответов…","status.error":"Ошибка раунда: {error}","status.idle":"Готов к работе","status.judging":"Судья {judge} синтезирует финальный ответ…","status.proposing":"Генерация ответов кандидатами ({current}/{total})…","tab.advanced":"Дополнительно","tab.critique":"Консилиум и критика","tab.orchestration":"Оркестрация","tab.stats":"Лидерборд и винрейт","tag.coder":"Для кода","tag.fast":"Быстрая","tag.reasoning":"Рассуждающая","tag.recommended":"Рекомендуется","temperature":"Температура","title":"Смесь агентов (MoA)","toast.cleared":"История очищена","toast.copied":"Скопировано в буфер обмена","unavailable":"Сервис MoA временно недоступен (переподключение...)","updater.available":"Доступно обновление: v{version}","updater.btnCheck":"Проверить обновления","updater.btnUpdate":"Обновить до v{version}","updater.checkFailed":"Ошибка проверки реестра","updater.checking":"Проверка реестра...","updater.current":"Текущая версия: v{version}","updater.desc":"Проверка npm-реестра на новые версии и обновление в один клик.","updater.success":"Успешно обновлено до v{version}. Перезапустите DSH для применения.","updater.title":"Обновление плагина","updater.upToDate":"Актуальная версия","updater.updating":"Обновление плагина...","useCustom":"Использовать свою"}}
@@ -1 +1 @@
1
- {"dsh-key-rotation":{"activeBadge":"активен","addKey":"+ Добавить ключ","addKeyTitle":"Добавить API-ключ","addProvider":"+ Добавить провайдера","brokenKey":"повреждён (3× AUTH)","budgetLabel":"бюджет:","bulkApply":"Применить к выбранным","bulkCooldownPlaceholder":"Массовый таймаут (мс)","bulkRemove":"Удалить выбранные","cancel":"Отмена","cardDesc":"Ротация API-ключей для провайдеров: пулы ключей, автоматическое переключение при исчерпании квот и rate-limit, кулдаун и восстановление.","chooseProvider":"Выберите провайдера","codesTitle":"Переключать при этих ошибках","confirm":"Подтвердить","confirmBulkRemoveDesc":"Выбранные провайдеры и все их ключи будут исключены из ротации. Действие можно отменить один раз сразу после удаления.","confirmBulkRemoveTitle":"Удалить выбранных провайдеров ({n})?","confirmRemoveProvDesc":"Вы уверены, что хотите удалить этого провайдера и все настроенные ключи из ротации?","confirmRemoveProvTitle":"Удалить провайдера {p}?","confirmResetDesc":"Это немедленно сбросит счётчики сбоев, таймеры охлаждения и переведёт автоматический выключатель (circuit breaker) в исходное состояние.","confirmResetTitle":"Сбросить охлаждение для {p}?","cooldown":"Кулдаун после ошибки (мс)","currentVersion":"Текущая версия","desc":"Ротация API-ключей по провайдерам. Для каждого провайдера укажите список его ключей (имена переменных окружения из DSH credentials). Плагин направляет запросы по очереди и автоматически переключается на следующий ключ при ошибках лимитов или квот.","dialogLabel":"Подтверждение","discard":"Сбросить","empty":"Провайдеры для ротации ключей не настроены.","emptyDesc":"Добавьте провайдера и хотя бы одно имя API-ключа для запуска ротации.","emptyKeys":"В пуле пока нет ключей.","emptyTitle":"Пулов пока нет","errorCount":"Ошибок: {n}","errorTitle":"Не удалось загрузить настройки","eventAt":"Время","eventCooldown":"Таймаут","eventKey":"Ключ","eventReason":"Причина","exportCsv":"Экспорт в CSV","exportOne":"Экспорт пула","exportPools":"Экспорт всех пулов в JSON","exportProvider":"Экспортировать этого провайдера","failover":"Автоматическое переключение","failoverDesc":"Переключаться на следующий ключ в пуле при получении кодов 429, 402, 403, 503","filterAll":"Все ключи","filterCooldown":"На кулдауне","filterErrors":"С ошибками","filterReady":"Готовы к работе","header.keys_badge":"настроенных ключей","header.pools_badge":"активных пулов","header.sub":"Автоматическая круговая (round-robin) ротация нескольких ключей, экспоненциальные таймауты при ошибках 429/5xx, защита цепи failover и безопасность учётных данных (~/.dsh/.credentials.yaml).","header.title":"Ротация ключей и отказоустойчивость","headerPoolsTitle":"Пулы ротации ключей","health":"Состояние пула","healthBad":"Все ключи исчерпаны или заблокированы","healthGood":"Все ключи работоспособны","healthScoreTitle":"рейтинг надёжности","healthWarn":"Часть ключей на кулдауне","hoursAgo":"{n} ч назад","importEnv":"Импорт из переменных окружения (.env)","importPools":"Импорт пулов из JSON","justNow":"только что","key":"Ключ","keyActive":"Активен","keyBlocked":"Заблокирован","keyCooldown":"Кулдаун ({time}с)","keyCooling":"охлаждение, {s}с","keyDisabled":"Отключён вручную","keyErrors":"Ошибок подряд: {n}","keyExpired":"истёк","keyExpiringSoon":"истекает через {n} дн.","keyFromEnv":"из переменных окружения, только чтение","keyHint":"Значение сохраняется в учётных данных DSH и никогда не отправляется обратно в браузер — отображаются только последние 5 символов.","keyLabel":"Ключ {n}","keyLatency":"Задержка: {time}мс","keyMissing":"учётные данные отсутствуют","keyName":"Имя ключа","keyPlaceholder":"OPENAI_API_KEY_2","keyPool":"Пул ключей","keyPriority":"Приоритет","keyQuota":"Квота исчерпана","keyRateLimit":"Превышен лимит запросов","keyReady":"готов","keyRemoved":"Ключ удалён","keySave":"Сохранить key","keySaved":"Ключ добавлен","keySuccess":"Успешных запросов: {n}","keyValuePlaceholder":"paste the key, then Сохранить","keyWeight":"Вес: {n}","keyWriteFailed":"не удалось сохранить ключ: {msg}","keysCount":"Ключей в пуле: {n}","keysTitle":"Список ключей","lastError":"Последняя ошибка: {msg}","lastSuccess":"Успешный запрос: {time}","latestVersion":"Последняя версия","liveEventStream":"Лента событий в реальном времени","liveEventStreamEmpty":"События ротации пока не зафиксированы","loadChartAria":"Распределение трафика по ключам","loadDistribution":"Распределение трафика","loading":"Загрузка пулов ротации…","metrics":"Метрики использования","metricsAvgLatency":"Средняя задержка","metricsErrors":"Ошибки","metricsSuccess":"Успешные","metricsThroughput":"Запросов/мин","metricsTotal":"Всего запросов","minutesAgo":"{n} мин назад","modalAddKey":"Добавление ключа в пул","modalAddProvider":"Добавление пула провайдера","modalClose":"Закрыть диалог","modalEditKey":"Редактирование ключа","modalEditProvider":"Редактирование провайдера","mode":"Режим выбора ключа","modeOrder":"По порядку (Sequential)","modeRandom":"Случайно (Random)","modeWeighted":"По весам / бюджету","moveDown":"Переместить вниз","moveUp":"Переместить вверх","name":"Ротация API-ключей","noActivePools":"Нет активных пулов","noProviders":"Провайдеры не добавлены","noTrafficYet":"Трафик пока не зафиксирован","notRegistered":"не зарегистрирован","notSecretShape":"сохранено, но значение не похоже на API-ключ — проверьте опечатки","pausedBudget":"приостановлен","poolActive":"Пул активен","poolDisabled":"Пул отключён","poolEmpty":"В пуле нет активных ключей","poolExhausted":"пул исчерпан — все ключи охлаждаются","poolName":"Имя пула провайдера","proactiveGuardHint":"Заранее ставить ключи на паузу при приближении к квоте или заголовку Retry-After до получения 429","proactiveGuardLabel":"Превентивная защита от лимитов (Rate-Limit Guard)","provider":"Провайдер","providerActive":"Активен","providerCatalogUnavailable":"Список провайдеров недоступен","providerDisabled":"Отключён","providerName":"Имя провайдера (например openai, openrouter)","providerPlaceholder":"openai","providerRemoved":"Провайдер удалён","providerType":"Тип провайдера","providersTitle":"Провайдеры и их ключи","quotaExhausted":"Квота исчерпана","quotaResetIn":"Сброс через {time}","rateLimit":"Превышен лимит запросов","readOnly":"Настройки доступны только для чтения.","recentFailures":"Недавние сбои ({n})","removeKey":"Удалить ключ","removeProvider":"Удалить провайдера","resetAll":"Сбросить статистику и кулдауны","resetAllSuccess":"Статистика и кулдауны успешно сброшены","resetCooldown":"Сбросить охлаждение","resetCooldowns":"Сбросить все кулдауны","resetSuccess":"Кулдауны ключей сброшены","resetting":"Сброс…","retestBroken":"Повторный тест","retestFail":"повторный тест не пройден — ключ всё ещё не работает","retry":"Повторить","retryCount":"Попыток повтора","retryInterval":"Интервал повтора (мс)","rotationMode":"Режим ротации","rotationSequential":"Последовательный (Round-Robin)","rotationWeighted":"Взвешенный (Weighted)","routingStrategyLabel":"Стратегия маршрутизации","routingStrategyLeastLoaded":"Минимальная нагрузка (по параллелизму)","routingStrategyLowestLatency":"Минимальная задержка (p95)","routingStrategyRoundRobin":"Круговой перебор (Round-Robin, по умолчанию)","rpmTitle":"запросов/мин: {u} использовано, {r} осталось","save":"Сохранить настройки","saveRefused":"Хост отклонил это сохранение. Ваш черновик сохранён; сбросьте его для загрузки актуальных настроек.","saveUnconfirmed":"Не удалось подтвердить результат сохранения. Ваш черновик сохранён; обновите страницу перед повторной попыткой.","saved":"Настройки сохранены","saving":"Сохранение…","scheduleDays":"Расписание ротации (дней, 0=выкл.)","secondsAgo":"{n} с назад","sectionBackup":"Резервные копии и снимки","sectionBackupDesc":"Экспорт и импорт пулов провайдеров и создание полных снимков конфигурации плагина.","sectionFailover":"Триггеры отказа и коды ошибок","sectionFailoverDesc":"Выбор условий и ошибок, вызывающих автоматическое переключение на следующий доступный ключ.","sectionStats":"Здоровье пула и телеметрия","sectionStatsDesc":"Телеметрия активных пулов ключей в реальном времени, доступные учётные данные и статус переключения.","sectionTiming":"Тайминги и расписание ротации","sectionTimingDesc":"Настройка длительности периода охлаждения (cooldown) и окон периодической ротации.","selectProvider":"Выбрать провайдера {p}","selfHealingHint":"Периодическая проверка бесплатной моделью для возврата вышедших из строя ключей (0 — отключено)","selfHealingLabel":"Интервал автовосстановления (мин)","settingsChanged":"Служба настроек изменилась. Сбросьте этот черновик и обновите страницу перед сохранением.","snapshotExport":"Снимок ⬇","snapshotImport":"Восстановить","sortUsage":"Сортировать по нагрузке","statHealthy":"Исправны / Готовы","statKeys":"Всего ключей","statPools":"Настроенных пулов","statRequests":"запросов","status":"Статус","statusAvailable":"Доступен","statusCooldown":"Кулдаун","statusDisabled":"Отключён","statusExhausted":"Исчерпан","statusFailed":"Ошибка","strategy":"Стратегия failover","subtitle":"Ротация API-ключей по провайдерам: пулы ключей, автоматическое переключение при исчерпании квот/лимитов, охлаждение и восстановление.","switchCodes":"Коды переключения (через запятую)","switchCount":"Переключений: {n}","switchesNone":"переключений пока не было","switchesSome":"переключений: {n} · последнее: {reason}, {ago}","testAll":"Проверить все ключи","testFail":"СБОЙ","testKey":"Проверить ключ","testOk":"OK","testSuccess":"Ключ валиден: ответ за {time}мс","testing":"Тестирование…","testingAllProgress":"Проверка {n} из {total}…","title":"Ротация API-ключей (dsh-key-rotation)","totalCalls":"Всего вызовов: {n}","totalErrors":"Всего сбоев: {n}","totalRequestsTitle":"всего запросов","unavailableDesc":"Хост не предоставил пространство настроек dsh-key-rotation. Откройте «Настройки» заново или проверьте, включён ли плагин.","unavailableTitle":"Мост настроек недоступен","undo":"Отменить","undoKey":"Ключ удалён","undoProvider":"Провайдер удалён","updateAvailable":"Доступно обновление","updateCheck":"Проверить обновления","updateFailed":"Сбой обновления","updateNone":"Установлена актуальная версия","updateRestart":"Обновление установлено. Перезапустите DSH для применения.","updateRun":"Обновить сейчас","updateRunning":"Обновление…","usedAgo":"{ago} назад","weight":"Вес ключа","weightHint":"вес в round-robin: сколько раз ключ участвует в цикле (1 = равная доля)"},"keyRotation":{"currentVersion":"Текущая версия","latestVersion":"Последняя версия","updateAvailable":"Доступно обновление","updateCheck":"Проверить обновления","updateFailed":"Сбой обновления","updateNone":"Установлена актуальная версия","updateRestart":"Обновление установлено. Перезапустите DSH для применения.","updateRun":"Обновить сейчас","updateRunning":"Обновление…"}}
1
+ {"dsh-key-rotation":{"activeBadge":"активен","addKey":"+ Добавить ключ","addKeyTitle":"Добавить API-ключ","addProvider":"+ Добавить провайдера","brokenKey":"повреждён (3× AUTH)","budgetLabel":"бюджет:","bulkApply":"Применить к выбранным","bulkCooldownPlaceholder":"Массовый таймаут (мс)","bulkImport":"Пакетный импорт","bulkImportBtn":"Импортировать ключи","bulkImportCancel":"Отмена","bulkImportDesc":"Вставьте API-ключи построчно, в формате .env (KEY=value) или CSV (KEY, вес):","bulkImportSuccess":"Импортировано ключей: {n}","bulkRemove":"Удалить выбранные","cancel":"Отмена","cardDesc":"Ротация API-ключей для провайдеров: пулы ключей, автоматическое переключение при исчерпании квот и rate-limit, кулдаун и восстановление.","chooseProvider":"Выберите провайдера","codesTitle":"Переключать при этих ошибках","confirm":"Подтвердить","confirmBulkRemoveDesc":"Выбранные провайдеры и все их ключи будут исключены из ротации. Действие можно отменить один раз сразу после удаления.","confirmBulkRemoveTitle":"Удалить выбранных провайдеров ({n})?","confirmRemoveProvDesc":"Вы уверены, что хотите удалить этого провайдера и все настроенные ключи из ротации?","confirmRemoveProvTitle":"Удалить провайдера {p}?","confirmResetDesc":"Это немедленно сбросит счётчики сбоев, таймеры охлаждения и переведёт автоматический выключатель (circuit breaker) в исходное состояние.","confirmResetTitle":"Сбросить охлаждение для {p}?","cooldown":"Кулдаун после ошибки (мс)","currentVersion":"Текущая версия","desc":"Ротация API-ключей по провайдерам. Для каждого провайдера укажите список его ключей (имена переменных окружения из DSH credentials). Плагин направляет запросы по очереди и автоматически переключается на следующий ключ при ошибках лимитов или квот.","dialogLabel":"Подтверждение","discard":"Сбросить","empty":"Провайдеры для ротации ключей не настроены.","emptyDesc":"Добавьте провайдера и хотя бы одно имя API-ключа для запуска ротации.","emptyKeys":"В пуле пока нет ключей.","emptyTitle":"Пулов пока нет","errorCount":"Ошибок: {n}","errorTitle":"Не удалось загрузить настройки","eventAt":"Время","eventCooldown":"Таймаут","eventKey":"Ключ","eventReason":"Причина","exportCsv":"Экспорт в CSV","exportOne":"Экспорт пула","exportPools":"Экспорт всех пулов в JSON","exportProvider":"Экспортировать этого провайдера","failover":"Автоматическое переключение","failoverDesc":"Переключаться на следующий ключ в пуле при получении кодов 429, 402, 403, 503","filterAll":"Все ключи","filterCooldown":"На кулдауне","filterErrors":"С ошибками","filterReady":"Готовы к работе","header.keys_badge":"настроенных ключей","header.pools_badge":"активных пулов","header.sub":"Автоматическая круговая (round-robin) ротация нескольких ключей, экспоненциальные таймауты при ошибках 429/5xx, защита цепи failover и безопасность учётных данных (~/.dsh/.credentials.yaml).","header.title":"Ротация ключей и отказоустойчивость","headerPoolsTitle":"Пулы ротации ключей","health":"Состояние пула","healthBad":"Все ключи исчерпаны или заблокированы","healthGood":"Все ключи работоспособны","healthScoreTitle":"рейтинг надёжности","healthWarn":"Часть ключей на кулдауне","hoursAgo":"{n} ч назад","importEnv":"Импорт из переменных окружения (.env)","importPools":"Импорт пулов из JSON","justNow":"только что","key":"Ключ","keyActive":"Активен","keyBlocked":"Заблокирован","keyCooldown":"Кулдаун ({time}с)","keyCooling":"охлаждение, {s}с","keyDisabled":"Отключён вручную","keyErrors":"Ошибок подряд: {n}","keyExpired":"истёк","keyExpiringSoon":"истекает через {n} дн.","keyFromEnv":"из переменных окружения, только чтение","keyHint":"Значение сохраняется в учётных данных DSH и никогда не отправляется обратно в браузер — отображаются только последние 5 символов.","keyLabel":"Ключ {n}","keyLatency":"Задержка: {time}мс","keyMissing":"учётные данные отсутствуют","keyName":"Имя ключа","keyPaused":"Приостановлен","keyPlaceholder":"OPENAI_API_KEY_2","keyPool":"Пул ключей","keyPriority":"Приоритет","keyQuota":"Квота исчерпана","keyRateLimit":"Превышен лимит запросов","keyReady":"готов","keyRemoved":"Ключ удалён","keyRevoked":"Отозван (401)","keySave":"Сохранить key","keySaved":"Ключ добавлен","keySuccess":"Успешных запросов: {n}","keyValuePlaceholder":"paste the key, then Сохранить","keyWeight":"Вес: {n}","keyWriteFailed":"не удалось сохранить ключ: {msg}","keysCount":"Ключей в пуле: {n}","keysTitle":"Список ключей","lastError":"Последняя ошибка: {msg}","lastSuccess":"Успешный запрос: {time}","latestVersion":"Последняя версия","liveEventStream":"Лента событий в реальном времени","liveEventStreamEmpty":"События ротации пока не зафиксированы","loadChartAria":"Распределение трафика по ключам","loadDistribution":"Распределение трафика","loading":"Загрузка пулов ротации…","metrics":"Метрики использования","metricsAvgLatency":"Средняя задержка","metricsErrors":"Ошибки","metricsSuccess":"Успешные","metricsThroughput":"Запросов/мин","metricsTotal":"Всего запросов","minutesAgo":"{n} мин назад","modalAddKey":"Добавление ключа в пул","modalAddProvider":"Добавление пула провайдера","modalClose":"Закрыть диалог","modalEditKey":"Редактирование ключа","modalEditProvider":"Редактирование провайдера","mode":"Режим выбора ключа","modeOrder":"По порядку (Sequential)","modeRandom":"Случайно (Random)","modeWeighted":"По весам / бюджету","moveDown":"Переместить вниз","moveUp":"Переместить вверх","name":"Ротация API-ключей","noActivePools":"Нет активных пулов","noProviders":"Провайдеры не добавлены","noTrafficYet":"Трафик пока не зафиксирован","notRegistered":"не зарегистрирован","notSecretShape":"сохранено, но значение не похоже на API-ключ — проверьте опечатки","pauseKey":"Приостановить ключ в ротации","pausedBudget":"приостановлен","poolActive":"Пул активен","poolDisabled":"Пул отключён","poolEmpty":"В пуле нет активных ключей","poolExhausted":"пул исчерпан — все ключи охлаждаются","poolName":"Имя пула провайдера","proactiveGuardHint":"Заранее ставить ключи на паузу при приближении к квоте или заголовку Retry-After до получения 429","proactiveGuardLabel":"Превентивная защита от лимитов (Rate-Limit Guard)","provider":"Провайдер","providerActive":"Активен","providerCatalogUnavailable":"Список провайдеров недоступен","providerDisabled":"Отключён","providerName":"Имя провайдера (например openai, openrouter)","providerPlaceholder":"openai","providerRemoved":"Провайдер удалён","providerType":"Тип провайдера","providersTitle":"Провайдеры и их ключи","quotaExhausted":"Квота исчерпана","quotaResetIn":"Сброс через {time}","rateLimit":"Превышен лимит запросов","readOnly":"Настройки доступны только для чтения.","recentFailures":"Недавние сбои ({n})","removeKey":"Удалить ключ","removeProvider":"Удалить провайдера","resetAll":"Сбросить статистику и кулдауны","resetAllSuccess":"Статистика и кулдауны успешно сброшены","resetCooldown":"Сбросить охлаждение","resetCooldowns":"Сбросить все кулдауны","resetSuccess":"Кулдауны ключей сброшены","resetting":"Сброс…","resumeKey":"Возобновить ротацию ключа","retestBroken":"Повторный тест","retestFail":"повторный тест не пройден — ключ всё ещё не работает","retry":"Повторить","retryCount":"Попыток повтора","retryInterval":"Интервал повтора (мс)","rotationMode":"Режим ротации","rotationSequential":"Последовательный (Round-Robin)","rotationWeighted":"Взвешенный (Weighted)","routingStrategyLabel":"Стратегия маршрутизации","routingStrategyLeastLoaded":"Минимальная нагрузка (по параллелизму)","routingStrategyLowestLatency":"Минимальная задержка (p95)","routingStrategyRoundRobin":"Круговой перебор (Round-Robin, по умолчанию)","rpmTitle":"запросов/мин: {u} использовано, {r} осталось","save":"Сохранить настройки","saveRefused":"Хост отклонил это сохранение. Ваш черновик сохранён; сбросьте его для загрузки актуальных настроек.","saveUnconfirmed":"Не удалось подтвердить результат сохранения. Ваш черновик сохранён; обновите страницу перед повторной попыткой.","saved":"Настройки сохранены","saving":"Сохранение…","scheduleDays":"Расписание ротации (дней, 0=выкл.)","secondsAgo":"{n} с назад","sectionBackup":"Резервные копии и снимки","sectionBackupDesc":"Экспорт и импорт пулов провайдеров и создание полных снимков конфигурации плагина.","sectionFailover":"Триггеры отказа и коды ошибок","sectionFailoverDesc":"Выбор условий и ошибок, вызывающих автоматическое переключение на следующий доступный ключ.","sectionStats":"Здоровье пула и телеметрия","sectionStatsDesc":"Телеметрия активных пулов ключей в реальном времени, доступные учётные данные и статус переключения.","sectionTiming":"Тайминги и расписание ротации","sectionTimingDesc":"Настройка длительности периода охлаждения (cooldown) и окон периодической ротации.","selectProvider":"Выбрать провайдера {p}","selfHealingHint":"Периодическая проверка бесплатной моделью для возврата вышедших из строя ключей (0 — отключено)","selfHealingLabel":"Интервал автовосстановления (мин)","settingsChanged":"Служба настроек изменилась. Сбросьте этот черновик и обновите страницу перед сохранением.","snapshotExport":"Снимок ⬇","snapshotImport":"Восстановить","sortUsage":"Сортировать по нагрузке","sparklineLatency":"Тренд задержки","sparklineTraffic":"Тренд трафика","statHealthy":"Исправны / Готовы","statKeys":"Всего ключей","statPools":"Настроенных пулов","statRequests":"запросов","status":"Статус","statusAvailable":"Доступен","statusCooldown":"Кулдаун","statusDisabled":"Отключён","statusExhausted":"Исчерпан","statusFailed":"Ошибка","strategy":"Стратегия failover","subtitle":"Ротация API-ключей по провайдерам: пулы ключей, автоматическое переключение при исчерпании квот/лимитов, охлаждение и восстановление.","switchCodes":"Коды переключения (через запятую)","switchCount":"Переключений: {n}","switchesNone":"переключений пока не было","switchesSome":"переключений: {n} · последнее: {reason}, {ago}","testAll":"Проверить все ключи","testFail":"СБОЙ","testKey":"Проверить ключ","testOk":"OK","testSuccess":"Ключ валиден: ответ за {time}мс","testing":"Тестирование…","testingAllProgress":"Проверка {n} из {total}…","title":"Ротация API-ключей (dsh-key-rotation)","totalCalls":"Всего вызовов: {n}","totalErrors":"Всего сбоев: {n}","totalRequestsTitle":"всего запросов","unavailableDesc":"Хост не предоставил пространство настроек dsh-key-rotation. Откройте «Настройки» заново или проверьте, включён ли плагин.","unavailableTitle":"Мост настроек недоступен","undo":"Отменить","undoKey":"Ключ удалён","undoProvider":"Провайдер удалён","updateAvailable":"Доступно обновление","updateCheck":"Проверить обновления","updateFailed":"Сбой обновления","updateNone":"Установлена актуальная версия","updateRestart":"Обновление установлено. Перезапустите DSH для применения.","updateRun":"Обновить сейчас","updateRunning":"Обновление…","usedAgo":"{ago} назад","weight":"Вес ключа","weightHint":"вес в round-robin: сколько раз ключ участвует в цикле (1 = равная доля)"},"keyRotation":{"bulkImport":"Пакетный импорт","bulkImportBtn":"Импортировать ключи","bulkImportCancel":"Отмена","bulkImportDesc":"Вставьте API-ключи построчно, в формате .env (KEY=value) или CSV (KEY, вес):","bulkImportSuccess":"Импортировано ключей: {n}","currentVersion":"Текущая версия","keyPaused":"Приостановлен","keyRevoked":"Отозван (401)","latestVersion":"Последняя версия","pauseKey":"Приостановить ключ в ротации","resumeKey":"Возобновить ротацию ключа","sparklineLatency":"Тренд задержки","sparklineTraffic":"Тренд трафика","updateAvailable":"Доступно обновление","updateCheck":"Проверить обновления","updateFailed":"Сбой обновления","updateNone":"Установлена актуальная версия","updateRestart":"Обновление установлено. Перезапустите DSH для применения.","updateRun":"Обновить сейчас","updateRunning":"Обновление…"}}
@@ -1 +1 @@
1
- {"dsh-clinebot":{"accounts.active_badge":"Активен","accounts.add_btn":"Добавить аккаунт","accounts.apiBase":"Базовый URL API","accounts.apiKey":"API-ключ","accounts.cancel":"Отмена","accounts.cooldown":"Охлаждение: {s}с","accounts.delete":"Удалить","accounts.delete_confirm":"Удалить аккаунт «{name}»?","accounts.desc":"Управление учётными записями и API-ключами провайдеров для ClineBot.","accounts.edit":"Редактировать","accounts.empty":"Нет настроенных аккаунтов. Добавьте первый аккаунт выше.","accounts.env_placeholder":"Имя переменной окружения (напр. CLINE_API_KEY)","accounts.label_placeholder":"Название аккаунта (напр. Рабочий)","accounts.model":"Модель по умолчанию","accounts.pin_btn":"Сделать основным","accounts.pinned_badge":"Основной","accounts.provider":"Провайдер","accounts.quota":"Остаток квоты","accounts.rateLimit":"Лимит запросов","accounts.save":"Сохранить аккаунт","accounts.status":"Статус","accounts.title":"Аккаунты ClineBot","badge.key_missing":"Ключ отсутствует","badge.key_ok":"Ключ ✓ ({source})","badge.not_registered":"Не зарегистрирован","badge.offline":"Узел недоступен","badge.online":"Узел онлайн ({latency} мс)","badge.registered":"Зарегистрирован в DSH ({count} моделей)","diag.desc":"ClineBot автоматически регистрируется в моделях DSH при настройке ключа. Вы можете выполнить проверку связи или принудительную синхронизацию.","diag.resync_btn":"Принудительно синхронизировать с DSH","diag.resynced_msg":"Провайдер синхронизирован с моделями DSH ({count} моделей)","diag.resyncing":"Синхронизация…","diag.smoke_btn":"Выполнить экспресс-тест (Ping)","diag.smoke_ok":"Экспресс-тест пройден успешно! Задержка: {latency} мс","diag.smoke_testing":"Тестирование…","diag.title":"⚡ Диагностика и авторегистрация","diag.unregister_btn":"Снять регистрацию в DSH","diag.unregistered_msg":"Провайдер удалён из моделей DSH","diag.unregistering":"Удаление…","header.sub":"Подключение моделей подписки ClinePass ($9.99/мес). Совместимость с OpenAI API, автоматическое отслеживание скользящих лимитов и мгновенная авторегистрация в DSH.","header.title":"Провайдер ClineBot (ClinePass)","key.desc":"Ключ сохраняется непосредственно в хранилище учётных данных DSH (~/.dsh/.credentials.yaml) и никогда не отображается в открытом виде в конфигурациях.","key.empty_err":"Пожалуйста, введите API-ключ перед сохранением","key.env_label":"Имя переменной окружения: ","key.get_key":"Получить ключ в консоли app.cline.bot ↗","key.hide":"Скрыть","key.invalid":"✗ Ошибка проверки ключа: {error}","key.login_fast":"🚀 Быстрый вход через веб","key.login_fast: ":"🚀 Быстрый вход через веб","key.login_waiting":"Ожидание авторизации в браузере…","key.placeholder_empty":"Вставьте ключ ClinePass (cline_...)","key.placeholder_has":"••••••••••••••••••••••••","key.save":"Сохранить ключ","key.saved_msg":"Ключ сохранён в учётных данных DSH. Валидация: {status}","key.saving":"Сохранение…","key.show":"Показать","key.title":"🔑 Авторизация и API-ключ","key.verified":"✓ Ключ подтверждён: {email} ({plan})","key.verifying":"Проверка ключа в сервисе Cline…","models.all":"Все","models.auto_new":"Новинки","models.coding":"Только кодинг","models.desc":"Каталог синхронизируется напрямую с подпиской ClinePass. Модели новых тарифов подключаются автоматически. Снимите выбор, чтобы скрыть модель из выбора в чате DSH.","models.reasoning_tooltip":"Выбор интенсивности рассуждений в меню модели (Откл. / Низкая / Средняя / Высокая / Макс.)","models.recommended":"Рекомендуемые","models.star":"Избранное","models.sync":"🔄 Проверить модели тарифа","models.synced_at":"Синхронизировано: {date}","models.synced_msg":"Модели подписки синхронизированы: {total} ({discovered} обнаружено из ClinePass)","models.syncing":"Проверка…","models.th_active":"Вкл","models.th_caps":"Возможности","models.th_ctx":"Контекст","models.th_id":"ID модели","models.th_name":"Имя модели","models.title":"🎯 Выбор моделей в DSH (активно {enabled} из {total})","models.unverified":"Не синхронизировано (резервный каталог)","models.verified":"Подтверждено тарифом","models.vision":"Только с зрением","profiles.add":"Создать профиль","profiles.contextLimit":"Лимит контекста","profiles.default":"По умолчанию","profiles.delete":"Удалить профиль","profiles.desc":"Готовые наборы настроек, системных инструкций и разрешений.","profiles.maxTokens":"Максимум токенов","profiles.name":"Имя профиля","profiles.prompt":"Системный промпт","profiles.save":"Сохранить профиль","profiles.select":"Выбрать профиль","profiles.temperature":"Температура","profiles.title":"Профили настроек","quota.account":"Аккаунт: {email} · Тариф: {plan}","quota.desc":"Официальные скользящие лимиты запросов от ClinePass","quota.refresh":"Обновить квоты","quota.refreshed_msg":"Квоты подписки обновлены","quota.refreshing":"Обновление…","quota.remaining":"Осталось: {pct}%","quota.reset_at":"Сброс: {time}","quota.title":"📊 Квоты и лимиты запросов ClinePass","quota.used":"Использовано {pct}%","quota.window_5h":"⏱ 5-часовой скользящий лимит","quota.window_weekly":"📅 Еженедельный лимит","settings.advanced":"Дополнительно","settings.autoApprove":"Автоодобрение безопасных действий","settings.autoApproveDesc":"Автоматически выполнять команды чтения и безопасные операции без запроса подтверждения","settings.diffViewer":"Встроенный просмотрщик diff","settings.diffViewerDesc":"Отображать подробные различия кода перед применением правок","settings.general":"Основные","settings.loading":"Загрузка настроек ClineBot…","settings.models":"Модели","settings.retry":"Повторить","settings.saveFailed":"Не удалось сохранить настройки","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.security":"Безопасность","settings.soundNotifications":"Звуковые уведомления","settings.soundNotificationsDesc":"Воспроизводить сигнал при завершении длительной задачи или ожидании ввода","settings.subtitle":"Интеграция автономного кодинг-ассистента ClineBot в DeepSeek Harness.","settings.telemetry":"Анонимная телеметрия","settings.telemetryDesc":"Отправлять отчёты о сбоях для улучшения стабильности","settings.title":"Настройки ClineBot","settings.unavailable":"Настройки ClineBot временно недоступны","stats.desc":"Локальный мониторинг запросов, сетевой задержки и расхода токенов через ClinePass.","stats.last_req":"Время последнего запроса","stats.latency":"Задержка последнего запроса","stats.requests":"Успешных / Всего запросов","stats.title":"📈 Телеметрия текущей сессии DSH","stats.tokens":"Оценочные токены сессии","status.connecting":"Подключение к ClineBot…","status.disconnected":"Связь с ClineBot отключена","status.error":"Ошибка инициализации ClineBot","status.idle":"Ожидание задачи","status.ready":"ClineBot готов к работе","status.running":"Выполняется задача ClineBot","subtitle":"Автономный агент ClineBot для глубокого рефакторинга и парного программирования","title":"ClineBot","tools.bash":"Выполнение команд терминала","tools.browser":"Управление браузером","tools.desc":"Разрешённые системные инструменты для выполнения задач агентом.","tools.disableAll":"Отключить все","tools.editor":"Умная правка кода","tools.enableAll":"Включить все","tools.fs":"Чтение и запись файлов","tools.mcp":"Внешние MCP-серверы","tools.title":"Инструменты ClineBot","update.available":"Доступно обновление: v{latestVersion} (текущая: v{currentVersion})","update.btn":"Обновить сейчас","update.checking":"Проверка обновлений…","update.done":"Успешно обновлено до v{version}! Перезапустите DSH для применения.","update.failed":"Ошибка обновления: {error}","update.up_to_date":"Актуальная версия","update.updating":"Обновление…"}}
1
+ {"@goodandready/dsh-clinebot":{"accounts.cancel_btn":"Отмена","accounts.delete_btn":"Удалить","accounts.last_failover":"Последний failover: {from} → {to} ({reason})","accounts.quota_used":"Использовано {pct}%","accounts.save_btn":"Сохранить аккаунт","models.apply_original_all":"⚡ Оригинальные лимиты","models.context_updated_msg":"Лимиты контекста модели обновлены и синхронизированы с DSH.","models.ctx_cancel":"Отмена","models.ctx_custom_placeholder":"Токены (например, 2000000)","models.ctx_default":"По умолчанию ({ctx})","models.ctx_edit":"Изменить контекстное окно","models.ctx_original":"Оригинал ({ctx} · {provider})","models.ctx_save":"Сохранить","models.ctx_tag_custom":"Кастом","models.ctx_tag_original":"Оригинал","models.custom_add_title":"Пользовательские модели","models.custom_btn_add":"Добавить модель","models.custom_btn_del":"Удалить","models.custom_id":"ID модели (например, anthropic/claude-3-7-sonnet)","models.custom_name":"Отображаемое имя (необязательно)","models.effort_auto":"Автоматическая глубина рассуждений","models.filter_all":"Все","models.filter_coding":"Кодинг","models.filter_disabled":"Отключённые","models.filter_recommended":"Рекомендуемые","models.filter_vision":"Зрение","models.reset_contexts_all":"↺ Сбросить контексты","models.search_placeholder":"Поиск моделей по названию, ID или описанию…","stats.cancel_reset":"Отмена","stats.confirm_reset":"Подтвердить сброс?","stats.errors429":"Ограничения частоты 429 (отказоустойчивость)","stats.reset_btn":"Сбросить статистику","stats.top_models":"Топ моделей по расходу токенов"},"dsh-clinebot":{"accounts.active_badge":"Активен","accounts.add_btn":"Добавить аккаунт","accounts.apiBase":"Базовый URL API","accounts.apiKey":"API-ключ","accounts.cancel":"Отмена","accounts.cancel_btn":"Отмена","accounts.cooldown":"Охлаждение: {s}с","accounts.delete":"Удалить","accounts.delete_btn":"Удалить","accounts.delete_confirm":"Удалить аккаунт «{name}»?","accounts.desc":"Управление учётными записями и API-ключами провайдеров для ClineBot.","accounts.edit":"Редактировать","accounts.empty":"Нет настроенных аккаунтов. Добавьте первый аккаунт выше.","accounts.env_placeholder":"Имя переменной окружения (напр. CLINE_API_KEY)","accounts.label_placeholder":"Название аккаунта (напр. Рабочий)","accounts.last_failover":"Последний failover: {from} → {to} ({reason})","accounts.model":"Модель по умолчанию","accounts.pin_btn":"Сделать основным","accounts.pinned_badge":"Основной","accounts.provider":"Провайдер","accounts.quota":"Остаток квоты","accounts.quota_used":"Использовано {pct}%","accounts.rateLimit":"Лимит запросов","accounts.save":"Сохранить аккаунт","accounts.save_btn":"Сохранить аккаунт","accounts.status":"Статус","accounts.title":"Аккаунты ClineBot","badge.key_missing":"Ключ отсутствует","badge.key_ok":"Ключ ✓ ({source})","badge.not_registered":"Не зарегистрирован","badge.offline":"Узел недоступен","badge.online":"Узел онлайн ({latency} мс)","badge.registered":"Зарегистрирован в DSH ({count} моделей)","diag.desc":"ClineBot автоматически регистрируется в моделях DSH при настройке ключа. Вы можете выполнить проверку связи или принудительную синхронизацию.","diag.resync_btn":"Принудительно синхронизировать с DSH","diag.resynced_msg":"Провайдер синхронизирован с моделями DSH ({count} моделей)","diag.resyncing":"Синхронизация…","diag.smoke_btn":"Выполнить экспресс-тест (Ping)","diag.smoke_ok":"Экспресс-тест пройден успешно! Задержка: {latency} мс","diag.smoke_testing":"Тестирование…","diag.title":"⚡ Диагностика и авторегистрация","diag.unregister_btn":"Снять регистрацию в DSH","diag.unregistered_msg":"Провайдер удалён из моделей DSH","diag.unregistering":"Удаление…","header.sub":"Подключение моделей подписки ClinePass ($9.99/мес). Совместимость с OpenAI API, автоматическое отслеживание скользящих лимитов и мгновенная авторегистрация в DSH.","header.title":"Провайдер ClineBot (ClinePass)","key.desc":"Ключ сохраняется непосредственно в хранилище учётных данных DSH (~/.dsh/.credentials.yaml) и никогда не отображается в открытом виде в конфигурациях.","key.empty_err":"Пожалуйста, введите API-ключ перед сохранением","key.env_label":"Имя переменной окружения: ","key.get_key":"Получить ключ в консоли app.cline.bot ↗","key.hide":"Скрыть","key.invalid":"✗ Ошибка проверки ключа: {error}","key.login_fast":"🚀 Быстрый вход через веб","key.login_fast: ":"🚀 Быстрый вход через веб","key.login_waiting":"Ожидание авторизации в браузере…","key.placeholder_empty":"Вставьте ключ ClinePass (cline_...)","key.placeholder_has":"••••••••••••••••••••••••","key.save":"Сохранить ключ","key.saved_msg":"Ключ сохранён в учётных данных DSH. Валидация: {status}","key.saving":"Сохранение…","key.show":"Показать","key.title":"🔑 Авторизация и API-ключ","key.verified":"✓ Ключ подтверждён: {email} ({plan})","key.verifying":"Проверка ключа в сервисе Cline…","models.all":"Все","models.apply_original_all":"⚡ Оригинальные лимиты","models.auto_new":"Новинки","models.coding":"Только кодинг","models.context_updated_msg":"Лимиты контекста модели обновлены и синхронизированы с DSH.","models.ctx_cancel":"Отмена","models.ctx_custom_placeholder":"Токены (например, 2000000)","models.ctx_default":"По умолчанию ({ctx})","models.ctx_edit":"Изменить контекстное окно","models.ctx_original":"Оригинал ({ctx} · {provider})","models.ctx_save":"Сохранить","models.ctx_tag_custom":"Кастом","models.ctx_tag_original":"Оригинал","models.custom_add_title":"Пользовательские модели","models.custom_btn_add":"Добавить модель","models.custom_btn_del":"Удалить","models.custom_id":"ID модели (например, anthropic/claude-3-7-sonnet)","models.custom_name":"Отображаемое имя (необязательно)","models.desc":"Каталог синхронизируется напрямую с подпиской ClinePass. Модели новых тарифов подключаются автоматически. Снимите выбор, чтобы скрыть модель из выбора в чате DSH.","models.effort_auto":"Автоматическая глубина рассуждений","models.filter_all":"Все","models.filter_coding":"Кодинг","models.filter_disabled":"Отключённые","models.filter_recommended":"Рекомендуемые","models.filter_vision":"Зрение","models.reasoning_tooltip":"Выбор интенсивности рассуждений в меню модели (Откл. / Низкая / Средняя / Высокая / Макс.)","models.recommended":"Рекомендуемые","models.reset_contexts_all":"↺ Сбросить контексты","models.search_placeholder":"Поиск моделей по названию, ID или описанию…","models.star":"Избранное","models.sync":"🔄 Проверить модели тарифа","models.synced_at":"Синхронизировано: {date}","models.synced_msg":"Модели подписки синхронизированы: {total} ({discovered} обнаружено из ClinePass)","models.syncing":"Проверка…","models.th_active":"Вкл","models.th_caps":"Возможности","models.th_ctx":"Контекст","models.th_id":"ID модели","models.th_name":"Имя модели","models.title":"🎯 Выбор моделей в DSH (активно {enabled} из {total})","models.unverified":"Не синхронизировано (резервный каталог)","models.verified":"Подтверждено тарифом","models.vision":"Только с зрением","profiles.add":"Создать профиль","profiles.contextLimit":"Лимит контекста","profiles.default":"По умолчанию","profiles.delete":"Удалить профиль","profiles.desc":"Готовые наборы настроек, системных инструкций и разрешений.","profiles.maxTokens":"Максимум токенов","profiles.name":"Имя профиля","profiles.prompt":"Системный промпт","profiles.save":"Сохранить профиль","profiles.select":"Выбрать профиль","profiles.temperature":"Температура","profiles.title":"Профили настроек","quota.account":"Аккаунт: {email} · Тариф: {plan}","quota.desc":"Официальные скользящие лимиты запросов от ClinePass","quota.refresh":"Обновить квоты","quota.refreshed_msg":"Квоты подписки обновлены","quota.refreshing":"Обновление…","quota.remaining":"Осталось: {pct}%","quota.reset_at":"Сброс: {time}","quota.title":"📊 Квоты и лимиты запросов ClinePass","quota.used":"Использовано {pct}%","quota.window_5h":"⏱ 5-часовой скользящий лимит","quota.window_weekly":"📅 Еженедельный лимит","settings.advanced":"Дополнительно","settings.autoApprove":"Автоодобрение безопасных действий","settings.autoApproveDesc":"Автоматически выполнять команды чтения и безопасные операции без запроса подтверждения","settings.diffViewer":"Встроенный просмотрщик diff","settings.diffViewerDesc":"Отображать подробные различия кода перед применением правок","settings.general":"Основные","settings.loading":"Загрузка настроек ClineBot…","settings.models":"Модели","settings.retry":"Повторить","settings.saveFailed":"Не удалось сохранить настройки","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.security":"Безопасность","settings.soundNotifications":"Звуковые уведомления","settings.soundNotificationsDesc":"Воспроизводить сигнал при завершении длительной задачи или ожидании ввода","settings.subtitle":"Интеграция автономного кодинг-ассистента ClineBot в DeepSeek Harness.","settings.telemetry":"Анонимная телеметрия","settings.telemetryDesc":"Отправлять отчёты о сбоях для улучшения стабильности","settings.title":"Настройки ClineBot","settings.unavailable":"Настройки ClineBot временно недоступны","stats.cancel_reset":"Отмена","stats.confirm_reset":"Подтвердить сброс?","stats.desc":"Локальный мониторинг запросов, сетевой задержки и расхода токенов через ClinePass.","stats.errors429":"Ограничения частоты 429 (отказоустойчивость)","stats.last_req":"Время последнего запроса","stats.latency":"Задержка последнего запроса","stats.requests":"Успешных / Всего запросов","stats.reset_btn":"Сбросить статистику","stats.title":"📈 Телеметрия текущей сессии DSH","stats.tokens":"Оценочные токены сессии","stats.top_models":"Топ моделей по расходу токенов","status.connecting":"Подключение к ClineBot…","status.disconnected":"Связь с ClineBot отключена","status.error":"Ошибка инициализации ClineBot","status.idle":"Ожидание задачи","status.ready":"ClineBot готов к работе","status.running":"Выполняется задача ClineBot","subtitle":"Автономный агент ClineBot для глубокого рефакторинга и парного программирования","title":"ClineBot","tools.bash":"Выполнение команд терминала","tools.browser":"Управление браузером","tools.desc":"Разрешённые системные инструменты для выполнения задач агентом.","tools.disableAll":"Отключить все","tools.editor":"Умная правка кода","tools.enableAll":"Включить все","tools.fs":"Чтение и запись файлов","tools.mcp":"Внешние MCP-серверы","tools.title":"Инструменты ClineBot","update.available":"Доступно обновление: v{latestVersion} (текущая: v{currentVersion})","update.btn":"Обновить сейчас","update.checking":"Проверка обновлений…","update.done":"Успешно обновлено до v{version}! Перезапустите DSH для применения.","update.failed":"Ошибка обновления: {error}","update.up_to_date":"Актуальная версия","update.updating":"Обновление…"}}