@goodandready/dsh-russian-lang 0.2.2 → 0.2.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -363,7 +363,7 @@ const makeLayout = (freq, localDict = new Set()) => {
363
363
 
364
364
 
365
365
  /** namespace -> { ключ: перевод } */
366
- const RU = {"agentTeams":{"action.openActivityPanel":"Открыть панель активности","activity.badgeAria":"Активность и история команд агентов, {count} записей команд","activity.collapse":"Свернуть панель активности","activity.dockRight":"Закрепить справа","activity.empty":"Нет активности команды","activity.float":"Переключиться на плавающую панель","activity.panelAria":"Панель активности команд агентов","activity.panelButton":"Панель активности","activity.title":"Активность команд агентов","archive.discardedLabel":"План отменен · Архивная история","archive.label":"Завершено · Архивная история","assignment.discarded":"План отклонён","assignment.empty":"Нет задач","assignment.label":"Капитан назначен","assignment.staged":"Запланировано","captain.name":"Капитан","captain.role":"Разделить · Делегировать · Синтезировать","captain.state.awaitingFeedback":"Ожидание отзыва","captain.state.collected":"Все полученные отчеты","captain.state.discarded":"Отменено","captain.state.settled":"Завершено","captain.state.staged":"Ожидает одобрения","captain.state.takeover":"Работаю над {tasks}","captain.state.waiting":"Ожидание отчетов","captain.state.working":"{count} активных","captain.summary":"Назначено {tasks} задач {members} участникам","captain.summary.awaitingFeedback":"Черновой вариант сохранен; ожидаем ваших указаний по доработке в чате","captain.summary.discarded":"План отклонён: {members} участников не созданы и {tasks} задач не выполнены","captain.summary.staged":"Запланировано {tasks} задач и {members} участников; ожидают утверждения","captain.summary.withTakeover":"Назначено {tasks} участникам · Капитан владеет {captainTasks}","card.memberCount":"{count} участников","delegation.aria":"Карта делегирования капитана","dependency.aria":"Цепочка зависимостей задач","dependency.hint.chain":"Наведите для подсветки зависимостей · Нажмите, чтобы закрепить","dependency.hint.parallel":"Нет зависимостей · Нажмите для подробностей","dependency.hint.pinned":"{taskId} закреплена · Esc для сброса","dependency.parallel":"Параллельные задачи","dependency.title":"Зависимости задач","format.listSeparator":",","member.model":"{model}","member.state.delivered":"Доставлено","member.state.failed":"Имеются сбои","member.state.left":"Покинул команду","member.state.notCreated":"Не создано","member.state.pending":"Ожидание","member.state.removed":"Удалено","member.state.staged":"В плане (не создан)","member.state.stopped":"Остановлено","member.state.unassigned":"Ожидание назначения","member.state.waiting":"Ожидание","member.state.working":"Работает","member.status.delivered":"Задачи выполнены","member.status.discarded":"План отклонён; участник не был создан","member.status.executing":"Работа над {taskId}","member.status.executingModel":"Работа над {taskId} · {model}","member.status.idle":"Готовы продолжить","member.status.settled":"Вся назначенная работа выполнена","member.status.staged":"Будет создан после одобрения","member.status.stopped":"Команда остановлена; требуется явное возобновление","member.status.unknown":"Статус неизвестен","member.status.waitingAssignment":"Ожидание назначения работы от капитана","member.status.waitingOn":"Ожидание {taskId} · {assignee}","member.status.waitingPrerequisite":"Ожидание выполнения предварительных условий","member.status.working":"Работа над назначенными задачами","members.collapse":"Свернуть","members.empty":"Пока нет участников; ожидаем, пока капитан соберёт команду","members.expand":"Развернуть","members.toggle":"Участники {count}","plan.addTask":"Добавить задачу","plan.adding":"Добавление…","plan.approve":"Одобрить и запустить","plan.approveConfirm":"Подтвердить запуск","plan.approveConfirmTitle":"Подтвердить запуск команды","plan.approveHint":"Одобрение создаёт {members} участников и планирует {tasks} задачи.","plan.approveTitle":"План готов?","plan.approveWarning":"Маршруты участников и зависимости нельзя редактировать здесь после запуска.","plan.approving":"Создание участников…","plan.badge":"Ожидание подтверждения","plan.cancel":"Отмена","plan.continue":"Вернуться в чат и исправить","plan.dependencies.count":"{count} зависимостей","plan.dependencies.none":"Нет зависимостей","plan.description":"Участники не были созданы, и задачи не были назначены. Отредактируйте черновик здесь или вернитесь в чат и сообщите Капитану, что нужно изменить.","plan.discard":"Отменить этот план","plan.discardConfirm":"Отменить план","plan.discardConfirmTitle":"Отменить этот план?","plan.discardWarning":"План будет завершён и заархивирован. Участники не были созданы, и задачи выполняться не будут.","plan.discarding":"Отмена…","plan.failed":"Операция не удалась: {message}","plan.feedbackHint":"Капитан спросит в чате. После вашего ответа он пересмотрит этот черновик и снова будет ждать одобрения.","plan.feedbackTitle":"Ожидание ваших указаний по исправлению","plan.flow.aria":"Процесс запуска команды","plan.flow.review":"Просмотреть план","plan.flow.run":"Начать работу","plan.flow.spawn":"Создать участников","plan.member.model":"Модель","plan.member.prompt":"Роль подсказки","plan.member.provider":"Провайдер","plan.member.reasoning":"Усилие на рассуждение","plan.member.reasoningHint":"Оставьте пустым для значения по умолчанию; принимает low, medium, high, xhigh и другие.","plan.member.role":"Роль","plan.member.roleFallback":"Роль не установлена","plan.members.count":"{count} участников","plan.members.empty":"Пока нет запланированных участников","plan.members.title":"Участники и маршруты моделей","plan.model.back":"Назад","plan.model.choose":"Выберите модель","plan.model.currentUnavailable":"{provider}/{model} (нет в текущем каталоге)","plan.model.defaultReasoning":"Усилия по умолчанию при рассуждении","plan.model.empty":"Нет доступных моделей","plan.model.loading":"Загрузка моделей…","plan.model.modelDefault":"Модель по умолчанию ({effort})","plan.model.partialFailure":"{count} каталогов провайдеров не удалось загрузить","plan.model.providerDefault":"Провайдер по умолчанию","plan.model.retry":"Повторить","plan.model.route":"Маршрут: {provider}/{model}","plan.model.triggerAria":"Выберите модель участника, текущая {model}, уровень усилий для рассуждений {effort}","plan.newTask":"Новая тема задачи","plan.newTaskLabel":"Добавить запланированную задачу","plan.pendingEdits":"Сохраните текущие изменения перед запуском команды.","plan.readySummary":"{members} участников · {tasks} задач · {links} зависимостей","plan.remove":"Удалить","plan.removeConfirm":"Подтвердите удаление","plan.removeWarning":"Удаление {task} приведет к пересчету зависимостей ниже по цепочке.","plan.removed":"Задача удалена","plan.returnToChat":"Вернуться в чат","plan.save":"Сохранить","plan.saved":"План сохранён","plan.saving":"Сохранение…","plan.task.assignee":"Исполнитель","plan.task.dependencies":"ID задач зависимостей (через запятую)","plan.task.dependenciesHint":"Например, task-1, task-2; циклы отклонены","plan.task.description":"Описание задачи","plan.task.subject":"Тема задачи","plan.task.unassigned":"Общий пул задач","plan.taskAdded":"Задача добавлена","plan.tasks.count":"{count} задач · {links} зависимостей","plan.tasks.empty":"Нет запланированных задач","plan.tasks.title":"Задачи и зависимости","plan.title":"Проверка плана перед запуском","plan.unsaved":"Не сохранено","progress.aria":"Общий прогресс команды","progress.blocked":"■ Ожидание {count}","progress.delivered":"■ Доставлено {count}","progress.running":"■ В процессе {count}","progress.title":"Общий прогресс","task.assignee.unclaimed":"Невостребованные","task.detail.completed":"Завершено и доставлено","task.detail.noDownstream":"Нет последующих задач","task.detail.noPrerequisite":"Нет требований; готовы начать","task.detail.notRun":"План отменён; задача не была выполнена","task.detail.ready":"Предварительные условия выполнены; можно начинать","task.detail.unlocks":"Разблокирует {tasks} после завершения","task.detail.waitingOn":"Ожидание {tasks}","task.model":"Модель: {model}","task.runningAria":"Выполняется","task.status.cancelled":"Отменено","task.status.claimed":"Заявлено","task.status.completed":"Завершено","task.status.failed":"Не удалось","task.status.inProgress":"Выполняется","task.status.notRun":"Не запущено","task.status.pending":"Невостребованные","task.summary.allDelivered":"Все {count} задачи доставлены","task.summary.blocked":"{tasks} ожидают выполнения предварительных условий","task.summary.blockedAndRunning":"{tasks}{more} ожидают выполнения предварительных условий; другая работа уже начата","task.summary.discarded":"{count} запланированных задач отменено; ни одна не выполнена","task.summary.ended":"Итог: {completed} доставлено · {cancelled} отменено · {failed} не удалось","task.summary.failedSettled":"{count} ошибок; автоматический цикл остановлен","task.summary.more":"и ещё {count}","task.summary.ready":"{tasks} готовы к началу","task.summary.running":"{tasks} в процессе выполнения","task.summary.staged":"{count} запланированных задач ожидают утверждения","task.summary.waitingBreakdown":"Ожидание, пока капитан распределит работу","task.summary.waitingSchedule":"Ожидание следующего цикла планирования","team.discarded":"Отклонено","team.ended":"Завершено","team.stats.completed":"{completed}/{total} завершено","team.stats.members":"{count} участников","team.stats.messages":"{count} сообщений","team.stop":"Остановить команду","team.stopCancel":"Продолжать работу","team.stopConfirm":"Остановить команду","team.stopDescription":"Это отменяет {tasks} незавершённых задач и останавливает {members} работающих участников. Завершённые результаты сохраняются.","team.stopFailed":"Не удалось остановить команду: {message}","team.stopRequestFailed":"Сервер не смог остановить эту команду. Попробуйте снова.","team.stopTitle":"Остановить “{team}”?","team.stopped":"Остановлено","team.stopping":"Остановка…"},"betterSidebar":{"addPluginsBrowseMore":"Ещё плагины на GitHub (тема: dsh-better-sidebar)","addPluginsEmpty":"Подборки пока нет — опубликуйте свой плагин под темой на GitHub","addPluginsNoMatch":"Нет подходящих плагинов","addPluginsRecommended":"Рекомендуемые плагины","addPluginsSearch":"Поиск по названию или описанию плагина…","addPluginsTabCard":"Добавить плагины вкладок","addPluginsTabCardDesc":"Зарегистрировать новую страницу панели","addPluginsTabDesc":"Страницы панели (вкладки) расширяются плагинами. Плагины регистрируются через сервис ctx.betterSidebar; кнопка «Установить» копирует команду — вставьте её в терминал на машине с профилем DSH и выполните.","addPluginsViewerCard":"Добавить плагины предпросмотра","addPluginsViewerCardDesc":"Зарегистрировать просмотр нового типа файлов","addPluginsViewerDesc":"Просмотрщики файлов расширяются плагинами. Плагины регистрируются через сервис ctx.betterSidebar; кнопка «Установить» копирует команду — вставьте её в терминал на машине с профилем DSH и выполните.","addToConversation":"Добавить в диалог","binary":"Двоичный файл, предпросмотр недоступен","binaryNoPreview":"Этот тип файлов нельзя показать","branch":"Ветка","brokenSymlink":"Битая ссылка","browser":"Браузер","browserBack":"Назад","browserBlockedLoopback":"Заблокировано: локальные и внутренние адреса здесь открывать нельзя","browserBlockedScheme":"Заблокировано: разрешены только адреса http и https","browserEmbedAnyway":"Всё равно загрузить","browserEmbedBlocked":"{host} запрещает встраивание","browserEmbedBlockedDesc":"Сайт запрещает показывать себя внутри других страниц (X-Frame-Options / frame-ancestors), поэтому в панели он не откроется. Откройте его в обычном браузере.","browserForward":"Вперёд","browserGo":"Перейти","browserInvalid":"Неверный адрес","browserNoSandboxWarning":"Песочница выключена: страница работает с полными правами интерфейса (включить обратно можно в настройках)","browserOpenExternal":"Открыть в браузере","browserPlaceholder":"Введите адрес, например example.com","browserStart":"Введите адрес, чтобы начать (режим песочницы)","cancel":"Отмена","changes":"Изменения","changesClosePreview":"Закрыть просмотр","changesContext":"контекст","changesDiffOpenDesc":"Где открывать diff при разворачивании во вкладку","changesDiffOpenFloat":"Свободное окно","changesDiffOpenFloatDesc":"Плавающее окно по центру экрана — перемещайте, меняйте размер, держите поверх","changesDiffOpenPane":"Панель","changesDiffOpenPaneDesc":"Закреплено под исходной панелью (в стиле сплита VS Code)","changesDiffOpenTitle":"Открывать diff как","changesEdit":"Правка","changesError":"ошибка","changesFilterAll":"Все","changesFilterEmpty":"Нет операций этого типа","changesFold":"Строк: {count}… нажмите, чтобы развернуть","changesGitLens":"Git","changesLoadError":"Записи файлов сессии сейчас недоступны","changesOpenDiffTab":"Открыть во вкладке diff","changesPriorUnknown":"Предыдущее содержимое вне окна загрузки; показано как полностью добавленное","changesRead":"Чтение","changesResizePreview":"Изменить размер","changesRunning":"выполняется","changesSessionEmpty":"В этой сессии пока не было операций с файлами","changesSessionLens":"Сессия","changesWrite":"Запись","checkoutError":"Переключить ветку не удалось","cherryPickCommit":"Перенести коммит","cherryPickDesc":"Применить изменения «{subject}» к текущей ветке.","cherryPickTitle":"Перенос коммита","close":"Закрыть","closeLeftTabs":"Закрыть вкладки слева","closeOtherTabs":"Закрыть остальные вкладки","closePinnedTerminal":"Закрыть терминал","closeRightTabs":"Закрыть вкладки справа","collapse":"Свернуть панель","collapseBottomPanel":"Свернуть нижнюю панель","commit":"Закоммитить","commitError":"Коммит не удался","commitPlaceholder":"Сообщение коммита (Ctrl+Enter)","copied":"Скопировано","copy":"Копировать","copyAbsolute":"Копировать абсолютный путь","copyFullHash":"Копировать полный хеш","copyInstall":"Копировать команду установки","copyRelative":"Копировать относительный путь","copyShortHash":"Копировать короткий хеш","copySubject":"Копировать заголовок","diffAdded":"Добавлено","diffBinary":"Двоичный","diffCollapse":"Свернуть","diffDeleted":"Удалено","diffEmpty":"Текстовых изменений нет","diffExpand":"Показать ещё строк: {count}","diffLoadError":"Не удалось загрузить различия","diffRenamed":"Переименовано","discard":"Отменить изменения","discardDesc":"Изменения «{path}» в рабочем дереве будут отброшены без возможности вернуть.","discardTitle":"Отмена изменений","disconnected":"Терминал отключился, переподключаемся…","dockToSidebar":"Вернуть в боковую панель","download":"Скачать","downloadToView":"Скачать, чтобы посмотреть","edit":"Изменить","editor":"Редактор","editorEmptyHint":"Выберите файл в дереве или введите путь выше, чтобы открыть предпросмотр","editorExplorer":"Как открывать файлы","editorExplorerDesc":"Управляет поведением при открытии файлов","editorExplorerMerged":"В одном окне","editorExplorerMergedDesc":"Файлы сменяются в том же окне; новые окна открываются с деревом","editorExplorerSplit":"Раздельно","editorExplorerSplitDesc":"Окно без пути — это отдельный проводник (только дерево); каждый файл открывается своим окном (дерево пристыковано и по умолчанию закрыто)","editorPathPlaceholder":"Путь к файлу (от папки сессии или абсолютный), Enter — открыть","editorSearchNoResults":"Подходящих файлов нет","editorSearchPlaceholder":"Поиск файлов по имени…","editorSearchTruncated":"Слишком много совпадений — показана часть","editorTreeToggle":"Дерево файлов","error":"Не удалось загрузить","exited":"Процесс терминала завершился","expand":"Развернуть панель","expandBottomPanel":"Развернуть нижнюю панель","explorer":"Проводник","fenceDisableAction":"Отключить ограничение рабочей области","fenceErrorReason":"Этот путь находится за пределами рабочей области сессии и заблокирован защитным экраном","files":"Файлы","floatDropHint":"Отпустите, чтобы открыть в свободном окне","git":"Контроль версий","gitDetail":"Посмотреть изменения","hiddenFiles":"Скрытые файлы","history":"История","historyLoadError":"Не удалось догрузить историю","htmlNoSandboxWarning":"Песочница выключена: этот HTML работает с полными правами интерфейса (включить обратно можно в настройках)","jobDurationHours":"{hours} ч {minutes} мин","jobDurationMinutes":"{minutes} мин {seconds} с","jobDurationSeconds":"{seconds} с","jobHideOutput":"Скрыть вывод","jobKill":"Прервать","jobKillConfirm":"Нажмите ещё раз для подтверждения","jobKillError":"Прервать не удалось","jobNoOutput":"Вывода пока нет","jobNotReadYet":"Ждём, пока модель прочитает эту задачу; вывод появится здесь после вызова job_output","jobOutputError":"Не удалось прочитать вывод","jobOutputTruncated":"Вывод обрезан","jobStatusCompleted":"Завершена","jobStatusFailed":"Ошибка","jobStatusKilled":"Прервана","jobStatusRunning":"Выполняется","jobStatusStopping":"Останавливается","jobViewOutput":"Посмотреть вывод","jobs":"Фоновые задачи","jobsCount":"фоновых задач: {count}","jobsCountRunning":"фоновых задач: {count} · выполняется: {running}","loadMore":"Показать ещё","loading":"Загрузка…","mermaidError":"Ошибка рендеринга Mermaid","mermaidZoomHint":"Прокрутка для масштабирования · перетаскивание для перемещения · Esc для закрытия","mermaidZoomIn":"Увеличить","mermaidZoomOut":"Уменьшить масштаб","mermaidZoomReset":"Сбросить","moveToFreeWindow":"Переместить в свободное окно","newFile":"Новый файл","newTab":"Новая вкладка","newTerminal":"Новый терминал","noChanges":"Изменений нет","noSession":"Выберите диалог, чтобы пользоваться панелью","notRepo":"Эта папка не является репозиторием git","openEditor":"Открыть редактор","openExplorer":"Проводник","openFileNewTab":"Открыть в новой вкладке","openFileSide":"Открыть сбоку","openGit":"Панель git","openPlugin":"Открыть","openSubagent":"Задачи","openWithCursor":"Cursor","openWithExplorer":"Файловый менеджер","openWithMenu":"Открыть с помощью","openWithSettingsAdd":"Добавить","openWithSettingsCustomDesc":"Имя + шаблон URL (заполнитель {path}) + флаг семейства VSCode; в удалённом режиме только редакторы семейства VSCode могут открыть удалённый путь","openWithSettingsCustomTitle":"Пользовательские редакторы","openWithSettingsFamily":"Семейство VSCode","openWithSettingsFamilyDesc":"Этот редактор понимает URL-адреса VSCode (поддерживает открытие через SSH-удалённое подключение)","openWithSettingsInvalidHint":"Редакторы без имени или шаблоны без {path} / scheme:// не отображаются в меню","openWithSettingsName":"Имя","openWithSettingsRemove":"Удалить","openWithSettingsSshDesc":"Пусто = локальная рабочая область; с user@host или SSH-алиасом открыватели семейства VSCode переключаются на протокол vscode-remote/ssh-remote, а Файловый менеджер / Zed / пользовательские редакторы вне семейства VSCode скрываются из меню","openWithSettingsSshPlaceholder":"пользователь@хост или алиас SSH","openWithSettingsSshTitle":"SSH удаленный хост","openWithSettingsTemplate":"напр. cursor://file/{path}","openWithSshSuffix":"(SSH)","openWithVscode":"VS Code","openWithZed":"Zed","parent":"Родительская папка","pinAgentTerminal":"Закрепить терминал агента","pinOpenWith":"Закрепить в меню","pinTerminal":"Закрепить терминал","pinToGlobal":"Закрепить для всех","pinToWorkspace":"Закрепить в рабочей области","pinnedRailLabel":"Закреплённые терминалы","pinnedTerminalKindAgent":"Терминал агента","pinnedTerminalKindUi":"Терминал интерфейса","pinnedTerminalScopeGlobal":"Закреплено глобально","pinnedTerminalScopeWorkspace":"Закреплено в рабочей области","pinnedTerminalTooltip":"{kind} · {scope} · {cwd}","pluginBetterOverleafDesc":"Вкладка Overleaf для better-sidebar: синхронизация проектов и предпросмотр файлов","pluginBilingualReaderDesc":"Чтение PDF-статей в боковой панели DSH с контекстным переводом через LLM","pluginCodeNavDesc":"Навигатор по коду: подсветка синтаксиса, дерево символов (классы, методы, переменные) и поиск по файлу","pluginDocsPanelDesc":"Глобальные документы в боковой панели DSH: читайте свои заметки в формате Markdown из любого рабочего пространства — список файлов, структура, открытие в Chrome / VS Code и кнопки копирования; директория документов настраивается (по умолчанию ~/.dsh/docs)","pluginEgoBrowserDesc":"Браузер агента для DeepSeek Harness: 32 инструмента ego_* управляют реальным Chromium, с нативной боковой панелью \"ego browser\", которая предоставляет живой просмотр каждой страницы, посещаемой агентом — вы можете кликать, перетаскивать и печатать, чтобы взять управление на себя. Регистрирует вкладку автоматически, если присутствует better-sidebar, в противном случае переходит на плавающий пузырь.","pluginFlowglassDesc":"Граф потока живого сеанса с тремя полосами для пользователя, ассистента и вызовов инструментов, а также параллельными группами, ветвями под-агентов, детализацией и текущим статусом; регистрирует вкладку Flowglass в нативном режиме при установке better-sidebar и сохраняет отдельный выдвижной ящик в качестве резерва.","pluginGitForgeDesc":"Вкладка Git Forge: библиотека аккаунтов GitHub/Gitea (и других форков) + права на проекты + политика жесткого пуша; токены остаются в локальных секретах (никогда в контексте модели); инструмент GitForge только для чтения и помощник для HTTPS-учетных данных агента","pluginGitRemotesDesc":"Вкладка Git Remotes: ветка, upstream, отставание и опережение, fetch (с необязательным prune), pull только ff-only и push после подтверждения во вкладке. Не заменяет встроенную вкладку git со стадированием и коммитами, не предлагает force-push и не даёт модели инструмент автопуша","pluginGithubWorkbenchDesc":"Вкладка GitHub Workbench: дерево репозитория, Issues, PR и Actions с полной поддержкой управления","pluginMdExportDesc":"Добавляет кнопку «Экспорт» на панель Markdown в better-sidebar: рендерит текущий .md в автономный HTML или экспортирует в PDF","pluginNotLoaded":"Плагин не загружен, вкладка недоступна:","pluginOfficeDesc":"Предпросмотр офисных файлов (.docx / .xlsx / .pptx) в редакторе better-sidebar; тяжёлые библиотеки рендеринга держатся вне основного бандла","pluginSentinelDesc":"Пробуждение агента по условию: датчики файлов, процессов, портов, http, команд и вебхуков будят спящие сессии, когда условие сработало; добавляет вкладку Sentinel с общей таблицей наблюдений","pluginServerDeckDesc":"Панель серверов: карточки хостов с мониторингом CPU/памяти/диска и встроенным терминалом xterm.js","pluginSidebarQaDesc":"Выделил и спросил: выделите текст в диалоге, задайте вопрос в правой панели — откроется отдельная сессия-уточнение в той же рабочей папке; быстрая модель без рассуждений сжимает основной контекст и подставляет его вместе с цитатой, не прерывая основной диалог. Уточнения вкладываются, продолжаются и уходят в архив","pluginSidenoteDesc":"Боковой чат в стиле Codex + аннотации к выделенному тексту","pluginSshTunnelDesc":"Вкладка SSH-туннеля: инвентарь нескольких хостов + гранты для каждого проекта + локальные секреты; инструмент SSHManager (стратегии выполнения/ SFTP/сеансов); центральный интерактивный терминал и двухпанельный SFTP","pluginSuhuangScrollDesc":"Интеграция Suhuang Scroll Runtime с настройками DSH и better-sidebar для конфигурации моделей и тестов","pluginTurnReviewDesc":"Человеческий шлюз на только что завершённом ходе: Одобрить / Запросить изменения по пути с необязательным комментарием; пути сгруппированы по основной сессии / суб-агенту / без атрибуции; встроенное сравнение снимка и текущего состояния перед принятием решения. Без форка, без /rewind.","pluginVideoPreviewDesc":"Просмотр видео (.mp4/.webm/.mov/.mkv/.avi и других) прямо в редакторе better-sidebar через отдельный маршрут /video с поддержкой HTTP Range (206) — перемотка работает, ограничение mediaLimit в 20 МБ не действует","preview":"Предпросмотр","produced":"Создано","producedOpen":"Открыть в панели","referenceFile":"@файл","refresh":"Обновить","refreshUnsavedConfirm":"Файл изменился на диске. Обновление приведёт к потере несохранённых изменений. Продолжить?","retry":"Повторить","revertCommit":"Откатить коммит","revertDesc":"Создать в текущей ветке новый коммит, отменяющий «{subject}».","revertTitle":"Откат коммита","sandboxRestore":"Вернуть песочницу","sandboxStatusOn":"Песочница включена · страницы не видят данные интерфейса и локальные файлы; входы и сторонние куки могут не работать","sandboxUnlock":"Временно отключить (небезопасно)","save":"Сохранить","saveFailed":"Сохранить не удалось","saved":"Сохранено","settingsBottomTerminalDesc":"При первом разворачивании нижней панели в сессии открывать в ней новый терминал (ограничение на число терминалов сохраняется; по умолчанию включено)","settingsBottomTerminalTitle":"Открывать терминал при первом разворачивании нижней панели","settingsBrowserHttpDesc":"Если включено, клик по внешней http-ссылке в диалоге или интерфейсе открывает панель (страницы плагинов с urlTarget имеют приоритет); Ctrl/Cmd+клик всегда в обход","settingsBrowserHttpTitle":"Открывать http-страницы в панели","settingsBrowserHttpsDesc":"Если включено, клик по внешней https-ссылке открывает панель. По умолчанию выключено: большинство https-сайтов запрещают встраивание, поэтому системный браузер удобнее","settingsBrowserHttpsTitle":"Открывать https-страницы в панели","settingsBrowserLinksDesc":"Если включено, клик по внешней ссылке открывает панель, а не новое окно; http и https управляются отдельными переключателями ниже; Ctrl/Cmd+клик всегда в обход","settingsBrowserLinksTitle":"Открывать внешние ссылки из диалога в панели","settingsBrowserLoopbackDesc":"Разделённый запятыми список разрешённых адресов локальной петли (например, localhost:5174 или 127.0.0.1:8080), которые может посещать боковой браузер; пустое значение блокирует все локальные адреса по умолчанию. Песочница всё ещё применяется — страницы не могут читать данные GUI.","settingsBrowserLoopbackPlaceholder":"например, localhost:5174, 127.0.0.1:8080","settingsBrowserLoopbackTitle":"Разрешенные локальные адреса","settingsBrowserSandboxDesc":"С выключенной песочницей любой открытый сайт работает в том же origin, что и интерфейс: он может читать данные сессии и действовать от вашего имени. Включайте только для полностью доверенных сайтов","settingsBrowserSandboxTitle":"Отключить песочницу браузера (небезопасно)","settingsConflict":"Настройку изменили в другом окне — повторите","settingsCustomCssDesc":"Стили добавлены в конце страницы (поздние в каскаде выигрывают при равенстве; используйте !important для переопределения встроенных переменных, записанных через JS)","settingsCustomCssPlaceholder":"/* например, зарезервировать 36px для оболочки с нарисованной вручную строкой заголовка */\nhtml[data-dsh-title-bar-height=\"36\"] {\n --dsh-title-bar-strip: 36px !important;\n}","settingsCustomCssTitle":"Пользовательский CSS","settingsDone":"Готово","settingsFenceDesc":"Если включено, файловые функции боковой панели ограничены рабочей областью сессии (по умолчанию); если выключено — доступен любой файл на хосте","settingsFenceTitle":"Ограничение рабочей области (Fence)","settingsFontFamilyDesc":"Своя гарнитура терминала (CSS-стек вида \"JetBrains Mono\", monospace; пусто — моноширинный шрифт темы)","settingsFontFamilyPlaceholder":"\"JetBrains Mono\", monospace","settingsFontFamilyTitle":"Шрифт терминала","settingsFontSizeDesc":"Размер шрифта терминала в пикселях (9–32, по умолчанию 13)","settingsFontSizeSuffix":"px","settingsFontSizeTitle":"Размер шрифта терминала","settingsGeneralTitle":"Общие","settingsHtmlDefaultUnsafeDesc":"Если включено, каждый новый предпросмотр HTML открывается без песочницы (тот же origin, что и интерфейс — доступны файлы сессии и внутренние API); вернуть песочницу можно одним нажатием в строке состояния","settingsHtmlDefaultUnsafeTitle":"Открывать предпросмотр HTML без песочницы (небезопасно)","settingsHtmlSandboxDesc":"С выключенной песочницей просматриваемый HTML работает в том же origin, что и интерфейс: он может читать файлы сессии, локальное хранилище и вызывать внутренние API. Включайте только для полностью доверенных файлов","settingsHtmlSandboxTitle":"Отключить песочницу предпросмотра HTML (небезопасно)","settingsIntro":"Что показывает боковая панель и как она себя ведёт","settingsJobsDesc":"Разворачивать панель и открывать страницу задач при появлении новой фоновой задачи в текущем диалоге (срабатывает на каждую); выключите, чтобы открывать вручную","settingsJobsTitle":"Открывать страницу задач при новой фоновой задаче","settingsNav":"Боковая панель","settingsOpenDesc":"Разворачивать панель для совсем новых диалогов; у существующих сохраняется своя раскладка","settingsOpenPathDesc":"Открывать файловые ссылки из диалога (строки инструментов, созданные файлы, упоминания) в редакторе панели, а не в системном приложении","settingsOpenPathTitle":"Открывать файлы из диалога в панели","settingsOpenTitle":"Разворачивать для новых диалогов","settingsOpenToolsDesc":"Когда включено, модель может активно открывать файлы, папки и HTTP(S)-страницы в боковой панели через инструмент sidebar_open (по умолчанию отключено).","settingsOpenToolsTitle":"Внедрите инструмент sidebar-open для модели","settingsPopup":"Настройки функции","settingsPopupDesc":"Параметры для «{feature}»","settingsSaveFailed":"Не удалось сохранить","settingsSchemeAutoDesc":"Консервативный: учитывается только стандартный API Window Controls Overlay (реальная высота наложения заголовка); обычные веб-среды не изменяются","settingsSchemeAutoTitle":"Автоопределение","settingsSchemeCustomDesc":"Полный контроль: вставьте пользовательский CSS (может переопределять встроенные стили) и задайте расстояние смещения строки заголовка","settingsSchemeCustomTitle":"Настроить","settingsSchemeDetectedSuffix":"обнаружено","settingsSchemeWebDesc":"Явно указать официальный веб-интерфейс: без адаптации вообще (даже стандартной геометрии WCO)","settingsSchemeWebTitle":"Официальный сайт DSH","settingsShellArgsDesc":"Явные аргументы командной оболочки, разделённые пробелами; если не пусто, полностью заменяют значения по умолчанию (тот же принцип, что и у shellArgs в yaml)","settingsShellArgsPlaceholder":"напр. -l (пусто = по умолчанию)","settingsShellArgsTitle":"Аргументы командной оболочки","settingsShellDesc":"Оболочка, запускаемая для терминалов UI и моделей (абсолютный путь или имя исполняемого файла). Пустое значение сохраняет устаревший порядок: shell из конфига yaml → $SHELL / логин-шелл / Windows powershell.exe. Применяется к терминалам, открытым после этого.","settingsShellPlaceholder":"например, /bin/zsh (пусто = автоматически)","settingsShellTitle":"Путь к оболочке","settingsSubagentDesc":"Разворачивать панель и открывать страницу задач, когда в диалоге появляется субагент; выключите, чтобы открывать вручную","settingsSubagentTitle":"Открывать страницу задач при появлении субагента","settingsTabsTitle":"Содержимое панели","settingsTitleBarDesc":"Оставлять место под системный заголовок окна Windows справа сверху, чтобы кнопки и содержимое панели располагались ниже, а не под ним","settingsTitleBarStripDesc":"Высота полосы заголовка: на сколько пикселей опускаются кнопки и содержимое панели (0–120, по умолчанию 40)","settingsTitleBarStripTitle":"Смещение","settingsTitleBarTitle":"Режим совместимости с заголовком окна","settingsToolsDesc":"Если включено, модель может создавать терминалы в панели и работать в них через восемь инструментов terminal_* (по умолчанию выключено)","settingsToolsTitle":"Дать модели инструменты терминала","settingsViewerCatchAll":"На всё остальное: любой файл","settingsViewersTitle":"Просмотрщики файлов","settingsWidthDesc":"Какую долю ширины окна занимает панель в новых диалогах (20–60)","settingsWidthSuffix":"%","settingsWidthTitle":"Ширина по умолчанию","showInFolder":"Показать в папке","sideChat":"Боковой чат (бета)","sideChatBlockCollapse":"Свернуть","sideChatBlockCollapseAria":"Свернуть","sideChatBlockDone":"Готово","sideChatBlockExitCode":"Код завершения {code}","sideChatBlockExpand":"Развернуть {hidden} строк","sideChatBlockExpandAria":"Развернуть ещё {hidden} строк","sideChatBlockFailed":"Сбой","sideChatBlockFiles":"Файлов: {count}","sideChatBlockNoOutput":"(нет вывода)","sideChatBlockRunning":"Выполняется","sideChatBlockSignal":"Завершено по сигналу: {signal}","sideChatBlockWindow":"Показано {shown} из {total} строк","sideChatCancel":"Остановить","sideChatCancelTitle":"Прервать текущий ход (запланированные задачи сохраняются)","sideChatClose":"Закрыть тему","sideChatCloseTitle":"Освободить агента потока (история сохраняется)","sideChatComposerPlaceholder":"Задать уточняющий вопрос…","sideChatConnConnecting":"Подключение…","sideChatConnDisconnected":"Соединение разорвано","sideChatConnReconnect":"Переподключиться","sideChatConnReconnectAction":"Подключиться сейчас","sideChatConnRecovered":"Соединение восстановлено","sideChatConnRestartAction":"Перезапустить соединение","sideChatCreating":"Создание побочного диалога…","sideChatEmpty":"Без посторонних разговоров","sideChatEmptyDesc":"Каждый побочный диалог открывается в отдельной вкладке на панели — он наследует контекст текущей сессии и никогда не попадает в основной разговор","sideChatError":"Ошибка бокового чата: {message}","sideChatFirstPlaceholder":"Задайте первый вопрос — контекст сохранён…","sideChatInjection":"Контекст внедрен","sideChatNew":"Новая тема","sideChatNoTurn":"Сохранение доступно после первого завершённого хода","sideChatPendingDrop":"Последний неотвеченный вопрос не будет включен в сохраненную сессию","sideChatRetry":"Повторить","sideChatSave":"Сохранить как новую сессию","sideChatSaveTitle":"Повысьте этот тред до уровня отдельной сессии в основном списке сессий","sideChatSaved":"Сохранено как новая сессия","sideChatSend":"Отправить","sideChatThink":"Думаю","sideChatThinking":"Глубокое погружение…","sideChatThreads":"Переключить ветку / новая","sideChatTurnUsage":"Вход: {input} токенов · Выход: {output} токенов","sideChatUntitled":"Новая тема","splitDown":"Разделить вниз","splitLeft":"Разделить влево","splitRight":"Разделить вправо","splitUp":"Разделить вверх","stage":"В индекс","stageAll":"Всё в индекс","staged":"В индексе","statusTruncated":"Слишком много изменений; показаны первые 2,000 записей","subagent":"Задачи","subagentCount":"субагентов: {count}","subagentCountRunning":"субагентов: {count} · работает: {running}","subagentDiagCorrupt":"Повреждён","subagentDiagUnavailable":"Недоступен","subagentDiagUnsupported":"Не поддерживается","subagentEmpty":"Субагентов нет","subagentEmptyDesc":"Здесь появятся субагенты, запущенные основным агентом","subagentInactive":"Простаивает","subagentMainAgent":"Основной агент","subagentModeContinuable":"С продолжением","subagentModeOneShot":"Разовый","subagentRunning":"Работает","subagentThinking":"Думает…","terminal":"Терминал","terminalConnectFailed":"Терминал не смог подключиться несколько раз подряд","terminalDepsFailed":"Не удалось загрузить зависимость терминала node-pty","terminalDepsHint":"Выполните команду ниже в терминале на машине с DSH, чтобы починить, и повторите (версия node-pty должна совпадать с версией ядра DSH):","terminalDepsProfile":" (определён профиль: {profile})","terminalError":"Не удалось подключиться к терминалу","terminalLimit":"Достигнут предел терминалов (3)","terminalRetry":"Повторить","timeHoursAgo":"{n} ч назад","timeJustNow":"только что","timeMinutesAgo":"{n} мин назад","timeYesterday":"вчера","toc":"Содержание","truncation":"Файл слишком большой — показаны первые 512 КБ","unpinOpenWith":"Открепить","unpinTerminal":"Открепить","unsaved":"Не сохранено","unstage":"Из индекса","unstageAll":"Всё из индекса","unstaged":"Вне индекса","uploadCancelled":"Загрузка отменена","uploadDone":"Загружено {count} файл(ов)","uploadDropChat":"Перетащите в чат, чтобы добавить изображения","uploadDropHint":"Перетащите файлы/папки сюда для загрузки","uploadFailed":"Не удалось загрузить: {error}","uploadFailedUnknown":"Неизвестная ошибка","uploadFiles":"Загрузить файлы","uploadFolder":"Загрузить папку","uploadHere":"Загрузите сюда","uploadProgress":"Загружено {done}/{total}: {name}","uploadTo":"Загрузить в {dir}","uploadTooLarge":"Файл слишком большой (превышен лимит загрузки)","uploadingTo":"Загрузка в {dir}…","viewCommitDiff":"Посмотреть изменения коммита","viewerBinary":"Скачивание файла","viewerCode":"Код","viewerHtml":"HTML","viewerImage":"Изображение","viewerMarkdown":"Markdown","viewerPdf":"PDF","worktree":"Рабочее дерево"},"command":{"listbox.aria":"Совпадения /{command}","notice.imagesUnsupported":"/{command} не принимает вложения-изображения — сначала удалите их","overlay.aria":"Параметры /{command}","search.aria":"Фильтр параметров","search.placeholder":"Поиск…","status.applying":"Применение…","status.empty":"Нет параметров","status.loading":"Загрузка параметров…"},"commandcode":{"accountSeparator":"────────────────────","accountTitle":"📊 {label}{badges}","activeBadge":" ✅ активен","barLine":" └ {bar} {pct}%","blockedInvalidKey":"⛔ API-ключ недействителен или истёк — сервер отклонил запросы (401); проверьте ключ аккаунта","blockedNetwork":"⚠️ Не удалось подключиться к Command Code — проверьте сеть или адрес API","blockedServiceUnavailable":"⚠️ Сервис Command Code временно недоступен (5xx); повторите позже","cooldownBadge":" ⏳ охлаждение, сброс {when}","costLine":" 💰 Расход {money} ({credits} кредитов)","creditsHeader":"── Кредиты ──────────────────────────","errorText":"Не удалось получить статистику Command Code: {message}","exceededWarning":" ⚠️ превышен!","fiveHourLine":" ⏱ 5-часовое {used} / {cap}{warn}","imageGate":"В сессии уже есть изображения, а модель {model} не поддерживает изображения; выберите модель с поддержкой зрения или удалите изображения из сессии.","invalidCredentialBadge":" ⛔ неверный ключ","monthlyLine":" 💳 В месяц {monthly} (куплено {purchased} / бесплатно {free})","noData":"(нет данных — проверьте API-ключ)","partialFailures":"⚠️ Сбои на некоторых эндпоинтах: {list}","planLine":" 📦 Тариф {name}{status}{period}","planPeriodSuffix":" · окончание периода: {date}","rateLimitBadge":" ⏳ лимит запросов (ожидание окна)","requestsLine":" 💬 Запросы {n} / сбоев {f} успешность {r}%","resetSuffix":"сброс {when}","title":"📊 Использование Command Code{account}","tokensLine":" 🔤 Токены {in} вход / {out} выход","unconfigured":" (API-ключ не настроен)","usageHeader":"── Запросы ──────────────────────────","weeklyLine":" 📅 Недельное {used} / {cap}{warn}","windowBarLine":" └ {bar} сброс {when}","windowsHeader":"── Использование окна ───────────────"},"common":{"back":"Назад","cancel":"Отмена","close":"Закрыть","collapse":"Свернуть","copied":"Скопировано","copy":"Копировать","delete":"Удалить","edit":"Изменить","expand":"Развернуть","load.failed":"Не удалось загрузить","loading":"Загрузка…","more":"Ещё","next":"Дальше","none":"Нет","ok":"ОК","previous":"Назад","retry":"Повторить","save":"Сохранить","search":"Поиск","skip":"Пропустить","submit":"Отправить","submitting":"Отправка…","truncated":"Обрезано","unknown":"Неизвестно"},"config-manager":{"about.authorLabel":"Author","about.cli.docs":"CLI documentation","about.cli.hint":"The GUI lives inside DSH — when DSH cannot start, the separately installed CLI (dsh-config-manager) is your first rescue tool: list snapshots / offline restore / one-click DSH reinstall, no DSH runtime needed. Install once and use it on any machine:","about.cli.title":"CLI Rescue Tool","about.docs":"Documentation","about.dshVersion":"DSH {version}","about.issues":"Issues","about.links":"Links","about.loading":"Loading version info…","about.official":"Official","about.releaseNotes":"Release Notes","about.releaseNotes.allLoaded":"All releases loaded","about.releaseNotes.confirm":"Confirm","about.releaseNotes.empty":"No releases found.","about.releaseNotes.error":"Failed to load release notes. Please check your network connection or try again later.","about.releaseNotes.latest":"Latest","about.releaseNotes.loading":"Loading release notes…","about.releaseNotes.loadingMore":"Loading more releases…","about.releaseNotes.neverShow":"Don't show again","about.releaseNotes.noBody":"No description provided for this release.","about.releaseNotes.prerelease":"Pre-release","about.releaseNotes.retry":"Retry","about.releaseNotes.title":"Release Notes","about.releaseNotes.viewOnGithub":"View all releases on GitHub","about.releaseNotes.viewSingleOnGithub":"View on GitHub","about.repo":"GitHub Repository","about.retryStatus":"Retry","about.star":"⭐ Star on GitHub","about.subtitle":"Plugin info, author and feedback links","about.title":"About DSH Config Manager","about.version":"Version {version}","backupFiles.delete":"Delete","backupFiles.deleteConfirm":"Delete backup file \\«{name}\\»? This cannot be undone.","backupFiles.deleteConfirmTitle":"Delete backup file","backupFiles.download":"Download","backupFiles.empty":"No backup files yet. They appear here after a manual export or once scheduled backups are enabled.","backupFiles.error":"Failed to load backup files","backupFiles.hint":"All export artifacts (manual exports and scheduled backups) are managed here: download to your machine, import to restore, or delete. Scheduled backups auto-keep the latest 10.","backupFiles.import":"Import","backupFiles.inspect":"Inspect / Compare","backupFiles.inspectDiff":"Diff against this backup (read-only preview)","backupFiles.inspectEmpty":"This backup could not be analyzed (corrupt or unsupported format)","backupFiles.inspectGroup.changes":"Changes (will apply)","backupFiles.inspectGroup.conflicts":"Conflicts (need decision)","backupFiles.inspectGroup.others":"Others","backupFiles.inspectGroup.paths":"Path mappings (need handling)","backupFiles.inspectGroup.skipped":"Identical (nothing to do)","backupFiles.inspectItems":"Change details","backupFiles.inspectLoading":"Analyzing backup contents…","backupFiles.inspectSections":"Sections included","backupFiles.loading":"Loading backup files…","backupFiles.searchEmpty":"No matching backup files","backupFiles.searchPlaceholder":"Search by file name or note…","backupFiles.source.auto":"Scheduled","backupFiles.source.manual":"Manual","backupFiles.title":"Backup Files","backupSchedule.consecutiveFailures":"Scheduled backups failed {count} time(s) in a row — check the configuration (disk space / permissions / section export errors)","backupSchedule.customHint":"Runs a full backup once a week at the selected weekday and time (missed triggers are not backfilled)","backupSchedule.enabled":"Enable scheduled backups","backupSchedule.enabledHint":"When on, DSH backs up automatically on the cadence below; one run fires on every startup (skipped if less than 1h since the last run).","backupSchedule.error":"Failed to load scheduled backup settings","backupSchedule.hint":"Automatically export a full backup ZIP in the background on a fixed cadence (secrets are never included, never encrypted — use manual export for encryption). Config lives in sync/backup-schedule.json and migrates with the self section.","backupSchedule.interval":"Backup interval","backupSchedule.interval.12h":"Every 12 hours","backupSchedule.interval.24h":"Every 24 hours","backupSchedule.interval.6h":"Every 6 hours","backupSchedule.interval.7d":"Every 7 days","backupSchedule.interval.custom":"Custom (weekly at a fixed time)","backupSchedule.lastRun":"Last run","backupSchedule.loading":"Loading scheduled backup settings…","backupSchedule.never":"Never run","backupSchedule.runNow":"Back up now","backupSchedule.running":"Backing up…","backupSchedule.save":"Save settings","backupSchedule.saved":"Settings saved","backupSchedule.status.failed":"Failed","backupSchedule.status.skipped":"Skipped","backupSchedule.status.success":"Success","backupSchedule.title":"Scheduled Full Backups","backupSchedule.weekday.friday":"Friday","backupSchedule.weekday.monday":"Monday","backupSchedule.weekday.saturday":"Saturday","backupSchedule.weekday.sunday":"Sunday","backupSchedule.weekday.thursday":"Thursday","backupSchedule.weekday.tuesday":"Tuesday","backupSchedule.weekday.wednesday":"Wednesday","common.back":"Назад","common.cancel":"Отмена","common.close":"Закрыть","common.confirm":"Confirm","common.done":"Готово","common.loading":"Загрузка…","common.next":"Далее","common.retry":"Повторить","common.unknownError":"Неизвестная ошибка","error.hint":"Error messages are auto-redacted and never leak secrets.","error.title":"Operation failed","export.download":"Download backup file","export.encrypt":"Encrypt backup","export.encryptHint":"Encrypt the entire backup file with a password (AES-256-GCM). The password is used once and never written into the backup or any config file; it is required to unlock the backup on import.","export.excluded":"Excluded","export.fileName":"Custom file name","export.fileNameHint":"Leave empty to auto-name (dsh-config-<date>.zip); no need to type .zip — it is appended automatically. Letters, digits, spaces, — _ . only.","export.fileNameInvalid":"Invalid file name: letters, digits, spaces, — _ . only, no path separators.","export.group.unknown":"Other","export.includeSecrets":"Export secrets","export.includeSecretsHint":"Write the real secrets (credential values) into the backup. Secrets must be stored encrypted: checking this also checks «Encrypt backup»; unchecking «Encrypt backup» unchecks this.","export.included":"Included","export.mode.custom":"Custom Export","export.mode.customHint":"Select sections per group.","export.mode.quick":"Quick Export","export.mode.quickHint":"One-click export of recommended sections (portable, no device-specific data) for routine backups.","export.naming":"File name & note (optional)","export.note":"Note","export.noteHint":"The note is shown in the local backup list (and travels with the config backup) so you can tell exports apart.","export.notePlaceholder":"e.g. Full backup before migration / 2026-08 archive","export.password":"Backup encryption password","export.passwordConfirm":"Confirm password","export.passwordMismatch":"Passwords do not match","export.passwordRequired":"An encryption password is required when encrypting the backup","export.preview":"Preview export contents","export.previewSkipped":"{count} section(s) failed to export and were skipped","export.previewSummary":"Will package {sections} section(s), approx. {size} (no secrets)","export.previewing":"Counting…","export.run":"Start Export","export.running":"Exporting…","export.saved":"Saved to downloads: {name}","export.security":"Security options","export.selectionWarnings":"Device-specific sections may not apply on another machine:","import.analyzing":"Analyzing backup…","import.compatibility.fail":"Backup analysis failed: {reason}","import.compatibility.ok":"The backup can be imported","import.compatibility.score":"Compatibility score: {score}","import.compatibility.title":"Compatibility","import.confirm.encrypted":"The backup password will decrypt and restore {count} credential(s).","import.confirm.execute":"Confirm Import","import.confirm.warning":"Import modifies the current DSH configuration; a safety snapshot is created first and everything rolls back on failure.","import.conflicts.hint":"These items already exist on this machine and differ from the backup. Decide per item.","import.conflicts.keepCurrent":"Keep current","import.conflicts.keepCurrentAll":"Keep all current","import.conflicts.review":"Decide later","import.conflicts.title":"Resolve Conflicts","import.conflicts.unresolved":"{count} item(s) unresolved","import.conflicts.useImported":"Use backup","import.conflicts.useImportedAll":"Use all backup","import.decrypt.badge":"encrypted backup","import.decrypt.previewHint":"Encrypted backup: credentials are restored automatically by the unlock password — no further password prompt.","import.decryptArchive.hint":"This backup is fully encrypted (the whole file is password-protected). Enter the password set at export time to decrypt and continue — encrypted credentials inside are restored with the same password, so this is the only password prompt. It is used once and never written to disk.","import.decryptArchive.passwordPlaceholder":"Enter backup encryption password","import.decryptArchive.title":"Unlock Encrypted Backup","import.decryptArchive.unlock":"Unlock & Continue","import.decryptArchive.unlocking":"Unlocking…","import.importing":"Importing… (installing many plugins may take a few minutes; keep this page open)","import.log.empty":"Waiting for command output…","import.log.newOutput":"↓ New output","import.log.title":"Import Log","import.paths.hint":"Absolute paths in the backup may not exist on this machine. Map each path to a new location (leave blank to skip).","import.paths.new":"New path","import.paths.old":"Original path","import.paths.title":"Path Mapping","import.paths.unresolved":"{count} path(s) unmapped","import.preview.conflicts":"{count} conflict(s)","import.preview.mcp":"{count} MCP server(s) added","import.preview.paths":"{count} path mapping(s) needed","import.preview.plugins":"{count} plugin(s) to install","import.preview.prompts":"{count} prompt(s)","import.preview.restart":"A DSH restart is required after import","import.preview.secrets":"{count} secret(s) to re-enter","import.preview.settings":"{count} settings update(s)","import.preview.title":"Import Preview","import.preview.unchanged":"{count} item(s) already identical (skipped)","import.preview.willChange":"{count} item(s) will change","import.retrySkipped":"Retry failed/skipped items ({count})","import.rollbackOnError":"Roll back everything on failure (recommended)","import.secrets.hint":"These credentials were not exported with the backup (security by design). Enter them manually to use them here; leave blank to skip.","import.secrets.optional":"(optional)","import.secrets.required":"(required)","import.secrets.title":"Re-enter Secrets","import.select.browse":"Choose ZIP file","import.select.cancel":"Cancel selection","import.select.file":"Selected: {name}","import.select.hint":"Pick a dsh-config-*.zip backup exported from DSH to begin. Analysis is read-only and changes nothing.","import.select.reselect":"Reselect","import.select.title":"Select Backup File","import.skipCurrent":"Skip current plugin","import.skipPending":"Skipping… the rest of the import continues","nextSteps.done":"All done — nothing else to handle","nextSteps.restart.hint":"These changes only take effect after restarting DSH:","nextSteps.restart.title":"Restart DSH to apply ({count})","nextSteps.secrets.hint":"These credentials were not exported with the backup; re-enter them on this machine:","nextSteps.secrets.title":"Re-enter credentials ({count})","nextSteps.title":"Next steps","nextSteps.unresolved.hint":"These items were not applied; you can retry them from the result page:","nextSteps.unresolved.title":"Failed / skipped ({count})","profiles.delete":"Delete","profiles.deleteMessage":"Delete profile \\«{name}\\»? This group of configuration snapshots will be permanently removed.","profiles.deleteTitle":"Delete profile","profiles.empty":"No profiles yet. Save the current configuration to get started.","profiles.import.choose":"Choose JSON file","profiles.import.hint":"Import an exported profile.json (from this or another machine; file sections are embedded).","profiles.import.title":"Import profile","profiles.loading":"Loading profiles…","profiles.name":"Name","profiles.nameInvalid":"Invalid profile name: letters, digits and common characters only; no path separators (/ \\\\) or \\«..\\»","profiles.previewConflicts":"{count} conflict(s)","profiles.previewHint":"Click to preview the switch (read-only)","profiles.previewItems":"Change details","profiles.previewNote":"Read-only preview above (zero writes). After confirmation a snapshot is created automatically and everything rolls back on failure.","profiles.previewRestart":"DSH restart required","profiles.previewSecrets":"{count} secret(s) to re-enter","profiles.previewSections":"Sections in this profile","profiles.previewSummary":"Switch impact","profiles.previewUnchanged":"{count} identical","profiles.previewWillChange":"{count} item(s) will change","profiles.previewing":"Analyzing switch plan…","profiles.rename":"Rename","profiles.renameMessage":"Rename profile \\«{name}\\» to:","profiles.renameTitle":"Rename profile","profiles.save.action":"Save profile","profiles.save.hint":"Pick a name and save: contents reuse the export pipeline (no secrets), file sections (skills / presets) are embedded too.","profiles.save.placeholder":"e.g. Work / Personal / Minimal","profiles.save.saving":"Saving…","profiles.save.title":"Save current config as a profile","profiles.sections":"Sections","profiles.subtitle":"Save your current DSH configuration as multiple switchable profiles (Work / Personal / …); switching includes preview + auto snapshot + rollback on failure.","profiles.switch":"Switch","profiles.switchConfirm":"Confirm switch","profiles.switchDone":"Switch complete: {count} item(s) applied","profiles.switchFailed":"Switch failed (some items not applied)","profiles.switchPreviewTitle":"Switch preview: {name}","profiles.switchRolledBack":"Switch failed — fully rolled back","profiles.switching":"Switching… (auto snapshot + staged apply)","profiles.title":"Profiles","profiles.updatedAt":"Updated","report.action.done":"Done","report.action.fixIssues":"View failures","report.action.viewDetails":"View details","report.export.title":"Export Complete","report.import.title":"Import Result","report.needsRestart":"Plugin / MCP changes take effect after restarting DSH.","report.rollback.title":"Rollback Report","section.description":"Экспорт / импорт / миграция конфигурации DSH (секреты исключены; опционально шифрование архива)","section.label":"Резервное копирование и миграция","snapshots.actions":"Actions","snapshots.confirmRestore":"Confirm restore? Current files are first backed up to a safe location, then plugins added during the import are removed.","snapshots.confirmTitle":"Confirm restore","snapshots.createdAt":"Created","snapshots.delete":"Delete","snapshots.deleteConfirm":"Delete the snapshot created at {time}? This pre-import rollback point will be permanently removed and cannot be recovered.","snapshots.deleteConfirmTitle":"Delete Snapshot","snapshots.empty":"No snapshots yet. A safety snapshot is created automatically on import.","snapshots.entries":"Entries","snapshots.execute":"Restore now","snapshots.executing":"Restoring…","snapshots.failed":"Failed","snapshots.hint":"Export backups = portable ZIPs (download / one-click import / delete, incl. scheduled full backups). Snapshot restore = back to the pre-import state: whole-file restore of settings/patch, uninstall plugins added during import, compensate modified files; current files are backed up to a safe location first.","snapshots.kind.credentialHint":"Manual hint","snapshots.kind.fileRemove":"Remove file","snapshots.kind.fileRestore":"Restore file","snapshots.kind.hostFileRemove":"Remove whole file","snapshots.kind.hostFileRestore":"Restore whole file","snapshots.kind.pluginRemove":"Uninstall plugin","snapshots.kind.skip":"Skip","snapshots.kind.unknown":"Unknown","snapshots.loading":"Loading snapshots…","snapshots.manualHints":"Manual action needed","snapshots.noActions":"No restorable actions for this snapshot (or all skipped).","snapshots.pin":"Pin","snapshots.planTitle":"Restore Plan Preview","snapshots.plugins":"Plugins","snapshots.removedPlugins":"Removed plugins","snapshots.reportTitle":"Restore Report","snapshots.restored":"Restored","snapshots.retentionHint":"Up to {count} snapshots are kept automatically (oldest pruned); pinned snapshots are exempt from auto-pruning and can only be deleted manually.","snapshots.selectHint":"Select a snapshot to preview its restore plan (read-only preview, changes nothing):","snapshots.skipped":"Skipped","snapshots.sourceZip":"Source","snapshots.status":"Status","snapshots.status.done":"Done","snapshots.status.pending":"Pending","snapshots.status.rolled-back":"Rolled back","snapshots.status.unknown":"Unknown","snapshots.subTab.files":"Backup Files","snapshots.subTab.recovery":"Recovery","snapshots.subTab.restore":"Snapshot Restore","snapshots.summary":"{hostFileRestores} whole-file restore · {hostFileRemoves} whole-file remove · {pluginRemoves} plugin uninstall · {fileRestores} file restore · {fileRemoves} file remove · {credentialHints} credential hints · {skips} skip","snapshots.title":"Backup & Snapshots","snapshots.unpin":"Unpin","snapshots.viewPlan":"View restore plan","starPrompt.body":"If you find this plugin useful, please give it a ⭐ on GitHub — your support keeps it maintained!","starPrompt.dismiss":"Don't ask again","starPrompt.star":"Star on GitHub","starPrompt.title":"Enjoying Config Manager?","status.ready":"Config Manager ready (plugin {version} · DSH {dsh} · {platform})","status.unavailable":"Config Manager service unavailable — verify the plugin is mounted.","view.about":"About","view.export":"Export","view.import":"Import","view.market":"Marketplace","view.more":"More","view.profiles":"Управление профилями","view.snapshots":"Backup & Snapshots","view.sync":"Remote Sync","view.transfer":"Экспорт и импорт"},"config-manager-history":{"history.corruptedBanner":"Detected unreadable or possibly tampered history entries","history.corruptedCount":"{count} entry(s) were skipped (excluded from export)","history.empty":"No migration records yet. Executing an import, restore, profile switch, sync apply, or scheduled backup will create audit entries here.","history.export.json":"Export JSON","history.export.markdown":"Export Markdown","history.exportError":"Export failed","history.exported":"Exported","history.exporting":"Exporting…","history.filter.kind":"Operation","history.filter.recent":"Time range","history.filter.recent.200":"Latest 200","history.filter.recent.50":"Latest 50","history.filter.recent.all":"All","history.filter.result":"Result","history.filter.sections":"Sections","history.filter.title":"Filter & export","history.kind.autosync":"Autosync","history.kind.backup":"Scheduled backup","history.kind.import":"Import","history.kind.profile-delete":"Profile delete","history.kind.profile-import":"Profile import","history.kind.profile-rename":"Profile rename","history.kind.profile-save":"Profile save","history.kind.profile-switch":"Profile switch","history.kind.recovery":"Recovery/rollback","history.kind.restore":"Snapshot restore","history.kind.rollback":"Rollback","history.kind.snapshot-delete":"Snapshot delete","history.kind.snapshot-prune":"Snapshot retention","history.kind.sync-apply":"Sync apply","history.loadError":"Failed to load migration history","history.loading":"Loading migration history…","history.refresh":"Refresh","history.reload":"Reload","history.result.failed":"Failed","history.result.skipped":"Skipped","history.result.success":"Success","history.search.placeholder":"Search summary / error / section…","history.stats.failed":"Failed","history.stats.skipped":"Skipped","history.stats.success":"Success","history.stats.total":"Total","history.subtitle":"Единый журнал аудита всех деструктивных и миграционных операций","history.table.kind":"Operation","history.table.result":"Result","history.table.sections":"Sections","history.table.summary":"Summary","history.table.time":"Time","history.title":"История миграций и аудита","history.updatedAt":"Updated","view.history":"История миграций"},"config-manager-market":{"common.cancel":"Отмена","common.close":"Закрыть","common.loading":"Загрузка…","common.retry":"Повторить","common.unknownError":"Неизвестная ошибка","config.refresh":"Refresh","config.refreshing":"Refreshing…","config.title":"Market Repository","detail.approval.count":"{selected}/{total} section(s) approved","detail.approval.highRiskHint":"These sections install plugins / write files / inject global instructions / register MCP / restore sessions — high-risk changes, not imported by default. Check each one to import it.","detail.approval.requiresApproval":"Requires approval","detail.approval.safe":"Importable","detail.approval.title":"Approve sections to import","detail.back":"Back to list","detail.downloadedAt":"Downloaded: {time}","detail.emptySections":"This item contains no importable sections","detail.errors":"Verification errors:","detail.impact.conflicts":"{count} conflict(s)","detail.impact.paths":"{count} path mapping(s)","detail.impact.restart":"DSH restart required","detail.impact.secrets":"{count} secret(s) to re-enter","detail.impact.unchanged":"{count} identical","detail.impact.willChange":"{count} item(s) will change","detail.import":"Confirm import","detail.needReview":"Needs human confirmation","detail.noApproval":"No sections approved — cannot import","detail.previewHint":"Read-only preview below (changes nothing). Confirming the import reuses the existing safe pipeline (snapshot + validation + rollback on failure).","detail.title":"Item Details","detail.version":"version {version}","disclaimer.confirm":"I understand, continue","disclaimer.dontAsk":"Don't ask again (no more disclaimers for this action)","disclaimer.download.text":"You are about to download configs from a public network market and import them locally.\\n\\nDownloaded content is untrusted input: not officially reviewed and may carry risks (installing plugins / writing files / changing settings).\\n· Everything is validated and shown before import; high-risk sections are not imported by default and require individual approval;\\n· A snapshot is auto-created before import and rollback is available on failure;\\n· Please verify the source and content before confirming the import.","disclaimer.install.text":"You are about to reinstall configs from your public repo to this machine.\\n\\nThis is content you uploaded before, but it still goes through the same validation and per-section approval:\\n· High-risk sections are not imported by default and require individual approval;\\n· A snapshot is auto-created before import and rollback is available on failure.","disclaimer.title":"Disclaimer","disclaimer.upload.text":"You are about to upload configs to your public repo (<login>/dsh-configs) and submit a listing request to the official market.\\n\\nUploaded content becomes publicly visible and requires human review before entering the official market. Please ensure:\\n· No real secrets / credentials are included (env-var references like $VAR are safe);\\n· No personal privacy or local environment info is included;\\n· You have the right to share these configs.","list.browse":"Browse","list.cacheCached":"cached","list.cacheFresh":"just fetched","list.cacheNone":"not cached","list.categoriesAll":"All categories","list.count":"{count} item(s)","list.download":"View details","list.empty":"The built-in market has not loaded yet. Click \\«Refresh\\» first.","list.filtered":"({count} after filter)","list.loading":"Reading market…","list.noItems":"This market has no items.","list.searchPlaceholder":"Search name / author / description…","list.sectionsAll":"All sections","list.sectionsUnknown":"{count} more item(s) not downloaded yet — cannot match by section","list.sortDefault":"Default order","list.sortName":"Name A–Z","list.sortStars":"Most starred","list.sortUpdated":"Recently updated","list.sourceAll":"All sources","list.sourceOfficial":"Official","list.sourcePersonal":"Community","list.stars":"⭐ {count}","list.starsHint":"Stars of the source repo (repo-level, not per item)","myconfigs.back":"Back to market","myconfigs.delete.confirm":"Confirm delete","myconfigs.delete.confirmText":"Delete? This permanently removes the item index and files from your config repo (not recoverable)","myconfigs.delete.confirmTitle":"Delete item","myconfigs.delete.delistStarted":"Local item deleted; a \\«delist PR\\» has been submitted (removal from the official market needs human merge; the item may still appear in the market meanwhile)","myconfigs.delete.prClosed":"Local item deleted; its pending listing PR has been closed","myconfigs.delete.run":"Delete","myconfigs.error.loadItems":"Failed to read uploaded items","myconfigs.error.loadStatus":"Failed to read sign-in status","myconfigs.item.install":"Install locally","myconfigs.item.openPr":"View listing PR","myconfigs.item.update":"Update","myconfigs.list.empty":"No configs uploaded yet","myconfigs.list.loading":"Loading…","myconfigs.list.openRepo":"Open repo","myconfigs.list.refresh":"Refresh","myconfigs.list.summary":"{total} item(s) · {listed} listed · {pending} pending · {none} not listed","myconfigs.list.title":"Uploaded","myconfigs.login.cancel":"Cancel sign-in","myconfigs.login.checking":"Checking sign-in status…","myconfigs.login.hint":"After signing in you can upload configs to your public repo (auto-created as <login>/dsh-configs) and submit a listing PR to the official market (target repo is fixed and not editable).","myconfigs.login.loggedInAs":"Signed in as {login}","myconfigs.login.openAuth":"Open authorization page","myconfigs.login.relogin":"Sign in again","myconfigs.login.repoMissing":"Config repo not created yet — it will be auto-created (public) on first upload","myconfigs.login.repoReady":"Config repo: {repo}","myconfigs.login.start":"Sign in with GitHub","myconfigs.login.targetRepo":"Listing target (fixed): {repo}","myconfigs.login.title":"GitHub sign-in","myconfigs.login.userCode":"One-time code: {code}","myconfigs.result.listingFailed":"Listing failed","myconfigs.result.listingPending":"Uploaded ✓ submitting listing in the background (fork + PR) — list status will update shortly","myconfigs.result.openPr":"View PR","myconfigs.result.openRepo":"Open repo","myconfigs.result.pr":"Listing PR #{number}","myconfigs.result.relist":"Resubmit listing","myconfigs.result.repo":"Config repo","myconfigs.result.sections":"Sections: {sections}","myconfigs.result.sha256":"SHA-256: {hash}","myconfigs.result.title":"Upload/update complete","myconfigs.result.version":"version {version}","myconfigs.tab.browse":"Browse Market","myconfigs.tab.myconfigs":"My Configs","myconfigs.update.hint":"The version will be bumped automatically (+1); item info is prefilled (name editable).","myconfigs.update.run":"Update","myconfigs.update.running":"Updating…","myconfigs.update.selectZip":"Choose new ZIP…","myconfigs.update.title":"Update config","myconfigs.update.zipHint":"Updating needs a new config zip: pick one and it will be validated automatically, then you can update.","myconfigs.upload.form.autoHint":"These fields are generated automatically:","myconfigs.upload.form.categories":"Categories (optional, comma-separated)","myconfigs.upload.form.description":"Description (optional)","myconfigs.upload.form.name":"Name","myconfigs.upload.form.nameHint":"Prefilled from the zip file name; editable","myconfigs.upload.form.title":"Item info","myconfigs.upload.mode.migrate":"Migrate (keep everything)","myconfigs.upload.mode.share":"Share (auto-exclude sensitive content)","myconfigs.upload.mode.shareHint":"Share mode auto-excludes device/platform-specific sections (credentials status / sessions / MCP / workspaces, etc.) and enforces privacy scanning — any sensitive trace blocks publishing instead of just warning.","myconfigs.upload.mode.title":"Publish mode","myconfigs.upload.reselect":"Choose again","myconfigs.upload.run":"Upload","myconfigs.upload.running":"Uploading…","myconfigs.upload.select":"Choose ZIP…","myconfigs.upload.selectHint":"Pick an exported config zip (create a backup on the \\«Export\\» tab first, then pick it here). The market channel never carries secrets — backups containing secrets are rejected.","myconfigs.upload.selected":"Selected: {name}","myconfigs.upload.title":"Upload","myconfigs.upload.validate":"Run validation","myconfigs.upload.validateInvalid":"Content validation failed — cannot upload","myconfigs.upload.validateOk":"Validation passed: valid content, no secrets","myconfigs.upload.validateSecrets":"Contains secrets: the market channel never carries secrets — upload rejected","myconfigs.upload.validating":"Validating…","section.description":"Просмотр и загрузка конфигураций сообщества (публичные Git-репозитории; загружаемый контент не является доверенным — проверяется перед импортом)","section.label":"Каталог конфигураций"},"config-manager-recovery":{"common.cancel":"Отмена","common.retry":"Повторить","common.unknownError":"Неизвестная ошибка","recovery.actionError":"Operation failed","recovery.banner":"Configuration changes are protected: there is an unfinished recovery item. Resolve it before continuing.","recovery.bannerAction":"Go to recovery","recovery.completed":"Recovery complete","recovery.completed.recovered":"Recovered and verified","recovery.completed.rolledBack":"Rolled back and verified","recovery.confirm.dismiss":"Abandon recovery? The operation will be set aside (quarantined), and the related snapshot and operation records are kept, but it will not be auto-recovered.","recovery.confirm.dismissTitle":"Abandon recovery","recovery.confirm.message":"Recovery / rollback is a dangerous operation. Confirm execution? Current files are backed up to a safe location first.","recovery.confirm.retry":"Retry recovery after verification failure. Confirm running it again?","recovery.confirm.rollbackContinue":"Continue the interrupted rollback (already-completed parts are skipped and not redone).","recovery.confirm.title":"Confirm recovery","recovery.continue":"Continue","recovery.currentState.hasSnapshot":"Trusted recovery snapshot available","recovery.currentState.noSnapshot":"No trusted recovery snapshot","recovery.currentState.safeMode":"Safe mode active (config-modifying operations paused)","recovery.currentState.safeModeCleared":"Restored to normal — you can continue","recovery.currentState.title":"Current state","recovery.decision.unknown":"Unknown","recovery.dismiss":"Abandon recovery","recovery.dismissing":"Abandoning…","recovery.empty":"No recovery items to handle.","recovery.environment.compatible":"Environment matches","recovery.environment.incompatible":"Environment mismatch (may be from another machine / install)","recovery.environment.title":"Environment","recovery.error":"Failed to load recovery status","recovery.execute":"Execute recovery","recovery.executing":"Recovering…","recovery.inProgress":"Recovery in progress","recovery.incident.createdAt":"Occurred at","recovery.incident.decision":"Recommendation","recovery.incident.operationId":"Operation ID","recovery.incident.operationType":"Operation type","recovery.incident.reason":"Reason","recovery.incident.state":"State","recovery.incident.state.committed":"Completed","recovery.incident.state.needsAttention":"Manual action needed","recovery.incident.state.recovered":"Recovered","recovery.incident.state.recovering":"Recovering","recovery.incident.state.rolledBack":"Rolled back","recovery.incident.state.unknown":"Unknown","recovery.incident.title":"What happened","recovery.loading":"Checking recovery status…","recovery.manualActionRequired":"Manual action required","recovery.mismatch":"Mismatch","recovery.needsAttention":"Needs attention","recovery.needsAttention.hint":"Recovery could not complete or verification failed. Review the reason, then retry or abandon.","recovery.needsAttention.title":"Needs attention","recovery.partialMatch":"Partial match","recovery.preview.action":"Action","recovery.preview.detail":"Detail","recovery.preview.empty":"No restorable actions for this operation (or all skipped).","recovery.preview.hint":"Read-only preview below (zero writes). Recovery only runs after confirmation.","recovery.preview.loading":"Generating preview…","recovery.preview.summary":"Will execute {count} action(s)","recovery.preview.title":"Recovery preview","recovery.required":"Recovery Required","recovery.requiredHint":"An operation did not complete normally. To stay safe, all config-modifying operations are paused. Handle the recovery item(s) below to restore normal operation.","recovery.retry":"Retry","recovery.retrying":"Retrying…","recovery.rollbackContinue":"Continue rollback","recovery.rollbackRecommended":"Rollback recommended","recovery.running":"Recovery task in progress","recovery.runningHint":"Recovery / rollback is running; keep this page open.","recovery.snapshot.createdAt":"Snapshot time","recovery.snapshot.id":"Snapshot ID","recovery.snapshot.operationType":"Snapshot operation","recovery.snapshot.title":"Recovery snapshot","recovery.snapshot.verdict":"Snapshot validation","recovery.snapshot.verdict.corrupt":"Corrupt","recovery.snapshot.verdict.invalid":"Invalid","recovery.snapshot.verdict.legacy":"Legacy snapshot (explicit confirmation required)","recovery.snapshot.verdict.manual":"Manual / local (outside this operation)","recovery.snapshot.verdict.trusted":"Trusted (bound to this operation)","recovery.snapshot.verdict.unknown":"Unknown","recovery.snapshot.verdict.unsafe":"Unsafe path","recovery.snapshot.verdict.wrongEnv":"Environment mismatch","recovery.verificationError":"Verification error","recovery.verified":"Verified","recovery.verify":"Verify","recovery.verify.details":"Check details","recovery.verify.manualHints":"Manual action needed","recovery.verify.terminal.needsAttention":"Needs attention","recovery.verify.terminal.recovered":"Recovered","recovery.verify.terminal.rolledBack":"Rolled back","recovery.verify.title":"Verification result","recovery.verify.verdict.error":"Verification error: could not reliably complete verification; recovery incomplete","recovery.verify.verdict.match":"Verified: target state matches the trusted snapshot","recovery.verify.verdict.mismatch":"Verification failed: target state does not match the trusted snapshot; recovery incomplete","recovery.verify.verdict.partial":"Verified (partial match): core state matches, but some items could not be auto-verified","recovery.verify.verdict.unknown":"Unknown","recovery.verifying":"Verifying…","section.description":"Восстановление профилей и откат к предыдущим снапшотам","section.label":"Аварийное восстановление","view.recovery":"Recovery"},"config-manager-sync":{"action.pull":"Pull diff preview","action.pulling":"Pulling…","action.push":"Push to remote","action.pushing":"Pushing…","autosync.description":"When enabled, DSH keeps config in sync in the background: uploads locally-changed config automatically, pulls and merges only when it detects a new remote snapshot; the timer is just a fallback poll and no-ops when nothing changed. Local writes happen only when there are no conflicts or manual-decision items.","autosync.due":"Due — running soon","autosync.enable":"Enable auto sync","autosync.failCount":"{n} consecutive failure(s)","autosync.failed":"Failed","autosync.interval":"Fallback poll interval","autosync.interval12h":"12 hr","autosync.interval15m":"15 min","autosync.interval24h":"24 hr","autosync.interval30m":"30 min","autosync.interval5m":"5 min","autosync.interval60m":"60 min","autosync.interval6h":"6 hr","autosync.intervalHint":"On interval / DSH startup, checks for a new remote snapshot and pulls+merges only if one exists (no upload); local config changes trigger an upload.","autosync.nextRun":"Next in ~{time}","autosync.partial":"Partial","autosync.running":"Auto sync running…","autosync.skipped":"Skipped","autosync.status":"Last run: {status} ({time})","autosync.statusNever":"Never run","autosync.success":"Success","autosync.title":"Auto Sync","change.total":"{total} change(s)","channel.configured":"Configured","channel.currentUrl":"Current URL","channel.git":"Git private repo","channel.notConfigured":"Not configured","channel.open":"Configure sync channel","channel.openHint":"Remote sync runs through a sync channel: a private Git repository or a WebDAV server. Click the button to configure or change it in the dialog.","channel.perChannelHint":"Auto sync, sync mode, encryption and remote snapshots are configured independently for GitHub and WebDAV channels.","channel.title":"Sync Channel","channel.webdav":"WebDAV server","common.close":"Закрыть","common.loading":"Загрузка…","common.retry":"Повторить","config.repoUrl":"Repository URL","config.repoUrlHint":"Private Git repository URL (https / ssh / local path). Use the credential field below for the auth token; never embed it in the URL.","config.save":"Save config","config.saveHint":"Form changes are saved automatically (password/token written securely into DSH credentials, never into sync files or logs); you can also save explicitly with the button.","config.saving":"Saving…","config.title":"Repository","config.token":"Auth token","config.tokenHint":"Securely written into DSH credentials (ref {ref}); never written into sync files or logs. Leave blank to reuse the saved credential.","config.tokenPlaceholder":"ghp_… (optional)","config.tokenSaved":"Credential configured","github.cancel":"Cancel","github.clientIdHint":"Requires the githubClientId plugin config (the client_id of your GitHub OAuth App).","github.description":"Authorize via the GitHub OAuth device flow: no manual token entry — after you approve in the browser, the token is written into DSH credentials automatically.","github.login":"Sign in with GitHub","github.openAuth":"Open GitHub authorization page","github.retry":"Sign in again","github.title":"GitHub Sign-in","github.tokenInvalid":"GitHub sign-in is no longer valid — please sign in again.","github.userCode":"One-time code","history.autosyncApplied":"Applied sections: {sections}","history.autosyncBoth":"Both","history.autosyncConflicted":"Skipped conflict sections: {sections}","history.autosyncDirection":"Direction: {direction}","history.autosyncError":"Error: {error}","history.autosyncNotified":"Notified (3 consecutive failures)","history.autosyncPull":"Pull","history.autosyncPush":"Push","history.autosyncReasonConflict":"Conflict","history.autosyncReasonNetwork":"Network issue","history.autosyncReasonNoRemote":"No remote snapshot","history.autosyncReasonNotConfigured":"No repository configured","history.autosyncSkipReason":"Skip reason: {reason}","history.channelGit":"GitHub","history.channelWebdav":"WebDAV","history.colDetail":"Detail","history.colKind":"Kind","history.colTime":"Time","history.column.autosync":"Auto Sync","history.column.snapshot":"Snapshot","history.detail":"Detail","history.empty":"No sync history yet","history.emptyHint":"Records appear here after your first push / one-click sync / auto sync.","history.kindAutosync":"Auto Sync","history.kindSnapshot":"Snapshot","history.sectionCount":"sections","history.title":"Sync History","mode.advanced":"Advanced (Custom Export)","mode.advancedHint":"Manually select the sections to push (same as Custom Export in the Export tab); only portable sections can sync.","mode.atLeastOne":"Select at least one section to sync","mode.decryptPassword":"Decryption password (for encrypted snapshot pull/sync, optional)","mode.decryptPasswordHint":"Provide it when pulling or one-click syncing an encrypted snapshot; without it encrypted snapshots cannot be read (auto sync skips and reports them in history).","mode.default":"Default (Quick Export)","mode.defaultCount":"Will sync {n} recommended section(s)","mode.defaultHint":"Push all recommended sections (settings, providers, plugins, prompts, skills, etc.) in one click — no configuration needed.","mode.encrypt":"Encrypt backup","mode.encryptAutosyncNotice":"Encrypted snapshots are only produced/consumed by manual push/pull; auto sync has no password, so it skips encrypted snapshots and reports them in history.","mode.encryptHint":"Encrypt the sync snapshot with a password (AES-256-GCM). The password is memory-only for this push and never persisted; auto sync cannot decrypt encrypted snapshots, so it skips them and reports it in sync history.","mode.hint":"Choose which sections to export when pushing: Default = recommended sections in one click (Quick Export); Advanced = custom selection (Custom Export).","mode.includeSecrets":"Export secrets","mode.includeSecretsHint":"Write real credential values into the encrypted snapshot (auto-selects encryption when checked; secrets never enter a plaintext snapshot).","mode.password":"Encryption password","mode.passwordConfirm":"Confirm password","mode.passwordMismatch":"Passwords do not match","mode.passwordRequired":"Encryption requires a password","mode.persistHint":"The mode and section selection are saved locally: both auto sync and manual push use this configuration (persists across restarts).","mode.sectionPortable":"Portable","mode.sectionRecommended":"Recommended","mode.sectionsHint":"Only portable sections can sync: device-specific (plugin files, credentials status, sessions) and platform-specific (MCP, workspaces) sections never participate in remote sync.","mode.sectionsTitle":"Sync Sections","mode.security":"Encryption & Secret Export (Security Options)","mode.title":"Sync Mode","privateRepoHint":"Security requirement: the sync repository MUST be private (a public repo would expose your configuration). The auth token is only used for repository access and is never written into sync files, commit content, or logs.","pull.empty":"Remote snapshot matches local (no changes)","pull.needsReview":"Contains items that need human decisions (conflicts / secrets / dependencies / installs)","pull.previewHint":"Read-only diff preview above; nothing is imported. One-click import is not supported in this version; use the Import wizard to apply a downloaded backup if needed.","pull.title":"Pull Diff Preview","push.title":"Push Result","section.description":"Синхронизация переносимой конфигурации между устройствами через приватный Git-репозиторий (секреты не синхронизируются)","section.label":"Удалённая синхронизация","sections.title":"Synced Sections","status.never":"Never synced","status.title":"Sync Status","syncflow.adoptHint":"Check = import item; uncheck = skip","syncflow.adoptRemote":"Adopt remote","syncflow.bulkHint":"Bulk decisions only apply to conflict items; other changes are adopted by default.","syncflow.button":"One-click sync","syncflow.cancel":"Cancel","syncflow.confirmImport":"Confirm import","syncflow.conflictAncestorLabel":"Common ancestor","syncflow.conflictLocalLabel":"Current","syncflow.conflictRemoteLabel":"Backup","syncflow.conflictTitle":"Resolve conflict","syncflow.conflictUnresolved":"Conflict item {itemId} has no resolution yet (keep current / use backup)","syncflow.conflictUseLocal":"Keep current","syncflow.conflictUseRemote":"Use backup","syncflow.diff":"Diff","syncflow.diffCount":"{count} change(s)","syncflow.empty":"Remote snapshot matches local (no changes)","syncflow.importDone":"Imported {n} section(s)","syncflow.importFailed":"Import failed (rolled back)","syncflow.importWarnings":"Import warnings","syncflow.importedSections":"Written","syncflow.keepLocalAll":"Keep all current","syncflow.latestSnapshot":"Latest snapshot","syncflow.needsRestart":"Some changes require a DSH restart to take effect","syncflow.needsReviewBadge":"Needs decision","syncflow.noSnapshots":"No remote snapshots","syncflow.pushConfirm":"Push","syncflow.pushFirstBaseline":"No remote snapshots yet: this push creates the first sync baseline","syncflow.pushPreviewSections":"Sections to push","syncflow.pushPreviewTitle":"Confirm Push","syncflow.pushing":"Pushing…","syncflow.refreshSnapshots":"Refresh snapshots","syncflow.refreshingSnapshots":"Fetching…","syncflow.rollback":"Rollback","syncflow.rollbackDone":"Rolled back","syncflow.rollingBack":"Rolling back…","syncflow.selectSnapshot":"Select snapshot","syncflow.snapshotOption":"({date} · {count} sections)","syncflow.syncFailed":"Sync failed","syncflow.syncing":"Syncing…","syncflow.title":"One-Click Sync","syncflow.useRemoteAll":"Use all backup","warnings.title":"Section Warnings","webdav.password":"Password","webdav.passwordHint":"Securely written into DSH credentials (ref {ref}); never written into sync files or logs. Leave blank to reuse the saved credential.","webdav.passwordPlaceholder":"Password (optional)","webdav.passwordSaved":"Credential configured","webdav.presetHint":"Pick a common WebDAV server to prefill the URL; templates containing <placeholders> need to be replaced with your real server/username.","webdav.title":"WebDAV Configuration","webdav.url":"Server URL","webdav.urlHint":"WebDAV server root URL (https://…). Sync snapshots and the index are stored under a dsh-config-manager/ subdirectory of that URL. Do not include a username/password in the URL.","webdav.username":"Username","webdav.usernameHint":"HTTP Basic auth username (not sensitive, may be shown)."},"context-doctor":{"cd.attention":"Стоит посмотреть","cd.byFile":"По файлу","cd.byServer":"По серверу","cd.bySource":"По источнику","cd.catalog":"{n} скиллов","cd.catalog.few":"{n} скилла","cd.catalog.many":"{n} скиллов","cd.catalog.one":"{n} скилл","cd.collapse":"Скрыть детализацию","cd.duplicateBlocks":"{n} дублированных блоков · {tokens} токенов","cd.duplicateSkills":"{n} навыков имеют одинаковое описание","cd.empty":"Данных пока нет","cd.emptyCategory":"ничего не внедрено","cd.emptyState":"Данные аудита пока отсутствуют.","cd.error":"Проверка не удалась","cd.expand":"Показать детализацию","cd.files":"файлов","cd.guideline":"из 50k","cd.healthy":"В норме","cd.healthyHint":"Контекст расходуется экономно и укладывается в рекомендованный бюджет.","cd.heavy":"Превышение бюджета","cd.heavyHint":"Резидентный контекст перегружает бюджет. Сначала сократите самые крупные записи.","cd.hint":"Открыть аудит контекста","cd.instructions":"Цепочка инструкций","cd.instructions.sub":"{n} файлов","cd.justNow":"только что","cd.loading":"Проверка…","cd.mcp":"Инструменты MCP","cd.mcp.sub":"{n} инструментов · {servers} серверов","cd.mcpTools":"{n} инструментов","cd.mcpTools.few":"{n} инструмента","cd.mcpTools.many":"{n} инструментов","cd.mcpTools.one":"{n} инструмент","cd.minutesAgo":"{n} минут назад","cd.more":"+{n} ещё","cd.native":"Встроенные инструменты","cd.noDetail":"Нет доступной разбивки","cd.ofBudget":"из бюджета в {budget}","cd.refresh":"Обновить","cd.residentTokens":"Проверка бюджета контекста","cd.residentUnit":"токены резидентные","cd.review":"Стоит посмотреть","cd.reviewHint":"Некоторые части контекста стоит пересмотреть, пока они не стали дорогими.","cd.secondsAgo":"{n} назад","cd.shadowed":"{n} навыков скрыты записью с таким же названием","cd.skills":"Каталог скиллов","cd.skills.sub":"{n} навыков","cd.subtitle":"Аудит контекста","cd.suggestions":"Рекомендации","cd.suggestions.few":"{n} рекомендации","cd.suggestions.many":"{n} рекомендаций","cd.suggestions.one":"{n} рекомендация","cd.title":"Аудит контекста","cd.tokens":"токены","cd.tools":"Схемы инструментов","cd.tools.sub":"{n} встроенных инструментов","cd.toolsCount":"инструментов","cd.topSchemas":"Самые большие схемы","cd.total":"Общее количество","cd.updated":"Обновлено {when}"},"conversation":{"access.confirm.acknowledge":"Я понимаю риски и хочу продолжить","access.confirm.cancel":"Отмена","access.confirm.description":"Полный доступ убирает часть подтверждений и позволяет агенту действовать напрямую, включая чувствительные операции, изменение файлов и внешние команды. Включайте, только если доверяете текущей задаче.","access.confirm.enable":"Включить полный доступ","access.confirm.title":"Включить полный доступ?","approval.allowOnce":"Разрешить один раз","approval.detail.aria":"Подробности запроса","approval.escalation":"Инструмент {toolName} просит повышенных прав","approval.reject":"Отклонить","approval.waiting":"Ожидание подтверждения","ask.answered":"{answered}/{total} отвечено","ask.cancelled":"отменено","ask.interrupted":"прервано","ask.rowTitle":"Вопрос","ask.waiting":"ожидание","bash.failed":"Ошибка","bash.running":"Выполняется","bash.stopped":"Остановлено","chat.loadError":"Не удалось загрузить историю: {message} ({code})","chat.loadOlder":"Загрузить раньше","chat.loadingHistory":"Загрузка истории…","chat.toBottom":"Вниз","clock.md":"{d}.{m}","clock.ymd":"{d}.{m}.{y}","command.done":"Готово","command.failed":"Команда не выполнена","command.imagesUnsupported":"/{command} не принимает вложения-изображения — сначала удалите их","command.running":"Выполняется…","command.title":"Команда","context.aria":"{percent} контекста занято","context.messages":"Сообщения","context.system":"Системный промпт","context.tools":"Инструменты","context.used":"контекста занято","details.close":"Закрыть подробности","details.empty":"Выберите строку инструмента в переписке, чтобы увидеть подробности","details.input":"Вход","details.notInWindow":"Этот вызов вне текущего окна","details.output":"Выход","details.running":"Выполняется…","details.title":"Подробности","duration.minutes":"{minutes} мин {seconds} с","duration.seconds":"{seconds} с","fileOpen.folderTitle":"Не удалось открыть папку","fileOpen.folderUnknown":"Не удалось открыть эту папку","fileOpen.title":"Не удалось открыть файл","fileOpen.unknown":"Не удалось открыть этот файл","hero.chooseWorkspace":"Выбрать рабочую папку","hero.headline":"Навстречу неизвестному","hero.preview":"Предпросмотр","hint.goal":"опишите цель длительной задачи","hint.goal.active":"цель активна — изменить / пауза / продолжить / снять","image.closePreview":"Закрыть просмотр оригинала","image.dimensionTooLarge":"Стороны изображения не больше {size}px — уменьшите его и попробуйте снова","image.dropBlocked":"Сейчас картинки добавить нельзя","image.dropDesc":"До {count} изображений, каждое до {size}","image.dropTitle":"Перетащите изображения сюда","image.fileTooLarge":"Каждое изображение должно быть меньше {size}","image.label":"Изображение","image.loadFailed":"Изображение не загрузилось, нажмите для повтора","image.loading":"Загрузка изображения…","image.modelUnsupported":"Текущая модель не принимает изображения; выберите подходящую","image.openOriginal":"Открыть оригинал","image.openOriginalLabel":"{label}, нажмите, чтобы открыть оригинал","image.original":"Оригинал","image.pending":"Изображения к отправке","image.preview":"Просмотр оригинала","image.remove":"Убрать изображение {name}","image.scrollLeft":"Прокрутить изображения влево","image.scrollRight":"Прокрутить изображения вправо","image.sendFailed":"Не удалось отправить изображения ({reason}); добавьте заново и повторите","image.serviceUnavailable":"Служба загрузки изображений недоступна","image.subagentUnsupported":"Сессии субагентов пока не поддерживают изображения","image.tooMany":"В одно сообщение помещается до {count} изображений","image.tooManyPixels":"Слишком большое разрешение; сожмите изображение и повторите","image.totalTooLarge":"Изображения весят больше {size}; уберите часть и повторите","image.unsupportedType":"Поддерживаются только PNG, JPG, WebP и GIF","input.accessMode":"Режим доступа, сейчас: {name}","input.commands":"Команды","input.send":"Отправить сообщение","input.stop":"Остановить генерацию","json.truncated":"… обрезано, всего символов: {total}","message.branch":"Ответвить новый диалог","message.branchUnavailable":"Доступно только на последнем сообщении завершённого хода","message.compaction":"Контекст сжат","message.compaction.completed":"Сжато элементов истории: {items} (~{tokens} токенов)","message.compaction.expand":"Показать итог сжатия","message.compaction.running":"Сжатие контекста…","message.compaction.unavailable":"Итог сжатия недоступен","message.context.catalog.more":"… ещё {count}","message.context.catalog.replaced":"Каталог заменён","message.context.instructions.added":"добавлено","message.context.instructions.loaded":"загружено","message.context.instructions.removed":"удалено","message.context.instructions.updated":"обновлено","message.context.recall.counts":"{retained} оставлено · {omitted} пропущено","message.context.recall.truncated":"обрезано","message.context.relay.from":"Из сессии {session}","message.context.snapshot.supersedes":"Заменяет прежние снимки","message.contextInjection":"Инъекция контекста","message.contextRecall":"Напоминание из сессии","message.extraBlock":"Дополнительный блок","message.maxTokens":"Достигнут лимит выходных токенов","message.maxTokens.hint":"Ответ обрезан; написанное ранее сохранено в переписке. Отправьте «продолжай», чтобы модель дописала.","message.ranFor":"Заняло {duration}","message.referenceSeparator":", ","message.referenceSummary":"Упомянутая сессия · {labels}","message.retry.active":"Повтор запроса к модели","message.retry.cancelled":"Повтор запроса отменён","message.retry.delay":"Задержка перед повтором: ","message.retry.failure":"Причина сбоя: ","message.retry.scheduled":"Ожидание повтора запроса","message.retry.started":"Запрос к модели повторён","message.retry.status":"{label} ({retry}/{maximum}) · {seconds} с","message.stopped":"Остановлено","message.tokensPerSecond":"{tps} ток/с","message.ttft":"Первый токен {seconds} с","message.turnError":"Ход не удался","message.unknownBlock":"Неизвестный блок содержимого","message.unknownSurface":"Неизвестное событие: {type}","placeholder.default":"Напишите агенту","placeholder.hero":"Опишите, что хотите сделать","placeholder.parentOffline":"Родительская сессия офлайн: отправка недоступна, но остановить выполнение можно","placeholder.steerQueue":"Cmd/Ctrl+Enter направит все сообщения из очереди","placeholder.unavailable":"Сессия недоступна","placeholder.workspace":"Выберите рабочую папку, чтобы начать","queue.cancelEdit":"Отменить правку","queue.count":"Сообщений в очереди: {n}","queue.edit":"Изменить сообщение в очереди","queue.edit.unsupported":"Содержит не только текст; правка пока не поддерживается","queue.editFailed":"Не удалось изменить: сообщение, возможно, уже отправляется.","queue.remove":"Убрать из очереди","queue.removeFailed":"Не удалось убрать: сообщение, возможно, уже отправляется.","queue.save":"Сохранить сообщение","queue.steer":"Направить сообщение","queue.steer.unavailable":"Направлять можно только пока агент работает","queue.steerFailed":"Не удалось направить. Попробуйте ещё раз.","row.failed":"Ошибка","row.running":"Выполняется","row.stopped":"Остановлено","session.hierarchy":"Иерархия сессий","settings.enter.description":"Только когда агент занят; Cmd/Ctrl+Enter даёт другое поведение","settings.enter.queue":"В очередь","settings.enter.steer":"Направить","settings.enter.title":"Enter, когда агент занят","stats.cacheHit":"Попаданий в кэш {percent}%","stats.counts":"ходов: {turns} · шагов: {steps}","stats.llm":"Модель {duration}","stats.tokens":"Вход {input} ток · выход {output} ток","stats.tokensPerSecond":"{throughput} ток/с","stats.toolCall":"Инструменты {duration}","stats.ttftAverage":"Первый токен в среднем {duration}","terminal.collapseAria":"Свернуть вывод","terminal.done":"Готово","terminal.exitCode":"код возврата {code}","terminal.expandAria":"Показать оставшиеся строки вывода: {n}","terminal.expandRest":"… ещё строк: {n}","terminal.failed":"Ошибка","terminal.noOutput":"Вывода нет","terminal.running":"Выполняется","terminal.signal":"сигнал {signal}","todo.completed":"{done}/{total} выполнено","todo.progress.active":"{active} в работе","todo.progress.done":"{done} выполнено","todo.progress.pending":"{pending} в очереди","todo.rowTitle":"Обновить список задач","todo.title":"Задачи","view.chat":"Чат"},"cordis":{"a11y.defining":"Определение плагина","a11y.failed":"Определить не удалось","a11y.stopped":"Определение прервано","action.approve":"Разрешить","action.approveOnce":"Разрешить только эту версию","action.approvePlugin":"Разрешить будущие версии этого плагина","action.decline":"Отклонить","action.remove":"Удалить","action.retry":"Повторить","action.rollback":"Откатить","action.run":"Запустить","action.stop":"Остановить","body.clientCode":"Клиент","body.copied":"Скопировано","body.copy":"Копировать","body.hostCode":"Хост","body.output":"Результат","body.source":"Исходник плагина","panel.approvals.aria":"Подтверждения Cordis","panel.current":"Текущая: {packageId}","panel.empty":"Плагинов пока нет","panel.group.current":"Эта сессия","panel.group.others":"Другие сессии","panel.hint":"Управление запуском — в панели Cordis над настройками","panel.loading":"Чтение…","panel.next":"Следующая: {packageId}","panel.plugins.aria":"Плагины Cordis","panel.readFailed":"Не удалось прочитать список плагинов: {message}","panel.runningCount":"работает: {count}","panel.title":"Плагины Cordis","panel.trigger":"Плагин Cordis","panel.version":"Версия","purpose.missing":"(назначение не указано)","render.failedAbdicated":"Отрисовка в {slot} не удалась, вернули стандартный интерфейс:","render.failedHeld":"Отрисовка в {slot} не удалась:","row.defineTitle":"Зарегистрировать плагин Cordis","row.removeTitle":"Удалить плагин Cordis","row.runTitle":"Запустить плагин Cordis","row.stopTitle":"Остановить плагин Cordis","row.updateTitle":"Обновить плагин Cordis","run.removed":"Этого пакета больше нет","run.superseded":"Ниже есть более свежая карточка запуска","status.awaitingApproval":"Ждёт подтверждения","status.clientPending":"Клиент готов к активации","status.failed":"Запуск не удался","status.idle":"Готов","status.removed":"Удалён","status.running":"Работает","status.superseded":"Есть более свежий запуск"},"deliverables":{"produced.label":"Создано","produced.more":"+ {count} файлов","produced.moreOne":"+ 1 файл","produced.open":"Открыть {name}","produced.showInFolder":"Показать в папке"},"directory-browser":{"browser.cancel":"Отмена","browser.create":"Создать","browser.createIn":"Новая папка в «{name}»","browser.editPath":"Изменить путь","browser.folderName":"Имя папки","browser.home":"Домашняя папка","browser.loading":"Загрузка…","browser.newFolder":"Новая папка","browser.open":"Открыть","browser.showHidden":"Показывать скрытые файлы","browser.title":"Выбор рабочей папки","browser.truncated":"Слишком много папок; показано только начало.","browser.untitledFolder":"Без имени"},"dsh-auto-collapse":{"collapse":"Свернуть процесс","collapseSettings":"Свернуть настройки","customStatusPrompt":"Свой промпт статуса","expand":"Развернуть процесс","expandSettings":"Развернуть настройки","hint":"Если пусто, возвращается исходный промпт Deep diving...","overridden":"Переопределено","processed":"Обработано","resetDefault":"По умолчанию","statusPrompt":"Промпт статуса","think":"Рассуждения","unwritten":"Не сохранено"},"dsh-context":{"agents.billed":"{n} выставлено к оплате","agents.chip.count":"{n} агентов","agents.chip.running":"{n} запущено","agents.chip.tokens":"{n} токенов в контексте","agents.continuable":"продолжаемый","agents.legend.free":"свободное окно","agents.more":"Ещё {n} не показано","agents.oneshot":"одноразовый","agents.open":"нажмите, чтобы открыть →","agents.requests":"{n} запросов","agents.running":"выполняется","agents.self":"текущий","agents.solo":"Пока нет суб-агентов — когда агент делегирует работу через инструмент суб-агентов, сеть будет отображаться здесь","agents.sub":"Живой контекст этого агента и его подчиненных агентов · нажмите на узел, чтобы открыть его сессию","agents.title":"Сеть агентов","attach.close":"Закрыть","attach.image":"Изображение","attach.images":"Изображения","attach.loadFailed":"Не удалось загрузить · нажмите, чтобы повторить","attach.loading":"…","attach.open":"Открыть изображение полностью","attach.other":"Другой контент","attach.preview":"Превью изображения","attach.raw":"Сырой","attach.sent":"Отправлено","attach.token":"Токен","attach.tokensTip":"Расчетная стоимость токенов через официальное преобразование размера изображения DeepSeek (ограничение в 384 токена на изображение)","block.answer":"Ответ","block.content":"Контент","block.line":"1 строка","block.lines":"{n} строк","block.result":"Результат","block.summary":"Сводка","block.thinking":"Обоснование","brief.input":"В","brief.inputTip":"Что было введено после предыдущего ответа и перед этим запросом — обычно результаты предыдущего вызова инструмента; начало нового оборота не содержит ничего нового","brief.locate":"Показать в контекстном браузере","brief.more":"+{n}","brief.noInputs":"(ничего нового)","brief.reply":"Ответ","brief.replyTip":"Что модель вернула на этом шаге (текстовый ответ или вызовы инструментов) — результаты вызовов отображаются в строке In следующего бара","brief.turn":"Пользователь","brief.turnTip":"Сообщение пользователя, которое открыло этот ход — каждый шаг хода ссылается на него","browser.approx":"Некоторые удаленные сообщения этого шага превышают срок хранения — приведенное ниже восстановление является приблизительным","browser.deltaHint":"по сравнению с предыдущим ходом","browser.headerMetaOnly":"Эта среда не может загрузить заголовки по запросу; только оценка токенов","browser.items":"{n} элементов","browser.live":"В прямом эфире (Следующий запрос)","browser.liveNow":"В прямом эфире · Следующий запрос","browser.loadFailed":"Не удалось загрузить — нажмите, чтобы повторить","browser.loading":"Загрузка полного содержимого из более старой истории сеанса…","browser.missingLive":"… {n} предыдущих сообщений также являются частью контекста (за пределами предоставленного окна)","browser.noContent":"Полное содержимое находится за пределами загруженного окна сообщений (загрузите более старую историю в Чате для просмотра)","browser.noEpoch":"Содержание заголовка (Системное сообщение / Схемы инструментов) этого шага находится за пределами удержания","browser.noHeader":"Обслуживается устаревшей версией плагина: только оценка токенов, без содержимого","browser.noSystem":"В заголовке этого запроса не было системного промпта","browser.notInLog":"Этот элемент больше не находится в журнале сессии (возможно, он был удалён или очищен)","browser.preview":"Предварительный просмотр","browser.rowNoMatch":"Нет строк, соответствующих текущему фильтру","browser.search.assistant":"Фильтровать по ответам или звонкам…","browser.search.inject":"Фильтровать введённый контекст…","browser.search.tool":"Фильтровать по инструменту или аргументам…","browser.search.user":"Фильтровать по тексту сообщения…","browser.title":"Контекстный браузер","call.exit":"выход {n}","call.fail":"Не удалось","call.ok":"ОК","cat.assistant":"Сообщения ассистента","cat.inject":"Введённый контекст","cat.system":"Системное сообщение","cat.tool":"Результаты инструмента","cat.tools":"Схемы инструментов","cat.user":"Сообщения пользователя","cmd.close":"Закрыть","cmd.desc":"Просмотр текущего контекста макияжа, просмотр состава по шагам","detail.actual":"Фактический запрос {n}","detail.cache":"Кэш {n}%","detail.estTotal":"Примерно ≈ {n}","detail.lastStep":"Последний шаг","detail.output":"Вывод {n}","detail.step":"Поверните {t} · Шаг {s}","detail.turn":"Поверните {t} · {n} шагов","error":"Не удалось прочитать данные контекста:","error.retry":"Повторить","ev.compaction":"Контекст сжат (резюме заменено {n} сообщений)","ev.mode.plan.off":"Режим плана выключен","ev.mode.plan.on":"Режим планирования включён","ev.model":"Модель изменена: {a} → {b}","ev.prune":"Вывод инструмента обрезан","ev.skill":"Навык внедрён ({name})","events.at":"Поверните {t} · Шаг {s}","events.empty":"Событий контекста пока нет (компактизация, инъекции, переключения моделей отображаются здесь)","events.range":"Поверните {t} · Шаг {a}→{b}","events.rangeTo":"Поверните {a} · Шаг {as} → Поверните {b} · Шаг {bs}","events.title":"Контекстные события","files.chipTip":"{files} файлов · {ops} операций","files.deltaTip":"Совокупное изменение строк, оцененное по аргументам вызовов редактирования/записи: + добавлено / − удалено","files.empty":"Нет чтений, записей или поиска файлов в этом диапазоне","files.errs":"{n} не удалось","files.files":"{n} файлов","files.form.dir":"Каталог","files.form.image":"Изображение","files.form.text":"Файл","files.glyph.archive":"Архив","files.glyph.assets":"Активы","files.glyph.build":"Результат сборки","files.glyph.config":"Конфигурация","files.glyph.data":"Данные / манифест","files.glyph.database":"База данных","files.glyph.deps":"Зависимости","files.glyph.docker":"Docker","files.glyph.docs":"Документы","files.glyph.document":"Документ","files.glyph.font":"Шрифт","files.glyph.hidden":"Каталог метаданных","files.glyph.ignore":"Игнорировать правила","files.glyph.lang.c":"C","files.glyph.lang.cpp":"C++","files.glyph.lang.csharp":"C#","files.glyph.lang.dart":"Dart","files.glyph.lang.go":"Перейти","files.glyph.lang.html":"HTML","files.glyph.lang.java":"Java","files.glyph.lang.js":"JavaScript","files.glyph.lang.kotlin":"Kotlin","files.glyph.lang.lua":"Lua","files.glyph.lang.php":"PHP","files.glyph.lang.ruby":"Рубин","files.glyph.lang.rust":"Ржавчина","files.glyph.lang.scala":"Скала","files.glyph.lang.svelte":"Свелт","files.glyph.lang.swift":"Быстро","files.glyph.lang.ts":"TypeScript","files.glyph.lang.vue":"Вью","files.glyph.license":"Лицензия","files.glyph.lock":"Файл блокировки","files.glyph.log":"Войти","files.glyph.markdown":"Документ с разметкой","files.glyph.media":"Медиа","files.glyph.notebook":"Блокнот","files.glyph.python":"Питон","files.glyph.root":"Корневая папка рабочей области","files.glyph.scripts":"Скрипты","files.glyph.sheet":"Таблица","files.glyph.shell":"Оболочка","files.glyph.style":"Стили","files.glyph.tests":"Тесты","files.hits":"{n} попаданий","files.kind.all":"Все","files.kind.image":"Изображения","files.kind.read":"Читать","files.kind.search":"Искали","files.kind.write":"Написано","files.locate":"Показать эту операцию в Обозревателе контекста","files.noMatch":"Нет файлов, соответствующих текущим фильтрам","files.open":"Открыть на вашем устройстве","files.readEst":"Строк прочитано, оценка на основе аргумента limit","files.readTip":"Прочитайте строки {a}–{b}","files.scopeLatest":"До последнего · следует за выбором трендового графика","files.search":"Фильтровать по пути…","files.sort.count":"Самый активный","files.sort.latest":"Последние","files.sort.path":"По пути","files.sortTip":"Сортировать файлы по количеству операций (выбранного вида при активной метке вида), последней активности или пути","files.title":"Активность файла","footer":"Оценка: та же эвристика с фиксированной плотностью, что и встроенный tokenMeter в dsh (~4 символа ≈ 1 токен); «фактическое» — это использование, сообщаемое провайдером.","form.catalog":"Обновление каталога","form.context":"Контекстная инъекция","form.instructions":"Инструкции","form.notice":"Уведомление","form.recall":"Напомнить","form.relay":"Агентский ретранслятор","form.snapshot":"Снимок состояния","gran.delta":"Дельта","gran.modeHint":"Итого: суммарное значение; Дельта: изменение по сравнению с предыдущим запросом","gran.step":"Шаг","gran.total":"Всего","gran.turn":"Повернуть","jump.title":"Посмотреть этот шаг во вкладке Контекст","kind.compaction":"Компактный","kind.inject":"Внедрить","kind.mode":"Режим","kind.model":"Переключить","kind.prune":"Обрезать","loading":"Чтение журнала сессии…","node.calls":"Звонки","node.empty":"(пустой ответ)","node.failed":"Выполнение инструмента завершилось с ошибкой","node.nonText":"(сообщение без текста)","node.skillTag":"Навык · {name}","node.snapshot":"Снимок:","node.toolResult":"Результат инструмента","nodes.empty":"Нет видимых сообщений прямо сейчас","nodes.hint":"в настоящее время видимые модели, сначала новые","nodes.more":"… {n} предыдущих сообщений пропущено","nodes.title":"Сообщения","overview.compactReserve":"Резерв автоуплотнения: автоуплотнение срабатывает при {pct}% окна — эта область обычно сохраняется как запас, фактически не используется.","overview.estimate":"токены (примерно)","overview.free":"Бесплатное окно","overview.ofUsed":"из использованного контекста","overview.title":"Текущий контекст","overview.used":"использовано контекста","plugin.github":"GitHub","plugin.hint":"Лучший плагин контекста для DSH ⭐","plugin.name":"Плагин","plugin.settings":"Настройки","plugin.settingsOpen":"Открыть в Настройках","plugin.title":"Информация о плагине","rich.md":"Markdown","rich.md.copied":"Скопировано","rich.md.copy":"Копировать","rich.md.footnotes":"Сноски","rich.raw":"Сырьё","rich.toMd":"Просмотреть как Markdown","rich.toRaw":"Просмотреть исходный текст","settings.collapse":"Свернуть","settings.desc":"Настройки отображения для панели Context","settings.expand":"Развернуть","settings.fileSort":"Сортировка файлов по умолчанию","settings.gran":"Гранулярность трендов по умолчанию","settings.mode":"Отображение трендов по умолчанию","settings.readOnly":"Настройки доступны только для чтения в этой среде","settings.title":"Контекст","stats.cacheHit":"Кэш-попадания","stats.compactions":"Компактизации","stats.cost":"Расч. стоимость","stats.costHit":"попадание","stats.costMiss":"пропустить","stats.costOut":"Вывод","stats.costPriceHead":"Тарифы за 1 миллион токенов (пиковый | внепиковый по половине цены):","stats.costTip":"Примерная совокупная стоимость всей сессии по прайс-листу DeepSeek: входные данные разделены по попаданию/промаху кэша, выходные данные включают рассуждения; каждый запрос оценивается по пиковой ставке (01:00–04:00, 06:00–10:00 UTC) или по половинной ставке вне пикового времени в зависимости от времени запроса. Применяется к deepseek-v4-flash / deepseek-v4-pro на любом провайдере; цены зафиксированы, только для справки.","stats.hint":"За период сохранённой истории (аналогично графику истории)","stats.images":"Изображения","stats.injects":"Инъекции","stats.prunes":"Чернослив","stats.steps":"Шаги","stats.title":"Статистика контекста","stats.toolCalls":"Вызовы инструментов","stats.turns":"Переключается","tab":"Контекст","timing.callTimes":"Вызовов: {n}","timing.empty":"Данных о таймингах пока нет — они появятся в процессе беседы","timing.gen":"Генерация LLM","timing.hint":"Распределение времени активности за всю сессию","timing.other":"Накладные расходы","timing.title":"Статистика таймингов","timing.toolTimes":"Запусков: {n}","timing.tools":"Вызовы инструментов","timing.total":"Время активности","timing.ttft":"TTFT","tip.actual":"(фактическое {n})","tip.delta":"Дельта {n}","tip.step":"Повернуть {t} · Шаг {s}","tip.total":"Всего ≈ {n}","tip.turn":"Поверните {t} · {n} шагов","tip.turn1":"Шаг {t} · 1 действие","tokens.cacheHit":"Попадание в кэш","tokens.cacheRead":"Вход из кэша","tokens.cacheWrite":"Запись в кэш","tokens.hint":"Суммарное использование по данным провайдера","tokens.output":"Выход","tokens.outputNote":"вкл. рассуждения","tokens.title":"Статистика токенов","tokens.uncached":"Вход без кэша","tool.desc":"Описание","tool.jsonHide":"Свернуть","tool.jsonToggle":"Просмотреть сырой JSON","tool.noMatch":"Нет инструментов, соответствующих текущему фильтру","tool.params":"Параметры","tool.paramsEmpty":"(без параметров)","tool.plugin":"Регистрирующий плагин этого инструмента (для справки)","tool.search":"Фильтровать по названию, описанию или параметрам…","tool.sort.name":"По имени","tool.sort.size":"По размеру","tool.sortTip":"Сортировать инструменты по размеру токена (по умолчанию) или по названию","tool.unknown":"Неизвестный плагин","tool.unknownTitle":"Инструмент был зарегистрирован до загрузки контекстного плагина, или его плагин был выгружен, поэтому его провайдер не может быть определен","tools.more":"из {n}","tools.top":"Лучшие схемы инструментов:","trend.empty":"Отправьте сообщение, и состав контекста каждого запроса модели появится здесь","trend.hint":"Наведите курсор для просмотра деталей, ✂ обозначает уплотнение/удаление, Шаг/Ход переключает детализацию","trend.title":"История контекста"},"dsh-hooks":{"addHook":"+ Добавить hook","currentHooks":"Текущие хуки","fillRunOrChannel":"hook #{i}:укажите команду run или выберите канал уведомлений","hookTriggered":"срабатываний хука","noHooks":"Нет хуков, нажмите «Редактировать» для добавления","notifyWebhook":"Webhook уведомлений","routeUnavailable":"Не удаётся получить доступ к маршрутам /dsh-hooks/*: убедитесь, что плагин dsh-hooks установлен и DSH перезапущен."},"dsh-image-gen":{"f.apiKeyEnv":"Справка по API-ключу","f.apiKeyEnvHint":"Ссылка на учетные данные / переменная окружения, содержащая ключ API FAL. Префикс авторизации \"Key \" добавляется автоматически.","f.baseURL":"Базовый URL очереди","f.baseURLHint":"Базовый URL очереди FAL (queue.fal.run).","f.customBaseURL":"Пользовательский API: базовый URL","f.customBaseURLHint":"Корень API без завершающего слеша. Запрос отправляется на {base}/images/generations.","f.customKeyEnv":"Пользовательский API: ссылка на ключ","f.customKeyEnvHint":"Ссылка на учётные данные / переменная окружения с API-ключом. Пустое значение означает отсутствие заголовка авторизации для шлюзов, которым он не требуется.","f.customModel":"Пользовательский API: модель","f.customModelHint":"Идентификатор модели, отправленный в этот API, например, gpt-image-1.","f.customSize":"Пользовательский API: фиксированный размер","f.customSizeHint":"Оставьте пустым, и именованный размер будет переведён автоматически (square_hd → 1024x1024). Указывайте размер только для API, требующих конкретных размеров.","f.defaultFormat":"Формат по умолчанию","f.defaultFormatHint":"Используется, если вызов инструмента не содержит output_format.","f.defaultSize":"Размер изображения по умолчанию","f.defaultSizeHint":"Используется, когда вызов инструмента пропускает параметр image_size.","f.deliverAs":"Как изображение попадает в чат","f.deliverAsHint":"ссылка — результат представляет собой текст со ссылкой, и карта отображает изображение из неё; работает с любой моделью чата. изображение — результат содержит само изображение, которое текстовые модели чата не могут прочитать, поэтому для этого требуется dsh-vision-bridge или модель с поддержкой зрения.","f.inherit":"Наследовать (по умолчанию)","f.model":"Модель (FAL)","f.modelHint":"Идентификатор модели FAL, вызывается как {baseURL}/{model}. Используется, когда провайдер — fal.","f.outputDir":"Выходной каталог","f.outputDirHint":"Относительно рабочего каталога сессии; абсолютный путь используется как есть.","f.pollIntervalMs":"Интервал опроса (мс)","f.pollIntervalMsHint":"Интервал опроса статуса во время выполнения задачи.","f.provider":"Провайдер","f.providerHint":"fal — очередь FAL, настроенная ниже. custom — любой API, совместимый с OpenAI, настраивается далее.","f.timeoutMs":"Таймаут (мс)","f.timeoutMsHint":"Общее время ожидания генерации: отправка + опрос + загрузка.","p.apiKeyEnv":"Пример: FAL_API_KEY","p.baseURL":"Пример: https://queue.fal.run","p.customBaseURL":"Пример: https://api.openai.com/v1","p.customKeyEnv":"Пример: OPENAI_API_KEY","p.customModel":"Пример: gpt-image-1","p.customSize":"Пример: 1024x1024","p.model":"Пример: fal-ai/flux-2/klein/9b","p.outputDir":"Пример: сгенерированные/изображения","p.pollIntervalMs":"Пример: 2000","p.timeoutMs":"Пример: 180000","settings.collapse":"Свернуть","settings.credentialHint":"API-ключи находятся в разделе Учетные данные в указанном наборе ссылок (Настройки → Учетные данные).","settings.description":"Инструмент generate_image. Провайдер: очередь FAL или любой API изображений, совместимый с OpenAI.","settings.discard":"Отменить","settings.expand":"Развернуть","settings.invalidNumber":"Введите корректное число","settings.navLabel":"Генерация изображений","settings.overridden":"Переопределить","settings.readOnly":"Это развертывание доступно только для чтения: настройки нельзя изменить через графический интерфейс.","settings.reset":"Сбросить","settings.save":"Сохранить","settings.saveFailed":"Не удалось сохранить","settings.saving":"Сохранение…","settings.title":"Генерация изображений","settings.unavailable":"Обвязка еще не опубликовала настройки этого плагина. Если она только что перезапустилась, раздел появится сам через несколько секунд.","settings.unsaved":"Несохранённые изменения"},"dsh-kanban":{"archive.empty":"В архиве пусто.","archive.hint":"Карточки, отстоявшие свой срок в «Выполнено». Ничего не удалено: возвращённая карточка встаёт в ту же колонку, откуда ушла.","archive.restore":"Вернуть на доску","archive.since":"в архиве {ago}","batch.hint":"Одна сессия на все. Задачи приходят по очереди: агент берёт следующую, закончив текущую. В «В работе» уезжает только первая — остальные ждут своей очереди там, где лежат.","batch.start":"Запустить","batch.title":"Запустить {n} задач в одном чате","board.allRepos":"Все репозитории","board.archive":"Архив","board.back":"В чат","board.backHint":"Закрыть доску и вернуться в разговор","board.clearFilters":"Снять отборы","board.collapse":"Свернуть колонку","board.empty":"Задач пока нет.","board.expand":"Развернуть колонку","board.limit":"предел {n}","board.loading":"Доска загружается…","board.newTask":"Задача","board.noMatch":"Ничего не найдено.","board.noRepo":"без проекта","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":"Простая доска","card.move":"перенести","card.pack":"пачка {at} из {total}","card.packHint":"Запущены вместе, одной сессией; агент берёт их в этом порядке.","card.pick":"Отметить для группового запуска","card.queue":"в очередь...","card.stop":"остановить","card.toChat":"перейти в чат","card.unqueue":"снять с очереди","chip.moveTo":"Перенести в","chip.note":"Оставить заметку","chip.noteHint":"Заметка дописывается в тело задачи. Тело уходит агенту первым сообщением, поэтому заметка до запуска попадёт в работу, а после запуска — нет.","chip.noteSave":"Дописать","chip.openCard":"Перейти к карточке","column.backlog":"Бэклог","column.cleanup":"Уборка","column.deploy":"Выкатка","column.done":"Выполнено","column.in-progress":"В работе","column.review":"Ревью","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":"Новая задача","discard":"Отменить","error.bad-repo-name":"В имени репозитория допустимы только латинские буквы, цифры, точка, дефис и подчёркивание.","error.crossSite":"Запрос отклонён как межсайтовый.","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.author":"Автор","facet.priority":"Приоритет","facet.release":"Выпуск","facet.repo":"Репозиторий","facet.risk":"Риск","facet.scope":"Область","facet.signal":"Сигнал","facet.status":"Статус","facet.type":"Тип","field.archiveAfterDays":"Убирать в архив из «Выполнено» через, дней","field.boardToolEnabled":"Разрешить агенту двигать карточки","field.columnNames":"Свои названия колонок","field.defaultProjectRoot":"Корень проектов","field.giteaOwner":"Организация Gitea","field.giteaTokenRef":"Имя учётной записи","field.giteaUrl":"Адрес инстанса","field.pushToGitea":"Закрывать issue в Gitea","field.replyInstruction":"Постоянная приписка","field.staleAfterMin":"Считать задачу молчащей после, минут","field.startPrompt":"Шаблон первого сообщения","field.syncIntervalSec":"Сверяться с Gitea раз в, секунд","field.watchRepos":"Сузить подхват до репозиториев","field.webhookSecretRef":"Имя учётной записи для вебхука","field.wipInProgress":"Предел «В работе»","field.wipReview":"Предел «Ревью»","group.general":"Общее","group.gitea":"Gitea","group.limits":"Пределы колонок","group.sync":"Автоперемещение","hint.archiveAfterDays":"Считается с попадания карточки в «Выполнено». Ноль — оставлять всё на доске.","hint.boardToolEnabled":"Выключено, пока скилл воркфлоу запрещает этому CLI трогать канбан.","hint.columnNames":"Пары «идентификатор=Название» через запятую, например «backlog=Идеи, review=Проверка». Пусто — обычные названия.","hint.defaultProjectRoot":"Где лежат рабочие копии проектов. Пусто — рабочая папка харнесса.","hint.giteaOwner":"Чьи репозитории смотрит доска. Пусто — определится сама, пока у токена ровно одна организация.","hint.giteaTokenRef":"ИМЯ учётной записи DSH, в которой лежит токен. Сам токен сюда не вводить.","hint.giteaUrl":"Например https://gitea.example.com. Пусто — импорт недоступен.","hint.label":"Пусто — метка для этой колонки не ставится.","hint.limit":"Ноль — без предела. Превышение подсвечивается, но не запрещается.","hint.pushToGitea":"Карточка, дошедшая до «Выполнено», закрывает свой issue. Меток доска не ставит: стадия и так видна по ветке и pull request.","hint.replyInstruction":"Дописывается к каждому первому сообщению — например язык ответа. Пусто — ничего не добавляется.","hint.staleAfterMin":"Помечаются только задачи с сессией. Ноль отключает отметку.","hint.startPrompt":"Шаблон первого сообщения агенту. Пусто — встроенный шаблон.","hint.syncIntervalSec":"Ноль отключает сверку. Меньше пятнадцати секунд поднимается до пятнадцати.","hint.watchRepos":"Через запятую, «владелец/репо» или просто «репо». Пусто — все репозитории организации, где есть открытые задачи.","hint.webhookSecretRef":"ИМЯ учётной записи DSH с секретом вебхука Gitea. Пусто — остаётся только опрос.","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}»?","order.manual":"Как разложено","order.new":"Сначала новые","order.old":"Сначала старые","panel.agentPreset":"Профиль агента","panel.archive":"В архив","panel.author":"завёл {who}","panel.bodyLoading":"читаю описание…","panel.close":"Закрыть","panel.continue":"Продолжить","panel.continueHint":"У задачи один чат: открывается прежняя сессия, а не новая.","panel.created":"заведена {ago} назад","panel.delete":"Удалить","panel.deleteConfirm":"Удалить «{title}»? Отменить будет нельзя.","panel.issue":"Issue","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.provider":"Провайдер","panel.refresh":"Обновить из Gitea","panel.start":"Начать","panel.startHint":"Откроется отдельная сессия агента по этой задаче. Ветку и worktree заводит агент после preflight, а не отсюда.","panel.starting":"Запускается…","panel.updated":"последнее изменение {ago} назад","plan.counter":"{done} из {total}","plan.title":"План агента","queue.add":"В очередь","queue.hint":"Задача встанет в очередь сессии: агент возьмёт её, закончив текущую работу. До этого карточка остаётся там, где лежит.","queue.option":"{title} - задач: {n}","queue.session":"Сессия","queue.title":"Поставить в очередь идущей сессии","save":"Сохранить","section.label":"Канбан","settings.loading":"Настройки загружаются…","settings.readOnly":"Настройки в этой сессии доступны только для чтения.","settings.saveFailed":"Не сохранены поля: {fields}","settings.saved":"Сохранено.","settings.unavailable":"Хост не знает пространство настроек dsh-kanban. Перезапустите веб-интерфейс после установки плагина.","state.queued":"в очереди · {n}","state.running":"в работе","state.stopped":"остановился","stop.idle":"Агент не работал, останавливать было нечего.","stop.no-session":"У задачи нет сессии.","subtitle":"Доска задач: issue из Gitea и отдельная сессия под задачу","sync.failed":"сверка не проходит","sync.lastSeen":"последняя удачная сверка {ago} назад","sync.never":"сверки с Gitea ещё не было","sync.neverSeen":"удачной сверки с запуска харнесса не было","sync.okAgo":"сверено {ago} назад","sync.running":"сверяемся с Gitea…","time.day":"{n} дн","time.hour":"{n} ч","time.min":"{n} мин","time.now":"только что","title":"Канбан"},"dsh-market":{"actWhy":"Почему не активен?","agentBusyInstall":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед установкой. Установка изменяет файлы плагина, поэтому работающий агент может завершиться с ошибкой в процессе.","agentBusyUpdate":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед обновлением. Обновления заменяют файлы плагина на месте, поэтому работающий агент может завершиться с ошибкой или смешать версии в процессе выполнения.","aiFix":"Починить с агентом","aiFixConservative":"Действуй осторожно: чини только явные ошибки из списка выше (падения при запуске, дубли записей, подтверждённые расхождения зависимостей). Предупреждения и записи к сведению (например, неподтверждённые диапазоны peer-зависимостей) трогай, только если они связаны с явной ошибкой. Не делай лишних обновлений и перестановок; объясняй каждое изменение и жди подтверждения.","aiFixCopied":"Промпт скопирован — вставьте его в новый диалог и отправьте, когда будете готовы","aiFixDetect":"Шаг 1 — сначала определитесь. Прежде чем что-либо трогать, убедитесь, что процесс, в котором вы работаете, ЭТОТ экземпляр DeepSeek Harness, к которому относится данный профиль (то есть текущая диагностируемая композиция — это та, в которой вы сейчас находитесь). Проверьте, указывает ли текущий каталог / $DSH_HOME / командная строка на этот профиль или работает ли процесс внутри deepseek-harness. Если не можете определить, считайте, что ответ «да» (безопасный выбор).","aiFixFail":"Буфер обмена недоступен — скопируйте диагностику ниже вручную","aiFixHint":"Передать диагностику новой сессии агента (скопировано в буфер; отправлять или нет — решаете вы)","aiFixIfSelf":"Если ДА — вы являетесь этим инструментом: никогда не изменяйте текущую конфигурацию, инструмент или основные пакеты на месте (не редактируйте cordis.patch.yml, не меняйте порядок/включайте/отключайте пакеты, не устанавливайте/удаляйте/обновляйте плагины, не переустанавливайте зависимости, не обновляйте/перезапускайте dsh). Три шага: 1) только анализ в режиме чтения, ничего не изменяйте; 2) создайте apply.sh/.bat (изменения для этого исправления) и rollback.sh/.bat (полностью отменяет его); оба идемпотентны — apply создает снимки только если их еще нет и никогда не перезаписывает существующий снимок (если он существует, значит apply уже выполнялся, так что откатитесь или подтвердите перед повторным запуском), а rollback восстанавливает из этого снимка, так что частично выполненный apply все еще можно откатить, а повторный rollback безопасен; 3) дайте мне запустить apply во внешнем терминале и вставьте stdout/stderr обратно вам. Укажите причину и ждите моего подтверждения на каждом шаге — никогда не запускайте это самостоятельно.","aiFixIntro":"Помоги починить проблемы с плагинами DeepSeek Harness (профиль: {0}). Диагностика показала:","aiFixScope":"Можно менять порядок в dsh.profile.bundles, включать и выключать плагины, править cordis.patch.yml. Учти: официальные бандлы трогать нельзя; прежде чем что-то менять, изложи план.","all":"Все","alreadyInstalled":"✓ Установлен","approveBuilds":"Разрешить сборочные скрипты и повторить","autoBackup":"Резервная копия раз в сутки (при открытии маркета)","backTop":"Наверх","backupDone":"Копия загружена","backupDownload":"Выгрузить копию","backupHint":"Включает список плагинов и настройки профиля, но не node_modules. Восстановление ставит плагины заново по списку.","backupImport":"Импортировать и посмотреть","backupLocal":"Локальный файл","backupWorking":"Выполняется…","brokenBundleBanner":"Эти плагины теперь имеют клиентский пакет, который не будет обрабатываться; страница может отображаться пустой после обновления — рекомендуется выполнить откат:","buildsSkipped":"Этому плагину нужны сборочные скрипты; по умолчанию они заблокированы ради безопасности. Разрешите их и переустановите:","busyWait":"Уже выполняется другая операция — дождитесь её окончания (установка, обновление и удаление идут по одной)","cancel":"Отмена","cancelOp":"Отменить","cancelled":"Отменено","cancelling":"Отмена…","catConflict":"Конфликты","catDeps":"Зависимости","catInfo":"Информация","catOrder":"Порядок","catRisk":"Риск","catWarn":"Предупреждение","catsLess":"Свернуть","catsMore":"Ещё","checkBundles":"Порядок загрузки плагинов","checkBundlesEmpty":"Слои плагинов не объявлены","checkCommunity":"сообщество","checkDir":"каталог","checkDuplicates":"Повторяющиеся записи плагинов","checkDuplicatesEmpty":"Повторов нет","checkEntries":"записей (идентификаторы загрузчика)","checkErrors":"Ошибки","checkErrorsEmpty":"Ошибок нет","checkHoisted":"поднят","checkIssues":"Найдены проблемы","checkLoadFail":"Не удалось загрузить диагностику: ","checkLoading":"Анализ профиля…","checkMultiEmpty":"Пакетов ядра в нескольких версиях нет","checkMultiVersion":"Пакеты ядра в нескольких версиях","checkOfficial":"официальный","checkOrderTip":"порядок загрузки бандла сообщества конфликтует с объявленными правилами before/after","checkOrphans":"Неверные записи конфига","checkOrphansEmpty":"Неверных записей нет","checkOverridden":"переопределяет","checkOverrides":"Переопределения","checkOverridesEmpty":"Переопределений нет","checkPatch":"файл патча","checkPeerEmpty":"Расхождений версий зависимостей нет","checkPeerInfo":"{0} записей к сведению (не подтверждено)","checkPeerInfoTier":"Информация о зависимостях","checkPeerInfoTierEmpty":"Нет записей информационных зависимостей","checkPeerMismatches":"Расхождения версий зависимостей","checkPeerOverview":"расхождений: {0} · к сведению: {1}","checkPeerRisk":"Риски зависимостей","checkPeerRiskEmpty":"Нет несоответствий уровней риска зависимостей","checkPeerSatisfied":"Удовлетворены зависимости","checkPeerSatisfiedEmpty":"Нет удовлетворяющих записей зависимостей","checkPeerWarning":"Предупреждения о зависимостях","checkPeerWarningEmpty":"Нет несоответствий зависимостей на уровне предупреждений","checkProfile":"профиль","checkRange":"объявленный диапазон","checkRefresh":"Проверить заново","checkResolved":"разрешённая версия","checkSatisfied":"удовлетворено","checkSource":"источник","checkUnknown":"неизвестно","checkUnsatisfied":"не удовлетворено","checkWarnings":"Предупреждения","checkWarningsEmpty":"Предупреждений нет","cmdDetails":"Команда установки","comments":"Комментарии","commentsError":"Не удалось загрузить комментарии. Проверьте подключение и попробуйте снова.","commentsLoading":"Загрузка комментариев…","commentsLoginHint":"Вход в аккаунт откроется в новой вкладке. После авторизации на GitHub вернитесь сюда — комментарии обновятся.","commentsNote":"Комментарии поступают из GitHub Discussions. Открытие этого подключается к giscus.app и GitHub; для публикации требуется аккаунт GitHub.","commentsOnGitHub":"Прочитайте обсуждение на GitHub","commentsRetry":"Попробуйте снова","commentsTitle":"Комментарии","compatRiskBanner":"Обнаружен риск несовместимости — откройте Диагностику перед перезапуском или откатите эту операцию.","compatRiskBannerNoRollback":"Обнаружен риск несовместимости — откройте Диагностику перед перезапуском.","confirm":"Подтвердить","confirmInstall":"Подтвердить установку","confirmRemove":"Подтверждаете?","confirmTitle":"Установка","confirmWarn":"Плагины — сторонний код сообщества. Устанавливая, вы доверяете этому источнику; сборочные скрипты по умолчанию заблокированы.","conflictBody":"Конфликт с установленным плагином — остаться может только один:","conflictDeclined":"Вы сохранили установленные плагины; этот не был установлен","conflictDetails":"Детали","conflictKeep":"Оставить то, что у меня есть","conflictKeepNote":"Оставить этот","conflictOutcomeInstall":"установить","conflictOutcomeKeep":"оставить","conflictOutcomeRemove":"удалить","conflictOutcomeSkip":"пропустить","conflictReplaceFailed":"Замена не завершена. Перечисленные ниже плагины были удалены и не восстановлены — проверьте их:","conflictReplacing":"Замена…","conflictReverted":"Отменено автоматически; ничего не было изменено","conflictSwap":"Переключиться на этот","conflictSwapNote":"Настройки удалённых плагинов сохраняются, чтобы вы могли установить их позже","conflictTitle":"Невозможно установить: конфликт с установленным плагином","conflictWhy":"cordis отклоняет дерево плагинов, содержащее дублирующиеся идентификаторы записей; сохранение этого плагина предотвратит запуск DeepSeek Harness.","credsWarning":"Внимание: в копию попадают настройки профиля и файлы, где могут лежать секреты (config.toml, .env и подобные). Локальная выгрузка ничего не вырезает, поэтому выгружайте на WebDAV, которому доверяете.","deprecatedBadge":"Устарел","deprecatedWarn":"Каталог помечает этот плагин как устаревший; новым пользователям ставить его не советуют.","descCollapse":"Показать меньше","descExpand":"Показать больше","diagExplain":"Что это","diagExplainText":"Эта страница ищет плагины, конфликтующие друг с другом, несовпадения версий зависимостей и неверный порядок загрузки. Термины:","diagOkAll":"Всё в порядке: конфликтов, проблем с зависимостями и порядком не найдено","diagTermBundle":"бандл — один пакет плагина, применяется по порядку","diagTermEntry":"запись — то, что плагин добавляет в работающую композицию","diagTermOrder":"порядок загрузки — очерёдность активации; более поздний может перекрыть более ранний","diagTermOrphan":"неверная запись — конфиг ссылается на то, чего нет","diagTermPeer":"peer-зависимость — пакет, который плагин ждёт от хоста","diagTermShadow":"перекрытие — старая копия из плагина закрывает более новую хостовую","disable":"Выключить","disabledState":"Выключен","dismiss":"Скрыть","dismissNotice":"Скрыть это уведомление","duplicateNames":"Плагины с одинаковыми именами (к сведению, это не конфликт)","empty":"Подходящих плагинов нет","enable":"Включить","envFix":"Настроить автоматически","envFixFail":"Автоматическая настройка не удалась — выгрузите журнал и пришлите нам файл","envFixing":"Настройка…","envMissing":"Перед установкой плагинов нужен один небольшой компонент","exportLog":"Выгрузить журнал","exportLogFail":"Не удалось выгрузить журнал","exportedLog":"Журнал выгружен: dsh-market-log.txt — приложите его к обращению","exportingLog":"Выгрузка…","favoriteAdd":"Добавить в избранное","favoriteBusy":"Выполняется операция с плагином. Изменение добавлено в очередь — подождите немного.","favoriteFailed":"Не удалось обновить избранное. Попробуйте снова.","favoriteRemove":"Удалить из избранного","favoriteUnavailable":"Избранное недоступно. Обновите страницу или перезапустите dsh web.","favoritesClearStale":"Удалить устаревшее избранное","favoritesClearingStale":"Удаление…","favoritesEmpty":"В избранном пока ничего нет. Добавляйте плагины в разделах Обзор или Темы.","favoritesPluginsSection":"Плагины ({0})","favoritesResultCount":"Избранное: {0}","favoritesStaleEmpty":"Сохранённые записи больше не найдены в каталоге.","favoritesStaleNote":"Записей из избранного нет в каталоге: {0}","favoritesThemesSection":"Темы ({0})","filter":"Фильтр","filterDir":"Порядок","filterHost":"Версия хоста","filterSort":"Поле сортировки","filterTime":"Вышло за","firstPage":"В начало","gist":"GitHub Gist","gistCreated":"Выгружено:","gistErrAuth":"GitHub не авторизовал: токен неверный или истёк, либо gh CLI не залогинен","gistErrInvalid":"Содержимое Gist повреждено или формат копии не поддерживается","gistErrNetwork":"GitHub недоступен — проверьте сеть или прокси","gistErrNoId":"Для обновления нужен идентификатор Gist — заполните поле или переключитесь на «Создать»","gistErrNotFound":"Gist не найден — проверьте идентификатор или ссылку","gistErrRateLimit":"Достигнут лимит GitHub, либо у токена нет права gist","gistErrTimeout":"GitHub не ответил вовремя — проверьте сеть и повторите","gistExport":"Выгрузить в Gist…","gistExportDone":"Выгружено в Gist","gistExportGo":"Выгрузить","gistExportHint":"Отмечено всё — полная копия вместе с настройками; если снять любую галочку, выгрузятся только выбранные плагины, а настройки — по отдельному флажку.","gistExportSelect":"Выберите плагины для выгрузки","gistId":"Идентификатор или ссылка на Gist (при выгрузке оставьте пустым, чтобы создать новый приватный)","gistImport":"Загрузить из Gist","gistIncludeConfig":"Включить файлы настроек (в них могут быть секреты)","gistModeCreate":"Создать новый приватный Gist","gistModeUpdate":"Обновить Gist из поля","gistNoPlugins":"В этом профиле нечего выгружать","gistNote":"В отличие от локальной выгрузки (архив на этой машине), Gist нужен для переноса между машинами: выгрузите в приватный Gist и загрузите на другом компьютере под тем же аккаунтом. Токен живёт только в памяти этой вкладки и никогда не пишется в браузерное хранилище; если залогинен gh CLI или задан DSH_GITHUB_TOKEN, вводить его не нужно. Gist приватный, до 1 МБ на файл.","gistSelectAll":"Выбрать все","gistSelectNone":"Снять выбор","gistSpecLocal":"локально","gistSrcEnv":"переменная DSH_GITHUB_TOKEN","gistSrcGh":"gh CLI","gistSrcToken":"введён вручную","gistToken":"Токен GitHub (только в памяти вкладки — после обновления страницы введите заново; оставьте пустым, чтобы использовать серверный DSH_GITHUB_TOKEN или залогиненный gh CLI)","gistVerify":"Проверить связь","gistVerifySource":"Проверено — источник токена: {0}","goDiagnose":"Открыть диагностику","gotIt":"Понятно","groupAdd":"Добавить плагин","groupAddEmpty":"Все установленные плагины уже в этой группе","groupAddTheme":"Добавить тему","groupAssign":"Назначить","groupConfirmDelete":"Удалить группу?","groupCreate":"Создать","groupDelete":"Удалить группу","groupEmpty":"Пока пусто","groupMixed":"Включена частично","groupNamePh":"Название группы","groupNew":"Новая группа","groupRemove":"Убрать","groupRename":"Переименовать","hostAll":"Показать все","hostCompatible":"Совместимо с текущим DSH {0}","hostDependencyMore":"ещё находок пропущено: {0}","hostDependencyWarning":"Плагин перечисляет в зависимостях известные общие пакеты хоста DSH. Это может перекрыть хостовую версию; проверка смотрит только манифест и не подтверждает, что в рантайме появился дубль:","hostDetecting":"Определение версии хоста…","hostFilterActive":"Фильтр для DSH {0}; не объявленные плагины остаются видимыми","hostFilterLoading":"Проверка требований хоста {0}/{1}; не объявленные плагины остаются видимыми","hostRequirement":"DSH {0}","hostRequirementLoading":"Чтение требований хоста…","hostRequirementUnavailable":"Требования к хосту неизвестны","hostRequirementUndeclared":"Требования к хосту не объявлены","hostUnknown":"Версия хоста неизвестна","hotBanner":"плагины готовы — обновите страницу, чтобы ими пользоваться","ignoreAllUpdateNotices":"Игнорировать все при этом запуске","ignoreUpdateNotice":"Игнорировать при этом запуске","install":"Установить","installFail":"Установить не удалось","installReplacement":"Установить замену","installedBadge":"✓ Установлен","installedEmpty":"Плагинов сообщества пока нет — загляните во вкладку «Обзор»","installing":"Установка…","lastPage":"В конец","lightboxClose":"Закрыть предпросмотр","lightboxNext":"Следующий","lightboxPrev":"Предыдущий","linkedDev":"подключён как разработка","loadFail":"Не удалось загрузить каталог плагинов, попробуйте позже","loadRetry":"Повторить","loading":"Загрузка каталога…","localOnly":"Адрес WebDAV и учётные данные остаются только в этом браузере.","marketNoToggle":"Сам маркет выключить нельзя","marketUpdate":"Доступно обновление маркета — обновить","migrateContinue":"Подтвердить источник npm","migrateCurrentSource":"Текущий источник","migrateDescription":"Это изменит источник установки плагина, а не только его версию.","migrateFail":"Сбой миграции источника","migrateNpm":"Использовать версию из npm","migrateTargetSource":"Новый источник npm","migrateTitle":"Использовать версию из npm?","migrateWarning":"Пакет npm может поддерживаться другим издателем. Продолжайте, только если доверяете этому сопоставлению каталога.","nav":"Маркет плагинов","nextPage":"Дальше","noGroups":"Групп пока нет — создайте","notInstalled":"Не установлен","noteAdd":"Заметка","noteEdit":"Редактировать заметку","noteMine":"Моя заметка","notePlaceholder":"Опишите это своими словами. Это заменит описание автора.","noteSave":"Сохранить","noteSeeMine":"Вернуться к моей заметке","noteSeeTheirs":"Показать описание автора","noteTheirs":"Оригинал","notesCommits":"Коммиты","notesCommitsRecent":"Последние коммиты (могут не совпадать с установленной версией — только для справки)","notesLink":"Что изменилось","notesLoadFail":"Обновления сейчас недоступны — попробуйте позже.","notesNone":"Этот плагин не публикует заметки об обновлениях.","notesNpm":"Время публикации версии","notesRelease":"Заметки о выпуске","opBlockedCard":"Невозможно установить · подробности","opClear":"Очистить выполненные","opClose":"Свернуть","opDequeue":"Удалить из очереди","opDone":"Готово","opDoneRefresh":"Установлено · обновите страницу для применения","opEmpty":"Нет операций в процессе выполнения","opEmptyHint":"Здесь отображается прогресс установки, обновления и удаления","opInstalling":"Установка","opKind_install":"Установить","opKind_uninstall":"Удалить","opKind_update":"Обновить","opLeaveHint":"Вы можете покинуть эту страницу; вы получите уведомление, когда процесс завершится","opNeedsChoice":"Не удалось установить · откат выполнен автоматически, ничего не изменилось","opNeedsYou":"нужен вам","opQueued":"В очереди","opQueuedAhead":"впереди:","opRetry":"Повторить","opRunning":"Работает","opTitle":"Задачи","orderAlreadyOptimal":"Текущий порядок уже удовлетворяет всем правилам и зависимостям — переставлять нечего","orderApplied":"✓ Применено — перезапустите, чтобы вступило в силу","orderApply":"Применить порядок","orderAutoSort":"Отсортировать автоматически","orderConflicts":"конфликты before/after в текущем порядке","orderDiffHint":"Этот порядок изменит композицию: переопределений {0}, потерянных записей {1}, дублей {2}","orderDown":"↓","orderDrag":"Перетащите, чтобы изменить порядок","orderDragHint":"Тяните ⠿, чтобы переставить; «Применить порядок» сохранит","orderReset":"Сбросить черновик","orderSection":"Порядок загрузки","orderSuggestApply":"Применить предложенный порядок","orderSuggestHint":"Предложенный порядок (отсортирован по правилам before/after):","orderTrialFail":"Статическая проверка композиции не прошла: {0}","orderUp":"↑","orphanBundle":"⚠️ Следующий запуск завершится ошибкой: профиль объявляет эти пакеты, но они не установлены. Переустановите их или удалите из dsh.profile.bundles в файле package.json профиля:","orphanIdRequired":"нет идентификатора","orphanInsertNotArray":"неверный формат","orphanInsertTargetMissing":"цель не найдена","orphanInsertTargetNotGroup":"цель не является группой","orphanNameMismatch":"имя не совпадает","orphanPatchTargetMissing":"цель не найдена","orphanReasonOther":"другое","packagesDone":"обработано пакетов: {0}","pageInfo":"Страница {0} из {1}","partialNote":"Отменено — часть изменений уже применена","patchDisabled":"Выключен патчем","patchForced":"Включён патчем","peerInfoUnverified":"непроверенный","peerRiskAboveMax":"выше явного максимума","peerRiskBelowMin":"ниже заявленного минимума","peerWarnAboveMax":"выше объявленной верхней границы","peerWarnOptional":"необязательный участник","perPage":"На странице","phaseBuilding":"Сборочные скрипты","phaseDownloading":"Загрузка","phaseLinking":"Связывание","phaseResolving":"Разрешение зависимостей","presetApplied":"Применено — перезапустите, чтобы применить","presetApply":"Применить","presetBundleCount":"{0} наборов","presetDelete":"Удалить","presetDeleted":"Пресет удалён","presetDisable":"отключить плагины {0}","presetEmpty":"Нет сохранённых пресетов","presetEnable":"включить плагины {0}","presetFail":"Не удалось выполнить предустановленную операцию:","presetHint":"Сохраните текущий порядок пакетов и список отключенных как пресет и переключайтесь в любое время; применение запускает проверку перед началом пробного периода и сначала создает снимок.","presetListFail":"Не удалось загрузить пресеты:","presetName":"Название пресета","presetNameEmpty":"Введите имя предустановки","presetNoop":"нет изменений","presetPreview":"Предпросмотр","presetPreviewFail":"Не удалось выполнить предварительный просмотр:","presetPreviewTitle":"Применение этого пресета приведёт к:","presetReorder":"переупорядочить {0} наборы","presetSave":"Сохранить текущее состояние","presetSaved":"Пресет сохранён","presetSaving":"Сохранение…","presetSection":"Пресеты плагинов","prevPage":"Назад","progressHint":"Первая установка скачивает и разрешает зависимости — крупные плагины занимают 1–3 минуты","published":"выпущен","readme":"README","reconciledNote":"Удалено, но pnpm сообщил об ошибке при завершении (обычно это заблокированный файл). Профиль уже согласован — повторная попытка не требуется.","refresh":"Обновить","refreshBanner":"изменения применены — обновите страницу, чтобы их увидеть","replacementHint":"Каталог предлагает","repoLink":"Посмотреть репозиторий на GitHub","restartBanner":"изменения внесены — перезапустите DeepSeek Harness","restartFail":"Перезапустить не удалось","restartHint":"Как перезапустить: остановите текущий процесс dsh и запустите его снова (например, dsh web)","restartHintDebugged":"Процесс DSH запущен под отладчиком. Перезапустите его из IDE или терминала — магазин не может принудительно завершить отлаживаемый хост из интерфейса.","restartHintSupervised":"Этот процесс является собственным сервисным процессом {0}, поэтому перезапуски относятся к нему — перезапуск отсюда завершит процесс передачи вместе с cgroup, и сервис не восстановится. Используйте systemctl restart &lt;ваш юнит&gt;. Если ваш юнит может пережить самостоятельный перезапуск (KillMode=process), включите параметр \"Разрешить перезапуск\" в настройках этого плагина.","restartNow":"Перезапустить","restartTimeout":"Не дождались запуска DeepSeek Harness","restarting":"Перезапуск…","restore":"Восстановить","restoreBootError":"Не удается загрузиться после восстановления:","restoreConfirm":"Восстановление перезапишет настройки этого профиля и переустановит плагины. Продолжить?","restoreContinue":"Продолжить обновление","restoreDone":"Восстановление завершено — перезапустите DeepSeek Harness","restoreFail":"Не удалось восстановить","restoreHint":"Это удалит локальную версию, переустановит версию из каталога и сохранит проверку обновлений. Это действие нельзя отменить — подтвердите ещё раз.","restoreMissing":"Плагинов из копии не установлено: {0}","restoreNameOnlyHint":"В локальной копии не указан исходный репозиторий, поэтому сопоставление выполнено только по имени пакета. Убедитесь, что автор и репозиторий ниже соответствуют ожидаемым. Это заменит локальную версию и не может быть отменено.","restoreNoCatalog":"Этот плагин отсутствует в курируемом каталоге, поэтому его нельзя восстановить. Удалите локальную копию или продолжайте разрабатывать её локально.","restoreNoCatalogTitle":"Восстановление невозможно","restoreNoMatch":"Плагин с таким именем есть в каталоге, но он не соответствует вашему локальному репозиторию. Удалите локальную копию или продолжите локальную разработку.","restoreOnline":"Использовать онлайн-версию","restorePartial":"Восстановление продолжилось, но эти плагины установить не удалось:","restorePreviewDone":"Копия загружена. Проверьте вкладку «Установленные» и запускайте восстановление.","restoreProceed":"Подтвердить восстановление","restoreStart":"Начать восстановление","restoreUnportable":"указывает на абсолютный путь с другой машины, который здесь не существует — перенаправьте его локально или переустановите плагин","rollbackNow":"Откатить","rollbackUnavailable":"Автоматический откат недоступен, так как не удалось проверить точный исходный источник.","rollingBack":"Откат изменений…","searchFavoritesPh":"Поиск в избранном…","searchPh":"Поиск плагинов: уведомления, терминал, память…","setCardDesc":"Версия маркета, обновление и удаление.","setChannel":"Канал обновлений","setChannelBeta":"Бета","setChannelBetaHint":"Ранний доступ к непроверенным версиям. Влияет только на рынок плагинов.","setChannelDev":"Разработка","setChannelDevHint":"Непроверенные сборки из ветки разработки. Не рекомендуются для общего использования.","setChannelStable":"Стабильный","setChannelStableHint":"Только выпущенные версии.","setChannelSwitch":"Переключиться на","setChannelSwitchHint":"Эта версия ниже установленной.","setGithubProxy":"Ускорение GitHub","setGithubProxyAuto":"Вернуть автовыбор","setGithubProxyAutoHint":"Автоматически выбирает рабочий маршрут и переключается только при сбое.","setGithubProxyCustom":"Пользовательский","setGithubProxyCustomHint":"Сначала пробует ваш маршрут, затем переключается на GitHub напрямую.","setGithubProxyEdit":"Изменить","setGithubProxyInput":"Префикс HTTPS-ускорения","setGithubProxyManagedHint":"Управляется переменной DSHM_GITHUB_PROXY и не может быть изменено здесь.","setGithubProxySave":"Сохранить","setRegion":"Скачать регион","setRegionAuto":"Выбрано на основе проверки сети. Можете изменить в любое время.","setRegionChina":"Китай, материковая часть","setRegionChinaHint":"Быстрее в материковом Китае. Изменяет маршрут загрузки, не источник.","setRegionGlobal":"Глобальный","setRegionGlobalHint":"Загрузки напрямую из npm и GitHub.","setSelfCancel":"Отмена","setSelfConfirm":"Удалить маркет плагинов? Поставить его заново можно будет только из командной строки.","setSelfFailed":"Операция не удалась","setSelfPurge":"Заодно стереть данные маркета","setSelfPurgeOff":"Данные маркета сохранятся. Учтите: плагины, которые он выключил, останутся выключенными, а интерфейса, чтобы вернуть их, после удаления не будет.","setSelfPurgeOn":"Будут удалены: список выключенных плагинов, свои группы и строки выключения, которые маркет записал в патч профиля, — выключенные им плагины снова заработают. Паролей и токенов это не касается: маркет их на диск не пишет.","setSelfRemove":"Удалить маркет плагинов","setSelfRemoveConfirm":"Удалить","setSelfRemoveHint":"Удаляет маркет из этого профиля. Остальные плагины не трогаются.","setSelfRemoved":"Удалён","setSelfRemovedHint":"Перезапустите DeepSeek Harness, чтобы завершить.","setSelfRestartAfter":"Перезапустить DeepSeek Harness сразу после удаления","setSelfRestartingHint":"Перезапуск DeepSeek Harness…","setSelfUpToDate":"Обновлений нет","setSelfUpToDateHint":"Актуально, обновление не требуется","setSelfUpdate":"Обновить","setSelfUpdateHint":"Обновление скачает новую версию; она заработает после перезапуска.","setSelfUpdateReady":"Доступна новая версия:","setSelfUpdatedHint":"Скачано. Перезапустите DeepSeek Harness, чтобы обновление вступило в силу: страница обновляется сразу, серверная половина — нет.","setSelfWorking":"Удаление…","shadowNameBanner":"Эта операция оставила одно имя плагина, определенное в двух слоях; после перезапуска загрузится только один:","snapCreate":"Создать снимок","snapCreateFail":"Не удалось создать снимок:","snapCreated":"Снимок создан","snapCreating":"Создание…","snapDelete":"Удалить","snapDeleteConfirm":"Подтвердить удаление","snapDeleteConfirmText":"Этот снимок нельзя будет восстановить после удаления.","snapDeleteFail":"Не удалось удалить снимок:","snapDeleted":"Снимок удалён","snapDeleting":"Удаление…","snapEmpty":"Снимков пока нет","snapFiles":"файлы","snapHint":"Снимки создаются автоматически перед применением изменений; вы также можете создать их вручную и откатиться в любой момент.","snapListFail":"Не удалось загрузить снимки:","snapRestore":"Восстановить","snapRestoreConfirm":"Подтвердите восстановление","snapRestoreConfirmText":"Восстановление перезаписывает текущий package.json профиля и конфигурацию из снимка; это действие нельзя отменить (создайте новый снимок, если не уверены).","snapRestoreFail":"Не удалось восстановить:","snapRestored":"Восстановлено — перезапустите для применения","snapRestoring":"Восстановление…","snapSection":"Снимки & Откат","sortAdded":"Дата выпуска","sortAsc":"По возрастанию","sortDesc":"По убыванию","sortDownloads":"npm загрузки (30д)","sortNewest":"Сначала новые","sortOldest":"Сначала старые","sortStars":"Звёзды","stateBroken":"Установлен, но не прошёл проверку","stateDisabled":"Выключен","stateInert":"Установлен, но не является плагином слоя профиля","stateLive":"Работает (загружен на лету)","stateRestart":"Установлен — перезапустите, чтобы применить","submitPlugin":"Хотите, чтобы ваш плагин был добавлен в список?","subtitle":"Плагины сообщества для DeepSeek Harness","switchOnLabel":"Включено","tabAdvanced":"Дополнительно","tabBackup":"Копия и восстановление","tabDiagnostics":"Диагностика","tabDiscover":"Обзор","tabFavorites":"Избранное","tabGroups":"Группы","tabInstalled":"Установленные","tabList":"Список","tabThemes":"Темы","terminalWarn":"Похоже, это плагин для терминала: в веб-профиле он может ничего не делать или даже сломать запуск DeepSeek Harness. Прочитайте его README и ставьте в тот профиль, для которого он написан.","themeActive":"Активна","themeApply":"Применить","themeDeactivate":"Отключить","themeEmpty":"Других тем в каталоге пока нет — следите за обновлениями","themeExitFullscreen":"Выйти из полноэкранного режима","themeFullscreen":"Просмотр в полноэкранном режиме","themePreview":"Предпросмотр","themePreviewCount":"{0} предпросмотры","themePreviewLoading":"Поиск предварительного просмотра…","themePreviewMissing":"Предпросмотр недоступен","themeResultCount":"{0} темы","timeAll":"Всё время","timeDay":"Сутки","timeMonth":"30 дней","timeQuarter":"90 дней","timeWeek":"7 дней","timeYear":"Год","toastReady":"установлен и работает","toastTheme":"теперь активна. Переключить можно в «Настройки → Маркет плагинов → Темы»","toastToggledOff":"теперь выключено — перестало работать сразу","toastToggledOn":"включён","toggleFail":"Переключить не удалось","ungrouped":"Без группы","uninstall":"Удалить","uninstallConfirmDesc":"Плагин будет удалён из текущего профиля.","uninstalling":"Удаление…","upToDate":"Обновлений нет","update":"Обновить","updateAll":"Обновить все","updateFail":"Обновить не удалось","updateNoticeIgnored":"Напоминание скрыто для текущего сеанса","updateNow":"Обновить сейчас","updated":"✓ Обновлён — перезапустите, чтобы применить","updatedLive":"✓ Обновлён — работает","updating":"Обновление…","versionHint":"Версия маркета плагинов — указывайте её при обращении","viewReplacement":"Посмотреть замену","viewSource":"Исходник","webdav":"WebDAV","webdavNote":"Адрес WebDAV и имя пользователя остаются только в этом браузере; пароль хранится на сервере и вводится заново каждую сессию.","webdavPassword":"Пароль (необязательно)","webdavPreset":"Готовая настройка провайдера","webdavRestore":"Восстановить с WebDAV","webdavUpload":"Выгрузить копию","webdavUrl":"Адрес файла копии","webdavUser":"Имя пользователя (необязательно)"},"dsh-moa":{"addCandidate":"Добавить слот параллельной модели","aggTempHint":"Рекомендуется 0.2 - 0.4 для строгой проверки и фактологического синтеза.","aggregatorDesc":"Оценивает предложения кандидатов, исправляет галлюцинации и формирует итоговое единое решение.","aggregatorTitle":"Модель-судья / Агрегатор (проверяет и синтезирует)","cancel":"Отмена","candidate":"Кандидат","clear":"Очистить","confirmDeletePreset":"Вы уверены, что хотите удалить пресет","create":"Создать","createNewPreset":"Создать новый пресет...","defaultPreset":"Пресет по умолчанию (используется для /moa без аргументов)","delete":"Удалить","deletePreset":"Удалить пресет","description":"Выполнение задач с несколькими параллельными моделями-советниками и синтезирующей моделью-судьёй","isDefault":"по умолчанию","loading":"Сохранение…","makeDefault":"Сделать по умолчанию","makeDefaultHint":"Использовать этот пресет для /moa, когда аргумент пресета не указан","modelsFound":"Найдено","newPresetPlaceholder":"Имя нового пресета (например, fast-audit)","noModelsMatch":"Моделей по запросу не найдено.","of":"из","parallelCount":"Параллельные воркеры","presetSelectLabel":"Активный пресет для настройки:","proposersDesc":"Параллельно генерируют независимые варианты ответов для предоставления различных точек зрения.","proposersTitle":"Модели-кандидаты (Советники)","refTempHint":"Рекомендуется 0.6 - 0.8 для генерации разнообразных творческих гипотез.","refTempLabel":"Температура кандидатов (разнообразие решений):","remove":"Удалить","retry":"Повторить подключение","save":"Сохранить изменения","saved":"Успешно сохранено","searchPlaceholder":"Поиск по названию модели или провайдеру...","selectModel":"Выберите модель...","slashMoa":"Выполнить задачу через Mixture of Agents (/moa <промпт>)","temperature":"Температура","title":"Смесь агентов (MoA)","unavailable":"Сервис MoA временно недоступен (переподключение...)","useCustom":"Использовать свою"},"dsh-skill-explorer":{"close":"Закрыть","create.content":"Инструкции (тело SKILL.md, Markdown)","create.created":"Создано: {path}","create.description":"Описание (как модель понимает, когда активировать навык)","create.empty":"Имя, описание и содержимое навыка не могут быть пустыми","create.failed":"Ошибка создания: {error}","create.name":"Имя навыка (kebab-case, совпадает с именем каталога)","create.namePlaceholder":"например, my-workflow","create.note":"Навык активируется немедленно (автосканирование файловой системы). Его содержимое внедряется в контекст модели как инструкция — не указывайте конфиденциальные данные.","create.root":"Расположение","create.root.project":"Навыки проекта (каталог .dsh/skills текущего проекта)","create.root.user":"Глобальные навыки (~/.dsh/skills, доступны во всех проектах)","create.submit":"Создать навык","create.whenToUse":"Когда применять (необязательно)","cwd":"рабочая папка: {cwd}","entry.label":"Центр навыков","entry.tooltip":"Центр навыков: обзор и управление загруженными навыками","group.bundled":"Встроенные в систему","group.custom":"Пользовательские каталоги","group.project-agents":"Навыки проекта (.agents/skills)","group.project-dsh":"Навыки проекта (.dsh/skills)","group.runtime":"Зарегистрированные в рантайме","group.user-agents":"Глобальные навыки (~/.agents/skills)","group.user-dsh":"Глобальные навыки (~/.dsh/skills)","groupHint.bundled":"Глобальные навыки, поставляемые с DSH и его плагинами","groupHint.custom":"Конфигурация customSkillDirs","groupHint.project-agents":"Расположены в каталоге проекта, ограничены его рабочей областью","groupHint.project-dsh":"Расположены в каталоге проекта, ограничены его рабочей областью","groupHint.runtime":"Навыки, зарегистрированные плагинами во время работы","groupHint.user-agents":"Глобальные навыки (~/.agents/skills), общие для всех проектов","groupHint.user-dsh":"Глобальные навыки (~/.dsh/skills), общие для всех проектов","list.count":"{count}","list.delete":"Удалить","list.deleteConfirm":"Удалить навык \"{name}\"? Он будет перемещён в .trash.","list.deleteFailed":"Не удалось удалить: {error}","list.disabled":"Отключено: недоступно для вызова моделью (нажмите для включения)","list.empty":"Навыки пока не загружены.","list.enabled":"Включено: доступно для вызова моделью (нажмите для отключения)","list.invokable":"Вызов: {marks}","list.invokableTooltip":"Модель может вызывать этот навык автоматически; ручные команды /skill остаются доступны","list.linked":"символическая ссылка","list.loadFailed":"Не удалось загрузить: {error}","list.loading":"Загрузка…","list.mark.model":"модель","list.mark.user":"пользователь","list.toggleFailed":"Сбой операции: {error}","list.when":"Условие: {when}","panel.title":"Центр навыков","provider.filesystem":"Файловая система","provider.tooltip":"Источник навыка: {provider}","refresh":"Обновить","tab.create":"Создать","tab.list":"Навыки"},"dsh-skill-hub":{"badge.source.bundled":"встроенный","badge.source.custom":"свой каталог","badge.source.project-agents":"проект .agents","badge.source.project-dsh":"проект .dsh","badge.source.runtime":"runtime","badge.source.user-agents":"пользователь .agents","badge.source.user-dsh":"пользователь .dsh","delete.confirm":"В корзину","delete.confirmText":"Переместить «{name}» в корзину? Его можно восстановить в любой момент.","delete.confirmTitle":"В корзину?","detail.addedAt":"Добавлен","detail.back":"К списку","detail.copied":"Скопировано","detail.copyMention":"Копировать $mention","detail.copyPath":"Копировать путь","detail.groups":"Группы","detail.loading":"Загрузка текста навыка…","detail.path":"Путь","detail.provider":"Провайдер","detail.updatedAt":"Обновлён","detail.uses":"Вызовы","detail.whenToUse":"Когда применять","diag.fix":"Исправить","diag.fixConfirm":"Перезаписать frontmatter этого файла автоисправлением? Сначала создайте резервную копию: {path}","diag.fixed":"Исправлено","diag.fixing":"Исправление…","entry.label":"Навыки","entry.tooltip":"Центр навыков: просмотр, группировка и синхронизация локальных навыков","err.dismiss":"Понятно","filter.allSources":"Все источники","filter.filteredSuffix":" · отфильтровано","filter.invocation":"Тип вызова","filter.invocationAll":"Все","filter.modelOnly":"Модель","filter.private":"Личные","filter.shortened":"Кратких описаний: {count}, наведите для полного текста","filter.showing":"Показано {shown} из {total} (включено){filtered}","filter.userOnly":"Пользователь","form.busy":"Создание…","form.cancel":"Отмена","form.capabilityHint":"Как выбрать способность: повторяемый метод → навык; внешняя система → MCP; долгосрочные знания → база знаний.","form.desc":"Описание (одно предложение для маршрутизации)","form.descPlaceholder":"Одна строка — что делает (с триггерными словами); по этому описанию агенты активируют навык","form.error":"Ошибка создания: ","form.name":"Имя навыка (kebab-case, например code-review)","form.root":"Целевой каталог","form.submit":"Создать","form.success":"Создано: ","group.bundled":"Встроенные","group.custom":"Пользовательские каталоги","group.other":"Другие источники","group.project-agents":"Проектные .agents/skills","group.project-dsh":"Проектные .dsh/skills","group.runtime":"Runtime","group.user-agents":"Пользовательские ~/.agents/skills","group.user-dsh":"Пользовательские ~/.dsh/skills","groups.closeAll":"Закрыть все","groups.conflictText":"Эти навыки включены и в других группах; их закрытие затронет и те группы:","groups.conflictTitle":"Закрыть эту группу?","groups.delete":"Удалить сценарий","groups.edit":"Изменить","groups.empty":"Сценариев ещё нет. Создайте один и начните раскладывать навыки.","groups.keepOn":"Оставить включёнными","groups.membersHint":"Отметьте навыки, чтобы добавить их в сценарий (включая отключённые).","groups.merge":"Объединить","groups.namePlaceholder":"Название сценария","groups.new":"Новый сценарий","groups.noCollections":"Групп по источникам пока нет. Импортируйте навыки из маркета — они сгруппируются по источникам.","groups.noWritable":"В группе нет перезаписываемых навыков (состояние навыков «только чтение» нельзя менять из центра)","groups.personal":"Личные","groups.project":"Проектные","groups.rename":"Сохранить название","groups.saveMembers":"Сохранить состав","groups.subdivide":"Разделить","legend.hint":"У навыка не более одной точки; нет точки = не вызывается.","legend.model":"Вызывается моделью — агенты могут вызывать автоматически","legend.user":"Вызывается пользователем — только явный вызов","market.add":"Добавить","market.addPlaceholder":"owner/repo или https://github.com/…","market.addSource":"Добавить источник","market.branchConfirm":"Подтвердить","market.branchHint":"У репозитория нет релизов. Выберите ветку для отслеживания (по умолчанию main):","market.branchTitle":"Выберите ветку","market.catalog.anthropics":"Официальная коллекция навыков Anthropic (Claude Skills)","market.catalog.mattpocock":"Коллекция навыков Matt Pocock","market.catalog.openDesign":"Коллекция навыков дизайна (design-templates)","market.catalog.superpowers":"Коллекция навыков сообщества Superpowers","market.catalogHint":"Отобранные репозитории навыков — добавьте, чтобы сканировать и устанавливать, с постоянной проверкой обновлений.","market.check":"Проверить","market.checkAll":"Проверить все","market.checkUpdate":"Проверить обновления","market.checking":"Проверка…","market.deleteSource":"Удалить источник","market.deletedUpstream":"Удалено в источнике: {count}","market.installed":"Установлено: {count}","market.newRelease":"Новая версия v{version}","market.noSources":"Источников пока нет. Добавьте из каталога ниже или введите репозиторий GitHub.","market.removeHint":"Удаление источника не затрагивает установленные навыки.","market.scan":"Сканировать","market.scanning":"Сканирование…","market.sync":"Синхронизировать","market.syncCancel":"Пропустить","market.syncNone":"Из этого репозитория пока не импортировано ни одного навыка.","market.syncText":"Источник выровнен с {ref}. Обновить эти локальные навыки?","market.syncTitle":"Обновить локальные навыки","market.syncing":"Синхронизация…","market.title":"Маркет","market.unpinned":"не закреплено","market.upToDate":"Актуально","market.updatable":"Обновляемо: {count}","market.update":"Обновить","market.updateAll":"Обновить всё","market.updateAllConfirmText":"Обновляемые навыки этих источников будут перезаписаны их новейшими версиями из источника:","market.updateAllConfirmTitle":"Обновить все навыки?","market.updateAllDone":"Обновлено источников: {count}","market.updateAllItem":"{repo} (навыков: {count})","market.updateCount":"Обновить {count}","market.updated":"Есть обновления","market.versionBranches":"Ветки","market.versionConfirm":"Переключить на {ref}","market.versionCurrent":"текущая {ref}","market.versionCustom":"Пользовательская (тег / ветка / коммит)","market.versionHint":"Нажмите для переключения отслеживаемой версии","market.versionReleases":"Релизы","market.versionText":"Выберите версию для отслеживания репозитория {repo}; после этого обновите и синхронизируйте навыки","market.versionTitle":"Переключить отслеживаемую версию","panel.count":"Всего навыков: {count}","panel.diagnostics":"Диагностика обнаружения","panel.disabled":"Отключено","panel.disabledCount":"Отключено: {count}","panel.empty":"Нет подходящих навыков.","panel.emptyAll":"Навыков пока нет. Создайте первый.","panel.enabled":"Включено","panel.incomplete":"(каталог может быть неполным)","panel.loading":"Загрузка…","panel.new":"Новый навык","panel.search":"Поиск навыков…","panel.title":"Центр навыков","panel.workspaceClear":"Очистить рабочую область","panel.workspaceHint":"Укажите путь проекта, чтобы показать навыки его .dsh/skills и .agents/skills (только чтение); очистите и нажмите Enter, чтобы вернуться к пользовательскому виду.","panel.workspacePlaceholder":"Путь рабочей области (Enter — применить)","repo.cancel":"Отмена","repo.cancelled":"Отменено · {imported}/{total} сохранено, временные файлы удалены","repo.clearAll":"Очистить","repo.empty":"Импортируемых навыков не найдено.","repo.existing":"Существующие","repo.failed":"Не удалось: {count}","repo.files":"Файлов: {count} · {size}","repo.import":"Импортировать выбранные ({count})","repo.imported":"Импортировано: {count}","repo.importing":"Импорт…","repo.importingCurrent":"Импорт: {name} ({done}/{total})","repo.ready":"Найдено импортируемых навыков: {count}","repo.root.designTemplates":"Шаблоны design-templates","repo.root.generic":"{root}","repo.root.skills":"Навыки (skills)","repo.selectAll":"Выбрать все","repo.skippedExisting":"Пропущено существующих: {count}","repo.truncated":"⚠ Репозиторий слишком большой, показаны не все навыки (сокращено GitHub)","row.copied":"Скопировано","row.copy":"Копировать","row.copyMention":"Копировать $mention","row.copyPath":"Копировать путь","row.delete":"В корзину","row.disable":"Отключить","row.duplicate":"дубликат","row.duplicateHint":"Это имя предоставляется несколькими источниками; показан наиболее приоритетный","row.enable":"Включить","row.open":"Подробнее о навыке {name} (Enter)","row.readonly":"только чтение","settings.announceToAgent":"Объявлять агенту","settings.announceToAgentHint":"Добавляет раздел в системный промпт, чтобы агенты знали, как сотрудничать, когда пользователь упоминает управление навыками.","settings.collapse":"Скрыть настройки","settings.description":"Управление локальным каталогом навыков dsh: просмотр, группировка, синхронизация источников и создание.","settings.discard":"Отменить","settings.dotModelColor":"Цвет точки «вызывается моделью»","settings.dotModelColorHint":"Цвет синей точки «модель может вызвать» в панели навыков и чате/меню (#rrggbb).","settings.dotUserColor":"Цвет точки «вызывается пользователем»","settings.dotUserColorHint":"Цвет зелёной точки «только пользователь» в панели навыков и чате/меню (#rrggbb).","settings.enabled":"Включить плагин","settings.enabledHint":"Отключает маршруты, элементы и объявление центра навыков.","settings.expand":"Показать настройки","settings.inherit":"Наследовать","settings.notExposed":"Это развёртывание не предоставляет пространство настроек.","settings.off":"Выкл","settings.on":"Вкл","settings.overridden":"Переопределено","settings.readOnly":"Настройки этого развёртывания доступны только для чтения.","settings.reset":"Сбросить к значению по умолчанию","settings.save":"Сохранить","settings.saveFailed":"Развёртывание не приняло эти значения; они оставлены для исправления.","settings.saving":"Сохранение…","settings.showGroupSummary":"Показывать сводку по группам","settings.showGroupSummaryHint":"После заголовков групп показывать число вызовов и время последнего вызова.","settings.showUseCount":"Показывать число вызовов","settings.showUseCountHint":"Показывать янтарный счётчик вызовов рядом с именем навыка.","settings.showUseTime":"Показывать время последнего вызова","settings.showUseTimeHint":"Показывать относительное время в строке имени (например «3 дн назад»).","settings.statsScanMinutes":"Интервал автостатистики (минут)","settings.statsScanMinutesHint":"Как часто фоновое сканирование журналов сессий выполняется (минимум 1); тяжёлые сканирования автоматически растягивают интервал.","settings.statsWindowDays":"Окно статистики (дней)","settings.statsWindowDaysHint":"Учитывать использование только за последние N дней (по умолчанию 14); 0 = вся история. Изменения применяются сразу.","settings.title":"Центр навыков","settings.unsaved":"Есть несохранённые","sort.added":"По дате добавления","sort.name":"По названию","sort.uses":"По числу вызовов","source.check":"Проверить обновления","source.checkHint":"Нажмите, чтобы проверить источник на обновления","source.checking":"Проверка…","source.clearTrash":"Очистить корзину","source.clearTrashConfirm":"Удалить безвозвратно","source.clearTrashConfirmText":"Навыки в корзине будут удалены безвозвратно и не могут быть восстановлены.","source.clearTrashConfirmTitle":"Очистить корзину?","source.commit":"Синхронизированная ревизия","source.deleteConfirmText":"Эти навыки удалены из источника; их локальные каталоги уйдут в корзину (восстановимо):","source.deleteConfirmTitle":"Согласиться с удалением в источнике?","source.deleteGroup":"Удалить группу","source.deleteGroupHint":"Удалить все навыки ({count}) этой группы","source.deleteGroupText":"Все навыки ({count}) группы «{name}» будут перемещены в корзину (восстановимо); навыки «только чтение» будут пропущены:","source.deleteGroupTitle":"Удалить группу?","source.deleted":"Удалено в источнике: {count}","source.error":"Проверка не удалась","source.followDelete":"Согласиться с удалением","source.private":"Личный навык (не привязан к источнику; проверки обновлений нет)","source.restore":"Восстановить","source.sync":"Синхронизировать","source.syncConfirmText":"Локальные изменения этих навыков будут перезаписаны новейшими версиями из источника:","source.syncConfirmTitle":"Синхронизировать навыки?","source.syncing":"Синхронизация…","source.throttled":"Недавно проверено","source.trash":"Корзина","source.unverified":"источник ещё не проверен","source.upToDate":"Актуально","source.updated":"Обновлений: {count}","time.daysAgo":"{value} дн назад","time.hoursAgo":"{value} ч назад","time.justNow":"только что","time.minutesAgo":"{value} мин назад","time.weeksAgo":"{value} нед назад","update.available":"Доступно обновление: v{version} (текущая v{current})","update.check":"Проверить обновления","update.checking":"Проверка…","update.error":"Не удалось проверить обновления: {error}","update.newVersion":"Новая версия v{version}","update.unavailable":"Нет доступных релизов","update.upToDate":"Актуальная версия: v{version}","update.viewRelease":"Открыть релиз","view.flat":"Списком","view.grouped":"По группам","view.market":"Маркет","view.scenes":"Сценарии","view.sources":"Источники"},"dsh-subscriptions":{"accountLabel":"Аккаунт","addAccount":"+ Добавить аккаунт","cardIntro":"Подписки, ротация и ограничения аккаунтов.","connect":"Подключить","connected":"Подключено","coolingDown":"Охлаждение","disconnect":"Отключить","hide":"Скрыть","intro":"Войдите с помощью потребительской подписки. Токены остаются в хранилище учетных данных хоста. Браузер никогда не читает их обратно. После подключения, если провайдер перенаправляет на localhost или страницу провайдера, вставьте перенаправленный URL или код сюда.","loading":"Загрузка…","notConnected":"Не подключено","pastePlaceholder":"Вставьте перенаправленный URL или код","plan":"План","reconnect":"Переподключиться","removeSlot":"Удалить слот","save":"Сохранить","saved":"Сохранено","show":"Показать","storedAs":"Хранится как","submitCode":"Отправить код","title":"Подписки","usageFull":"Использование 100%","useOrigin":"Используйте этот источник Web UI как redirect_uri для OAuth","useOriginHint":"Не включайте, если вы не зарегистрировали собственный OAuth-клиент для этого источника. CLI-клиенты провайдеров обычно требуют опубликованный URI перенаправления и шаг вставки.","verifyAccount":"Подтвердить аккаунт","verifyLink":"Откройте ссылку для подтверждения","verifyPrefix":"Google требует одноразовой проверки аккаунта.","verifySuffix":"затем переподключитесь."},"dsh-tts":{"addProvider":"Добавить провайдера","announce":"Объявлять одобрения","announceHint":"Произнесите вслух и воспроизведите мелодию, когда агент остановится для подтверждения или задаст вопрос.","approvalHint":"Сказано, когда запрашивается одобрение; добавляется название инструмента.","approvalText":"Формулировка одобрения","azureHint":"Необходимо для провайдера Azure, например, eastus.","azureRegion":"Регион Azure","bargeIn":"Замолкать, когда вы говорите","bargeInHint":"Перестаньте читать, как только микрофон откроется.","binHint":"Ищется в PATH, если не указан абсолютный путь.","cardHint":"Цепочка провайдеров, голоса и параметры воспроизведения.","chainHint":"Сверху вниз указан порядок резервирования. Ключи облака сохраняются в хранилище учетных данных хоста, никогда в настройки плагина.","chainHintCard":"Выберите провайдера, вставьте его API-ключ и сохраните (или оставьте поле ключа пустым). Ключ сразу записывается в хранилище учетных данных хоста. Браузер никогда не читает его обратно.","chainTitle":"Цепочка провайдеров","chime":"Звонок","chimeHint":"динь, бип или ничего.","clear":"Очистить","configured":"Настроено","down":"Вниз","edgeBin":"бинарный файл edge-tts","edgeHint":"Python CLI из пакета edge-tts.","espeakBin":"Бинарный файл eSpeak","espeakHint":"Обычно espeak-ng.","fromEnv":"Задано в окружении","general":"Общие","language":"Язык","languageHint":"Подсказка для голосов, которым требуется локаль (eSpeak, Azure SSML).","loading":"Загрузка…","localProvider":"Локальный / CLI провайдер — без API-ключа","notSet":"Не задано","piperBin":"Бинарный файл Piper","piperModel":"Путь к модели Piper","piperModelHint":"Абсолютный путь к модели ONNX. Оставьте пустым, чтобы пропустить Piper.","questionHint":"Используется, когда агент задаёт вопрос. Если оставить пустым, функция будет отключена.","questionText":"Формулировка вопроса","rate":"Скорость воспроизведения","rateHint":"От 0.5 до 2. Синтез не изменяется; браузер воспроизводит быстрее или медленнее.","remove":"Удалить","save":"Сохранить","saved":"Сохранено","speakAsItGoes":"Говорите по мере проигрывания","speakAsItGoesHint":"Читайте каждый ответ сразу, как только он появляется, предложение за предложением, вместо ожидания всей очереди.","speakReplies":"Озвучивать ответы агента","speakRepliesHint":"Когда включено, каждый завершённый ответ синтезируется на хосте и воспроизводится в этом браузере. Аудио не отправляется обратно в модель.","title":"Речь","up":"Вверх"},"dsh-voice":{"addCustom":"Добавить своего провайдера","addProvider":"Добавить провайдера","browserFailed":"Браузер не распознал:","browserHint":"браузер выполняет распознавание, ключ не требуется","cancel":"Отмена","chainHint":"Сверху вниз — порядок, в котором они проверяются","clearKey":"Очистить ключ","composerUnavailable":"Композитор недоступен","customHint":"Любой OpenAI-совместимый API. Название становится доступным в цепочках выше.","customKeyName":"название ключа","customModel":"модель","customModelHint":"модель для запроса (пустое значение означает встроенную)","customName":"имя, используемое в цепочке","customTitle":"Ваши собственные провайдеры","deepinfraHint":"openai/whisper-large-v3-turbo · ключ DEEPINFRA_API_KEY","dictationBtn":"Голосовой ввод","dictationHint":"Речь обрезается на паузах, а текст добавляется к вводу.","dictationPill":"Диктовка — текст добавляется к вводу","down":"Вниз","fireworksHint":"whisper-v3-turbo · ключ FIREWORKS_API_KEY","general":"Общие","hide":"Скрыть","holdHint":"Удерживайте — отпустите, чтобы отправить","hotkey":"Клавиша голосового сообщения","hotkeyHint1":"Держите для записи, отпустите, чтобы отправить агенту, Esc отменяет.","hotkeyHint2":"Подойдёт любая клавиша: буква, F-клавиша или модификатор.","keepPending":"Не отправлять","keySpace":"Пространство","keyUnset":"не задано","language":"Язык","listening":"Слушаю в браузере…","loadingSettings":"Загрузка настроек…","localHint":"устанавливается при запуске сервера","messageBtn":"Голосовое сообщение — нажмите или удерживайте","messageHint":"Одна целая запись, отправленная агенту после расшифровки.","messagePill":"Запись голосового сообщения","messageTitle":"Голосовое сообщение","micUnavailable":"Микрофон недоступен: требуется HTTPS или localhost","mistralHint":"voxtral-mini-latest · ключ MISTRAL_API_KEY","noRecorder":"Этот браузер не поддерживает MediaRecorder","notReady1":"Харнесс ещё не объявил настройки этого плагина. Если он только что перезапустился,","notReady2":"раздел появится сам через несколько секунд.","nothingHeard":"Ничего не было распознано","openaiHint":"whisper-1 · ключ OPENAI_API_KEY","openrouterHint":"google/gemini-2.5-flash · ключ OPENROUTER_API_KEY","openrouterWarning":"У OpenRouter нет /audio/transcriptions — используйте там шаблон openai-chat-audio","pauseHint":"Меньшее значение означает более частые фрагменты и быстрый текст, но выше риск разрыва слова","pauseMs":"Пауза, завершающая фразу, мс","pressKey":"Нажмите клавишу…","recognitionError":"распознавание не удалось","recordSlot":"Запись голоса","remove":"Удалить","save":"Сохранить","saveFailed":"Некоторые поля не были сохранены —","saved":"Сохранено ✓","secondsShort":"с","sendingIn":"Отправка агенту через","siliconflowHint":"FunAudioLLM/SenseVoiceSmall · ключ SILICONFLOW_API_KEY","stop":"Стоп","title":"Голос","transcribing":"Транскрибируем…","undoHint":"Как долго ещё можно отменить автоматическую отправку","undoMs":"Окно отмены, мс","up":"Вверх","whisperAutostart":"Автозапуск локального whisper","whisperBin":"Локальный шепот: бинарный","whisperBinHint":"используется при включённом автозапуске","whisperEndpoint":"Локальный whisper: адрес","whisperEndpointHint":"POST /inference сервера whisper.cpp","whisperModel":"Локальная модель Whisper"},"dshhub-market":{"aboutLabel":"About this plugin","actWhy":"Почему не активен?","agentBusyInstall":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед установкой. Установка изменяет файлы плагина, поэтому работающий агент может завершиться с ошибкой в процессе.","agentBusyUpdate":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед обновлением. Обновления заменяют файлы плагина на месте, поэтому работающий агент может завершиться с ошибкой или смешать версии в процессе выполнения.","aiFix":"Исправление через AI","aiFixConservative":"Действуйте консервативно: исправляйте только явные ошибки (сбои запуска, дубликаты, несовпадения критических зависимостей). Не выполняйте лишних обновлений; объясняйте каждое действие и ждите подтверждения.","aiFixCopied":"Промпт для исправления скопирован — вставьте его в новую беседу с агентом","aiFixFail":"Буфер обмена недоступен — скопируйте диагностику вручную ниже","aiFixHint":"Передать отчёт диагностики в новую сессию Агента (скопировано в буфер обмена)","aiFixIntro":"Пожалуйста, помоги исправить проблемы с плагинами в DeepSeek Harness (профиль: {0}). Данные диагностики:","aiFixScope":"Если нет — вы процесс вне целевого харнесса: вы можете переупорядочить dsh.profile.bundles, отключить/включить плагины или скорректировать cordis.patch.yml. Официальные бандлы фиксированы; опишите план перед изменениями.","all":"Все","alreadyInstalled":"✓ Установлен","approveBuilds":"Разрешить сборочные скрипты и повторить","auditBadgePass":"AI-reviewed","auditBadgeWarn":"AI-reviewed (notes)","authoredBy":"Original authors & license: ","autoBackup":"Резервная копия раз в сутки (при открытии маркета)","backTop":"Наверх","backupDone":"Копия загружена","backupDownload":"Выгрузить копию","backupHint":"Включает список плагинов и настройки профиля, но не node_modules. Восстановление ставит плагины заново по списку.","backupImport":"Импортировать и посмотреть","backupLocal":"Локальный файл","backupWorking":"Выполняется…","buildsSkipped":"Этому плагину нужны сборочные скрипты; по умолчанию они заблокированы ради безопасности. Разрешите их и переустановите:","busyWait":"Уже выполняется другая операция — дождитесь её окончания (установка, обновление и удаление идут по одной)","byAuthor":"Provided by {0}","cancel":"Отмена","cancelOp":"Отменить","cancelled":"Отменено","cancelling":"Отмена…","catConflict":"Конфликты","catDeps":"Зависимости","catOrder":"Порядок","catsLess":"Свернуть","catsMore":"Ещё","changelogLabel":"Changelog","checkBundles":"Порядок загрузки плагинов","checkBundlesEmpty":"Слои плагинов не объявлены","checkCommunity":"сообщество","checkDir":"каталог","checkDuplicates":"Повторяющиеся записи плагинов","checkDuplicatesEmpty":"Повторов нет","checkEntries":"записей (идентификаторы загрузчика)","checkErrors":"Ошибки","checkErrorsEmpty":"Ошибок нет","checkHoisted":"поднят","checkIssues":"Найдены проблемы","checkLoadFail":"Не удалось загрузить диагностику: ","checkLoading":"Анализ профиля…","checkMultiEmpty":"Пакетов ядра в нескольких версиях нет","checkMultiVersion":"Пакеты ядра в нескольких версиях","checkOfficial":"официальный","checkOrderTip":"порядок загрузки бандла сообщества конфликтует с объявленными правилами before/after","checkOrphans":"Неверные записи конфига","checkOrphansEmpty":"Неверных записей нет","checkOverridden":"переопределяет","checkOverrides":"Переопределения","checkOverridesEmpty":"Переопределений нет","checkPatch":"файл патча","checkPeerEmpty":"Расхождений версий зависимостей нет","checkPeerInfo":"{0} записей к сведению (не подтверждено)","checkPeerMismatches":"Расхождения версий зависимостей","checkPeerOverview":"расхождений: {0} · к сведению: {1}","checkProfile":"профиль","checkRange":"объявленный диапазон","checkRefresh":"Проверить заново","checkResolved":"разрешённая версия","checkSatisfied":"удовлетворено","checkSource":"источник","checkUnknown":"неизвестно","checkUnsatisfied":"не удовлетворено","checkWarnings":"Предупреждения","checkWarningsEmpty":"Предупреждений нет","cmdDetails":"Команда установки","compatRiskBanner":"Обнаружен риск несовместимости — откройте Диагностику перед перезапуском или откатите эту операцию.","confirm":"Подтвердить","confirmRemove":"Подтверждаете?","confirmTitle":"Установка","confirmWarn":"Плагины — сторонний код сообщества. Устанавливая, вы доверяете этому источнику; сборочные скрипты по умолчанию заблокированы.","contactLabel":"Contact the creator","contactLink":"Link","copiedToast":"Copied","copyBtn":"Copy","credsWarning":"Внимание: в копию попадают настройки профиля и файлы, где могут лежать секреты (config.toml, .env и подобные). Локальная выгрузка ничего не вырезает, поэтому выгружайте на WebDAV, которому доверяете.","daysAgo":"Updated {0} days ago","deprecatedBadge":"Устарел","deprecatedWarn":"Каталог помечает этот плагин как устаревший; новым пользователям ставить его не советуют.","diagExplain":"Что это","diagExplainText":"Эта страница ищет плагины, конфликтующие друг с другом, несовпадения версий зависимостей и неверный порядок загрузки. Термины:","diagOkAll":"Всё в порядке: конфликтов, проблем с зависимостями и порядком не найдено","diagTermBundle":"бандл — один пакет плагина, применяется по порядку","diagTermEntry":"запись — то, что плагин добавляет в работающую композицию","diagTermOrder":"порядок загрузки — очерёдность активации; более поздний может перекрыть более ранний","diagTermOrphan":"неверная запись — конфиг ссылается на то, чего нет","diagTermPeer":"peer-зависимость — пакет, который плагин ждёт от хоста","diagTermShadow":"перекрытие — старая копия из плагина закрывает более новую хостовую","disable":"Выключить","disabledState":"Выключен","dismiss":"Скрыть","dismissNotice":"Скрыть это уведомление","duplicateNames":"Плагины с одинаковыми именами (к сведению, это не конфликт)","empty":"Подходящих плагинов нет","enable":"Включить","envFix":"Настроить автоматически","envFixFail":"Автоматическая настройка не удалась — выгрузите журнал и пришлите нам файл","envFixing":"Настройка…","envMissing":"Перед установкой плагинов нужен один небольшой компонент","exportLog":"Выгрузить журнал","exportLogFail":"Не удалось выгрузить журнал","exportedLog":"Журнал выгружен: dsh-market-log.txt — приложите его к обращению","exportingLog":"Выгрузка…","fabModalTitle":"Магазин плагинов dshhub.co","fabTitle":"Открыть магазин плагинов dshhub.co","faqLabel":"FAQ","filter":"Фильтр","filterDir":"Порядок","filterSort":"Поле сортировки","filterTime":"Вышло за","firstPage":"В начало","gist":"GitHub Gist","gistCreated":"Выгружено:","gistErrAuth":"GitHub не авторизовал: токен неверный или истёк, либо gh CLI не залогинен","gistErrInvalid":"Содержимое Gist повреждено или формат копии не поддерживается","gistErrNetwork":"GitHub недоступен — проверьте сеть или прокси","gistErrNoId":"Для обновления нужен идентификатор Gist — заполните поле или переключитесь на «Создать»","gistErrNotFound":"Gist не найден — проверьте идентификатор или ссылку","gistErrRateLimit":"Достигнут лимит GitHub, либо у токена нет права gist","gistErrTimeout":"GitHub не ответил вовремя — проверьте сеть и повторите","gistExport":"Выгрузить в Gist…","gistExportDone":"Выгружено в Gist","gistExportGo":"Выгрузить","gistExportHint":"Отмечено всё — полная копия вместе с настройками; если снять любую галочку, выгрузятся только выбранные плагины, а настройки — по отдельному флажку.","gistExportSelect":"Выберите плагины для выгрузки","gistId":"Идентификатор или ссылка на Gist (при выгрузке оставьте пустым, чтобы создать новый приватный)","gistImport":"Загрузить из Gist","gistIncludeConfig":"Включить файлы настроек (в них могут быть секреты)","gistModeCreate":"Создать новый приватный Gist","gistModeUpdate":"Обновить Gist из поля","gistNoPlugins":"В этом профиле нечего выгружать","gistNote":"В отличие от локальной выгрузки (архив на этой машине), Gist нужен для переноса между машинами: выгрузите в приватный Gist и загрузите на другом компьютере под тем же аккаунтом. Токен живёт только в памяти этой вкладки и никогда не пишется в браузерное хранилище; если залогинен gh CLI или задан DSH_GITHUB_TOKEN, вводить его не нужно. Gist приватный, до 1 МБ на файл.","gistSelectAll":"Выбрать все","gistSelectNone":"Снять выбор","gistSpecLocal":"локально","gistSrcEnv":"переменная DSH_GITHUB_TOKEN","gistSrcGh":"gh CLI","gistSrcToken":"введён вручную","gistToken":"Токен GitHub (только в памяти вкладки — после обновления страницы введите заново; оставьте пустым, чтобы использовать серверный DSH_GITHUB_TOKEN или залогиненный gh CLI)","gistVerify":"Проверить связь","gistVerifySource":"Проверено — источник токена: {0}","goDiagnose":"Открыть диагностику","gotIt":"Понятно","groupAdd":"Добавить плагин","groupAddEmpty":"Все установленные плагины уже в этой группе","groupAddTheme":"Добавить тему","groupAssign":"Назначить","groupConfirmDelete":"Удалить группу?","groupCreate":"Создать","groupDelete":"Удалить группу","groupEmpty":"Пока пусто","groupMixed":"Включена частично","groupNamePh":"Название группы","groupNew":"Новая группа","groupRemove":"Убрать","groupRename":"Переименовать","hostDependencyMore":"ещё находок пропущено: {0}","hostDependencyWarning":"Плагин перечисляет в зависимостях известные общие пакеты хоста DSH. Это может перекрыть хостовую версию; проверка смотрит только манифест и не подтверждает, что в рантайме появился дубль:","hotBanner":"плагины готовы — обновите страницу, чтобы ими пользоваться","install":"Установить","installFail":"Установить не удалось","installReplacement":"Установить замену","installedBadge":"✓ Установлен","installedEmpty":"Плагинов сообщества пока нет — загляните во вкладку «Обзор»","installedLabel":"Installed","installing":"Установка…","kindApp":"App","kindPlugin":"Plugin","kindPreset":"Agent Mode","kindSkill":"Skill","kindTheme":"Theme","kindTool":"Tool","lastPage":"В конец","linkedDev":"подключён как разработка","loadFail":"Не удалось загрузить каталог плагинов, попробуйте позже","loading":"Загрузка каталога…","localOnly":"Адрес WebDAV и учётные данные остаются только в этом браузере.","marketNoToggle":"Сам маркет выключить нельзя","marketUpdate":"Доступно обновление маркета — обновить","nav":"Маркет плагинов","nextPage":"Дальше","noGroups":"Групп пока нет — создайте","notInstalled":"Не установлен","openExternal":"Open","orderAlreadyOptimal":"Текущий порядок уже оптимален и удовлетворяет всем зависимостям плагинов","orderApplied":"✓ Применено — перезапустите для активации","orderApply":"Применить порядок","orderAutoSort":"Автосортировка","orderConflicts":"конфликты before/after в текущем порядке","orderDiffHint":"Этот порядок изменит композицию: {0} переопределений, {1} изолированных, {2} дубликатов","orderDown":"↓","orderDrag":"Перетащите для изменения порядка","orderDragHint":"Перетаскивайте ⠿ для сортировки. Изменения сохраняются при нажатии «Применить порядок».","orderReset":"Сбросить черновик","orderSection":"Порядок загрузки","orderSuggestApply":"Применить рекомендуемый порядок","orderSuggestHint":"Рекомендуемый порядок (автосортировка по правилам before/after):","orderTrialFail":"Ошибка статической валидации композиции: {0}","orderUp":"↑","orphanIdRequired":"нет идентификатора","orphanInsertNotArray":"неверный формат","orphanInsertTargetMissing":"цель не найдена","orphanInsertTargetNotGroup":"цель не является группой","orphanNameMismatch":"имя не совпадает","orphanPatchTargetMissing":"цель не найдена","orphanReasonOther":"другое","packagesDone":"обработано пакетов: {0}","pageInfo":"Страница {0} из {1}","partialNote":"Отменено — часть изменений уже применена","patchDisabled":"Выключен патчем","patchForced":"Включён патчем","perPage":"На странице","phaseBuilding":"Сборочные скрипты","phaseDownloading":"Загрузка","phaseLinking":"Связывание","phaseResolving":"Разрешение зависимостей","prevPage":"Назад","progressHint":"Первая установка скачивает и разрешает зависимости — крупные плагины занимают 1–3 минуты","published":"выпущен","rateCommentLabel":"Comment (optional)","rateCommentPh":"Share your experience (optional, up to 500 characters)","rateFail":"Rating submission failed, please retry later","rateLink":"Rate","rateOk":"Rating submitted, thanks for your feedback","ratePickScore":"Please pick a star rating first","rateScoreLabel":"Your rating","rateScoreValue":"{0} stars","rateSubmit":"Submit rating","rateSubmitting":"Submitting…","rateTitle":"Rate this plugin","rateTooFast":"Too many submissions, please try again later (max 3 per plugin per day)","readme":"README","redeemBtn":"Unlock","redeemDemo":"Try 080808 to unlock a theme for free","redeemOk":"Unlocked: {0}, added to the list below","redeemPh":"Passcode, e.g. 3K7M9P","redeemTitle":"Enter a passcode to unlock plugins","redeeming":"Unlocking…","refresh":"Обновить","refreshBanner":"изменения применены — обновите страницу, чтобы их увидеть","removedItemLabel":"Removed from marketplace","removedItemReason":"Reason: {0}","replacementHint":"Каталог предлагает","reportCatFraud":"Fraud / scam","reportCatInfringement":"Infringement (copyright / trademark / patent)","reportCatMalware":"Malware / data theft","reportCatMisleading":"Misleading / false claims","reportCatOther":"Other issue","reportCatPorn":"Pornographic content","reportCategoryLabel":"Reason","reportContactLabel":"Contact","reportContactPh":"Optional contact so the platform can reach you","reportDescLabel":"Description","reportDescPh":"Describe the issue and evidence (at least 10 characters)","reportFail":"Report submission failed, please retry later","reportLink":"Report","reportOk":"Report submitted. The platform will verify it, usually within 48 hours. Thanks for keeping the marketplace safe.","reportPick":"Select…","reportPickCategory":"Please pick a reason","reportRateLimited":"Too many submissions, please try again later","reportSubmit":"Submit report","reportSubmitting":"Submitting…","reportTitle":"Report this plugin","reportTooShort":"Description must be at least 10 characters","restartBanner":"изменения внесены — перезапустите DeepSeek Harness","restartFail":"Перезапустить не удалось","restartHint":"Как перезапустить: остановите текущий процесс dsh и запустите его снова (например, dsh web)","restartNow":"Перезапустить","restartTimeout":"Не дождались запуска DeepSeek Harness","restarting":"Перезапуск…","restoreConfirm":"Восстановление перезапишет настройки этого профиля и переустановит плагины. Продолжить?","restoreDone":"Восстановление завершено — перезапустите DeepSeek Harness","restoreMissing":"Плагинов из копии не установлено: {0}","restorePartial":"Восстановление продолжилось, но эти плагины установить не удалось:","restorePreviewDone":"Копия загружена. Проверьте вкладку «Установленные» и запускайте восстановление.","restoreStart":"Начать восстановление","rollbackNow":"Откатить","rollingBack":"Откат изменений…","searchPh":"Поиск плагинов: уведомления, терминал, память…","setCardDesc":"Просмотр версии и настроек магазина плагинов.","setChannel":"Канал обновлений","setChannelBeta":"Бета","setChannelBetaHint":"Ранний доступ к непроверенным версиям. Влияет только на рынок плагинов.","setChannelDev":"Разработка","setChannelDevHint":"Непроверенные сборки из ветки разработки. Не рекомендуются для общего использования.","setChannelStable":"Стабильный","setChannelStableHint":"Только выпущенные версии.","setChannelSwitch":"Переключиться на","setChannelSwitchHint":"Эта версия ниже установленной.","setSelfCancel":"Отмена","setSelfConfirm":"Удалить магазин плагинов? Повторная установка возможна только через командную строку.","setSelfFailed":"Сбой операции","setSelfPurge":"Также очистить собственные данные магазина","setSelfPurgeOff":"Сохранить данные магазина. Обратите внимание: отключённые плагины останутся выключенными, и после удаления магазина вернуть их через интерфейс будет невозможно.","setSelfPurgeOn":"Будут удалены: списки отключений магазина, пользовательские группы и записи отключений в файле патча профиля — отключённые плагины снова запустятся. Пароли и токены не затрагиваются (магазин не сохраняет их на диске).","setSelfRemove":"Удалить магазин плагинов","setSelfRemoveConfirm":"Удалить","setSelfRemoveHint":"Удалить магазин из этого профиля. Ваши остальные плагины затронуты не будут.","setSelfRemoved":"Удалено","setSelfRemovedHint":"Перезапустите DeepSeek Harness для завершения очистки.","setSelfUpToDate":"Установлена последняя версия","setSelfUpToDateHint":"Актуально, обновление не требуется","setSelfUpdate":"Обновить","setSelfUpdateHint":"При обновлении скачивается новая версия; она вступит в силу после перезапуска.","setSelfUpdateReady":"Доступна новая версия:","setSelfUpdatedHint":"Загружено. Перезапустите DeepSeek Harness, чтобы изменения вступили в силу — клиент обновится сразу, сервер после перезапуска.","setSelfWorking":"Удаление…","sortAdded":"Дата выпуска","sortAsc":"По возрастанию","sortDesc":"По убыванию","sortDownloads":"npm загрузки (30д)","sortNewest":"Сначала новые","sortOldest":"Сначала старые","sortStars":"Звёзды","stateBroken":"Установлен, но не прошёл проверку","stateDisabled":"Выключен","stateInert":"Установлен, но не является плагином слоя профиля","stateLive":"Работает (загружен на лету)","stateRestart":"Установлен — перезапустите, чтобы применить","stepsLabel":"Getting started","subtitle":"Плагины сообщества для DeepSeek Harness","tabAgentic":"Agents & Skills","tabAppearance":"Appearance & Experience","tabBackup":"Копия и восстановление","tabDiagnostics":"Диагностика","tabDiscover":"Обзор","tabGroups":"Группы","tabInstalled":"Установленные","tabList":"Список","tabPublic":"Public market","tabRedeem":"Passcode","tabThemes":"Темы","tabUtility":"Tools & Capabilities","teachingLabel":"Guides","terminalWarn":"Похоже, это плагин для терминала: в веб-профиле он может ничего не делать или даже сломать запуск DeepSeek Harness. Прочитайте его README и ставьте в тот профиль, для которого он написан.","themeActive":"Активна","themeApply":"Применить","themeDeactivate":"Отключить","themeEmpty":"Других тем в каталоге пока нет — следите за обновлениями","timeAll":"Всё время","timeDay":"Сутки","timeMonth":"30 дней","timeQuarter":"90 дней","timeWeek":"7 дней","timeYear":"Год","toastReady":"установлен и работает","toastTheme":"теперь активна. Переключить можно в «Настройки → Маркет плагинов → Темы»","today":"Updated today","toggleFail":"Переключить не удалось","trustedLabel":"Platform-verified source","ungrouped":"Без группы","uninstall":"Удалить","uninstallConfirmDesc":"Плагин будет удалён из текущего профиля.","uninstalling":"Удаление…","unlockDelete":"Remove","unlockDeleteConfirm":"Remove this unlock record? Installed plugins are not affected.","unlockDeleteFail":"Remove failed","unlockDeleteWorking":"Removing…","unlockInstall":"Install","unlockInstallOk":"Installed: {0} — find it in the Installed tab","unlockedAt":"Unlocked {0}","unlockedEmpty":"Nothing unlocked yet. Seen a passcode in a creator’s video? Type it in.","unlockedTitle":"My unlocked plugins","upToDate":"Обновлений нет","update":"Обновить","updateAll":"Обновить все","updateFail":"Обновить не удалось","updateNow":"Обновить сейчас","updated":"✓ Обновлён — перезапустите, чтобы применить","updatedLive":"✓ Обновлён — работает","updating":"Обновление…","versionHint":"Версия магазина плагинов — укажите её при сообщении об ошибке","videoFallback":"Not playing? Watch in browser","videoLabel":"Tutorial video","viewReplacement":"Посмотреть замену","viewSource":"Исходник","webdav":"WebDAV","webdavNote":"Адрес WebDAV и имя пользователя остаются только в этом браузере; пароль хранится на сервере и вводится заново каждую сессию.","webdavPassword":"Пароль (необязательно)","webdavPreset":"Готовая настройка провайдера","webdavRestore":"Восстановить с WebDAV","webdavUpload":"Выгрузить копию","webdavUrl":"Адрес файла копии","webdavUser":"Имя пользователя (необязательно)"},"feedback":{"action.dislike":"Плохой ответ","action.dislikeActive":"Убрать оценку","action.like":"Хороший ответ","action.likeActive":"Убрать оценку","error.conflict":"Эту оценку изменили в другом месте; показано актуальное состояние","error.generic":"Не удалось сохранить оценку","error.load":"Не удалось загрузить оценку","note.aria":"Комментарий к оценке","note.cancel":"Отмена","note.dialog":"Отзыв","note.open":"Добавить комментарий","note.placeholder":"Что получилось хорошо, а что нет? (необязательно)","note.save":"Сохранить"},"goal":{"action.cancel":"Отменить правку","action.clear":"Снять цель","action.edit":"Изменить цель","action.pause":"Приостановить цель","action.resume":"Продолжить цель","action.save":"Сохранить цель","commandInput.aria":"Ввод команды","objective.aria":"Формулировка цели","phase.active":"Цель в работе","phase.blocked":"Цель заблокирована","phase.paused":"Цель на паузе"},"im-hub":{"f.agentCwd":"Рабочая папка","f.agentCwdHint":"Папка для сессий агента; пусто — папка процесса dsh.","f.agentMaxMessageLength":"Длина сообщения","f.agentMaxMessageLengthHint":"Максимум символов в исходящем сообщении; длинные ответы разбиваются.","f.agentModel":"Модель","f.agentModelHint":"Переопределить модель; пусто — как задано в установке.","f.agentProvider":"Провайдер","f.agentProviderHint":"Переопределить провайдера модели; пусто — как задано в установке.","f.allowedUserIdsHint":"Идентификаторы через запятую; пусто — доступ всем (для боевой работы не советуем).","f.configured":"Задано","f.enabled":"Включено","f.enabledHint":"Общий выключатель всего IM-шлюза.","f.feishuAllowedUserIds":"Разрешённые open id","f.feishuAppId":"App id","f.feishuAppIdHint":"App id приложения Feishu (cli_…).","f.feishuAppSecret":"App secret","f.feishuEnabled":"Включено","f.feishuEnabledHint":"Включить адаптер Feishu по постоянному WebSocket-соединению (публичный адрес не нужен).","f.httpHost":"Адрес привязки","f.httpHostHint":"Адрес, на котором слушают HTTP-серверы в режиме вебхуков.","f.httpPort":"Порт привязки","f.httpPortHint":"Порт, на котором слушают HTTP-серверы в режиме вебхуков.","f.inherit":"Наследовать","f.larkAllowedUserIds":"Разрешённые open id","f.larkAppId":"App id","f.larkAppSecret":"App secret","f.larkEnabled":"Включено","f.larkEnabledHint":"Включить международный адаптер Lark (open.larksuite.com).","f.mockEnabled":"Включено","f.mockEnabledHint":"Адаптер только для тестов: локальный HTTP-эндпоинт без учётных данных платформы.","f.mockPort":"Порт","f.mockPortHint":"Фиксированный HTTP-порт тестового эндпоинта (0 — любой свободный).","f.notConfigured":"Не задано","f.off":"Выкл","f.on":"Вкл","f.secretHint":"Хранится на сервере и больше не показывается. Оставьте пустым, чтобы сохранить текущее значение.","f.telegramAllowedUserIds":"Разрешённые id пользователей","f.telegramEnabled":"Включено","f.telegramEnabledHint":"Включить адаптер Telegram Bot API с опросом обновлений.","f.telegramToken":"Токен бота","f.telegramTokenHint":"Токен от @BotFather (123456:ABC-DEF…).","f.wecomAgentId":"Agent id","f.wecomAgentIdHint":"Agent id приложения WeCom.","f.wecomAllowedUserIds":"Разрешённые id пользователей","f.wecomCorpId":"Corp id","f.wecomCorpIdHint":"Идентификатор организации из консоли WeCom.","f.wecomCorpSecret":"App secret","f.wecomEnabled":"Включено","f.wecomEnabledHint":"Включить адаптер WeCom с обратным вызовом (нужен публичный адрес).","f.wecomEncodingAesKey":"EncodingAESKey","f.wecomToken":"Токен обратного вызова","g.agent":"Агент","g.feishu":"Feishu (Китай)","g.general":"Общие","g.http":"HTTP (режим вебхуков)","g.lark":"Lark (международный)","g.mock":"Тестовый адаптер","g.telegram":"Telegram","g.wecom":"WeCom (WeChat Work)","p.agentCwd":"Например: /home/user/projects/my-agent (пусто — папка DSH)","p.agentMaxMessageLength":"Например: 4000","p.agentModel":"Например: deepseek-v4-flash (пусто — по умолчанию)","p.agentProvider":"Например: volcengine (пусто — по умолчанию)","p.feishuAllowedUserIds":"Например: ou_xxxxxxxxxxxxx","p.feishuAppId":"Например: cli_xxxxxxxxxxxxx","p.feishuAppSecret":"App Secret приложения Feishu","p.httpHost":"Например: 0.0.0.0","p.httpPort":"Например: 8080","p.larkAllowedUserIds":"Например: ou_xxxxxxxxxxxxx","p.larkAppId":"Например: cli_xxxxxxxxxxxxx","p.larkAppSecret":"App Secret приложения Lark","p.mockPort":"Например: 9099 (0 — автоматически)","p.telegramAllowedUserIds":"Например: 123456789, 987654321","p.telegramToken":"Например: 123456789:AA...","p.wecomAgentId":"Например: 1000002","p.wecomAllowedUserIds":"Например: ivanov, petrov","p.wecomCorpId":"Например: wwxxxxxxxxxxxxxx","p.wecomCorpSecret":"Secret приложения WeCom","p.wecomEncodingAesKey":"EncodingAESKey из 43 символов","p.wecomToken":"Токен адреса обратного вызова","settings.collapse":"Свернуть","settings.description":"Подключает агентов dsh к Feishu (Lark), WeCom и Telegram. Каждый чат получает свою сессию агента.","settings.discard":"Отменить","settings.expand":"Развернуть","settings.invalidNumber":"Введите корректное число","settings.overridden":"Переопределено","settings.readOnly":"Установка доступна только для чтения: настройки из интерфейса не меняются.","settings.reset":"Сбросить","settings.save":"Сохранить","settings.saveFailed":"Сохранить не удалось","settings.saving":"Сохранение…","settings.title":"IM-шлюз (dsh-im-hub)","settings.unsaved":"Есть несохранённые изменения"},"job":{"count.idle.few":"{count} фоновые задачи","count.idle.many":"{count} фоновых задач","count.idle.one":"{count} фоновая задача","count.idle.other":"{count} фоновых задач","count.live.few":"{count} фоновые задачи выполняется","count.live.many":"{count} фоновых задач выполняется","count.live.one":"{count} фоновая задача выполняется","count.live.other":"{count} фоновых задач выполняется","duration.hours":"{hours} ч {minutes} мин","duration.minutes":"{minutes} мин {seconds} с","duration.seconds":"{seconds} с","duration.title.done":"Заняло {duration}","duration.title.live":"Выполняется {duration}","list.aria":"Фоновые задачи","status.completed":"завершена","status.failed":"ошибка","status.killed":"отменена","status.running":"выполняется","status.stopping":"останавливается"},"model":{"action.reload":"Обновить","blocked.composer":"Эта модель недоступна — выберите другую, чтобы продолжить","command.description":"Выбрать модель для этого диалога","effort.providerDefault":"По умолчанию","empty.efforts":"У этой модели нет уровней рассуждения.","empty.models":"Доступных моделей нет.","error.action":"Операция с моделью не удалась: {message}","menu.aria":"Модель и уровень рассуждения","menu.effort":"Уровень рассуждений","menu.model":"Модель","option.loadError":"Каталог не загрузился: {message}","status.loading":"Обновление списка моделей…","trigger.aria":"Выбор модели, сейчас {model}","trigger.ariaEffort":"Выбор модели, сейчас {model}, уровень рассуждения {effort}","trigger.fallback":"Выбрать модель","trigger.selectAria":"Выбрать модель","warning.groupLoad":"{name} не загрузился: {message}"},"opencode-palette":{"bodyStyle":"Стиль текста","codeFont":"Шрифт кода","disableTitle":"Нажмите, чтобы отключить тему","disabled":"Отключено","enableTitle":"Нажмите, чтобы включить тему","enabled":"Включено","fontPreview":"моно","fontSize":"Размер шрифта","group.cool-blue":"Холодные синие","group.cyan-blue":"Сине-голубые","group.neutral":"Нейтральные","group.special":"Особые","group.teal":"Бирюзовые","group.transparent":"Прозрачные","group.violet":"Фиолетовые","group.warm":"Тёплые","group.yellow-green":"Жёлто-зелёные","mono":"Моноширинный (терминал)","noMatch":"Подходящих тем не найдено","panelName":"Палитра Opencode","sans":"Обычный (интерфейс)","search":"Поиск тем…","subtitle":"34 официальные темы opencode — переключение в один клик","systemDefault":"Системная (по умолчанию)","themeCount":"34 темы · по цветовым группам","themeSection":"Выбор темы","typography":"Шрифт и размер"},"permission.access":{"confirm.acknowledge":"Я понимаю риски и хочу продолжить","confirm.cancel":"Отмена","confirm.description":"Полный доступ убирает часть подтверждений и позволяет агенту действовать напрямую, включая чувствительные операции, изменение файлов и внешние команды. Включайте, только если доверяете текущей задаче.","confirm.enable":"Включить полный доступ","confirm.title":"Включить полный доступ?"},"personalDirective":{"disabled":"Директива: Выкл","enabled":"Директива: Вкл","failed":"Сбой подключения переключателя директивы","switching":"Переключение…","title":"Переключить персональную директиву"},"pin":{"action.pin":"Закрепить","action.unpin":"Открепить"},"plan":{"chip.off.aria":"Режим плана выключен, нажмите, чтобы включить","chip.off.title":"Режим плана выключен — нажмите, чтобы включить (/plan)","chip.on.aria":"Режим плана включён, нажмите, чтобы выключить","chip.on.title":"Режим плана включён — нажмите, чтобы выключить (/plan off)"},"plugin-store":{"dialog.close":"Закрыть магазин плагинов","header.open":"Открыть магазин плагинов","header.title":"Магазин плагинов DSH","settings.tab":"Магазин плагинов","store.analyzeFailed":"Передать разбор агенту не удалось","store.analyzeHint":"Отправить эту ошибку в новую сессию агента для разбора.","store.analyzeSent":"Отправлено агенту","store.analyzeWithAgent":"Попросить агента разобраться","store.analyzing":"Создаём сессию агента…","store.cancel":"Отмена","store.category":"Категория","store.categoryAll":"Все категории","store.confirmInstall":"Установить плагин","store.confirmRemove":"Удалить плагин","store.confirmUpdate":"Обновить плагин","store.copied":"Ссылка для установки скопирована","store.copyInstall":"Скопировать ссылку для установки","store.disclaimer":"Наличие в каталоге не подтверждает работоспособность, совместимость, безопасность или качество.","store.done":"Готово","store.empty":"Под эти фильтры ничего не подходит","store.install":"Установить","store.installFailed":"Установить не удалось","store.installSuccess":"Установлено. Перезапустите DSH Web, чтобы плагин заработал.","store.installed":"Установлен","store.installedLoadFailed":"Список установленных плагинов недоступен","store.installedOnly":"Только установленные","store.installing":"Установка…","store.loadFailed":"Не удалось загрузить каталог","store.loadMore":"Показать ещё","store.loading":"Загрузка каталога плагинов…","store.openDetails":"Открыть карточку в магазине","store.refresh":"Обновить каталог","store.refreshFailed":"Каталог не обновился; показаны последние успешные данные","store.remove":"Удалить плагин","store.removeDetail":"Меняется только зависимость текущего профиля. Чтобы удаление вступило в силу, перезапустите DSH Web.","store.removeFailed":"Удалить не удалось","store.removeLead":"Плагин будет удалён из текущего профиля DSH Web.","store.removeSuccess":"Удалено. Перезапустите DSH Web, чтобы изменение вступило в силу.","store.removeTitle":"Удаление плагина","store.removing":"Удаление…","store.results":"{visible} из {total} проектов","store.retry":"Повторить","store.riskAcknowledge":"Я понимаю риск и хочу установить этот сторонний плагин","store.riskDetail":"Присутствие в каталоге не является проверкой безопасности, совместимости или качества. Установленный код выполняется с правами процесса DSH, а чтобы он заработал, DSH Web нужно перезапустить.","store.riskLead":"В текущий профиль DSH Web будет установлен код из стороннего репозитория.","store.riskTitle":"Подтверждение риска стороннего плагина","store.search":"Поиск по названию, автору, описанию или теме","store.sort":"Сортировка","store.sortName":"Название","store.sortRecommended":"Рекомендуемые","store.sortStars":"Звёзды","store.sortUpdated":"Недавно обновлённые","store.stars":"звёзд: {count}","store.topicListed":"Указана тема","store.update":"Обновить","store.updateAvailable":"Есть обновление","store.updateRiskDetail":"Обновление заменит версию плагина в этом профиле. Чтобы оно вступило в силу, перезапустите DSH Web.","store.updateRiskLead":"В текущий профиль DSH Web будет установлена более новая ревизия стороннего репозитория.","store.updateRiskTitle":"Подтверждение обновления стороннего плагина","store.updateSuccess":"Обновлено. Перезапустите DSH Web, чтобы плагин заработал.","store.updated":"Каталог обновлён {date}","store.updating":"Обновление…","store.validation.check-failed":"Проверка структуры не пройдена","store.validation.check-pending":"Проверка структуры в очереди","store.validation.check-running":"Идёт проверка структуры","store.validation.expired":"Нужна повторная проверка","store.validation.inconclusive":"Требует рассмотрения","store.validation.not-applicable":"Вне проверки плагинов","store.validation.recorded":"Есть запись о проверке","store.validation.sandbox-failed":"Проверка в песочнице не пройдена","store.validation.sandbox-pending":"Проверка в песочнице в очереди","store.validation.sandbox-running":"Идёт проверка в песочнице","store.validation.security-review":"Проверка безопасности","store.validation.unrecognized":"Требует опознания","store.validation.verified":"Проверен","store.verified":"Проверен","store.verifiedOnly":"Только проверенные"},"question":{"action.next":"Дальше","action.skip":"Пропустить вопрос","custom.placeholder":"Впишите свой ответ","error.incomplete":"Сначала ответьте на этот вопрос.","error.unanswered":"Выберите вариант или впишите свой ответ.","nav.cancel":"Закрыть все вопросы","nav.maximize":"Развернуть карточку вопроса","nav.minimize":"Свернуть карточку вопроса","nav.next":"Следующий вопрос","nav.prev":"Предыдущий вопрос","option.recommended":"Рекомендуем","plan.approve":"Утвердить","plan.decline":"Отклонить","plan.discuss":"Обсудить","plan.header":"Проверка плана"},"reference":{"candidate.file":"Файл","candidate.folder":"Папка","candidate.noCwd":"(нет cwd)","candidate.session":"Сессия","section.files":"Файлы и папки","section.sessions":"Диалоги сессий"},"session-log-download":{"dialog.close":"Закрыть","dialog.commandFailed":"Не удалось запустить экспорт сессии.","dialog.errorTitle":"Экспорт сессии не удался","dialog.preparingDescription":"Готовится ZIP с этой сессией, её подсессиями и вложениями.","dialog.preparingTitle":"Экспорт сессии","dialog.successDescription":"Браузер загружает ZIP с сессией.","dialog.successTitle":"Загрузка сессии началась"},"settings":{"close":"Закрыть","general.nav":"Общие","openDocument":"Открыть файл настроек","openDocument.error":"Не удалось открыть файл настроек","title":"Настройки","trigger":"Настройки"},"settings.agentPreset":{"brokenBadge":"Не загрузился","brokenNoCopy":"Пресет, который не загрузился, скопировать нельзя","builtIn":"Встроенный","builtInGroup":"Встроенные","cancel":"Отмена","close":"Закрыть","composition":"Композиция (agent.cordis.yml)","copyIntro":"Пресет копируется целиком на этой машине. Идентификатор станет именем каталога и позже не меняется; всё остальное правится в файлах самого пресета.","copyOf":"Скопирован с","copyTitle":"Скопировать пресет","create":"Создать","creating":"Создание…","creatorDraft":"Набросать свой пресет в режиме «Конструктор»","customGroup":"Свои","delete":"Удалить","deleteConfirm":"Удалить","deleteDescription":"Каталог пресета будет удалён. Уже запущенные на нём сессии продолжат работать, но выбрать его для новых нельзя.","deleteTitle":"Удалить этот пресет?","deleting":"Удаление…","description":"Действует на сессии, запущенные с этого момента. Работающие сессии остаются на своём пресете.","displayName":"Название","displayNamePlaceholder":"Показывается в списке; по умолчанию — идентификатор","duplicate":"Скопировать","duplicateUnavailable":"В этой установке нет каталога пресетов с правом записи","error":"Не удалось загрузить пресеты агента.","headerHint":"Пресет агента, на котором идёт сессия; зафиксирован при запуске","idInvalid":"Строчные буквы, цифры и дефисы, начиная с буквы или цифры.","idRequired":"Задайте пресету идентификатор.","idTaken":"Пресет с таким идентификатором уже есть.","inUse":"Используется","loading":"Загрузка пресетов…","nav":"Пресеты агента","noDescription":"Без описания.","openLocation":"Открыть папку","presetCodeDescription":"Всё, что умеет обычный режим, но инструменты отдаются через Code Mode SDK: модель собирает многошаговые операции в одну программу на TypeScript.","presetCodeName":"Режим кода","presetCordisDescription":"Для создания своих пресетов: всё из обычного режима плюс инспекция рантайма, опыты с плагинами и подсказки по авторству пресетов.","presetCordisName":"Конструктор","presetId":"Идентификатор","presetIdPlaceholder":"my-agent","presetMinimalDescription":"Агент из двух инструментов: постоянный bash и str_replace_editor.","presetMinimalName":"Минимальный режим","presetStandardDescription":"Полноценный кодинг-агент: правка файлов, консоль, поиск по файлам и в вебе, скиллы, планирование, цели, субагенты и воркфлоу.","presetStandardName":"Обычный режим","retry":"Повторить","revealedPathLabel":"Файлы пресета:","seatHint":"Пресет агента для сессии, которую вы собираетесь запустить","sectionIntro":"Пресет — это состав плагинов, на котором работает агент сессии: его инструменты, промпт и возможности. Скопируйте готовый и допилите под себя или попросите агента набросать свой в режиме «Конструктор».","setDefault":"Сделать основным","showLocation":"Показать расположение","title":"Пресет агента","userTrust":"Свой","view":"Посмотреть"},"settings.commandcode":{"accountAdd":"Добавить аккаунт","accountDefault":"Основной аккаунт","accountKey":"API-ключ","accountKeyHint":"API-ключ этого аккаунта. Если оставить поле пустым, сохранённый ключ останется без изменений.","accountLabel":"Название аккаунта","accountRemove":"Удалить","accountSeparator":"────────────────────","accountTitle":"📊 {label}{badges}","accountsHint":"Когда активный аккаунт достигает лимита использования (429) или его ключ недействителен (401), запросы переключаются на следующий аккаунт; когда все аккаунты исчерпаны, ошибка указывает ближайшее время сброса окна.","accountsTitle":"Смена аккаунта","activeAccount":"Активный аккаунт","activeAccountAuto":"Авто (первый доступный аккаунт)","activeAccountHint":"Закрепите предпочтительный аккаунт; применяется к следующему запросу после сохранения. Если выбранный аккаунт исчерпан, запросы будут перенаправлены на другой доступный аккаунт.","activeBadge":" ✅ активен","advancedInvalid":"Число в расширенных настройках не готово к сохранению; раскройте, чтобы исправить.","advancedOverriddenMany":"{count} настроено","advancedOverriddenOne":"1 настроенный","advancedSettings":"Дополнительно","advancedSettingsHint":"Редко используемые параметры: базовый URL API, рабочая директория, тайм-ауты и фильтрация моделей.","apiBase":"Базовый URL API","apiBaseHint":"По умолчанию используется https://api.commandcode.ai; обычно оставляйте как есть.","apiKey":"API-ключ","apiKeyHint":"Создайте его в консоли commandcode.ai. Если оставить это поле пустым, сохранённый ключ останется без изменений.","apiKeyLocked":"Ключ предоставлен только для чтения","apiKeySet":"Настроено","apiKeyUnset":"Не настроено","barLine":" └ {bar} {pct}%","blockedInvalidKey":"⛔ API-ключ недействителен или истёк — сервер отклонил запросы (401); проверьте ключ аккаунта","blockedNetwork":"⚠️ Не удалось подключиться к Command Code — проверьте сеть или адрес API","blockedServiceUnavailable":"⚠️ Сервис Command Code временно недоступен (5xx); повторите позже","cancel":"Отмена","cardConfiguredHint":"API-ключ готов. Чтобы заменить его, добавить ротацию аккаунтов, проверить использование или изменить базовый API, откройте страницу \"Command Code\" в Настройках.","cardLoadingHint":"Загрузка конфигурации командного кода…","cardRegistrationHint":"Эта карта предоставлена плагином Command Code; для отображения всех элементов управления требуется более новая версия DeepSeek Harness.","cardRouteActive":"Активный","cardTitle":"Подключение командного кода","cooldownBadge":" ⏳ охлаждение, сброс {when}","costLine":" 💰 Расход {money} ({credits} кредитов)","creditsHeader":"── Кредиты ──────────────────────────","discard":"Отменить","errorText":"Не удалось получить статистику Command Code: {message}","exceededWarning":" ⚠️ превышен!","filterModelsByPlan":"Скрыть модели вне тарифного плана","filterModelsByPlanHint":"Если включено, в выборе моделей отображаются только те, что входят в вашу подписку; при наличии баланса кредитов по запросу показывается полный каталог.","fiveHourLine":" ⏱ 5-часовое {used} / {cap}{warn}","hide":"Скрыть","imageGate":"В сессии уже есть изображения, а модель {model} не поддерживает изображения; выберите модель с поддержкой зрения или удалите изображения из сессии.","intro":"Настройте подключение к Command Code Provider. API-ключ сохраняется только в локальной службе учетных данных и никогда не отображается; остальные поля записываются в пользовательские настройки и вступают в силу при следующем запросе.","invalidCredentialBadge":" ⛔ неверный ключ","invalidNumber":"Недопустимый номер","loginButton":"Войдите в Command Code","loginCancel":"Отменить вход","loginCancelled":"Вход отменён.","loginDenied":"Доступ запрещён. Попробуйте снова или вставьте ключ вручную.","loginFailedGeneric":"Не удалось войти; попробуйте снова или вставьте ключ вручную.","loginHintIdle":"Не хотите создавать ключ вручную? Войдите в систему, и ваш браузер откроет страницу авторизации commandcode.ai; одобренный ключ сохранится в локальном сервисе учетных данных и будет применяться к следующему запросу.","loginInvalidKey":"Доставленный ключ не прошел проверку (401). Попробуйте снова или вставьте его вручную.","loginNetwork":"Не удалось подключиться к сервису Command Code для проверки ключа; проверьте подключение к сети и повторите попытку.","loginOpenLink":"Откройте страницу авторизации ↗","loginStarting":"Запуск локального серверного обработчика callback…","loginStoreFailed":"Не удалось сохранить ключ в локальной службе учетных данных; вставьте его вручную.","loginSuccess":"Вошли как","loginTimeout":"Истекло время ожидания ответа авторизации; попробуйте снова.","loginTitle":"Войти, чтобы получить ключ","loginUnavailable":"Вход в систему недоступен в этой среде; вставьте {API key} вместо этого.","loginWaiting":"Ожидание авторизации в вашем браузере…","monthlyLine":" 💳 В месяц {monthly} (куплено {purchased} / бесплатно {free})","nav":"Код команды","noData":"(нет данных — проверьте API-ключ)","numberTooLarge":"Превышено допустимое максимальное значение (2147483647 мс)","numberTooSmall":"Должно быть не менее 1 (мс)","overridden":"Переопределено","partialFailures":"⚠️ Сбои на некоторых эндпоинтах: {list}","planLine":" 📦 Тариф {name}{status}{period}","planPeriodSuffix":" · окончание периода: {date}","rateLimitBadge":" ⏳ лимит запросов (ожидание окна)","readOnly":"Настройки доступны только для чтения.","requestTimeoutMs":"Таймаут запроса (мс)","requestTimeoutMsHint":"Время ожидания первого байта ответа; по умолчанию 60000.","requestsLine":" 💬 Запросы {n} / сбоев {f} успешность {r}%","reset":"Сбросить","resetSuffix":"сброс {when}","save":"Сохранить","saveFailed":"Не удалось сохранить, попробуйте снова.","saved":"Сохранено ✓","saving":"Сохранение","show":"Показать","streamIdleTimeoutMs":"Таймаут простоя потока (мс)","streamIdleTimeoutMsHint":"Как долго зависший поток считается мёртвым; по умолчанию 300000 (намеренно щедро — модели с долгим обдумыванием могут молчать минутами).","title":"Код команды","tokensLine":" 🔤 Токены {in} вход / {out} выход","unconfigured":" (API-ключ не настроен)","unsaved":"Не сохранено","updateAvailable":"доступно обновление","updateHint":"Доступна новая версия; нажмите для просмотра заметок о выпуске. Уведомление исчезнет после обновления плагина.","usageActive":"Активно","usageCooldown":"Охлаждение","usageCost":"Потратить","usageError":"Не удалось получить данные об использовании","usageExceeded":"Превышено","usageFailed":"не удалось","usageFiveHour":"5-часовое окно","usageFree":"Бесплатно","usageHeader":"── Запросы ──────────────────────────","usageInvalidKey":"Неверный ключ","usageKeyClear":"Очистить сохранённый ключ","usageKeyClearStaged":"Будет очищено при сохранении","usageKeyInvalid":"Неверный или просроченный API-ключ","usageKeyInvalidHint":"Сервер отклоняет все запросы (401). Проверьте ключ, настроенный для этого аккаунта, или создайте новый в консоли commandcode.ai.","usageLoading":"Получение данных об использовании аккаунта…","usageMonthly":"Ежемесячно","usageNetworkError":"Не удалось подключиться к сервису Command Code","usageNetworkHint":"На сервер не поступило ни одного запроса. Проверьте подключение к сети или настройку базового API.","usageNoKey":"Настройте API-ключ, чтобы увидеть здесь данные об использовании и состоянии кредитов этого аккаунта.","usagePartial":"Некоторые данные конечной точки недоступны","usagePeriodEnd":"Период заканчивается","usagePurchased":"Куплено","usageRefresh":"Обновить","usageRefreshing":"Обновление…","usageRequests":"Запросы","usageReset":"Сбросить","usageServiceUnavailable":"Сервис Command Code временно недоступен","usageServiceUnavailableHint":"Сервер вернул ошибки (5xx); попробуйте обновить позже.","usageSuccessRate":"Уровень успеха","usageTitle":"Использование аккаунта","usageTokens":"Токены","usageTokensIn":"в","usageTokensOut":"выход","usageUnconfigured":"Для этого аккаунта ещё не настроен API-ключ.","usageUndoKeyClear":"Отменить очистку","usageUpdated":"Обновлено","usageWeekly":"Еженедельное окно","weeklyLine":" 📅 Недельное {used} / {cap}{warn}","windowBarLine":" └ {bar} сброс {when}","windowsHeader":"── Использование окна ───────────────","workingDir":"Рабочая директория","workingDirHint":"Необязательно. Оставьте пустым, чтобы использовать текущий рабочий каталог процесса (указан в поле); укажите путь только для фиксации конкретного расположения."},"settings.locale":{"language.title":"Язык"},"settings.models":{"add":"Добавить провайдера","addModel":"Добавить модель","advancedHint":"Остальные поля живут в settings.yaml — правьте этот раздел напрямую.","apply":"Применить","applying":"Применение…","baseUrl":"Базовый URL","baseUrlDefault":"По умолчанию у провайдера","cancel":"Отмена","close":"Закрыть","conflict":"Пока карточка была открыта, настройки изменил кто-то ещё. Закройте и откройте заново, чтобы править актуальные значения.","contextWindow":"Окно контекста","contextWindowPlaceholder":"Как у провайдера по умолчанию","create":"Создать провайдера","creating":"Создание…","credentialConfigured":"API-ключ задан","credentialMissing":"API-ключ не задан","customAdd":"Добавить своего провайдера","customApi":"Протокол API","customApiUnset":"Не выбран","customDisplayName":"Отображаемое имя","customNeedsBaseUrl":"Своему провайдеру нужен базовый URL.","customNeedsModels":"Своему провайдеру нужна хотя бы одна модель.","customRoute":"Идентификатор провайдера","customRouteHint":"Идентификатор в нижнем регистре, начинается с буквы. По нему провайдер адресуется в запросах, и так же называется его ключ.","customRouteInvalid":"Начните со строчной буквы, дальше строчные буквы, цифры и дефисы.","customRouteTaken":"Такой идентификатор уже занят другим провайдером.","customTag":"Свой","customTitle":"Свой провайдер","customized":"Настройки изменены","deleteConfirm":"Удалить {provider}","deleteDescription":"Удаление {provider} убирает его настройки. Ключ, которым он пользовался, хранится отдельно и останется.","deleteDescriptionWithCredential":"Удаление {provider} убирает его настройки и сохранённый API-ключ.","deleteTitle":"Удалить {provider}?","deleting":"Удаление {provider}…","edit":"Изменить","editProvider":"Изменить {provider}","fetchAdopt":"Добавить выбранные","fetchDescription":"Вот модели, доступные у этого провайдера. Отметьте те, что нужно добавить.","fetchDeselectAll":"Снять выбор","fetchEmpty":"Провайдер не вернул ни одной модели. Добавьте их вручную.","fetchModels":"Запросить список моделей","fetchNeedsBaseUrl":"Сначала укажите базовый URL, потом запрашивайте.","fetchSelectAll":"Выбрать все","fetchTitle":"Выберите модели","fetching":"Запрос к провайдеру…","intro":"Введите свои API-ключи, чтобы пользоваться моделями этих провайдеров.","keyBlank":"Введите API-ключ или оставьте поле пустым, чтобы сохранить прежний.","keyBlankNew":"Введите API-ключ или оставьте поле пустым, если провайдер авторизуется иначе.","keyEnvLocked":"Задан переменной окружения (только чтение)","keyIllegalCharacters":"Ключ в недопустимом формате. Проверьте его.","keyInput":"API-ключ","keyPlaceholder":"Введите API-ключ","keyPlaceholderNative":"Введите API-ключ или оставьте пустым для авторизации из окружения","keyRequired":"Чтобы продолжить, введите API-ключ.","keyStored":"Задан — введите новое значение, чтобы заменить","loadFailed":"Не удалось загрузить список провайдеров","maxTokens":"Максимум выходных токенов","maxTokensPlaceholder":"Как у провайдера по умолчанию","model":"Модель","modelAdvanced":"Ёмкости","modelCapacityInvalid":"Ёмкость задаётся числом, можно с суффиксом K или M.","modelContextInvalid":"Окно контекста — положительное число, например 131072, 256K или 1M.","modelContextWindow":"Окно контекста","modelDuplicate":"Каждый идентификатор модели встречается один раз.","modelId":"Идентификатор модели","modelIdDuplicate":"Идентификатор модели должен быть уникальным.","modelIdRequired":"Нужен идентификатор модели.","modelMaxTokens":"Максимум выходных токенов","modelMaxTokensInvalid":"Максимум выходных токенов — положительное число, например 8192, 64K или 1M.","modelName":"Отображаемое имя","modelNameInvalid":"Отображаемое имя не может быть пустым.","modelNamePlaceholder":"Пусто — возьмётся идентификатор модели","models":"Модели","modelsCustomized":"Каталог моделей изменён","modelsEmpty":"В выборе моделей не будет ничего. Неуказанные идентификаторы всё равно можно отправлять напрямую.","modelsInherited":"По умолчанию, как в адаптере","nav":"Модели","onboardingDescription":"Настройте официального провайдера DeepSeek, чтобы начать.","onboardingLater":"Настроить позже","onboardingSave":"Сохранить и продолжить","onboardingSaving":"Сохранение…","onboardingTitle":"Добавьте API-ключ, чтобы начать","provider":"Провайдер","readOnly":"В этой установке файл настроек доступен только для чтения.","remove":"Удалить","removeModel":"Удалить модель","removeProvider":"Удалить {provider}","resetModels":"Вернуть значения по умолчанию","retry":"Повторить","savedProvider":"{provider} сохранён.","title":"Модели","welcomeError":"Не удалось сохранить подтверждение. Попробуйте ещё раз."},"settings.ollama-cloud":{"addModel":"Добавить модель вручную","apiKey":"API-ключ","apiKeyConfigured":"Настроено — введите новое значение для замены","apiKeyPending":"Введён новый ключ — теперь он используется для обнаружения; Сохранить для хранения","apiKeyPlaceholder":"Введите API-ключ","apiKeyUnset":"API-ключ не настроен","applySelected":"Применить выбранное","baseURL":"URL API","cancel":"Отмена","close":"Закрыть","collapse":"Свернуть настройки","connection":"Подключение","customized":"Пользовательский каталог","defaultEffort":"Стандартное мышление","description":"Родной API-ключ Ollama Cloud, конечная точка и каталог моделей.","discard":"Отменить","dragModel":"Перетащите для изменения порядка","expand":"Развернуть настройки","fetchEmpty":"Конечная точка не вернула ни одной модели.","fetchModels":"Получить доступные модели","fetchingModels":"Получение моделей…","inherited":"Использование составленного каталога","invalidApiKey":"API-ключ не может состоять только из пробелов.","invalidBaseURL":"Введите URL API HTTP или HTTPS.","invalidModel":"Каждая модель должна иметь уникальный ID и допустимые положительные значения мощностей.","loading":"Загрузка настроек плагина…","modelContext":"Контекстное окно","modelDetails":"Подробности","modelId":"ID модели","modelName":"Отображаемое имя","modelOutput":"Максимальная мощность","models":"Каталог моделей","pickerDescription":"Выберите модели, которые нужно оставить в этом каталоге.","pickerLoading":"Получение метаданных модели…","pickerTitle":"Выбрать каталог моделей","readOnly":"Настройки этого профиля доступны только для чтения.","remoteAccess":"Удалённые браузеры не могут изменять настройки плагинов: API конфигурации Harness работает только через локальный интерфейс. Откройте страницу на самом хосте или пробросьте её (ssh -L 3080:127.0.0.1:3080 user@host, затем откройте http://127.0.0.1:3080). Сохранённые там настройки продолжают работать в удалённых сеансах.","remove":"Удалить","requestFailed":"Не удалось выполнить запрос.","save":"Сохранить","saved":"Сохранено","saving":"Сохранение…","summaryModels":"{count} моделей","summaryOff":"Не настроено","summaryOn":"Настроено","thinking":"Рассуждение","title":"Ollama Облако","tools":"Инструменты","unavailable":"Этот профиль не предоставляет доступ к настройкам Ollama Cloud.","unsaved":"Несохранённые изменения","usage":"Использование облака","usageLoading":"Чтение использования…","usageModels":"Модели, использованные на этой неделе","usageNeedsRestart":"Использование отображается после перезагрузки этого плагина на работающем хосте (перезапустите dsh).","usageRefresh":"Обновить","usageRefreshFailed":"Не удалось обновить","usageRequests":"запросы","usageResetAt":"Сбросится через {time}","usageResetAtDays":"Лимиты использования сбросятся {date} (осталось {count} дней)","usageResetEveryDays":"Сбрасывается каждые {count} дней","usageResetEveryHours":"Сбрасывается каждые {count} часов","usageSession":"Использование сессии","usageUnreachable":"Не удалось получить данные об использовании Ollama Cloud. Проверьте подключение к сети и URL API.","usageUnsupported":"Этот эндпоинт не передаёт данные об использовании облака.","usageUpdatedAt":"Обновлено {time}","usageUsed":"Использовано","usageWeekly":"Еженедельное использование","vision":"Зрение"},"settings.permission":{"confirm.acknowledge":"Я понимаю риски и хочу продолжить","confirm.cancel":"Отмена","confirm.description":"Полный доступ позволяет новым сессиям реже спрашивать подтверждение и действовать напрямую, включая чувствительные операции, изменение файлов и внешние команды. Включайте, только если доверяете будущим задачам.","confirm.enable":"Включить полный доступ","confirm.title":"Включить полный доступ?","description":"Режим разрешений по умолчанию для новых сессий","loading":"Загрузка","title":"Разрешения","unavailable":"Недоступно"},"settings.pluginInventory":{"active":"Подключён","catalog":"Список плагинов","configuration":"Настройки","cordis":"Состояние Cordis","disabledTag":"Выключен","empty":"Плагинов нет.","emptySearch":"Подходящих плагинов нет.","enabledTag":"Включён","error":"Плагины временно недоступны.","failed":"Не удалось подключить","loading":"Чтение плагинов…","loadingPhase":"Загрузка","pending":"Ожидает зависимости","retry":"Повторить","search":"Поиск плагинов","tab":"Список плагинов","unloading":"Выгружается","unobserved":"Не подключён"},"settings.plugins":{"agentLoopDescription":"Как агент раздаёт вызовы инструментов.","agentLoopMaxParallel":"Параллельных вызовов","agentLoopMaxParallelHint":"Сколько безопасных для параллели вызовов идёт одновременно в пределах шага.","agentLoopTitle":"Цикл агента","bashDescription":"Ограничения для каждой команды, которую запускает агент.","bashMaxOutputBytes":"Предел вывода на поток (байт)","bashMaxOutputBytesHint":"Всё сверх предела уходит во временный файл, а не теряется.","bashTimeoutMs":"Таймаут команды (мс)","bashTimeoutMsHint":"Сколько команда может выполняться до принудительного завершения.","bashTitle":"Консоль","collapse":"Скрыть настройки","configurableTab":"Настройки плагинов","discard":"Отменить","empty":"В этой установке настройки плагинов не выведены.","expand":"Показать настройки","intro":"Настройка и просмотр плагинов, установленных в этой сборке.","invalidNumber":"Введите число или оставьте пустым, чтобы взять значение по умолчанию.","nav":"Плагины","overridden":"Переопределено","readOnly":"В этой установке настройки доступны только для чтения.","reset":"Вернуть по умолчанию","save":"Сохранить","saveFailed":"Установка не приняла эти значения; они оставлены, чтобы вы их поправили.","saving":"Сохранение…","tabs":"Разделы плагинов","title":"Плагины","unsaved":"Не сохранено","webSearchApiKey":"API-ключ","webSearchApiKeyHint":"Хранится вне файла настроек. Оставьте пустым, чтобы сохранить текущий ключ.","webSearchApiKeySet":"Ключ задан.","webSearchApiKeyUnset":"Ключ не задан; без него поиск недоступен.","webSearchBaseUrl":"Адрес сервиса","webSearchBaseUrlHint":"Оставьте пустым, чтобы взять адрес провайдера по умолчанию.","webSearchDescription":"Поисковый провайдер DeepSeek.","webSearchMaxUses":"Максимум поисков на запрос","webSearchMaxUsesHint":"Сколько раз в рамках одного запроса можно искать, прежде чем придётся отвечать.","webSearchTitle":"Поиск в вебе"},"settings.subagentDirector":{"addRole":"Добавить роль","addedRole":"Роль добавлена","bridgeUnavailable":"Мост настроек Subagent Director недоступен на этом сервере. Обновите/перезапустите dsh web.","cancel":"Отмена","closeContinuable":"Освободить субагент","closeContinuableTitle":"Освободить этот непрерывный субагент (освободить резидентный дескриптор)","closeFailed":"Сбой освобождения: {message}","closedSubagent":"Освобождён","closingContinuable":"Освобождение…","confirmCloseContinuable":"Освободить субагент «{id}»? Он перестанет быть резидентным; продолжение через send_message будет невозможно.","confirmDeleteRole":"Удалить роль «{id}»? Роли, на которые ссылается defaultRole, вернутся к настройкам плагина по умолчанию.","conflict":"Конфликт","defaultModel":"Модель","defaultProvider":"Провайдер","defaultReasoningEffort":"Уровень рассуждений","defaultRoleBadge":"По умолчанию","defaultsHeading":"Модель по умолчанию","defaultsHint":"Используется, если при вызове или в роли не указан конкретный провайдер или модель.","deleteRole":"Удалить","descriptionPlaceholder":"Когда делегировать задачи этой роли и что она должна делать…","displayNamePlaceholder":"например, Ревьюер кода","edit":"Редактировать","emptyRoles":"Шаблонов ролей пока нет. Добавьте роль, чтобы распределить обязанности субагентов.","fallbackOnInvalid":"Откатываться к родительскому агенту, если привязанная модель недоступна","fatal":"Не удалось сохранить: {message}","invalidRoleId":"Идентификатор роли должен быть в kebab-case (строчные буквы, цифры, дефис).","loadError":"Не удалось загрузить настройки предпочтений.","model":"Модель","modelNotRecorded":"Модель субагента пока не записана","modelOptional":"Сохраните карточку для применения изменений","modelQueryFailed":"Модель субагента недоступна","modelRanOn":"Субагент запущен на","modelRanOnTitle":"Маршрут модели: {model}","nav":"Директор субагентов","noAllowedModels":"Нет авторизованных моделей. Выберите модели в официальном списке субагентов (Настройки плагинов → Subagent); выбор здесь ограничен этим списком.","persona":"Персона","personaPlaceholder":"Инструкции системного промпта, передаваемые субагенту…","provider":"Провайдер","providerMissing":"Провайдер не выбран","readonly":"Настройки доступны только для чтения.","reasoningEffort":"Уровень рассуждений","rejected":"Изменение отклонено провайдером настроек.","removeRoleDone":"Роль удалена","restoreDefaults":"Сбросить по умолчанию","restoreDone":"Значения по умолчанию восстановлены","retry":"Повторить","roleDescription":"Инструкции делегирования","roleDisplayName":"Отображаемое имя","roleId":"Идентификатор роли","roleIdPlaceholder":"например, code-reviewer","rolePersona":"Персона","roleUpdated":"Роль обновлена","rolesHeading":"Шаблоны ролей","rolesHint":"Роль связывает инструкции делегирования, персону и (опционально) провайдера/модель с субагентом.","save":"Сохранить","sectionIntro":"Настройте провайдера и модель LLM для каждого субагента, а также шаблоны ролей, связывающие модель и персону с делегированием. Выбирать можно только провайдеров/модели из пула субагентов в настройках плагина (Плагины → Настройки плагинов → Subagent).","setDefaultRole":"Сделать по умолчанию","toolFilter":"Набор инструментов","toolFilterCollapse":"Свернуть","toolFilterCount":"Выбрано {count} из {total}","toolFilterDeselectAll":"Снять выбор","toolFilterEmpty":"Нет доступных инструментов","toolFilterExpand":"Развернуть","toolFilterHint":"Ограничить субагента этими инструментами. Оставьте пустым для наследования всех инструментов родителя.","toolFilterNoMatch":"Инструментов не найдено.","toolFilterNone":"Наследовать инструменты родителя (без ограничений)","toolFilterSearch":"Поиск инструментов…","toolFilterSelectAll":"Выбрать все"},"settings.subscriptions":{"cancel":"Отмена","checking":"Проверка…","generating":"Генерация изображения…","image":"изображение","imageClose":"Закрыть","imageLoadFailed":"Повторить","imageLoading":"Загрузка…","imagePreview":"Просмотр изображения","intro":"Вход и выход из провайдеров по подписке. Вход открывает страницу авторизации в новой вкладке; без браузера можно вставить адрес обратного вызова или код.","loggedIn":"Выполнен вход","loggedInAccount":"Вход выполнен как {account}","loggedInAccountExpires":"Вход выполнен как {account} · истекает {date}","loggedInExpires":"Вход выполнен · истекает {date}","login":"Войти","loginInProgress":"Идёт вход…","loginMissingUrl":"ответ на вход пришёл без authorizeUrl","logout":"Выйти","logoutConfirm":"Выйти из {provider}?","manualPlaceholder":"Вставьте адрес обратного вызова или код","manualSummary":"Не работает вход через браузер? Вставьте адрес обратного вызова или код","nav":"Подписки","notLoggedIn":"Вход не выполнен","submit":"Отправить","unavailable":"Нет связи; состояние подписок не загрузить.","usageEmpty":"Окна расхода не переданы.","usageError":"Не удалось получить расход: {message}","usageLoading":"Загрузка расхода…","usagePlan":"Тариф: {plan}","usageRefresh":"Обновить","usageResets":"сбрасывается {date}","usageSession":"Окно 5 часов","usageTitle":"Расход","usageWeekly":"За неделю","usageWindow":"Окно","viewImage":"Посмотреть изображение","viewImageNamed":"Посмотреть {name}"},"settings.theme":{"appearance.dark":"Тёмная","appearance.light":"Светлая","appearance.system":"Как в системе","appearance.title":"Оформление"},"sidebar":{"session.new":"Новая сессия","session.new.label":"Новая сессия","toggle.collapse":"Свернуть панель","toggle.open":"Открыть панель"},"skill":{"menu.userOnly":"только вручную","row.failed":"Не удалось загрузить скилл","row.instructions":"Инструкции","row.running":"Загрузка скилла","row.stopped":"Загрузка скилла остановлена"},"skills-manager":{"action.create":"создание","action.delete":"удаление","action.disable":"отключение","action.enable":"включение","action.restore":"восстановление","action.toggle":"включение или отключение","btn.cancel":"Отмена","btn.close":"Закрыть","btn.create":"Создать навык","btn.create.now":"Создать навык","btn.delete.forever":"Удалить безвозвратно","btn.detail":"Подробнее","btn.disable":"Отключить","btn.enable":"Включить","btn.file.pick":"Выбрать файл","btn.folder.pick":"Выбрать папку","btn.import":"Импорт","btn.import.now":"Установить","btn.refresh":"Обновить","btn.repair.enable":"Исправить и включить","btn.restore":"Восстановить","btn.trash":"В корзину","confirm.delete.desc":"«{name}» будет безвозвратно удалён из корзины; восстановить невозможно.","confirm.delete.title":"Удалить безвозвратно?","confirm.trash.desc":"«{name}» будет перемещён из текущего источника в корзину; позже его можно восстановить на прежнее место.","confirm.trash.title":"Отправить в корзину?","create.body":"Текст (Markdown)","create.body.placeholder":"Опишите инструкции, шаги и границы навыка…","create.chat.note":"Команда create_skill в чате по-прежнему создаёт пользовательский навык DSH; проектный навык можно создать здесь, выбрав активный проект.","create.description":"Описание","create.description.placeholder":"Одно предложение — когда использовать","create.name":"Название","create.name.placeholder":"например code-review-helper","create.target":"Место создания","create.title":"Создать навык","desc":"Единая загрузка и управление Agent-навыками на этом компьютере.","detail.body":"Текст","detail.diagnostics":"Диагностика","detail.frontmatter":"Frontmatter","detail.noIssues":"Проблем не обнаружено.","detail.path":"Исходный файл","detail.title":"Подробности навыка","diagnostic.description.missing":"В frontmatter нет description","diagnostic.frontmatter.missing":"Отсутствует полный YAML frontmatter","diagnostic.invocation.invalid":"Недопустимое значение политики вызова","diagnostic.name.invalid":"Имя навыка не соответствует kebab-case: {name}","diagnostic.name.missing":"В frontmatter нет name","diagnostic.shadowed":"Перекрыт источником с более высоким приоритетом {root}","empty.search":"Подходящих навыков нет.","empty.source":"Этого каталога не существует или в нём пока нет навыков.","error.action":"Действие не удалось: {error}","error.browse.absolute":"Путь к папке должен быть абсолютным: {path}","error.browse.notDirectory":"Это не папка: {path}","error.browse.unreadable":"Не удалось прочитать папку: {path}","error.create.bodyRequired":"Текст навыка обязателен","error.create.conflict":"Навык с таким именем уже существует: {name}","error.create.descriptionRequired":"Описание навыка обязательно","error.create.tooLarge":"Содержимое навыка слишком велико","error.import.duplicateName":"В пакетном источнике есть навыки с одинаковыми именами: {name}","error.import.emptySource":"В каталоге не найдено ни одного элемента навыков: {path}","error.import.failed":"Импорт не удался","error.import.invalidName":"Не удалось сгенерировать корректное имя kebab-case (исходное: {name})","error.import.overlap":"Источник импорта не может совпадать с каталогом навыков DSH, содержать или находиться внутри него","error.import.rollbackFailed":"Откат перезаписывающего импорта не удался; резервные копии сохранены в: {path} ({error})","error.proto.bodyTooLarge":"Тело запроса слишком велико","error.proto.contentType":"Тело запроса должно быть application/json","error.proto.forbidden":"Запрещённый запрос на изменение (нет клиентского маркера)","error.proto.forbiddenHost":"Запрещённый источник запроса (неверный Host)","error.proto.invalidJson":"Тело запроса — не корректный JSON","error.proto.method":"Метод не поддерживается","error.proto.nonJson":"Сервер вернул ответ не в формате JSON (HTTP {status})","error.proto.unknownAction":"Неизвестное действие","error.root.readonly":"Этот источник не разрешает: {action}","error.root.unknown":"Неизвестный источник навыков: {root}","error.root.unsafe":"Каталог проектных навыков небезопасен, запись отклонена: {path}","error.skill.noFrontmatter":"У навыка неполный frontmatter, нельзя выполнить «{action}»: {name}","error.skill.notFound":"Навык не найден: {name}","error.skill.notLoadable":"Структура навыка неполная, невозможно выполнить {action}: {name}","error.source.notFound":"Путь не существует: {path}","error.source.symlink":"Источники навыков с символическими ссылками не поддерживаются: {path}","error.source.tooDeep":"Глубина каталога источника превышает {depth} уровней: {path}","error.source.unrecognized":"Нераспознанный источник навыков: {path}","error.state.invalid":"Файл состояния менеджера не читается, перезапись отклонена: {path}","error.trash.conflict":"Нельзя восстановить: навык с таким именем уже существует: {name}","error.trash.invalid":"Недопустимый путь элемента корзины: {id}","error.trash.notFound":"Элемент корзины не найден: {id}","error.trash.projectUnavailable":"Исходный проект не является активной рабочей областью, восстановление невозможно: {path}","error.trash.rollbackFailed":"Откат перемещения в корзину не удался; невосстановленное содержимое сохранено в: {path} ({error})","error.upload.archiveTooLarge":"ZIP-архив слишком велик; лимит {limit} байт","error.upload.duplicate":"Загрузка содержит дублирующийся путь: {path}","error.upload.empty":"Загрузка пуста","error.upload.encoding":"Недопустимая кодировка загружаемого содержимого","error.upload.path":"Загрузка содержит недопустимый путь: {path}","error.upload.tooLarge":"Загрузка слишком велика; лимит {limit} байт","error.upload.tooMany":"Слишком много файлов; максимум {limit}","error.upload.zipInvalid":"ZIP-архив не удаётся распаковать","filter.all":"Все источники","filter.option":"{name} ({count})","filter.source":"Источник","import.title":"Импорт навыка","link.feedback":"Обратная связь","link.project":"GitHub","loading":"Загрузка навыков…","note.missing":"Описание не указано","result.created":"Навык создан: {name}","result.deleted":"Удалён безвозвратно: {name}","result.importEmpty":"Не импортировано ни одного навыка.","result.importPartial":"Импортировано: {imported}; пропущены одноимённые: {skipped}","result.importSkipped":"Ничего не импортировано; пропущены существующие: {names}","result.importWarnings":"{result}; предупреждения: {warnings}","result.imported":"Импорт завершён: {names}","result.restored":"Навык восстановлен: {name}","result.trashed":"Отправлен в корзину: {name}","result.updated":"Состояние обновлено.","root.agents":"Общий Agent","root.ccswitch":"CC Switch","root.claude":"Claude","root.codex":"Codex","root.cursor":"Cursor","root.dsh":"Навыки DSH","root.gemini":"Gemini","root.opencode":"OpenCode","root.projectAgents":"Проектный Agent","root.projectDsh":"Проектный DSH","search":"Поиск","search.clear":"Очистить поиск","search.placeholder":"Поиск по названию или описанию навыка","select.file.invalid":"Выберите .zip или один файл SKILL.md.","select.folder.invalid":"В выбранной папке не найдено SKILL.md.","skill.toggle":"Вкл/выкл навык","source.dsh.note":"Локальные навыки DSH можно создавать, импортировать и отправлять в корзину.","source.external.note":"Загружается через Skills Manager только для чтения; переключения не меняют исходные файлы.","source.toggle":"Вкл/выкл источник","status.bundle":"Набор навыков","status.disabled":"Отключён","status.discovered":"Обнаружен","status.enabled":"Загружен","status.invalid":"Есть проблемы","status.manageable":"Управляемый","status.project":"Проектный","status.rank":"Приоритет {rank}","status.readonly":"Источник только для чтения","status.selected":"Выбрано","status.shadowed":"Перекрыт","status.single":"Один файл","status.source.off":"Отключён","status.source.on":"Загружен","summary.disabled":"Отключено: {count}","summary.disabled.one":"{count} отключён","summary.disabled.other":"{count} отключено","summary.enabled.one":"{count} включён","summary.enabled.other":"{count} включено","summary.group":"Навыков: {count}","summary.group.one":"{count} навык","summary.group.other":"{count} навыков","summary.issues":"Проблем: {count}","summary.issues.one":"{count} проблема","summary.issues.other":"{count} проблем","summary.loaded":"Загружено в DSH: {count}","summary.total":"Навыков: {count}","summary.total.one":"{count} навык","summary.total.other":"{count} навыков","table.skill":"Название и описание навыка","table.status":"Состояние в DSH","title":"Навыки","trash.count":"Навыков в очереди: {count}","trash.count.one":"{count} навык в корзине","trash.count.other":"{count} навыков в корзине","trash.deletedAt":"Удалено {time}","trash.empty":"Корзина пуста.","trash.source":"Источник: {source}","trash.title":"Корзина","upload.drop.copy":"Поддерживаются .zip, папка навыка или один SKILL.md","upload.drop.title":"Перетащите навык сюда","upload.importing":"Установка…","upload.remove":"Убрать выбранное","upload.requirement.copy":"Импорт копирует содержимое целиком и не меняет источник","upload.requirement.frontmatter":"SKILL.md должен содержать YAML-название и описание","upload.requirement.skill":"Архив или папка должны содержать SKILL.md","upload.requirements":"Требования к файлам","upload.selected":"Файлов: {count} · {size}","upload.selected.one":"Выбран {count} файл · {size}","upload.selected.other":"Выбрано {count} файлов · {size}","warning.backupUncleaned":"Резервная копия старой версии не удалена: {path} ({error})","warning.project.unavailable":"Не удалось получить активную рабочую область у хоста, проектные навыки скрыты: {path}","warning.state.invalid":"Файл состояния менеджера не читается; внешние навыки отключены, перезапись заблокирована до исправления: {path}"},"slash.menu":{"command":"Команды","loading":"Загрузка…","skill":"Скиллы","subagent":"Субагенты","suggestions.aria":"Подсказки по вводу"},"subagent":{"activity.inactive":"не работает","activity.running":"работает","branch.collapse":"Свернуть потомков {label}","branch.expand":"Развернуть потомков {label}","count.running.few":"{count} субагента работает","count.running.many":"{count} субагентов работает","count.running.one":"{count} субагент работает","count.running.other":"{count} субагентов работает","count.total.few":"{count} субагента","count.total.many":"{count} субагентов","count.total.one":"{count} субагент","count.total.other":"{count} субагентов","diagnostic.corrupt":"запись сессии повреждена","diagnostic.unavailable":"запись сессии временно недоступна","diagnostic.unsupported":"неподдерживаемая версия записи субагента","duration.days":"{days} дн","duration.daysHours":"{days} дн {hours} ч","duration.exactDays":"{days} дн {hours} ч {minutes} мин {seconds} с","duration.exactTitle":"Всего активного времени: {duration}","duration.hours":"{hours} ч {minutes} мин {seconds} с","duration.minutes":"{minutes} мин {seconds} с","duration.months":"~{months} мес","duration.monthsDays":"~{months} мес {days} дн","duration.seconds":"{seconds} с","duration.years":"~{years} г","duration.yearsMonths":"~{years} г {months} мес","load.error":"Не удалось загрузить субагентов","loading.aria":"Загрузка субагентов","loading.label":"Загрузка субагентов…","mode.continuable":"с продолжением","mode.oneShot":"разовый","readonly.body":"Родительская сессия офлайн; откройте её заново, чтобы продолжить переписку.","readonly.oneShot.body":"Разовые задачи не принимают продолжения; здесь можно изучить полную запись выполнения.","readonly.oneShot.title":"Запись разового субагента","readonly.title":"Пока этот субагент доступен только для чтения","retry":"Повторить","switcher.aria":"Переключить субагента: {title}","tree.aria":"Сессии субагентов"},"subagent-director":{"addRole":"Добавить роль","addedRole":"Роль добавлена","bridgeUnavailable":"Мост настроек Subagent Director недоступен на этом сервере. Обновите/перезапустите dsh web.","cancel":"Отмена","closeContinuable":"Освободить субагент","closeContinuableTitle":"Освободить этот непрерывный субагент (освободить резидентный дескриптор)","closeFailed":"Сбой освобождения: {message}","closedSubagent":"Освобождён","closingContinuable":"Освобождение…","confirmCloseContinuable":"Освободить субагент «{id}»? Он перестанет быть резидентным; продолжение через send_message будет невозможно.","confirmDeleteRole":"Удалить роль «{id}»? Роли, на которые ссылается defaultRole, вернутся к настройкам плагина по умолчанию.","conflict":"Конфликт","defaultModel":"Модель","defaultProvider":"Провайдер","defaultReasoningEffort":"Уровень рассуждений","defaultRoleBadge":"По умолчанию","defaultsHeading":"Модель по умолчанию","defaultsHint":"Используется, если при вызове или в роли не указан конкретный провайдер или модель.","deleteRole":"Удалить","descriptionPlaceholder":"Когда делегировать задачи этой роли и что она должна делать…","displayNamePlaceholder":"например, Ревьюер кода","edit":"Редактировать","emptyRoles":"Шаблонов ролей пока нет. Добавьте роль, чтобы распределить обязанности субагентов.","fallbackOnInvalid":"Откатываться к родительскому агенту, если привязанная модель недоступна","fatal":"Не удалось сохранить: {message}","invalidRoleId":"Идентификатор роли должен быть в kebab-case (строчные буквы, цифры, дефис).","loadError":"Не удалось загрузить настройки предпочтений.","model":"Модель","modelNotRecorded":"Модель субагента пока не записана","modelOptional":"Сохраните карточку для применения изменений","modelQueryFailed":"Модель субагента недоступна","modelRanOn":"Субагент запущен на","modelRanOnTitle":"Маршрут модели: {model}","nav":"Директор субагентов","noAllowedModels":"Нет авторизованных моделей. Выберите модели в официальном списке субагентов (Настройки плагинов → Subagent); выбор здесь ограничен этим списком.","persona":"Персона","personaPlaceholder":"Инструкции системного промпта, передаваемые субагенту…","provider":"Провайдер","providerMissing":"Провайдер не выбран","readonly":"Настройки доступны только для чтения.","reasoningEffort":"Уровень рассуждений","rejected":"Изменение отклонено провайдером настроек.","removeRoleDone":"Роль удалена","restoreDefaults":"Сбросить по умолчанию","restoreDone":"Значения по умолчанию восстановлены","retry":"Повторить","roleDescription":"Инструкции делегирования","roleDisplayName":"Отображаемое имя","roleId":"Идентификатор роли","roleIdPlaceholder":"например, code-reviewer","rolePersona":"Персона","roleUpdated":"Роль обновлена","rolesHeading":"Шаблоны ролей","rolesHint":"Роль связывает инструкции делегирования, персону и (опционально) провайдера/модель с субагентом.","save":"Сохранить","sectionIntro":"Настройте провайдера и модель LLM для каждого субагента, а также шаблоны ролей, связывающие модель и персону с делегированием. Выбирать можно только провайдеров/модели из пула субагентов в настройках плагина (Плагины → Настройки плагинов → Subagent).","setDefaultRole":"Сделать по умолчанию","toolFilter":"Набор инструментов","toolFilterCollapse":"Свернуть","toolFilterCount":"Выбрано {count} из {total}","toolFilterDeselectAll":"Снять выбор","toolFilterEmpty":"Нет доступных инструментов","toolFilterExpand":"Развернуть","toolFilterHint":"Ограничить субагента этими инструментами. Оставьте пустым для наследования всех инструментов родителя.","toolFilterNoMatch":"Инструментов не найдено.","toolFilterNone":"Наследовать инструменты родителя (без ограничений)","toolFilterSearch":"Поиск инструментов…","toolFilterSelectAll":"Выбрать все"},"task-board":{"archive.empty":"В архиве пусто","board.archive":"Архив","board.archiveView":"Архив ({count})","board.backToBoard":"К доске","board.close":"В чат","board.created":"Создана","board.empty":"В этой колонке задач нет","board.filterAll":"Все","board.hostError":"Действие на хосте не удалось: {error}","board.hostMeta":"Часовой пояс хоста {timeZone} · ревизия {revision}","board.new":"Новая задача","board.pending":"Отправка","board.retryHost":"Переподключиться к хосту","board.runs":"запусков","board.search":"Фильтр задач…","board.status":"Статус","board.status.backlog":"Бэклог","board.status.done":"Готово","board.status.failed":"Ошибка","board.status.running":"В работе","board.status.todo":"К выполнению","board.title":"Доска задач","board.updated":"Обновлена","card.scheduled":"по расписанию","delete.cancel":"Отмена","delete.confirm":"Удалить «{name}»? Отменить это будет нельзя.","delete.ok":"Удалить","delete.title":"Удаление задачи","detail.archive":"В архив","detail.archivedAt":"В архиве · {time}","detail.close":"Закрыть","detail.delete":"Удалить","detail.description":"Описание","detail.execution":"История запусков","detail.executionEnded":"Завершён","detail.executionSettings":"Параметры запуска","detail.executionStarted":"Начат","detail.noExecution":"Ещё не запускалась","detail.noSession":"Сессии нет","detail.prompt":"Промпт запуска","detail.rerun":"Запустить снова","detail.restore":"Вернуть из архива","detail.result.cancelled":"Отменён","detail.result.failed":"Ошибка","detail.result.running":"Выполняется","detail.result.succeeded":"Успешно","detail.run":"Запустить","detail.schedule":"Запуски по расписанию","detail.schedule.cron":"Выражение cron","detail.schedule.dueSoon":"Скоро","detail.schedule.enable":"Включить запуски по расписанию","detail.schedule.invalid":"Неверное выражение cron","detail.schedule.lastTriggered":"Последний запуск","detail.schedule.nextRun":"Следующий запуск","detail.schedule.notScheduled":"Расписания пока нет","detail.schedule.preset.daily9":"Каждый день в 09:00","detail.schedule.preset.hourly":"Каждый час","detail.schedule.preset.tenMin":"Каждые 10 минут","detail.schedule.preset.weeklyMon9":"По понедельникам в 09:00","detail.schedule.presets":"Готовые варианты","detail.title":"Задача","detail.viewSession":"Открыть сессию","entry.label":"Доска задач","exec.error.noWorkspace":"Нет рабочей папки, в которой можно выполнить задачу","exec.error.promptRejected":"Промпт отклонён","exec.hint":"Применяется при запуске задачи: рабочая папка определяет, где появится сессия выполнения; режим задаёт пресет агента; разрешение выставляется командой /permission. Пусто — как по умолчанию в рантайме.","exec.mode.brokenSuffix":" (недоступен)","exec.mode.default":"Как в установке","exec.mode.defaultSuffix":" (по умолчанию)","exec.mode.removed":" (удалён)","exec.permission.danger-full-access":"Полный доступ","exec.permission.default":"Как в сессии","exec.permission.read-only":"Только чтение","exec.permission.workspace-write":"Запись в рабочую папку","exec.workspace.recent":"Последняя (по умолчанию)","new.cancel":"Отмена","new.description":"Описание","new.descriptionPlaceholder":"Контекст, границы, критерии приёмки (необязательно)","new.mode":"Режим","new.permission":"Разрешения","new.prompt":"Промпт запуска","new.promptPlaceholder":"Полная инструкция агенту (если пусто, возьмётся заголовок)","new.required":"Нужен заголовок","new.submit":"Создать","new.title":"Заголовок","new.titlePlaceholder":"Что нужно сделать, одной строкой","new.workspace":"Рабочая папка","run.failed":"Запуск не удался: {error}","settings.announceToAgent":"Сообщать агентам о доске задач","settings.announceToAgentHint":"Включено: в системный промпт каждого агента добавляется упоминание доски. Выключено: агенты узнают о ней, только если вы скажете сами.","settings.collapse":"Скрыть настройки","settings.description":"Настройка доски задач на хосте, упоминания в промпте и защиты от засыпания, пока есть незавершённая работа.","settings.discard":"Отменить","settings.enabled":"Включить доску задач","settings.enabledHint":"Когда выключено, пункт в панели и сама доска скрыты.","settings.expand":"Показать настройки","settings.inherit":"Наследовать","settings.invalidNumber":"Введите число или оставьте пустым, чтобы взять значение по умолчанию.","settings.notExposed":"Эта версия DSH не выводит namespace настроек плагина на страницу конфигурации, поэтому форма недоступна. Правьте ~/.dsh/settings.yaml напрямую или добавьте namespace в список WEB_SETTINGS_NAMESPACES у dsh-host-apiproxy и перезапустите.","settings.off":"Выкл","settings.on":"Вкл","settings.overridden":"Переопределено","settings.powerBoundary":"Батарея будет расходоваться быстрее. Закрытие крышки, ручной уход в сон, гибернация, выключение, действия при низком заряде и корпоративные политики под гарантию не попадают; уже спящий компьютер не разбудят.","settings.powerError":"Последняя ошибка защиты от засыпания: {error}","settings.powerStatus":"Платформа: {platform}; защита: {phase}; работающих сессий: {running}; включённых расписаний: {schedules}","settings.powerUnknown":"неизвестно","settings.preventIdleSleep":"Не давать системе засыпать","settings.preventIdleSleepHint":"По умолчанию выключено. Когда включено, хост не даёт системе уйти в сон, пока работает хоть одна сессия DSH, включено расписание или состояние сессий ещё неизвестно. Экран при этом может гаснуть.","settings.readOnly":"В этой установке настройки доступны только для чтения.","settings.reset":"Вернуть по умолчанию","settings.save":"Сохранить","settings.saveFailed":"Установка не приняла эти значения; они оставлены, чтобы вы их поправили.","settings.saving":"Сохранение…","settings.title":"Доска задач","settings.unsaved":"Не сохранено","status.move.backlog":"В бэклог","status.move.todo":"К выполнению","time.justNow":"только что"},"trajectory":{"toolbar.actualTime":"Реальное время","toolbar.aria":"Панель траектории","toolbar.calls":"Вызовы","toolbar.collapseCalls":"Свернуть вызовы","toolbar.collapseTurns":"Свернуть ходы","toolbar.duration":"Длительность","toolbar.expandCalls":"Развернуть вызовы","toolbar.expandTurns":"Развернуть ходы","toolbar.search":"Поиск по траектории","toolbar.searchPlaceholder":"Поиск","toolbar.turns":"Ходы","toolbar.useActualDuration":"По реальной длительности","toolbar.useEqualWidth":"Операции равной ширины","view.trajectory":"Траектория"},"univer":{"collapse":"Свернуть просмотр","dock.close":"Закрыть","dock.currentVersion":"Текущая версия","dock.discard":"Отклонить","dock.discarded":"Отклонено","dock.discardedTitle":"Изменения отклонены","dock.draft":"Редактирование","dock.exitFullscreen":"Выйти из полноэкранного режима","dock.expand":"Развернуть","dock.fold":"Свернуть","dock.fullscreen":"Полноэкранный просмотр","dock.gatewayDown":"Univer Gateway не запущен; интерактивный предпросмотр недоступен","dock.live":"синхронизация","dock.loading":"Загрузка…","dock.markReady":"Отправить на подтверждение","dock.maximize":"На весь экран","dock.merge":"Объединить с текущей версией","dock.mergeReady":"Готово к слиянию","dock.mergeTitle":"Предпросмотр слияния","dock.merged":"Слито","dock.mergedTitle":"Изменения объединены","dock.notReady":"Отправьте это изменение на подтверждение перед слиянием или отклонением","dock.ready":"Готово","dock.restore":"Восстановить размер","dock.reviewTitle":"Идёт редактирование","dock.startGateway":"Запустить Gateway","dock.unavailable":"Недоступно","dock.unit.added":"Д","dock.unit.conflict":"Конфликт","dock.unit.deleted":"У","dock.unit.modified":"И","expand":"Развернуть просмотр","gateway.checking":"Проверка Univer Gateway…","gateway.failed":"Univer Gateway недоступен — нажмите для повтора","gateway.running":"Univer Gateway запущен","gateway.starting":"Запуск Univer Gateway…","gateway.stopped":"Univer Gateway остановлен — нажмите для запуска","refresh":"Обновить","settings.autoOpenLivePreview":"Автоматически открывать интерактивный предпросмотр","settings.autoOpenLivePreviewHint":"Показывать плавающее окно просмотра, когда агент редактирует документ. Карточки ревью в чате остаются доступны при отключении.","settings.collapse":"Свернуть","settings.description":"Управление интерактивным предпросмотром при редактировании документов.","settings.discard":"Отменить изменения","settings.expand":"Развернуть","settings.overridden":"Переопределено","settings.readOnly":"Текущий документ настроек доступен только для чтения.","settings.reset":"Сбросить по умолчанию","settings.save":"Сохранить","settings.saveFailed":"Не удалось сохранить. Попробуйте снова.","settings.saving":"Сохранение…","settings.title":"Univer Office","settings.unsaved":"Не сохранено","title":"Просмотр Univer"},"usageDashboard":{"buckets.cacheRead":"Чтение кэша","buckets.cacheWrite":"Запись в кэш","buckets.caption":"Четыре непересекающиеся корзины тарификации · всего {total} ток","buckets.output":"Выход","buckets.title":"Состав токенов","buckets.uncachedInput":"Вход мимо кэша","composition.caption":"Оценка по эвристике, не по счёту; в сумму занятости не сойдётся","composition.messages":"Сообщения","composition.system":"Системный промпт","composition.title":"Состав контекста","composition.tools":"Схемы инструментов","efficiency.llm":"Время модели","efficiency.steps":"Шаги","efficiency.stepsValue":"{steps}","efficiency.throughput":"Скорость выдачи","efficiency.title":"Эффективность запросов","efficiency.tool":"Время инструментов","efficiency.ttft":"Первый токен, среднее","efficiency.ttftOver":"шагов: {steps}","efficiency.turns":"Ходы","efficiency.turnsValue":"{turns}","empty.usage":"Расхода токенов пока нет","empty.usageHint":"Цифры появятся, когда сессия сделает первый запрос к модели.","overview.billedInput":"Оплаченный вход","overview.billedInputSub":"мимо кэша {uncached} · из кэша {cached}","overview.cacheHit":"Попадания в кэш","overview.cacheHitSub":"прочитано {read} из {total} ток","overview.context":"Контекст занят","overview.contextSub":"{used} из {window} ток","overview.contextUnknown":"Размер окна модели неизвестен","overview.output":"Выход","overview.outputSub":"всего {total} ток","scope.aria":"Охват статистики","scope.session":"Эта сессия","scope.sessions":"Все сессии","sessions.currentTag":"Текущая","sessions.detail.noData":"Данные по этой сессии загружаются или их нет","sessions.detail.title":"Подробности сессии","sessions.empty":"Расход по сессиям не записан","sessions.inactive":"Простаивает","sessions.running":"Работает","sessions.selectHint":"Выберите строку, чтобы посмотреть сессию","sessions.subagentTag":"Субагент","sessions.summary.input":"Оплаченный вход, всего","sessions.summary.output":"Выход, всего","sessions.summary.sessions":"Сессий с расходом","sessions.summary.sessionsValue":"{count}","sessions.summary.totalValue":"всего сессий: {count}","sessions.summary.turns":"Ходов всего","sessions.summary.turnsValue":"{turns}","sessions.table.cacheHit":"Попаданий в кэш","sessions.table.input":"Оплаченный вход","sessions.table.output":"Выход","sessions.table.session":"Сессия","sessions.table.status":"Состояние","sessions.table.turns":"Ходы","sessions.table.updated":"Изменена","steps.cacheRead":"Кэш Ч","steps.cacheWrite":"Кэш З","steps.caption":"Только загруженное окно, новые сверху; итог считает то же окно","steps.done":"Готово","steps.empty":"В загруженном окне шагов нет","steps.input":"Вход","steps.interrupted":"Прервано","steps.model":"Модель","steps.output":"Выход","steps.reasoning":"Рассуждения","steps.sortBy":"Сортировать по «{column}»","steps.status":"Состояние","steps.title":"Подробности по шагам","steps.tps":"ток/с","steps.ttft":"Первый токен","steps.turn":"Ход.шаг","steps.windowTotal":"Итог по окну","time.daysAgo":"{n} дн назад","time.hoursAgo":"{n} ч назад","time.justNow":"только что","time.minutesAgo":"{n} мин назад","view.usage":"Статистика"},"usageStats":{"account.balanceMode":"Баланс API","account.blocked":"Запрос к учетной записи был заблокирован локальной политикой безопасности. Проверьте настройки HTTPS, same-origin и private-network.","account.health.age":"Возраст данных","account.health.lastAttempt":"Последняя попытка","account.health.lastSuccess":"Последний успех","account.health.provenance":"Источник","account.invalidResponse":"Провайдер вернул нераспознанные данные о квоте.","account.loading":"Загрузка провайдеров…","account.provenance.configured":"Настроено","account.provenance.experimental":"Экспериментальный","account.provenance.official":"Официальный API","account.provenance.provider":"API провайдера","account.provenance.unknown":"Неизвестно","account.provider":"Текущий провайдер","account.reason.allAddressesUnreachable":"Ни один из проверенных сетевых адресов не доступен.","account.reason.blockedNetwork":"Запрос на учетную запись был заблокирован политикой локальной сети.","account.reason.dnsResolutionFailed":"Имя хоста провайдера не удалось разрешить.","account.reason.noValidatedAddress":"Не было доступно ни одного проверенного адреса провайдера.","account.reason.rateLimited":"Провайдер ограничил проверку аккаунтов по частоте запросов.","account.reason.sub2apiBalanceShapeUnrecognized":"Конечная точка баланса Sub2API вернула данные в нераспознанном формате.","account.reason.timeout":"Запрос аккаунта завершился по тайм-ауту.","account.reason.unauthorized":"Учетные данные аккаунта были отклонены.","account.reason.unknown":"Проверка учетной записи завершилась неудачей без безопасного диагностического сообщения.","account.reason.upstreamInvalidJson":"Вверх по течению возвращен нечитаемый JSON","account.reason.upstreamInvalidResponse":"Восходящий поток вернул нераспознанный ответ.","account.reason.upstreamNotJson":"Ответ вышестоящего сервера не был в формате JSON","account.reason.upstreamTooLarge":"Ответ от вышестоящего сервера превысил допустимый размер.","account.status.blocked":"Заблокировано","account.status.invalidResponse":"Неверный ответ","account.status.loading":"Загрузка","account.status.stale":"Устаревшие данные","account.status.unknown":"Неизвестно","account.status.unsupported":"Баланс не поддерживается","account.title":"Аккаунт провайдера","action.close":"Закрыть","action.nextMonth":"Следующий месяц","action.prevMonth":"Предыдущий месяц","action.refresh":"Обновить","action.retry":"Повторить","action.today":"Сегодня","balance.available":"доступно","balance.error":"Не удалось получить баланс: {message}","balance.granted":"Предоставлено","balance.loading":"Получение баланса…","balance.noCredential":"{ref} не настроен (отредактируйте ~/.dsh/.credentials.yaml)","balance.noSchemeTag":"нет баланса API","balance.provider":"Провайдер","balance.remaining":"Доступный баланс","balance.title":"Баланс счета","balance.toppedUp":"Пополнено","balance.total":"Общий баланс","balance.unavailable":"недоступно","balance.unsupported":"У этого провайдера нет публичного интерфейса для проверки баланса.","balance.used":"Использовано","billing.monthly":"≈ {amount}/мес","billing.parts":"Композиция","billing.projected":"Прогнозируемое использование на конец месяца","billing.tokenOnly":"расчет на основе использования","billing.total":"Ориентировочные ежемесячные траты","budget.exceeded":"превышен бюджет","budget.level.critical":"Превышение бюджета","budget.level.normal":"Обычный","budget.level.unknown":"Неполная стоимость","budget.level.warning":"Близко к бюджету","budget.over":"{pct}% бюджета использовано","budget.period.daily":"Оценка за сегодня","budget.period.monthly":"Ожидаемый за этот месяц","budget.remaining":"осталось","budget.summary":"{period}: {spent} / {limit} · {level}","budget.title":"Ежемесячный бюджет","budget.used":"использовано","col.cacheRead":"Чтение кэша","col.cacheWrite":"Запись в кеш","col.calls":"Звонки","col.cost":"Стоимость","col.created":"Создано","col.cwd":"Рабочая папка","col.day":"День","col.default":"Стандартная ставка","col.hour":"Время","col.input":"Ввод","col.model":"Модель","col.models":"Модели","col.output":"Вывод","col.price":"Тариф","col.provider":"Провайдер","col.session":"Сессия","col.sessions":"Сессии","col.share":"Поделиться","col.time":"Время","col.tokens":"Токены","col.turn":"Поворот/шаг","curve.cost":"Стоимость","curve.empty":"Нет данных о сериях (нет вызовов в указанном интервале)","curve.legendCacheRead":"Чтение кеша","curve.legendInput":"Ввод","curve.legendOutput":"Вывод","curve.tokens":"Токены","details.auto":"Автоматически обновляется вместе с главным окном","details.exportCalls":"Экспорт журнала вызовов в CSV","details.exportCsv":"Экспорт CSV","details.exportJson":"Экспортировать JSON","details.hint":"Звонки, токены и стоимость за сессию × модель","details.open":"Открыть подробности в новом окне","details.title":"Детали звонка · сессия × модель","details.updated":"Обновлено","duration.daysHours":"{days}д {hours}ч","duration.hoursMinutes":"{hours}ч {minutes}м","duration.minutes":"{minutes}м","export.dailyCsv":"Ежедневный CSV","export.json":"Полный JSON","export.sessionsCsv":"Сессии CSV","export.title":"Экспорт без секретов","filter.all":"Все рабочие пространства","filter.scope":"Фильтровать статистику по одной рабочей директории","footnote.disclaimer":"Стоимость рассчитана на основе установленных тарифов и не является счетом.","footnote.errors":"({errors} логов не удалось декодировать)","footnote.scanned":"{sessions} сессий, {calls} звонков просканировано","heatmap.empty":"Данные тепловой карты пока отсутствуют","heatmap.fri":"Пт","heatmap.less":"Меньше","heatmap.mon":"Пн","heatmap.month":"{m}","heatmap.more":"Ещё","heatmap.title":"Тепловая карта активности (52 недели)","heatmap.wed":"Ср","lastUpdated":"Обновлено","month.names":"Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек","month.year":"{month} {year}","orcarouter.addError":"Не удалось добавить OrcaRouter. Пожалуйста, попробуйте ещё раз.","orcarouter.choiceSuffix":"(Спонсированная интеграция)","panel.badge":"Использование/Баланс","panel.title":"Расход и баланс","panel.updatedAt":"Обновлено в {time}","perf.empty":"Нет данных о производительности (отсутствуют временные метки в журналах)","perf.est":"прибл.","perf.latencyAvg":"Средняя задержка","perf.modeTps":"токены/с","perf.modeTtft":"ТТФТ","perf.note":"TTFT = запрос → первый токен контента. Последующие шаги в цикле инструментов не имеют отдельного лога запросов, поэтому их TTFT оценивается с начала шага.","perf.samples":"Образцы","perf.title":"Скорость и задержка модели","perf.tps":"токенов/с","perf.ttftAvg":"Среднее значение TTFT","perf.ttftP50":"ТТФТ P50","perf.ttftP90":"TTFT P90","plan.auto":"авто","plan.balance":"Баланс","plan.code":"План кода","plan.noBalance":"не настроен баланс","plan.perMonth":"месяц","plan.period":"последние {days} дней","plan.quota":"квота","plan.remaining":"Осталось","plan.requests":"запросы","plan.subscription":"Подписка","plan.tiers":"Уровни","plan.token":"Тарифный план","plan.tokenEstimate":"оценка токенов","plan.tokens":"Токены","plan.used":"Использовано","plan.usedCost":"Стоимость использования","pricing.peakOffpeak":"пиковый/непиковый","recent.anomaly":"Аномалия стоимости (значительно выше среднего)","refresh":"Обновить","section.byCwd":"Рабочий каталог","section.byDay":"Днём","section.byModel":"По модели","section.byProvider":"По провайдеру","section.bySession":"По сеансу","section.plans":"Тарифы","section.pricing":"Тарифы (за миллион токенов)","section.recent":"Последние звонки","section.series":"Временные ряды","state.empty":"Данные об использовании токенов пока отсутствуют (нет вызовов с использованием)","state.error":"Не удалось загрузить","state.loading":"Вычисление…","state.retry":"Повторить","subscription.error":"Не удалось использовать подписку: {message}","subscription.loading":"Получение данных об использовании подписки…","subscription.notConfigured":"Настройте {refs} для отображения текущего использования подписки.","subscription.planUnknown":"План подписки","subscription.rateLimited":"Провайдер ограничивает частоту проверок; попробуйте позже.","subscription.resetDue":"Сброс квоты","subscription.resets":"Сбросится через {time}","subscription.status.notConfigured":"Не настроено","subscription.status.ok":"В прямом эфире","subscription.status.rateLimited":"Ограничение по частоте запросов","subscription.status.unauthorized":"Войдите снова","subscription.status.unavailable":"Недоступно","subscription.title":"Использование подписки","subscription.unauthorized":"Учетные данные истекли; обновите их и повторите попытку.","subscription.unavailable":"Провайдер не вернул распознаваемых окон квот.","subscription.used":"{value}% использовано","subscription.window.daily":"Ежедневное окно","subscription.window.mcp":"Ежемесячная квота MCP","subscription.window.monthly":"Ежемесячное окно","subscription.window.quota":"Общая квота","subscription.window.session":"5-часовое окно","subscription.window.weekly":"Еженедельное окно","summary.activeDays":"Активные дни","summary.avgCost":"Среднее / вызов","summary.cacheHit":"Процент попаданий в кеш","summary.cacheRead":"Чтение кэша","summary.cacheWrite":"Запись в кеш","summary.calls":"Звонки","summary.cost":"Примерная стоимость","summary.input":"Ввод","summary.output":"Вывод","summary.sessions":"Сессии","summary.streak":"Дневная серия","summary.today":"Сегодня","summary.tokens":"Всего токенов","tab.details":"Детали звонка","tab.overview":"Обзор","tab.perf":"Производительность","tab.today":"Сегодня","today.calls":"Звонков сегодня","today.cost":"Стоимость сегодня","today.empty":"Сегодня звонков еще не было","today.title":"Сегодняшние токены и стоимость","today.tokens":"Токены сегодня","usage.back":"Назад","usage.cacheRead":"Чтение кэша","usage.error":"Агрегация использования не удалась: {message}","usage.heatmap":"Ежедневное использование в этом месяце","usage.hit.today":"Сегодняшний процент попаданий в кэш","usage.hitRate":"Кэш-попадание","usage.input":"Ввод","usage.legendLess":"Меньше","usage.legendMore":"Ещё","usage.loading":"Агрегирование использования…","usage.month":"В этом месяце","usage.noModels":"Нет данных по моделям за этот день.","usage.output":"Вывод","usage.recent":"Последние 14 дней","usage.title":"Использование токенов","usage.today":"Сегодня","usage.total":"За всё время","usage.unknownModel":"Неизвестная модель","weekday.fri":"Ф","weekday.mon":"М","weekday.sat":"С","weekday.sun":"С","weekday.thu":"Т","weekday.tue":"Т","weekday.wed":"В","widget.close":"Свернуть","widget.hint":"Использование токенов & примерная стоимость","widget.hoverHint":"Нажмите, чтобы развернуть","widget.open":"Развернуть"},"workflowRun":{"member.empty":"Пустое имя участника","member.open":"Открыть {name}","phase.empty":"Пустое имя фазы","phase.unassigned":"Вне фаз","run.empty":"Ни один участник не запущен","run.members.few":"{count} участника","run.members.many":"{count} участников","run.members.one":"{count} участник","run.members.other":"{count} участников","run.title":"{name}","status.cancelled":"Отменено","status.completed":"Завершено","status.failed":"Ошибка","status.interrupted":"Прервано","status.running":"Работает","statusCount.cancelled":"Отменено: {count}","statusCount.completed":"Завершено: {count}","statusCount.failed":"Ошибок: {count}","statusCount.interrupted":"Прервано: {count}","statusCount.running":"Работает: {count}"},"workspace":{"actions.newSession.aria":"Новая сессия в {name}","actions.session.aria":"Действия с сессией {name}","actions.workspace.aria":"Действия с рабочей папкой {name}","conflict.named":"Рабочая папка «{name}» уже есть.","date.ymd":"{d}.{m}.{y}","delete.desc":"Уберёт «{name}» из списка рабочих папок. Сама папка и журналы сессий останутся, а её сессии переедут в «Без папки».","delete.pending":"Удаление рабочей папки…","delete.workspace":"Удалить рабочую папку","empty.noMatches":"Ничего не найдено","empty.none":"Сессий пока нет","field.sessionName":"Название сессии","field.workspaceName":"Название рабочей папки","folderError.retry":"Выбрать снова","folderError.title":"Не удалось открыть папку","group.ungrouped":"Без папки","groupBy.flat":"Одним списком","groupBy.label":"Группировать","groupBy.workspace":"По рабочим папкам","hover.copied":"Скопировано","hover.created":"Создано {time}","menu.addWorkspace":"Добавить рабочую папку…","menu.archiveSession":"Убрать сессию в архив","menu.fork":"Ответвить сессию","orderBy.label":"Сортировать","orderBy.manual":"Вручную","orderBy.updated":"По изменению","picker.loading":"Загрузка рабочих папок…","rename":"Переименовать","rename.session.title":"Переименовать сессию","rename.workspace.title":"Переименовать рабочую папку","search.clear":"Очистить поиск","search.hasMore":"Показаны первые {n} результатов. Уточните запрос.","search.hasMore.few":"Показаны первые {n} результата. Уточните запрос.","search.hasMore.one":"Найден один подходящий результат.","search.noMatches":"Подходящих сессий нет","search.pending":"Поиск по истории сессий…","search.placeholder":"Поиск по сессиям...","search.results.aria":"Результаты поиска","search.sessions.aria":"Поиск сессий","search.unavailable":"Поиск по содержимому временно недоступен. Показаны совпадения по названию.","section.sessions":"Сессии","section.workspaces":"Рабочие папки","session.new":"Новая сессия","sessions.collapse":"Показать меньше","sessions.count.few":"{n} сессии","sessions.count.many":"{n} сессий","sessions.count.one":"{n} сессия","sessions.count.other":"{n} сессий","sessions.expand":"Показать ещё {n}","status.completed":"Завершено","status.idle":"Простаивает","status.planReview":"План ждёт проверки","status.running":"Работает","status.subagentsRunning.few":"{n} субагента работает","status.subagentsRunning.many":"{n} субагентов работает","status.subagentsRunning.one":"{n} субагент работает","status.subagentsRunning.other":"{n} субагентов работает","status.waitingAnswer":"Ждёт ответа","status.waitingApproval":"Ждёт подтверждения","time.ago":"{t} назад","time.days":"{n} дн","time.hours":"{n} ч","time.minutes":"{n} мин","time.months":"{n} мес","time.now":"только что","time.years":"{n} г","viewOptions.label":"Параметры отображения","workspace.add":"Добавить рабочую папку"}}
366
+ const RU = {"@goodandready/dsh-context-lens":{"budget":"Бюджет","compress":"Сжать","depth":"Макс. глубина AST","history":"Недавние операции","lowBudget":"Бюджет почти исчерпан","mode":"Режим сжатия","placeholder":"Вставьте лог Jest/Pytest сюда…","preview":"Предпросмотр лога","ready":"Готово","saved":"Сохранено","saving":"Сохранение…","stats":"Статистика","sub":"Сжатие AST, фильтрация логов, бюджет токенов","title":"Context Lens & Token Guard","tokens":"Токены","total":"Всего","tracking":"Отслеживание экономии токенов","trimmed":"Обрезано","viewLog":"Просмотреть лог"},"@goodandready/dsh-shadow-auditor":{"auditBadge":"Аудит команд","blockCommands":"Блокировать опасные команды","blockCommandsDesc":"Проверяет --force, rm -rf, systemctl, удаление БД, curl|bash","lastAudit":"Последний аудит","loading":"Загрузка…","save":"Сохранить","saved":"Сохранено","saving":"Сохранение…","strictSecrets":"Строгое сканирование секретов","strictSecretsDesc":"Блокировать при наличии API-ключей или приватных токенов в diff","subtitle":"Безопасность секретов и команд","title":"Аудитор безопасности (Shadow Auditor)","unlocked":"Разблокировано"},"@goodandready/dsh-time-machine":{"autoHeal":"Восстановление промпта при сбое","autoSnapshot":"Автоснимок перед правкой файлов","close":"Закрыть","confirmDelete":"Удалить эту контрольную точку?","confirmRollback":"Откатиться к этой контрольной точке? Это сбросит изменения в рабочей области.","create":"Создать точку сохранения","delete":"Удалить","diff":"Различия","empty":"Контрольных точек пока нет.","labelPh":"Название контрольной точки","list":"Хронология","loading":"Загрузка точек сохранения…","maxSnapshots":"Максимум снимков","noDiff":"Нет изменений относительно контрольной точки.","restore":"Восстановить","rollback":"Откат","rollbackSuccess":"Рабочая область успешно восстановлена.","save":"Создать точку","saved":"Точка сохранена","snapshots":"Снимки состояния","sub":"Теневые снимки, diff и мгновенный откат для безопасности агента.","tabTitle":"Машина времени","title":"Машина времени (Time Machine)","unavailable":"Настройки недоступны","view":"Просмотр"},"agentTeams":{"action.openActivityPanel":"Открыть панель активности","activity.badgeAria":"Активность и история команд агентов, {count} записей команд","activity.collapse":"Свернуть панель активности","activity.dockRight":"Закрепить справа","activity.empty":"Нет активности команды","activity.float":"Переключиться на плавающую панель","activity.panelAria":"Панель активности команд агентов","activity.panelButton":"Панель активности","activity.title":"Активность команд агентов","archive.discardedLabel":"План отменен · Архивная история","archive.label":"Завершено · Архивная история","assignment.discarded":"План отклонён","assignment.empty":"Нет задач","assignment.label":"Капитан назначен","assignment.staged":"Запланировано","captain.name":"Капитан","captain.role":"Разделить · Делегировать · Синтезировать","captain.state.awaitingFeedback":"Ожидание отзыва","captain.state.collected":"Все полученные отчеты","captain.state.discarded":"Отменено","captain.state.settled":"Завершено","captain.state.staged":"Ожидает одобрения","captain.state.takeover":"Работаю над {tasks}","captain.state.waiting":"Ожидание отчетов","captain.state.working":"{count} активных","captain.summary":"Назначено {tasks} задач {members} участникам","captain.summary.awaitingFeedback":"Черновой вариант сохранен; ожидаем ваших указаний по доработке в чате","captain.summary.discarded":"План отклонён: {members} участников не созданы и {tasks} задач не выполнены","captain.summary.staged":"Запланировано {tasks} задач и {members} участников; ожидают утверждения","captain.summary.withTakeover":"Назначено {tasks} участникам · Капитан владеет {captainTasks}","card.memberCount":"{count} участников","delegation.aria":"Карта делегирования капитана","dependency.aria":"Цепочка зависимостей задач","dependency.hint.chain":"Наведите для подсветки зависимостей · Нажмите, чтобы закрепить","dependency.hint.parallel":"Нет зависимостей · Нажмите для подробностей","dependency.hint.pinned":"{taskId} закреплена · Esc для сброса","dependency.parallel":"Параллельные задачи","dependency.title":"Зависимости задач","format.listSeparator":",","member.model":"{model}","member.state.delivered":"Доставлено","member.state.failed":"Имеются сбои","member.state.left":"Покинул команду","member.state.notCreated":"Не создано","member.state.pending":"Ожидание","member.state.removed":"Удалено","member.state.staged":"В плане (не создан)","member.state.stopped":"Остановлено","member.state.unassigned":"Ожидание назначения","member.state.waiting":"Ожидание","member.state.working":"Работает","member.status.delivered":"Задачи выполнены","member.status.discarded":"План отклонён; участник не был создан","member.status.executing":"Работа над {taskId}","member.status.executingModel":"Работа над {taskId} · {model}","member.status.idle":"Готовы продолжить","member.status.settled":"Вся назначенная работа выполнена","member.status.staged":"Будет создан после одобрения","member.status.stopped":"Команда остановлена; требуется явное возобновление","member.status.unknown":"Статус неизвестен","member.status.waitingAssignment":"Ожидание назначения работы от капитана","member.status.waitingOn":"Ожидание {taskId} · {assignee}","member.status.waitingPrerequisite":"Ожидание выполнения предварительных условий","member.status.working":"Работа над назначенными задачами","members.collapse":"Свернуть","members.empty":"Пока нет участников; ожидаем, пока капитан соберёт команду","members.expand":"Развернуть","members.toggle":"Участники {count}","plan.addTask":"Добавить задачу","plan.adding":"Добавление…","plan.approve":"Одобрить и запустить","plan.approveConfirm":"Подтвердить запуск","plan.approveConfirmTitle":"Подтвердить запуск команды","plan.approveHint":"Одобрение создаёт {members} участников и планирует {tasks} задачи.","plan.approveTitle":"План готов?","plan.approveWarning":"Маршруты участников и зависимости нельзя редактировать здесь после запуска.","plan.approving":"Создание участников…","plan.badge":"Ожидание подтверждения","plan.cancel":"Отмена","plan.continue":"Вернуться в чат и исправить","plan.dependencies.count":"{count} зависимостей","plan.dependencies.none":"Нет зависимостей","plan.description":"Участники не были созданы, и задачи не были назначены. Отредактируйте черновик здесь или вернитесь в чат и сообщите Капитану, что нужно изменить.","plan.discard":"Отменить этот план","plan.discardConfirm":"Отменить план","plan.discardConfirmTitle":"Отменить этот план?","plan.discardWarning":"План будет завершён и заархивирован. Участники не были созданы, и задачи выполняться не будут.","plan.discarding":"Отмена…","plan.failed":"Операция не удалась: {message}","plan.feedbackHint":"Капитан спросит в чате. После вашего ответа он пересмотрит этот черновик и снова будет ждать одобрения.","plan.feedbackTitle":"Ожидание ваших указаний по исправлению","plan.flow.aria":"Процесс запуска команды","plan.flow.review":"Просмотреть план","plan.flow.run":"Начать работу","plan.flow.spawn":"Создать участников","plan.member.model":"Модель","plan.member.prompt":"Роль подсказки","plan.member.provider":"Провайдер","plan.member.reasoning":"Усилие на рассуждение","plan.member.reasoningHint":"Оставьте пустым для значения по умолчанию; принимает low, medium, high, xhigh и другие.","plan.member.role":"Роль","plan.member.roleFallback":"Роль не установлена","plan.members.count":"{count} участников","plan.members.empty":"Пока нет запланированных участников","plan.members.title":"Участники и маршруты моделей","plan.model.back":"Назад","plan.model.choose":"Выберите модель","plan.model.currentUnavailable":"{provider}/{model} (нет в текущем каталоге)","plan.model.defaultReasoning":"Усилия по умолчанию при рассуждении","plan.model.empty":"Нет доступных моделей","plan.model.loading":"Загрузка моделей…","plan.model.modelDefault":"Модель по умолчанию ({effort})","plan.model.partialFailure":"{count} каталогов провайдеров не удалось загрузить","plan.model.providerDefault":"Провайдер по умолчанию","plan.model.retry":"Повторить","plan.model.route":"Маршрут: {provider}/{model}","plan.model.triggerAria":"Выберите модель участника, текущая {model}, уровень усилий для рассуждений {effort}","plan.newTask":"Новая тема задачи","plan.newTaskLabel":"Добавить запланированную задачу","plan.pendingEdits":"Сохраните текущие изменения перед запуском команды.","plan.readySummary":"{members} участников · {tasks} задач · {links} зависимостей","plan.remove":"Удалить","plan.removeConfirm":"Подтвердите удаление","plan.removeWarning":"Удаление {task} приведет к пересчету зависимостей ниже по цепочке.","plan.removed":"Задача удалена","plan.returnToChat":"Вернуться в чат","plan.save":"Сохранить","plan.saved":"План сохранён","plan.saving":"Сохранение…","plan.task.assignee":"Исполнитель","plan.task.dependencies":"ID задач зависимостей (через запятую)","plan.task.dependenciesHint":"Например, task-1, task-2; циклы отклонены","plan.task.description":"Описание задачи","plan.task.subject":"Тема задачи","plan.task.unassigned":"Общий пул задач","plan.taskAdded":"Задача добавлена","plan.tasks.count":"{count} задач · {links} зависимостей","plan.tasks.empty":"Нет запланированных задач","plan.tasks.title":"Задачи и зависимости","plan.title":"Проверка плана перед запуском","plan.unsaved":"Не сохранено","progress.aria":"Общий прогресс команды","progress.blocked":"■ Ожидание {count}","progress.delivered":"■ Доставлено {count}","progress.running":"■ В процессе {count}","progress.title":"Общий прогресс","task.assignee.unclaimed":"Невостребованные","task.detail.completed":"Завершено и доставлено","task.detail.noDownstream":"Нет последующих задач","task.detail.noPrerequisite":"Нет требований; готовы начать","task.detail.notRun":"План отменён; задача не была выполнена","task.detail.ready":"Предварительные условия выполнены; можно начинать","task.detail.unlocks":"Разблокирует {tasks} после завершения","task.detail.waitingOn":"Ожидание {tasks}","task.model":"Модель: {model}","task.runningAria":"Выполняется","task.status.cancelled":"Отменено","task.status.claimed":"Заявлено","task.status.completed":"Завершено","task.status.failed":"Не удалось","task.status.inProgress":"Выполняется","task.status.notRun":"Не запущено","task.status.pending":"Невостребованные","task.summary.allDelivered":"Все {count} задачи доставлены","task.summary.blocked":"{tasks} ожидают выполнения предварительных условий","task.summary.blockedAndRunning":"{tasks}{more} ожидают выполнения предварительных условий; другая работа уже начата","task.summary.discarded":"{count} запланированных задач отменено; ни одна не выполнена","task.summary.ended":"Итог: {completed} доставлено · {cancelled} отменено · {failed} не удалось","task.summary.failedSettled":"{count} ошибок; автоматический цикл остановлен","task.summary.more":"и ещё {count}","task.summary.ready":"{tasks} готовы к началу","task.summary.running":"{tasks} в процессе выполнения","task.summary.staged":"{count} запланированных задач ожидают утверждения","task.summary.waitingBreakdown":"Ожидание, пока капитан распределит работу","task.summary.waitingSchedule":"Ожидание следующего цикла планирования","team.discarded":"Отклонено","team.ended":"Завершено","team.stats.completed":"{completed}/{total} завершено","team.stats.members":"{count} участников","team.stats.messages":"{count} сообщений","team.stop":"Остановить команду","team.stopCancel":"Продолжать работу","team.stopConfirm":"Остановить команду","team.stopDescription":"Это отменяет {tasks} незавершённых задач и останавливает {members} работающих участников. Завершённые результаты сохраняются.","team.stopFailed":"Не удалось остановить команду: {message}","team.stopRequestFailed":"Сервер не смог остановить эту команду. Попробуйте снова.","team.stopTitle":"Остановить “{team}”?","team.stopped":"Остановлено","team.stopping":"Остановка…"},"approval":{"allowOnce":"Разрешить один раз","detail.aria":"Сведения о подтверждении","escalation":"Инструмент {toolName} запрашивает привилегированное выполнение","reject":"Отклонить","waiting":"Ожидание подтверждения"},"betterSidebar":{"addPluginsBrowseMore":"Ещё плагины на GitHub (тема: dsh-better-sidebar)","addPluginsEmpty":"Подборки пока нет — опубликуйте свой плагин под темой на GitHub","addPluginsNoMatch":"Нет подходящих плагинов","addPluginsRecommended":"Рекомендуемые плагины","addPluginsSearch":"Поиск по названию или описанию плагина…","addPluginsTabCard":"Добавить плагины вкладок","addPluginsTabCardDesc":"Зарегистрировать новую страницу панели","addPluginsTabDesc":"Страницы панели (вкладки) расширяются плагинами. Плагины регистрируются через сервис ctx.betterSidebar; кнопка «Установить» копирует команду — вставьте её в терминал на машине с профилем DSH и выполните.","addPluginsViewerCard":"Добавить плагины предпросмотра","addPluginsViewerCardDesc":"Зарегистрировать просмотр нового типа файлов","addPluginsViewerDesc":"Просмотрщики файлов расширяются плагинами. Плагины регистрируются через сервис ctx.betterSidebar; кнопка «Установить» копирует команду — вставьте её в терминал на машине с профилем DSH и выполните.","addToConversation":"Добавить в диалог","binary":"Двоичный файл, предпросмотр недоступен","binaryNoPreview":"Этот тип файлов нельзя показать","branch":"Ветка","brokenSymlink":"Битая ссылка","browser":"Браузер","browserBack":"Назад","browserBlockedLoopback":"Заблокировано: локальные и внутренние адреса здесь открывать нельзя","browserBlockedScheme":"Заблокировано: разрешены только адреса http и https","browserEmbedAnyway":"Всё равно загрузить","browserEmbedBlocked":"{host} запрещает встраивание","browserEmbedBlockedDesc":"Сайт запрещает показывать себя внутри других страниц (X-Frame-Options / frame-ancestors), поэтому в панели он не откроется. Откройте его в обычном браузере.","browserForward":"Вперёд","browserGo":"Перейти","browserInvalid":"Неверный адрес","browserNoSandboxWarning":"Песочница выключена: страница работает с полными правами интерфейса (включить обратно можно в настройках)","browserOpenExternal":"Открыть в браузере","browserPlaceholder":"Введите адрес, например example.com","browserStart":"Введите адрес, чтобы начать (режим песочницы)","cancel":"Отмена","changes":"Изменения","changesClosePreview":"Закрыть просмотр","changesContext":"контекст","changesDiffOpenDesc":"Где открывать diff при разворачивании во вкладку","changesDiffOpenFloat":"Свободное окно","changesDiffOpenFloatDesc":"Плавающее окно по центру экрана — перемещайте, меняйте размер, держите поверх","changesDiffOpenPane":"Панель","changesDiffOpenPaneDesc":"Закреплено под исходной панелью (в стиле сплита VS Code)","changesDiffOpenTitle":"Открывать diff как","changesEdit":"Правка","changesError":"ошибка","changesFilterAll":"Все","changesFilterEmpty":"Нет операций этого типа","changesFold":"Строк: {count}… нажмите, чтобы развернуть","changesGitLens":"Git","changesLoadError":"Записи файлов сессии сейчас недоступны","changesOpenDiffTab":"Открыть во вкладке diff","changesPriorUnknown":"Предыдущее содержимое вне окна загрузки; показано как полностью добавленное","changesRead":"Чтение","changesResizePreview":"Изменить размер","changesRunning":"выполняется","changesSessionEmpty":"В этой сессии пока не было операций с файлами","changesSessionLens":"Сессия","changesWrite":"Запись","checkoutError":"Переключить ветку не удалось","cherryPickCommit":"Перенести коммит","cherryPickDesc":"Применить изменения «{subject}» к текущей ветке.","cherryPickTitle":"Перенос коммита","close":"Закрыть","closeLeftTabs":"Закрыть вкладки слева","closeOtherTabs":"Закрыть остальные вкладки","closePinnedTerminal":"Закрыть терминал","closeRightTabs":"Закрыть вкладки справа","collapse":"Свернуть панель","collapseBottomPanel":"Свернуть нижнюю панель","commit":"Закоммитить","commitError":"Коммит не удался","commitPlaceholder":"Сообщение коммита (Ctrl+Enter)","copied":"Скопировано","copy":"Копировать","copyAbsolute":"Копировать абсолютный путь","copyFullHash":"Копировать полный хеш","copyInstall":"Копировать команду установки","copyRelative":"Копировать относительный путь","copyShortHash":"Копировать короткий хеш","copySubject":"Копировать заголовок","diffAdded":"Добавлено","diffBinary":"Двоичный","diffCollapse":"Свернуть","diffDeleted":"Удалено","diffEmpty":"Текстовых изменений нет","diffExpand":"Показать ещё строк: {count}","diffLoadError":"Не удалось загрузить различия","diffRenamed":"Переименовано","discard":"Отменить изменения","discardDesc":"Изменения «{path}» в рабочем дереве будут отброшены без возможности вернуть.","discardTitle":"Отмена изменений","disconnected":"Терминал отключился, переподключаемся…","dockToSidebar":"Вернуть в боковую панель","download":"Скачать","downloadToView":"Скачать, чтобы посмотреть","edit":"Изменить","editor":"Редактор","editorEmptyHint":"Выберите файл в дереве или введите путь выше, чтобы открыть предпросмотр","editorExplorer":"Как открывать файлы","editorExplorerDesc":"Управляет поведением при открытии файлов","editorExplorerMerged":"В одном окне","editorExplorerMergedDesc":"Файлы сменяются в том же окне; новые окна открываются с деревом","editorExplorerSplit":"Раздельно","editorExplorerSplitDesc":"Окно без пути — это отдельный проводник (только дерево); каждый файл открывается своим окном (дерево пристыковано и по умолчанию закрыто)","editorPathPlaceholder":"Путь к файлу (от папки сессии или абсолютный), Enter — открыть","editorSearchNoResults":"Подходящих файлов нет","editorSearchPlaceholder":"Поиск файлов по имени…","editorSearchTruncated":"Слишком много совпадений — показана часть","editorTreeToggle":"Дерево файлов","error":"Не удалось загрузить","exited":"Процесс терминала завершился","expand":"Развернуть панель","expandBottomPanel":"Развернуть нижнюю панель","explorer":"Проводник","fenceDisableAction":"Отключить ограничение рабочей области","fenceErrorReason":"Этот путь находится за пределами рабочей области сессии и заблокирован защитным экраном","files":"Файлы","floatDropHint":"Отпустите, чтобы открыть в свободном окне","git":"Контроль версий","gitDetail":"Посмотреть изменения","hiddenFiles":"Скрытые файлы","history":"История","historyLoadError":"Не удалось догрузить историю","htmlNoSandboxWarning":"Песочница выключена: этот HTML работает с полными правами интерфейса (включить обратно можно в настройках)","jobDurationHours":"{hours} ч {minutes} мин","jobDurationMinutes":"{minutes} мин {seconds} с","jobDurationSeconds":"{seconds} с","jobHideOutput":"Скрыть вывод","jobKill":"Прервать","jobKillConfirm":"Нажмите ещё раз для подтверждения","jobKillError":"Прервать не удалось","jobNoOutput":"Вывода пока нет","jobNotReadYet":"Ждём, пока модель прочитает эту задачу; вывод появится здесь после вызова job_output","jobOutputError":"Не удалось прочитать вывод","jobOutputTruncated":"Вывод обрезан","jobStatusCompleted":"Завершена","jobStatusFailed":"Ошибка","jobStatusKilled":"Прервана","jobStatusRunning":"Выполняется","jobStatusStopping":"Останавливается","jobViewOutput":"Посмотреть вывод","jobs":"Фоновые задачи","jobsCount":"фоновых задач: {count}","jobsCountRunning":"фоновых задач: {count} · выполняется: {running}","loadMore":"Показать ещё","loading":"Загрузка…","mermaidError":"Ошибка рендеринга Mermaid","mermaidZoomHint":"Прокрутка для масштабирования · перетаскивание для перемещения · Esc для закрытия","mermaidZoomIn":"Увеличить","mermaidZoomOut":"Уменьшить масштаб","mermaidZoomReset":"Сбросить","moveToFreeWindow":"Переместить в свободное окно","newFile":"Новый файл","newTab":"Новая вкладка","newTerminal":"Новый терминал","noChanges":"Изменений нет","noSession":"Выберите диалог, чтобы пользоваться панелью","notRepo":"Эта папка не является репозиторием git","openEditor":"Открыть редактор","openExplorer":"Проводник","openFileNewTab":"Открыть в новой вкладке","openFileSide":"Открыть сбоку","openGit":"Панель git","openPlugin":"Открыть","openSubagent":"Задачи","openWithCursor":"Cursor","openWithExplorer":"Файловый менеджер","openWithMenu":"Открыть с помощью","openWithSettingsAdd":"Добавить","openWithSettingsCustomDesc":"Имя + шаблон URL (заполнитель {path}) + флаг семейства VSCode; в удалённом режиме только редакторы семейства VSCode могут открыть удалённый путь","openWithSettingsCustomTitle":"Пользовательские редакторы","openWithSettingsFamily":"Семейство VSCode","openWithSettingsFamilyDesc":"Этот редактор понимает URL-адреса VSCode (поддерживает открытие через SSH-удалённое подключение)","openWithSettingsInvalidHint":"Редакторы без имени или шаблоны без {path} / scheme:// не отображаются в меню","openWithSettingsName":"Имя","openWithSettingsRemove":"Удалить","openWithSettingsSshDesc":"Пусто = локальная рабочая область; с user@host или SSH-алиасом открыватели семейства VSCode переключаются на протокол vscode-remote/ssh-remote, а Файловый менеджер / Zed / пользовательские редакторы вне семейства VSCode скрываются из меню","openWithSettingsSshPlaceholder":"пользователь@хост или алиас SSH","openWithSettingsSshTitle":"SSH удаленный хост","openWithSettingsTemplate":"напр. cursor://file/{path}","openWithSshSuffix":"(SSH)","openWithVscode":"VS Code","openWithZed":"Zed","parent":"Родительская папка","pinAgentTerminal":"Закрепить терминал агента","pinOpenWith":"Закрепить в меню","pinTerminal":"Закрепить терминал","pinToGlobal":"Закрепить для всех","pinToWorkspace":"Закрепить в рабочей области","pinnedRailLabel":"Закреплённые терминалы","pinnedTerminalKindAgent":"Терминал агента","pinnedTerminalKindUi":"Терминал интерфейса","pinnedTerminalScopeGlobal":"Закреплено глобально","pinnedTerminalScopeWorkspace":"Закреплено в рабочей области","pinnedTerminalTooltip":"{kind} · {scope} · {cwd}","pluginBetterOverleafDesc":"Вкладка Overleaf для better-sidebar: синхронизация проектов и предпросмотр файлов","pluginBilingualReaderDesc":"Чтение PDF-статей в боковой панели DSH с контекстным переводом через LLM","pluginCodeNavDesc":"Навигатор по коду: подсветка синтаксиса, дерево символов (классы, методы, переменные) и поиск по файлу","pluginDocsPanelDesc":"Глобальные документы в боковой панели DSH: читайте свои заметки в формате Markdown из любого рабочего пространства — список файлов, структура, открытие в Chrome / VS Code и кнопки копирования; директория документов настраивается (по умолчанию ~/.dsh/docs)","pluginEgoBrowserDesc":"Браузер агента для DeepSeek Harness: 32 инструмента ego_* управляют реальным Chromium, с нативной боковой панелью \"ego browser\", которая предоставляет живой просмотр каждой страницы, посещаемой агентом — вы можете кликать, перетаскивать и печатать, чтобы взять управление на себя. Регистрирует вкладку автоматически, если присутствует better-sidebar, в противном случае переходит на плавающий пузырь.","pluginFlowglassDesc":"Граф потока живого сеанса с тремя полосами для пользователя, ассистента и вызовов инструментов, а также параллельными группами, ветвями под-агентов, детализацией и текущим статусом; регистрирует вкладку Flowglass в нативном режиме при установке better-sidebar и сохраняет отдельный выдвижной ящик в качестве резерва.","pluginGitForgeDesc":"Вкладка Git Forge: библиотека аккаунтов GitHub/Gitea (и других форков) + права на проекты + политика жесткого пуша; токены остаются в локальных секретах (никогда в контексте модели); инструмент GitForge только для чтения и помощник для HTTPS-учетных данных агента","pluginGitRemotesDesc":"Вкладка Git Remotes: ветка, upstream, отставание и опережение, fetch (с необязательным prune), pull только ff-only и push после подтверждения во вкладке. Не заменяет встроенную вкладку git со стадированием и коммитами, не предлагает force-push и не даёт модели инструмент автопуша","pluginGithubWorkbenchDesc":"Вкладка GitHub Workbench: дерево репозитория, Issues, PR и Actions с полной поддержкой управления","pluginMdExportDesc":"Добавляет кнопку «Экспорт» на панель Markdown в better-sidebar: рендерит текущий .md в автономный HTML или экспортирует в PDF","pluginNotLoaded":"Плагин не загружен, вкладка недоступна:","pluginOfficeDesc":"Предпросмотр офисных файлов (.docx / .xlsx / .pptx) в редакторе better-sidebar; тяжёлые библиотеки рендеринга держатся вне основного бандла","pluginSentinelDesc":"Пробуждение агента по условию: датчики файлов, процессов, портов, http, команд и вебхуков будят спящие сессии, когда условие сработало; добавляет вкладку Sentinel с общей таблицей наблюдений","pluginServerDeckDesc":"Панель серверов: карточки хостов с мониторингом CPU/памяти/диска и встроенным терминалом xterm.js","pluginSidebarQaDesc":"Выделил и спросил: выделите текст в диалоге, задайте вопрос в правой панели — откроется отдельная сессия-уточнение в той же рабочей папке; быстрая модель без рассуждений сжимает основной контекст и подставляет его вместе с цитатой, не прерывая основной диалог. Уточнения вкладываются, продолжаются и уходят в архив","pluginSidenoteDesc":"Боковой чат в стиле Codex + аннотации к выделенному тексту","pluginSshTunnelDesc":"Вкладка SSH-туннеля: инвентарь нескольких хостов + гранты для каждого проекта + локальные секреты; инструмент SSHManager (стратегии выполнения/ SFTP/сеансов); центральный интерактивный терминал и двухпанельный SFTP","pluginSuhuangScrollDesc":"Интеграция Suhuang Scroll Runtime с настройками DSH и better-sidebar для конфигурации моделей и тестов","pluginTurnReviewDesc":"Человеческий шлюз на только что завершённом ходе: Одобрить / Запросить изменения по пути с необязательным комментарием; пути сгруппированы по основной сессии / суб-агенту / без атрибуции; встроенное сравнение снимка и текущего состояния перед принятием решения. Без форка, без /rewind.","pluginVideoPreviewDesc":"Просмотр видео (.mp4/.webm/.mov/.mkv/.avi и других) прямо в редакторе better-sidebar через отдельный маршрут /video с поддержкой HTTP Range (206) — перемотка работает, ограничение mediaLimit в 20 МБ не действует","preview":"Предпросмотр","produced":"Создано","producedOpen":"Открыть в панели","referenceFile":"@файл","refresh":"Обновить","refreshUnsavedConfirm":"Файл изменился на диске. Обновление приведёт к потере несохранённых изменений. Продолжить?","retry":"Повторить","revertCommit":"Откатить коммит","revertDesc":"Создать в текущей ветке новый коммит, отменяющий «{subject}».","revertTitle":"Откат коммита","sandboxRestore":"Вернуть песочницу","sandboxStatusOn":"Песочница включена · страницы не видят данные интерфейса и локальные файлы; входы и сторонние куки могут не работать","sandboxUnlock":"Временно отключить (небезопасно)","save":"Сохранить","saveFailed":"Сохранить не удалось","saved":"Сохранено","settingsBottomTerminalDesc":"При первом разворачивании нижней панели в сессии открывать в ней новый терминал (ограничение на число терминалов сохраняется; по умолчанию включено)","settingsBottomTerminalTitle":"Открывать терминал при первом разворачивании нижней панели","settingsBrowserHttpDesc":"Если включено, клик по внешней http-ссылке в диалоге или интерфейсе открывает панель (страницы плагинов с urlTarget имеют приоритет); Ctrl/Cmd+клик всегда в обход","settingsBrowserHttpTitle":"Открывать http-страницы в панели","settingsBrowserHttpsDesc":"Если включено, клик по внешней https-ссылке открывает панель. По умолчанию выключено: большинство https-сайтов запрещают встраивание, поэтому системный браузер удобнее","settingsBrowserHttpsTitle":"Открывать https-страницы в панели","settingsBrowserLinksDesc":"Если включено, клик по внешней ссылке открывает панель, а не новое окно; http и https управляются отдельными переключателями ниже; Ctrl/Cmd+клик всегда в обход","settingsBrowserLinksTitle":"Открывать внешние ссылки из диалога в панели","settingsBrowserLoopbackDesc":"Разделённый запятыми список разрешённых адресов локальной петли (например, localhost:5174 или 127.0.0.1:8080), которые может посещать боковой браузер; пустое значение блокирует все локальные адреса по умолчанию. Песочница всё ещё применяется — страницы не могут читать данные GUI.","settingsBrowserLoopbackPlaceholder":"например, localhost:5174, 127.0.0.1:8080","settingsBrowserLoopbackTitle":"Разрешенные локальные адреса","settingsBrowserSandboxDesc":"С выключенной песочницей любой открытый сайт работает в том же origin, что и интерфейс: он может читать данные сессии и действовать от вашего имени. Включайте только для полностью доверенных сайтов","settingsBrowserSandboxTitle":"Отключить песочницу браузера (небезопасно)","settingsConflict":"Настройку изменили в другом окне — повторите","settingsCustomCssDesc":"Стили добавлены в конце страницы (поздние в каскаде выигрывают при равенстве; используйте !important для переопределения встроенных переменных, записанных через JS)","settingsCustomCssPlaceholder":"/* например, зарезервировать 36px для оболочки с нарисованной вручную строкой заголовка */\nhtml[data-dsh-title-bar-height=\"36\"] {\n --dsh-title-bar-strip: 36px !important;\n}","settingsCustomCssTitle":"Пользовательский CSS","settingsDone":"Готово","settingsFenceDesc":"Если включено, файловые функции боковой панели ограничены рабочей областью сессии (по умолчанию); если выключено — доступен любой файл на хосте","settingsFenceTitle":"Ограничение рабочей области (Fence)","settingsFontFamilyDesc":"Своя гарнитура терминала (CSS-стек вида \"JetBrains Mono\", monospace; пусто — моноширинный шрифт темы)","settingsFontFamilyPlaceholder":"\"JetBrains Mono\", monospace","settingsFontFamilyTitle":"Шрифт терминала","settingsFontSizeDesc":"Размер шрифта терминала в пикселях (9–32, по умолчанию 13)","settingsFontSizeSuffix":"px","settingsFontSizeTitle":"Размер шрифта терминала","settingsGeneralTitle":"Общие","settingsHtmlDefaultUnsafeDesc":"Если включено, каждый новый предпросмотр HTML открывается без песочницы (тот же origin, что и интерфейс — доступны файлы сессии и внутренние API); вернуть песочницу можно одним нажатием в строке состояния","settingsHtmlDefaultUnsafeTitle":"Открывать предпросмотр HTML без песочницы (небезопасно)","settingsHtmlSandboxDesc":"С выключенной песочницей просматриваемый HTML работает в том же origin, что и интерфейс: он может читать файлы сессии, локальное хранилище и вызывать внутренние API. Включайте только для полностью доверенных файлов","settingsHtmlSandboxTitle":"Отключить песочницу предпросмотра HTML (небезопасно)","settingsIntro":"Что показывает боковая панель и как она себя ведёт","settingsJobsDesc":"Разворачивать панель и открывать страницу задач при появлении новой фоновой задачи в текущем диалоге (срабатывает на каждую); выключите, чтобы открывать вручную","settingsJobsTitle":"Открывать страницу задач при новой фоновой задаче","settingsNav":"Боковая панель","settingsOpenDesc":"Разворачивать панель для совсем новых диалогов; у существующих сохраняется своя раскладка","settingsOpenPathDesc":"Открывать файловые ссылки из диалога (строки инструментов, созданные файлы, упоминания) в редакторе панели, а не в системном приложении","settingsOpenPathTitle":"Открывать файлы из диалога в панели","settingsOpenTitle":"Разворачивать для новых диалогов","settingsOpenToolsDesc":"Когда включено, модель может активно открывать файлы, папки и HTTP(S)-страницы в боковой панели через инструмент sidebar_open (по умолчанию отключено).","settingsOpenToolsTitle":"Внедрите инструмент sidebar-open для модели","settingsPopup":"Настройки функции","settingsPopupDesc":"Параметры для «{feature}»","settingsSaveFailed":"Не удалось сохранить","settingsSchemeAutoDesc":"Консервативный: учитывается только стандартный API Window Controls Overlay (реальная высота наложения заголовка); обычные веб-среды не изменяются","settingsSchemeAutoTitle":"Автоопределение","settingsSchemeCustomDesc":"Полный контроль: вставьте пользовательский CSS (может переопределять встроенные стили) и задайте расстояние смещения строки заголовка","settingsSchemeCustomTitle":"Настроить","settingsSchemeDetectedSuffix":"обнаружено","settingsSchemeWebDesc":"Явно указать официальный веб-интерфейс: без адаптации вообще (даже стандартной геометрии WCO)","settingsSchemeWebTitle":"Официальный сайт DSH","settingsShellArgsDesc":"Явные аргументы командной оболочки, разделённые пробелами; если не пусто, полностью заменяют значения по умолчанию (тот же принцип, что и у shellArgs в yaml)","settingsShellArgsPlaceholder":"напр. -l (пусто = по умолчанию)","settingsShellArgsTitle":"Аргументы командной оболочки","settingsShellDesc":"Оболочка, запускаемая для терминалов UI и моделей (абсолютный путь или имя исполняемого файла). Пустое значение сохраняет устаревший порядок: shell из конфига yaml → $SHELL / логин-шелл / Windows powershell.exe. Применяется к терминалам, открытым после этого.","settingsShellPlaceholder":"например, /bin/zsh (пусто = автоматически)","settingsShellTitle":"Путь к оболочке","settingsSubagentDesc":"Разворачивать панель и открывать страницу задач, когда в диалоге появляется субагент; выключите, чтобы открывать вручную","settingsSubagentTitle":"Открывать страницу задач при появлении субагента","settingsTabsTitle":"Содержимое панели","settingsTitleBarDesc":"Оставлять место под системный заголовок окна Windows справа сверху, чтобы кнопки и содержимое панели располагались ниже, а не под ним","settingsTitleBarStripDesc":"Высота полосы заголовка: на сколько пикселей опускаются кнопки и содержимое панели (0–120, по умолчанию 40)","settingsTitleBarStripTitle":"Смещение","settingsTitleBarTitle":"Режим совместимости с заголовком окна","settingsToolsDesc":"Если включено, модель может создавать терминалы в панели и работать в них через восемь инструментов terminal_* (по умолчанию выключено)","settingsToolsTitle":"Дать модели инструменты терминала","settingsViewerCatchAll":"На всё остальное: любой файл","settingsViewersTitle":"Просмотрщики файлов","settingsWidthDesc":"Какую долю ширины окна занимает панель в новых диалогах (20–60)","settingsWidthSuffix":"%","settingsWidthTitle":"Ширина по умолчанию","showInFolder":"Показать в папке","sideChat":"Боковой чат (бета)","sideChatBlockCollapse":"Свернуть","sideChatBlockCollapseAria":"Свернуть","sideChatBlockDone":"Готово","sideChatBlockExitCode":"Код завершения {code}","sideChatBlockExpand":"Развернуть {hidden} строк","sideChatBlockExpandAria":"Развернуть ещё {hidden} строк","sideChatBlockFailed":"Сбой","sideChatBlockFiles":"Файлов: {count}","sideChatBlockNoOutput":"(нет вывода)","sideChatBlockRunning":"Выполняется","sideChatBlockSignal":"Завершено по сигналу: {signal}","sideChatBlockWindow":"Показано {shown} из {total} строк","sideChatCancel":"Остановить","sideChatCancelTitle":"Прервать текущий ход (запланированные задачи сохраняются)","sideChatClose":"Закрыть тему","sideChatCloseTitle":"Освободить агента потока (история сохраняется)","sideChatComposerPlaceholder":"Задать уточняющий вопрос…","sideChatConnConnecting":"Подключение…","sideChatConnDisconnected":"Соединение разорвано","sideChatConnReconnect":"Переподключиться","sideChatConnReconnectAction":"Подключиться сейчас","sideChatConnRecovered":"Соединение восстановлено","sideChatConnRestartAction":"Перезапустить соединение","sideChatCreating":"Создание побочного диалога…","sideChatEmpty":"Без посторонних разговоров","sideChatEmptyDesc":"Каждый побочный диалог открывается в отдельной вкладке на панели — он наследует контекст текущей сессии и никогда не попадает в основной разговор","sideChatError":"Ошибка бокового чата: {message}","sideChatFirstPlaceholder":"Задайте первый вопрос — контекст сохранён…","sideChatInjection":"Контекст внедрен","sideChatNew":"Новая тема","sideChatNoTurn":"Сохранение доступно после первого завершённого хода","sideChatPendingDrop":"Последний неотвеченный вопрос не будет включен в сохраненную сессию","sideChatRetry":"Повторить","sideChatSave":"Сохранить как новую сессию","sideChatSaveTitle":"Повысьте этот тред до уровня отдельной сессии в основном списке сессий","sideChatSaved":"Сохранено как новая сессия","sideChatSend":"Отправить","sideChatThink":"Думаю","sideChatThinking":"Глубокое погружение…","sideChatThreads":"Переключить ветку / новая","sideChatTurnUsage":"Вход: {input} токенов · Выход: {output} токенов","sideChatUntitled":"Новая тема","splitDown":"Разделить вниз","splitLeft":"Разделить влево","splitRight":"Разделить вправо","splitUp":"Разделить вверх","stage":"В индекс","stageAll":"Всё в индекс","staged":"В индексе","statusTruncated":"Слишком много изменений; показаны первые 2,000 записей","subagent":"Задачи","subagentCount":"субагентов: {count}","subagentCountRunning":"субагентов: {count} · работает: {running}","subagentDiagCorrupt":"Повреждён","subagentDiagUnavailable":"Недоступен","subagentDiagUnsupported":"Не поддерживается","subagentEmpty":"Субагентов нет","subagentEmptyDesc":"Здесь появятся субагенты, запущенные основным агентом","subagentInactive":"Простаивает","subagentMainAgent":"Основной агент","subagentModeContinuable":"С продолжением","subagentModeOneShot":"Разовый","subagentRunning":"Работает","subagentThinking":"Думает…","terminal":"Терминал","terminalConnectFailed":"Терминал не смог подключиться несколько раз подряд","terminalDepsFailed":"Не удалось загрузить зависимость терминала node-pty","terminalDepsHint":"Выполните команду ниже в терминале на машине с DSH, чтобы починить, и повторите (версия node-pty должна совпадать с версией ядра DSH):","terminalDepsProfile":" (определён профиль: {profile})","terminalError":"Не удалось подключиться к терминалу","terminalLimit":"Достигнут предел терминалов (3)","terminalRetry":"Повторить","timeHoursAgo":"{n} ч назад","timeJustNow":"только что","timeMinutesAgo":"{n} мин назад","timeYesterday":"вчера","toc":"Содержание","truncation":"Файл слишком большой — показаны первые 512 КБ","unpinOpenWith":"Открепить","unpinTerminal":"Открепить","unsaved":"Не сохранено","unstage":"Из индекса","unstageAll":"Всё из индекса","unstaged":"Вне индекса","uploadCancelled":"Загрузка отменена","uploadDone":"Загружено {count} файл(ов)","uploadDropChat":"Перетащите в чат, чтобы добавить изображения","uploadDropHint":"Перетащите файлы/папки сюда для загрузки","uploadFailed":"Не удалось загрузить: {error}","uploadFailedUnknown":"Неизвестная ошибка","uploadFiles":"Загрузить файлы","uploadFolder":"Загрузить папку","uploadHere":"Загрузите сюда","uploadProgress":"Загружено {done}/{total}: {name}","uploadTo":"Загрузить в {dir}","uploadTooLarge":"Файл слишком большой (превышен лимит загрузки)","uploadingTo":"Загрузка в {dir}…","viewCommitDiff":"Посмотреть изменения коммита","viewerBinary":"Скачивание файла","viewerCode":"Код","viewerHtml":"HTML","viewerImage":"Изображение","viewerMarkdown":"Markdown","viewerPdf":"PDF","worktree":"Рабочее дерево"},"chat":{"chat.deepDiving":"Глубокий анализ…","chat.loadError":"Не удалось загрузить историю: {message} ({code})","chat.loadOlder":"Загрузить более ранние","chat.loadingHistory":"Загрузка истории…","chat.toBottom":"Вниз к началу","chat.turnNavigation.jump":"Перейти к шагу {turn}","chat.turnNavigation.jumpLoad":"Загрузить и перейти к шагу {turn}","chat.turnNavigation.label":"Навигация по шагам диалога","chat.turnNavigation.turn":"Шаг {turn}","clock.md":"{m}/{d}","clock.ymd":"{y}-{m}-{d}","command.done":"Завершено","command.failed":"Команда завершилась с ошибкой","command.running":"Выполняется…","command.title":"Команда","details.close":"Закрыть сведения","details.empty":"Нажмите на строку инструмента в потоке сообщений для просмотра сведений","details.input":"Входные данные","details.notInWindow":"Этот вызов находится за пределами текущего окна","details.output":"Вывод","details.running":"Выполняется…","details.title":"Сведения","duration.compactMinutes":"{minutes}м {seconds}с","duration.compactSeconds":"{seconds}с","duration.milliseconds":"{milliseconds}мс","duration.minutes":"{minutes}м {seconds}с","duration.seconds":"{seconds}с","fileOpen.folderTitle":"Не удалось открыть папку","fileOpen.folderUnknown":"Не удалось открыть эту папку","fileOpen.title":"Не удалось открыть файл","fileOpen.unknown":"Не удалось открыть этот файл","json.truncated":"… обрезано, всего {total} символов","message.branch":"Ответвить в новый диалог","message.branchUnavailable":"Доступно только для последнего сообщения завершённого шага","message.compaction":"Контекст сжат","message.compaction.commandTitle":"сжатие","message.compaction.completed":"Сжато {items} элементов истории (~{tokens} токенов)","message.compaction.expand":"Посмотреть сводку сжатия","message.compaction.running":"Сжатие контекста…","message.compaction.unavailable":"Сводка сжатия недоступна","message.context.catalog.more":"… ещё {count}","message.context.catalog.replaced":"Заменяющий каталог","message.context.instructions.added":"добавлено","message.context.instructions.loaded":"загружено","message.context.instructions.removed":"удалено","message.context.instructions.updated":"обновлено","message.context.recall.counts":"сохранено {retained} • пропущено {omitted}","message.context.recall.truncated":"обрезано","message.context.relay.from":"Из сессии {session}","message.context.snapshot.supersedes":"Заменяет более ранние снимки","message.contextInjection":"Внедрение контекста","message.contextRecall":"Вспоминание сессии","message.extraBlock":"Дополнительный блок содержимого","message.failure.auth":"Недействительный ключ API","message.maxTokens":"Достигнут лимит токенов вывода","message.maxTokens.hint":"Ответ был прерван; предыдущий вывод сохранён в диалоге. Отправьте «продолжить», чтобы модель возобновила генерацию.","message.ranFor":"Время работы: {duration}","message.referenceSeparator":", ","message.referenceSummary":"Упомянутая сессия • {labels}","message.retry.active":"Повторный запрос к модели","message.retry.cancelled":"Повтор запроса к модели отменён","message.retry.delay":"Задержка перед повтором: ","message.retry.failure":"Причина сбоя: ","message.retry.scheduled":"Ожидание повторного запроса к модели","message.retry.started":"Повторный запрос к модели выполнен","message.retry.status":"{label} ({retry}/{maximum}) • {seconds}с","message.stopped":"Остановлено","message.systemPrompt":"Системный промпт","message.think":"Рассуждения","message.tokensPerSecond":"{tps} ток./с","message.turnError":"Этот шаг завершился с ошибкой","message.turnProcess.messages.one":"{count} сообщение","message.turnProcess.messages.other":"{count} сообщений","message.turnProcess.separator":" • ","message.turnProcess.subagents.one":"{count} субагент","message.turnProcess.subagents.other":"{count} субагентов","message.turnProcess.thoughtForAWhile":"Рассуждал некоторое время","message.turnProcess.toolCalls.one":"{count} вызов инструмента","message.turnProcess.toolCalls.other":"{count} вызовов инструментов","message.turnTime.duration":"Общее время выполнения","message.turnTime.speed":"Токенов в секунду (TPS)","message.turnTime.title":"Время и скорость шага","message.turnTime.ttft":"Время до первого токена (TTFT)","message.turnUsage.cacheHit":"Попадание в кэш","message.turnUsage.cacheRead":"Вход из кэша","message.turnUsage.cacheWrite":"Запись в кэш","message.turnUsage.consumed":"Использовано {total}","message.turnUsage.count":"{count} ток.","message.turnUsage.input":"Вход без кэша","message.turnUsage.model":"Провайдер / модель","message.turnUsage.output":"Вывод","message.turnUsage.reasoning":" ({tokens} рассуждения)","message.turnUsage.title":"Расход токенов на шаг","message.unknownBlock":"Неизвестный блок содержимого","message.unknownSurface":"Неизвестное событие интерфейса: {type}","number.groupSeparator":" ","row.failed":"Ошибка","row.running":"Выполняется","settings.transcript.compact":"Компактный","settings.transcript.description":"Управляет отображением процесса выполнения в завершённых шагах","settings.transcript.normal":"Обычный","settings.transcript.title":"Отображение диалога","stats.cacheHit":"Кэш {percent}%","stats.counts":"{turns} шагов • {steps} действий","stats.llm":"LLM {duration}","stats.tokens":"Вход {input} ток. • Выход {output} ток.","stats.tokensPerSecond":"{throughput} ток./с","stats.toolCall":"Инструмент {duration}","stats.ttftAverage":"TTFT ср. {duration}","view.chat":"Чат"},"command":{"listbox.aria":"Совпадения /{command}","notice.imagesUnsupported":"/{command} не принимает вложения-изображения — сначала удалите их","overlay.aria":"Параметры /{command}","search.aria":"Фильтр параметров","search.placeholder":"Поиск…","status.applying":"Применение…","status.empty":"Нет параметров","status.loading":"Загрузка параметров…"},"commandcode":{"accountSeparator":"────────────────────","accountTitle":"📊 {label}{badges}","activeBadge":" ✅ активен","barLine":" └ {bar} {pct}%","blockedInvalidKey":"⛔ API-ключ недействителен или истёк — сервер отклонил запросы (401); проверьте ключ аккаунта","blockedNetwork":"⚠️ Не удалось подключиться к Command Code — проверьте сеть или адрес API","blockedServiceUnavailable":"⚠️ Сервис Command Code временно недоступен (5xx); повторите позже","cooldownBadge":" ⏳ охлаждение, сброс {when}","costLine":" 💰 Расход {money} ({credits} кредитов)","creditsHeader":"── Кредиты ──────────────────────────","errorText":"Не удалось получить статистику Command Code: {message}","exceededWarning":" ⚠️ превышен!","fiveHourLine":" ⏱ 5-часовое {used} / {cap}{warn}","imageGate":"В сессии уже есть изображения, а модель {model} не поддерживает изображения; выберите модель с поддержкой зрения или удалите изображения из сессии.","invalidCredentialBadge":" ⛔ неверный ключ","monthlyLine":" 💳 В месяц {monthly} (куплено {purchased} / бесплатно {free})","noData":"(нет данных — проверьте API-ключ)","partialFailures":"⚠️ Сбои на некоторых эндпоинтах: {list}","planLine":" 📦 Тариф {name}{status}{period}","planPeriodSuffix":" · окончание периода: {date}","rateLimitBadge":" ⏳ лимит запросов (ожидание окна)","requestsLine":" 💬 Запросы {n} / сбоев {f} успешность {r}%","resetSuffix":"сброс {when}","title":"📊 Использование Command Code{account}","tokensLine":" 🔤 Токены {in} вход / {out} выход","unconfigured":" (API-ключ не настроен)","usageHeader":"── Запросы ──────────────────────────","weeklyLine":" 📅 Недельное {used} / {cap}{warn}","windowBarLine":" └ {bar} сброс {when}","windowsHeader":"── Использование окна ───────────────"},"common":{"back":"Назад","brand.localBuild":"Локальная сборка DSH","cancel":"Отмена","close":"Закрыть","collapse":"Свернуть","copied":"Скопировано","copy":"Копировать","copy.compactJson":"Копировать компактный JSON","copy.failed":"Не удалось скопировать","copy.json":"Копировать JSON","copy.optionsHint":"{action}; правый клик для вариантов копирования","copy.path":"Копировать путь к свойству","copy.prettyJson":"Копировать форматированный JSON","copy.value":"Копировать значение","delete":"Удалить","edit":"Изменить","expand":"Развернуть","json.collapseNode":"Свернуть узел JSON","json.expandNode":"Развернуть узел JSON","json.label":"JSON","load.failed":"Не удалось загрузить","loading":"Загрузка…","markdown.footnotes":"Сноски","markdown.truncatedCharacters":"… обрезано на {total} символах","more":"Ещё","next":"Дальше","none":"Нет","number.million":"{value}M","number.thousand":"{value}K","ok":"ОК","previous":"Назад","retry":"Повторить","save":"Сохранить","search":"Поиск","skip":"Пропустить","submit":"Отправить","submitting":"Отправка…","truncated":"Обрезано","unknown":"Неизвестно"},"config-manager":{"about.authorLabel":"Author","about.cli.docs":"CLI documentation","about.cli.hint":"The GUI lives inside DSH — when DSH cannot start, the separately installed CLI (dsh-config-manager) is your first rescue tool: list snapshots / offline restore / one-click DSH reinstall, no DSH runtime needed. Install once and use it on any machine:","about.cli.title":"CLI Rescue Tool","about.docs":"Documentation","about.dshVersion":"DSH {version}","about.issues":"Issues","about.links":"Links","about.loading":"Loading version info…","about.official":"Official","about.releaseNotes":"Release Notes","about.releaseNotes.allLoaded":"All releases loaded","about.releaseNotes.confirm":"Confirm","about.releaseNotes.empty":"No releases found.","about.releaseNotes.error":"Failed to load release notes. Please check your network connection or try again later.","about.releaseNotes.latest":"Latest","about.releaseNotes.loading":"Loading release notes…","about.releaseNotes.loadingMore":"Loading more releases…","about.releaseNotes.neverShow":"Don't show again","about.releaseNotes.noBody":"No description provided for this release.","about.releaseNotes.prerelease":"Pre-release","about.releaseNotes.retry":"Retry","about.releaseNotes.title":"Release Notes","about.releaseNotes.viewOnGithub":"View all releases on GitHub","about.releaseNotes.viewSingleOnGithub":"View on GitHub","about.repo":"GitHub Repository","about.retryStatus":"Retry","about.star":"⭐ Star on GitHub","about.subtitle":"Plugin info, author and feedback links","about.title":"About DSH Config Manager","about.version":"Version {version}","backupFiles.delete":"Delete","backupFiles.deleteConfirm":"Delete backup file \\«{name}\\»? This cannot be undone.","backupFiles.deleteConfirmTitle":"Delete backup file","backupFiles.download":"Download","backupFiles.empty":"No backup files yet. They appear here after a manual export or once scheduled backups are enabled.","backupFiles.error":"Failed to load backup files","backupFiles.hint":"All export artifacts (manual exports and scheduled backups) are managed here: download to your machine, import to restore, or delete. Scheduled backups auto-keep the latest 10.","backupFiles.import":"Import","backupFiles.inspect":"Inspect / Compare","backupFiles.inspectDiff":"Diff against this backup (read-only preview)","backupFiles.inspectEmpty":"This backup could not be analyzed (corrupt or unsupported format)","backupFiles.inspectGroup.changes":"Changes (will apply)","backupFiles.inspectGroup.conflicts":"Conflicts (need decision)","backupFiles.inspectGroup.others":"Others","backupFiles.inspectGroup.paths":"Path mappings (need handling)","backupFiles.inspectGroup.skipped":"Identical (nothing to do)","backupFiles.inspectItems":"Change details","backupFiles.inspectLoading":"Analyzing backup contents…","backupFiles.inspectSections":"Sections included","backupFiles.loading":"Loading backup files…","backupFiles.searchEmpty":"No matching backup files","backupFiles.searchPlaceholder":"Search by file name or note…","backupFiles.source.auto":"Scheduled","backupFiles.source.manual":"Manual","backupFiles.title":"Backup Files","backupSchedule.consecutiveFailures":"Scheduled backups failed {count} time(s) in a row — check the configuration (disk space / permissions / section export errors)","backupSchedule.customHint":"Runs a full backup once a week at the selected weekday and time (missed triggers are not backfilled)","backupSchedule.enabled":"Enable scheduled backups","backupSchedule.enabledHint":"When on, DSH backs up automatically on the cadence below; one run fires on every startup (skipped if less than 1h since the last run).","backupSchedule.error":"Failed to load scheduled backup settings","backupSchedule.hint":"Automatically export a full backup ZIP in the background on a fixed cadence (secrets are never included, never encrypted — use manual export for encryption). Config lives in sync/backup-schedule.json and migrates with the self section.","backupSchedule.interval":"Backup interval","backupSchedule.interval.12h":"Every 12 hours","backupSchedule.interval.24h":"Every 24 hours","backupSchedule.interval.6h":"Every 6 hours","backupSchedule.interval.7d":"Every 7 days","backupSchedule.interval.custom":"Custom (weekly at a fixed time)","backupSchedule.lastRun":"Last run","backupSchedule.loading":"Loading scheduled backup settings…","backupSchedule.never":"Never run","backupSchedule.runNow":"Back up now","backupSchedule.running":"Backing up…","backupSchedule.save":"Save settings","backupSchedule.saved":"Settings saved","backupSchedule.status.failed":"Failed","backupSchedule.status.skipped":"Skipped","backupSchedule.status.success":"Success","backupSchedule.title":"Scheduled Full Backups","backupSchedule.weekday.friday":"Friday","backupSchedule.weekday.monday":"Monday","backupSchedule.weekday.saturday":"Saturday","backupSchedule.weekday.sunday":"Sunday","backupSchedule.weekday.thursday":"Thursday","backupSchedule.weekday.tuesday":"Tuesday","backupSchedule.weekday.wednesday":"Wednesday","common.back":"Назад","common.cancel":"Отмена","common.close":"Закрыть","common.confirm":"Confirm","common.done":"Готово","common.loading":"Загрузка…","common.next":"Далее","common.retry":"Повторить","common.unknownError":"Неизвестная ошибка","error.hint":"Error messages are auto-redacted and never leak secrets.","error.title":"Operation failed","export.download":"Download backup file","export.encrypt":"Encrypt backup","export.encryptHint":"Encrypt the entire backup file with a password (AES-256-GCM). The password is used once and never written into the backup or any config file; it is required to unlock the backup on import.","export.excluded":"Excluded","export.fileName":"Custom file name","export.fileNameHint":"Leave empty to auto-name (dsh-config-<date>.zip); no need to type .zip — it is appended automatically. Letters, digits, spaces, — _ . only.","export.fileNameInvalid":"Invalid file name: letters, digits, spaces, — _ . only, no path separators.","export.group.unknown":"Other","export.includeSecrets":"Export secrets","export.includeSecretsHint":"Write the real secrets (credential values) into the backup. Secrets must be stored encrypted: checking this also checks «Encrypt backup»; unchecking «Encrypt backup» unchecks this.","export.included":"Included","export.mode.custom":"Custom Export","export.mode.customHint":"Select sections per group.","export.mode.quick":"Quick Export","export.mode.quickHint":"One-click export of recommended sections (portable, no device-specific data) for routine backups.","export.naming":"File name & note (optional)","export.note":"Note","export.noteHint":"The note is shown in the local backup list (and travels with the config backup) so you can tell exports apart.","export.notePlaceholder":"e.g. Full backup before migration / 2026-08 archive","export.password":"Backup encryption password","export.passwordConfirm":"Confirm password","export.passwordMismatch":"Passwords do not match","export.passwordRequired":"An encryption password is required when encrypting the backup","export.preview":"Preview export contents","export.previewSkipped":"{count} section(s) failed to export and were skipped","export.previewSummary":"Will package {sections} section(s), approx. {size} (no secrets)","export.previewing":"Counting…","export.run":"Start Export","export.running":"Exporting…","export.saved":"Saved to downloads: {name}","export.security":"Security options","export.selectionWarnings":"Device-specific sections may not apply on another machine:","import.analyzing":"Analyzing backup…","import.compatibility.fail":"Backup analysis failed: {reason}","import.compatibility.ok":"The backup can be imported","import.compatibility.score":"Compatibility score: {score}","import.compatibility.title":"Compatibility","import.confirm.encrypted":"The backup password will decrypt and restore {count} credential(s).","import.confirm.execute":"Confirm Import","import.confirm.warning":"Import modifies the current DSH configuration; a safety snapshot is created first and everything rolls back on failure.","import.conflicts.hint":"These items already exist on this machine and differ from the backup. Decide per item.","import.conflicts.keepCurrent":"Keep current","import.conflicts.keepCurrentAll":"Keep all current","import.conflicts.review":"Decide later","import.conflicts.title":"Resolve Conflicts","import.conflicts.unresolved":"{count} item(s) unresolved","import.conflicts.useImported":"Use backup","import.conflicts.useImportedAll":"Use all backup","import.decrypt.badge":"encrypted backup","import.decrypt.previewHint":"Encrypted backup: credentials are restored automatically by the unlock password — no further password prompt.","import.decryptArchive.hint":"This backup is fully encrypted (the whole file is password-protected). Enter the password set at export time to decrypt and continue — encrypted credentials inside are restored with the same password, so this is the only password prompt. It is used once and never written to disk.","import.decryptArchive.passwordPlaceholder":"Enter backup encryption password","import.decryptArchive.title":"Unlock Encrypted Backup","import.decryptArchive.unlock":"Unlock & Continue","import.decryptArchive.unlocking":"Unlocking…","import.importing":"Importing… (installing many plugins may take a few minutes; keep this page open)","import.log.empty":"Waiting for command output…","import.log.newOutput":"↓ New output","import.log.title":"Import Log","import.paths.hint":"Absolute paths in the backup may not exist on this machine. Map each path to a new location (leave blank to skip).","import.paths.new":"New path","import.paths.old":"Original path","import.paths.title":"Path Mapping","import.paths.unresolved":"{count} path(s) unmapped","import.preview.conflicts":"{count} conflict(s)","import.preview.mcp":"{count} MCP server(s) added","import.preview.paths":"{count} path mapping(s) needed","import.preview.plugins":"{count} plugin(s) to install","import.preview.prompts":"{count} prompt(s)","import.preview.restart":"A DSH restart is required after import","import.preview.secrets":"{count} secret(s) to re-enter","import.preview.settings":"{count} settings update(s)","import.preview.title":"Import Preview","import.preview.unchanged":"{count} item(s) already identical (skipped)","import.preview.willChange":"{count} item(s) will change","import.retrySkipped":"Retry failed/skipped items ({count})","import.rollbackOnError":"Roll back everything on failure (recommended)","import.secrets.hint":"These credentials were not exported with the backup (security by design). Enter them manually to use them here; leave blank to skip.","import.secrets.optional":"(optional)","import.secrets.required":"(required)","import.secrets.title":"Re-enter Secrets","import.select.browse":"Choose ZIP file","import.select.cancel":"Cancel selection","import.select.file":"Selected: {name}","import.select.hint":"Pick a dsh-config-*.zip backup exported from DSH to begin. Analysis is read-only and changes nothing.","import.select.reselect":"Reselect","import.select.title":"Select Backup File","import.skipCurrent":"Skip current plugin","import.skipPending":"Skipping… the rest of the import continues","nextSteps.done":"All done — nothing else to handle","nextSteps.restart.hint":"These changes only take effect after restarting DSH:","nextSteps.restart.title":"Restart DSH to apply ({count})","nextSteps.secrets.hint":"These credentials were not exported with the backup; re-enter them on this machine:","nextSteps.secrets.title":"Re-enter credentials ({count})","nextSteps.title":"Next steps","nextSteps.unresolved.hint":"These items were not applied; you can retry them from the result page:","nextSteps.unresolved.title":"Failed / skipped ({count})","profiles.delete":"Delete","profiles.deleteMessage":"Delete profile \\«{name}\\»? This group of configuration snapshots will be permanently removed.","profiles.deleteTitle":"Delete profile","profiles.empty":"No profiles yet. Save the current configuration to get started.","profiles.import.choose":"Choose JSON file","profiles.import.hint":"Import an exported profile.json (from this or another machine; file sections are embedded).","profiles.import.title":"Import profile","profiles.loading":"Loading profiles…","profiles.name":"Name","profiles.nameInvalid":"Invalid profile name: letters, digits and common characters only; no path separators (/ \\\\) or \\«..\\»","profiles.previewConflicts":"{count} conflict(s)","profiles.previewHint":"Click to preview the switch (read-only)","profiles.previewItems":"Change details","profiles.previewNote":"Read-only preview above (zero writes). After confirmation a snapshot is created automatically and everything rolls back on failure.","profiles.previewRestart":"DSH restart required","profiles.previewSecrets":"{count} secret(s) to re-enter","profiles.previewSections":"Sections in this profile","profiles.previewSummary":"Switch impact","profiles.previewUnchanged":"{count} identical","profiles.previewWillChange":"{count} item(s) will change","profiles.previewing":"Analyzing switch plan…","profiles.rename":"Rename","profiles.renameMessage":"Rename profile \\«{name}\\» to:","profiles.renameTitle":"Rename profile","profiles.save.action":"Save profile","profiles.save.hint":"Pick a name and save: contents reuse the export pipeline (no secrets), file sections (skills / presets) are embedded too.","profiles.save.placeholder":"e.g. Work / Personal / Minimal","profiles.save.saving":"Saving…","profiles.save.title":"Save current config as a profile","profiles.sections":"Sections","profiles.subtitle":"Save your current DSH configuration as multiple switchable profiles (Work / Personal / …); switching includes preview + auto snapshot + rollback on failure.","profiles.switch":"Switch","profiles.switchConfirm":"Confirm switch","profiles.switchDone":"Switch complete: {count} item(s) applied","profiles.switchFailed":"Switch failed (some items not applied)","profiles.switchPreviewTitle":"Switch preview: {name}","profiles.switchRolledBack":"Switch failed — fully rolled back","profiles.switching":"Switching… (auto snapshot + staged apply)","profiles.title":"Profiles","profiles.updatedAt":"Updated","report.action.done":"Done","report.action.fixIssues":"View failures","report.action.viewDetails":"View details","report.export.title":"Export Complete","report.import.title":"Import Result","report.needsRestart":"Plugin / MCP changes take effect after restarting DSH.","report.rollback.title":"Rollback Report","section.description":"Экспорт / импорт / миграция конфигурации DSH (секреты исключены; опционально шифрование архива)","section.label":"Резервное копирование и миграция","snapshots.actions":"Actions","snapshots.confirmRestore":"Confirm restore? Current files are first backed up to a safe location, then plugins added during the import are removed.","snapshots.confirmTitle":"Confirm restore","snapshots.createdAt":"Created","snapshots.delete":"Delete","snapshots.deleteConfirm":"Delete the snapshot created at {time}? This pre-import rollback point will be permanently removed and cannot be recovered.","snapshots.deleteConfirmTitle":"Delete Snapshot","snapshots.empty":"No snapshots yet. A safety snapshot is created automatically on import.","snapshots.entries":"Entries","snapshots.execute":"Restore now","snapshots.executing":"Restoring…","snapshots.failed":"Failed","snapshots.hint":"Export backups = portable ZIPs (download / one-click import / delete, incl. scheduled full backups). Snapshot restore = back to the pre-import state: whole-file restore of settings/patch, uninstall plugins added during import, compensate modified files; current files are backed up to a safe location first.","snapshots.kind.credentialHint":"Manual hint","snapshots.kind.fileRemove":"Remove file","snapshots.kind.fileRestore":"Restore file","snapshots.kind.hostFileRemove":"Remove whole file","snapshots.kind.hostFileRestore":"Restore whole file","snapshots.kind.pluginRemove":"Uninstall plugin","snapshots.kind.skip":"Skip","snapshots.kind.unknown":"Unknown","snapshots.loading":"Loading snapshots…","snapshots.manualHints":"Manual action needed","snapshots.noActions":"No restorable actions for this snapshot (or all skipped).","snapshots.pin":"Pin","snapshots.planTitle":"Restore Plan Preview","snapshots.plugins":"Plugins","snapshots.removedPlugins":"Removed plugins","snapshots.reportTitle":"Restore Report","snapshots.restored":"Restored","snapshots.retentionHint":"Up to {count} snapshots are kept automatically (oldest pruned); pinned snapshots are exempt from auto-pruning and can only be deleted manually.","snapshots.selectHint":"Select a snapshot to preview its restore plan (read-only preview, changes nothing):","snapshots.skipped":"Skipped","snapshots.sourceZip":"Source","snapshots.status":"Status","snapshots.status.done":"Done","snapshots.status.pending":"Pending","snapshots.status.rolled-back":"Rolled back","snapshots.status.unknown":"Unknown","snapshots.subTab.files":"Backup Files","snapshots.subTab.recovery":"Recovery","snapshots.subTab.restore":"Snapshot Restore","snapshots.summary":"{hostFileRestores} whole-file restore · {hostFileRemoves} whole-file remove · {pluginRemoves} plugin uninstall · {fileRestores} file restore · {fileRemoves} file remove · {credentialHints} credential hints · {skips} skip","snapshots.title":"Backup & Snapshots","snapshots.unpin":"Unpin","snapshots.viewPlan":"View restore plan","starPrompt.body":"If you find this plugin useful, please give it a ⭐ on GitHub — your support keeps it maintained!","starPrompt.dismiss":"Don't ask again","starPrompt.star":"Star on GitHub","starPrompt.title":"Enjoying Config Manager?","status.ready":"Config Manager ready (plugin {version} · DSH {dsh} · {platform})","status.unavailable":"Config Manager service unavailable — verify the plugin is mounted.","view.about":"About","view.export":"Export","view.import":"Import","view.market":"Marketplace","view.more":"More","view.profiles":"Управление профилями","view.snapshots":"Backup & Snapshots","view.sync":"Remote Sync","view.transfer":"Экспорт и импорт"},"config-manager-history":{"history.corruptedBanner":"Detected unreadable or possibly tampered history entries","history.corruptedCount":"{count} entry(s) were skipped (excluded from export)","history.empty":"No migration records yet. Executing an import, restore, profile switch, sync apply, or scheduled backup will create audit entries here.","history.export.json":"Export JSON","history.export.markdown":"Export Markdown","history.exportError":"Export failed","history.exported":"Exported","history.exporting":"Exporting…","history.filter.kind":"Operation","history.filter.recent":"Time range","history.filter.recent.200":"Latest 200","history.filter.recent.50":"Latest 50","history.filter.recent.all":"All","history.filter.result":"Result","history.filter.sections":"Sections","history.filter.title":"Filter & export","history.kind.autosync":"Autosync","history.kind.backup":"Scheduled backup","history.kind.import":"Import","history.kind.profile-delete":"Profile delete","history.kind.profile-import":"Profile import","history.kind.profile-rename":"Profile rename","history.kind.profile-save":"Profile save","history.kind.profile-switch":"Profile switch","history.kind.recovery":"Recovery/rollback","history.kind.restore":"Snapshot restore","history.kind.rollback":"Rollback","history.kind.snapshot-delete":"Snapshot delete","history.kind.snapshot-prune":"Snapshot retention","history.kind.sync-apply":"Sync apply","history.loadError":"Failed to load migration history","history.loading":"Loading migration history…","history.refresh":"Refresh","history.reload":"Reload","history.result.failed":"Failed","history.result.skipped":"Skipped","history.result.success":"Success","history.search.placeholder":"Search summary / error / section…","history.stats.failed":"Failed","history.stats.skipped":"Skipped","history.stats.success":"Success","history.stats.total":"Total","history.subtitle":"Единый журнал аудита всех деструктивных и миграционных операций","history.table.kind":"Operation","history.table.result":"Result","history.table.sections":"Sections","history.table.summary":"Summary","history.table.time":"Time","history.title":"История миграций и аудита","history.updatedAt":"Updated","view.history":"История миграций"},"config-manager-market":{"common.cancel":"Отмена","common.close":"Закрыть","common.loading":"Загрузка…","common.retry":"Повторить","common.unknownError":"Неизвестная ошибка","config.refresh":"Refresh","config.refreshing":"Refreshing…","config.title":"Market Repository","detail.approval.count":"{selected}/{total} section(s) approved","detail.approval.highRiskHint":"These sections install plugins / write files / inject global instructions / register MCP / restore sessions — high-risk changes, not imported by default. Check each one to import it.","detail.approval.requiresApproval":"Requires approval","detail.approval.safe":"Importable","detail.approval.title":"Approve sections to import","detail.back":"Back to list","detail.downloadedAt":"Downloaded: {time}","detail.emptySections":"This item contains no importable sections","detail.errors":"Verification errors:","detail.impact.conflicts":"{count} conflict(s)","detail.impact.paths":"{count} path mapping(s)","detail.impact.restart":"DSH restart required","detail.impact.secrets":"{count} secret(s) to re-enter","detail.impact.unchanged":"{count} identical","detail.impact.willChange":"{count} item(s) will change","detail.import":"Confirm import","detail.needReview":"Needs human confirmation","detail.noApproval":"No sections approved — cannot import","detail.previewHint":"Read-only preview below (changes nothing). Confirming the import reuses the existing safe pipeline (snapshot + validation + rollback on failure).","detail.title":"Item Details","detail.version":"version {version}","disclaimer.confirm":"I understand, continue","disclaimer.dontAsk":"Don't ask again (no more disclaimers for this action)","disclaimer.download.text":"You are about to download configs from a public network market and import them locally.\\n\\nDownloaded content is untrusted input: not officially reviewed and may carry risks (installing plugins / writing files / changing settings).\\n· Everything is validated and shown before import; high-risk sections are not imported by default and require individual approval;\\n· A snapshot is auto-created before import and rollback is available on failure;\\n· Please verify the source and content before confirming the import.","disclaimer.install.text":"You are about to reinstall configs from your public repo to this machine.\\n\\nThis is content you uploaded before, but it still goes through the same validation and per-section approval:\\n· High-risk sections are not imported by default and require individual approval;\\n· A snapshot is auto-created before import and rollback is available on failure.","disclaimer.title":"Disclaimer","disclaimer.upload.text":"You are about to upload configs to your public repo (<login>/dsh-configs) and submit a listing request to the official market.\\n\\nUploaded content becomes publicly visible and requires human review before entering the official market. Please ensure:\\n· No real secrets / credentials are included (env-var references like $VAR are safe);\\n· No personal privacy or local environment info is included;\\n· You have the right to share these configs.","list.browse":"Browse","list.cacheCached":"cached","list.cacheFresh":"just fetched","list.cacheNone":"not cached","list.categoriesAll":"All categories","list.count":"{count} item(s)","list.download":"View details","list.empty":"The built-in market has not loaded yet. Click \\«Refresh\\» first.","list.filtered":"({count} after filter)","list.loading":"Reading market…","list.noItems":"This market has no items.","list.searchPlaceholder":"Search name / author / description…","list.sectionsAll":"All sections","list.sectionsUnknown":"{count} more item(s) not downloaded yet — cannot match by section","list.sortDefault":"Default order","list.sortName":"Name A–Z","list.sortStars":"Most starred","list.sortUpdated":"Recently updated","list.sourceAll":"All sources","list.sourceOfficial":"Official","list.sourcePersonal":"Community","list.stars":"⭐ {count}","list.starsHint":"Stars of the source repo (repo-level, not per item)","myconfigs.back":"Back to market","myconfigs.delete.confirm":"Confirm delete","myconfigs.delete.confirmText":"Delete? This permanently removes the item index and files from your config repo (not recoverable)","myconfigs.delete.confirmTitle":"Delete item","myconfigs.delete.delistStarted":"Local item deleted; a \\«delist PR\\» has been submitted (removal from the official market needs human merge; the item may still appear in the market meanwhile)","myconfigs.delete.prClosed":"Local item deleted; its pending listing PR has been closed","myconfigs.delete.run":"Delete","myconfigs.error.loadItems":"Failed to read uploaded items","myconfigs.error.loadStatus":"Failed to read sign-in status","myconfigs.item.install":"Install locally","myconfigs.item.openPr":"View listing PR","myconfigs.item.update":"Update","myconfigs.list.empty":"No configs uploaded yet","myconfigs.list.loading":"Loading…","myconfigs.list.openRepo":"Open repo","myconfigs.list.refresh":"Refresh","myconfigs.list.summary":"{total} item(s) · {listed} listed · {pending} pending · {none} not listed","myconfigs.list.title":"Uploaded","myconfigs.login.cancel":"Cancel sign-in","myconfigs.login.checking":"Checking sign-in status…","myconfigs.login.hint":"After signing in you can upload configs to your public repo (auto-created as <login>/dsh-configs) and submit a listing PR to the official market (target repo is fixed and not editable).","myconfigs.login.loggedInAs":"Signed in as {login}","myconfigs.login.openAuth":"Open authorization page","myconfigs.login.relogin":"Sign in again","myconfigs.login.repoMissing":"Config repo not created yet — it will be auto-created (public) on first upload","myconfigs.login.repoReady":"Config repo: {repo}","myconfigs.login.start":"Sign in with GitHub","myconfigs.login.targetRepo":"Listing target (fixed): {repo}","myconfigs.login.title":"GitHub sign-in","myconfigs.login.userCode":"One-time code: {code}","myconfigs.result.listingFailed":"Listing failed","myconfigs.result.listingPending":"Uploaded ✓ submitting listing in the background (fork + PR) — list status will update shortly","myconfigs.result.openPr":"View PR","myconfigs.result.openRepo":"Open repo","myconfigs.result.pr":"Listing PR #{number}","myconfigs.result.relist":"Resubmit listing","myconfigs.result.repo":"Config repo","myconfigs.result.sections":"Sections: {sections}","myconfigs.result.sha256":"SHA-256: {hash}","myconfigs.result.title":"Upload/update complete","myconfigs.result.version":"version {version}","myconfigs.tab.browse":"Browse Market","myconfigs.tab.myconfigs":"My Configs","myconfigs.update.hint":"The version will be bumped automatically (+1); item info is prefilled (name editable).","myconfigs.update.run":"Update","myconfigs.update.running":"Updating…","myconfigs.update.selectZip":"Choose new ZIP…","myconfigs.update.title":"Update config","myconfigs.update.zipHint":"Updating needs a new config zip: pick one and it will be validated automatically, then you can update.","myconfigs.upload.form.autoHint":"These fields are generated automatically:","myconfigs.upload.form.categories":"Categories (optional, comma-separated)","myconfigs.upload.form.description":"Description (optional)","myconfigs.upload.form.name":"Name","myconfigs.upload.form.nameHint":"Prefilled from the zip file name; editable","myconfigs.upload.form.title":"Item info","myconfigs.upload.mode.migrate":"Migrate (keep everything)","myconfigs.upload.mode.share":"Share (auto-exclude sensitive content)","myconfigs.upload.mode.shareHint":"Share mode auto-excludes device/platform-specific sections (credentials status / sessions / MCP / workspaces, etc.) and enforces privacy scanning — any sensitive trace blocks publishing instead of just warning.","myconfigs.upload.mode.title":"Publish mode","myconfigs.upload.reselect":"Choose again","myconfigs.upload.run":"Upload","myconfigs.upload.running":"Uploading…","myconfigs.upload.select":"Choose ZIP…","myconfigs.upload.selectHint":"Pick an exported config zip (create a backup on the \\«Export\\» tab first, then pick it here). The market channel never carries secrets — backups containing secrets are rejected.","myconfigs.upload.selected":"Selected: {name}","myconfigs.upload.title":"Upload","myconfigs.upload.validate":"Run validation","myconfigs.upload.validateInvalid":"Content validation failed — cannot upload","myconfigs.upload.validateOk":"Validation passed: valid content, no secrets","myconfigs.upload.validateSecrets":"Contains secrets: the market channel never carries secrets — upload rejected","myconfigs.upload.validating":"Validating…","section.description":"Просмотр и загрузка конфигураций сообщества (публичные Git-репозитории; загружаемый контент не является доверенным — проверяется перед импортом)","section.label":"Каталог конфигураций"},"config-manager-recovery":{"common.cancel":"Отмена","common.retry":"Повторить","common.unknownError":"Неизвестная ошибка","recovery.actionError":"Operation failed","recovery.banner":"Configuration changes are protected: there is an unfinished recovery item. Resolve it before continuing.","recovery.bannerAction":"Go to recovery","recovery.completed":"Recovery complete","recovery.completed.recovered":"Recovered and verified","recovery.completed.rolledBack":"Rolled back and verified","recovery.confirm.dismiss":"Abandon recovery? The operation will be set aside (quarantined), and the related snapshot and operation records are kept, but it will not be auto-recovered.","recovery.confirm.dismissTitle":"Abandon recovery","recovery.confirm.message":"Recovery / rollback is a dangerous operation. Confirm execution? Current files are backed up to a safe location first.","recovery.confirm.retry":"Retry recovery after verification failure. Confirm running it again?","recovery.confirm.rollbackContinue":"Continue the interrupted rollback (already-completed parts are skipped and not redone).","recovery.confirm.title":"Confirm recovery","recovery.continue":"Continue","recovery.currentState.hasSnapshot":"Trusted recovery snapshot available","recovery.currentState.noSnapshot":"No trusted recovery snapshot","recovery.currentState.safeMode":"Safe mode active (config-modifying operations paused)","recovery.currentState.safeModeCleared":"Restored to normal — you can continue","recovery.currentState.title":"Current state","recovery.decision.unknown":"Unknown","recovery.dismiss":"Abandon recovery","recovery.dismissing":"Abandoning…","recovery.empty":"No recovery items to handle.","recovery.environment.compatible":"Environment matches","recovery.environment.incompatible":"Environment mismatch (may be from another machine / install)","recovery.environment.title":"Environment","recovery.error":"Failed to load recovery status","recovery.execute":"Execute recovery","recovery.executing":"Recovering…","recovery.inProgress":"Recovery in progress","recovery.incident.createdAt":"Occurred at","recovery.incident.decision":"Recommendation","recovery.incident.operationId":"Operation ID","recovery.incident.operationType":"Operation type","recovery.incident.reason":"Reason","recovery.incident.state":"State","recovery.incident.state.committed":"Completed","recovery.incident.state.needsAttention":"Manual action needed","recovery.incident.state.recovered":"Recovered","recovery.incident.state.recovering":"Recovering","recovery.incident.state.rolledBack":"Rolled back","recovery.incident.state.unknown":"Unknown","recovery.incident.title":"What happened","recovery.loading":"Checking recovery status…","recovery.manualActionRequired":"Manual action required","recovery.mismatch":"Mismatch","recovery.needsAttention":"Needs attention","recovery.needsAttention.hint":"Recovery could not complete or verification failed. Review the reason, then retry or abandon.","recovery.needsAttention.title":"Needs attention","recovery.partialMatch":"Partial match","recovery.preview.action":"Action","recovery.preview.detail":"Detail","recovery.preview.empty":"No restorable actions for this operation (or all skipped).","recovery.preview.hint":"Read-only preview below (zero writes). Recovery only runs after confirmation.","recovery.preview.loading":"Generating preview…","recovery.preview.summary":"Will execute {count} action(s)","recovery.preview.title":"Recovery preview","recovery.required":"Recovery Required","recovery.requiredHint":"An operation did not complete normally. To stay safe, all config-modifying operations are paused. Handle the recovery item(s) below to restore normal operation.","recovery.retry":"Retry","recovery.retrying":"Retrying…","recovery.rollbackContinue":"Continue rollback","recovery.rollbackRecommended":"Rollback recommended","recovery.running":"Recovery task in progress","recovery.runningHint":"Recovery / rollback is running; keep this page open.","recovery.snapshot.createdAt":"Snapshot time","recovery.snapshot.id":"Snapshot ID","recovery.snapshot.operationType":"Snapshot operation","recovery.snapshot.title":"Recovery snapshot","recovery.snapshot.verdict":"Snapshot validation","recovery.snapshot.verdict.corrupt":"Corrupt","recovery.snapshot.verdict.invalid":"Invalid","recovery.snapshot.verdict.legacy":"Legacy snapshot (explicit confirmation required)","recovery.snapshot.verdict.manual":"Manual / local (outside this operation)","recovery.snapshot.verdict.trusted":"Trusted (bound to this operation)","recovery.snapshot.verdict.unknown":"Unknown","recovery.snapshot.verdict.unsafe":"Unsafe path","recovery.snapshot.verdict.wrongEnv":"Environment mismatch","recovery.verificationError":"Verification error","recovery.verified":"Verified","recovery.verify":"Verify","recovery.verify.details":"Check details","recovery.verify.manualHints":"Manual action needed","recovery.verify.terminal.needsAttention":"Needs attention","recovery.verify.terminal.recovered":"Recovered","recovery.verify.terminal.rolledBack":"Rolled back","recovery.verify.title":"Verification result","recovery.verify.verdict.error":"Verification error: could not reliably complete verification; recovery incomplete","recovery.verify.verdict.match":"Verified: target state matches the trusted snapshot","recovery.verify.verdict.mismatch":"Verification failed: target state does not match the trusted snapshot; recovery incomplete","recovery.verify.verdict.partial":"Verified (partial match): core state matches, but some items could not be auto-verified","recovery.verify.verdict.unknown":"Unknown","recovery.verifying":"Verifying…","section.description":"Восстановление профилей и откат к предыдущим снапшотам","section.label":"Аварийное восстановление","view.recovery":"Recovery"},"config-manager-sync":{"action.pull":"Pull diff preview","action.pulling":"Pulling…","action.push":"Push to remote","action.pushing":"Pushing…","autosync.description":"When enabled, DSH keeps config in sync in the background: uploads locally-changed config automatically, pulls and merges only when it detects a new remote snapshot; the timer is just a fallback poll and no-ops when nothing changed. Local writes happen only when there are no conflicts or manual-decision items.","autosync.due":"Due — running soon","autosync.enable":"Enable auto sync","autosync.failCount":"{n} consecutive failure(s)","autosync.failed":"Failed","autosync.interval":"Fallback poll interval","autosync.interval12h":"12 hr","autosync.interval15m":"15 min","autosync.interval24h":"24 hr","autosync.interval30m":"30 min","autosync.interval5m":"5 min","autosync.interval60m":"60 min","autosync.interval6h":"6 hr","autosync.intervalHint":"On interval / DSH startup, checks for a new remote snapshot and pulls+merges only if one exists (no upload); local config changes trigger an upload.","autosync.nextRun":"Next in ~{time}","autosync.partial":"Partial","autosync.running":"Auto sync running…","autosync.skipped":"Skipped","autosync.status":"Last run: {status} ({time})","autosync.statusNever":"Never run","autosync.success":"Success","autosync.title":"Auto Sync","change.total":"{total} change(s)","channel.configured":"Configured","channel.currentUrl":"Current URL","channel.git":"Git private repo","channel.notConfigured":"Not configured","channel.open":"Configure sync channel","channel.openHint":"Remote sync runs through a sync channel: a private Git repository or a WebDAV server. Click the button to configure or change it in the dialog.","channel.perChannelHint":"Auto sync, sync mode, encryption and remote snapshots are configured independently for GitHub and WebDAV channels.","channel.title":"Sync Channel","channel.webdav":"WebDAV server","common.close":"Закрыть","common.loading":"Загрузка…","common.retry":"Повторить","config.repoUrl":"Repository URL","config.repoUrlHint":"Private Git repository URL (https / ssh / local path). Use the credential field below for the auth token; never embed it in the URL.","config.save":"Save config","config.saveHint":"Form changes are saved automatically (password/token written securely into DSH credentials, never into sync files or logs); you can also save explicitly with the button.","config.saving":"Saving…","config.title":"Repository","config.token":"Auth token","config.tokenHint":"Securely written into DSH credentials (ref {ref}); never written into sync files or logs. Leave blank to reuse the saved credential.","config.tokenPlaceholder":"ghp_… (optional)","config.tokenSaved":"Credential configured","github.cancel":"Cancel","github.clientIdHint":"Requires the githubClientId plugin config (the client_id of your GitHub OAuth App).","github.description":"Authorize via the GitHub OAuth device flow: no manual token entry — after you approve in the browser, the token is written into DSH credentials automatically.","github.login":"Sign in with GitHub","github.openAuth":"Open GitHub authorization page","github.retry":"Sign in again","github.title":"GitHub Sign-in","github.tokenInvalid":"GitHub sign-in is no longer valid — please sign in again.","github.userCode":"One-time code","history.autosyncApplied":"Applied sections: {sections}","history.autosyncBoth":"Both","history.autosyncConflicted":"Skipped conflict sections: {sections}","history.autosyncDirection":"Direction: {direction}","history.autosyncError":"Error: {error}","history.autosyncNotified":"Notified (3 consecutive failures)","history.autosyncPull":"Pull","history.autosyncPush":"Push","history.autosyncReasonConflict":"Conflict","history.autosyncReasonNetwork":"Network issue","history.autosyncReasonNoRemote":"No remote snapshot","history.autosyncReasonNotConfigured":"No repository configured","history.autosyncSkipReason":"Skip reason: {reason}","history.channelGit":"GitHub","history.channelWebdav":"WebDAV","history.colDetail":"Detail","history.colKind":"Kind","history.colTime":"Time","history.column.autosync":"Auto Sync","history.column.snapshot":"Snapshot","history.detail":"Detail","history.empty":"No sync history yet","history.emptyHint":"Records appear here after your first push / one-click sync / auto sync.","history.kindAutosync":"Auto Sync","history.kindSnapshot":"Snapshot","history.sectionCount":"sections","history.title":"Sync History","mode.advanced":"Advanced (Custom Export)","mode.advancedHint":"Manually select the sections to push (same as Custom Export in the Export tab); only portable sections can sync.","mode.atLeastOne":"Select at least one section to sync","mode.decryptPassword":"Decryption password (for encrypted snapshot pull/sync, optional)","mode.decryptPasswordHint":"Provide it when pulling or one-click syncing an encrypted snapshot; without it encrypted snapshots cannot be read (auto sync skips and reports them in history).","mode.default":"Default (Quick Export)","mode.defaultCount":"Will sync {n} recommended section(s)","mode.defaultHint":"Push all recommended sections (settings, providers, plugins, prompts, skills, etc.) in one click — no configuration needed.","mode.encrypt":"Encrypt backup","mode.encryptAutosyncNotice":"Encrypted snapshots are only produced/consumed by manual push/pull; auto sync has no password, so it skips encrypted snapshots and reports them in history.","mode.encryptHint":"Encrypt the sync snapshot with a password (AES-256-GCM). The password is memory-only for this push and never persisted; auto sync cannot decrypt encrypted snapshots, so it skips them and reports it in sync history.","mode.hint":"Choose which sections to export when pushing: Default = recommended sections in one click (Quick Export); Advanced = custom selection (Custom Export).","mode.includeSecrets":"Export secrets","mode.includeSecretsHint":"Write real credential values into the encrypted snapshot (auto-selects encryption when checked; secrets never enter a plaintext snapshot).","mode.password":"Encryption password","mode.passwordConfirm":"Confirm password","mode.passwordMismatch":"Passwords do not match","mode.passwordRequired":"Encryption requires a password","mode.persistHint":"The mode and section selection are saved locally: both auto sync and manual push use this configuration (persists across restarts).","mode.sectionPortable":"Portable","mode.sectionRecommended":"Recommended","mode.sectionsHint":"Only portable sections can sync: device-specific (plugin files, credentials status, sessions) and platform-specific (MCP, workspaces) sections never participate in remote sync.","mode.sectionsTitle":"Sync Sections","mode.security":"Encryption & Secret Export (Security Options)","mode.title":"Sync Mode","privateRepoHint":"Security requirement: the sync repository MUST be private (a public repo would expose your configuration). The auth token is only used for repository access and is never written into sync files, commit content, or logs.","pull.empty":"Remote snapshot matches local (no changes)","pull.needsReview":"Contains items that need human decisions (conflicts / secrets / dependencies / installs)","pull.previewHint":"Read-only diff preview above; nothing is imported. One-click import is not supported in this version; use the Import wizard to apply a downloaded backup if needed.","pull.title":"Pull Diff Preview","push.title":"Push Result","section.description":"Синхронизация переносимой конфигурации между устройствами через приватный Git-репозиторий (секреты не синхронизируются)","section.label":"Удалённая синхронизация","sections.title":"Synced Sections","status.never":"Never synced","status.title":"Sync Status","syncflow.adoptHint":"Check = import item; uncheck = skip","syncflow.adoptRemote":"Adopt remote","syncflow.bulkHint":"Bulk decisions only apply to conflict items; other changes are adopted by default.","syncflow.button":"One-click sync","syncflow.cancel":"Cancel","syncflow.confirmImport":"Confirm import","syncflow.conflictAncestorLabel":"Common ancestor","syncflow.conflictLocalLabel":"Current","syncflow.conflictRemoteLabel":"Backup","syncflow.conflictTitle":"Resolve conflict","syncflow.conflictUnresolved":"Conflict item {itemId} has no resolution yet (keep current / use backup)","syncflow.conflictUseLocal":"Keep current","syncflow.conflictUseRemote":"Use backup","syncflow.diff":"Diff","syncflow.diffCount":"{count} change(s)","syncflow.empty":"Remote snapshot matches local (no changes)","syncflow.importDone":"Imported {n} section(s)","syncflow.importFailed":"Import failed (rolled back)","syncflow.importWarnings":"Import warnings","syncflow.importedSections":"Written","syncflow.keepLocalAll":"Keep all current","syncflow.latestSnapshot":"Latest snapshot","syncflow.needsRestart":"Some changes require a DSH restart to take effect","syncflow.needsReviewBadge":"Needs decision","syncflow.noSnapshots":"No remote snapshots","syncflow.pushConfirm":"Push","syncflow.pushFirstBaseline":"No remote snapshots yet: this push creates the first sync baseline","syncflow.pushPreviewSections":"Sections to push","syncflow.pushPreviewTitle":"Confirm Push","syncflow.pushing":"Pushing…","syncflow.refreshSnapshots":"Refresh snapshots","syncflow.refreshingSnapshots":"Fetching…","syncflow.rollback":"Rollback","syncflow.rollbackDone":"Rolled back","syncflow.rollingBack":"Rolling back…","syncflow.selectSnapshot":"Select snapshot","syncflow.snapshotOption":"({date} · {count} sections)","syncflow.syncFailed":"Sync failed","syncflow.syncing":"Syncing…","syncflow.title":"One-Click Sync","syncflow.useRemoteAll":"Use all backup","warnings.title":"Section Warnings","webdav.password":"Password","webdav.passwordHint":"Securely written into DSH credentials (ref {ref}); never written into sync files or logs. Leave blank to reuse the saved credential.","webdav.passwordPlaceholder":"Password (optional)","webdav.passwordSaved":"Credential configured","webdav.presetHint":"Pick a common WebDAV server to prefill the URL; templates containing <placeholders> need to be replaced with your real server/username.","webdav.title":"WebDAV Configuration","webdav.url":"Server URL","webdav.urlHint":"WebDAV server root URL (https://…). Sync snapshots and the index are stored under a dsh-config-manager/ subdirectory of that URL. Do not include a username/password in the URL.","webdav.username":"Username","webdav.usernameHint":"HTTP Basic auth username (not sensitive, may be shown)."},"context-doctor":{"cd.attention":"Стоит посмотреть","cd.byFile":"По файлу","cd.byServer":"По серверу","cd.bySource":"По источнику","cd.catalog":"{n} скиллов","cd.catalog.few":"{n} скилла","cd.catalog.many":"{n} скиллов","cd.catalog.one":"{n} скилл","cd.collapse":"Скрыть детализацию","cd.duplicateBlocks":"{n} дублированных блоков · {tokens} токенов","cd.duplicateSkills":"{n} навыков имеют одинаковое описание","cd.empty":"Данных пока нет","cd.emptyCategory":"ничего не внедрено","cd.emptyState":"Данные аудита пока отсутствуют.","cd.error":"Проверка не удалась","cd.expand":"Показать детализацию","cd.files":"файлов","cd.guideline":"из 50k","cd.healthy":"В норме","cd.healthyHint":"Контекст расходуется экономно и укладывается в рекомендованный бюджет.","cd.heavy":"Превышение бюджета","cd.heavyHint":"Резидентный контекст перегружает бюджет. Сначала сократите самые крупные записи.","cd.hint":"Открыть аудит контекста","cd.instructions":"Цепочка инструкций","cd.instructions.sub":"{n} файлов","cd.justNow":"только что","cd.loading":"Проверка…","cd.mcp":"Инструменты MCP","cd.mcp.sub":"{n} инструментов · {servers} серверов","cd.mcpTools":"{n} инструментов","cd.mcpTools.few":"{n} инструмента","cd.mcpTools.many":"{n} инструментов","cd.mcpTools.one":"{n} инструмент","cd.minutesAgo":"{n} минут назад","cd.more":"+{n} ещё","cd.native":"Встроенные инструменты","cd.noDetail":"Нет доступной разбивки","cd.ofBudget":"из бюджета в {budget}","cd.refresh":"Обновить","cd.residentTokens":"Проверка бюджета контекста","cd.residentUnit":"токены резидентные","cd.review":"Стоит посмотреть","cd.reviewHint":"Некоторые части контекста стоит пересмотреть, пока они не стали дорогими.","cd.secondsAgo":"{n} назад","cd.shadowed":"{n} навыков скрыты записью с таким же названием","cd.skills":"Каталог скиллов","cd.skills.sub":"{n} навыков","cd.subtitle":"Аудит контекста","cd.suggestions":"Рекомендации","cd.suggestions.few":"{n} рекомендации","cd.suggestions.many":"{n} рекомендаций","cd.suggestions.one":"{n} рекомендация","cd.title":"Аудит контекста","cd.tokens":"токены","cd.tools":"Схемы инструментов","cd.tools.sub":"{n} встроенных инструментов","cd.toolsCount":"инструментов","cd.topSchemas":"Самые большие схемы","cd.total":"Общее количество","cd.updated":"Обновлено {when}"},"conversation":{"access.confirm.acknowledge":"Я понимаю риски и хочу продолжить","access.confirm.cancel":"Отмена","access.confirm.description":"Полный доступ убирает часть подтверждений и позволяет агенту действовать напрямую, включая чувствительные операции, изменение файлов и внешние команды. Включайте, только если доверяете текущей задаче.","access.confirm.enable":"Включить полный доступ","access.confirm.title":"Включить полный доступ?","access.preset.fullAccess":"Полный доступ","access.preset.readOnly":"Только чтение","access.preset.workspaceWrite":"Запись в рабочую область","approval.allowOnce":"Разрешить один раз","approval.detail.aria":"Подробности запроса","approval.escalation":"Инструмент {toolName} просит повышенных прав","approval.reject":"Отклонить","approval.waiting":"Ожидание подтверждения","ask.answered":"{answered}/{total} отвечено","ask.cancelled":"отменено","ask.cancelledDetail":"Этот набор вопросов был отменён до отправки ответов.","ask.interrupted":"прервано","ask.interruptedDetail":"Этот набор вопросов был прерван до отправки ответов.","ask.rowTitle":"Вопрос","ask.skipped":"Без ответа","ask.waiting":"ожидание","bash.failed":"Ошибка","bash.running":"Выполняется","bash.stopped":"Остановлено","chat.loadError":"Не удалось загрузить историю: {message} ({code})","chat.loadOlder":"Загрузить раньше","chat.loadingHistory":"Загрузка истории…","chat.toBottom":"Вниз","clock.md":"{d}.{m}","clock.ymd":"{d}.{m}.{y}","command.done":"Готово","command.failed":"Команда не выполнена","command.imagesUnsupported":"/{command} не принимает вложения-изображения — сначала удалите их","command.running":"Выполняется…","command.title":"Команда","context.aria":"{percent} контекста занято","context.messages":"Сообщения","context.system":"Системный промпт","context.tools":"Инструменты","context.used":"контекста занято","details.close":"Закрыть подробности","details.empty":"Выберите строку инструмента в переписке, чтобы увидеть подробности","details.input":"Вход","details.notInWindow":"Этот вызов вне текущего окна","details.output":"Выход","details.running":"Выполняется…","details.title":"Подробности","diff.collapseAria":"Свернуть diff","diff.expandAria":"Развернуть ещё {count} строк diff","diff.expandRest":"… ещё {count} строк","diff.files.one":"{count} файл","diff.files.other":"{count} файлов","duration.minutes":"{minutes} мин {seconds} с","duration.seconds":"{seconds} с","fileOpen.folderTitle":"Не удалось открыть папку","fileOpen.folderUnknown":"Не удалось открыть эту папку","fileOpen.title":"Не удалось открыть файл","fileOpen.unknown":"Не удалось открыть этот файл","hero.chooseWorkspace":"Выбрать рабочую папку","hero.headline":"Навстречу неизвестному","hero.preview":"Предпросмотр","hint.goal":"опишите цель длительной задачи","hint.goal.active":"цель активна — изменить / пауза / продолжить / снять","image.closePreview":"Закрыть просмотр оригинала","image.dimensionTooLarge":"Стороны изображения не больше {size}px — уменьшите его и попробуйте снова","image.dropBlocked":"Сейчас картинки добавить нельзя","image.dropDesc":"До {count} изображений, каждое до {size}","image.dropTitle":"Перетащите изображения сюда","image.fileTooLarge":"Каждое изображение должно быть меньше {size}","image.label":"Изображение","image.loadFailed":"Изображение не загрузилось, нажмите для повтора","image.loading":"Загрузка изображения…","image.modelUnsupported":"Текущая модель не принимает изображения; выберите подходящую","image.openOriginal":"Открыть оригинал","image.openOriginalLabel":"{label}, нажмите, чтобы открыть оригинал","image.original":"Оригинал","image.pending":"Изображения к отправке","image.preview":"Просмотр оригинала","image.remove":"Убрать изображение {name}","image.scrollLeft":"Прокрутить изображения влево","image.scrollRight":"Прокрутить изображения вправо","image.sendFailed":"Не удалось отправить изображения ({reason}); добавьте заново и повторите","image.serviceUnavailable":"Служба загрузки изображений недоступна","image.subagentUnsupported":"Сессии субагентов пока не поддерживают изображения","image.tooMany":"В одно сообщение помещается до {count} изображений","image.tooManyPixels":"Слишком большое разрешение; сожмите изображение и повторите","image.totalTooLarge":"Изображения весят больше {size}; уберите часть и повторите","image.unsupportedType":"Поддерживаются только PNG, JPG, WebP и GIF","input.accessMode":"Режим доступа, сейчас: {name}","input.commands":"Команды","input.send":"Отправить сообщение","input.stop":"Остановить генерацию","json.truncated":"… обрезано, всего символов: {total}","message.branch":"Ответвить новый диалог","message.branchUnavailable":"Доступно только на последнем сообщении завершённого хода","message.compaction":"Контекст сжат","message.compaction.completed":"Сжато элементов истории: {items} (~{tokens} токенов)","message.compaction.expand":"Показать итог сжатия","message.compaction.running":"Сжатие контекста…","message.compaction.unavailable":"Итог сжатия недоступен","message.context.catalog.more":"… ещё {count}","message.context.catalog.replaced":"Каталог заменён","message.context.instructions.added":"добавлено","message.context.instructions.loaded":"загружено","message.context.instructions.removed":"удалено","message.context.instructions.updated":"обновлено","message.context.recall.counts":"{retained} оставлено · {omitted} пропущено","message.context.recall.truncated":"обрезано","message.context.relay.from":"Из сессии {session}","message.context.snapshot.supersedes":"Заменяет прежние снимки","message.contextInjection":"Инъекция контекста","message.contextRecall":"Напоминание из сессии","message.extraBlock":"Дополнительный блок","message.maxTokens":"Достигнут лимит выходных токенов","message.maxTokens.hint":"Ответ обрезан; написанное ранее сохранено в переписке. Отправьте «продолжай», чтобы модель дописала.","message.ranFor":"Заняло {duration}","message.referenceSeparator":", ","message.referenceSummary":"Упомянутая сессия · {labels}","message.retry.active":"Повтор запроса к модели","message.retry.cancelled":"Повтор запроса отменён","message.retry.delay":"Задержка перед повтором: ","message.retry.failure":"Причина сбоя: ","message.retry.scheduled":"Ожидание повтора запроса","message.retry.started":"Запрос к модели повторён","message.retry.status":"{label} ({retry}/{maximum}) · {seconds} с","message.stopped":"Остановлено","message.tokensPerSecond":"{tps} ток/с","message.ttft":"Первый токен {seconds} с","message.turnError":"Ход не удался","message.unknownBlock":"Неизвестный блок содержимого","message.unknownSurface":"Неизвестное событие: {type}","placeholder.default":"Напишите агенту","placeholder.hero":"Опишите, что хотите сделать","placeholder.parentOffline":"Родительская сессия офлайн: отправка недоступна, но остановить выполнение можно","placeholder.steerQueue":"Cmd/Ctrl+Enter направит все сообщения из очереди","placeholder.unavailable":"Сессия недоступна","placeholder.workspace":"Выберите рабочую папку, чтобы начать","queue.cancelEdit":"Отменить правку","queue.count":"Сообщений в очереди: {n}","queue.edit":"Изменить сообщение в очереди","queue.edit.unsupported":"Содержит не только текст; правка пока не поддерживается","queue.editFailed":"Не удалось изменить: сообщение, возможно, уже отправляется.","queue.image":"Изображение сообщения в очереди","queue.remove":"Убрать из очереди","queue.removeFailed":"Не удалось убрать: сообщение, возможно, уже отправляется.","queue.save":"Сохранить сообщение","queue.steer":"Направить сообщение","queue.steer.unavailable":"Направлять можно только пока агент работает","queue.steerFailed":"Не удалось направить. Попробуйте ещё раз.","read.collapseAria":"Свернуть содержимое","read.expandAria":"Развернуть ещё {count} строк","read.expandRest":"… ещё {count} строк","read.window":"Показано {shown} из {total} строк","row.failed":"Ошибка","row.input":"ВХОД","row.inspect":"Инспектировать","row.output":"ВЫХОД","row.running":"Выполняется","row.stopped":"Остановлено","search.collapseAria":"Свернуть результаты","search.expandAria":"Развернуть ещё {count} строк результатов","search.expandRest":"… ещё {count} строк","search.matches":"{shown} совпадений • {files} файлов","search.matches.truncated":"Показано {shown} из {total} совпадений • {files} файлов","search.noResults":"Нет результатов","search.paths":"{shown} путей","search.paths.truncated":"Показано {shown} из {total} путей","session.hierarchy":"Иерархия сессий","settings.enter.description":"Только когда агент занят; Cmd/Ctrl+Enter даёт другое поведение","settings.enter.queue":"В очередь","settings.enter.steer":"Направить","settings.enter.title":"Enter, когда агент занят","stats.cacheHit":"Попаданий в кэш {percent}%","stats.counts":"ходов: {turns} · шагов: {steps}","stats.llm":"Модель {duration}","stats.tokens":"Вход {input} ток · выход {output} ток","stats.tokensPerSecond":"{throughput} ток/с","stats.toolCall":"Инструменты {duration}","stats.ttftAverage":"Первый токен в среднем {duration}","terminal.collapseAria":"Свернуть вывод","terminal.done":"Готово","terminal.exitCode":"код возврата {code}","terminal.expandAria":"Показать оставшиеся строки вывода: {n}","terminal.expandRest":"… ещё строк: {n}","terminal.failed":"Ошибка","terminal.noOutput":"Вывода нет","terminal.running":"Выполняется","terminal.sendInput":"(отправить ввод)","terminal.session":"Терминал {sessionId}","terminal.signal":"сигнал {signal}","todo.completed":"{done}/{total} выполнено","todo.progress.active":"{active} в работе","todo.progress.done":"{done} выполнено","todo.progress.pending":"{pending} в очереди","todo.rowTitle":"Обновить список задач","todo.title":"Задачи","tool.title.bash":"Bash","tool.title.code":"Код","tool.title.edit":"Правка","tool.title.generic":"Вызов инструмента","tool.title.glob":"Поиск по маске (Glob)","tool.title.grep":"Поиск текста (Grep)","tool.title.inspect":"Инспектировать","tool.title.pwsh":"Pwsh","tool.title.read":"Чтение","tool.title.removeCordis":"Удалить плагин Cordis","tool.title.runCordis":"Запустить плагин Cordis","tool.title.search":"Поиск","tool.title.stopCordis":"Остановить плагин Cordis","tool.title.webFetch":"Загрузка страницы","tool.title.webSearch":"Поиск в вебе","tool.title.write":"Запись","view.chat":"Чат","web.contentTruncated":"Содержимое обрезано","web.http":"HTTP","web.noResults":"Ничего не найдено","web.sourcesTruncated":"Список источников обрезан"},"cordis":{"a11y.defining":"Определение плагина","a11y.failed":"Определить не удалось","a11y.stopped":"Определение прервано","action.approve":"Разрешить","action.approveOnce":"Разрешить только эту версию","action.approvePlugin":"Разрешить будущие версии этого плагина","action.decline":"Отклонить","action.inspect":"Инспектировать","action.remove":"Удалить","action.retry":"Повторить","action.rollback":"Откатить","action.run":"Запустить","action.stop":"Остановить","body.clientCode":"Клиент","body.copied":"Скопировано","body.copy":"Копировать","body.hostCode":"Хост","body.output":"Результат","body.source":"Исходник плагина","panel.approvals.aria":"Подтверждения Cordis","panel.current":"Текущая: {packageId}","panel.empty":"Плагинов пока нет","panel.group.current":"Эта сессия","panel.group.others":"Другие сессии","panel.hint":"Управление запуском — в панели Cordis над настройками","panel.loading":"Чтение…","panel.next":"Следующая: {packageId}","panel.plugins.aria":"Плагины Cordis","panel.readFailed":"Не удалось прочитать список плагинов: {message}","panel.runningCount":"работает: {count}","panel.title":"Плагины Cordis","panel.trigger":"Плагин Cordis","panel.version":"Версия","purpose.missing":"(назначение не указано)","render.failedAbdicated":"Отрисовка в {slot} не удалась, вернули стандартный интерфейс:","render.failedHeld":"Отрисовка в {slot} не удалась:","row.defineTitle":"Зарегистрировать плагин Cordis","row.removeTitle":"Удалить плагин Cordis","row.runTitle":"Запустить плагин Cordis","row.stopTitle":"Остановить плагин Cordis","row.updateTitle":"Обновить плагин Cordis","run.removed":"Этого пакета больше нет","run.superseded":"Ниже есть более свежая карточка запуска","status.awaitingApproval":"Ждёт подтверждения","status.clientPending":"Клиент готов к активации","status.failed":"Запуск не удался","status.idle":"Готов","status.removed":"Удалён","status.running":"Работает","status.superseded":"Есть более свежий запуск"},"deliverables":{"produced.label":"Создано","produced.more":"+ {count} файлов","produced.moreOne":"+ 1 файл","produced.open":"Открыть {name}","produced.showInFolder":"Показать в папке"},"directory-browser":{"browser.cancel":"Отмена","browser.create":"Создать","browser.createIn":"Новая папка в «{name}»","browser.editPath":"Изменить путь","browser.folderName":"Имя папки","browser.home":"Домашняя папка","browser.loading":"Загрузка…","browser.newFolder":"Новая папка","browser.open":"Открыть","browser.showHidden":"Показывать скрытые файлы","browser.title":"Выбор рабочей папки","browser.truncated":"Слишком много папок; показано только начало.","browser.untitledFolder":"Без имени"},"dsh-auto-collapse":{"collapse":"Свернуть процесс","collapseSettings":"Свернуть настройки","customStatusPrompt":"Свой промпт статуса","expand":"Развернуть процесс","expandSettings":"Развернуть настройки","hint":"Если пусто, возвращается исходный промпт Deep diving...","overridden":"Переопределено","processed":"Обработано","resetDefault":"По умолчанию","statusPrompt":"Промпт статуса","think":"Рассуждения","unwritten":"Не сохранено"},"dsh-clinebot":{"settings.loading":"Загрузка настроек ClineBot…","settings.unavailable":"Настройки ClineBot недоступны (системный namespace не готов).","subtitle":"Подписка ClinePass ($9.99/мес) с проверенными и пользовательскими моделями.","title":"ClineBot"},"dsh-context":{"agents.billed":"{n} выставлено к оплате","agents.chip.count":"{n} агентов","agents.chip.running":"{n} запущено","agents.chip.tokens":"{n} токенов в контексте","agents.continuable":"продолжаемый","agents.legend.free":"свободное окно","agents.more":"Ещё {n} не показано","agents.oneshot":"одноразовый","agents.open":"нажмите, чтобы открыть →","agents.requests":"{n} запросов","agents.running":"выполняется","agents.self":"текущий","agents.solo":"Пока нет суб-агентов — когда агент делегирует работу через инструмент суб-агентов, сеть будет отображаться здесь","agents.sub":"Живой контекст этого агента и его подчиненных агентов · нажмите на узел, чтобы открыть его сессию","agents.title":"Сеть агентов","attach.close":"Закрыть","attach.image":"Изображение","attach.images":"Изображения","attach.loadFailed":"Не удалось загрузить · нажмите, чтобы повторить","attach.loading":"…","attach.open":"Открыть изображение полностью","attach.other":"Другой контент","attach.preview":"Превью изображения","attach.raw":"Сырой","attach.sent":"Отправлено","attach.token":"Токен","attach.tokensTip":"Расчетная стоимость токенов через официальное преобразование размера изображения DeepSeek (ограничение в 384 токена на изображение)","block.answer":"Ответ","block.content":"Контент","block.line":"1 строка","block.lines":"{n} строк","block.result":"Результат","block.summary":"Сводка","block.thinking":"Обоснование","brief.input":"В","brief.inputTip":"Что было введено после предыдущего ответа и перед этим запросом — обычно результаты предыдущего вызова инструмента; начало нового оборота не содержит ничего нового","brief.locate":"Показать в контекстном браузере","brief.more":"+{n}","brief.noInputs":"(ничего нового)","brief.reply":"Ответ","brief.replyTip":"Что модель вернула на этом шаге (текстовый ответ или вызовы инструментов) — результаты вызовов отображаются в строке In следующего бара","brief.turn":"Пользователь","brief.turnTip":"Сообщение пользователя, которое открыло этот ход — каждый шаг хода ссылается на него","browser.approx":"Некоторые удаленные сообщения этого шага превышают срок хранения — приведенное ниже восстановление является приблизительным","browser.deltaHint":"по сравнению с предыдущим ходом","browser.headerMetaOnly":"Эта среда не может загрузить заголовки по запросу; только оценка токенов","browser.items":"{n} элементов","browser.live":"В прямом эфире (Следующий запрос)","browser.liveNow":"В прямом эфире · Следующий запрос","browser.loadFailed":"Не удалось загрузить — нажмите, чтобы повторить","browser.loading":"Загрузка полного содержимого из более старой истории сеанса…","browser.missingLive":"… {n} предыдущих сообщений также являются частью контекста (за пределами предоставленного окна)","browser.noContent":"Полное содержимое находится за пределами загруженного окна сообщений (загрузите более старую историю в Чате для просмотра)","browser.noEpoch":"Содержание заголовка (Системное сообщение / Схемы инструментов) этого шага находится за пределами удержания","browser.noHeader":"Обслуживается устаревшей версией плагина: только оценка токенов, без содержимого","browser.noSystem":"В заголовке этого запроса не было системного промпта","browser.notInLog":"Этот элемент больше не находится в журнале сессии (возможно, он был удалён или очищен)","browser.preview":"Предварительный просмотр","browser.rowNoMatch":"Нет строк, соответствующих текущему фильтру","browser.search.assistant":"Фильтровать по ответам или звонкам…","browser.search.inject":"Фильтровать введённый контекст…","browser.search.tool":"Фильтровать по инструменту или аргументам…","browser.search.user":"Фильтровать по тексту сообщения…","browser.title":"Контекстный браузер","call.exit":"выход {n}","call.fail":"Не удалось","call.ok":"ОК","cat.assistant":"Сообщения ассистента","cat.inject":"Введённый контекст","cat.system":"Системное сообщение","cat.tool":"Результаты инструмента","cat.tools":"Схемы инструментов","cat.user":"Сообщения пользователя","cmd.close":"Закрыть","cmd.desc":"Просмотр текущего контекста макияжа, просмотр состава по шагам","detail.actual":"Фактический запрос {n}","detail.cache":"Кэш {n}%","detail.estTotal":"Примерно ≈ {n}","detail.lastStep":"Последний шаг","detail.output":"Вывод {n}","detail.step":"Поверните {t} · Шаг {s}","detail.turn":"Поверните {t} · {n} шагов","error":"Не удалось прочитать данные контекста:","error.retry":"Повторить","ev.compaction":"Контекст сжат (резюме заменено {n} сообщений)","ev.mode.plan.off":"Режим плана выключен","ev.mode.plan.on":"Режим планирования включён","ev.model":"Модель изменена: {a} → {b}","ev.prune":"Вывод инструмента обрезан","ev.skill":"Навык внедрён ({name})","events.at":"Поверните {t} · Шаг {s}","events.empty":"Событий контекста пока нет (компактизация, инъекции, переключения моделей отображаются здесь)","events.range":"Поверните {t} · Шаг {a}→{b}","events.rangeTo":"Поверните {a} · Шаг {as} → Поверните {b} · Шаг {bs}","events.title":"Контекстные события","files.chipTip":"{files} файлов · {ops} операций","files.deltaTip":"Совокупное изменение строк, оцененное по аргументам вызовов редактирования/записи: + добавлено / − удалено","files.empty":"Нет чтений, записей или поиска файлов в этом диапазоне","files.errs":"{n} не удалось","files.files":"{n} файлов","files.form.dir":"Каталог","files.form.image":"Изображение","files.form.text":"Файл","files.glyph.archive":"Архив","files.glyph.assets":"Активы","files.glyph.build":"Результат сборки","files.glyph.config":"Конфигурация","files.glyph.data":"Данные / манифест","files.glyph.database":"База данных","files.glyph.deps":"Зависимости","files.glyph.docker":"Docker","files.glyph.docs":"Документы","files.glyph.document":"Документ","files.glyph.font":"Шрифт","files.glyph.hidden":"Каталог метаданных","files.glyph.ignore":"Игнорировать правила","files.glyph.lang.c":"C","files.glyph.lang.cpp":"C++","files.glyph.lang.csharp":"C#","files.glyph.lang.dart":"Dart","files.glyph.lang.go":"Перейти","files.glyph.lang.html":"HTML","files.glyph.lang.java":"Java","files.glyph.lang.js":"JavaScript","files.glyph.lang.kotlin":"Kotlin","files.glyph.lang.lua":"Lua","files.glyph.lang.php":"PHP","files.glyph.lang.ruby":"Рубин","files.glyph.lang.rust":"Ржавчина","files.glyph.lang.scala":"Скала","files.glyph.lang.svelte":"Свелт","files.glyph.lang.swift":"Быстро","files.glyph.lang.ts":"TypeScript","files.glyph.lang.vue":"Вью","files.glyph.license":"Лицензия","files.glyph.lock":"Файл блокировки","files.glyph.log":"Войти","files.glyph.markdown":"Документ с разметкой","files.glyph.media":"Медиа","files.glyph.notebook":"Блокнот","files.glyph.python":"Питон","files.glyph.root":"Корневая папка рабочей области","files.glyph.scripts":"Скрипты","files.glyph.sheet":"Таблица","files.glyph.shell":"Оболочка","files.glyph.style":"Стили","files.glyph.tests":"Тесты","files.hits":"{n} попаданий","files.kind.all":"Все","files.kind.image":"Изображения","files.kind.read":"Читать","files.kind.search":"Искали","files.kind.write":"Написано","files.locate":"Показать эту операцию в Обозревателе контекста","files.noMatch":"Нет файлов, соответствующих текущим фильтрам","files.open":"Открыть на вашем устройстве","files.readEst":"Строк прочитано, оценка на основе аргумента limit","files.readTip":"Прочитайте строки {a}–{b}","files.scopeLatest":"До последнего · следует за выбором трендового графика","files.search":"Фильтровать по пути…","files.sort.count":"Самый активный","files.sort.latest":"Последние","files.sort.path":"По пути","files.sortTip":"Сортировать файлы по количеству операций (выбранного вида при активной метке вида), последней активности или пути","files.title":"Активность файла","footer":"Оценка: та же эвристика с фиксированной плотностью, что и встроенный tokenMeter в dsh (~4 символа ≈ 1 токен); «фактическое» — это использование, сообщаемое провайдером.","form.catalog":"Обновление каталога","form.context":"Контекстная инъекция","form.instructions":"Инструкции","form.notice":"Уведомление","form.recall":"Напомнить","form.relay":"Агентский ретранслятор","form.snapshot":"Снимок состояния","gran.delta":"Дельта","gran.modeHint":"Итого: суммарное значение; Дельта: изменение по сравнению с предыдущим запросом","gran.step":"Шаг","gran.total":"Всего","gran.turn":"Повернуть","jump.title":"Посмотреть этот шаг во вкладке Контекст","kind.compaction":"Компактный","kind.inject":"Внедрить","kind.mode":"Режим","kind.model":"Переключить","kind.prune":"Обрезать","loading":"Чтение журнала сессии…","node.calls":"Звонки","node.empty":"(пустой ответ)","node.failed":"Выполнение инструмента завершилось с ошибкой","node.nonText":"(сообщение без текста)","node.skillTag":"Навык · {name}","node.snapshot":"Снимок:","node.toolResult":"Результат инструмента","nodes.empty":"Нет видимых сообщений прямо сейчас","nodes.hint":"в настоящее время видимые модели, сначала новые","nodes.more":"… {n} предыдущих сообщений пропущено","nodes.title":"Сообщения","overview.compactReserve":"Резерв автоуплотнения: автоуплотнение срабатывает при {pct}% окна — эта область обычно сохраняется как запас, фактически не используется.","overview.estimate":"токены (примерно)","overview.free":"Бесплатное окно","overview.ofUsed":"из использованного контекста","overview.title":"Текущий контекст","overview.used":"использовано контекста","plugin.github":"GitHub","plugin.hint":"Лучший плагин контекста для DSH ⭐","plugin.name":"Плагин","plugin.settings":"Настройки","plugin.settingsOpen":"Открыть в Настройках","plugin.title":"Информация о плагине","rich.md":"Markdown","rich.md.copied":"Скопировано","rich.md.copy":"Копировать","rich.md.footnotes":"Сноски","rich.raw":"Сырьё","rich.toMd":"Просмотреть как Markdown","rich.toRaw":"Просмотреть исходный текст","settings.collapse":"Свернуть","settings.desc":"Настройки отображения для панели Context","settings.expand":"Развернуть","settings.fileSort":"Сортировка файлов по умолчанию","settings.gran":"Гранулярность трендов по умолчанию","settings.mode":"Отображение трендов по умолчанию","settings.readOnly":"Настройки доступны только для чтения в этой среде","settings.title":"Контекст","stats.cacheHit":"Кэш-попадания","stats.compactions":"Компактизации","stats.cost":"Расч. стоимость","stats.costHit":"попадание","stats.costMiss":"пропустить","stats.costOut":"Вывод","stats.costPriceHead":"Тарифы за 1 миллион токенов (пиковый | внепиковый по половине цены):","stats.costTip":"Примерная совокупная стоимость всей сессии по прайс-листу DeepSeek: входные данные разделены по попаданию/промаху кэша, выходные данные включают рассуждения; каждый запрос оценивается по пиковой ставке (01:00–04:00, 06:00–10:00 UTC) или по половинной ставке вне пикового времени в зависимости от времени запроса. Применяется к deepseek-v4-flash / deepseek-v4-pro на любом провайдере; цены зафиксированы, только для справки.","stats.hint":"За период сохранённой истории (аналогично графику истории)","stats.images":"Изображения","stats.injects":"Инъекции","stats.prunes":"Чернослив","stats.steps":"Шаги","stats.title":"Статистика контекста","stats.toolCalls":"Вызовы инструментов","stats.turns":"Переключается","tab":"Контекст","timing.callTimes":"Вызовов: {n}","timing.empty":"Данных о таймингах пока нет — они появятся в процессе беседы","timing.gen":"Генерация LLM","timing.hint":"Распределение времени активности за всю сессию","timing.other":"Накладные расходы","timing.title":"Статистика таймингов","timing.toolTimes":"Запусков: {n}","timing.tools":"Вызовы инструментов","timing.total":"Время активности","timing.ttft":"TTFT","tip.actual":"(фактическое {n})","tip.delta":"Дельта {n}","tip.step":"Повернуть {t} · Шаг {s}","tip.total":"Всего ≈ {n}","tip.turn":"Поверните {t} · {n} шагов","tip.turn1":"Шаг {t} · 1 действие","tokens.cacheHit":"Попадание в кэш","tokens.cacheRead":"Вход из кэша","tokens.cacheWrite":"Запись в кэш","tokens.hint":"Суммарное использование по данным провайдера","tokens.output":"Выход","tokens.outputNote":"вкл. рассуждения","tokens.title":"Статистика токенов","tokens.uncached":"Вход без кэша","tool.desc":"Описание","tool.jsonHide":"Свернуть","tool.jsonToggle":"Просмотреть сырой JSON","tool.noMatch":"Нет инструментов, соответствующих текущему фильтру","tool.params":"Параметры","tool.paramsEmpty":"(без параметров)","tool.plugin":"Регистрирующий плагин этого инструмента (для справки)","tool.search":"Фильтровать по названию, описанию или параметрам…","tool.sort.name":"По имени","tool.sort.size":"По размеру","tool.sortTip":"Сортировать инструменты по размеру токена (по умолчанию) или по названию","tool.unknown":"Неизвестный плагин","tool.unknownTitle":"Инструмент был зарегистрирован до загрузки контекстного плагина, или его плагин был выгружен, поэтому его провайдер не может быть определен","tools.more":"из {n}","tools.top":"Лучшие схемы инструментов:","trend.empty":"Отправьте сообщение, и состав контекста каждого запроса модели появится здесь","trend.hint":"Наведите курсор для просмотра деталей, ✂ обозначает уплотнение/удаление, Шаг/Ход переключает детализацию","trend.title":"История контекста"},"dsh-cost-meter":{"catalogUnavailable":"Каталог OpenRouter недоступен: ","chipRate":"тариф","chipUnknown":"тариф ?","field.currency":"Символ валюты","field.displayTimeZone":"Часовой пояс отображения","field.usdRate":"Курс к USD","flat":"фикс.","hint.currency":"Символ валюты в виджете (например $, ₽, €).","hint.displayTimeZone":"Часовой пояс IANA для расписания пиковых/ночных тарифов.","hint.usdRate":"Курс обмена: количество единиц валюты за 1 USD (например 80 для ₽).","modal.close":"Закрыть","modal.title":"Тарифы и стоимость моделей","modelNotFound":"Модель не найдена в каталоге OpenRouter. Задайте цены вручную в настройках или сопоставьте модель через modelMap.","modelsBreakdown":"Детализация по моделям","noPriceSpecified":"тариф не указан","noUsageYet":"Провайдер ещё не передал данные об использовании для этой сессии.","offPeak":"ночь","peak":"пик","rate.custom":"Пользовательский","rate.default":"По умолчанию","rate.input":"Вход: {price} / 1M токенов","rate.output":"Выход: {price} / 1M токенов","rate.unit":"/ 1M ток.","routeUnknown":"маршрут неизвестен","sessionTokens":"Токены сессии","settings.loading":"Загрузка настроек…","settings.save":"Сохранить","settings.saveFailed":"Не удалось сохранить настройки: ","settings.saved":"Сохранено","settings.saving":"Сохранение…","settings.unavailable":"Настройки недоступны (namespace ещё не зарегистрирован).","subtitle":"Стоимость сессии в шапке, тарифы токенов и детализация по моделям","table.model":"Модель","table.provider":"Провайдер","table.rate":"Тарифная ставка","table.total":"Итого","title":"Счётчик стоимости токенов","totalCost":"Общая стоимость"},"dsh-hooks":{"addHook":"+ Добавить hook","currentHooks":"Текущие хуки","fillRunOrChannel":"hook #{i}:укажите команду run или выберите канал уведомлений","hookTriggered":"срабатываний хука","noHooks":"Нет хуков, нажмите «Редактировать» для добавления","notifyWebhook":"Webhook уведомлений","routeUnavailable":"Не удаётся получить доступ к маршрутам /dsh-hooks/*: убедитесь, что плагин dsh-hooks установлен и DSH перезапущен."},"dsh-image-gen":{"f.apiKeyEnv":"Справка по API-ключу","f.apiKeyEnvHint":"Ссылка на учетные данные / переменная окружения, содержащая ключ API FAL. Префикс авторизации \"Key \" добавляется автоматически.","f.baseURL":"Базовый URL очереди","f.baseURLHint":"Базовый URL очереди FAL (queue.fal.run).","f.customBaseURL":"Пользовательский API: базовый URL","f.customBaseURLHint":"Корень API без завершающего слеша. Запрос отправляется на {base}/images/generations.","f.customKeyEnv":"Пользовательский API: ссылка на ключ","f.customKeyEnvHint":"Ссылка на учётные данные / переменная окружения с API-ключом. Пустое значение означает отсутствие заголовка авторизации для шлюзов, которым он не требуется.","f.customModel":"Пользовательский API: модель","f.customModelHint":"Идентификатор модели, отправленный в этот API, например, gpt-image-1.","f.customSize":"Пользовательский API: фиксированный размер","f.customSizeHint":"Оставьте пустым, и именованный размер будет переведён автоматически (square_hd → 1024x1024). Указывайте размер только для API, требующих конкретных размеров.","f.defaultFormat":"Формат по умолчанию","f.defaultFormatHint":"Используется, если вызов инструмента не содержит output_format.","f.defaultSize":"Размер изображения по умолчанию","f.defaultSizeHint":"Используется, когда вызов инструмента пропускает параметр image_size.","f.deliverAs":"Как изображение попадает в чат","f.deliverAsHint":"ссылка — результат представляет собой текст со ссылкой, и карта отображает изображение из неё; работает с любой моделью чата. изображение — результат содержит само изображение, которое текстовые модели чата не могут прочитать, поэтому для этого требуется dsh-vision-bridge или модель с поддержкой зрения.","f.inherit":"Наследовать (по умолчанию)","f.model":"Модель (FAL)","f.modelHint":"Идентификатор модели FAL, вызывается как {baseURL}/{model}. Используется, когда провайдер — fal.","f.outputDir":"Выходной каталог","f.outputDirHint":"Относительно рабочего каталога сессии; абсолютный путь используется как есть.","f.pollIntervalMs":"Интервал опроса (мс)","f.pollIntervalMsHint":"Интервал опроса статуса во время выполнения задачи.","f.provider":"Провайдер","f.providerHint":"fal — очередь FAL, настроенная ниже. custom — любой API, совместимый с OpenAI, настраивается далее.","f.timeoutMs":"Таймаут (мс)","f.timeoutMsHint":"Общее время ожидания генерации: отправка + опрос + загрузка.","p.apiKeyEnv":"Пример: FAL_API_KEY","p.baseURL":"Пример: https://queue.fal.run","p.customBaseURL":"Пример: https://api.openai.com/v1","p.customKeyEnv":"Пример: OPENAI_API_KEY","p.customModel":"Пример: gpt-image-1","p.customSize":"Пример: 1024x1024","p.model":"Пример: fal-ai/flux-2/klein/9b","p.outputDir":"Пример: сгенерированные/изображения","p.pollIntervalMs":"Пример: 2000","p.timeoutMs":"Пример: 180000","settings.collapse":"Свернуть","settings.credentialHint":"API-ключи находятся в разделе Учетные данные в указанном наборе ссылок (Настройки → Учетные данные).","settings.description":"Инструмент generate_image. Провайдер: очередь FAL или любой API изображений, совместимый с OpenAI.","settings.discard":"Отменить","settings.expand":"Развернуть","settings.invalidNumber":"Введите корректное число","settings.navLabel":"Генерация изображений","settings.overridden":"Переопределить","settings.readOnly":"Это развертывание доступно только для чтения: настройки нельзя изменить через графический интерфейс.","settings.reset":"Сбросить","settings.save":"Сохранить","settings.saveFailed":"Не удалось сохранить","settings.saving":"Сохранение…","settings.title":"Генерация изображений","settings.unavailable":"Обвязка еще не опубликовала настройки этого плагина. Если она только что перезапустилась, раздел появится сам через несколько секунд.","settings.unsaved":"Несохранённые изменения"},"dsh-kanban":{"archive.empty":"В архиве пусто.","archive.hint":"Карточки, отстоявшие свой срок в «Выполнено». Ничего не удалено: возвращённая карточка встаёт в ту же колонку, откуда ушла.","archive.restore":"Вернуть на доску","archive.since":"в архиве {ago}","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":"Простая доска","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":"снять с очереди","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":"Название колонки","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":"Новая задача","discard":"Отменить","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.boardToolEnabled":"Разрешить агенту двигать карточки","field.columnNames":"Свои названия колонок","field.cronEnabled":"Включить планировщик задач","field.defaultProjectRoot":"Корень проектов","field.giteaOwner":"Организация Gitea","field.giteaTokenRef":"Имя учётной записи","field.giteaUrl":"Адрес инстанса","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.worktreeIsolation":"Изоляция рабочих деревьев (worktree)","field.worktreeRoot":"Корневой каталог worktree","filter.all":"Все задачи","filter.assignee":"Исполнитель","filter.label":"Метка","filter.overdue":"Просроченные","filter.priority":"Приоритет","filter.search":"Поиск задач…","group.assignee":"По исполнителям","group.general":"Общее","group.gitea":"Gitea","group.limits":"Пределы колонок","group.nobody":"Без исполнителя","group.repo":"По репозиториям","group.sync":"Автоперемещение","hint.announceToAgent":"Автоматически отправлять агенту сообщения о перемещении карточек","hint.archiveAfterDays":"Считается с попадания карточки в «Выполнено». Ноль — оставлять всё на доске.","hint.boardToolEnabled":"Выключено, пока скилл воркфлоу запрещает этому CLI трогать канбан.","hint.columnNames":"Пары «идентификатор=Название» через запятую, например «backlog=Идеи, review=Проверка». Пусто — обычные названия.","hint.cronEnabled":"Запуск фоновых периодических проверок статусов задач","hint.defaultProjectRoot":"Где лежат рабочие копии проектов. Пусто — рабочая папка харнесса.","hint.giteaOwner":"Чьи репозитории смотрит доска. Пусто — определится сама, пока у токена ровно одна организация.","hint.giteaTokenRef":"ИМЯ учётной записи DSH, в которой лежит токен. Сам токен сюда не вводить.","hint.giteaUrl":"Например https://gitea.example.com. Пусто — импорт недоступен.","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":"План агента","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":"Поставить в очередь идущей сессии","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.unavailable":"Хост не знает пространство настроек dsh-kanban. Перезапустите веб-интерфейс после установки плагина.","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…","task.confirmPermission":"Подтвердить права","task.cron":"Расписание Cron","task.nextRun":"Следующий запуск: {date}","task.noRuns":"Запусков ещё не было","task.permissionConfirmed":"Права подтверждены","task.permissionGateWarning":"Требуется подтверждение повышенных прав ({permission})","task.progressDump":"Дамп прогресса (Handover)","task.runs":"История выполнений","time.day":"{n} дн","time.hour":"{n} ч","time.min":"{n} мин","time.now":"только что","title":"Канбан","view.analytics":"Аналитика","view.archive":"Архив","view.board":"Доска","view.calendar":"Календарь","view.gantt":"Диаграмма Ганта","view.list":"Список","view.table":"Таблица"},"dsh-lanmode":{"sub":"mDNS (dsh.local), полифилы Web API, TLS для микрофона и PWA","title":"Локальный и мобильный доступ (dsh-lanmode)"},"dsh-market":{"actWhy":"Почему не активен?","agentBusyInstall":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед установкой. Установка изменяет файлы плагина, поэтому работающий агент может завершиться с ошибкой в процессе.","agentBusyUpdate":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед обновлением. Обновления заменяют файлы плагина на месте, поэтому работающий агент может завершиться с ошибкой или смешать версии в процессе выполнения.","aiFix":"Починить с агентом","aiFixConservative":"Действуй осторожно: чини только явные ошибки из списка выше (падения при запуске, дубли записей, подтверждённые расхождения зависимостей). Предупреждения и записи к сведению (например, неподтверждённые диапазоны peer-зависимостей) трогай, только если они связаны с явной ошибкой. Не делай лишних обновлений и перестановок; объясняй каждое изменение и жди подтверждения.","aiFixCopied":"Промпт скопирован — вставьте его в новый диалог и отправьте, когда будете готовы","aiFixDetect":"Шаг 1 — сначала определитесь. Прежде чем что-либо трогать, убедитесь, что процесс, в котором вы работаете, ЭТОТ экземпляр DeepSeek Harness, к которому относится данный профиль (то есть текущая диагностируемая композиция — это та, в которой вы сейчас находитесь). Проверьте, указывает ли текущий каталог / $DSH_HOME / командная строка на этот профиль или работает ли процесс внутри deepseek-harness. Если не можете определить, считайте, что ответ «да» (безопасный выбор).","aiFixFail":"Буфер обмена недоступен — скопируйте диагностику ниже вручную","aiFixHint":"Передать диагностику новой сессии агента (скопировано в буфер; отправлять или нет — решаете вы)","aiFixIfSelf":"Если ДА — вы являетесь этим инструментом: никогда не изменяйте текущую конфигурацию, инструмент или основные пакеты на месте (не редактируйте cordis.patch.yml, не меняйте порядок/включайте/отключайте пакеты, не устанавливайте/удаляйте/обновляйте плагины, не переустанавливайте зависимости, не обновляйте/перезапускайте dsh). Три шага: 1) только анализ в режиме чтения, ничего не изменяйте; 2) создайте apply.sh/.bat (изменения для этого исправления) и rollback.sh/.bat (полностью отменяет его); оба идемпотентны — apply создает снимки только если их еще нет и никогда не перезаписывает существующий снимок (если он существует, значит apply уже выполнялся, так что откатитесь или подтвердите перед повторным запуском), а rollback восстанавливает из этого снимка, так что частично выполненный apply все еще можно откатить, а повторный rollback безопасен; 3) дайте мне запустить apply во внешнем терминале и вставьте stdout/stderr обратно вам. Укажите причину и ждите моего подтверждения на каждом шаге — никогда не запускайте это самостоятельно.","aiFixIntro":"Помоги починить проблемы с плагинами DeepSeek Harness (профиль: {0}). Диагностика показала:","aiFixScope":"Можно менять порядок в dsh.profile.bundles, включать и выключать плагины, править cordis.patch.yml. Учти: официальные бандлы трогать нельзя; прежде чем что-то менять, изложи план.","all":"Все","alreadyInstalled":"✓ Установлен","approveBuilds":"Разрешить сборочные скрипты и повторить","autoBackup":"Резервная копия раз в сутки (при открытии маркета)","backTop":"Наверх","backupDone":"Копия загружена","backupDownload":"Выгрузить копию","backupHint":"Включает список плагинов и настройки профиля, но не node_modules. Восстановление ставит плагины заново по списку.","backupImport":"Импортировать и посмотреть","backupLocal":"Локальный файл","backupWorking":"Выполняется…","brokenBundleBanner":"Эти плагины теперь имеют клиентский пакет, который не будет обрабатываться; страница может отображаться пустой после обновления — рекомендуется выполнить откат:","buildsSkipped":"Этому плагину нужны сборочные скрипты; по умолчанию они заблокированы ради безопасности. Разрешите их и переустановите:","busyWait":"Уже выполняется другая операция — дождитесь её окончания (установка, обновление и удаление идут по одной)","cancel":"Отмена","cancelOp":"Отменить","cancelled":"Отменено","cancelling":"Отмена…","catConflict":"Конфликты","catDeps":"Зависимости","catInfo":"Информация","catOrder":"Порядок","catRisk":"Риск","catWarn":"Предупреждение","catsLess":"Свернуть","catsMore":"Ещё","checkBundles":"Порядок загрузки плагинов","checkBundlesEmpty":"Слои плагинов не объявлены","checkCommunity":"сообщество","checkDir":"каталог","checkDuplicates":"Повторяющиеся записи плагинов","checkDuplicatesEmpty":"Повторов нет","checkEntries":"записей (идентификаторы загрузчика)","checkErrors":"Ошибки","checkErrorsEmpty":"Ошибок нет","checkHoisted":"поднят","checkIssues":"Найдены проблемы","checkLoadFail":"Не удалось загрузить диагностику: ","checkLoading":"Анализ профиля…","checkMultiEmpty":"Пакетов ядра в нескольких версиях нет","checkMultiVersion":"Пакеты ядра в нескольких версиях","checkOfficial":"официальный","checkOrderTip":"порядок загрузки бандла сообщества конфликтует с объявленными правилами before/after","checkOrphans":"Неверные записи конфига","checkOrphansEmpty":"Неверных записей нет","checkOverridden":"переопределяет","checkOverrides":"Переопределения","checkOverridesEmpty":"Переопределений нет","checkPatch":"файл патча","checkPeerEmpty":"Расхождений версий зависимостей нет","checkPeerInfo":"{0} записей к сведению (не подтверждено)","checkPeerInfoTier":"Информация о зависимостях","checkPeerInfoTierEmpty":"Нет записей информационных зависимостей","checkPeerMismatches":"Расхождения версий зависимостей","checkPeerOverview":"расхождений: {0} · к сведению: {1}","checkPeerRisk":"Риски зависимостей","checkPeerRiskEmpty":"Нет несоответствий уровней риска зависимостей","checkPeerSatisfied":"Удовлетворены зависимости","checkPeerSatisfiedEmpty":"Нет удовлетворяющих записей зависимостей","checkPeerWarning":"Предупреждения о зависимостях","checkPeerWarningEmpty":"Нет несоответствий зависимостей на уровне предупреждений","checkProfile":"профиль","checkRange":"объявленный диапазон","checkRefresh":"Проверить заново","checkResolved":"разрешённая версия","checkSatisfied":"удовлетворено","checkSource":"источник","checkUnknown":"неизвестно","checkUnsatisfied":"не удовлетворено","checkWarnings":"Предупреждения","checkWarningsEmpty":"Предупреждений нет","cmdDetails":"Команда установки","comments":"Комментарии","commentsError":"Не удалось загрузить комментарии. Проверьте подключение и попробуйте снова.","commentsLoading":"Загрузка комментариев…","commentsLoginHint":"Вход в аккаунт откроется в новой вкладке. После авторизации на GitHub вернитесь сюда — комментарии обновятся.","commentsNote":"Комментарии поступают из GitHub Discussions. Открытие этого подключается к giscus.app и GitHub; для публикации требуется аккаунт GitHub.","commentsOnGitHub":"Прочитайте обсуждение на GitHub","commentsRetry":"Попробуйте снова","commentsTitle":"Комментарии","compatRiskBanner":"Обнаружен риск несовместимости — откройте Диагностику перед перезапуском или откатите эту операцию.","compatRiskBannerNoRollback":"Обнаружен риск несовместимости — откройте Диагностику перед перезапуском.","confirm":"Подтвердить","confirmInstall":"Подтвердить установку","confirmRemove":"Подтверждаете?","confirmTitle":"Установка","confirmWarn":"Плагины — сторонний код сообщества. Устанавливая, вы доверяете этому источнику; сборочные скрипты по умолчанию заблокированы.","conflictBody":"Конфликт с установленным плагином — остаться может только один:","conflictDeclined":"Вы сохранили установленные плагины; этот не был установлен","conflictDetails":"Детали","conflictKeep":"Оставить то, что у меня есть","conflictKeepNote":"Оставить этот","conflictOutcomeInstall":"установить","conflictOutcomeKeep":"оставить","conflictOutcomeRemove":"удалить","conflictOutcomeSkip":"пропустить","conflictReplaceFailed":"Замена не завершена. Перечисленные ниже плагины были удалены и не восстановлены — проверьте их:","conflictReplacing":"Замена…","conflictReverted":"Отменено автоматически; ничего не было изменено","conflictSwap":"Переключиться на этот","conflictSwapNote":"Настройки удалённых плагинов сохраняются, чтобы вы могли установить их позже","conflictTitle":"Невозможно установить: конфликт с установленным плагином","conflictWhy":"cordis отклоняет дерево плагинов, содержащее дублирующиеся идентификаторы записей; сохранение этого плагина предотвратит запуск DeepSeek Harness.","crashDetails":"Подробности ошибки","crashHint":"Произошла ошибка при отображении маркета. Ваши плагины не затронуты, конфигурация сохранена.\nОбычно помогает перезагрузка страницы. Если ошибка повторяется, экспортируйте журнал и прикрепите его к issue — в нём указано место сбоя.\nТакже проверьте: если в браузере включён автоматический перевод страницы, отключите его и перезагрузите страницу.","crashReload":"Перезагрузить","crashTitle":"Не удалось отобразить маркет плагинов","credsWarning":"Внимание: в копию попадают настройки профиля и файлы, где могут лежать секреты (config.toml, .env и подобные). Локальная выгрузка ничего не вырезает, поэтому выгружайте на WebDAV, которому доверяете.","deprecatedBadge":"Устарел","deprecatedWarn":"Каталог помечает этот плагин как устаревший; новым пользователям ставить его не советуют.","descCollapse":"Показать меньше","descExpand":"Показать больше","diagExplain":"Что это","diagExplainText":"Эта страница ищет плагины, конфликтующие друг с другом, несовпадения версий зависимостей и неверный порядок загрузки. Термины:","diagOkAll":"Всё в порядке: конфликтов, проблем с зависимостями и порядком не найдено","diagTermBundle":"бандл — один пакет плагина, применяется по порядку","diagTermEntry":"запись — то, что плагин добавляет в работающую композицию","diagTermOrder":"порядок загрузки — очерёдность активации; более поздний может перекрыть более ранний","diagTermOrphan":"неверная запись — конфиг ссылается на то, чего нет","diagTermPeer":"peer-зависимость — пакет, который плагин ждёт от хоста","diagTermShadow":"перекрытие — старая копия из плагина закрывает более новую хостовую","disable":"Выключить","disabledState":"Выключен","dismiss":"Скрыть","dismissNotice":"Скрыть это уведомление","duplicateNames":"Плагины с одинаковыми именами (к сведению, это не конфликт)","empty":"Подходящих плагинов нет","enable":"Включить","envFix":"Настроить автоматически","envFixFail":"Автоматическая настройка не удалась — выгрузите журнал и пришлите нам файл","envFixing":"Настройка…","envMissing":"Перед установкой плагинов нужен один небольшой компонент","exportLog":"Выгрузить журнал","exportLogFail":"Не удалось выгрузить журнал","exportedLog":"Журнал выгружен: dsh-market-log.txt — приложите его к обращению","exportingLog":"Выгрузка…","favoriteAdd":"Добавить в избранное","favoriteBusy":"Выполняется операция с плагином. Изменение добавлено в очередь — подождите немного.","favoriteFailed":"Не удалось обновить избранное. Попробуйте снова.","favoriteRemove":"Удалить из избранного","favoriteUnavailable":"Избранное недоступно. Обновите страницу или перезапустите dsh web.","favoritesClearStale":"Удалить устаревшее избранное","favoritesClearingStale":"Удаление…","favoritesEmpty":"В избранном пока ничего нет. Добавляйте плагины в разделах Обзор или Темы.","favoritesPluginsSection":"Плагины ({0})","favoritesResultCount":"Избранное: {0}","favoritesStaleEmpty":"Сохранённые записи больше не найдены в каталоге.","favoritesStaleNote":"Записей из избранного нет в каталоге: {0}","favoritesThemesSection":"Темы ({0})","filter":"Фильтр","filterDir":"Порядок","filterHost":"Версия хоста","filterSort":"Поле сортировки","filterTime":"Вышло за","firstPage":"В начало","gist":"GitHub Gist","gistCreated":"Выгружено:","gistErrAuth":"GitHub не авторизовал: токен неверный или истёк, либо gh CLI не залогинен","gistErrInvalid":"Содержимое Gist повреждено или формат копии не поддерживается","gistErrNetwork":"GitHub недоступен — проверьте сеть или прокси","gistErrNoId":"Для обновления нужен идентификатор Gist — заполните поле или переключитесь на «Создать»","gistErrNotFound":"Gist не найден — проверьте идентификатор или ссылку","gistErrRateLimit":"Достигнут лимит GitHub, либо у токена нет права gist","gistErrTimeout":"GitHub не ответил вовремя — проверьте сеть и повторите","gistExport":"Выгрузить в Gist…","gistExportDone":"Выгружено в Gist","gistExportGo":"Выгрузить","gistExportHint":"Отмечено всё — полная копия вместе с настройками; если снять любую галочку, выгрузятся только выбранные плагины, а настройки — по отдельному флажку.","gistExportSelect":"Выберите плагины для выгрузки","gistId":"Идентификатор или ссылка на Gist (при выгрузке оставьте пустым, чтобы создать новый приватный)","gistImport":"Загрузить из Gist","gistIncludeConfig":"Включить файлы настроек (в них могут быть секреты)","gistModeCreate":"Создать новый приватный Gist","gistModeUpdate":"Обновить Gist из поля","gistNoPlugins":"В этом профиле нечего выгружать","gistNote":"В отличие от локальной выгрузки (архив на этой машине), Gist нужен для переноса между машинами: выгрузите в приватный Gist и загрузите на другом компьютере под тем же аккаунтом. Токен живёт только в памяти этой вкладки и никогда не пишется в браузерное хранилище; если залогинен gh CLI или задан DSH_GITHUB_TOKEN, вводить его не нужно. Gist приватный, до 1 МБ на файл.","gistSelectAll":"Выбрать все","gistSelectNone":"Снять выбор","gistSpecLocal":"локально","gistSrcEnv":"переменная DSH_GITHUB_TOKEN","gistSrcGh":"gh CLI","gistSrcToken":"введён вручную","gistToken":"Токен GitHub (только в памяти вкладки — после обновления страницы введите заново; оставьте пустым, чтобы использовать серверный DSH_GITHUB_TOKEN или залогиненный gh CLI)","gistVerify":"Проверить связь","gistVerifySource":"Проверено — источник токена: {0}","goDiagnose":"Открыть диагностику","gotIt":"Понятно","groupAdd":"Добавить плагин","groupAddEmpty":"Все установленные плагины уже в этой группе","groupAddTheme":"Добавить тему","groupAssign":"Назначить","groupConfirmDelete":"Удалить группу?","groupCreate":"Создать","groupDelete":"Удалить группу","groupEmpty":"Пока пусто","groupMixed":"Включена частично","groupNamePh":"Название группы","groupNew":"Новая группа","groupRemove":"Убрать","groupRename":"Переименовать","hostAll":"Показать все","hostCompatible":"Совместимо с текущим DSH {0}","hostDependencyMore":"ещё находок пропущено: {0}","hostDependencyWarning":"Плагин перечисляет в зависимостях известные общие пакеты хоста DSH. Это может перекрыть хостовую версию; проверка смотрит только манифест и не подтверждает, что в рантайме появился дубль:","hostDetecting":"Определение версии хоста…","hostFilterActive":"Фильтр для DSH {0}; не объявленные плагины остаются видимыми","hostFilterLoading":"Проверка требований хоста {0}/{1}; не объявленные плагины остаются видимыми","hostIncompatibleAnyway":"Всё равно обновить","hostIncompatibleBody":"Плагин {plugin} требует DSH версии {requirement}, а на этом сервере запущен {host}. Установка, скорее всего, нарушит работу плагина, и единственным выходом будет ручной откат версии.\nНичего не было изменено — плагин остаётся на текущей версии.\nЕсли вы уверены, что номер версии определён неверно, вы можете продолжить обновление.","hostIncompatibleKeep":"Оставить текущую версию","hostIncompatibleTitle":"Для этого релиза требуется более новая версия DSH","hostIncompatibleUnknown":"неизвестная версия","hostRequirement":"DSH {0}","hostRequirementLoading":"Чтение требований хоста…","hostRequirementUnavailable":"Требования к хосту неизвестны","hostRequirementUndeclared":"Требования к хосту не объявлены","hostUnknown":"Версия хоста неизвестна","hotBanner":"плагины готовы — обновите страницу, чтобы ими пользоваться","ignoreAllUpdateNotices":"Игнорировать все при этом запуске","ignoreUpdateNotice":"Игнорировать при этом запуске","install":"Установить","installFail":"Установить не удалось","installReplacement":"Установить замену","installedBadge":"✓ Установлен","installedEmpty":"Плагинов сообщества пока нет — загляните во вкладку «Обзор»","installing":"Установка…","lastPage":"В конец","lightboxClose":"Закрыть предпросмотр","lightboxNext":"Следующий","lightboxPrev":"Предыдущий","linkedDev":"подключён как разработка","loadFail":"Не удалось загрузить каталог плагинов, попробуйте позже","loadRetry":"Повторить","loading":"Загрузка каталога…","localOnly":"Адрес WebDAV и учётные данные остаются только в этом браузере.","marketNoToggle":"Сам маркет выключить нельзя","marketUpdate":"Доступно обновление маркета — обновить","migrateContinue":"Подтвердить источник npm","migrateCurrentSource":"Текущий источник","migrateDescription":"Это изменит источник установки плагина, а не только его версию.","migrateFail":"Сбой миграции источника","migrateNpm":"Использовать версию из npm","migrateTargetSource":"Новый источник npm","migrateTitle":"Использовать версию из npm?","migrateWarning":"Пакет npm может поддерживаться другим издателем. Продолжайте, только если доверяете этому сопоставлению каталога.","nav":"Маркет плагинов","nextPage":"Дальше","noGroups":"Групп пока нет — создайте","notInstalled":"Не установлен","noteAdd":"Заметка","noteEdit":"Редактировать заметку","noteMine":"Моя заметка","notePlaceholder":"Опишите это своими словами. Это заменит описание автора.","noteSave":"Сохранить","noteSeeMine":"Вернуться к моей заметке","noteSeeTheirs":"Показать описание автора","noteTheirs":"Оригинал","notesCommits":"Коммиты","notesCommitsRecent":"Последние коммиты (могут не совпадать с установленной версией — только для справки)","notesLink":"Что изменилось","notesLoadFail":"Обновления сейчас недоступны — попробуйте позже.","notesNone":"Этот плагин не публикует заметки об обновлениях.","notesNpm":"Время публикации версии","notesRelease":"Заметки о выпуске","opBlockedCard":"Невозможно установить · подробности","opClear":"Очистить выполненные","opClose":"Свернуть","opDequeue":"Удалить из очереди","opDone":"Готово","opDoneRefresh":"Установлено · обновите страницу для применения","opEmpty":"Нет операций в процессе выполнения","opEmptyHint":"Здесь отображается прогресс установки, обновления и удаления","opInstalling":"Установка","opKind_install":"Установить","opKind_uninstall":"Удалить","opKind_update":"Обновить","opLeaveHint":"Вы можете покинуть эту страницу; вы получите уведомление, когда процесс завершится","opNeedsChoice":"Не удалось установить · откат выполнен автоматически, ничего не изменилось","opNeedsYou":"нужен вам","opQueued":"В очереди","opQueuedAhead":"впереди:","opRetry":"Повторить","opRunning":"Работает","opTitle":"Задачи","orderAlreadyOptimal":"Текущий порядок уже удовлетворяет всем правилам и зависимостям — переставлять нечего","orderApplied":"✓ Применено — перезапустите, чтобы вступило в силу","orderApply":"Применить порядок","orderAutoSort":"Отсортировать автоматически","orderConflicts":"конфликты before/after в текущем порядке","orderDiffHint":"Этот порядок изменит композицию: переопределений {0}, потерянных записей {1}, дублей {2}","orderDown":"↓","orderDrag":"Перетащите, чтобы изменить порядок","orderDragHint":"Тяните ⠿, чтобы переставить; «Применить порядок» сохранит","orderReset":"Сбросить черновик","orderSection":"Порядок загрузки","orderSuggestApply":"Применить предложенный порядок","orderSuggestHint":"Предложенный порядок (отсортирован по правилам before/after):","orderTrialFail":"Статическая проверка композиции не прошла: {0}","orderUp":"↑","orphanBundle":"⚠️ Следующий запуск завершится ошибкой: профиль объявляет эти пакеты, но они не установлены. Переустановите их или удалите из dsh.profile.bundles в файле package.json профиля:","orphanIdRequired":"нет идентификатора","orphanInsertNotArray":"неверный формат","orphanInsertTargetMissing":"цель не найдена","orphanInsertTargetNotGroup":"цель не является группой","orphanNameMismatch":"имя не совпадает","orphanPatchTargetMissing":"цель не найдена","orphanReasonOther":"другое","packagesDone":"обработано пакетов: {0}","pageInfo":"Страница {0} из {1}","partialNote":"Отменено — часть изменений уже применена","patchDisabled":"Выключен патчем","patchForced":"Включён патчем","peerInfoUnverified":"непроверенный","peerRiskAboveMax":"выше явного максимума","peerRiskBelowMin":"ниже заявленного минимума","peerWarnAboveMax":"выше объявленной верхней границы","peerWarnOptional":"необязательный участник","perPage":"На странице","phaseBuilding":"Сборочные скрипты","phaseDownloading":"Загрузка","phaseLinking":"Связывание","phaseResolving":"Разрешение зависимостей","presetApplied":"Применено — перезапустите, чтобы применить","presetApply":"Применить","presetBundleCount":"{0} наборов","presetDelete":"Удалить","presetDeleted":"Пресет удалён","presetDisable":"отключить плагины {0}","presetEmpty":"Нет сохранённых пресетов","presetEnable":"включить плагины {0}","presetFail":"Не удалось выполнить предустановленную операцию:","presetHint":"Сохраните текущий порядок пакетов и список отключенных как пресет и переключайтесь в любое время; применение запускает проверку перед началом пробного периода и сначала создает снимок.","presetListFail":"Не удалось загрузить пресеты:","presetName":"Название пресета","presetNameEmpty":"Введите имя предустановки","presetNoop":"нет изменений","presetPreview":"Предпросмотр","presetPreviewFail":"Не удалось выполнить предварительный просмотр:","presetPreviewTitle":"Применение этого пресета приведёт к:","presetReorder":"переупорядочить {0} наборы","presetSave":"Сохранить текущее состояние","presetSaved":"Пресет сохранён","presetSaving":"Сохранение…","presetSection":"Пресеты плагинов","prevPage":"Назад","progressHint":"Первая установка скачивает и разрешает зависимости — крупные плагины занимают 1–3 минуты","published":"выпущен","readme":"README","reconciledNote":"Удалено, но pnpm сообщил об ошибке при завершении (обычно это заблокированный файл). Профиль уже согласован — повторная попытка не требуется.","refresh":"Обновить","refreshBanner":"изменения применены — обновите страницу, чтобы их увидеть","replacementHint":"Каталог предлагает","repoLink":"Посмотреть репозиторий на GitHub","restartBanner":"изменения внесены — перезапустите DeepSeek Harness","restartFail":"Перезапустить не удалось","restartHint":"Как перезапустить: остановите текущий процесс dsh и запустите его снова (например, dsh web)","restartHintDebugged":"Процесс DSH запущен под отладчиком. Перезапустите его из IDE или терминала — магазин не может принудительно завершить отлаживаемый хост из интерфейса.","restartHintSupervised":"Этот процесс является собственным сервисным процессом {0}, поэтому перезапуски относятся к нему — перезапуск отсюда завершит процесс передачи вместе с cgroup, и сервис не восстановится. Используйте systemctl restart &lt;ваш юнит&gt;. Если ваш юнит может пережить самостоятельный перезапуск (KillMode=process), включите параметр \"Разрешить перезапуск\" в настройках этого плагина.","restartNow":"Перезапустить","restartTimeout":"Не дождались запуска DeepSeek Harness","restarting":"Перезапуск…","restore":"Восстановить","restoreBootError":"Не удается загрузиться после восстановления:","restoreConfirm":"Восстановление перезапишет настройки этого профиля и переустановит плагины. Продолжить?","restoreContinue":"Продолжить обновление","restoreDone":"Восстановление завершено — перезапустите DeepSeek Harness","restoreFail":"Не удалось восстановить","restoreHint":"Это удалит локальную версию, переустановит версию из каталога и сохранит проверку обновлений. Это действие нельзя отменить — подтвердите ещё раз.","restoreMissing":"Плагинов из копии не установлено: {0}","restoreNameOnlyHint":"В локальной копии не указан исходный репозиторий, поэтому сопоставление выполнено только по имени пакета. Убедитесь, что автор и репозиторий ниже соответствуют ожидаемым. Это заменит локальную версию и не может быть отменено.","restoreNoCatalog":"Этот плагин отсутствует в курируемом каталоге, поэтому его нельзя восстановить. Удалите локальную копию или продолжайте разрабатывать её локально.","restoreNoCatalogTitle":"Восстановление невозможно","restoreNoMatch":"Плагин с таким именем есть в каталоге, но он не соответствует вашему локальному репозиторию. Удалите локальную копию или продолжите локальную разработку.","restoreOnline":"Использовать онлайн-версию","restorePartial":"Восстановление продолжилось, но эти плагины установить не удалось:","restorePreviewDone":"Копия загружена. Проверьте вкладку «Установленные» и запускайте восстановление.","restoreProceed":"Подтвердить восстановление","restoreStart":"Начать восстановление","restoreUnportable":"указывает на абсолютный путь с другой машины, который здесь не существует — перенаправьте его локально или переустановите плагин","rollbackNow":"Откатить","rollbackUnavailable":"Автоматический откат недоступен, так как не удалось проверить точный исходный источник.","rollingBack":"Откат изменений…","searchFavoritesPh":"Поиск в избранном…","searchPh":"Поиск плагинов: уведомления, терминал, память…","setCardDesc":"Версия маркета, обновление и удаление.","setChannel":"Канал обновлений","setChannelBeta":"Бета","setChannelBetaHint":"Ранний доступ к непроверенным версиям. Влияет только на рынок плагинов.","setChannelDev":"Разработка","setChannelDevHint":"Непроверенные сборки из ветки разработки. Не рекомендуются для общего использования.","setChannelStable":"Стабильный","setChannelStableHint":"Только выпущенные версии.","setChannelSwitch":"Переключиться на","setChannelSwitchHint":"Эта версия ниже установленной.","setGithubProxy":"Ускорение GitHub","setGithubProxyAuto":"Вернуть автовыбор","setGithubProxyAutoHint":"Автоматически выбирает рабочий маршрут и переключается только при сбое.","setGithubProxyCustom":"Пользовательский","setGithubProxyCustomHint":"Сначала пробует ваш маршрут, затем переключается на GitHub напрямую.","setGithubProxyEdit":"Изменить","setGithubProxyInput":"Префикс HTTPS-ускорения","setGithubProxyManagedHint":"Управляется переменной DSHM_GITHUB_PROXY и не может быть изменено здесь.","setGithubProxySave":"Сохранить","setRegion":"Скачать регион","setRegionAuto":"Выбрано на основе проверки сети. Можете изменить в любое время.","setRegionChina":"Китай, материковая часть","setRegionChinaHint":"Быстрее в материковом Китае. Изменяет маршрут загрузки, не источник.","setRegionGlobal":"Глобальный","setRegionGlobalHint":"Загрузки напрямую из npm и GitHub.","setSelfCancel":"Отмена","setSelfConfirm":"Удалить маркет плагинов? Поставить его заново можно будет только из командной строки.","setSelfFailed":"Операция не удалась","setSelfPurge":"Заодно стереть данные маркета","setSelfPurgeOff":"Данные маркета сохранятся. Учтите: плагины, которые он выключил, останутся выключенными, а интерфейса, чтобы вернуть их, после удаления не будет.","setSelfPurgeOn":"Будут удалены: список выключенных плагинов, свои группы и строки выключения, которые маркет записал в патч профиля, — выключенные им плагины снова заработают. Паролей и токенов это не касается: маркет их на диск не пишет.","setSelfRemove":"Удалить маркет плагинов","setSelfRemoveConfirm":"Удалить","setSelfRemoveHint":"Удаляет маркет из этого профиля. Остальные плагины не трогаются.","setSelfRemoved":"Удалён","setSelfRemovedHint":"Перезапустите DeepSeek Harness, чтобы завершить.","setSelfRestartAfter":"Перезапустить DeepSeek Harness сразу после удаления","setSelfRestartingHint":"Перезапуск DeepSeek Harness…","setSelfUpToDate":"Обновлений нет","setSelfUpToDateHint":"Актуально, обновление не требуется","setSelfUpdate":"Обновить","setSelfUpdateHint":"Обновление скачает новую версию; она заработает после перезапуска.","setSelfUpdateReady":"Доступна новая версия:","setSelfUpdatedHint":"Скачано. Перезапустите DeepSeek Harness, чтобы обновление вступило в силу: страница обновляется сразу, серверная половина — нет.","setSelfWorking":"Удаление…","shadowNameBanner":"Эта операция оставила одно имя плагина, определенное в двух слоях; после перезапуска загрузится только один:","snapCreate":"Создать снимок","snapCreateFail":"Не удалось создать снимок:","snapCreated":"Снимок создан","snapCreating":"Создание…","snapDelete":"Удалить","snapDeleteConfirm":"Подтвердить удаление","snapDeleteConfirmText":"Этот снимок нельзя будет восстановить после удаления.","snapDeleteFail":"Не удалось удалить снимок:","snapDeleted":"Снимок удалён","snapDeleting":"Удаление…","snapEmpty":"Снимков пока нет","snapFiles":"файлы","snapHint":"Снимки создаются автоматически перед применением изменений; вы также можете создать их вручную и откатиться в любой момент.","snapListFail":"Не удалось загрузить снимки:","snapRestore":"Восстановить","snapRestoreConfirm":"Подтвердите восстановление","snapRestoreConfirmText":"Восстановление перезаписывает текущий package.json профиля и конфигурацию из снимка; это действие нельзя отменить (создайте новый снимок, если не уверены).","snapRestoreFail":"Не удалось восстановить:","snapRestored":"Восстановлено — перезапустите для применения","snapRestoring":"Восстановление…","snapSection":"Снимки & Откат","sortAdded":"Дата выпуска","sortAsc":"По возрастанию","sortDesc":"По убыванию","sortDownloads":"npm загрузки (30д)","sortNewest":"Сначала новые","sortOldest":"Сначала старые","sortStars":"Звёзды","stateBroken":"Установлен, но не прошёл проверку","stateDisabled":"Выключен","stateInert":"Установлен, но не является плагином слоя профиля","stateLive":"Работает (загружен на лету)","stateRestart":"Установлен — перезапустите, чтобы применить","submitPlugin":"Хотите, чтобы ваш плагин был добавлен в список?","subtitle":"Плагины сообщества для DeepSeek Harness","switchOnLabel":"Включено","tabAdvanced":"Дополнительно","tabBackup":"Копия и восстановление","tabDiagnostics":"Диагностика","tabDiscover":"Обзор","tabFavorites":"Избранное","tabGroups":"Группы","tabInstalled":"Установленные","tabList":"Список","tabThemes":"Темы","terminalWarn":"Похоже, это плагин для терминала: в веб-профиле он может ничего не делать или даже сломать запуск DeepSeek Harness. Прочитайте его README и ставьте в тот профиль, для которого он написан.","themeActive":"Активна","themeApply":"Применить","themeDeactivate":"Отключить","themeEmpty":"Других тем в каталоге пока нет — следите за обновлениями","themeExitFullscreen":"Выйти из полноэкранного режима","themeFullscreen":"Просмотр в полноэкранном режиме","themePreview":"Предпросмотр","themePreviewCount":"{0} предпросмотры","themePreviewLoading":"Поиск предварительного просмотра…","themePreviewMissing":"Предпросмотр недоступен","themeResultCount":"{0} темы","timeAll":"Всё время","timeDay":"Сутки","timeMonth":"30 дней","timeQuarter":"90 дней","timeWeek":"7 дней","timeYear":"Год","toastReady":"установлен и работает","toastTheme":"теперь активна. Переключить можно в «Настройки → Маркет плагинов → Темы»","toastToggledOff":"теперь выключено — перестало работать сразу","toastToggledOn":"включён","toggleFail":"Переключить не удалось","ungrouped":"Без группы","uninstall":"Удалить","uninstallConfirmDesc":"Плагин будет удалён из текущего профиля.","uninstalling":"Удаление…","upToDate":"Обновлений нет","update":"Обновить","updateAll":"Обновить все","updateFail":"Обновить не удалось","updateNoticeIgnored":"Напоминание скрыто для текущего сеанса","updateNow":"Обновить сейчас","updated":"✓ Обновлён — перезапустите, чтобы применить","updatedLive":"✓ Обновлён — работает","updating":"Обновление…","versionHint":"Версия маркета плагинов — указывайте её при обращении","viewReplacement":"Посмотреть замену","viewSource":"Исходник","webdav":"WebDAV","webdavNote":"Адрес WebDAV и имя пользователя остаются только в этом браузере; пароль хранится на сервере и вводится заново каждую сессию.","webdavPassword":"Пароль (необязательно)","webdavPreset":"Готовая настройка провайдера","webdavRestore":"Восстановить с WebDAV","webdavUpload":"Выгрузить копию","webdavUrl":"Адрес файла копии","webdavUser":"Имя пользователя (необязательно)"},"dsh-moa":{"addCandidate":"Добавить слот параллельной модели","aggTempHint":"Рекомендуется 0.2 - 0.4 для строгой проверки и фактологического синтеза.","aggregatorDesc":"Оценивает предложения кандидатов, исправляет галлюцинации и формирует итоговое единое решение.","aggregatorTitle":"Модель-судья / Агрегатор (проверяет и синтезирует)","cancel":"Отмена","candidate":"Кандидат","clear":"Очистить","confirmDeletePreset":"Вы уверены, что хотите удалить пресет","create":"Создать","createNewPreset":"Создать новый пресет...","defaultPreset":"Пресет по умолчанию (используется для /moa без аргументов)","delete":"Удалить","deletePreset":"Удалить пресет","description":"Выполнение задач с несколькими параллельными моделями-советниками и синтезирующей моделью-судьёй","isDefault":"по умолчанию","loading":"Сохранение…","makeDefault":"Сделать по умолчанию","makeDefaultHint":"Использовать этот пресет для /moa, когда аргумент пресета не указан","modelsFound":"Найдено","newPresetPlaceholder":"Имя нового пресета (например, fast-audit)","noModelsMatch":"Моделей по запросу не найдено.","of":"из","parallelCount":"Параллельные воркеры","presetSelectLabel":"Активный пресет для настройки:","proposersDesc":"Параллельно генерируют независимые варианты ответов для предоставления различных точек зрения.","proposersTitle":"Модели-кандидаты (Советники)","refTempHint":"Рекомендуется 0.6 - 0.8 для генерации разнообразных творческих гипотез.","refTempLabel":"Температура кандидатов (разнообразие решений):","remove":"Удалить","retry":"Повторить подключение","save":"Сохранить изменения","saved":"Успешно сохранено","searchPlaceholder":"Поиск по названию модели или провайдеру...","selectModel":"Выберите модель...","slashMoa":"Выполнить задачу через Mixture of Agents (/moa <промпт>)","temperature":"Температура","title":"Смесь агентов (MoA)","unavailable":"Сервис MoA временно недоступен (переподключение...)","useCustom":"Использовать свою"},"dsh-skill-explorer":{"close":"Закрыть","create.content":"Инструкции (тело SKILL.md, Markdown)","create.created":"Создано: {path}","create.description":"Описание (как модель понимает, когда активировать навык)","create.empty":"Имя, описание и содержимое навыка не могут быть пустыми","create.failed":"Ошибка создания: {error}","create.name":"Имя навыка (kebab-case, совпадает с именем каталога)","create.namePlaceholder":"например, my-workflow","create.note":"Навык активируется немедленно (автосканирование файловой системы). Его содержимое внедряется в контекст модели как инструкция — не указывайте конфиденциальные данные.","create.root":"Расположение","create.root.project":"Навыки проекта (каталог .dsh/skills текущего проекта)","create.root.user":"Глобальные навыки (~/.dsh/skills, доступны во всех проектах)","create.submit":"Создать навык","create.whenToUse":"Когда применять (необязательно)","cwd":"рабочая папка: {cwd}","entry.label":"Центр навыков","entry.tooltip":"Центр навыков: обзор и управление загруженными навыками","group.bundled":"Встроенные в систему","group.custom":"Пользовательские каталоги","group.project-agents":"Навыки проекта (.agents/skills)","group.project-dsh":"Навыки проекта (.dsh/skills)","group.runtime":"Зарегистрированные в рантайме","group.user-agents":"Глобальные навыки (~/.agents/skills)","group.user-dsh":"Глобальные навыки (~/.dsh/skills)","groupHint.bundled":"Глобальные навыки, поставляемые с DSH и его плагинами","groupHint.custom":"Конфигурация customSkillDirs","groupHint.project-agents":"Расположены в каталоге проекта, ограничены его рабочей областью","groupHint.project-dsh":"Расположены в каталоге проекта, ограничены его рабочей областью","groupHint.runtime":"Навыки, зарегистрированные плагинами во время работы","groupHint.user-agents":"Глобальные навыки (~/.agents/skills), общие для всех проектов","groupHint.user-dsh":"Глобальные навыки (~/.dsh/skills), общие для всех проектов","list.count":"{count}","list.delete":"Удалить","list.deleteConfirm":"Удалить навык \"{name}\"? Он будет перемещён в .trash.","list.deleteFailed":"Не удалось удалить: {error}","list.disabled":"Отключено: недоступно для вызова моделью (нажмите для включения)","list.empty":"Навыки пока не загружены.","list.enabled":"Включено: доступно для вызова моделью (нажмите для отключения)","list.invokable":"Вызов: {marks}","list.invokableTooltip":"Модель может вызывать этот навык автоматически; ручные команды /skill остаются доступны","list.linked":"символическая ссылка","list.loadFailed":"Не удалось загрузить: {error}","list.loading":"Загрузка…","list.mark.model":"модель","list.mark.user":"пользователь","list.toggleFailed":"Сбой операции: {error}","list.when":"Условие: {when}","panel.title":"Центр навыков","provider.filesystem":"Файловая система","provider.tooltip":"Источник навыка: {provider}","refresh":"Обновить","tab.create":"Создать","tab.list":"Навыки"},"dsh-skill-hub":{"badge.source.bundled":"встроенный","badge.source.custom":"свой каталог","badge.source.project-agents":"проект .agents","badge.source.project-dsh":"проект .dsh","badge.source.runtime":"runtime","badge.source.user-agents":"пользователь .agents","badge.source.user-dsh":"пользователь .dsh","delete.confirm":"В корзину","delete.confirmText":"Переместить «{name}» в корзину? Его можно восстановить в любой момент.","delete.confirmTitle":"В корзину?","detail.addedAt":"Добавлен","detail.back":"К списку","detail.copied":"Скопировано","detail.copyMention":"Копировать $mention","detail.copyPath":"Копировать путь","detail.groups":"Группы","detail.loading":"Загрузка текста навыка…","detail.path":"Путь","detail.provider":"Провайдер","detail.updatedAt":"Обновлён","detail.uses":"Вызовы","detail.whenToUse":"Когда применять","diag.fix":"Исправить","diag.fixConfirm":"Перезаписать frontmatter этого файла автоисправлением? Сначала создайте резервную копию: {path}","diag.fixed":"Исправлено","diag.fixing":"Исправление…","entry.label":"Навыки","entry.tooltip":"Центр навыков: просмотр, группировка и синхронизация локальных навыков","err.dismiss":"Понятно","filter.allSources":"Все источники","filter.filteredSuffix":" · отфильтровано","filter.invocation":"Тип вызова","filter.invocationAll":"Все","filter.modelOnly":"Модель","filter.private":"Личные","filter.shortened":"Кратких описаний: {count}, наведите для полного текста","filter.showing":"Показано {shown} из {total} (включено){filtered}","filter.userOnly":"Пользователь","form.busy":"Создание…","form.cancel":"Отмена","form.capabilityHint":"Как выбрать способность: повторяемый метод → навык; внешняя система → MCP; долгосрочные знания → база знаний.","form.desc":"Описание (одно предложение для маршрутизации)","form.descPlaceholder":"Одна строка — что делает (с триггерными словами); по этому описанию агенты активируют навык","form.error":"Ошибка создания: ","form.name":"Имя навыка (kebab-case, например code-review)","form.root":"Целевой каталог","form.submit":"Создать","form.success":"Создано: ","group.bundled":"Встроенные","group.custom":"Пользовательские каталоги","group.other":"Другие источники","group.project-agents":"Проектные .agents/skills","group.project-dsh":"Проектные .dsh/skills","group.runtime":"Runtime","group.user-agents":"Пользовательские ~/.agents/skills","group.user-dsh":"Пользовательские ~/.dsh/skills","groups.closeAll":"Закрыть все","groups.conflictText":"Эти навыки включены и в других группах; их закрытие затронет и те группы:","groups.conflictTitle":"Закрыть эту группу?","groups.delete":"Удалить сценарий","groups.edit":"Изменить","groups.empty":"Сценариев ещё нет. Создайте один и начните раскладывать навыки.","groups.keepOn":"Оставить включёнными","groups.membersHint":"Отметьте навыки, чтобы добавить их в сценарий (включая отключённые).","groups.merge":"Объединить","groups.namePlaceholder":"Название сценария","groups.new":"Новый сценарий","groups.noCollections":"Групп по источникам пока нет. Импортируйте навыки из маркета — они сгруппируются по источникам.","groups.noWritable":"В группе нет перезаписываемых навыков (состояние навыков «только чтение» нельзя менять из центра)","groups.personal":"Личные","groups.project":"Проектные","groups.rename":"Сохранить название","groups.saveMembers":"Сохранить состав","groups.subdivide":"Разделить","legend.hint":"У навыка не более одной точки; нет точки = не вызывается.","legend.model":"Вызывается моделью — агенты могут вызывать автоматически","legend.user":"Вызывается пользователем — только явный вызов","market.add":"Добавить","market.addPlaceholder":"owner/repo или https://github.com/…","market.addSource":"Добавить источник","market.branchConfirm":"Подтвердить","market.branchHint":"У репозитория нет релизов. Выберите ветку для отслеживания (по умолчанию main):","market.branchTitle":"Выберите ветку","market.catalog.anthropics":"Официальная коллекция навыков Anthropic (Claude Skills)","market.catalog.mattpocock":"Коллекция навыков Matt Pocock","market.catalog.openDesign":"Коллекция навыков дизайна (design-templates)","market.catalog.superpowers":"Коллекция навыков сообщества Superpowers","market.catalogHint":"Отобранные репозитории навыков — добавьте, чтобы сканировать и устанавливать, с постоянной проверкой обновлений.","market.check":"Проверить","market.checkAll":"Проверить все","market.checkUpdate":"Проверить обновления","market.checking":"Проверка…","market.deleteSource":"Удалить источник","market.deletedUpstream":"Удалено в источнике: {count}","market.installed":"Установлено: {count}","market.newRelease":"Новая версия v{version}","market.noSources":"Источников пока нет. Добавьте из каталога ниже или введите репозиторий GitHub.","market.removeHint":"Удаление источника не затрагивает установленные навыки.","market.scan":"Сканировать","market.scanning":"Сканирование…","market.sync":"Синхронизировать","market.syncCancel":"Пропустить","market.syncNone":"Из этого репозитория пока не импортировано ни одного навыка.","market.syncText":"Источник выровнен с {ref}. Обновить эти локальные навыки?","market.syncTitle":"Обновить локальные навыки","market.syncing":"Синхронизация…","market.title":"Маркет","market.unpinned":"не закреплено","market.upToDate":"Актуально","market.updatable":"Обновляемо: {count}","market.update":"Обновить","market.updateAll":"Обновить всё","market.updateAllConfirmText":"Обновляемые навыки этих источников будут перезаписаны их новейшими версиями из источника:","market.updateAllConfirmTitle":"Обновить все навыки?","market.updateAllDone":"Обновлено источников: {count}","market.updateAllItem":"{repo} (навыков: {count})","market.updateCount":"Обновить {count}","market.updated":"Есть обновления","market.versionBranches":"Ветки","market.versionConfirm":"Переключить на {ref}","market.versionCurrent":"текущая {ref}","market.versionCustom":"Пользовательская (тег / ветка / коммит)","market.versionHint":"Нажмите для переключения отслеживаемой версии","market.versionReleases":"Релизы","market.versionText":"Выберите версию для отслеживания репозитория {repo}; после этого обновите и синхронизируйте навыки","market.versionTitle":"Переключить отслеживаемую версию","panel.count":"Всего навыков: {count}","panel.diagnostics":"Диагностика обнаружения","panel.disabled":"Отключено","panel.disabledCount":"Отключено: {count}","panel.empty":"Нет подходящих навыков.","panel.emptyAll":"Навыков пока нет. Создайте первый.","panel.enabled":"Включено","panel.incomplete":"(каталог может быть неполным)","panel.loading":"Загрузка…","panel.new":"Новый навык","panel.search":"Поиск навыков…","panel.title":"Центр навыков","panel.workspaceClear":"Очистить рабочую область","panel.workspaceHint":"Укажите путь проекта, чтобы показать навыки его .dsh/skills и .agents/skills (только чтение); очистите и нажмите Enter, чтобы вернуться к пользовательскому виду.","panel.workspacePlaceholder":"Путь рабочей области (Enter — применить)","repo.cancel":"Отмена","repo.cancelled":"Отменено · {imported}/{total} сохранено, временные файлы удалены","repo.clearAll":"Очистить","repo.empty":"Импортируемых навыков не найдено.","repo.existing":"Существующие","repo.failed":"Не удалось: {count}","repo.files":"Файлов: {count} · {size}","repo.import":"Импортировать выбранные ({count})","repo.imported":"Импортировано: {count}","repo.importing":"Импорт…","repo.importingCurrent":"Импорт: {name} ({done}/{total})","repo.ready":"Найдено импортируемых навыков: {count}","repo.root.designTemplates":"Шаблоны design-templates","repo.root.generic":"{root}","repo.root.skills":"Навыки (skills)","repo.selectAll":"Выбрать все","repo.skippedExisting":"Пропущено существующих: {count}","repo.truncated":"⚠ Репозиторий слишком большой, показаны не все навыки (сокращено GitHub)","row.copied":"Скопировано","row.copy":"Копировать","row.copyMention":"Копировать $mention","row.copyPath":"Копировать путь","row.delete":"В корзину","row.disable":"Отключить","row.duplicate":"дубликат","row.duplicateHint":"Это имя предоставляется несколькими источниками; показан наиболее приоритетный","row.enable":"Включить","row.open":"Подробнее о навыке {name} (Enter)","row.readonly":"только чтение","settings.announceToAgent":"Объявлять агенту","settings.announceToAgentHint":"Добавляет раздел в системный промпт, чтобы агенты знали, как сотрудничать, когда пользователь упоминает управление навыками.","settings.collapse":"Скрыть настройки","settings.description":"Управление локальным каталогом навыков dsh: просмотр, группировка, синхронизация источников и создание.","settings.discard":"Отменить","settings.dotModelColor":"Цвет точки «вызывается моделью»","settings.dotModelColorHint":"Цвет синей точки «модель может вызвать» в панели навыков и чате/меню (#rrggbb).","settings.dotUserColor":"Цвет точки «вызывается пользователем»","settings.dotUserColorHint":"Цвет зелёной точки «только пользователь» в панели навыков и чате/меню (#rrggbb).","settings.enabled":"Включить плагин","settings.enabledHint":"Отключает маршруты, элементы и объявление центра навыков.","settings.expand":"Показать настройки","settings.inherit":"Наследовать","settings.notExposed":"Это развёртывание не предоставляет пространство настроек.","settings.off":"Выкл","settings.on":"Вкл","settings.overridden":"Переопределено","settings.readOnly":"Настройки этого развёртывания доступны только для чтения.","settings.reset":"Сбросить к значению по умолчанию","settings.save":"Сохранить","settings.saveFailed":"Развёртывание не приняло эти значения; они оставлены для исправления.","settings.saving":"Сохранение…","settings.showGroupSummary":"Показывать сводку по группам","settings.showGroupSummaryHint":"После заголовков групп показывать число вызовов и время последнего вызова.","settings.showUseCount":"Показывать число вызовов","settings.showUseCountHint":"Показывать янтарный счётчик вызовов рядом с именем навыка.","settings.showUseTime":"Показывать время последнего вызова","settings.showUseTimeHint":"Показывать относительное время в строке имени (например «3 дн назад»).","settings.statsScanMinutes":"Интервал автостатистики (минут)","settings.statsScanMinutesHint":"Как часто фоновое сканирование журналов сессий выполняется (минимум 1); тяжёлые сканирования автоматически растягивают интервал.","settings.statsWindowDays":"Окно статистики (дней)","settings.statsWindowDaysHint":"Учитывать использование только за последние N дней (по умолчанию 14); 0 = вся история. Изменения применяются сразу.","settings.title":"Центр навыков","settings.unsaved":"Есть несохранённые","sort.added":"По дате добавления","sort.name":"По названию","sort.uses":"По числу вызовов","source.check":"Проверить обновления","source.checkHint":"Нажмите, чтобы проверить источник на обновления","source.checking":"Проверка…","source.clearTrash":"Очистить корзину","source.clearTrashConfirm":"Удалить безвозвратно","source.clearTrashConfirmText":"Навыки в корзине будут удалены безвозвратно и не могут быть восстановлены.","source.clearTrashConfirmTitle":"Очистить корзину?","source.commit":"Синхронизированная ревизия","source.deleteConfirmText":"Эти навыки удалены из источника; их локальные каталоги уйдут в корзину (восстановимо):","source.deleteConfirmTitle":"Согласиться с удалением в источнике?","source.deleteGroup":"Удалить группу","source.deleteGroupHint":"Удалить все навыки ({count}) этой группы","source.deleteGroupText":"Все навыки ({count}) группы «{name}» будут перемещены в корзину (восстановимо); навыки «только чтение» будут пропущены:","source.deleteGroupTitle":"Удалить группу?","source.deleted":"Удалено в источнике: {count}","source.error":"Проверка не удалась","source.followDelete":"Согласиться с удалением","source.private":"Личный навык (не привязан к источнику; проверки обновлений нет)","source.restore":"Восстановить","source.sync":"Синхронизировать","source.syncConfirmText":"Локальные изменения этих навыков будут перезаписаны новейшими версиями из источника:","source.syncConfirmTitle":"Синхронизировать навыки?","source.syncing":"Синхронизация…","source.throttled":"Недавно проверено","source.trash":"Корзина","source.unverified":"источник ещё не проверен","source.upToDate":"Актуально","source.updated":"Обновлений: {count}","time.daysAgo":"{value} дн назад","time.hoursAgo":"{value} ч назад","time.justNow":"только что","time.minutesAgo":"{value} мин назад","time.weeksAgo":"{value} нед назад","update.available":"Доступно обновление: v{version} (текущая v{current})","update.check":"Проверить обновления","update.checking":"Проверка…","update.error":"Не удалось проверить обновления: {error}","update.newVersion":"Новая версия v{version}","update.unavailable":"Нет доступных релизов","update.upToDate":"Актуальная версия: v{version}","update.viewRelease":"Открыть релиз","view.flat":"Списком","view.grouped":"По группам","view.market":"Маркет","view.scenes":"Сценарии","view.sources":"Источники"},"dsh-subscriptions":{"accountLabel":"Аккаунт","addAccount":"+ Добавить аккаунт","cardIntro":"Подписки, ротация и ограничения аккаунтов.","connect":"Подключить","connected":"Подключено","coolingDown":"Охлаждение","disconnect":"Отключить","hide":"Скрыть","intro":"Войдите с помощью потребительской подписки. Токены остаются в хранилище учетных данных хоста. Браузер никогда не читает их обратно. После подключения, если провайдер перенаправляет на localhost или страницу провайдера, вставьте перенаправленный URL или код сюда.","loading":"Загрузка…","notConnected":"Не подключено","pastePlaceholder":"Вставьте перенаправленный URL или код","plan":"План","reconnect":"Переподключиться","removeSlot":"Удалить слот","save":"Сохранить","saved":"Сохранено","show":"Показать","storedAs":"Хранится как","submitCode":"Отправить код","title":"Подписки","usageFull":"Использование 100%","useOrigin":"Используйте этот источник Web UI как redirect_uri для OAuth","useOriginHint":"Не включайте, если вы не зарегистрировали собственный OAuth-клиент для этого источника. CLI-клиенты провайдеров обычно требуют опубликованный URI перенаправления и шаг вставки.","verifyAccount":"Подтвердить аккаунт","verifyLink":"Откройте ссылку для подтверждения","verifyPrefix":"Google требует одноразовой проверки аккаунта.","verifySuffix":"затем переподключитесь."},"dsh-tts":{"addProvider":"Добавить провайдера","announce":"Объявлять одобрения","announceHint":"Произнесите вслух и воспроизведите мелодию, когда агент остановится для подтверждения или задаст вопрос.","approvalHint":"Сказано, когда запрашивается одобрение; добавляется название инструмента.","approvalText":"Формулировка одобрения","azureHint":"Необходимо для провайдера Azure, например, eastus.","azureRegion":"Регион Azure","bargeIn":"Замолкать, когда вы говорите","bargeInHint":"Перестаньте читать, как только микрофон откроется.","binHint":"Ищется в PATH, если не указан абсолютный путь.","cardHint":"Цепочка провайдеров, голоса и параметры воспроизведения.","chainHint":"Сверху вниз указан порядок резервирования. Ключи облака сохраняются в хранилище учетных данных хоста, никогда в настройки плагина.","chainHintCard":"Выберите провайдера, вставьте его API-ключ и сохраните (или оставьте поле ключа пустым). Ключ сразу записывается в хранилище учетных данных хоста. Браузер никогда не читает его обратно.","chainTitle":"Цепочка провайдеров","chime":"Звонок","chimeHint":"динь, бип или ничего.","clear":"Очистить","configured":"Настроено","down":"Вниз","edgeBin":"бинарный файл edge-tts","edgeHint":"Python CLI из пакета edge-tts.","espeakBin":"Бинарный файл eSpeak","espeakHint":"Обычно espeak-ng.","fromEnv":"Задано в окружении","general":"Общие","language":"Язык","languageHint":"Подсказка для голосов, которым требуется локаль (eSpeak, Azure SSML).","loading":"Загрузка…","localProvider":"Локальный / CLI провайдер — без API-ключа","notSet":"Не задано","piperBin":"Бинарный файл Piper","piperModel":"Путь к модели Piper","piperModelHint":"Абсолютный путь к модели ONNX. Оставьте пустым, чтобы пропустить Piper.","questionHint":"Используется, когда агент задаёт вопрос. Если оставить пустым, функция будет отключена.","questionText":"Формулировка вопроса","rate":"Скорость воспроизведения","rateHint":"От 0.5 до 2. Синтез не изменяется; браузер воспроизводит быстрее или медленнее.","remove":"Удалить","save":"Сохранить","saved":"Сохранено","speakAsItGoes":"Говорите по мере проигрывания","speakAsItGoesHint":"Читайте каждый ответ сразу, как только он появляется, предложение за предложением, вместо ожидания всей очереди.","speakReplies":"Озвучивать ответы агента","speakRepliesHint":"Когда включено, каждый завершённый ответ синтезируется на хосте и воспроизводится в этом браузере. Аудио не отправляется обратно в модель.","title":"Речь","up":"Вверх"},"dsh-voice":{"addCustom":"Добавить своего провайдера","addProvider":"Добавить провайдера","browserFailed":"Браузер не распознал:","browserHint":"браузер выполняет распознавание, ключ не требуется","cancel":"Отмена","chainHint":"Сверху вниз — порядок, в котором они проверяются","clearKey":"Очистить ключ","composerUnavailable":"Композитор недоступен","customHint":"Любой OpenAI-совместимый API. Название становится доступным в цепочках выше.","customKeyName":"название ключа","customModel":"модель","customModelHint":"модель для запроса (пустое значение означает встроенную)","customName":"имя, используемое в цепочке","customTitle":"Ваши собственные провайдеры","deepinfraHint":"openai/whisper-large-v3-turbo · ключ DEEPINFRA_API_KEY","dictationBtn":"Голосовой ввод","dictationHint":"Речь обрезается на паузах, а текст добавляется к вводу.","dictationPill":"Диктовка — текст добавляется к вводу","down":"Вниз","fireworksHint":"whisper-v3-turbo · ключ FIREWORKS_API_KEY","general":"Общие","hide":"Скрыть","holdHint":"Удерживайте — отпустите, чтобы отправить","hotkey":"Клавиша голосового сообщения","hotkeyHint1":"Держите для записи, отпустите, чтобы отправить агенту, Esc отменяет.","hotkeyHint2":"Подойдёт любая клавиша: буква, F-клавиша или модификатор.","keepPending":"Не отправлять","keySpace":"Пространство","keyUnset":"не задано","language":"Язык","listening":"Слушаю в браузере…","loadingSettings":"Загрузка настроек…","localHint":"устанавливается при запуске сервера","messageBtn":"Голосовое сообщение — нажмите или удерживайте","messageHint":"Одна целая запись, отправленная агенту после расшифровки.","messagePill":"Запись голосового сообщения","messageTitle":"Голосовое сообщение","micUnavailable":"Микрофон недоступен: требуется HTTPS или localhost","mistralHint":"voxtral-mini-latest · ключ MISTRAL_API_KEY","noRecorder":"Этот браузер не поддерживает MediaRecorder","notReady1":"Харнесс ещё не объявил настройки этого плагина. Если он только что перезапустился,","notReady2":"раздел появится сам через несколько секунд.","nothingHeard":"Ничего не было распознано","openaiHint":"whisper-1 · ключ OPENAI_API_KEY","openrouterHint":"google/gemini-2.5-flash · ключ OPENROUTER_API_KEY","openrouterWarning":"У OpenRouter нет /audio/transcriptions — используйте там шаблон openai-chat-audio","pauseHint":"Меньшее значение означает более частые фрагменты и быстрый текст, но выше риск разрыва слова","pauseMs":"Пауза, завершающая фразу, мс","pressKey":"Нажмите клавишу…","recognitionError":"распознавание не удалось","recordSlot":"Запись голоса","remove":"Удалить","save":"Сохранить","saveFailed":"Некоторые поля не были сохранены —","saved":"Сохранено ✓","secondsShort":"с","sendingIn":"Отправка агенту через","siliconflowHint":"FunAudioLLM/SenseVoiceSmall · ключ SILICONFLOW_API_KEY","stop":"Стоп","title":"Голос","transcribing":"Транскрибируем…","undoHint":"Как долго ещё можно отменить автоматическую отправку","undoMs":"Окно отмены, мс","up":"Вверх","whisperAutostart":"Автозапуск локального whisper","whisperBin":"Локальный шепот: бинарный","whisperBinHint":"используется при включённом автозапуске","whisperEndpoint":"Локальный whisper: адрес","whisperEndpointHint":"POST /inference сервера whisper.cpp","whisperModel":"Локальная модель Whisper"},"dshhub-market":{"aboutLabel":"About this plugin","actWhy":"Почему не активен?","agentBusyInstall":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед установкой. Установка изменяет файлы плагина, поэтому работающий агент может завершиться с ошибкой в процессе.","agentBusyUpdate":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед обновлением. Обновления заменяют файлы плагина на месте, поэтому работающий агент может завершиться с ошибкой или смешать версии в процессе выполнения.","aiFix":"Исправление через AI","aiFixConservative":"Действуйте консервативно: исправляйте только явные ошибки (сбои запуска, дубликаты, несовпадения критических зависимостей). Не выполняйте лишних обновлений; объясняйте каждое действие и ждите подтверждения.","aiFixCopied":"Промпт для исправления скопирован — вставьте его в новую беседу с агентом","aiFixFail":"Буфер обмена недоступен — скопируйте диагностику вручную ниже","aiFixHint":"Передать отчёт диагностики в новую сессию Агента (скопировано в буфер обмена)","aiFixIntro":"Пожалуйста, помоги исправить проблемы с плагинами в DeepSeek Harness (профиль: {0}). Данные диагностики:","aiFixScope":"Если нет — вы процесс вне целевого харнесса: вы можете переупорядочить dsh.profile.bundles, отключить/включить плагины или скорректировать cordis.patch.yml. Официальные бандлы фиксированы; опишите план перед изменениями.","all":"Все","alreadyInstalled":"✓ Установлен","approveBuilds":"Разрешить сборочные скрипты и повторить","auditBadgePass":"AI-reviewed","auditBadgeWarn":"AI-reviewed (notes)","authoredBy":"Original authors & license: ","autoBackup":"Резервная копия раз в сутки (при открытии маркета)","backTop":"Наверх","backupDone":"Копия загружена","backupDownload":"Выгрузить копию","backupHint":"Включает список плагинов и настройки профиля, но не node_modules. Восстановление ставит плагины заново по списку.","backupImport":"Импортировать и посмотреть","backupLocal":"Локальный файл","backupWorking":"Выполняется…","buildsSkipped":"Этому плагину нужны сборочные скрипты; по умолчанию они заблокированы ради безопасности. Разрешите их и переустановите:","busyWait":"Уже выполняется другая операция — дождитесь её окончания (установка, обновление и удаление идут по одной)","byAuthor":"Provided by {0}","cancel":"Отмена","cancelOp":"Отменить","cancelled":"Отменено","cancelling":"Отмена…","catConflict":"Конфликты","catDeps":"Зависимости","catOrder":"Порядок","catsLess":"Свернуть","catsMore":"Ещё","changelogLabel":"Changelog","checkBundles":"Порядок загрузки плагинов","checkBundlesEmpty":"Слои плагинов не объявлены","checkCommunity":"сообщество","checkDir":"каталог","checkDuplicates":"Повторяющиеся записи плагинов","checkDuplicatesEmpty":"Повторов нет","checkEntries":"записей (идентификаторы загрузчика)","checkErrors":"Ошибки","checkErrorsEmpty":"Ошибок нет","checkHoisted":"поднят","checkIssues":"Найдены проблемы","checkLoadFail":"Не удалось загрузить диагностику: ","checkLoading":"Анализ профиля…","checkMultiEmpty":"Пакетов ядра в нескольких версиях нет","checkMultiVersion":"Пакеты ядра в нескольких версиях","checkOfficial":"официальный","checkOrderTip":"порядок загрузки бандла сообщества конфликтует с объявленными правилами before/after","checkOrphans":"Неверные записи конфига","checkOrphansEmpty":"Неверных записей нет","checkOverridden":"переопределяет","checkOverrides":"Переопределения","checkOverridesEmpty":"Переопределений нет","checkPatch":"файл патча","checkPeerEmpty":"Расхождений версий зависимостей нет","checkPeerInfo":"{0} записей к сведению (не подтверждено)","checkPeerMismatches":"Расхождения версий зависимостей","checkPeerOverview":"расхождений: {0} · к сведению: {1}","checkProfile":"профиль","checkRange":"объявленный диапазон","checkRefresh":"Проверить заново","checkResolved":"разрешённая версия","checkSatisfied":"удовлетворено","checkSource":"источник","checkUnknown":"неизвестно","checkUnsatisfied":"не удовлетворено","checkWarnings":"Предупреждения","checkWarningsEmpty":"Предупреждений нет","cmdDetails":"Команда установки","compatRiskBanner":"Обнаружен риск несовместимости — откройте Диагностику перед перезапуском или откатите эту операцию.","confirm":"Подтвердить","confirmRemove":"Подтверждаете?","confirmTitle":"Установка","confirmWarn":"Плагины — сторонний код сообщества. Устанавливая, вы доверяете этому источнику; сборочные скрипты по умолчанию заблокированы.","contactLabel":"Contact the creator","contactLink":"Link","copiedToast":"Copied","copyBtn":"Copy","credsWarning":"Внимание: в копию попадают настройки профиля и файлы, где могут лежать секреты (config.toml, .env и подобные). Локальная выгрузка ничего не вырезает, поэтому выгружайте на WebDAV, которому доверяете.","daysAgo":"Updated {0} days ago","deprecatedBadge":"Устарел","deprecatedWarn":"Каталог помечает этот плагин как устаревший; новым пользователям ставить его не советуют.","diagExplain":"Что это","diagExplainText":"Эта страница ищет плагины, конфликтующие друг с другом, несовпадения версий зависимостей и неверный порядок загрузки. Термины:","diagOkAll":"Всё в порядке: конфликтов, проблем с зависимостями и порядком не найдено","diagTermBundle":"бандл — один пакет плагина, применяется по порядку","diagTermEntry":"запись — то, что плагин добавляет в работающую композицию","diagTermOrder":"порядок загрузки — очерёдность активации; более поздний может перекрыть более ранний","diagTermOrphan":"неверная запись — конфиг ссылается на то, чего нет","diagTermPeer":"peer-зависимость — пакет, который плагин ждёт от хоста","diagTermShadow":"перекрытие — старая копия из плагина закрывает более новую хостовую","disable":"Выключить","disabledState":"Выключен","dismiss":"Скрыть","dismissNotice":"Скрыть это уведомление","duplicateNames":"Плагины с одинаковыми именами (к сведению, это не конфликт)","empty":"Подходящих плагинов нет","enable":"Включить","envFix":"Настроить автоматически","envFixFail":"Автоматическая настройка не удалась — выгрузите журнал и пришлите нам файл","envFixing":"Настройка…","envMissing":"Перед установкой плагинов нужен один небольшой компонент","exportLog":"Выгрузить журнал","exportLogFail":"Не удалось выгрузить журнал","exportedLog":"Журнал выгружен: dsh-market-log.txt — приложите его к обращению","exportingLog":"Выгрузка…","fabModalTitle":"Магазин плагинов dshhub.co","fabTitle":"Открыть магазин плагинов dshhub.co","faqLabel":"FAQ","filter":"Фильтр","filterDir":"Порядок","filterSort":"Поле сортировки","filterTime":"Вышло за","firstPage":"В начало","gist":"GitHub Gist","gistCreated":"Выгружено:","gistErrAuth":"GitHub не авторизовал: токен неверный или истёк, либо gh CLI не залогинен","gistErrInvalid":"Содержимое Gist повреждено или формат копии не поддерживается","gistErrNetwork":"GitHub недоступен — проверьте сеть или прокси","gistErrNoId":"Для обновления нужен идентификатор Gist — заполните поле или переключитесь на «Создать»","gistErrNotFound":"Gist не найден — проверьте идентификатор или ссылку","gistErrRateLimit":"Достигнут лимит GitHub, либо у токена нет права gist","gistErrTimeout":"GitHub не ответил вовремя — проверьте сеть и повторите","gistExport":"Выгрузить в Gist…","gistExportDone":"Выгружено в Gist","gistExportGo":"Выгрузить","gistExportHint":"Отмечено всё — полная копия вместе с настройками; если снять любую галочку, выгрузятся только выбранные плагины, а настройки — по отдельному флажку.","gistExportSelect":"Выберите плагины для выгрузки","gistId":"Идентификатор или ссылка на Gist (при выгрузке оставьте пустым, чтобы создать новый приватный)","gistImport":"Загрузить из Gist","gistIncludeConfig":"Включить файлы настроек (в них могут быть секреты)","gistModeCreate":"Создать новый приватный Gist","gistModeUpdate":"Обновить Gist из поля","gistNoPlugins":"В этом профиле нечего выгружать","gistNote":"В отличие от локальной выгрузки (архив на этой машине), Gist нужен для переноса между машинами: выгрузите в приватный Gist и загрузите на другом компьютере под тем же аккаунтом. Токен живёт только в памяти этой вкладки и никогда не пишется в браузерное хранилище; если залогинен gh CLI или задан DSH_GITHUB_TOKEN, вводить его не нужно. Gist приватный, до 1 МБ на файл.","gistSelectAll":"Выбрать все","gistSelectNone":"Снять выбор","gistSpecLocal":"локально","gistSrcEnv":"переменная DSH_GITHUB_TOKEN","gistSrcGh":"gh CLI","gistSrcToken":"введён вручную","gistToken":"Токен GitHub (только в памяти вкладки — после обновления страницы введите заново; оставьте пустым, чтобы использовать серверный DSH_GITHUB_TOKEN или залогиненный gh CLI)","gistVerify":"Проверить связь","gistVerifySource":"Проверено — источник токена: {0}","goDiagnose":"Открыть диагностику","gotIt":"Понятно","groupAdd":"Добавить плагин","groupAddEmpty":"Все установленные плагины уже в этой группе","groupAddTheme":"Добавить тему","groupAssign":"Назначить","groupConfirmDelete":"Удалить группу?","groupCreate":"Создать","groupDelete":"Удалить группу","groupEmpty":"Пока пусто","groupMixed":"Включена частично","groupNamePh":"Название группы","groupNew":"Новая группа","groupRemove":"Убрать","groupRename":"Переименовать","hostDependencyMore":"ещё находок пропущено: {0}","hostDependencyWarning":"Плагин перечисляет в зависимостях известные общие пакеты хоста DSH. Это может перекрыть хостовую версию; проверка смотрит только манифест и не подтверждает, что в рантайме появился дубль:","hotBanner":"плагины готовы — обновите страницу, чтобы ими пользоваться","install":"Установить","installFail":"Установить не удалось","installReplacement":"Установить замену","installedBadge":"✓ Установлен","installedEmpty":"Плагинов сообщества пока нет — загляните во вкладку «Обзор»","installedLabel":"Installed","installing":"Установка…","kindApp":"App","kindPlugin":"Plugin","kindPreset":"Agent Mode","kindSkill":"Skill","kindTheme":"Theme","kindTool":"Tool","lastPage":"В конец","linkedDev":"подключён как разработка","loadFail":"Не удалось загрузить каталог плагинов, попробуйте позже","loading":"Загрузка каталога…","localOnly":"Адрес WebDAV и учётные данные остаются только в этом браузере.","marketNoToggle":"Сам маркет выключить нельзя","marketUpdate":"Доступно обновление маркета — обновить","nav":"Маркет плагинов","nextPage":"Дальше","noGroups":"Групп пока нет — создайте","notInstalled":"Не установлен","openExternal":"Open","orderAlreadyOptimal":"Текущий порядок уже оптимален и удовлетворяет всем зависимостям плагинов","orderApplied":"✓ Применено — перезапустите для активации","orderApply":"Применить порядок","orderAutoSort":"Автосортировка","orderConflicts":"конфликты before/after в текущем порядке","orderDiffHint":"Этот порядок изменит композицию: {0} переопределений, {1} изолированных, {2} дубликатов","orderDown":"↓","orderDrag":"Перетащите для изменения порядка","orderDragHint":"Перетаскивайте ⠿ для сортировки. Изменения сохраняются при нажатии «Применить порядок».","orderReset":"Сбросить черновик","orderSection":"Порядок загрузки","orderSuggestApply":"Применить рекомендуемый порядок","orderSuggestHint":"Рекомендуемый порядок (автосортировка по правилам before/after):","orderTrialFail":"Ошибка статической валидации композиции: {0}","orderUp":"↑","orphanIdRequired":"нет идентификатора","orphanInsertNotArray":"неверный формат","orphanInsertTargetMissing":"цель не найдена","orphanInsertTargetNotGroup":"цель не является группой","orphanNameMismatch":"имя не совпадает","orphanPatchTargetMissing":"цель не найдена","orphanReasonOther":"другое","packagesDone":"обработано пакетов: {0}","pageInfo":"Страница {0} из {1}","partialNote":"Отменено — часть изменений уже применена","patchDisabled":"Выключен патчем","patchForced":"Включён патчем","perPage":"На странице","phaseBuilding":"Сборочные скрипты","phaseDownloading":"Загрузка","phaseLinking":"Связывание","phaseResolving":"Разрешение зависимостей","prevPage":"Назад","progressHint":"Первая установка скачивает и разрешает зависимости — крупные плагины занимают 1–3 минуты","published":"выпущен","rateCommentLabel":"Comment (optional)","rateCommentPh":"Share your experience (optional, up to 500 characters)","rateFail":"Rating submission failed, please retry later","rateLink":"Rate","rateOk":"Rating submitted, thanks for your feedback","ratePickScore":"Please pick a star rating first","rateScoreLabel":"Your rating","rateScoreValue":"{0} stars","rateSubmit":"Submit rating","rateSubmitting":"Submitting…","rateTitle":"Rate this plugin","rateTooFast":"Too many submissions, please try again later (max 3 per plugin per day)","readme":"README","redeemBtn":"Unlock","redeemDemo":"Try 080808 to unlock a theme for free","redeemOk":"Unlocked: {0}, added to the list below","redeemPh":"Passcode, e.g. 3K7M9P","redeemTitle":"Enter a passcode to unlock plugins","redeeming":"Unlocking…","refresh":"Обновить","refreshBanner":"изменения применены — обновите страницу, чтобы их увидеть","removedItemLabel":"Removed from marketplace","removedItemReason":"Reason: {0}","replacementHint":"Каталог предлагает","reportCatFraud":"Fraud / scam","reportCatInfringement":"Infringement (copyright / trademark / patent)","reportCatMalware":"Malware / data theft","reportCatMisleading":"Misleading / false claims","reportCatOther":"Other issue","reportCatPorn":"Pornographic content","reportCategoryLabel":"Reason","reportContactLabel":"Contact","reportContactPh":"Optional contact so the platform can reach you","reportDescLabel":"Description","reportDescPh":"Describe the issue and evidence (at least 10 characters)","reportFail":"Report submission failed, please retry later","reportLink":"Report","reportOk":"Report submitted. The platform will verify it, usually within 48 hours. Thanks for keeping the marketplace safe.","reportPick":"Select…","reportPickCategory":"Please pick a reason","reportRateLimited":"Too many submissions, please try again later","reportSubmit":"Submit report","reportSubmitting":"Submitting…","reportTitle":"Report this plugin","reportTooShort":"Description must be at least 10 characters","restartBanner":"изменения внесены — перезапустите DeepSeek Harness","restartFail":"Перезапустить не удалось","restartHint":"Как перезапустить: остановите текущий процесс dsh и запустите его снова (например, dsh web)","restartNow":"Перезапустить","restartTimeout":"Не дождались запуска DeepSeek Harness","restarting":"Перезапуск…","restoreConfirm":"Восстановление перезапишет настройки этого профиля и переустановит плагины. Продолжить?","restoreDone":"Восстановление завершено — перезапустите DeepSeek Harness","restoreMissing":"Плагинов из копии не установлено: {0}","restorePartial":"Восстановление продолжилось, но эти плагины установить не удалось:","restorePreviewDone":"Копия загружена. Проверьте вкладку «Установленные» и запускайте восстановление.","restoreStart":"Начать восстановление","rollbackNow":"Откатить","rollingBack":"Откат изменений…","searchPh":"Поиск плагинов: уведомления, терминал, память…","setCardDesc":"Просмотр версии и настроек магазина плагинов.","setChannel":"Канал обновлений","setChannelBeta":"Бета","setChannelBetaHint":"Ранний доступ к непроверенным версиям. Влияет только на рынок плагинов.","setChannelDev":"Разработка","setChannelDevHint":"Непроверенные сборки из ветки разработки. Не рекомендуются для общего использования.","setChannelStable":"Стабильный","setChannelStableHint":"Только выпущенные версии.","setChannelSwitch":"Переключиться на","setChannelSwitchHint":"Эта версия ниже установленной.","setSelfCancel":"Отмена","setSelfConfirm":"Удалить магазин плагинов? Повторная установка возможна только через командную строку.","setSelfFailed":"Сбой операции","setSelfPurge":"Также очистить собственные данные магазина","setSelfPurgeOff":"Сохранить данные магазина. Обратите внимание: отключённые плагины останутся выключенными, и после удаления магазина вернуть их через интерфейс будет невозможно.","setSelfPurgeOn":"Будут удалены: списки отключений магазина, пользовательские группы и записи отключений в файле патча профиля — отключённые плагины снова запустятся. Пароли и токены не затрагиваются (магазин не сохраняет их на диске).","setSelfRemove":"Удалить магазин плагинов","setSelfRemoveConfirm":"Удалить","setSelfRemoveHint":"Удалить магазин из этого профиля. Ваши остальные плагины затронуты не будут.","setSelfRemoved":"Удалено","setSelfRemovedHint":"Перезапустите DeepSeek Harness для завершения очистки.","setSelfUpToDate":"Установлена последняя версия","setSelfUpToDateHint":"Актуально, обновление не требуется","setSelfUpdate":"Обновить","setSelfUpdateHint":"При обновлении скачивается новая версия; она вступит в силу после перезапуска.","setSelfUpdateReady":"Доступна новая версия:","setSelfUpdatedHint":"Загружено. Перезапустите DeepSeek Harness, чтобы изменения вступили в силу — клиент обновится сразу, сервер после перезапуска.","setSelfWorking":"Удаление…","sortAdded":"Дата выпуска","sortAsc":"По возрастанию","sortDesc":"По убыванию","sortDownloads":"npm загрузки (30д)","sortNewest":"Сначала новые","sortOldest":"Сначала старые","sortStars":"Звёзды","stateBroken":"Установлен, но не прошёл проверку","stateDisabled":"Выключен","stateInert":"Установлен, но не является плагином слоя профиля","stateLive":"Работает (загружен на лету)","stateRestart":"Установлен — перезапустите, чтобы применить","stepsLabel":"Getting started","subtitle":"Плагины сообщества для DeepSeek Harness","tabAgentic":"Agents & Skills","tabAppearance":"Appearance & Experience","tabBackup":"Копия и восстановление","tabDiagnostics":"Диагностика","tabDiscover":"Обзор","tabGroups":"Группы","tabInstalled":"Установленные","tabList":"Список","tabPublic":"Public market","tabRedeem":"Passcode","tabThemes":"Темы","tabUtility":"Tools & Capabilities","teachingLabel":"Guides","terminalWarn":"Похоже, это плагин для терминала: в веб-профиле он может ничего не делать или даже сломать запуск DeepSeek Harness. Прочитайте его README и ставьте в тот профиль, для которого он написан.","themeActive":"Активна","themeApply":"Применить","themeDeactivate":"Отключить","themeEmpty":"Других тем в каталоге пока нет — следите за обновлениями","timeAll":"Всё время","timeDay":"Сутки","timeMonth":"30 дней","timeQuarter":"90 дней","timeWeek":"7 дней","timeYear":"Год","toastReady":"установлен и работает","toastTheme":"теперь активна. Переключить можно в «Настройки → Маркет плагинов → Темы»","today":"Updated today","toggleFail":"Переключить не удалось","trustedLabel":"Platform-verified source","ungrouped":"Без группы","uninstall":"Удалить","uninstallConfirmDesc":"Плагин будет удалён из текущего профиля.","uninstalling":"Удаление…","unlockDelete":"Remove","unlockDeleteConfirm":"Remove this unlock record? Installed plugins are not affected.","unlockDeleteFail":"Remove failed","unlockDeleteWorking":"Removing…","unlockInstall":"Install","unlockInstallOk":"Installed: {0} — find it in the Installed tab","unlockedAt":"Unlocked {0}","unlockedEmpty":"Nothing unlocked yet. Seen a passcode in a creator’s video? Type it in.","unlockedTitle":"My unlocked plugins","upToDate":"Обновлений нет","update":"Обновить","updateAll":"Обновить все","updateFail":"Обновить не удалось","updateNow":"Обновить сейчас","updated":"✓ Обновлён — перезапустите, чтобы применить","updatedLive":"✓ Обновлён — работает","updating":"Обновление…","versionHint":"Версия магазина плагинов — укажите её при сообщении об ошибке","videoFallback":"Not playing? Watch in browser","videoLabel":"Tutorial video","viewReplacement":"Посмотреть замену","viewSource":"Исходник","webdav":"WebDAV","webdavNote":"Адрес WebDAV и имя пользователя остаются только в этом браузере; пароль хранится на сервере и вводится заново каждую сессию.","webdavPassword":"Пароль (необязательно)","webdavPreset":"Готовая настройка провайдера","webdavRestore":"Восстановить с WebDAV","webdavUpload":"Выгрузить копию","webdavUrl":"Адрес файла копии","webdavUser":"Имя пользователя (необязательно)"},"feedback":{"action.dislike":"Плохой ответ","action.dislikeActive":"Убрать оценку","action.like":"Хороший ответ","action.likeActive":"Убрать оценку","error.conflict":"Эту оценку изменили в другом месте; показано актуальное состояние","error.generic":"Не удалось сохранить оценку","error.load":"Не удалось загрузить оценку","note.aria":"Комментарий к оценке","note.cancel":"Отмена","note.dialog":"Отзыв","note.open":"Добавить комментарий","note.placeholder":"Что получилось хорошо, а что нет? (необязательно)","note.save":"Сохранить"},"goal":{"action.cancel":"Отменить правку","action.clear":"Снять цель","action.edit":"Изменить цель","action.pause":"Приостановить цель","action.resume":"Продолжить цель","action.save":"Сохранить цель","commandInput.aria":"Ввод команды","objective.aria":"Формулировка цели","phase.active":"Цель в работе","phase.blocked":"Цель заблокирована","phase.paused":"Цель на паузе"},"im-hub":{"f.agentCwd":"Рабочая папка","f.agentCwdHint":"Папка для сессий агента; пусто — папка процесса dsh.","f.agentMaxMessageLength":"Длина сообщения","f.agentMaxMessageLengthHint":"Максимум символов в исходящем сообщении; длинные ответы разбиваются.","f.agentModel":"Модель","f.agentModelHint":"Переопределить модель; пусто — как задано в установке.","f.agentProvider":"Провайдер","f.agentProviderHint":"Переопределить провайдера модели; пусто — как задано в установке.","f.allowedUserIdsHint":"Идентификаторы через запятую; пусто — доступ всем (для боевой работы не советуем).","f.configured":"Задано","f.enabled":"Включено","f.enabledHint":"Общий выключатель всего IM-шлюза.","f.feishuAllowedUserIds":"Разрешённые open id","f.feishuAppId":"App id","f.feishuAppIdHint":"App id приложения Feishu (cli_…).","f.feishuAppSecret":"App secret","f.feishuEnabled":"Включено","f.feishuEnabledHint":"Включить адаптер Feishu по постоянному WebSocket-соединению (публичный адрес не нужен).","f.httpHost":"Адрес привязки","f.httpHostHint":"Адрес, на котором слушают HTTP-серверы в режиме вебхуков.","f.httpPort":"Порт привязки","f.httpPortHint":"Порт, на котором слушают HTTP-серверы в режиме вебхуков.","f.inherit":"Наследовать","f.larkAllowedUserIds":"Разрешённые open id","f.larkAppId":"App id","f.larkAppSecret":"App secret","f.larkEnabled":"Включено","f.larkEnabledHint":"Включить международный адаптер Lark (open.larksuite.com).","f.mockEnabled":"Включено","f.mockEnabledHint":"Адаптер только для тестов: локальный HTTP-эндпоинт без учётных данных платформы.","f.mockPort":"Порт","f.mockPortHint":"Фиксированный HTTP-порт тестового эндпоинта (0 — любой свободный).","f.notConfigured":"Не задано","f.off":"Выкл","f.on":"Вкл","f.secretHint":"Хранится на сервере и больше не показывается. Оставьте пустым, чтобы сохранить текущее значение.","f.telegramAllowedUserIds":"Разрешённые id пользователей","f.telegramEnabled":"Включено","f.telegramEnabledHint":"Включить адаптер Telegram Bot API с опросом обновлений.","f.telegramToken":"Токен бота","f.telegramTokenHint":"Токен от @BotFather (123456:ABC-DEF…).","f.wecomAgentId":"Agent id","f.wecomAgentIdHint":"Agent id приложения WeCom.","f.wecomAllowedUserIds":"Разрешённые id пользователей","f.wecomCorpId":"Corp id","f.wecomCorpIdHint":"Идентификатор организации из консоли WeCom.","f.wecomCorpSecret":"App secret","f.wecomEnabled":"Включено","f.wecomEnabledHint":"Включить адаптер WeCom с обратным вызовом (нужен публичный адрес).","f.wecomEncodingAesKey":"EncodingAESKey","f.wecomToken":"Токен обратного вызова","g.agent":"Агент","g.feishu":"Feishu (Китай)","g.general":"Общие","g.http":"HTTP (режим вебхуков)","g.lark":"Lark (международный)","g.mock":"Тестовый адаптер","g.telegram":"Telegram","g.wecom":"WeCom (WeChat Work)","p.agentCwd":"Например: /home/user/projects/my-agent (пусто — папка DSH)","p.agentMaxMessageLength":"Например: 4000","p.agentModel":"Например: deepseek-v4-flash (пусто — по умолчанию)","p.agentProvider":"Например: volcengine (пусто — по умолчанию)","p.feishuAllowedUserIds":"Например: ou_xxxxxxxxxxxxx","p.feishuAppId":"Например: cli_xxxxxxxxxxxxx","p.feishuAppSecret":"App Secret приложения Feishu","p.httpHost":"Например: 0.0.0.0","p.httpPort":"Например: 8080","p.larkAllowedUserIds":"Например: ou_xxxxxxxxxxxxx","p.larkAppId":"Например: cli_xxxxxxxxxxxxx","p.larkAppSecret":"App Secret приложения Lark","p.mockPort":"Например: 9099 (0 — автоматически)","p.telegramAllowedUserIds":"Например: 123456789, 987654321","p.telegramToken":"Например: 123456789:AA...","p.wecomAgentId":"Например: 1000002","p.wecomAllowedUserIds":"Например: ivanov, petrov","p.wecomCorpId":"Например: wwxxxxxxxxxxxxxx","p.wecomCorpSecret":"Secret приложения WeCom","p.wecomEncodingAesKey":"EncodingAESKey из 43 символов","p.wecomToken":"Токен адреса обратного вызова","settings.collapse":"Свернуть","settings.description":"Подключает агентов dsh к Feishu (Lark), WeCom и Telegram. Каждый чат получает свою сессию агента.","settings.discard":"Отменить","settings.expand":"Развернуть","settings.invalidNumber":"Введите корректное число","settings.overridden":"Переопределено","settings.readOnly":"Установка доступна только для чтения: настройки из интерфейса не меняются.","settings.reset":"Сбросить","settings.save":"Сохранить","settings.saveFailed":"Сохранить не удалось","settings.saving":"Сохранение…","settings.title":"IM-шлюз (dsh-im-hub)","settings.unsaved":"Есть несохранённые изменения"},"job":{"count.idle.few":"{count} фоновые задачи","count.idle.many":"{count} фоновых задач","count.idle.one":"{count} фоновая задача","count.idle.other":"{count} фоновых задач","count.live.few":"{count} фоновые задачи выполняется","count.live.many":"{count} фоновых задач выполняется","count.live.one":"{count} фоновая задача выполняется","count.live.other":"{count} фоновых задач выполняется","duration.hours":"{hours} ч {minutes} мин","duration.minutes":"{minutes} мин {seconds} с","duration.seconds":"{seconds} с","duration.title.done":"Заняло {duration}","duration.title.live":"Выполняется {duration}","list.aria":"Фоновые задачи","status.completed":"завершена","status.failed":"ошибка","status.killed":"отменена","status.running":"выполняется","status.stopping":"останавливается"},"model":{"action.reload":"Обновить","blocked.composer":"Эта модель недоступна — выберите другую, чтобы продолжить","command.description":"Выбрать модель для этого диалога","effort.providerDefault":"По умолчанию","empty.efforts":"У этой модели нет уровней рассуждения.","empty.models":"Доступных моделей нет.","error.action":"Операция с моделью не удалась: {message}","menu.aria":"Модель и уровень рассуждения","menu.effort":"Уровень рассуждений","menu.model":"Модель","option.loadError":"Каталог не загрузился: {message}","status.loading":"Обновление списка моделей…","trigger.aria":"Выбор модели, сейчас {model}","trigger.ariaEffort":"Выбор модели, сейчас {model}, уровень рассуждения {effort}","trigger.fallback":"Выбрать модель","trigger.loading":"Загрузка моделей…","trigger.selectAria":"Выбрать модель","warning.groupLoad":"{name} не загрузился: {message}"},"opencode-palette":{"bodyStyle":"Стиль текста","codeFont":"Шрифт кода","disableTitle":"Нажмите, чтобы отключить тему","disabled":"Отключено","enableTitle":"Нажмите, чтобы включить тему","enabled":"Включено","fontPreview":"моно","fontSize":"Размер шрифта","group.cool-blue":"Холодные синие","group.cyan-blue":"Сине-голубые","group.neutral":"Нейтральные","group.special":"Особые","group.teal":"Бирюзовые","group.transparent":"Прозрачные","group.violet":"Фиолетовые","group.warm":"Тёплые","group.yellow-green":"Жёлто-зелёные","mono":"Моноширинный (терминал)","noMatch":"Подходящих тем не найдено","panelName":"Палитра Opencode","sans":"Обычный (интерфейс)","search":"Поиск тем…","subtitle":"34 официальные темы opencode — переключение в один клик","systemDefault":"Системная (по умолчанию)","themeCount":"34 темы · по цветовым группам","themeSection":"Выбор темы","typography":"Шрифт и размер"},"permission.access":{"confirm.acknowledge":"Я понимаю риски и хочу продолжить","confirm.cancel":"Отмена","confirm.description":"Полный доступ убирает часть подтверждений и позволяет агенту действовать напрямую, включая чувствительные операции, изменение файлов и внешние команды. Включайте, только если доверяете текущей задаче.","confirm.enable":"Включить полный доступ","confirm.title":"Включить полный доступ?","preset.fullAccess":"Полный доступ","preset.readOnly":"Только чтение","preset.workspaceWrite":"Запись в рабочую область"},"personalDirective":{"disabled":"Директива: Выкл","enabled":"Директива: Вкл","failed":"Сбой подключения переключателя директивы","switching":"Переключение…","title":"Переключить персональную директиву"},"pin":{"action.pin":"Закрепить","action.unpin":"Открепить"},"plan":{"chip.exitFailed":"Не удалось выйти из режима планирования","chip.label":"План","chip.off.aria":"Режим плана выключен, нажмите, чтобы включить","chip.off.title":"Режим плана выключен — нажмите, чтобы включить (/plan)","chip.on.aria":"Режим плана включён, нажмите, чтобы выключить","chip.on.title":"Режим плана включён — нажмите, чтобы выключить (/plan off)"},"plugin-store":{"dialog.close":"Закрыть магазин плагинов","header.open":"Открыть магазин плагинов","header.title":"Магазин плагинов DSH","settings.tab":"Магазин плагинов","store.analyzeFailed":"Передать разбор агенту не удалось","store.analyzeHint":"Отправить эту ошибку в новую сессию агента для разбора.","store.analyzeSent":"Отправлено агенту","store.analyzeWithAgent":"Попросить агента разобраться","store.analyzing":"Создаём сессию агента…","store.cancel":"Отмена","store.category":"Категория","store.categoryAll":"Все категории","store.confirmInstall":"Установить плагин","store.confirmRemove":"Удалить плагин","store.confirmUpdate":"Обновить плагин","store.copied":"Ссылка для установки скопирована","store.copyInstall":"Скопировать ссылку для установки","store.disclaimer":"Наличие в каталоге не подтверждает работоспособность, совместимость, безопасность или качество.","store.done":"Готово","store.empty":"Под эти фильтры ничего не подходит","store.install":"Установить","store.installFailed":"Установить не удалось","store.installSuccess":"Установлено. Перезапустите DSH Web, чтобы плагин заработал.","store.installed":"Установлен","store.installedLoadFailed":"Список установленных плагинов недоступен","store.installedOnly":"Только установленные","store.installing":"Установка…","store.loadFailed":"Не удалось загрузить каталог","store.loadMore":"Показать ещё","store.loading":"Загрузка каталога плагинов…","store.openDetails":"Открыть карточку в магазине","store.refresh":"Обновить каталог","store.refreshFailed":"Каталог не обновился; показаны последние успешные данные","store.remove":"Удалить плагин","store.removeDetail":"Меняется только зависимость текущего профиля. Чтобы удаление вступило в силу, перезапустите DSH Web.","store.removeFailed":"Удалить не удалось","store.removeLead":"Плагин будет удалён из текущего профиля DSH Web.","store.removeSuccess":"Удалено. Перезапустите DSH Web, чтобы изменение вступило в силу.","store.removeTitle":"Удаление плагина","store.removing":"Удаление…","store.results":"{visible} из {total} проектов","store.retry":"Повторить","store.riskAcknowledge":"Я понимаю риск и хочу установить этот сторонний плагин","store.riskDetail":"Присутствие в каталоге не является проверкой безопасности, совместимости или качества. Установленный код выполняется с правами процесса DSH, а чтобы он заработал, DSH Web нужно перезапустить.","store.riskLead":"В текущий профиль DSH Web будет установлен код из стороннего репозитория.","store.riskTitle":"Подтверждение риска стороннего плагина","store.search":"Поиск по названию, автору, описанию или теме","store.sort":"Сортировка","store.sortName":"Название","store.sortRecommended":"Рекомендуемые","store.sortStars":"Звёзды","store.sortUpdated":"Недавно обновлённые","store.stars":"звёзд: {count}","store.topicListed":"Указана тема","store.update":"Обновить","store.updateAvailable":"Есть обновление","store.updateRiskDetail":"Обновление заменит версию плагина в этом профиле. Чтобы оно вступило в силу, перезапустите DSH Web.","store.updateRiskLead":"В текущий профиль DSH Web будет установлена более новая ревизия стороннего репозитория.","store.updateRiskTitle":"Подтверждение обновления стороннего плагина","store.updateSuccess":"Обновлено. Перезапустите DSH Web, чтобы плагин заработал.","store.updated":"Каталог обновлён {date}","store.updating":"Обновление…","store.validation.check-failed":"Проверка структуры не пройдена","store.validation.check-pending":"Проверка структуры в очереди","store.validation.check-running":"Идёт проверка структуры","store.validation.expired":"Нужна повторная проверка","store.validation.inconclusive":"Требует рассмотрения","store.validation.not-applicable":"Вне проверки плагинов","store.validation.recorded":"Есть запись о проверке","store.validation.sandbox-failed":"Проверка в песочнице не пройдена","store.validation.sandbox-pending":"Проверка в песочнице в очереди","store.validation.sandbox-running":"Идёт проверка в песочнице","store.validation.security-review":"Проверка безопасности","store.validation.unrecognized":"Требует опознания","store.validation.verified":"Проверен","store.verified":"Проверен","store.verifiedOnly":"Только проверенные"},"question":{"action.next":"Дальше","action.skip":"Пропустить вопрос","custom.placeholder":"Впишите свой ответ","error.incomplete":"Сначала ответьте на этот вопрос.","error.unanswered":"Выберите вариант или впишите свой ответ.","nav.cancel":"Закрыть все вопросы","nav.maximize":"Развернуть карточку вопроса","nav.minimize":"Свернуть карточку вопроса","nav.next":"Следующий вопрос","nav.prev":"Предыдущий вопрос","option.recommended":"Рекомендуем","plan.approve":"Утвердить","plan.decline":"Отклонить","plan.discuss":"Обсудить","plan.header":"Проверка плана"},"reference":{"candidate.file":"Файл","candidate.folder":"Папка","candidate.noCwd":"(нет cwd)","candidate.session":"Сессия","crumb.root":"Рабочая область","section.files":"Файлы и папки","section.sessions":"Диалоги сессий","time.days":"{n} дн.","time.hours":"{n} ч","time.minutes":"{n} мин","time.months":"{n} мес.","time.now":"сейчас","time.years":"{n} г."},"schedule.catalog":{"frequency.every":"Каждые {value} {unit}","frequency.once":"Однократно","list.aria":"Активные напоминания","relative.future":"через {value} {unit}","relative.now":"Срок наступил","relative.overdue":"просрочено на {value} {unit}","status.overdue":"Просрочено","status.scheduled":"Запланировано","trigger.one":"{count} напоминание","trigger.other":"{count} напоминаний","unit.day.one":"день","unit.day.other":"дней","unit.hour.one":"час","unit.hour.other":"часов","unit.minute.one":"минуту","unit.minute.other":"минут","unit.second.one":"секунду","unit.second.other":"секунд"},"session-log-download":{"dialog.close":"Закрыть","dialog.commandFailed":"Не удалось запустить экспорт сессии.","dialog.errorTitle":"Экспорт сессии не удался","dialog.preparingDescription":"Готовится ZIP с этой сессией, её подсессиями и вложениями.","dialog.preparingTitle":"Экспорт сессии","dialog.successDescription":"Браузер загружает ZIP с сессией.","dialog.successTitle":"Загрузка сессии началась","header.action":"Журнал сессии"},"settings":{"close":"Закрыть","connection.connected":"Подключено","connection.connecting":"Подключение","connection.error":"Отключено","connection.reconnect":"Отключено, переподключиться сейчас","connection.restart":"Подключение, перезапустить сейчас","connection.retry":"Переподключиться сейчас","general.nav":"Общие","openDocument":"Открыть файл настроек","openDocument.error":"Не удалось открыть файл настроек","title":"Настройки","trigger":"Настройки"},"settings.agentPreset":{"brokenBadge":"Не загрузился","brokenNoCopy":"Пресет, который не загрузился, скопировать нельзя","builtIn":"Встроенный","builtInGroup":"Встроенные","cancel":"Отмена","close":"Закрыть","composition":"Композиция (agent.cordis.yml)","copyIntro":"Пресет копируется целиком на этой машине. Идентификатор станет именем каталога и позже не меняется; всё остальное правится в файлах самого пресета.","copyOf":"Скопирован с","copyTitle":"Скопировать пресет","create":"Создать","creating":"Создание…","creatorDraft":"Набросать свой пресет в режиме «Конструктор»","customGroup":"Свои","delete":"Удалить","deleteConfirm":"Удалить","deleteDescription":"Каталог пресета будет удалён. Уже запущенные на нём сессии продолжат работать, но выбрать его для новых нельзя.","deleteTitle":"Удалить этот пресет?","deleting":"Удаление…","description":"Действует на сессии, запущенные с этого момента. Работающие сессии остаются на своём пресете.","displayName":"Название","displayNamePlaceholder":"Показывается в списке; по умолчанию — идентификатор","duplicate":"Скопировать","duplicateUnavailable":"В этой установке нет каталога пресетов с правом записи","error":"Не удалось загрузить пресеты агента.","headerHint":"Пресет агента, на котором идёт сессия; зафиксирован при запуске","idInvalid":"Строчные буквы, цифры и дефисы, начиная с буквы или цифры.","idRequired":"Задайте пресету идентификатор.","idTaken":"Пресет с таким идентификатором уже есть.","inUse":"Используется","loading":"Загрузка пресетов…","nav":"Пресеты агента","noDescription":"Без описания.","openLocation":"Открыть папку","presetCodeDescription":"Всё, что умеет обычный режим, но инструменты отдаются через Code Mode SDK: модель собирает многошаговые операции в одну программу на TypeScript.","presetCodeName":"Режим кода","presetCordisDescription":"Для создания своих пресетов: всё из обычного режима плюс инспекция рантайма, опыты с плагинами и подсказки по авторству пресетов.","presetCordisName":"Конструктор","presetId":"Идентификатор","presetIdPlaceholder":"my-agent","presetMinimalDescription":"Агент из двух инструментов: постоянный bash и str_replace_editor.","presetMinimalName":"Минимальный режим","presetPtcDescription":"Полноценный агент разработки без инструмента рабочих процессов; остальные инструменты доступны через SDK режима PTC, что позволяет модели объединять многоэтапные операции в одну программу TypeScript.","presetPtcName":"Режим PTC","presetStandardDescription":"Полноценный кодинг-агент: правка файлов, консоль, поиск по файлам и в вебе, скиллы, планирование, цели, субагенты и воркфлоу.","presetStandardName":"Обычный режим","retry":"Повторить","revealedPathLabel":"Файлы пресета:","seatHint":"Пресет агента для сессии, которую вы собираетесь запустить","sectionIntro":"Пресет — это состав плагинов, на котором работает агент сессии: его инструменты, промпт и возможности. Скопируйте готовый и допилите под себя или попросите агента набросать свой в режиме «Конструктор».","setDefault":"Сделать основным","showLocation":"Показать расположение","switchRefused":"Не удалось переключиться на {name}: {reason}","title":"Пресет агента","userTrust":"Свой","view":"Посмотреть"},"settings.commandcode":{"accountAdd":"Добавить аккаунт","accountDefault":"Основной аккаунт","accountKey":"API-ключ","accountKeyHint":"API-ключ этого аккаунта. Если оставить поле пустым, сохранённый ключ останется без изменений.","accountLabel":"Название аккаунта","accountRemove":"Удалить","accountSeparator":"────────────────────","accountTitle":"📊 {label}{badges}","accountsHint":"Когда активный аккаунт достигает лимита использования (429) или его ключ недействителен (401), запросы переключаются на следующий аккаунт; когда все аккаунты исчерпаны, ошибка указывает ближайшее время сброса окна.","accountsTitle":"Смена аккаунта","activeAccount":"Активный аккаунт","activeAccountAuto":"Авто (первый доступный аккаунт)","activeAccountHint":"Закрепите предпочтительный аккаунт; применяется к следующему запросу после сохранения. Если выбранный аккаунт исчерпан, запросы будут перенаправлены на другой доступный аккаунт.","activeBadge":" ✅ активен","advancedInvalid":"Число в расширенных настройках не готово к сохранению; раскройте, чтобы исправить.","advancedOverriddenMany":"{count} настроено","advancedOverriddenOne":"1 настроенный","advancedSettings":"Дополнительно","advancedSettingsHint":"Редко используемые параметры: базовый URL API, рабочая директория, тайм-ауты и фильтрация моделей.","apiBase":"Базовый URL API","apiBaseHint":"По умолчанию используется https://api.commandcode.ai; обычно оставляйте как есть.","apiKey":"API-ключ","apiKeyHint":"Создайте его в консоли commandcode.ai. Если оставить это поле пустым, сохранённый ключ останется без изменений.","apiKeyLocked":"Ключ предоставлен только для чтения","apiKeySet":"Настроено","apiKeyUnset":"Не настроено","barLine":" └ {bar} {pct}%","blockedInvalidKey":"⛔ API-ключ недействителен или истёк — сервер отклонил запросы (401); проверьте ключ аккаунта","blockedNetwork":"⚠️ Не удалось подключиться к Command Code — проверьте сеть или адрес API","blockedServiceUnavailable":"⚠️ Сервис Command Code временно недоступен (5xx); повторите позже","cancel":"Отмена","cardConfiguredHint":"API-ключ готов. Чтобы заменить его, добавить ротацию аккаунтов, проверить использование или изменить базовый API, откройте страницу \"Command Code\" в Настройках.","cardLoadingHint":"Загрузка конфигурации командного кода…","cardRegistrationHint":"Эта карта предоставлена плагином Command Code; для отображения всех элементов управления требуется более новая версия DeepSeek Harness.","cardRouteActive":"Активный","cardTitle":"Подключение командного кода","cooldownBadge":" ⏳ охлаждение, сброс {when}","costLine":" 💰 Расход {money} ({credits} кредитов)","creditsHeader":"── Кредиты ──────────────────────────","discard":"Отменить","errorText":"Не удалось получить статистику Command Code: {message}","exceededWarning":" ⚠️ превышен!","filterModelsByPlan":"Скрыть модели вне тарифного плана","filterModelsByPlanHint":"Если включено, в выборе моделей отображаются только те, что входят в вашу подписку; при наличии баланса кредитов по запросу показывается полный каталог.","fiveHourLine":" ⏱ 5-часовое {used} / {cap}{warn}","hide":"Скрыть","imageGate":"В сессии уже есть изображения, а модель {model} не поддерживает изображения; выберите модель с поддержкой зрения или удалите изображения из сессии.","intro":"Настройте подключение к Command Code Provider. API-ключ сохраняется только в локальной службе учетных данных и никогда не отображается; остальные поля записываются в пользовательские настройки и вступают в силу при следующем запросе.","invalidCredentialBadge":" ⛔ неверный ключ","invalidNumber":"Недопустимый номер","loginButton":"Войдите в Command Code","loginCancel":"Отменить вход","loginCancelled":"Вход отменён.","loginDenied":"Доступ запрещён. Попробуйте снова или вставьте ключ вручную.","loginFailedGeneric":"Не удалось войти; попробуйте снова или вставьте ключ вручную.","loginHintIdle":"Не хотите создавать ключ вручную? Войдите в систему, и ваш браузер откроет страницу авторизации commandcode.ai; одобренный ключ сохранится в локальном сервисе учетных данных и будет применяться к следующему запросу.","loginInvalidKey":"Доставленный ключ не прошел проверку (401). Попробуйте снова или вставьте его вручную.","loginNetwork":"Не удалось подключиться к сервису Command Code для проверки ключа; проверьте подключение к сети и повторите попытку.","loginOpenLink":"Откройте страницу авторизации ↗","loginStarting":"Запуск локального серверного обработчика callback…","loginStoreFailed":"Не удалось сохранить ключ в локальной службе учетных данных; вставьте его вручную.","loginSuccess":"Вошли как","loginTimeout":"Истекло время ожидания ответа авторизации; попробуйте снова.","loginTitle":"Войти, чтобы получить ключ","loginUnavailable":"Вход в систему недоступен в этой среде; вставьте {API key} вместо этого.","loginWaiting":"Ожидание авторизации в вашем браузере…","monthlyLine":" 💳 В месяц {monthly} (куплено {purchased} / бесплатно {free})","nav":"Код команды","noData":"(нет данных — проверьте API-ключ)","numberTooLarge":"Превышено допустимое максимальное значение (2147483647 мс)","numberTooSmall":"Должно быть не менее 1 (мс)","overridden":"Переопределено","partialFailures":"⚠️ Сбои на некоторых эндпоинтах: {list}","planLine":" 📦 Тариф {name}{status}{period}","planPeriodSuffix":" · окончание периода: {date}","rateLimitBadge":" ⏳ лимит запросов (ожидание окна)","readOnly":"Настройки доступны только для чтения.","requestTimeoutMs":"Таймаут запроса (мс)","requestTimeoutMsHint":"Время ожидания первого байта ответа; по умолчанию 60000.","requestsLine":" 💬 Запросы {n} / сбоев {f} успешность {r}%","reset":"Сбросить","resetSuffix":"сброс {when}","ruleAccount":"Целевой аккаунт","ruleAdd":"Добавить правило","ruleHint":"Отметьте модели для маршрутизации в выпадающем списке (множественный выбор), затем выберите целевой аккаунт.","ruleModel":"Модели","ruleModelCount":"Выбрано моделей: {count}","ruleModelPick":"Выберите модели…","ruleRemove":"Удалить","rulesCatalogFailed":"Не удалось загрузить каталог моделей — выбор моделей недоступен; сохранённые правила продолжают действовать.","rulesEmpty":"Правил пока нет.","rulesHint":"Выберите модели (множественный выбор) и направьте их на конкретный аккаунт. Когда модель из запроса совпадает с правилом и аккаунт доступен, запрос обслуживается им; при исчерпании или недоступности аккаунта происходит откат к стандартной ротации. Правила проверяются по порядку сверху вниз — срабатывает первое совпадение.","rulesOrder":"Порядок правил","rulesTitle":"Правила маршрутизации моделей","rulesTotal":"Всего правил: {count}","save":"Сохранить","saveFailed":"Не удалось сохранить, попробуйте снова.","saved":"Сохранено ✓","saving":"Сохранение","show":"Показать","streamIdleTimeoutMs":"Таймаут простоя потока (мс)","streamIdleTimeoutMsHint":"Как долго зависший поток считается мёртвым; по умолчанию 300000 (намеренно щедро — модели с долгим обдумыванием могут молчать минутами).","title":"Код команды","tokensLine":" 🔤 Токены {in} вход / {out} выход","unconfigured":" (API-ключ не настроен)","unsaved":"Не сохранено","updateAvailable":"доступно обновление","updateHint":"Доступна новая версия; нажмите для просмотра заметок о выпуске. Уведомление исчезнет после обновления плагина.","usageActive":"Активно","usageCooldown":"Охлаждение","usageCost":"Потратить","usageError":"Не удалось получить данные об использовании","usageExceeded":"Превышено","usageFailed":"не удалось","usageFiveHour":"5-часовое окно","usageFree":"Бесплатно","usageHeader":"── Запросы ──────────────────────────","usageInvalidKey":"Неверный ключ","usageKeyClear":"Очистить сохранённый ключ","usageKeyClearStaged":"Будет очищено при сохранении","usageKeyInvalid":"Неверный или просроченный API-ключ","usageKeyInvalidHint":"Сервер отклоняет все запросы (401). Проверьте ключ, настроенный для этого аккаунта, или создайте новый в консоли commandcode.ai.","usageLoading":"Получение данных об использовании аккаунта…","usageMonthly":"Ежемесячно","usageNetworkError":"Не удалось подключиться к сервису Command Code","usageNetworkHint":"На сервер не поступило ни одного запроса. Проверьте подключение к сети или настройку базового API.","usageNoKey":"Настройте API-ключ, чтобы увидеть здесь данные об использовании и состоянии кредитов этого аккаунта.","usagePartial":"Некоторые данные конечной точки недоступны","usagePeriodEnd":"Период заканчивается","usagePurchased":"Куплено","usageRefresh":"Обновить","usageRefreshing":"Обновление…","usageRequests":"Запросы","usageReset":"Сбросить","usageServiceUnavailable":"Сервис Command Code временно недоступен","usageServiceUnavailableHint":"Сервер вернул ошибки (5xx); попробуйте обновить позже.","usageSuccessRate":"Уровень успеха","usageTitle":"Использование аккаунта","usageTokens":"Токены","usageTokensIn":"в","usageTokensOut":"выход","usageUnconfigured":"Для этого аккаунта ещё не настроен API-ключ.","usageUndoKeyClear":"Отменить очистку","usageUpdated":"Обновлено","usageWeekly":"Еженедельное окно","webSearch":"Использовать Command Code для веб-поиска DSH","webSearchHint":"Если включено, инструмент web_search для модели работает через Command Code (тот же API-ключ и base URL, что и в чате). Если выключено, используется встроенный поиск DeepSeek.","weeklyLine":" 📅 Недельное {used} / {cap}{warn}","windowBarLine":" └ {bar} сброс {when}","windowsHeader":"── Использование окна ───────────────","workingDir":"Рабочая директория","workingDirHint":"Необязательно. Оставьте пустым, чтобы использовать текущий рабочий каталог процесса (указан в поле); укажите путь только для фиксации конкретного расположения."},"settings.locale":{"language.title":"Язык"},"settings.models":{"add":"Добавить провайдера","addModel":"Добавить модель","advancedHint":"Остальные поля живут в settings.yaml — правьте этот раздел напрямую.","apply":"Применить","applying":"Применение…","baseUrl":"Базовый URL","baseUrlDefault":"По умолчанию у провайдера","cancel":"Отмена","close":"Закрыть","conflict":"Пока карточка была открыта, настройки изменил кто-то ещё. Закройте и откройте заново, чтобы править актуальные значения.","contextWindow":"Окно контекста","contextWindowPlaceholder":"Как у провайдера по умолчанию","create":"Создать провайдера","creating":"Создание…","credentialConfigured":"API-ключ задан","credentialMissing":"API-ключ не задан","customAdd":"Добавить своего провайдера","customApi":"Протокол API","customApiUnset":"Не выбран","customBaseUrlPlaceholder":"https://gateway.example/v1","customDisplayName":"Отображаемое имя","customNeedsBaseUrl":"Своему провайдеру нужен базовый URL.","customNeedsModels":"Своему провайдеру нужна хотя бы одна модель.","customRoute":"Идентификатор провайдера","customRouteHint":"Идентификатор в нижнем регистре, начинается с буквы. По нему провайдер адресуется в запросах, и так же называется его ключ.","customRouteInvalid":"Начните со строчной буквы, дальше строчные буквы, цифры и дефисы.","customRouteTaken":"Такой идентификатор уже занят другим провайдером.","customTag":"Свой","customTitle":"Свой провайдер","customized":"Настройки изменены","deleteConfirm":"Удалить {provider}","deleteDescription":"Удаление {provider} убирает его настройки. Ключ, которым он пользовался, хранится отдельно и останется.","deleteDescriptionWithCredential":"Удаление {provider} убирает его настройки и сохранённый API-ключ.","deleteTitle":"Удалить {provider}?","deleting":"Удаление {provider}…","edit":"Изменить","editProvider":"Изменить {provider}","fetchAdopt":"Добавить выбранные","fetchDescription":"Вот модели, доступные у этого провайдера. Отметьте те, что нужно добавить.","fetchDeselectAll":"Снять выбор","fetchEmpty":"Провайдер не вернул ни одной модели. Добавьте их вручную.","fetchModels":"Запросить список моделей","fetchNeedsBaseUrl":"Сначала укажите базовый URL, потом запрашивайте.","fetchNoMatches":"Нет подходящих моделей.","fetchSearch":"Поиск моделей","fetchSelectAll":"Выбрать все","fetchTitle":"Выберите модели","fetching":"Запрос к провайдеру…","intro":"Введите свои API-ключи, чтобы пользоваться моделями этих провайдеров.","keyBlank":"Введите API-ключ или оставьте поле пустым, чтобы сохранить прежний.","keyBlankNew":"Введите API-ключ или оставьте поле пустым, если провайдер авторизуется иначе.","keyEnvLocked":"Задан переменной окружения (только чтение)","keyIllegalCharacters":"Ключ в недопустимом формате. Проверьте его.","keyInput":"API-ключ","keyPlaceholder":"Введите API-ключ","keyPlaceholderNative":"Введите API-ключ или оставьте пустым для авторизации из окружения","keyRequired":"Чтобы продолжить, введите API-ключ.","keyStored":"Задан — введите новое значение, чтобы заменить","loadFailed":"Не удалось загрузить список провайдеров","maxTokens":"Максимум выходных токенов","maxTokensPlaceholder":"Как у провайдера по умолчанию","model":"Модель","modelAdvanced":"Ёмкости","modelCapacityInvalid":"Ёмкость задаётся числом, можно с суффиксом K или M.","modelContextInvalid":"Окно контекста — положительное число, например 131072, 256K или 1M.","modelContextWindow":"Окно контекста","modelDuplicate":"Каждый идентификатор модели встречается один раз.","modelId":"Идентификатор модели","modelIdDuplicate":"Идентификатор модели должен быть уникальным.","modelIdRequired":"Нужен идентификатор модели.","modelMaxTokens":"Максимум выходных токенов","modelMaxTokensInvalid":"Максимум выходных токенов — положительное число, например 8192, 64K или 1M.","modelName":"Отображаемое имя","modelNameInvalid":"Отображаемое имя не может быть пустым.","modelNamePlaceholder":"Пусто — возьмётся идентификатор модели","models":"Модели","modelsCustomized":"Каталог моделей изменён","modelsEmpty":"В выборе моделей не будет ничего. Неуказанные идентификаторы всё равно можно отправлять напрямую.","modelsInherited":"По умолчанию, как в адаптере","nav":"Модели","onboardingDescription":"Настройте официального провайдера DeepSeek, чтобы начать.","onboardingLater":"Настроить позже","onboardingSave":"Сохранить и продолжить","onboardingSaving":"Сохранение…","onboardingTitle":"Добавьте API-ключ, чтобы начать","provider":"Провайдер","readOnly":"В этой установке файл настроек доступен только для чтения.","remove":"Удалить","removeModel":"Удалить модель","removeProvider":"Удалить {provider}","resetModels":"Вернуть значения по умолчанию","retry":"Повторить","savedProvider":"{provider} сохранён.","settingsPathUnresolvable":"неразрешимый путь настроек","title":"Модели","welcomeBody":"DeepSeek Harness 0.1 находится на стадии тестирования для разработчиков Harness. Многие компоненты требуют дальнейшего улучшения, и мы приветствуем обратную связь от сообщества. Базовые плагины и системные API DeepSeek Harness продолжат активно развиваться в ближайшие месяцы.\n\nМы с нетерпением ждём возможности исследовать границы искусственного интеллекта вместе с разработчиками по всему миру на базе открытой, модульной и повторно используемой инфраструктуры. Приглашаем разработчиков присоединиться к экосистеме плагинов DSH.","welcomeContinue":"Продолжить","welcomeError":"Не удалось сохранить подтверждение. Попробуйте ещё раз.","welcomeTitle":"Уведомление о внутреннем тестировании"},"settings.ollama-cloud":{"addModel":"Добавить модель вручную","apiKey":"API-ключ","apiKeyConfigured":"Настроено — введите новое значение для замены","apiKeyPending":"Введён новый ключ — теперь он используется для обнаружения; Сохранить для хранения","apiKeyPlaceholder":"Введите API-ключ","apiKeyUnset":"API-ключ не настроен","applySelected":"Применить выбранное","baseURL":"URL API","cancel":"Отмена","close":"Закрыть","collapse":"Свернуть настройки","connection":"Подключение","customized":"Пользовательский каталог","defaultEffort":"Стандартное мышление","description":"Родной API-ключ Ollama Cloud, конечная точка и каталог моделей.","discard":"Отменить","dragModel":"Перетащите для изменения порядка","expand":"Развернуть настройки","fetchEmpty":"Конечная точка не вернула ни одной модели.","fetchModels":"Получить доступные модели","fetchingModels":"Получение моделей…","inherited":"Использование составленного каталога","invalidApiKey":"API-ключ не может состоять только из пробелов.","invalidBaseURL":"Введите URL API HTTP или HTTPS.","invalidModel":"Каждая модель должна иметь уникальный ID и допустимые положительные значения мощностей.","loading":"Загрузка настроек плагина…","modelContext":"Контекстное окно","modelDetails":"Подробности","modelId":"ID модели","modelName":"Отображаемое имя","modelOutput":"Максимальная мощность","models":"Каталог моделей","pickerDescription":"Выберите модели, которые нужно оставить в этом каталоге.","pickerLoading":"Получение метаданных модели…","pickerTitle":"Выбрать каталог моделей","readOnly":"Настройки этого профиля доступны только для чтения.","remoteAccess":"Удалённые браузеры не могут изменять настройки плагинов: API конфигурации Harness работает только через локальный интерфейс. Откройте страницу на самом хосте или пробросьте её (ssh -L 3080:127.0.0.1:3080 user@host, затем откройте http://127.0.0.1:3080). Сохранённые там настройки продолжают работать в удалённых сеансах.","remove":"Удалить","requestFailed":"Не удалось выполнить запрос.","save":"Сохранить","saved":"Сохранено","saving":"Сохранение…","summaryModels":"{count} моделей","summaryOff":"Не настроено","summaryOn":"Настроено","thinking":"Рассуждение","title":"Ollama Облако","tools":"Инструменты","unavailable":"Этот профиль не предоставляет доступ к настройкам Ollama Cloud.","unsaved":"Несохранённые изменения","usage":"Использование облака","usageLoading":"Чтение использования…","usageModels":"Модели, использованные на этой неделе","usageNeedsRestart":"Использование отображается после перезагрузки этого плагина на работающем хосте (перезапустите dsh).","usageRefresh":"Обновить","usageRefreshFailed":"Не удалось обновить","usageRequests":"запросы","usageResetAt":"Сбросится через {time}","usageResetAtDays":"Лимиты использования сбросятся {date} (осталось {count} дней)","usageResetEveryDays":"Сбрасывается каждые {count} дней","usageResetEveryHours":"Сбрасывается каждые {count} часов","usageSession":"Использование сессии","usageUnreachable":"Не удалось получить данные об использовании Ollama Cloud. Проверьте подключение к сети и URL API.","usageUnsupported":"Этот эндпоинт не передаёт данные об использовании облака.","usageUpdatedAt":"Обновлено {time}","usageUsed":"Использовано","usageWeekly":"Еженедельное использование","vision":"Зрение"},"settings.permission":{"confirm.acknowledge":"Я понимаю риски и хочу продолжить","confirm.cancel":"Отмена","confirm.description":"Полный доступ позволяет новым сессиям реже спрашивать подтверждение и действовать напрямую, включая чувствительные операции, изменение файлов и внешние команды. Включайте, только если доверяете будущим задачам.","confirm.enable":"Включить полный доступ","confirm.title":"Включить полный доступ?","description":"Режим разрешений по умолчанию для новых сессий","loading":"Загрузка","preset.fullAccess":"Полный доступ","preset.readOnly":"Только чтение","preset.workspaceWrite":"Запись в рабочую область","title":"Разрешения","unavailable":"Недоступно"},"settings.pluginInventory":{"active":"Подключён","catalog":"Список плагинов","condition":"Отключено, когда","conditionalTag":"Условный","configuration":"Настройки","cordis":"Состояние Cordis","countUnit":"плагинов","disabledTag":"Выключен","empty":"Плагинов нет.","emptySearch":"Подходящих плагинов нет.","enabledIn":"Включено в","enabledTag":"Включён","error":"Плагины временно недоступны.","failed":"Не удалось подключить","failedCountLabel":"с ошибкой","failedTag":"Ошибка","fromPreset":"Из","globalSubtitle":"Общие для системы и каждой сессии","globalTitle":"Глобальные плагины","loading":"Чтение плагинов…","loadingPhase":"Загрузка","matchesInOtherPresets":"ещё {count} совпадений в других пресетах: ","moduleLabel":"Модуль","pending":"Ожидает зависимости","presetEnabledTag":"Включено через пресеты","presetOptionBroken":"{name} (не удалось загрузить)","presetOptionDefault":"{name} (по умолчанию)","presetProvidedDetail":"Отключено глобально; предоставляется пресетами агента для каждой сессии","presetSubtitle":"Формируются для каждой сессии пресетами агента","presetTitle":"Плагины сессии","retry":"Повторить","runtime":"Статус","search":"Поиск плагинов","switcherLabel":"Выберите пресет агента для просмотра","tab":"Список плагинов","unloading":"Выгружается","unobserved":"Не подключён","viewInPreset":"Посмотреть в группе пресетов"},"settings.plugins":{"agentLoopDescription":"Как агент раздаёт вызовы инструментов.","agentLoopMaxParallel":"Параллельных вызовов","agentLoopMaxParallelHint":"Сколько безопасных для параллели вызовов идёт одновременно в пределах шага.","agentLoopTitle":"Цикл агента","bashDescription":"Ограничения для каждой команды, которую запускает агент.","bashMaxOutputBytes":"Предел вывода на поток (байт)","bashMaxOutputBytesHint":"Всё сверх предела уходит во временный файл, а не теряется.","bashTimeoutMs":"Таймаут команды (мс)","bashTimeoutMsHint":"Сколько команда может выполняться до принудительного завершения.","bashTitle":"Консоль","collapse":"Скрыть настройки","configurableTab":"Настройки плагинов","discard":"Отменить","empty":"В этой установке настройки плагинов не выведены.","expand":"Показать настройки","intro":"Настройка и просмотр плагинов, установленных в этой сборке.","invalidNumber":"Введите число или оставьте пустым, чтобы взять значение по умолчанию.","nav":"Плагины","overridden":"Переопределено","readOnly":"В этой установке настройки доступны только для чтения.","reset":"Вернуть по умолчанию","save":"Сохранить","saveFailed":"Установка не приняла эти значения; они оставлены, чтобы вы их поправили.","saving":"Сохранение…","subagentModelSelectionAllowed":"Модели, доступные агентам","subagentModelSelectionChoose":"Если включено, агенты могут выбирать провайдера, модель и уровень рассуждений для каждого субагента из списка разрешённых моделей ниже. Применяется только к новым сессиям.","subagentModelSelectionConflict":"Настройки изменены в другом месте. Сбросьте черновик и попробуйте снова.","subagentModelSelectionDescription":"Управление моделями, которые агенты могут выбирать для субагентов.","subagentModelSelectionEmpty":"В данный момент ни один провайдер не предоставляет моделей.","subagentModelSelectionLoadFailed":"Не удалось загрузить модели.","subagentModelSelectionLoading":"Загрузка моделей…","subagentModelSelectionOff":"Субагенты используют настроенные значения по умолчанию или наследуют модель родительского агента. Сохранённые выборы моделей сохраняются.","subagentModelSelectionPartial":"Часть провайдеров моделей не удалось загрузить; сохранённые выборы остаются доступными для удаления.","subagentModelSelectionRequired":"Выберите хотя бы одну модель перед сохранением.","subagentModelSelectionRetry":"Повторить","subagentModelSelectionTitle":"Субагент","subagentModelSelectionToggle":"Разрешить агентам выбирать модели для субагентов","subagentModelSelectionUnavailable":"В данный момент недоступно","subagentModelSelectionUnavailableGroup":"Сохранены, но в данный момент недоступны","tabs":"Разделы плагинов","title":"Плагины","unsaved":"Не сохранено","webSearchApiKey":"API-ключ","webSearchApiKeyHint":"Хранится вне файла настроек. Оставьте пустым, чтобы сохранить текущий ключ.","webSearchApiKeySet":"Ключ задан.","webSearchApiKeyUnset":"Ключ не задан; без него поиск недоступен.","webSearchBaseUrl":"Адрес сервиса","webSearchBaseUrlHint":"Оставьте пустым, чтобы взять адрес провайдера по умолчанию.","webSearchDescription":"Поисковый провайдер DeepSeek.","webSearchMaxUses":"Максимум поисков на запрос","webSearchMaxUsesHint":"Сколько раз в рамках одного запроса можно искать, прежде чем придётся отвечать.","webSearchTitle":"Поиск в вебе"},"settings.subagentDirector":{"addRole":"Добавить роль","addedRole":"Роль добавлена","bridgeUnavailable":"Мост настроек Subagent Director недоступен на этом сервере. Обновите/перезапустите dsh web.","cancel":"Отмена","closeContinuable":"Освободить субагент","closeContinuableTitle":"Освободить этот непрерывный субагент (освободить резидентный дескриптор)","closeFailed":"Сбой освобождения: {message}","closedSubagent":"Освобождён","closingContinuable":"Освобождение…","confirmCloseContinuable":"Освободить субагент «{id}»? Он перестанет быть резидентным; продолжение через send_message будет невозможно.","confirmDeleteRole":"Удалить роль «{id}»? Роли, на которые ссылается defaultRole, вернутся к настройкам плагина по умолчанию.","conflict":"Конфликт","defaultModel":"Модель","defaultProvider":"Провайдер","defaultReasoningEffort":"Уровень рассуждений","defaultRoleBadge":"По умолчанию","defaultsHeading":"Модель по умолчанию","defaultsHint":"Используется, если при вызове или в роли не указан конкретный провайдер или модель.","deleteRole":"Удалить","descriptionPlaceholder":"Когда делегировать задачи этой роли и что она должна делать…","displayNamePlaceholder":"например, Ревьюер кода","edit":"Редактировать","emptyRoles":"Шаблонов ролей пока нет. Добавьте роль, чтобы распределить обязанности субагентов.","fallbackOnInvalid":"Откатываться к родительскому агенту, если привязанная модель недоступна","fatal":"Не удалось сохранить: {message}","invalidRoleId":"Идентификатор роли должен быть в kebab-case (строчные буквы, цифры, дефис).","loadError":"Не удалось загрузить настройки предпочтений.","model":"Модель","modelNotRecorded":"Модель субагента пока не записана","modelOptional":"Сохраните карточку для применения изменений","modelQueryFailed":"Модель субагента недоступна","modelRanOn":"Субагент запущен на","modelRanOnTitle":"Маршрут модели: {model}","nav":"Директор субагентов","noAllowedModels":"Нет авторизованных моделей. Выберите модели в официальном списке субагентов (Настройки плагинов → Subagent); выбор здесь ограничен этим списком.","persona":"Персона","personaPlaceholder":"Инструкции системного промпта, передаваемые субагенту…","provider":"Провайдер","providerMissing":"Провайдер не выбран","readonly":"Настройки доступны только для чтения.","reasoningEffort":"Уровень рассуждений","rejected":"Изменение отклонено провайдером настроек.","removeRoleDone":"Роль удалена","restoreDefaults":"Сбросить по умолчанию","restoreDone":"Значения по умолчанию восстановлены","retry":"Повторить","roleDescription":"Инструкции делегирования","roleDisplayName":"Отображаемое имя","roleId":"Идентификатор роли","roleIdPlaceholder":"например, code-reviewer","rolePersona":"Персона","roleUpdated":"Роль обновлена","rolesHeading":"Шаблоны ролей","rolesHint":"Роль связывает инструкции делегирования, персону и (опционально) провайдера/модель с субагентом.","save":"Сохранить","sectionIntro":"Настройте провайдера и модель LLM для каждого субагента, а также шаблоны ролей, связывающие модель и персону с делегированием. Выбирать можно только провайдеров/модели из пула субагентов в настройках плагина (Плагины → Настройки плагинов → Subagent).","setDefaultRole":"Сделать по умолчанию","toolFilter":"Набор инструментов","toolFilterCollapse":"Свернуть","toolFilterCount":"Выбрано {count} из {total}","toolFilterDeselectAll":"Снять выбор","toolFilterEmpty":"Нет доступных инструментов","toolFilterExpand":"Развернуть","toolFilterHint":"Ограничить субагента этими инструментами. Оставьте пустым для наследования всех инструментов родителя.","toolFilterNoMatch":"Инструментов не найдено.","toolFilterNone":"Наследовать инструменты родителя (без ограничений)","toolFilterSearch":"Поиск инструментов…","toolFilterSelectAll":"Выбрать все"},"settings.subscriptions":{"cancel":"Отмена","checking":"Проверка…","generating":"Генерация изображения…","image":"изображение","imageClose":"Закрыть","imageLoadFailed":"Повторить","imageLoading":"Загрузка…","imagePreview":"Просмотр изображения","intro":"Вход и выход из провайдеров по подписке. Вход открывает страницу авторизации в новой вкладке; без браузера можно вставить адрес обратного вызова или код.","loggedIn":"Выполнен вход","loggedInAccount":"Вход выполнен как {account}","loggedInAccountExpires":"Вход выполнен как {account} · истекает {date}","loggedInExpires":"Вход выполнен · истекает {date}","login":"Войти","loginInProgress":"Идёт вход…","loginMissingUrl":"ответ на вход пришёл без authorizeUrl","logout":"Выйти","logoutConfirm":"Выйти из {provider}?","manualPlaceholder":"Вставьте адрес обратного вызова или код","manualSummary":"Не работает вход через браузер? Вставьте адрес обратного вызова или код","nav":"Подписки","notLoggedIn":"Вход не выполнен","submit":"Отправить","unavailable":"Нет связи; состояние подписок не загрузить.","usageEmpty":"Окна расхода не переданы.","usageError":"Не удалось получить расход: {message}","usageLoading":"Загрузка расхода…","usagePlan":"Тариф: {plan}","usageRefresh":"Обновить","usageResets":"сбрасывается {date}","usageSession":"Окно 5 часов","usageTitle":"Расход","usageWeekly":"За неделю","usageWindow":"Окно","viewImage":"Посмотреть изображение","viewImageNamed":"Посмотреть {name}"},"settings.theme":{"appearance.dark":"Тёмная","appearance.light":"Светлая","appearance.system":"Как в системе","appearance.title":"Оформление","fontSize.decrease":"Уменьшить размер шрифта","fontSize.description":"Влияет только на содержимое диалога","fontSize.increase":"Увеличить размер шрифта","fontSize.title":"Размер шрифта","fontSize.unit":"пкс"},"sidebar":{"session.new":"Новая сессия","session.new.label":"Новая сессия","toggle.collapse":"Свернуть панель","toggle.open":"Открыть панель"},"skill":{"menu.userOnly":"только вручную","row.failed":"Не удалось загрузить скилл","row.inspect":"Инспектировать","row.instructions":"Инструкции","row.running":"Загрузка скилла","row.stopped":"Загрузка скилла остановлена","row.title":"Навык"},"skills-manager":{"action.create":"создание","action.delete":"удаление","action.disable":"отключение","action.enable":"включение","action.restore":"восстановление","action.toggle":"включение или отключение","btn.cancel":"Отмена","btn.close":"Закрыть","btn.create":"Создать навык","btn.create.now":"Создать навык","btn.delete.forever":"Удалить безвозвратно","btn.detail":"Подробнее","btn.disable":"Отключить","btn.enable":"Включить","btn.file.pick":"Выбрать файл","btn.folder.pick":"Выбрать папку","btn.import":"Импорт","btn.import.now":"Установить","btn.refresh":"Обновить","btn.repair.enable":"Исправить и включить","btn.restore":"Восстановить","btn.trash":"В корзину","confirm.delete.desc":"«{name}» будет безвозвратно удалён из корзины; восстановить невозможно.","confirm.delete.title":"Удалить безвозвратно?","confirm.trash.desc":"«{name}» будет перемещён из текущего источника в корзину; позже его можно восстановить на прежнее место.","confirm.trash.title":"Отправить в корзину?","create.body":"Текст (Markdown)","create.body.placeholder":"Опишите инструкции, шаги и границы навыка…","create.chat.note":"Команда create_skill в чате по-прежнему создаёт пользовательский навык DSH; проектный навык можно создать здесь, выбрав активный проект.","create.description":"Описание","create.description.placeholder":"Одно предложение — когда использовать","create.name":"Название","create.name.placeholder":"например code-review-helper","create.target":"Место создания","create.title":"Создать навык","desc":"Единая загрузка и управление Agent-навыками на этом компьютере.","detail.body":"Текст","detail.diagnostics":"Диагностика","detail.frontmatter":"Frontmatter","detail.noIssues":"Проблем не обнаружено.","detail.path":"Исходный файл","detail.title":"Подробности навыка","diagnostic.description.missing":"В frontmatter нет description","diagnostic.frontmatter.missing":"Отсутствует полный YAML frontmatter","diagnostic.invocation.invalid":"Недопустимое значение политики вызова","diagnostic.name.invalid":"Имя навыка не соответствует kebab-case: {name}","diagnostic.name.missing":"В frontmatter нет name","diagnostic.shadowed":"Перекрыт источником с более высоким приоритетом {root}","empty.search":"Подходящих навыков нет.","empty.source":"Этого каталога не существует или в нём пока нет навыков.","error.action":"Действие не удалось: {error}","error.browse.absolute":"Путь к папке должен быть абсолютным: {path}","error.browse.notDirectory":"Это не папка: {path}","error.browse.unreadable":"Не удалось прочитать папку: {path}","error.create.bodyRequired":"Текст навыка обязателен","error.create.conflict":"Навык с таким именем уже существует: {name}","error.create.descriptionRequired":"Описание навыка обязательно","error.create.tooLarge":"Содержимое навыка слишком велико","error.import.duplicateName":"В пакетном источнике есть навыки с одинаковыми именами: {name}","error.import.emptySource":"В каталоге не найдено ни одного элемента навыков: {path}","error.import.failed":"Импорт не удался","error.import.invalidName":"Не удалось сгенерировать корректное имя kebab-case (исходное: {name})","error.import.overlap":"Источник импорта не может совпадать с каталогом навыков DSH, содержать или находиться внутри него","error.import.rollbackFailed":"Откат перезаписывающего импорта не удался; резервные копии сохранены в: {path} ({error})","error.proto.bodyTooLarge":"Тело запроса слишком велико","error.proto.contentType":"Тело запроса должно быть application/json","error.proto.forbidden":"Запрещённый запрос на изменение (нет клиентского маркера)","error.proto.forbiddenHost":"Запрещённый источник запроса (неверный Host)","error.proto.invalidJson":"Тело запроса — не корректный JSON","error.proto.method":"Метод не поддерживается","error.proto.nonJson":"Сервер вернул ответ не в формате JSON (HTTP {status})","error.proto.unknownAction":"Неизвестное действие","error.root.readonly":"Этот источник не разрешает: {action}","error.root.unknown":"Неизвестный источник навыков: {root}","error.root.unsafe":"Каталог проектных навыков небезопасен, запись отклонена: {path}","error.skill.noFrontmatter":"У навыка неполный frontmatter, нельзя выполнить «{action}»: {name}","error.skill.notFound":"Навык не найден: {name}","error.skill.notLoadable":"Структура навыка неполная, невозможно выполнить {action}: {name}","error.source.notFound":"Путь не существует: {path}","error.source.symlink":"Источники навыков с символическими ссылками не поддерживаются: {path}","error.source.tooDeep":"Глубина каталога источника превышает {depth} уровней: {path}","error.source.unrecognized":"Нераспознанный источник навыков: {path}","error.state.invalid":"Файл состояния менеджера не читается, перезапись отклонена: {path}","error.trash.conflict":"Нельзя восстановить: навык с таким именем уже существует: {name}","error.trash.invalid":"Недопустимый путь элемента корзины: {id}","error.trash.notFound":"Элемент корзины не найден: {id}","error.trash.projectUnavailable":"Исходный проект не является активной рабочей областью, восстановление невозможно: {path}","error.trash.rollbackFailed":"Откат перемещения в корзину не удался; невосстановленное содержимое сохранено в: {path} ({error})","error.upload.archiveTooLarge":"ZIP-архив слишком велик; лимит {limit} байт","error.upload.duplicate":"Загрузка содержит дублирующийся путь: {path}","error.upload.empty":"Загрузка пуста","error.upload.encoding":"Недопустимая кодировка загружаемого содержимого","error.upload.path":"Загрузка содержит недопустимый путь: {path}","error.upload.tooLarge":"Загрузка слишком велика; лимит {limit} байт","error.upload.tooMany":"Слишком много файлов; максимум {limit}","error.upload.zipInvalid":"ZIP-архив не удаётся распаковать","filter.all":"Все источники","filter.option":"{name} ({count})","filter.source":"Источник","import.title":"Импорт навыка","link.feedback":"Обратная связь","link.project":"GitHub","loading":"Загрузка навыков…","note.missing":"Описание не указано","result.created":"Навык создан: {name}","result.deleted":"Удалён безвозвратно: {name}","result.importEmpty":"Не импортировано ни одного навыка.","result.importPartial":"Импортировано: {imported}; пропущены одноимённые: {skipped}","result.importSkipped":"Ничего не импортировано; пропущены существующие: {names}","result.importWarnings":"{result}; предупреждения: {warnings}","result.imported":"Импорт завершён: {names}","result.restored":"Навык восстановлен: {name}","result.trashed":"Отправлен в корзину: {name}","result.updated":"Состояние обновлено.","root.agents":"Общий Agent","root.ccswitch":"CC Switch","root.claude":"Claude","root.codex":"Codex","root.cursor":"Cursor","root.dsh":"Навыки DSH","root.gemini":"Gemini","root.opencode":"OpenCode","root.projectAgents":"Проектный Agent","root.projectDsh":"Проектный DSH","search":"Поиск","search.clear":"Очистить поиск","search.placeholder":"Поиск по названию или описанию навыка","select.file.invalid":"Выберите .zip или один файл SKILL.md.","select.folder.invalid":"В выбранной папке не найдено SKILL.md.","skill.toggle":"Вкл/выкл навык","source.dsh.note":"Локальные навыки DSH можно создавать, импортировать и отправлять в корзину.","source.external.note":"Загружается через Skills Manager только для чтения; переключения не меняют исходные файлы.","source.toggle":"Вкл/выкл источник","status.bundle":"Набор навыков","status.disabled":"Отключён","status.discovered":"Обнаружен","status.enabled":"Загружен","status.invalid":"Есть проблемы","status.manageable":"Управляемый","status.project":"Проектный","status.rank":"Приоритет {rank}","status.readonly":"Источник только для чтения","status.selected":"Выбрано","status.shadowed":"Перекрыт","status.single":"Один файл","status.source.off":"Отключён","status.source.on":"Загружен","summary.disabled":"Отключено: {count}","summary.disabled.one":"{count} отключён","summary.disabled.other":"{count} отключено","summary.enabled.one":"{count} включён","summary.enabled.other":"{count} включено","summary.group":"Навыков: {count}","summary.group.one":"{count} навык","summary.group.other":"{count} навыков","summary.issues":"Проблем: {count}","summary.issues.one":"{count} проблема","summary.issues.other":"{count} проблем","summary.loaded":"Загружено в DSH: {count}","summary.total":"Навыков: {count}","summary.total.one":"{count} навык","summary.total.other":"{count} навыков","table.skill":"Название и описание навыка","table.status":"Состояние в DSH","title":"Навыки","trash.count":"Навыков в очереди: {count}","trash.count.one":"{count} навык в корзине","trash.count.other":"{count} навыков в корзине","trash.deletedAt":"Удалено {time}","trash.empty":"Корзина пуста.","trash.source":"Источник: {source}","trash.title":"Корзина","upload.drop.copy":"Поддерживаются .zip, папка навыка или один SKILL.md","upload.drop.title":"Перетащите навык сюда","upload.importing":"Установка…","upload.remove":"Убрать выбранное","upload.requirement.copy":"Импорт копирует содержимое целиком и не меняет источник","upload.requirement.frontmatter":"SKILL.md должен содержать YAML-название и описание","upload.requirement.skill":"Архив или папка должны содержать SKILL.md","upload.requirements":"Требования к файлам","upload.selected":"Файлов: {count} · {size}","upload.selected.one":"Выбран {count} файл · {size}","upload.selected.other":"Выбрано {count} файлов · {size}","warning.backupUncleaned":"Резервная копия старой версии не удалена: {path} ({error})","warning.project.unavailable":"Не удалось получить активную рабочую область у хоста, проектные навыки скрыты: {path}","warning.state.invalid":"Файл состояния менеджера не читается; внешние навыки отключены, перезапись заблокирована до исправления: {path}"},"slash.menu":{"command":"Команды","crumbs.aria":"Навигация по папкам","drill.aria":"Открыть папку","drill.hint":"Открыть папку","drill.key":"Tab","loading":"Загрузка…","skill":"Скиллы","subagent":"Субагенты","suggestions.aria":"Подсказки по вводу"},"subagent":{"activity.inactive":"не работает","activity.running":"работает","branch.collapse":"Свернуть потомков {label}","branch.expand":"Развернуть потомков {label}","count.running.few":"{count} субагента работает","count.running.many":"{count} субагентов работает","count.running.one":"{count} субагент работает","count.running.other":"{count} субагентов работает","count.total.few":"{count} субагента","count.total.many":"{count} субагентов","count.total.one":"{count} субагент","count.total.other":"{count} субагентов","diagnostic.corrupt":"запись сессии повреждена","diagnostic.unavailable":"запись сессии временно недоступна","diagnostic.unsupported":"неподдерживаемая версия записи субагента","duration.days":"{days} дн","duration.daysHours":"{days} дн {hours} ч","duration.exactDays":"{days} дн {hours} ч {minutes} мин {seconds} с","duration.exactTitle":"Всего активного времени: {duration}","duration.hours":"{hours} ч {minutes} мин {seconds} с","duration.minutes":"{minutes} мин {seconds} с","duration.months":"~{months} мес","duration.monthsDays":"~{months} мес {days} дн","duration.seconds":"{seconds} с","duration.years":"~{years} г","duration.yearsMonths":"~{years} г {months} мес","load.error":"Не удалось загрузить субагентов","loading.aria":"Загрузка субагентов","loading.label":"Загрузка субагентов…","mode.continuable":"с продолжением","mode.oneShot":"разовый","readonly.body":"Родительская сессия офлайн; откройте её заново, чтобы продолжить переписку.","readonly.oneShot.body":"Разовые задачи не принимают продолжения; здесь можно изучить полную запись выполнения.","readonly.oneShot.title":"Запись разового субагента","readonly.title":"Пока этот субагент доступен только для чтения","retry":"Повторить","switcher.aria":"Переключить субагента: {title}","tokens.million":"{value}M","tokens.thousand":"{value}K","tokens.total":"{value} ток.","tree.aria":"Сессии субагентов"},"subagent-director":{"addRole":"Добавить роль","addedRole":"Роль добавлена","bridgeUnavailable":"Мост настроек Subagent Director недоступен на этом сервере. Обновите/перезапустите dsh web.","cancel":"Отмена","closeContinuable":"Освободить субагент","closeContinuableTitle":"Освободить этот непрерывный субагент (освободить резидентный дескриптор)","closeFailed":"Сбой освобождения: {message}","closedSubagent":"Освобождён","closingContinuable":"Освобождение…","confirmCloseContinuable":"Освободить субагент «{id}»? Он перестанет быть резидентным; продолжение через send_message будет невозможно.","confirmDeleteRole":"Удалить роль «{id}»? Роли, на которые ссылается defaultRole, вернутся к настройкам плагина по умолчанию.","conflict":"Конфликт","defaultModel":"Модель","defaultProvider":"Провайдер","defaultReasoningEffort":"Уровень рассуждений","defaultRoleBadge":"По умолчанию","defaultsHeading":"Модель по умолчанию","defaultsHint":"Используется, если при вызове или в роли не указан конкретный провайдер или модель.","deleteRole":"Удалить","descriptionPlaceholder":"Когда делегировать задачи этой роли и что она должна делать…","displayNamePlaceholder":"например, Ревьюер кода","edit":"Редактировать","emptyRoles":"Шаблонов ролей пока нет. Добавьте роль, чтобы распределить обязанности субагентов.","fallbackOnInvalid":"Откатываться к родительскому агенту, если привязанная модель недоступна","fatal":"Не удалось сохранить: {message}","invalidRoleId":"Идентификатор роли должен быть в kebab-case (строчные буквы, цифры, дефис).","loadError":"Не удалось загрузить настройки предпочтений.","model":"Модель","modelNotRecorded":"Модель субагента пока не записана","modelOptional":"Сохраните карточку для применения изменений","modelQueryFailed":"Модель субагента недоступна","modelRanOn":"Субагент запущен на","modelRanOnTitle":"Маршрут модели: {model}","nav":"Директор субагентов","noAllowedModels":"Нет авторизованных моделей. Выберите модели в официальном списке субагентов (Настройки плагинов → Subagent); выбор здесь ограничен этим списком.","persona":"Персона","personaPlaceholder":"Инструкции системного промпта, передаваемые субагенту…","provider":"Провайдер","providerMissing":"Провайдер не выбран","readonly":"Настройки доступны только для чтения.","reasoningEffort":"Уровень рассуждений","rejected":"Изменение отклонено провайдером настроек.","removeRoleDone":"Роль удалена","restoreDefaults":"Сбросить по умолчанию","restoreDone":"Значения по умолчанию восстановлены","retry":"Повторить","roleDescription":"Инструкции делегирования","roleDisplayName":"Отображаемое имя","roleId":"Идентификатор роли","roleIdPlaceholder":"например, code-reviewer","rolePersona":"Персона","roleUpdated":"Роль обновлена","rolesHeading":"Шаблоны ролей","rolesHint":"Роль связывает инструкции делегирования, персону и (опционально) провайдера/модель с субагентом.","save":"Сохранить","sectionIntro":"Настройте провайдера и модель LLM для каждого субагента, а также шаблоны ролей, связывающие модель и персону с делегированием. Выбирать можно только провайдеров/модели из пула субагентов в настройках плагина (Плагины → Настройки плагинов → Subagent).","setDefaultRole":"Сделать по умолчанию","toolFilter":"Набор инструментов","toolFilterCollapse":"Свернуть","toolFilterCount":"Выбрано {count} из {total}","toolFilterDeselectAll":"Снять выбор","toolFilterEmpty":"Нет доступных инструментов","toolFilterExpand":"Развернуть","toolFilterHint":"Ограничить субагента этими инструментами. Оставьте пустым для наследования всех инструментов родителя.","toolFilterNoMatch":"Инструментов не найдено.","toolFilterNone":"Наследовать инструменты родителя (без ограничений)","toolFilterSearch":"Поиск инструментов…","toolFilterSelectAll":"Выбрать все"},"task-board":{"archive.empty":"В архиве пусто","board.archive":"Архив","board.archiveView":"Архив ({count})","board.backToBoard":"К доске","board.close":"В чат","board.created":"Создана","board.empty":"В этой колонке задач нет","board.filterAll":"Все","board.hostError":"Действие на хосте не удалось: {error}","board.hostMeta":"Часовой пояс хоста {timeZone} · ревизия {revision}","board.new":"Новая задача","board.pending":"Отправка","board.retryHost":"Переподключиться к хосту","board.runs":"запусков","board.search":"Фильтр задач…","board.status":"Статус","board.status.backlog":"Бэклог","board.status.done":"Готово","board.status.failed":"Ошибка","board.status.running":"В работе","board.status.todo":"К выполнению","board.title":"Доска задач","board.updated":"Обновлена","card.scheduled":"по расписанию","delete.cancel":"Отмена","delete.confirm":"Удалить «{name}»? Отменить это будет нельзя.","delete.ok":"Удалить","delete.title":"Удаление задачи","detail.archive":"В архив","detail.archivedAt":"В архиве · {time}","detail.close":"Закрыть","detail.delete":"Удалить","detail.description":"Описание","detail.execution":"История запусков","detail.executionEnded":"Завершён","detail.executionSettings":"Параметры запуска","detail.executionStarted":"Начат","detail.noExecution":"Ещё не запускалась","detail.noSession":"Сессии нет","detail.prompt":"Промпт запуска","detail.rerun":"Запустить снова","detail.restore":"Вернуть из архива","detail.result.cancelled":"Отменён","detail.result.failed":"Ошибка","detail.result.running":"Выполняется","detail.result.succeeded":"Успешно","detail.run":"Запустить","detail.schedule":"Запуски по расписанию","detail.schedule.cron":"Выражение cron","detail.schedule.dueSoon":"Скоро","detail.schedule.enable":"Включить запуски по расписанию","detail.schedule.invalid":"Неверное выражение cron","detail.schedule.lastTriggered":"Последний запуск","detail.schedule.nextRun":"Следующий запуск","detail.schedule.notScheduled":"Расписания пока нет","detail.schedule.preset.daily9":"Каждый день в 09:00","detail.schedule.preset.hourly":"Каждый час","detail.schedule.preset.tenMin":"Каждые 10 минут","detail.schedule.preset.weeklyMon9":"По понедельникам в 09:00","detail.schedule.presets":"Готовые варианты","detail.title":"Задача","detail.viewSession":"Открыть сессию","entry.label":"Доска задач","exec.error.noWorkspace":"Нет рабочей папки, в которой можно выполнить задачу","exec.error.promptRejected":"Промпт отклонён","exec.hint":"Применяется при запуске задачи: рабочая папка определяет, где появится сессия выполнения; режим задаёт пресет агента; разрешение выставляется командой /permission. Пусто — как по умолчанию в рантайме.","exec.mode.brokenSuffix":" (недоступен)","exec.mode.default":"Как в установке","exec.mode.defaultSuffix":" (по умолчанию)","exec.mode.removed":" (удалён)","exec.permission.danger-full-access":"Полный доступ","exec.permission.default":"Как в сессии","exec.permission.read-only":"Только чтение","exec.permission.workspace-write":"Запись в рабочую папку","exec.workspace.recent":"Последняя (по умолчанию)","new.cancel":"Отмена","new.description":"Описание","new.descriptionPlaceholder":"Контекст, границы, критерии приёмки (необязательно)","new.mode":"Режим","new.permission":"Разрешения","new.prompt":"Промпт запуска","new.promptPlaceholder":"Полная инструкция агенту (если пусто, возьмётся заголовок)","new.required":"Нужен заголовок","new.submit":"Создать","new.title":"Заголовок","new.titlePlaceholder":"Что нужно сделать, одной строкой","new.workspace":"Рабочая папка","run.failed":"Запуск не удался: {error}","settings.announceToAgent":"Сообщать агентам о доске задач","settings.announceToAgentHint":"Включено: в системный промпт каждого агента добавляется упоминание доски. Выключено: агенты узнают о ней, только если вы скажете сами.","settings.collapse":"Скрыть настройки","settings.description":"Настройка доски задач на хосте, упоминания в промпте и защиты от засыпания, пока есть незавершённая работа.","settings.discard":"Отменить","settings.enabled":"Включить доску задач","settings.enabledHint":"Когда выключено, пункт в панели и сама доска скрыты.","settings.expand":"Показать настройки","settings.inherit":"Наследовать","settings.invalidNumber":"Введите число или оставьте пустым, чтобы взять значение по умолчанию.","settings.notExposed":"Эта версия DSH не выводит namespace настроек плагина на страницу конфигурации, поэтому форма недоступна. Правьте ~/.dsh/settings.yaml напрямую или добавьте namespace в список WEB_SETTINGS_NAMESPACES у dsh-host-apiproxy и перезапустите.","settings.off":"Выкл","settings.on":"Вкл","settings.overridden":"Переопределено","settings.powerBoundary":"Батарея будет расходоваться быстрее. Закрытие крышки, ручной уход в сон, гибернация, выключение, действия при низком заряде и корпоративные политики под гарантию не попадают; уже спящий компьютер не разбудят.","settings.powerError":"Последняя ошибка защиты от засыпания: {error}","settings.powerStatus":"Платформа: {platform}; защита: {phase}; работающих сессий: {running}; включённых расписаний: {schedules}","settings.powerUnknown":"неизвестно","settings.preventIdleSleep":"Не давать системе засыпать","settings.preventIdleSleepHint":"По умолчанию выключено. Когда включено, хост не даёт системе уйти в сон, пока работает хоть одна сессия DSH, включено расписание или состояние сессий ещё неизвестно. Экран при этом может гаснуть.","settings.readOnly":"В этой установке настройки доступны только для чтения.","settings.reset":"Вернуть по умолчанию","settings.save":"Сохранить","settings.saveFailed":"Установка не приняла эти значения; они оставлены, чтобы вы их поправили.","settings.saving":"Сохранение…","settings.title":"Доска задач","settings.unsaved":"Не сохранено","status.move.backlog":"В бэклог","status.move.todo":"К выполнению","time.justNow":"только что"},"trajectory":{"block.label":"Блок #{index} {type}","block.openSummary":"Открыть сводку вызова инструмента блока #{index}","block.openSummaryTitle":"Открыть сводку вызова инструмента","column.input":"Входные данные","column.model":"Модель","column.output":"Вывод","column.think":"Рассуждения","column.time":"Время","column.tools":"Инструменты","details.assistantMessage":"Сообщение ассистента","details.blockType":"Тип блока","details.callId":"ID вызова","details.cancelled":"Отменено","details.close":"Закрыть сведения","details.compacted":"Сжато","details.completed":"Завершено","details.cost":"Примерная стоимость","details.duration":"Длительность","details.error":"Ошибка","details.event":"Сведения о событии","details.failed":"Сбой","details.failure.auth":"Недействительный ключ API","details.finishReason":"Причина завершения","details.hierarchy":"Иерархия","details.input":"Вход","details.inputTokens":"Входные токены","details.latency":"Задержка","details.messageId":"ID сообщения","details.model":"Модель","details.noCalls":"Нет вызовов инструментов","details.noData":"Нет данных для отображения","details.output":"Вывод","details.outputTokens":"Выходные токены","details.parameters":"Параметры","details.provider":"Провайдер","details.purpose":"Назначение","details.raw":"Исходные данные","details.reasoningTokens":"Токены рассуждений","details.request":"Запрос","details.resize":"Изменение размера панели сведений","details.resizeTitle":"Потяните для изменения размера. Двойной клик — сброс.","details.response":"Ответ","details.result":"Результат","details.retry":"Повтор","details.retryDelay":"Задержка повтора","details.running":"Выполняется","details.scheduled":"Запланировано","details.sessionId":"ID сессии","details.source":"Источник","details.status":"Статус","details.step":"Шаг #{index}","details.stepTitle":"Сведения о шаге","details.subtoolCalls":"Вложенные вызовы инструментов","details.summary":"Сводка","details.systemPrompt":"Системный промпт","details.thinking":"Ход мыслей","details.time":"Метка времени","details.title":"Детали траектории","details.tokens":"Токены","details.toolCall":"Вызов инструмента","details.toolCalls":"Вызовы инструментов","details.toolName":"Имя инструмента","details.totalTokens":"Всего токенов","details.tps":"Токенов/сек (TPS)","details.ttft":"Время до первого токена (TTFT)","details.turn":"Шаг диалога #{turn}","details.type":"Тип","details.unknown":"Неизвестно","details.userMessage":"Сообщение пользователя","details.viewJson":"Посмотреть JSON","empty.noData":"Траектория рассуждений пуста.","empty.subtitle":"Здесь появятся шаги, вызовы инструментов и метрики работы модели.","empty.title":"Нет записей траектории","export.json":"Экспорт в JSON","export.success":"Траектория экспортирована","filter.all":"Все","filter.errors":"Только ошибки","filter.model":"Модель","filter.search":"Поиск по траектории…","filter.status":"Статус","filter.tools":"Инструменты","filter.type":"Тип события","group.compaction":"Сжатие {seq}","group.message":"Сообщение","group.step":"Шаг {step}","group.turn":"Шаг диалога {turn}","header.actions":"Действия","header.blocks":"Блоки","header.duration":"Время","header.metrics":"Метрики","header.model":"Модель","header.step":"Шаг","header.title":"Траектория рассуждений","header.tokens":"Токены","header.tool":"Инструмент","history.clickToLoadEarlier":"Нажмите, чтобы загрузить более ранние шаги","history.loadEarlier":"Загрузить более ранние","history.loadingEarlier":"Загрузка более ранней истории…","history.loadingEarlierAria":"Загрузка более ранней истории","history.loadingTrajectory":"Загрузка траектории…","kind.assistant":"Ассистент","kind.compacted":"Сжатие","kind.context":"Контекст","kind.message":"Message","kind.sub":"Sub","kind.subtool":"SUBTOOL","kind.system":"Система","kind.tool":"Инструмент","kind.user":"Пользователь","layout.compacted":"Context compacted","layout.compacting":"Compacting context…","layout.compactionFailed":"Сжатие контекста failed","layout.compactionInterrupted":"Сжатие контекста was interrupted before completion.","layout.imageOnly":"Images ×{count}","layout.initialSystemPrompt":"Initial System Prompt","layout.systemPromptAndToolsUpdated":"System Prompt and Tools Updated","layout.systemPromptUpdated":"System Prompt Updated","layout.toolCallOnly":"Вызов инструмента only","layout.toolsUpdated":"Tools Updated","legend.assistant":"Ответ ассистента","legend.call":"Вызов инструмента","legend.error":"Ошибка выполнения","legend.event":"Событие","legend.reasoning":"Рассуждения модели","legend.system":"Системное событие","legend.user":"Запрос пользователя","meta.active":"Активно","meta.calls":"{count} вызовов","meta.cancelled":"Отменено","meta.depth":"Глубина {depth}","meta.done":"Готово","meta.duration":"{duration}","meta.error":"Ошибка","meta.failed":"Сбой","meta.input":"Вход","meta.items":"{count} элементов","meta.model":"Модель","meta.output":"Выход","meta.pending":"В очереди","meta.reasoning":"Рассуждения","meta.retry":"Повтор","meta.running":"Выполняется","meta.speed":"{speed} ток./с","meta.status":"Статус","meta.step":"Шаг {step}","meta.time":"{time}","meta.tokens":"{tokens} ток.","meta.tools":"Инструменты","meta.ttft":"TTFT {ttft}","meta.turn":"Шаг {turn}","meta.type":"Тип","metrics.avgLatency":"Средняя задержка: {value}мс","metrics.avgTps":"Средний TPS: {value} ток./с","metrics.avgTtft":"Средний TTFT: {value}мс","metrics.cacheHitRate":"Попадание в кэш: {value}%","metrics.cacheTokens":"Кэшировано: {value}","metrics.inputTokens":"Вход: {value}","metrics.outputTokens":"Выход: {value}","metrics.reasoningTokens":"Рассуждения: {value}","metrics.summary":"Итого: {tokens} токенов за {duration} ({cost})","metrics.title":"Метрики шага","metrics.totalCalls":"Вызовов инструментов: {value}","metrics.totalCost":"Стоимость: {value}","metrics.totalDuration":"Общее время: {value}","metrics.totalSteps":"Всего шагов: {value}","metrics.totalTokens":"Всего токенов: {value}","nav.back":"Назад","nav.next":"Следующий шаг","nav.prev":"Предыдущий шаг","node.args":"Аргументы","node.branch":"Ветка {name}","node.call":"Вызов: {name}","node.chat":"Диалог","node.code":"Код","node.collapse":"Свернуть блок","node.compaction":"Сжатие контекста","node.decision":"Решение","node.done":"Завершено","node.duration":"{duration}мс","node.error":"Ошибка: {message}","node.escalation":"Эскалация прав","node.eval":"Оценка","node.event":"Событие","node.execution":"Выполнение","node.expand":"Развернуть блок","node.fallback":"Резервный путь","node.file":"Файл {path}","node.finish":"Финиш","node.generator":"Генерация","node.guard":"Защитный фильтр","node.hook":"Хук {name}","node.http":"HTTP {method} {url}","node.index":"Индекс","node.info":"Инфо","node.init":"Инициализация","node.injection":"Внедрение контекста","node.input":"Входные данные","node.inspect":"Инспекция","node.instruction":"Инструкция","node.intent":"Намерение","node.interrupted":"Прервано","node.iteration":"Итерация {n}","node.kernel":"Ядро","node.log":"Журнал","node.loop":"Цикл","node.mcp":"MCP {server}/{tool}","node.message":"Сообщение","node.model":"Модель {name}","node.modify":"Изменение","node.mutation":"Мутация","node.operation":"Операция {name}","node.output":"Результат","node.parser":"Парсер","node.patch":"Патч","node.plan":"План","node.plugin":"Плагин {name}","node.process":"Процесс","node.prompt":"Промпт","node.proxy":"Прокси","node.query":"Запрос","node.queue":"Очередь","node.raw":"Сырые данные","node.read":"Чтение {path}","node.reasoning":"Рассуждения","node.recall":"Вспоминание","node.reflection":"Рефлексия","node.regex":"Регулярное выражение","node.replay":"Воспроизведение","node.request":"Запрос","node.reset":"Сброс","node.resource":"Ресурс","node.response":"Ответ","node.result":"Результат","node.retry":"Повтор","node.rollback":"Откат","node.root":"Корень","node.route":"Маршрут","node.runner":"Исполнитель","node.sandbox":"Песочница","node.schema":"Схема","node.script":"Скрипт","node.search":"Поиск","node.section":"Секция","node.security":"Безопасность","node.segment":"Сегмент","node.select":"Выбор","node.session":"Сессия","node.shell":"Оболочка","node.signal":"Сигнал","node.skill":"Навык {name}","node.snapshot":"Снимок","node.spawn":"Запуск","node.start":"Старт","node.state":"Состояние","node.status":"Статус: {status}","node.step":"Шаг","node.stop":"Стоп","node.stream":"Поток","node.subagent":"Субагент {name}","node.summary":"Сводка","node.switch":"Переключение","node.sync":"Синхронизация","node.system":"Система","node.task":"Задача","node.terminal":"Терминал","node.test":"Тест","node.think":"Мысли","node.thought":"Мысли","node.time":"{time}","node.timeout":"Таймаут","node.token":"Токен","node.tokens":"{count} ток.","node.tool":"Инструмент {name}","node.trace":"Трассировка","node.transform":"Преобразование","node.trigger":"Триггер","node.turn":"Шаг","node.type":"Тип","node.unknown":"Неизвестный узел","node.update":"Обновление","node.user":"Пользователь","node.validation":"Валидация","node.variable":"Переменная","node.verification":"Верификация","node.view":"Вид","node.wait":"Ожидание","node.warning":"Предупреждение","node.watch":"Наблюдение","node.webhook":"Вебхук","node.worker":"Воркер","node.workspace":"Рабочая область","node.write":"Запись {path}","node.yield":"Возврат","options.json":"Request options JSON","options.notRecorded":"Options not recorded","record.json":"JSON","record.namedParametersJson":"{name} parameters JSON","record.noContent":"No content","record.noOutput":"No output","record.noPayload":"No payload captured","record.noResult":"No result captured","record.outputJson":"Result JSON","record.parameters":"Parameters","record.parametersJson":"parameters JSON","record.payloadJson":"Payload JSON","record.resultJson":"Result JSON","record.schemaUnavailable":"Schema unavailable","record.systemPrompt":"System Prompt","record.systemPromptMissing":"No system prompt in this request","record.thinking":"Thinking","record.toolCallOnly":"(tool call only)","record.tools":"Tools","record.toolsMissing":"No tools in this request","request.collapsedAssistant":"assistant","request.collapsedSummary":"Collapsed {kind} summary, {summary}","request.collapsedTurn":"turn","request.compaction":"Сжатие контекста · {section}","request.compactionPurpose":"Сжатие контекста","request.label":"Request #{request}","request.labelCompaction":"Request #{request} · Сжатие контекста","request.noContent":"no content","request.retryProgress":"{retry} of {maximum}","request.rowAria":"{request}{kind}, {content}","request.rowAriaCompaction":"Request {request}, compaction","request.rowPrefix":"Request {request}, ","section.betweenTurns":"Between turns","source.goal":"Goal","source.goalRound":"Goal · Round {round}","source.messageJson":"Message source JSON","source.notRecorded":"Source not recorded","source.plugin":"Plugin","source.pluginNamed":"Plugin · {plugin}","source.unknown":"Unknown","source.user":"User","status.aborted":"Прервано","status.active":"Активно","status.cancelled":"Отменено","status.completed":"Завершено","status.error":"Ошибка","status.failed":"Сбой","status.idle":"Ожидание","status.interrupted":"Прервано","status.paused":"Приостановлено","status.pending":"В очереди","status.rejected":"Отклонено","status.retry":"Повтор","status.running":"Выполняется","status.skipped":"Пропущено","status.stopped":"Остановлено","status.success":"Успешно","status.timeout":"Таймаут","status.waiting":"Ожидание","summary.steps.one":"{count} step","summary.steps.other":"{count} steps","summary.toolCalls.one":"{count} tool call","summary.toolCalls.other":"{count} tool calls","tab.diff":"Diff","tab.options":"Options","tab.payload":"Payload","tab.preview":"Preview","tab.raw":"Raw","tab.rawOutput":"Raw Output","tab.result":"Result","tab.schema":"Schema","tab.source":"Source","tab.summary":"Summary","tab.systemPrompt":"System Prompt","tab.timing":"Timing","tab.tools":"Tools","tab.usage":"Usage","timeline.aria":"Trajectory timeline","timeline.collapse":"Свернуть таймлайн","timeline.expand":"Развернуть таймлайн","timeline.noTimingData":"No timing data","timeline.now":"Текущий момент","timeline.overviewAria":"Времяline overview; drag horizontally to focus events","timeline.start":"Старт","timeline.started":"Started {time}","timeline.step":"Шаг #{step}","timeline.title":"Хронология выполнения","timeline.total":"Общее время: {duration}","timeline.ttftDecoding":"TTFT {ttft} · Decoding {decoding}","timing.duration":"Длительность","timing.durationTooShort":"Длительность too short","timing.firstTokenUnavailable":"First token unavailable","timing.generation":"Generation","timing.notAvailable":"Not available","timing.notRecorded":"Not recorded","timing.outputTokensUnavailable":"Output tokens unavailable","timing.request":"Request Timing","timing.sessionTimestamps":"Session timestamps","timing.sessionTimestampsRunning":"Session timestamps (running)","timing.showLocalTime":"Show local time","timing.showUnixTimestamp":"Show Unix timestamp","timing.source":"Timing source","timing.started":"Started","timing.stepStartUnavailable":"Шаг start unavailable","timing.throughput":"Throughput","timing.totalDuration":"Total duration","timing.ttft":"TTFT","timing.usageUnavailable":"Usage unavailable","toolbar.actualTime":"Реальное время","toolbar.aria":"Панель траектории","toolbar.calls":"Вызовы","toolbar.collapseCalls":"Свернуть вызовы","toolbar.collapseTurns":"Свернуть ходы","toolbar.duration":"Длительность","toolbar.expandCalls":"Развернуть вызовы","toolbar.expandTurns":"Развернуть ходы","toolbar.search":"Поиск по траектории","toolbar.searchPlaceholder":"Поиск","toolbar.turns":"Ходы","toolbar.useActualDuration":"По реальной длительности","toolbar.useEqualWidth":"Операции равной ширины","turn.label":"Turn {turn}","unit.milliseconds":"{value} ms","unit.seconds":"{value} s","unit.tokens":"{value} tok","unit.tokensPerSecond":"{value} tok/s","usage.cacheCreated":"Cache created","usage.cached":"Cached","usage.content":"Content","usage.input":"Input","usage.notReported":"Usage not reported","usage.other":"Other","usage.output":"Output","usage.reasoning":"Рассуждения","usage.sessionCumulative":"Session cumulative","usage.thisRequest":"This request","usage.tokens":"Токены","view.blocks":"Блоки","view.details":"Подробности","view.flow":"Поток","view.graph":"Граф","view.json":"JSON","view.metrics":"Метрики","view.raw":"Исходный вид","view.table":"Таблица","view.timeline":"Таймлайн","view.trajectory":"Траектория","view.tree":"Дерево"},"univer":{"collapse":"Свернуть просмотр","dock.close":"Закрыть","dock.currentVersion":"Текущая версия","dock.discard":"Отклонить","dock.discarded":"Отклонено","dock.discardedTitle":"Изменения отклонены","dock.draft":"Редактирование","dock.exitFullscreen":"Выйти из полноэкранного режима","dock.expand":"Развернуть","dock.fold":"Свернуть","dock.fullscreen":"Полноэкранный просмотр","dock.gatewayDown":"Univer Gateway не запущен; интерактивный предпросмотр недоступен","dock.live":"синхронизация","dock.loading":"Загрузка…","dock.markReady":"Отправить на подтверждение","dock.maximize":"На весь экран","dock.merge":"Объединить с текущей версией","dock.mergeReady":"Готово к слиянию","dock.mergeTitle":"Предпросмотр слияния","dock.merged":"Слито","dock.mergedTitle":"Изменения объединены","dock.notReady":"Отправьте это изменение на подтверждение перед слиянием или отклонением","dock.ready":"Готово","dock.restore":"Восстановить размер","dock.reviewTitle":"Идёт редактирование","dock.startGateway":"Запустить Gateway","dock.unavailable":"Недоступно","dock.unit.added":"Д","dock.unit.conflict":"Конфликт","dock.unit.deleted":"У","dock.unit.modified":"И","expand":"Развернуть просмотр","gateway.checking":"Проверка Univer Gateway…","gateway.failed":"Univer Gateway недоступен — нажмите для повтора","gateway.running":"Univer Gateway запущен","gateway.starting":"Запуск Univer Gateway…","gateway.stopped":"Univer Gateway остановлен — нажмите для запуска","refresh":"Обновить","settings.autoOpenLivePreview":"Автоматически открывать интерактивный предпросмотр","settings.autoOpenLivePreviewHint":"Показывать плавающее окно просмотра, когда агент редактирует документ. Карточки ревью в чате остаются доступны при отключении.","settings.collapse":"Свернуть","settings.description":"Управление интерактивным предпросмотром при редактировании документов.","settings.discard":"Отменить изменения","settings.expand":"Развернуть","settings.overridden":"Переопределено","settings.readOnly":"Текущий документ настроек доступен только для чтения.","settings.reset":"Сбросить по умолчанию","settings.save":"Сохранить","settings.saveFailed":"Не удалось сохранить. Попробуйте снова.","settings.saving":"Сохранение…","settings.title":"Univer Office","settings.unsaved":"Не сохранено","title":"Просмотр Univer"},"usageDashboard":{"buckets.cacheRead":"Чтение кэша","buckets.cacheWrite":"Запись в кэш","buckets.caption":"Четыре непересекающиеся корзины тарификации · всего {total} ток","buckets.output":"Выход","buckets.title":"Состав токенов","buckets.uncachedInput":"Вход мимо кэша","composition.caption":"Оценка по эвристике, не по счёту; в сумму занятости не сойдётся","composition.messages":"Сообщения","composition.system":"Системный промпт","composition.title":"Состав контекста","composition.tools":"Схемы инструментов","efficiency.llm":"Время модели","efficiency.steps":"Шаги","efficiency.stepsValue":"{steps}","efficiency.throughput":"Скорость выдачи","efficiency.title":"Эффективность запросов","efficiency.tool":"Время инструментов","efficiency.ttft":"Первый токен, среднее","efficiency.ttftOver":"шагов: {steps}","efficiency.turns":"Ходы","efficiency.turnsValue":"{turns}","empty.usage":"Расхода токенов пока нет","empty.usageHint":"Цифры появятся, когда сессия сделает первый запрос к модели.","overview.billedInput":"Оплаченный вход","overview.billedInputSub":"мимо кэша {uncached} · из кэша {cached}","overview.cacheHit":"Попадания в кэш","overview.cacheHitSub":"прочитано {read} из {total} ток","overview.context":"Контекст занят","overview.contextSub":"{used} из {window} ток","overview.contextUnknown":"Размер окна модели неизвестен","overview.output":"Выход","overview.outputSub":"всего {total} ток","scope.aria":"Охват статистики","scope.session":"Эта сессия","scope.sessions":"Все сессии","sessions.currentTag":"Текущая","sessions.detail.noData":"Данные по этой сессии загружаются или их нет","sessions.detail.title":"Подробности сессии","sessions.empty":"Расход по сессиям не записан","sessions.inactive":"Простаивает","sessions.running":"Работает","sessions.selectHint":"Выберите строку, чтобы посмотреть сессию","sessions.subagentTag":"Субагент","sessions.summary.input":"Оплаченный вход, всего","sessions.summary.output":"Выход, всего","sessions.summary.sessions":"Сессий с расходом","sessions.summary.sessionsValue":"{count}","sessions.summary.totalValue":"всего сессий: {count}","sessions.summary.turns":"Ходов всего","sessions.summary.turnsValue":"{turns}","sessions.table.cacheHit":"Попаданий в кэш","sessions.table.input":"Оплаченный вход","sessions.table.output":"Выход","sessions.table.session":"Сессия","sessions.table.status":"Состояние","sessions.table.turns":"Ходы","sessions.table.updated":"Изменена","steps.cacheRead":"Кэш Ч","steps.cacheWrite":"Кэш З","steps.caption":"Только загруженное окно, новые сверху; итог считает то же окно","steps.done":"Готово","steps.empty":"В загруженном окне шагов нет","steps.input":"Вход","steps.interrupted":"Прервано","steps.model":"Модель","steps.output":"Выход","steps.reasoning":"Рассуждения","steps.sortBy":"Сортировать по «{column}»","steps.status":"Состояние","steps.title":"Подробности по шагам","steps.tps":"ток/с","steps.ttft":"Первый токен","steps.turn":"Ход.шаг","steps.windowTotal":"Итог по окну","time.daysAgo":"{n} дн назад","time.hoursAgo":"{n} ч назад","time.justNow":"только что","time.minutesAgo":"{n} мин назад","view.usage":"Статистика"},"usageStats":{"account.balanceMode":"Баланс API","account.blocked":"Запрос к учетной записи был заблокирован локальной политикой безопасности. Проверьте настройки HTTPS, same-origin и private-network.","account.health.age":"Возраст данных","account.health.lastAttempt":"Последняя попытка","account.health.lastSuccess":"Последний успех","account.health.provenance":"Источник","account.invalidResponse":"Провайдер вернул нераспознанные данные о квоте.","account.loading":"Загрузка провайдеров…","account.provenance.configured":"Настроено","account.provenance.experimental":"Экспериментальный","account.provenance.official":"Официальный API","account.provenance.provider":"API провайдера","account.provenance.unknown":"Неизвестно","account.provider":"Текущий провайдер","account.reason.allAddressesUnreachable":"Ни один из проверенных сетевых адресов не доступен.","account.reason.blockedNetwork":"Запрос на учетную запись был заблокирован политикой локальной сети.","account.reason.dnsResolutionFailed":"Имя хоста провайдера не удалось разрешить.","account.reason.noValidatedAddress":"Не было доступно ни одного проверенного адреса провайдера.","account.reason.rateLimited":"Провайдер ограничил проверку аккаунтов по частоте запросов.","account.reason.sub2apiBalanceShapeUnrecognized":"Конечная точка баланса Sub2API вернула данные в нераспознанном формате.","account.reason.timeout":"Запрос аккаунта завершился по тайм-ауту.","account.reason.unauthorized":"Учетные данные аккаунта были отклонены.","account.reason.unknown":"Проверка учетной записи завершилась неудачей без безопасного диагностического сообщения.","account.reason.upstreamInvalidJson":"Вверх по течению возвращен нечитаемый JSON","account.reason.upstreamInvalidResponse":"Восходящий поток вернул нераспознанный ответ.","account.reason.upstreamNotJson":"Ответ вышестоящего сервера не был в формате JSON","account.reason.upstreamTooLarge":"Ответ от вышестоящего сервера превысил допустимый размер.","account.status.blocked":"Заблокировано","account.status.invalidResponse":"Неверный ответ","account.status.loading":"Загрузка","account.status.stale":"Устаревшие данные","account.status.unknown":"Неизвестно","account.status.unsupported":"Баланс не поддерживается","account.title":"Аккаунт провайдера","action.close":"Закрыть","action.nextMonth":"Следующий месяц","action.prevMonth":"Предыдущий месяц","action.refresh":"Обновить","action.retry":"Повторить","action.today":"Сегодня","balance.available":"доступно","balance.error":"Не удалось получить баланс: {message}","balance.granted":"Предоставлено","balance.loading":"Получение баланса…","balance.noCredential":"{ref} не настроен (отредактируйте ~/.dsh/.credentials.yaml)","balance.noSchemeTag":"нет баланса API","balance.provider":"Провайдер","balance.remaining":"Доступный баланс","balance.title":"Баланс счета","balance.toppedUp":"Пополнено","balance.total":"Общий баланс","balance.unavailable":"недоступно","balance.unsupported":"У этого провайдера нет публичного интерфейса для проверки баланса.","balance.used":"Использовано","billing.monthly":"≈ {amount}/мес","billing.parts":"Композиция","billing.projected":"Прогнозируемое использование на конец месяца","billing.tokenOnly":"расчет на основе использования","billing.total":"Ориентировочные ежемесячные траты","budget.exceeded":"превышен бюджет","budget.level.critical":"Превышение бюджета","budget.level.normal":"Обычный","budget.level.unknown":"Неполная стоимость","budget.level.warning":"Близко к бюджету","budget.over":"{pct}% бюджета использовано","budget.period.daily":"Оценка за сегодня","budget.period.monthly":"Ожидаемый за этот месяц","budget.remaining":"осталось","budget.summary":"{period}: {spent} / {limit} · {level}","budget.title":"Ежемесячный бюджет","budget.used":"использовано","col.cacheRead":"Чтение кэша","col.cacheWrite":"Запись в кеш","col.calls":"Звонки","col.cost":"Стоимость","col.created":"Создано","col.cwd":"Рабочая папка","col.day":"День","col.default":"Стандартная ставка","col.hour":"Время","col.input":"Ввод","col.model":"Модель","col.models":"Модели","col.output":"Вывод","col.price":"Тариф","col.provider":"Провайдер","col.session":"Сессия","col.sessions":"Сессии","col.share":"Поделиться","col.time":"Время","col.tokens":"Токены","col.turn":"Поворот/шаг","curve.cost":"Стоимость","curve.empty":"Нет данных о сериях (нет вызовов в указанном интервале)","curve.legendCacheRead":"Чтение кеша","curve.legendInput":"Ввод","curve.legendOutput":"Вывод","curve.tokens":"Токены","details.auto":"Автоматически обновляется вместе с главным окном","details.exportCalls":"Экспорт журнала вызовов в CSV","details.exportCsv":"Экспорт CSV","details.exportJson":"Экспортировать JSON","details.hint":"Звонки, токены и стоимость за сессию × модель","details.open":"Открыть подробности в новом окне","details.title":"Детали звонка · сессия × модель","details.updated":"Обновлено","duration.daysHours":"{days}д {hours}ч","duration.hoursMinutes":"{hours}ч {minutes}м","duration.minutes":"{minutes}м","export.dailyCsv":"Ежедневный CSV","export.json":"Полный JSON","export.sessionsCsv":"Сессии CSV","export.title":"Экспорт без секретов","filter.all":"Все рабочие пространства","filter.scope":"Фильтровать статистику по одной рабочей директории","footnote.disclaimer":"Стоимость рассчитана на основе установленных тарифов и не является счетом.","footnote.errors":"({errors} логов не удалось декодировать)","footnote.scanned":"{sessions} сессий, {calls} звонков просканировано","heatmap.empty":"Данные тепловой карты пока отсутствуют","heatmap.fri":"Пт","heatmap.less":"Меньше","heatmap.mon":"Пн","heatmap.month":"{m}","heatmap.more":"Ещё","heatmap.title":"Тепловая карта активности (52 недели)","heatmap.wed":"Ср","lastUpdated":"Обновлено","month.names":"Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек","month.year":"{month} {year}","orcarouter.addError":"Не удалось добавить OrcaRouter. Пожалуйста, попробуйте ещё раз.","orcarouter.choiceSuffix":"(Спонсированная интеграция)","panel.badge":"Использование/Баланс","panel.title":"Расход и баланс","panel.updatedAt":"Обновлено в {time}","perf.empty":"Нет данных о производительности (отсутствуют временные метки в журналах)","perf.est":"прибл.","perf.latencyAvg":"Средняя задержка","perf.modeTps":"токены/с","perf.modeTtft":"ТТФТ","perf.note":"TTFT = запрос → первый токен контента. Последующие шаги в цикле инструментов не имеют отдельного лога запросов, поэтому их TTFT оценивается с начала шага.","perf.samples":"Образцы","perf.title":"Скорость и задержка модели","perf.tps":"токенов/с","perf.ttftAvg":"Среднее значение TTFT","perf.ttftP50":"ТТФТ P50","perf.ttftP90":"TTFT P90","plan.auto":"авто","plan.balance":"Баланс","plan.code":"План кода","plan.noBalance":"не настроен баланс","plan.perMonth":"месяц","plan.period":"последние {days} дней","plan.quota":"квота","plan.remaining":"Осталось","plan.requests":"запросы","plan.subscription":"Подписка","plan.tiers":"Уровни","plan.token":"Тарифный план","plan.tokenEstimate":"оценка токенов","plan.tokens":"Токены","plan.used":"Использовано","plan.usedCost":"Стоимость использования","pricing.peakOffpeak":"пиковый/непиковый","recent.anomaly":"Аномалия стоимости (значительно выше среднего)","refresh":"Обновить","section.byCwd":"Рабочий каталог","section.byDay":"Днём","section.byModel":"По модели","section.byProvider":"По провайдеру","section.bySession":"По сеансу","section.plans":"Тарифы","section.pricing":"Тарифы (за миллион токенов)","section.recent":"Последние звонки","section.series":"Временные ряды","state.empty":"Данные об использовании токенов пока отсутствуют (нет вызовов с использованием)","state.error":"Не удалось загрузить","state.loading":"Вычисление…","state.retry":"Повторить","subscription.error":"Не удалось использовать подписку: {message}","subscription.loading":"Получение данных об использовании подписки…","subscription.notConfigured":"Настройте {refs} для отображения текущего использования подписки.","subscription.planUnknown":"План подписки","subscription.rateLimited":"Провайдер ограничивает частоту проверок; попробуйте позже.","subscription.resetDue":"Сброс квоты","subscription.resets":"Сбросится через {time}","subscription.status.notConfigured":"Не настроено","subscription.status.ok":"В прямом эфире","subscription.status.rateLimited":"Ограничение по частоте запросов","subscription.status.unauthorized":"Войдите снова","subscription.status.unavailable":"Недоступно","subscription.title":"Использование подписки","subscription.unauthorized":"Учетные данные истекли; обновите их и повторите попытку.","subscription.unavailable":"Провайдер не вернул распознаваемых окон квот.","subscription.used":"{value}% использовано","subscription.window.daily":"Ежедневное окно","subscription.window.mcp":"Ежемесячная квота MCP","subscription.window.monthly":"Ежемесячное окно","subscription.window.quota":"Общая квота","subscription.window.session":"5-часовое окно","subscription.window.weekly":"Еженедельное окно","summary.activeDays":"Активные дни","summary.avgCost":"Среднее / вызов","summary.cacheHit":"Процент попаданий в кеш","summary.cacheRead":"Чтение кэша","summary.cacheWrite":"Запись в кеш","summary.calls":"Звонки","summary.cost":"Примерная стоимость","summary.input":"Ввод","summary.output":"Вывод","summary.sessions":"Сессии","summary.streak":"Дневная серия","summary.today":"Сегодня","summary.tokens":"Всего токенов","tab.details":"Детали звонка","tab.overview":"Обзор","tab.perf":"Производительность","tab.today":"Сегодня","today.calls":"Звонков сегодня","today.cost":"Стоимость сегодня","today.empty":"Сегодня звонков еще не было","today.title":"Сегодняшние токены и стоимость","today.tokens":"Токены сегодня","usage.back":"Назад","usage.cacheRead":"Чтение кэша","usage.error":"Агрегация использования не удалась: {message}","usage.heatmap":"Ежедневное использование в этом месяце","usage.hit.today":"Сегодняшний процент попаданий в кэш","usage.hitRate":"Кэш-попадание","usage.input":"Ввод","usage.legendLess":"Меньше","usage.legendMore":"Ещё","usage.loading":"Агрегирование использования…","usage.month":"В этом месяце","usage.noModels":"Нет данных по моделям за этот день.","usage.output":"Вывод","usage.recent":"Последние 14 дней","usage.title":"Использование токенов","usage.today":"Сегодня","usage.total":"За всё время","usage.unknownModel":"Неизвестная модель","weekday.fri":"Ф","weekday.mon":"М","weekday.sat":"С","weekday.sun":"С","weekday.thu":"Т","weekday.tue":"Т","weekday.wed":"В","widget.close":"Свернуть","widget.hint":"Использование токенов & примерная стоимость","widget.hoverHint":"Нажмите, чтобы развернуть","widget.open":"Развернуть"},"workflowRun":{"member.empty":"Пустое имя участника","member.open":"Открыть {name}","phase.empty":"Пустое имя фазы","phase.unassigned":"Вне фаз","run.empty":"Ни один участник не запущен","run.members.few":"{count} участника","run.members.many":"{count} участников","run.members.one":"{count} участник","run.members.other":"{count} участников","run.title":"{name}","status.cancelled":"Отменено","status.completed":"Завершено","status.failed":"Ошибка","status.interrupted":"Прервано","status.running":"Работает","statusCount.cancelled":"Отменено: {count}","statusCount.completed":"Завершено: {count}","statusCount.failed":"Ошибок: {count}","statusCount.interrupted":"Прервано: {count}","statusCount.running":"Работает: {count}"},"workspace":{"actions.newSession.aria":"Новая сессия в {name}","actions.session.aria":"Действия с сессией {name}","actions.workspace.aria":"Действия с рабочей папкой {name}","conflict.named":"Рабочая папка «{name}» уже есть.","date.ymd":"{d}.{m}.{y}","delete.desc":"Уберёт «{name}» из списка рабочих папок. Сама папка и журналы сессий останутся, а её сессии переедут в «Без папки».","delete.pending":"Удаление рабочей папки…","delete.workspace":"Удалить рабочую папку","empty.noMatches":"Ничего не найдено","empty.none":"Сессий пока нет","field.sessionName":"Название сессии","field.workspaceName":"Название рабочей папки","folderError.retry":"Выбрать снова","folderError.title":"Не удалось открыть папку","group.ungrouped":"Без папки","groupBy.flat":"Одним списком","groupBy.label":"Группировать","groupBy.workspace":"По рабочим папкам","hover.copied":"Скопировано","hover.created":"Создано {time}","menu.addWorkspace":"Добавить рабочую папку…","menu.archiveSession":"Убрать сессию в архив","menu.fork":"Ответвить сессию","orderBy.label":"Сортировать","orderBy.manual":"Вручную","orderBy.updated":"По изменению","picker.loading":"Загрузка рабочих папок…","rename":"Переименовать","rename.session.title":"Переименовать сессию","rename.workspace.title":"Переименовать рабочую папку","schedule.active":"Есть активная запланированная задача","search.clear":"Очистить поиск","search.hasMore":"Показаны первые {n} результатов. Уточните запрос.","search.hasMore.few":"Показаны первые {n} результата. Уточните запрос.","search.hasMore.one":"Найден один подходящий результат.","search.noMatches":"Подходящих сессий нет","search.pending":"Поиск по истории сессий…","search.placeholder":"Поиск по сессиям...","search.results.aria":"Результаты поиска","search.sessions.aria":"Поиск сессий","search.unavailable":"Поиск по содержимому временно недоступен. Показаны совпадения по названию.","section.sessions":"Сессии","section.workspaces":"Рабочие папки","session.new":"Новая сессия","sessions.collapse":"Показать меньше","sessions.count.few":"{n} сессии","sessions.count.many":"{n} сессий","sessions.count.one":"{n} сессия","sessions.count.other":"{n} сессий","sessions.expand":"Показать ещё {n}","status.completed":"Завершено","status.idle":"Простаивает","status.planReview":"План ждёт проверки","status.running":"Работает","status.subagentsRunning.few":"{n} субагента работает","status.subagentsRunning.many":"{n} субагентов работает","status.subagentsRunning.one":"{n} субагент работает","status.subagentsRunning.other":"{n} субагентов работает","status.waitingAnswer":"Ждёт ответа","status.waitingApproval":"Ждёт подтверждения","time.ago":"{t} назад","time.days":"{n} дн","time.hours":"{n} ч","time.minutes":"{n} мин","time.months":"{n} мес","time.now":"только что","time.years":"{n} г","viewOptions.label":"Параметры отображения","workspace.add":"Добавить рабочую папку"}}
367
367
 
368
368
  /** zh-строка -> ru-строка для DOM-перевода панелей вне locale-ядра. */
369
369
  const ZH_RU = {"+ 新增 hook": "+ Добавить hook", "Anthropic 官方技能合集(Claude Skills)": "Официальная коллекция навыков Anthropic (Claude Skills)", "DSH 加载状态": "Состояние в DSH", "DSH 技能": "Навыки DSH", "DSH 本地技能可创建、导入和移到回收站。": "Локальные навыки DSH можно создавать, импортировать и отправлять в корзину.", "Matt Pocock 技能集": "Коллекция навыков Matt Pocock", "SKILL.md 需包含 YAML 格式的技能名称和描述": "SKILL.md должен содержать YAML-название и описание", "Superpowers 社区技能合集": "Коллекция навыков сообщества Superpowers", "ZIP 压缩包无法解压": "ZIP-архив не удаётся распаковать", "ZIP 压缩包过大,限制为 {limit} 字节": "ZIP-архив слишком велик; лимит {limit} байт", "frontmatter 缺少 description": "В frontmatter нет description", "frontmatter 缺少 name": "В frontmatter нет name", "hook #{i}:请填写 run 命令或选择通知渠道": "hook #{i}:укажите команду run или выберите канал уведомлений", "owner/repo 或 https://github.com/…": "owner/repo или https://github.com/…", "skill 来源目录层级超过 {depth} 层: {path}": "Глубина каталога источника превышает {depth} уровней: {path}", "{count} 个已停用": "Отключено: {count}", "{count} 个已在 DSH 加载": "Загружено в DSH: {count}", "{count} 个待处理技能": "Навыков в очереди: {count}", "{count} 个技能": "Навыков: {count}", "{count} 个文件 · {size}": "Файлов: {count} · {size}", "{count} 个诊断项": "Проблем: {count}", "{repo}({count} 个技能)": "{repo} (навыков: {count})", "{result};警告:{warnings}": "{result}; предупреждения: {warnings}", "{value} 分钟前": "{value} мин назад", "{value} 周前": "{value} нед назад", "{value} 天前": "{value} дн назад", "{value} 小时前": "{value} ч назад", "“{name}”将从回收站永久删除,无法恢复。": "«{name}» будет безвозвратно удалён из корзины; восстановить невозможно.", "“{name}”将从当前技能来源移入回收站,之后可以恢复到原位置。": "«{name}» будет перемещён из текущего источника в корзину; позже его можно восстановить на прежнее место.", "一句话说明什么时候使用": "Одно предложение — когда использовать", "一句话说明用途(含触发词),Agent 靠它自动激活技能": "Одна строка — что делает (с триггерными словами); по этому описанию агенты активируют навык", "上传内容为空": "Загрузка пуста", "上传内容包含重复路径:{path}": "Загрузка содержит дублирующийся путь: {path}", "上传内容包含非法路径:{path}": "Загрузка содержит недопустимый путь: {path}", "上传内容编码无效": "Недопустимая кодировка загружаемого содержимого", "上传内容过大,限制为 {limit} 字节": "Загрузка слишком велика; лимит {limit} байт", "上传文件过多,最多 {limit} 个": "Слишком много файлов; максимум {limit}", "上游已删 {count}": "Удалено в источнике: {count}", "上游已删除 {count} 个": "Удалено в источнике: {count}", "不支持包含符号链接的 skill 来源: {path}": "Источники навыков с символическими ссылками не поддерживаются: {path}", "不支持的请求方法": "Метод не поддерживается", "不是目录:{path}": "Это не папка: {path}", "个 hook 触发": "срабатываний хука", "个人": "Личные", "个人技能(未绑定上游,不检查更新)": "Личный навык (не привязан к источнику; проверки обновлений нет)", "为空时恢复默认Deep diving...提示词状态": "Если пусто, возвращается исходный промпт Deep diving...", "以下技能也在其他组中开启,关闭它们会影响那些组:": "Эти навыки включены и в других группах; их закрытие затронет и те группы:", "以下技能已从上游仓库移除,本地目录将移入回收站(可恢复):": "Эти навыки удалены из источника; их локальные каталоги уйдут в корзину (восстановимо):", "优先级 {rank}": "Приоритет {rank}", "例如 code-review-helper": "например code-review-helper", "保存": "Сохранить", "保存中…": "Сохранение…", "保存名称": "Сохранить название", "保存成员": "Сохранить состав", "保留开启": "Оставить включёнными", "修复并启用": "Исправить и включить", "停用": "Отключить", "全选": "Выбрать все", "全部关闭": "Закрыть все", "全部更新": "Обновить всё", "全部来源": "Все источники", "公共 Agent": "Общий Agent", "共 {count} 个技能": "Всего навыков: {count}", "关": "Выкл", "关闭": "Закрыть", "关闭后技能中枢的路由、入口与公告全部下线。": "Отключает маршруты, элементы и объявление центра навыков.", "关闭此组?": "Закрыть эту группу?", "其他来源": "Другие источники", "内置": "Встроенные", "写下技能要遵循的指令、步骤和边界…": "Опишите инструкции, шаги и границы навыка…", "分组": "По группам", "刚刚": "только что", "刚刚检查过": "Недавно проверено", "创建": "создание", "创建中…": "Создание…", "创建位置": "Место создания", "创建失败:": "Ошибка создания: ", "创建技能": "Создать навык", "删除": "удаление", "删除于 {time}": "Удалено {time}", "删除场景": "Удалить сценарий", "删除整组": "Удалить группу", "删除整组?": "Удалить группу?", "删除该分组下的全部 {count} 个技能": "Удалить все навыки ({count}) этой группы", "刷新": "Обновить", "勾选技能加入此场景(含已禁用)。": "Отметьте навыки, чтобы добавить их в сценарий (включая отключённые).", "单文件": "Один файл", "压缩包或文件夹需包含 SKILL.md": "Архив или папка должны содержать SKILL.md", "原项目当前不在活动工作区中,无法恢复:{path}": "Исходный проект не является активной рабочей областью, восстановление невозможно: {path}", "发现 {count} 个可导入技能": "Найдено импортируемых навыков: {count}", "发现新版本 v{version}(当前 v{current})": "Доступно обновление: v{version} (текущая v{current})", "发现诊断": "Диагностика обнаружения", "取消": "Отмена", "只统计最近 N 天的使用次数,默认 14 天;0 = 全部历史。改动立即生效。": "Учитывать использование только за последние N дней (по умолчанию 14); 0 = вся история. Изменения применяются сразу.", "只读": "только чтение", "可更新 {count}": "Обновляемо: {count}", "可管理": "Управляемый", "合并": "Объединить", "同名技能已存在: {name}": "Навык с таким именем уже существует: {name}", "同步": "Синхронизировать", "同步中…": "Синхронизация…", "同步技能?": "Синхронизировать навыки?", "同步本地技能": "Обновить локальные навыки", "名称": "Название", "后台扫描会话日志的间隔,最小 1 分钟;扫描耗时会自动拉长间隔。": "Как часто фоновое сканирование журналов сессий выполняется (минимум 1); тяжёлые сканирования автоматически растягивают интервал.", "向 Agent 公告": "Объявлять агенту", "启停技能": "Вкл/выкл навык", "启停来源": "Вкл/выкл источник", "启用": "Включить", "启用或停用": "включение или отключение", "启用插件": "Включить плагин", "回收站": "Корзина", "回收站为空。": "Корзина пуста.", "回收站条目不存在: {id}": "Элемент корзины не найден: {id}", "回收站条目路径非法: {id}": "Недопустимый путь элемента корзины: {id}", "回收站里的技能会被永久删除,无法恢复。此操作不可撤销。": "Навыки в корзине будут удалены безвозвратно и не могут быть восстановлены.", "在分组标题后汇总调用次数与最近调用时间。": "После заголовков групп показывать число вызовов и время последнего вызова.", "在技能名旁显示琥珀色调用次数。": "Показывать янтарный счётчик вызовов рядом с именем навыка.", "在技能名行右侧显示相对时间(如「3 天前」)。": "Показывать относительное время в строке имени (например «3 дн назад»).", "在系统提示中加入本插件说明,用户提到技能管理时 Agent 知道如何协作。": "Добавляет раздел в системный промпт, чтобы агенты знали, как сотрудничать, когда пользователь упоминает управление навыками.", "场景": "Сценарии", "场景名": "Название сценария", "填写项目路径后,面板同时显示该项目 .dsh/skills 与 .agents/skills 下的技能(只读);留空回车恢复用户级视图。": "Укажите путь проекта, чтобы показать навыки его .dsh/skills и .agents/skills (только чтение); очистите и нажмите Enter, чтобы вернуться к пользовательскому виду.", "失败 {count} 个": "Не удалось: {count}", "安装": "Установить", "对话中的 create_skill 仍创建用户级 DSH Skill;项目 Skill 可在这里选择活动项目后创建。": "Команда create_skill в чате по-прежнему создаёт пользовательский навык DSH; проектный навык можно создать здесь, выбрав активный проект.", "导入": "Импорт", "导入中…": "Импорт…", "导入失败": "Импорт не удался", "导入完成:{names}": "Импорт завершён: {names}", "导入成功 {count} 个": "Импортировано: {count}", "导入所选 ({count})": "Импортировать выбранные ({count})", "导入技能": "Импорт навыка", "导入时复制完整内容,不修改原始来源": "Импорт копирует содержимое целиком и не меняет источник", "导入来源不能与 DSH 技能目录相同、包含或位于其中": "Источник импорта не может совпадать с каталогом навыков DSH, содержать или находиться внутри него", "将把以下来源的可更新技能更新到上游最新版本(覆盖本地修改):": "Обновляемые навыки этих источников будут перезаписаны их новейшими версиями из источника:", "将把分组“{name}”下的全部 {count} 个技能移入回收站(可恢复),只读技能会跳过:": "Все навыки ({count}) группы «{name}» будут перемещены в корзину (восстановимо); навыки «только чтение» будут пропущены:", "将用上游最新版本覆盖本地对以下技能的所有修改:": "Локальные изменения этих навыков будут перезаписаны новейшими версиями из источника:", "尚未核对上游": "источник ещё не проверен", "展开工作过程": "Развернуть процесс", "展开设置": "Развернуть настройки", "工作区路径(回车应用)": "Путь рабочей области (Enter — применить)", "已停用": "Отключён", "已创建技能:{name}": "Навык создан: {name}", "已创建:": "Создано: ", "已加载": "Загружен", "已发现": "Обнаружен", "已取消 · 已导入 {imported}/{total} 已保留,临时文件已清理": "Отменено · {imported}/{total} сохранено, временные файлы удалены", "已同步版本": "Синхронизированная ревизия", "已启用": "Включено", "已处理": "Обработано", "已存在": "Существующие", "已导入:{imported};已跳过同名技能:{skipped}": "Импортировано: {imported}; пропущены одноимённые: {skipped}", "已恢复技能:{name}": "Навык восстановлен: {name}", "已是最新": "Актуально", "已是最新版本 v{version}": "Актуальная версия: v{version}", "已更新 {count} 个来源": "Обновлено источников: {count}", "已永久删除:{name}": "Удалён безвозвратно: {name}", "已禁用": "Отключено", "已禁用 {count}": "Отключено: {count}", "已移到回收站:{name}": "Отправлен в корзину: {name}", "已装 {count}": "Установлено: {count}", "已覆盖": "Переопределено", "已选择": "Выбрано", "市场": "Маркет", "市场源已对齐到 {ref},要同步更新以下本地技能吗?": "Источник выровнен с {ref}. Обновить эти локальные навыки?", "平铺": "Списком", "开": "Вкл", "当前 hooks": "Текущие хуки", "思考": "Рассуждения", "恢复": "Восстановить", "恢复默认": "По умолчанию", "所属场景": "Группы", "所选文件夹中没有找到 SKILL.md。": "В выбранной папке не найдено SKILL.md.", "扫描": "Сканировать", "扫描中…": "Сканирование…", "批量更新全部技能?": "Обновить все навыки?", "批量来源中存在多个同名技能: {name}": "В пакетном источнике есть навыки с одинаковыми именами: {name}", "技能": "Навыки", "技能 skills": "Навыки (skills)", "技能不存在: {name}": "Навык не найден: {name}", "技能中枢": "Центр навыков", "技能中枢:浏览、分组与同步管理本地技能": "Центр навыков: просмотр, группировка и синхронизация локальных навыков", "技能内容过长": "Содержимое навыка слишком велико", "技能名称不是合法 kebab-case:{name}": "Имя навыка не соответствует kebab-case: {name}", "技能名称与描述": "Название и описание навыка", "技能名(kebab-case,如 code-review)": "Имя навыка (kebab-case, например code-review)", "技能正文不能为空": "Текст навыка обязателен", "技能简介不能为空": "Описание навыка обязательно", "技能管理器状态文件不可读,已拒绝覆盖:{path}": "Файл состояния менеджера не читается, перезапись отклонена: {path}", "技能管理器状态文件不可读;外部技能已安全停用,修复文件前不会覆盖状态:{path}": "Файл состояния менеджера не читается; внешние навыки отключены, перезапись заблокирована до исправления: {path}", "技能缺少完整 frontmatter,无法{action}: {name}": "У навыка неполный frontmatter, нельзя выполнить «{action}»: {name}", "技能行/聊天 / 菜单中「仅用户可调」绿色圆点的颜色(#rrggbb)。": "Цвет зелёной точки «только пользователь» в панели навыков и чате/меню (#rrggbb).", "技能行/聊天 / 菜单中「模型可调」蓝色圆点的颜色(#rrggbb)。": "Цвет синей точки «модель может вызвать» в панели навыков и чате/меню (#rrggbb).", "技能详情": "Подробности навыка", "拖拽技能到此处": "Перетащите навык сюда", "按名称": "По названию", "按添加时间": "По дате добавления", "按调用次数": "По числу вызовов", "描述(一句话路由说明)": "Описание (одно предложение для маршрутизации)", "提供者": "Провайдер", "搜索": "Поиск", "搜索技能…": "Поиск навыков…", "搜索技能名称或描述": "Поиск по названию или описанию навыка", "操作失败:{error}": "Действие не удалось: {error}", "支持 .zip、技能文件夹或单个 SKILL.md": "Поддерживаются .zip, папка навыка или один SKILL.md", "收起工作过程": "Свернуть процесс", "收起设置": "Свернуть настройки", "放弃修改": "Отменить", "文件要求": "Требования к файлам", "新建场景": "Новый сценарий", "新建技能": "Новый навык", "新版本 v{version}": "Новая версия v{version}", "无法从宿主读取活动工作区,项目技能未显示:{path}": "Не удалось получить активную рабочую область у хоста, проектные навыки скрыты: {path}", "无法恢复,同名技能已存在: {name}": "Нельзя восстановить: навык с таким именем уже существует: {name}", "无法生成合法 kebab-case 名称(原始名: {name})": "Не удалось сгенерировать корректное имя kebab-case (исходное: {name})", "无法访问 /dsh-hooks/* 路由:请确认 dsh-hooks 核心插件已安装且 dsh web 已重启。": "Не удаётся получить доступ к маршрутам /dsh-hooks/*: убедитесь, что плагин dsh-hooks установлен и DSH перезапущен.", "无法识别的 skill 来源: {path}": "Нераспознанный источник навыков: {path}", "无法读取目录:{path}": "Не удалось прочитать папку: {path}", "旧版本备份未清理: {path}({error})": "Резервная копия старой версии не удалена: {path} ({error})", "显示分组汇总": "Показывать сводку по группам", "显示最近调用时间": "Показывать время последнего вызова", "显示调用次数": "Показывать число вызовов", "暂无 hook,点「编辑」添加": "Нет хуков, нажмите «Редактировать» для добавления", "暂无可用的发布版本": "Нет доступных релизов", "暂无来源组。从市场导入技能后自动按来源聚合。": "Групп по источникам пока нет. Импортируйте навыки из маркета — они сгруппируются по источникам.", "更新": "Обновить", "更新 {count} 个": "Обновить {count}", "更新时间": "Обновлён", "有更新": "Есть обновления", "有更新 {count} 个": "Обновлений: {count}", "服务端返回非 JSON 响应(HTTP {status})": "Сервер вернул ответ не в формате JSON (HTTP {status})", "未保存": "Не сохранено", "未发现诊断问题。": "Проблем не обнаружено.", "未导入任何技能。": "Не импортировано ни одного навыка.", "未导入任何技能;已跳过同名技能:{names}": "Ничего не импортировано; пропущены существующие: {names}", "未提供简介": "Описание не указано", "未知技能来源:{root}": "Неизвестный источник навыков: {root}", "未知操作": "Неизвестное действие", "本地还没有技能。点击「新建技能」创建第一个。": "Навыков пока нет. Создайте первый.", "本部署没有挂载该设置命名空间。": "Это развёртывание не предоставляет пространство настроек.", "本部署没有接受这些值,已保留供你修改。": "Развёртывание не приняло эти значения; они оставлены для исправления.", "本部署的设置为只读。": "Настройки этого развёртывания доступны только для чтения.", "来源": "Источник", "来源:{source}": "Источник: {source}", "查看 {name} 详情(回车)": "Подробнее о навыке {name} (Enter)", "查看发布": "Открыть релиз", "查看详情": "Подробнее", "检查": "Проверить", "检查中…": "Проверка…", "检查全部": "Проверить все", "检查失败": "Проверка не удалась", "检查更新": "Проверить обновления", "检查更新失败:{error}": "Не удалось проверить обновления: {error}", "模型可调 — Agent 可自动调用": "Вызывается моделью — агенты могут вызывать автоматически", "模型可调圆点颜色": "Цвет точки «вызывается моделью»", "模板 design-templates": "Шаблоны design-templates", "正在加载技能…": "Загрузка навыков…", "正在安装…": "Установка…", "正在导入: {name} ({done}/{total})": "Импорт: {name} ({done}/{total})", "正文": "Текст", "正文(Markdown)": "Текст (Markdown)", "每个技能最多一个圆点;无圆点 = 不可被调用。": "У навыка не более одной точки; нет точки = не вызывается.", "永久删除": "Удалить безвозвратно", "永久删除?": "Удалить безвозвратно?", "没有匹配的技能。": "Подходящих навыков нет.", "没有找到可导入技能。": "Импортируемых навыков не найдено.", "添加": "Добавить", "添加时间": "Добавлен", "添加源": "Добавить источник", "清空": "Очистить", "清空回收站": "Очистить корзину", "清空回收站?": "Очистить корзину?", "清除工作区": "Очистить рабочую область", "清除搜索": "Очистить поиск", "源文件": "Исходный файл", "源文件只读": "Источник только для чтения", "点击检查上游更新": "Нажмите, чтобы проверить источник на обновления", "状态已更新。": "Состояние обновлено.", "状态提示词": "Промпт статуса", "用户 .agents": "пользователь .agents", "用户 .dsh": "пользователь .dsh", "用户 ~/.agents/skills": "Пользовательские ~/.agents/skills", "用户 ~/.dsh/skills": "Пользовательские ~/.dsh/skills", "用户可调 — 仅显式点名时触发": "Вызывается пользователем — только явный вызов", "用户可调圆点颜色": "Цвет точки «вызывается пользователем»", "目录下未找到任何 skill 条目: {path}": "В каталоге не найдено ни одного элемента навыков: {path}", "目录技能": "Набор навыков", "目录路径必须是绝对路径:{path}": "Путь к папке должен быть абсолютным: {path}", "目标目录": "Целевой каталог", "知道了": "Понятно", "确定": "Подтвердить", "确定把「{name}」移入回收站吗?可随时恢复。": "Переместить «{name}» в корзину? Его можно восстановить в любой момент.", "禁止的修改请求(缺少客户端标记)": "Запрещённый запрос на изменение (нет клиентского маркера)", "禁止的请求来源(非法 Host)": "Запрещённый источник запроса (неверный Host)", "禁用": "Отключить", "移入回收站": "В корзину", "移入回收站回滚失败,未恢复内容保留在: {path}({error})": "Откат перемещения в корзину не удался; невосстановленное содержимое сохранено в: {path} ({error})", "移入回收站?": "В корзину?", "移到回收站": "В корзину", "移到回收站?": "Отправить в корзину?", "移除所选内容": "Убрать выбранное", "移除源": "Удалить источник", "移除源不影响已安装的技能。": "Удаление источника не затрагивает установленные навыки.", "简介": "Описание", "管理 dsh 本地技能目录:浏览、分组、来源同步与新建。": "Управление локальным каталогом навыков dsh: просмотр, группировка, синхронизация источников и создание.", "精选技能仓库,添加后即可扫描安装,并持续检查更新。": "Отобранные репозитории навыков — добавьте, чтобы сканировать и устанавливать, с постоянной проверкой обновлений.", "细分": "Разделить", "统一加载和管理本机 Agent Skills。": "Единая загрузка и управление Agent-навыками на этом компьютере.", "统计窗口(天)": "Окно статистики (дней)", "继承": "Наследовать", "编辑": "Изменить", "缺少完整 YAML frontmatter": "Отсутствует полный YAML frontmatter", "能力怎么选:重复方法 → 技能;外部系统 → MCP;长期资料 → 知识库。": "Как выбрать способность: повторяемый метод → навык; внешняя система → MCP; долгосрочные знания → база знаний.", "自动统计间隔(分钟)": "Интервал автостатистики (минут)", "自定义": "свой каталог", "自定义状态提示词": "Свой промпт статуса", "自定义目录": "Пользовательские каталоги", "被更高优先级来源 {root} 覆盖": "Перекрыт источником с более высоким приоритетом {root}", "被覆盖": "Перекрыт", "覆盖导入回滚失败,备份保留在: {path}({error})": "Откат перезаписывающего импорта не удался; резервные копии сохранены в: {path} ({error})", "设计技能合集(design-templates)": "Коллекция навыков дизайна (design-templates)", "诊断": "Диагностика", "诊断异常": "Есть проблемы", "该仓库没有正式发布,选择要跟踪的分支(默认为 main):": "У репозитория нет релизов. Выберите ветку для отслеживания (по умолчанию main):", "该来源不允许{action}": "Этот источник не разрешает: {action}", "该来源目录不存在或暂时没有技能。": "Этого каталога не существует или в нём пока нет навыков.", "该来源还没有导入本地技能。": "Из этого репозитория пока не импортировано ни одного навыка.", "该组没有可写技能(只读技能无法由中枢开关)": "В группе нет перезаписываемых навыков (состояние навыков «только чтение» нельзя менять из центра)", "请求体不是合法 JSON": "Тело запроса — не корректный JSON", "请求体必须是 application/json": "Тело запроса должно быть application/json", "请求体过大": "Тело запроса слишком велико", "请选择 .zip 或单个 SKILL.md。": "Выберите .zip или один файл SKILL.md.", "读取中…": "Загрузка…", "读取技能正文…": "Загрузка текста навыка…", "调用次数": "Вызовы", "调用策略字段值无效": "Недопустимое значение политики вызова", "跟进上游删除?": "Согласиться с удалением в источнике?", "跟进删除": "Согласиться с удалением", "路径": "Путь", "路径不存在: {path}": "Путь не существует: {path}", "跳过": "Пропустить", "跳过已存在 {count} 个": "Пропущено существующих: {count}", "运行时": "Runtime", "返回列表": "К списку", "还没有场景。先新建一个,再把技能归类。": "Сценариев ещё нет. Создайте один и начните раскладывать навыки.", "还没有市场源。从下方内置市场添加,或输入一个 GitHub 仓库。": "Источников пока нет. Добавьте из каталога ниже или введите репозиторий GitHub.", "适用场景": "Когда применять", "选择分支": "Выберите ветку", "选择文件": "Выбрать файл", "选择文件夹": "Выбрать папку", "通知 webhook": "Webhook уведомлений", "通过 Skills Manager 只读加载,启停不会改写源文件。": "Загружается через Skills Manager только для чтения; переключения не меняют исходные файлы.", "项目 .agents": "проект .agents", "项目 .agents/skills": "Проектные .agents/skills", "项目 .dsh": "проект .dsh", "项目 .dsh/skills": "Проектные .dsh/skills", "项目 Agent": "Проектный Agent", "项目 DSH": "Проектный DSH", "项目技能目录不安全,拒绝写入:{path}": "Каталог проектных навыков небезопасен, запись отклонена: {path}", "项目级": "Проектный", "(目录可能不完整)": "(каталог может быть неполным)"}
@@ -1079,16 +1079,15 @@ const makeLayout = (freq, localDict = new Set()) => {
1079
1079
  (ev) => setTypo({ enabled: ev.target.checked }), !ruActive), t('typographyDesc')),
1080
1080
  row(t('yo'), checkbox(typography.yo === true,
1081
1081
  (ev) => setTypo({ yo: ev.target.checked }), !ruActive), t('yoDesc')),
1082
- row(t('agentPrompt'), checkbox(value.overrides && value.overrides.agentPrompt === true,
1082
+ row(t('agentPrompt'), checkbox(value.agentPrompt === true,
1083
1083
  (ev) => {
1084
- const next = Object.assign({}, value.overrides || {}, { agentPrompt: ev.target.checked })
1085
1084
  try {
1086
- const r = scope.set('overrides', next)
1085
+ const r = scope.set('agentPrompt', ev.target.checked)
1087
1086
  if (r && typeof r.catch === 'function') r.catch((err) => {
1088
- console.warn('dsh-russian-lang: scope.set overrides failed', err && err.message || err)
1087
+ console.warn('dsh-russian-lang: scope.set agentPrompt failed', err && err.message || err)
1089
1088
  })
1090
1089
  } catch (err) {
1091
- console.warn('dsh-russian-lang: scope.set overrides sync threw', err && err.message || err)
1090
+ console.warn('dsh-russian-lang: scope.set agentPrompt sync threw', err && err.message || err)
1092
1091
  }
1093
1092
  }, false), t('agentPromptDesc')),
1094
1093
  React.createElement('div', { className: 'rl-note' },
@@ -1096,7 +1095,7 @@ const makeLayout = (freq, localDict = new Set()) => {
1096
1095
  React.createElement('div', { className: 'rl-hint' }, t('altL')),
1097
1096
  React.createElement('div', { className: 'rl-actions' },
1098
1097
  React.createElement('a', {
1099
- href: makeIssueUrl({}, '0.2.2'),
1098
+ href: makeIssueUrl({}, '0.2.4'),
1100
1099
  target: '_blank',
1101
1100
  rel: 'noopener noreferrer',
1102
1101
  className: 'rl-link'