@ragnoryok1/dsh-client-locale-ru 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","names":[],"sources":["../src/client/dicts.ts","../src/client/typography.ts","../src/client/index.ts"],"sourcesContent":["/**\n * Russian (ru) dictionaries, one entry per locale namespace.\n * Key sets mirror each namespace's zh/en dictionaries at the profiled\n * base commit; any key added upstream later falls back to en at lookup.\n */\n\nexport const RU_LABEL = 'Русский'\n\nexport const RU_DICTS: Record<string, Record<string, string>> = {\n 'common': {\n 'ok': 'ОК',\n 'cancel': 'Отмена',\n 'close': 'Закрыть',\n 'copy': 'Копировать',\n 'copied': 'Скопировано',\n 'copy.failed': 'Не удалось скопировать',\n 'copy.value': 'Копировать значение',\n 'copy.json': 'Копировать JSON',\n 'copy.path': 'Копировать путь',\n 'copy.prettyJson': 'Копировать красивый JSON',\n 'copy.compactJson': 'Копировать компактный JSON',\n 'copy.optionsHint': '{action}; правый клик — варианты копирования',\n 'retry': 'Повторить',\n 'loading': 'Загрузка…',\n 'load.failed': 'Не удалось загрузить',\n 'submit': 'Отправить',\n 'submitting': 'Отправка…',\n 'next': 'Далее',\n 'previous': 'Предыдущий',\n 'skip': 'Пропустить',\n 'delete': 'Удалить',\n 'edit': 'Изменить',\n 'save': 'Сохранить',\n 'search': 'Поиск',\n 'more': 'Ещё',\n 'collapse': 'Свернуть',\n 'expand': 'Развернуть',\n 'back': 'Назад',\n 'brand.localBuild': 'Локальная сборка DSH',\n 'unknown': 'Неизвестно',\n 'none': 'Нет',\n 'truncated': 'Обрезано',\n 'json.label': 'JSON',\n 'markdown.footnotes': 'Сноски',\n 'markdown.truncatedCharacters': '… обрезано на {total} символах',\n 'number.thousand': '{value} тыс.',\n 'number.million': '{value} млн',\n 'codeBlock.title': 'Блок кода',\n 'codeBlock.wrap': 'Переносить строки',\n 'codeBlock.unwrap': 'Не переносить строки',\n 'workspace.defaultName': 'Рабочая папка по умолчанию',\n },\n 'settings.locale': {\n 'language.title': 'Язык',\n },\n 'settings.agentPreset': {\n 'standardUnavailable': 'Стандартный режим недоступен. Восстановите его или выберите другой доступный режим.',\n 'createPlugin': 'Пусть агент создаст плагин',\n 'createPluginDescription': 'Войдите в режим создания и сделайте свой плагин для DSH',\n 'createPluginChecking': 'Проверяем, доступен ли режим создания',\n 'createPluginUnavailable': 'Временно недоступно. Откройте это меню ещё раз, чтобы повторить',\n 'createPluginMissing': 'Режим создания не входит в эту сборку',\n 'seatHint': 'Выберите пресет агента для новой задачи',\n 'headerHint': 'Пресет агента, выбранный при запуске этой задачи',\n 'nav': 'Пресеты агента',\n 'sectionIntro': 'Выберите инструменты агента и то, как он работает. Для повседневных задач — режим «Стандартный», для расширения возможностей DSH — режим «Создатель».',\n 'setDefault': 'Сделать пресетом новых задач по умолчанию',\n 'presetStandardName': 'Стандартный режим',\n 'presetStandardDescription': 'Работа с кодом, файлами и информацией. Подходит для большинства задач: поиск, редактирование, команды терминала и другие инструменты доступны по мере необходимости.',\n 'presetPtcName': 'Режим кода',\n 'presetMinimalName': 'Минимальный режим',\n 'presetMinimalDescription': 'Агент работает только через инструмент терминала. Полезно для тестов и сравнения базовой производительности.',\n 'presetCordisName': 'Режим Creator',\n 'presetCordisDescription': 'Настройка DSH через диалог. Позвольте агенту написать плагины, добавляющие возможности или интерфейс, либо собрать собственный режим из инструментов и промптов.',\n 'inUse': 'По умолчанию для новых задач',\n 'builtInGroup': 'Встроенные',\n 'customGroup': 'Свои',\n 'noDescription': 'Нет описания.',\n 'brokenBadge': 'Не удалось загрузить',\n 'close': 'Закрыть',\n 'creatorDraft': 'Попросить агента создать пресет',\n 'presetPtcDescription': 'Включает все возможности стандартного режима. Лучше подходит для задач, где инструменты вызываются пакетно, а результаты нужно отфильтровать, упорядочить, объединить, посчитать или обобщить.',\n 'switchRefused': 'Не удалось переключить на «{name}»: {reason}',\n 'modeExplanation': 'Подробности режима',\n 'howToUse': 'Как пользоваться',\n 'guideSections': 'Разделы руководства',\n 'guideExampleTask': 'Пример задачи',\n 'guideCopy': 'Копировать',\n 'guideCopied': 'Скопировано',\n 'guideFootnotes': 'Сноски',\n 'guideStandardIntro': 'Выбирайте режим Standard при запуске новой задачи. Опишите, чего вы хотите достичь, укажите нужные файлы и объясните, как проверить результат.',\n 'guideStandardExplanation': '### Как это работает\\n\\nАгент вызывает инструменты напрямую, чтобы читать и редактировать файлы, искать информацию и выполнять команды терминала. В него входят Skills, планирование, цели, субагенты, workflow и сжатие контекста.\\n\\n### Когда его выбирать\\n\\nНачните с него для повседневного программирования, работы с файлами и исследований. Режим Standard также умеет писать скрипты и пакетно обрабатывать файлы. PTC меняет способ организации вызовов инструментов; для пакетных задач он не обязателен.',\n 'guideStandardUsage': '### Исправить ошибку\\n\\n> Выясните, почему при повторной отправке формы поиска результаты исчезают. Исправьте это и запустите соответствующие тесты. Объясните причину и то, что изменилось.\\n\\nОжидаемый результат: изменение в коде, результаты соответствующих тестов и объяснение причины.\\n\\n### Упорядочить заметки проекта\\n\\n> Прочитайте заметки в формате Markdown в этом проекте. Обобщите принятые решения и открытые вопросы со ссылками на исходные файлы.\\n\\nОжидаемый результат: сводка со ссылками, которые можно сверить с исходными заметками.',\n 'guidePtcIntro': 'Выбирайте режим PTC при запуске новой задачи. Укажите входные файлы, правила обработки и формат вывода. Код напишет агент.',\n 'guidePtcExplanation': '### Как вызываются инструменты\\n\\nPTC означает Programmatic Tool Calling. В этом встроенном пресете агент с помощью run_code пишет программу на TypeScript, которая вызывает инструменты через сгенерированный SDK. Программа может использовать циклы, условия, обработку ошибок и параллельные вызовы там, где это уместно.\\n\\n### Что попадает в модель\\n\\nРезультаты инструментов сначала попадают в программу, которая может их отфильтровать и объединить. Модель получает то, что программа выводит или возвращает; результаты-изображения прикрепляются отдельно. Вложенные вызовы инструментов всё равно записываются и по-прежнему подчиняются разрешениям инструментов.\\n\\n### В сравнении с режимом Standard\\n\\nОба режима справляются с программированием и пакетными задачами. Режим Standard предоставляет отдельные инструменты напрямую; PTC организует вызовы инструментов в коде. В текущем пресете PTC инструмент workflow отключён. Скорость и расход токенов зависят от задачи и от того, как программа обрабатывает свои результаты.',\n 'guidePtcUsage': '### Проверить набор файлов конфигурации\\n\\n> Проверьте все файлы JSON в configs/. Перечислите отсутствующие обязательные поля и недопустимые значения согласно schema.json. Сохраните CSV, где каждая проблема — отдельная строка. Включите в отчёт нечитаемые файлы и продолжайте проверять остальные. Исходные файлы не меняйте.\\n\\nОжидаемый результат: сводка проблем и отчёт в формате CSV. Программа может повторять одни и те же проверки, обрабатывать отдельные сбои и собирать результаты.\\n\\n### Обобщить журналы ошибок\\n\\n> Проанализируйте файлы журналов в logs/. Сгруппируйте ошибки по сервису и типу ошибки. Покажите десять самых частых групп и по одному примеру из каждой. Сохраните полные счётчики в CSV.\\n\\nОжидаемый результат: основные группы ошибок и полная таблица счётчиков. Промежуточные данные можно агрегировать в программе, прежде чем сводка попадёт в модель.',\n 'guideMinimalIntro': 'Выбирайте режим Minimal для новой задачи. Для сравнения сохраняйте модель, разрешения, входные данные и исходное состояние рабочего пространства неизменными между запусками.',\n 'guideMinimalExplanation': '### Что в него входит\\n\\nОдин постоянный инструмент shell и фиксированный системный промпт. Встроенный пресет не загружает Skills, планирование, сжатие контекста и стандартный контекст выполнения.\\n\\n### Когда его выбирать\\n\\nИспользуйте его как базовый уровень для экспериментов и сравнений. Он по-прежнему может читать файлы и выполнять скрипты через команды shell, но предлагает меньше встроенных способов управления длительной задачей. Меньшее число инструментов не обязательно облегчает работу новичку.',\n 'guideMinimalUsage': '### Сравнить работу на небольшом исправлении ошибки\\n\\n> Запустите тесты этого проекта, найдите причину сбоя и внесите минимальное исправление. Снова запустите соответствующие тесты и сообщите результат.\\n\\nВыполните одну и ту же задачу отдельно в режимах Standard и Minimal из одного и того же исходного состояния. Сравните завершение задачи, вызовы инструментов и получившиеся изменения. Режим Minimal выполняет работу через команды терминала.',\n 'guideCordisIntro': 'Выбирайте режим Creator для новой задачи. Опишите, какая возможность вам нужна, где она должна появиться и как вы будете её проверять.',\n 'guideCordisExplanation': '### Что можно создать\\n\\nРежим Creator включает стандартные инструменты для задач, а также инспекцию среды выполнения, постоянное управление плагинами и руководство по написанию плагинов Cordis и пресетов агента. Он может создать плагин, добавляющий возможность или интерфейс, либо пресет, объединяющий инструменты и промпты для конкретной работы.\\n\\n### Плагины и режимы\\n\\nПлагин добавляет возможности в DSH, например инструмент, подключение к сервису или элемент интерфейса. Режим — это пресет агента, который выбирает инструменты и определяет, как агент работает над задачей. Плагин можно включить в пользовательский пресет.\\n\\n### Как результат вступает в силу\\n\\nПопросите агента установить и проверить результат, а не просто сгенерировать исходный код. Плагин может загрузиться сразу или потребовать перезапуска — в зависимости от того, что он меняет. Новый созданный пресет выбирается при запуске новой задачи.',\n 'guideCordisUsage': '### Добавить интерфейс\\n\\n> Создайте плагин DSH, который добавляет в боковую панель пункт «Заметки проекта». Дайте мне просматривать файлы Markdown в этом рабочем пространстве и открывать предпросмотр выбранной заметки. Установите его и проверьте, что страница открывается.\\n\\nОжидаемый результат: установленный плагин с работающим пунктом и страницей предпросмотра, а также оставшиеся шаги для активации.\\n\\n### Добавить инструмент\\n\\n> Создайте плагин с инструментом, который читает отчёт о тестах этого проекта и обобщает неудачные тесты. Зарегистрируйте его и проверьте на образце отчёта.\\n\\nОжидаемый результат: плагин с вызываемым инструментом и проверенным примером вызова.\\n\\n### Создать собственный режим\\n\\n> Создайте режим «Code review» на основе режима Standard. Пусть он в первую очередь обращает внимание на потенциальные ошибки и пробелы в тестах, ссылается на пути к файлам и номера строк и спрашивает перед изменением файлов. Сохраните его как выбираемый пресет.\\n\\nОжидаемый результат: пользовательский пресет для новых задач. Эти инструкции по ревью направляют агента; настройки разрешений определяют, какие действия он может выполнять.',\n 'view': 'Посмотреть конфигурацию',\n 'enableDevToolsToSetDefault': 'Включите «Инструменты для кода» в основных настройках, чтобы выбрать значение по умолчанию',\n 'enableDevToolsToCreate': 'Включите «Инструменты для кода» в основных настройках, чтобы включить режим Creator',\n },\n 'approval': {\n 'detail.aria': 'Детали запроса',\n 'waiting': 'Ожидает одобрения',\n 'escalation': 'Инструмент {toolName} запрашивает привилегированное выполнение',\n 'reject': 'Отклонить',\n 'allowOnce': 'Разрешить один раз',\n },\n 'command': {\n 'search.placeholder': 'Поиск…',\n 'search.aria': 'Фильтр вариантов',\n 'status.loading': 'Загрузка вариантов…',\n 'status.applying': 'Применение…',\n 'status.empty': 'Нет вариантов',\n 'overlay.aria': 'Варианты /{command}',\n 'listbox.aria': 'Совпадения /{command}',\n 'notice.attachmentsUnsupported': '/{command} не принимает вложения; сначала удалите их',\n 'description.compact': 'Сжать историю старых сообщений',\n 'description.export': 'Скачать журнал этой сессии как ZIP-архив',\n 'description.feedback': 'Оставить отзыв об этой сессии',\n 'description.goal': 'Задать или посмотреть цель долгой задачи',\n 'description.permission': 'Переключить пресет разрешений (режим песочницы + политика подтверждений)',\n 'description.plan': 'Войти в режим планирования или выйти из него',\n 'section.add': 'Добавить',\n 'section.commands': 'Команды',\n 'label.goal': 'Цель',\n 'label.plan': 'План',\n 'label.feedback': 'Отзыв',\n 'label.compact': 'Сжатие',\n 'label.permission': 'Права',\n 'label.export': 'Экспорт',\n 'token.goal': 'цель',\n 'token.plan': 'план',\n 'token.feedback': 'отзыв',\n 'token.compact': 'сжатие',\n 'token.permission': 'права',\n 'token.export': 'экспорт',\n },\n 'conversation': {\n 'ask.pending': 'продолжено; ответ всё ещё можно дать',\n 'ask.pendingDetail': 'На эти вопросы всё ещё можно ответить из поля ввода.',\n 'ask.reopen': 'Ответить',\n 'ask.review': 'Посмотреть ответы',\n 'ask.closed': 'завершён',\n 'ask.closedDetail': 'Вопрос закрыт; результат — в беседе ниже.',\n 'hint.plan': 'опишите вашу задачу, чтобы составить план',\n 'hint.goal': 'опишите цель для длительной задачи',\n 'hint.goal.active': 'цель активна — edit / pause / resume / clear',\n 'placeholder.plan': 'опишите вашу задачу, чтобы составить план',\n 'placeholder.default': 'Сообщение или задача; «/» — команды, «@» — файлы и сессии',\n 'placeholder.unavailable': 'Сессия недоступна',\n 'placeholder.parentOffline': 'Родительская сессия офлайн: отправка недоступна, но вы можете остановить выполнение',\n 'placeholder.hero': 'Опишите, что нужно сделать; «/» — команды, «@» — файлы и сессии',\n 'placeholder.workspace': 'Выберите рабочее пространство, чтобы начать',\n 'placeholder.steerQueue': 'Cmd/Ctrl+Enter — отправить все сообщения из очереди',\n 'input.commands': 'Добавить файлы или выполнить команды',\n 'input.stop': 'Остановить генерацию',\n 'input.send': 'Отправить сообщение',\n 'attachment.pending': 'Вложения ожидают отправки',\n 'attachment.scrollLeft': 'Прокрутить вложения влево',\n 'attachment.scrollRight': 'Прокрутить вложения вправо',\n 'attachment.dropTitle': 'Перетащите файлы или изображения сюда, чтобы добавить их',\n 'attachment.dropDesc': 'Изображения: до {count} шт., каждое до {size}',\n 'attachment.dropBlocked': 'Сейчас нельзя добавить файлы или изображения',\n 'image.pending': 'Изображения ожидают отправки',\n 'image.openOriginal': 'Открыть оригинал',\n 'image.openOriginalLabel': '{label}, нажмите, чтобы открыть оригинал',\n 'image.remove': 'Удалить изображение {name}',\n 'image.original': 'Оригинал',\n 'image.label': 'Изображение',\n 'image.loadFailed': 'Не удалось загрузить изображение; нажмите, чтобы повторить',\n 'image.loading': 'Загрузка изображения…',\n 'image.preview': 'Просмотр оригинала',\n 'image.closePreview': 'Закрыть просмотр оригинала',\n 'image.unsupportedType': 'Поддерживаются только изображения PNG, JPG, WebP и GIF',\n 'image.tooMany': 'Сообщение может содержать до {count} изображений',\n 'image.fileTooLarge': 'Каждое изображение должно быть меньше {size}',\n 'image.totalTooLarge': 'Суммарный размер изображений превышает {size}; удалите часть и повторите',\n 'image.tooManyPixels': 'Разрешение изображения слишком высокое; сожмите его и повторите',\n 'image.dimensionTooLarge': 'Стороны изображения не должны превышать {size}px; уменьшите его и повторите',\n 'image.modelUnsupported': 'Текущая модель не поддерживает изображения; переключитесь на модель с их поддержкой',\n 'image.sendFailed': 'Не удалось отправить изображения ({reason}); добавьте их заново и повторите',\n 'file.pending': 'Файлы ожидают отправки',\n 'file.remove': 'Удалить файл {name}',\n 'file.uploading': 'Загрузка…',\n 'file.uploadFailed': 'Не удалось загрузить; нажмите, чтобы повторить',\n 'file.retry': 'Повторить загрузку {name}',\n 'file.stillUploading': 'Файлы ещё загружаются; дождитесь окончания загрузки',\n 'file.sessionUnavailable': 'Сессия недоступна: загрузка файлов невозможна',\n 'file.notStaged': 'Файл ещё не загружен полностью; добавьте его заново',\n 'file.label': 'Файл',\n 'context.aria': 'Использовано {percent} контекста',\n 'context.used': 'контекста использовано',\n 'context.system': 'Системный промпт',\n 'context.tools': 'Определения инструментов',\n 'context.messages': 'Сообщения',\n 'settings.enter.title': 'Поведение отправки во время работы агента',\n 'settings.enter.description': 'Что делают Enter и кнопка отправки, пока агент работает; Cmd/Ctrl+Enter использует другое поведение',\n 'settings.enter.queue': 'В очередь',\n 'settings.enter.steer': 'Отправить сразу',\n 'hero.headline': 'К неизведанному',\n 'hero.preview': 'Предпросмотр',\n 'hero.chooseWorkspace': 'Выбрать рабочее пространство',\n 'session.hierarchy': 'Иерархия сессий',\n 'todo.title': 'Задачи',\n 'todo.progress.done': '{done} выполнено',\n 'todo.progress.active': '{active} в процессе',\n 'todo.progress.pending': '{pending} ожидает',\n 'todo.rowTitle': 'Обновить список задач',\n 'todo.completed': '{done}/{total} выполнено',\n 'command.attachmentsUnsupported': '/{command} не принимает вложения; сначала удалите их',\n 'ask.rowTitle': 'Задать вопрос',\n 'ask.waiting': 'ожидание',\n 'ask.cancelled': 'отменено',\n 'ask.cancelledDetail': 'Этот набор вопросов был отменён до отправки ответов.',\n 'ask.interrupted': 'прервано',\n 'ask.interruptedDetail': 'Этот набор вопросов был прерван до отправки ответов.',\n 'ask.answered': '{answered}/{total} отвечено',\n 'ask.skipped': 'Не отвечено',\n 'bash.running': 'Выполняется',\n 'bash.failed': 'Ошибка',\n 'bash.stopped': 'Остановлено',\n 'row.running': 'Выполняется',\n 'row.failed': 'Ошибка',\n 'row.stopped': 'Остановлено',\n 'row.input': 'ВВОД',\n 'row.output': 'ВЫВОД',\n 'row.inspect': 'Просмотр',\n 'tool.title.search': 'Поиск',\n 'tool.title.read': 'Чтение',\n 'tool.title.bash': 'Bash',\n 'tool.title.write': 'Запись',\n 'tool.title.edit': 'Правка',\n 'tool.title.code': 'Код',\n 'tool.title.generic': 'Вызов инструмента',\n 'tool.title.inspect': 'Запрос к среде Cordis',\n 'tool.title.runCordis': 'Запустить плагин Cordis',\n 'tool.title.stopCordis': 'Остановить плагин Cordis',\n 'tool.title.removeCordis': 'Удалить плагин Cordis',\n 'tool.title.pwsh': 'Pwsh',\n 'tool.title.readImage': 'Прочитать изображение',\n 'tool.title.grep': 'Grep',\n 'tool.title.glob': 'Glob',\n 'tool.title.webSearch': 'Поиск',\n 'tool.title.webFetch': 'Запрос',\n 'diff.collapseAria': 'Свернуть изменения',\n 'diff.expandAria': 'Показать ещё {count} стр. изменений',\n 'diff.expandRest': '… ещё {count} стр.',\n 'read.window': 'Показано {shown} из {total} строк',\n 'read.collapseAria': 'Свернуть содержимое',\n 'read.expandAria': 'Показать ещё {count} стр.',\n 'read.expandRest': '… ещё {count} стр.',\n 'search.paths': '{shown} путей',\n 'search.paths.truncated': 'Показано {shown} из {total} путей',\n 'search.matches': '{shown} совпадений · {files} файлов',\n 'search.matches.truncated': 'Показано {shown} из {total} совпадений · {files} файлов',\n 'search.noResults': 'Ничего не найдено',\n 'search.collapseAria': 'Свернуть результаты',\n 'search.expandAria': 'Показать ещё {count} стр. результатов',\n 'search.expandRest': '… ещё {count} стр.',\n 'web.noResults': 'Ничего не найдено',\n 'web.sourcesTruncated': 'Список источников обрезан',\n 'web.http': 'HTTP',\n 'web.contentTruncated': 'Содержимое обрезано',\n 'details.running': 'Выполняется…',\n 'queue.count': 'В очереди: {n}',\n 'queue.image': 'Изображение в очереди сообщения',\n 'queue.file': 'Файл {name} в очереди',\n 'queue.edit': 'Изменить сообщение из очереди',\n 'queue.edit.unsupported': 'Содержит нетекстовый контент; редактирование пока не поддерживается',\n 'queue.save': 'Сохранить сообщение из очереди',\n 'queue.cancelEdit': 'Отменить редактирование',\n 'queue.remove': 'Удалить сообщение из очереди',\n 'queue.steer': 'Отправить сразу',\n 'queue.steer.unavailable': 'Отправка сразу доступна только пока агент работает',\n 'queue.editFailed': 'Не удалось изменить: сообщение могло уже начать отправляться.',\n 'queue.removeFailed': 'Не удалось удалить: сообщение могло уже начать отправляться.',\n 'queue.steerFailed': 'Не удалось отправить сразу. Повторите попытку.',\n 'terminal.signal': 'сигнал {signal}',\n 'terminal.exitCode': 'код выхода {code}',\n 'terminal.running': 'Выполняется',\n 'terminal.failed': 'Ошибка',\n 'terminal.done': 'Готово',\n 'terminal.noOutput': 'Нет вывода',\n 'terminal.collapseAria': 'Свернуть вывод',\n 'terminal.expandAria': 'Развернуть оставшиеся строки вывода ({n})',\n 'terminal.expandRest': '… ещё строк: {n}',\n 'terminal.sendInput': '(отправить ввод)',\n 'terminal.session': 'Терминал {sessionId}',\n 'input.send.queue': 'Отправить в очередь',\n 'input.send.steer': 'Отправить сразу',\n 'queue.sending': 'Отправка…',\n 'input.file': 'Файл',\n 'tool.autoReviewRejected': 'Отклонено автопроверкой',\n 'tool.autoReviewNotExecuted': 'Инструмент не выполнен. Причина: {reason}',\n 'tool.autoReviewReasonFallback': 'Автопроверка не разрешила это действие',\n 'attachment.directoryDesktopOnly': 'Папки можно добавлять только в десктопном приложении; в браузере добавляйте отдельные файлы',\n 'attachment.pathUnavailable': 'Не удалось получить путь к папке; перетащите её ещё раз',\n 'attachment.pathUnsupported': 'Путь содержит символы, которые не поддерживаются в ссылке; переименуйте и повторите',\n 'todo.status.completed': 'Завершено',\n 'todo.status.inProgress': 'В процессе',\n 'todo.status.pending': 'Ожидание',\n 'tool.title.createGoal': 'Создать цель',\n 'tool.title.getGoal': 'Посмотреть цель',\n 'tool.title.updateGoal': 'Обновить цель',\n 'tool.title.createSchedule': 'Создать напоминание',\n 'tool.title.listSchedules': 'Список напоминаний',\n 'tool.title.deleteSchedule': 'Удалить напоминание',\n 'detail.state': 'Статус',\n 'detail.todo.completed': 'Завершено',\n 'detail.todo.in_progress': 'В процессе',\n 'detail.todo.pending': 'Ожидание',\n 'detail.todo.empty': 'Список задач пуст',\n 'todo.diff.initial': 'Исходный список',\n 'todo.diff.compare': 'Изменения относительно предыдущего списка',\n 'todo.diff.unavailable': 'Предыдущий список недоступен',\n 'todo.diff.noChanges': 'Список не изменился',\n 'todo.diff.added': '{count} добавлено',\n 'todo.diff.updated': '{count} обновлено',\n 'todo.diff.removed': '{count} удалено',\n 'todo.diff.unchanged': '{count} без изменений',\n 'todo.diff.addedItem': 'Добавлено',\n 'todo.diff.updatedItem': 'Статус изменён',\n 'todo.diff.movedItem': 'Порядок изменён',\n 'todo.diff.removedItem': 'Удалено',\n 'detail.goal.empty': 'Нет цели',\n 'detail.goal.active': 'Активна',\n 'detail.goal.disarmed': 'Ожидает продолжения',\n 'detail.goal.paused': 'Приостановлена',\n 'detail.goal.blocked': 'Заблокирована',\n 'detail.goal.complete': 'Завершена',\n 'detail.goal.rounds': 'Раунды',\n 'detail.goal.reason': 'Причина блокировки',\n 'detail.days': '{count} д',\n 'detail.hours': '{count} ч',\n 'detail.minutes': '{count} мин',\n 'detail.seconds': '{count} с',\n 'detail.schedule.once': 'Один раз',\n 'detail.schedule.every': 'Каждые {interval}',\n 'detail.schedule.when': 'Запланировано на',\n 'detail.schedule.frequency': 'Повтор',\n 'detail.schedule.scheduled': 'Запланировано',\n 'detail.schedule.overdue': 'Просрочено, ожидается возобновление сессии',\n 'detail.schedule.empty': 'Нет напоминаний',\n 'detail.schedule.deleted': 'Удалено',\n 'detail.schedule.count': 'Напоминаний: {count}',\n 'tool.title.inspectProviders': 'Просмотр провайдеров',\n 'tool.title.queryRuntime': 'Запрос среды выполнения',\n 'tool.title.inspectPlugins': 'Просмотр плагинов',\n 'tool.title.workflow': 'Запустить Workflow',\n 'tool.title.ralph': 'Запустить цикл ralph',\n 'tool.title.readEvent': 'Чтение события',\n 'tool.title.searchEvents': 'Поиск событий',\n 'tool.title.traceEvent': 'Трассировка события',\n 'tool.title.searchSessions': 'Поиск сессий',\n 'tool.title.traceSession': 'Трассировка сессии',\n 'tool.title.listModels': 'Список моделей',\n 'tool.title.subagent': 'Создать субагента',\n 'tool.title.listAgents': 'Список субагентов',\n 'tool.title.sendMessage': 'Отправить сообщение',\n 'tool.title.interruptAgent': 'Прервать агента',\n 'tool.title.listJobs': 'Список фоновых задач',\n 'tool.title.readJob': 'Чтение вывода фоновой задачи',\n 'tool.title.killJob': 'Отменить фоновую задачу',\n 'tool.title.openTerminal': 'Открыть терминал',\n 'tool.title.readTerminal': 'Чтение терминала',\n 'tool.title.listTerminals': 'Список терминалов',\n 'tool.title.signalTerminal': 'Отправить сигнал терминалу',\n 'tool.title.closeTerminal': 'Закрыть терминал',\n 'tool.title.lsp': 'Запрос символов кода',\n 'tool.title.findDefinition': 'Найти определение',\n 'tool.title.findReferences': 'Найти ссылки',\n 'tool.title.findImplementation': 'Найти реализацию',\n 'tool.title.hoverSymbol': 'Просмотр символа',\n 'tool.title.spawnTeammate': 'Создать участника',\n 'tool.title.createTeamTask': 'Создать командную задачу',\n 'tool.title.getTeamTask': 'Чтение командной задачи',\n 'tool.title.updateTeamTask': 'Обновить командную задачу',\n 'tool.title.listTeamTasks': 'Список командных задач',\n 'tool.title.waitAgent': 'Дождаться субагента',\n 'detail.recordedResult': 'Записанный результат',\n 'detail.empty': 'Нет результатов',\n 'detail.none': 'Нет',\n 'detail.yes': 'Да',\n 'detail.no': 'Нет',\n 'detail.moreInInspect': 'В разделе «Просмотр» доступно ещё: {count}',\n 'detail.status.running': 'Выполняется',\n 'detail.status.idle': 'Ожидает',\n 'detail.status.ready': 'Готов',\n 'detail.status.inactive': 'Неактивен',\n 'detail.status.provisioning': 'Подготовка',\n 'detail.status.failed': 'Ошибка',\n 'detail.status.completed': 'Завершено',\n 'detail.status.deleted': 'Удалено',\n 'detail.status.killed': 'Отменено',\n 'detail.status.accepted': 'Принято',\n 'detail.status.queued': 'В очереди',\n 'detail.status.exited': 'Завершён',\n 'detail.field.id': 'ID',\n 'detail.field.revision': 'Ревизия',\n 'detail.field.platform': 'Платформа',\n 'detail.field.provider': 'Провайдер',\n 'detail.field.model': 'Модель',\n 'detail.field.role': 'Роль',\n 'detail.field.context': 'Контекст',\n 'detail.field.owner': 'Исполнитель',\n 'detail.field.ready': 'Готовность',\n 'detail.field.dependencies': 'Зависимости',\n 'detail.field.writeScopes': 'Области записи',\n 'detail.field.warnings': 'Предупреждения',\n 'detail.field.diagnostics': 'Диагностика',\n 'detail.field.methods': 'Методы',\n 'detail.field.inputSchema': 'Схема входных данных',\n 'detail.field.outputSchema': 'Схема выходных данных',\n 'detail.field.currentPackage': 'Текущий пакет',\n 'detail.field.nextPackage': 'Следующий пакет',\n 'detail.field.latestRun': 'Последний запуск',\n 'detail.field.packages': 'Пакеты',\n 'detail.field.registrations': 'Регистрации',\n 'detail.field.props': 'Свойства',\n 'detail.field.data': 'Данные',\n 'detail.field.source': 'Источник',\n 'detail.field.content': 'Содержимое',\n 'detail.field.message': 'Сообщение',\n 'detail.field.messageId': 'ID сообщения',\n 'detail.field.root': 'Корень',\n 'detail.field.pid': 'ID процесса',\n 'detail.field.type': 'Тип',\n 'detail.field.time': 'Время',\n 'detail.field.seq': 'Номер события',\n 'detail.field.turn': 'Раунд',\n 'detail.field.step': 'Шаг',\n 'detail.field.callId': 'ID вызова',\n 'detail.field.agents': 'Запущено агентов',\n 'detail.field.result': 'Результат',\n 'detail.field.parent': 'Родитель',\n 'detail.field.depth': 'Глубина',\n 'detail.field.exitCode': 'Код выхода',\n 'detail.field.signal': 'Сигнал',\n 'detail.field.previousStatus': 'Предыдущий статус',\n 'detail.field.agent': 'ID агента',\n 'detail.field.job': 'ID фоновой задачи',\n 'detail.field.task': 'Задача',\n 'detail.field.processGroup': 'Группа процессов',\n 'detail.field.availability': 'Доступность',\n 'detail.field.bestMatch': 'Лучшее совпадение',\n 'detail.field.target': 'Целевое событие',\n 'detail.field.surface': 'Статус записи',\n 'detail.agents.count': 'Агентов: {count}',\n 'detail.jobs.count': 'Фоновых задач: {count}',\n 'detail.terminals.count': 'Терминалов: {count}',\n 'detail.tasks.count': 'Командных задач: {count}',\n 'detail.tasks.nextPage': 'Доступны другие задачи; следующий курсор: {cursor}',\n 'detail.locations.count': 'Локаций: {count}',\n 'detail.location': 'Строка {line}, столбец {column}',\n 'detail.receipt.delivered': 'Сообщение доставлено',\n 'detail.receipt.interrupt': 'Запрошено прерывание',\n 'detail.receipt.started': 'Запущено',\n 'detail.receipt.cancel': 'Запрошена отмена',\n 'detail.receipt.alreadyFinished': 'Уже завершено',\n 'detail.receipt.signal': 'Сигнал доставлен',\n 'detail.receipt.closed': 'Закрыто',\n 'detail.receipt.closing': 'Закрытие',\n 'detail.wait.noProgress': 'Нет активных субагентов',\n 'detail.wait.title': 'Активность субагентов',\n 'detail.wait.timeout': 'Время ожидания истекло',\n 'detail.wait.changed': 'Обнаружено изменение',\n 'detail.agent.reply': 'Ответ агента',\n 'detail.models.title': 'Доступные модели',\n 'detail.output.lines': 'Строки {begin}–{end} из {total}',\n 'detail.output.truncated': 'Вывод обрезан',\n 'detail.providers.count': 'Провайдеров: {count}',\n 'detail.plugins.count': 'Динамических плагинов: {count}',\n 'detail.workflow.script': 'Скрипт Workflow',\n 'detail.ralph.reportedComplete': 'Исполнитель сообщил о завершении',\n 'detail.ralph.reportedBlocker': 'Исполнитель сообщил о блокировке',\n 'detail.ralph.limit': 'Достигнут лимит раундов',\n 'detail.report.nextSteps': 'Оставшаяся работа',\n 'detail.trace.replacedBy': 'Заменено на',\n 'detail.trace.replacementChain': 'Цепочка замен',\n 'detail.trace.replaces': 'Заменённые события',\n 'detail.trace.sources': 'Исходные события',\n 'detail.trace.derived': 'Производные события',\n 'detail.trace.ancestors': 'Сессии-предки',\n 'detail.trace.descendants': 'Сессии-потомки',\n 'detail.matches.count': 'Совпадений: {count}',\n 'detail.matches.capped': 'Достигнут лимит результатов; уточните поиск, чтобы увидеть больше',\n 'detail.event.neighbors': 'Соседние события',\n 'error.sessionInUse': 'Эта сессия уже используется — возможно, другим запущенным экземпляром DSH (например, dsh web или десктопным приложением). Закройте другие экземпляры DSH и повторите.',\n 'terminal.noExitCode': 'без кода выхода',\n 'tool.preparing.content': 'Подготовка содержимого, {kilobytes} КБ',\n 'row.preparing': 'Подготовка вызова инструмента',\n 'shortcut.newline': 'Новая строка',\n 'shortcut.complementary': 'Дополнительное действие «В очередь» / «Отправить сразу»',\n 'shortcut.slash': 'Открыть меню команд',\n 'shortcut.mention': 'Открыть меню ссылок',\n 'tool.title.updateSchedule': 'Обновить напоминание',\n 'detail.schedule.daily': 'Каждый день в {time} ({zone})',\n 'detail.schedule.weekly': 'По {days} в {time} ({zone})',\n 'detail.schedule.cron': 'Cron {expression} ({zone})',\n 'detail.weekday.1': 'Пн',\n 'detail.weekday.2': 'Вт',\n 'detail.weekday.3': 'Ср',\n 'detail.weekday.4': 'Чт',\n 'detail.weekday.5': 'Пт',\n 'detail.weekday.6': 'Сб',\n 'detail.weekday.7': 'Вс',\n 'detail.weekday.join': ', ',\n },\n 'deliverables': {\n 'presented.all': 'Все файлы: {count}',\n 'presented.collapse': 'Свернуть',\n 'presented.collapseAria': 'Свернуть список созданных файлов',\n 'presented.directoryError': 'Не удалось открыть папку с файлом. Повторите.',\n 'presented.directoryOpened': 'Запрошено открытие папки с файлом',\n 'presented.directoryOpening': 'Открываем папку с файлом…',\n 'presented.error': 'Не удалось открыть. Нажмите, чтобы повторить.',\n 'presented.expandAria': 'Показать все созданные файлы ({count})',\n 'presented.file': 'Файл',\n 'presented.hostError': 'Не удалось прочитать сведения о рабочем столе хоста',\n 'presented.nativeUnavailable': 'У этого файла нет доступного пути на хосте. Откройте его в боковой панели.',\n 'presented.opened': 'Запрошено открытие',\n 'presented.opening': 'Открываем…',\n 'presented.preview': 'Просмотр в боковой панели',\n 'presented.previewButton': 'Открыть {name} в боковой панели',\n 'presented.previewCard': 'Просмотреть {name} в боковой панели',\n 'presented.retry': 'Повторить',\n 'presented.revealed': 'Запрошен показ в файловом менеджере',\n 'presented.revealError': 'Не удалось показать в файловом менеджере. Повторите.',\n 'presented.revealing': 'Показываем в файловом менеджере…',\n 'presented.unavailable': 'На этом хосте нет рабочего стола, чтобы открывать файлы или папки во внешних приложениях. Файлы по-прежнему можно смотреть в боковой панели.',\n 'row.error': 'Доставка не удалась',\n 'row.inspect': 'Просмотреть вызов',\n 'row.ok': 'Доставлено',\n 'row.running': 'Доставляем',\n 'row.stopped': 'Прервано',\n 'row.title': 'Созданные файлы',\n 'changes.title': 'Изменено файлов: {count}',\n 'changes.added': '+{count}',\n 'changes.deleted': '-{count}',\n 'changes.binary': 'двоичный',\n 'changes.openReview': 'Посмотреть изменения этого хода в боковой панели',\n 'changes.all': 'Все файлы: {count}',\n 'changes.expandAria': 'Показать все изменённые файлы ({count})',\n 'changes.collapse': 'Свернуть',\n 'changes.collapseAria': 'Свернуть список изменённых файлов',\n 'changes.oversized': 'слишком большой',\n 'changes.viewDiff': 'Посмотреть изменения: {name}',\n 'review.title': 'Изменения · ход {turn}',\n 'review.selectFile': 'Выберите файл для просмотра',\n 'review.split': 'Переключить на разделённый вид',\n 'review.unified': 'Переключить на объединённый вид',\n 'review.splitAria': 'Разделённый вид',\n 'review.wrap': 'Включить перенос строк',\n 'review.nowrap': 'Отключить перенос строк',\n 'review.wrapAria': 'Перенос строк',\n 'review.openFile': 'Открыть файл целиком в боковой панели',\n 'review.openFileAria': 'Открыть {name} в боковой панели',\n 'diff.loading': 'Чтение изменений…',\n 'diff.missing': 'Содержимое изменений этого хода больше недоступно',\n 'diff.error': 'Не удалось прочитать изменения',\n 'diff.binary': 'Двоичный файл; изменения показать нельзя',\n 'diff.oversized': 'Файл слишком большой; изменения показать нельзя',\n 'diff.created': 'Создан в этом ходе',\n 'diff.deleted': 'Удалён в этом ходе',\n 'diff.unchanged': 'В обеих версиях одинаковые строки',\n 'diff.coarse': 'Сравнение по строкам заняло слишком много времени; показано как полная замена файла',\n 'diff.truncated': 'Показаны первые {count} стр.',\n 'row.preparing': 'Подготовка результатов',\n 'changes.singleTitle': 'Изменён {name}',\n },\n 'goal': {\n 'phase.active': 'Активная цель',\n 'phase.paused': 'Приостановленная цель',\n 'phase.blocked': 'Заблокированная цель',\n 'objective.aria': 'Содержимое цели',\n 'commandInput.aria': 'Ввод команды',\n 'action.save': 'Сохранить цель',\n 'action.cancel': 'Отменить правку',\n 'action.pause': 'Приостановить цель',\n 'action.resume': 'Возобновить цель',\n 'action.edit': 'Изменить цель',\n 'action.clear': 'Удалить цель',\n 'phase.active.disarmed': 'Цель неактивна',\n },\n 'slash.menu': {\n 'command': 'Команды',\n 'skill': 'Навыки',\n 'subagent': 'Субагенты',\n 'loading': 'Загрузка…',\n 'drill.aria': 'Обзор папки',\n 'drill.hint': 'Обзор папки',\n 'drill.key': 'Tab',\n 'crumbs.aria': 'Навигация по папкам',\n 'suggestions.aria': 'Возможные варианты по триггеру',\n },\n 'job': {\n 'count.live.one': '{count} фоновая задача выполняется',\n 'count.live.other': 'Фоновых задач выполняется: {count}',\n 'count.idle.one': '{count} фоновая задача',\n 'count.idle.other': 'Фоновых задач: {count}',\n 'list.aria': 'Фоновые задачи',\n 'status.running': 'выполняется',\n 'status.stopping': 'останавливается',\n 'status.completed': 'завершена',\n 'status.killed': 'отменена',\n 'status.failed': 'ошибка',\n 'duration.seconds': '{seconds} с',\n 'duration.minutes': '{minutes} мин {seconds} с',\n 'duration.hours': '{hours} ч {minutes} мин',\n 'duration.title.live': 'Выполняется {duration}',\n 'duration.title.done': 'Заняло {duration}',\n 'section.live': 'Выполняется',\n 'section.settledCount': 'Завершено {count}',\n 'section.clear': 'Очистить',\n 'row.expandAria': 'Показать вывод {label} в реальном времени',\n 'row.collapseAria': 'Скрыть вывод {label}',\n 'kill.stop': 'Остановить задачу {label}',\n 'kill.confirm': 'Нажмите ещё раз для подтверждения',\n 'kill.confirmAction': 'Подтвердить остановку',\n 'kill.failed': 'Не удалось остановить',\n 'output.gap': '… предыдущий вывод потерян …',\n 'output.error': 'поток вывода прерван: {error}',\n 'terminal.signal': 'сигнал {signal}',\n 'terminal.exitCode': 'код выхода {code}',\n 'terminal.noExitCode': 'без кода выхода',\n 'terminal.running': 'выполняется',\n 'terminal.failed': 'ошибка',\n 'terminal.done': 'завершено',\n 'terminal.copy': 'Копировать',\n 'terminal.copied': 'Скопировано',\n 'terminal.noOutput': '(нет вывода)',\n 'terminal.collapse': 'Свернуть',\n 'terminal.collapseAria': 'Свернуть вывод',\n 'terminal.expand': 'Показать ещё {n} строк',\n 'terminal.expandAria': 'Развернуть {n} скрытых строк вывода',\n },\n 'feedback': {\n 'action.like': 'Хороший ответ',\n 'action.likeActive': 'Снять оценку',\n 'action.dislike': 'Плохой ответ',\n 'action.dislikeActive': 'Снять оценку',\n 'error.conflict': 'Этот отзыв изменён в другом месте; показано актуальное состояние',\n 'error.load': 'Не удалось загрузить отзыв',\n 'error.generic': 'Не удалось сохранить отзыв',\n 'category.instruction-following': 'Понимание и выполнение инструкций',\n 'category.other': 'Другое',\n 'category.product-interaction': 'Возможности продукта и взаимодействие',\n 'category.resource-cost': 'Расход ресурсов и стоимость',\n 'category.security-privacy-permission': 'Безопасность, приватность и разрешения',\n 'category.service-stability': 'Стабильность сервиса',\n 'category.task-result': 'Результат задачи',\n 'dialog.categories': 'Категория отзыва',\n 'dialog.detail': 'Подробности отзыва',\n 'dialog.hint': 'Добавьте подробности, чтобы помочь нам стать лучше. В отправку войдёт журнал текущего диалога.',\n 'dialog.title': 'Отправить отзыв',\n 'error.noteTooLarge': 'Описание слишком длинное; сократите его и отправьте снова',\n 'toast.recorded': 'Спасибо за отзыв',\n },\n 'model': {\n 'search.empty': 'Нет подходящих моделей.',\n 'command.description': 'Выбор модели для этого диалога',\n 'option.loadError': 'Не удалось загрузить каталог: {message}',\n 'trigger.fallback': 'Выбрать модель',\n 'trigger.loading': 'Загрузка моделей…',\n 'trigger.selectAria': 'Выбрать модель',\n 'trigger.aria': 'Выбрать модель, сейчас {model}',\n 'trigger.ariaEffort': 'Выбрать модель, сейчас {model}, уровень рассуждения {effort}',\n 'menu.aria': 'Модель и уровень рассуждения',\n 'menu.model': 'Модель',\n 'menu.effort': 'Уровень рассуждения',\n 'effort.providerDefault': 'По умолчанию',\n 'status.loading': 'Обновление списка моделей…',\n 'error.action': 'Не удалось выполнить операцию с моделью: {message}',\n 'action.reload': 'Перезагрузить',\n 'warning.groupLoad': 'Не удалось загрузить {name}: {message}',\n 'empty.models': 'Нет доступных моделей.',\n 'empty.efforts': 'У этой модели нет уровней рассуждения.',\n 'option.deepseekV4Flash.description': 'Быстрая, эффективная и экономная; подходит для сосредоточенных, рутинных или параллельных задач.',\n 'option.deepseekV4Pro.description': 'Усиленное агентное программирование, знания и сложные рассуждения; для комплексных или критичных к качеству задач с большей стоимостью.',\n 'command.label': 'Модель',\n 'error.sessionInUse': 'Эта сессия уже используется — возможно, другим запущенным экземпляром DSH (например, dsh web или десктопным приложением). Закройте другие экземпляры DSH и повторите.',\n 'provider.account': 'Учётная запись DeepSeek',\n 'blocked.composer': 'Эта модель недоступна — выберите другую, чтобы продолжить',\n },\n 'settings.permission': {\n 'title': 'Права доступа',\n 'description': 'Выберите режим прав по умолчанию для новых сессий',\n 'loading': 'Загрузка',\n 'unavailable': 'Недоступно',\n 'preset.readOnly': 'Только чтение',\n 'preset.workspaceWrite': 'Запись в рабочую папку',\n 'preset.fullAccess': 'Полный доступ',\n 'confirm.title': 'Включить «Полный доступ»?',\n 'confirm.description': '«Полный доступ» позволяет новым сессиям пропускать шаги подтверждения и выполнять больше действий напрямую, включая чувствительные операции, изменение файлов или внешние команды. Используйте его, только если доверяете последующим задачам.',\n 'confirm.acknowledge': 'Я понимаю риски и хочу продолжить',\n 'confirm.cancel': 'Отмена',\n 'confirm.enable': 'Включить «Полный доступ»',\n },\n 'permission.access': {\n 'preset.readOnly': 'Только чтение',\n 'preset.workspaceWrite': 'Запись в рабочую папку',\n 'preset.fullAccess': 'Полный доступ',\n 'confirm.title': 'Включить «Полный доступ»?',\n 'confirm.description': '«Полный доступ» уменьшает число этапов подтверждения и позволяет агенту напрямую выполнять больше действий, включая чувствительные операции, изменение файлов или внешние команды. Используйте его, только если доверяете текущей задаче.',\n 'confirm.acknowledge': 'Я понимаю риски и хочу продолжить',\n 'confirm.cancel': 'Отмена',\n 'confirm.enable': 'Включить «Полный доступ»',\n 'mode': 'Режим доступа, сейчас: {name}',\n 'close': 'Закрыть',\n 'auto.label': 'Автопроверка',\n 'auto.badge': 'ЭКСП',\n 'auto.description': 'Работа без песочницы после экспериментальной проверки той же моделью каждого вызова нативного инструмента и внутреннего вызова PTC.',\n 'auto.confirm.title': 'Включить автопроверку (экспериментально)?',\n 'auto.confirm.description': 'Автопроверка работает без песочницы. Перед каждым вызовом нативного инструмента и внутренним вызовом PTC та же модель, что и у текущего агента, решает, разрешить ли его; вы подтверждаете или отклоняете каждый вызов, который она запретила. Возможность экспериментальная: она может ошибочно разрешить или запретить действие и расходует дополнительные токены.',\n 'auto.confirm.acknowledge': 'Я понимаю эти риски и хочу продолжить',\n 'auto.confirm.enable': 'Включить автопроверку',\n },\n 'plan': {\n 'chip.label': 'План',\n 'chip.on.aria': 'Режим планирования включён, нажмите, чтобы выключить',\n 'chip.on.title': 'Режим планирования включён — нажмите, чтобы выключить (/plan off)',\n 'chip.exitFailed': 'Не удалось выйти из режима планирования',\n 'preview.title': 'План',\n 'preview.document': 'План · Markdown',\n 'preview.action': 'Открыть',\n 'preview.open': 'Открыть план в боковой панели',\n 'preview.full': 'Показать план целиком',\n 'preview.openNamed': 'Открыть план: {title}',\n 'preview.loading': 'Загрузка плана…',\n 'preview.failed': 'Не удалось загрузить план',\n 'preview.invalidAddress': 'Неверный адрес плана',\n 'preview.historyUnavailable': 'История сессии недоступна',\n 'preview.notFound': 'Этот план не найден',\n 'preview.unavailable': 'Предпросмотр плана недоступен',\n 'preview.expired': 'Срок этого временного предпросмотра плана истёк. Откройте его заново из карточки ожидающего рассмотрения.',\n },\n 'reference': {\n 'section.files': 'Файлы и папки',\n 'section.sessions': 'Сессии',\n 'candidate.noCwd': '(нет рабочей папки)',\n 'crumb.root': 'Рабочая папка',\n 'time.now': 'сейчас',\n 'time.minutes': '{n} мин',\n 'time.hours': '{n} ч',\n 'time.days': '{n} д',\n 'time.months': '{n} мес',\n 'time.years': '{n} г',\n 'section.subagents': 'Субагенты',\n },\n 'settings': {\n 'trigger': 'Настройки',\n 'title': 'Настройки',\n 'close': 'Закрыть',\n 'openDocument': 'Открыть файл конфигурации',\n 'openDocument.error': 'Не удалось открыть файл конфигурации',\n 'general.nav': 'Основные',\n 'connection.error': 'Отключено',\n 'connection.connecting': 'Переподключение',\n 'connection.connected': 'Подключено',\n 'connection.reconnect': 'Отключено, подключиться сейчас',\n 'connection.restart': 'Переподключение, подключиться сейчас',\n 'desktop.update.available': 'Обновление',\n 'desktop.update.checking': 'Проверка обновлений…',\n 'desktop.update.progress': '{percent}%',\n 'desktop.update.verifying': 'Проверка файлов обновления…',\n 'desktop.update.installing': 'Подготовка к перезапуску…',\n 'desktop.update.ready': 'Установить и перезапустить',\n 'desktop.update.retry': 'Повторить обновление',\n 'desktop.update.versionDetail': '{label} — V{version}',\n 'desktop.update.downloadDetail': 'Загрузка обновления: {percent}%\\nЦелевая версия: V{version}',\n 'desktop.update.checkFailed': 'Не удалось проверить обновления. Повторите попытку позже.',\n 'desktop.update.downloadFailed': 'Не удалось загрузить обновление. Повторите попытку.',\n 'desktop.update.installFailed': 'Не удалось установить обновление. Повторите попытку позже.',\n 'desktop.update.checkNetworkFailed': 'Не удалось проверить обновления. Повторите попытку позже. Соединение прервано — проверьте сеть и повторите.',\n 'desktop.update.downloadNetworkFailed': 'Не удалось загрузить обновление. Повторите попытку. Соединение прервано — проверьте сеть и повторите.',\n 'desktop.update.installNetworkFailed': 'Не удалось установить обновление. Повторите попытку позже. Соединение прервано — проверьте сеть и повторите.',\n 'desktop.update.stopFailed': 'Не удалось безопасно остановить задачи. Обновление не установлено. Повторите попытку позже.',\n 'desktop.update.tasksChanged': 'Появились новые задачи. Подтвердите обновление ещё раз.',\n 'desktop.update.tasksUnavailable': 'Состояние задач недоступно. Повторите обновление, когда рабочая папка будет готова.',\n 'general.currentVersion': 'Текущая версия: {version}',\n 'developerTools.title': 'Инструменты для кода',\n 'developerTools.error': 'Не удалось сохранить. Повторите попытку.',\n 'developerTools.description': 'Показывает траекторию, различия кода и переключение пресетов агента в новых чатах',\n 'shortcut.open': 'Открыть настройки',\n },\n 'settings.models': {\n 'nav': 'Модели',\n 'title': 'Модели',\n 'intro': 'Введите API-ключи, чтобы использовать модели указанных провайдеров.',\n 'edit': 'Изменить',\n 'editProvider': 'Изменить {provider}',\n 'remove': 'Удалить',\n 'removeProvider': 'Удалить {provider}',\n 'deleteTitle': 'Удалить {provider}?',\n 'deleteDescription': 'Удаление {provider} уберёт его конфигурацию. Используемые им учётные данные управляются отдельно и будут сохранены.',\n 'deleteDescriptionWithCredential': 'Удаление {provider} уберёт его конфигурацию и сохранённый API-ключ.',\n 'deleteConfirm': 'Удалить {provider}',\n 'deleting': 'Удаление {provider}…',\n 'add': 'Добавить провайдера моделей',\n 'provider': 'Провайдер',\n 'close': 'Закрыть',\n 'cancel': 'Отмена',\n 'apply': 'Применить',\n 'applying': 'Применение…',\n 'savedProvider': 'Сохранено: {provider}.',\n 'credentialConfigured': 'API-ключ настроен',\n 'credentialMissing': 'API-ключ отсутствует',\n 'readOnly': 'Документ настроек в этой сборке доступен только для чтения.',\n 'loadFailed': 'Не удалось загрузить каталог провайдеров',\n 'conflict': 'Пока эта карточка была открыта, настройки изменились в другом месте. Закройте её и откройте заново, чтобы редактировать актуальные значения.',\n 'retry': 'Повторить',\n 'keyInput': 'API-ключ',\n 'keyPlaceholder': 'Введите API-ключ',\n 'keyPlaceholderNative': 'Введите API-ключ или оставьте поле пустым, чтобы использовать аутентификацию из окружения',\n 'keyStored': 'Настроен — введите новое значение, чтобы заменить',\n 'keyEnvLocked': 'Предоставлен окружением запуска (только для чтения)',\n 'customized': 'Изменённые настройки',\n 'baseUrl': 'Базовый URL',\n 'baseUrlDefault': 'По умолчанию у провайдера',\n 'models': 'Модели',\n 'modelsInherited': 'Используются настройки адаптера по умолчанию',\n 'modelsCustomized': 'Изменённый каталог моделей',\n 'resetModels': 'Восстановить значения по умолчанию',\n 'model': 'Модель',\n 'modelId': 'ID модели',\n 'modelName': 'Отображаемое имя',\n 'modelNamePlaceholder': 'Если пусто — используется ID модели',\n 'contextWindow': 'Контекстное окно',\n 'contextWindowPlaceholder': 'Используется значение по умолчанию провайдера',\n 'maxTokens': 'Максимум выходных токенов',\n 'maxTokensPlaceholder': 'Используется значение по умолчанию провайдера',\n 'modelAdvanced': 'Параметры модели',\n 'addModel': 'Добавить модель',\n 'removeModel': 'Удалить модель',\n 'modelsEmpty': 'В селекторе не будет показано ни одной модели. ID вне списка можно отправлять напрямую.',\n 'keyBlank': 'Введите API-ключ или оставьте поле пустым, чтобы сохранить имеющийся.',\n 'keyBlankNew': 'Введите API-ключ или оставьте поле пустым, если провайдер использует другой способ аутентификации.',\n 'keyIllegalCharacters': 'Формат этого API-ключа недействителен. Проверьте его.',\n 'modelIdRequired': 'ID модели обязателен.',\n 'modelIdDuplicate': 'ID модели должен быть уникальным.',\n 'modelNameInvalid': 'Отображаемое имя не может быть пустым.',\n 'modelContextInvalid': 'Контекстное окно должно быть положительным числом, например 131072, 256K или 1M.',\n 'modelMaxTokensInvalid': 'Максимум выходных токенов должен быть положительным числом, например 8192, 64K или 1M.',\n 'advancedHint': 'Остальные поля находятся в cordis.patch.yml; редактируйте соответствующий раздел напрямую.',\n 'modelCapacityInvalid': 'Возможность должна быть числом, при желании с суффиксом K или M.',\n 'modelDuplicate': 'Каждый ID модели может встречаться только один раз.',\n 'fetchModels': 'Получить доступные модели',\n 'fetching': 'Запрос к провайдеру…',\n 'fetchNeedsBaseUrl': 'Сначала введите базовый URL, затем получайте модели.',\n 'fetchEmpty': 'Провайдер не указал модели. Добавьте их вручную.',\n 'fetchTitle': 'Выберите модели для добавления',\n 'fetchDescription': 'Это модели, доступные у провайдера. Выберите те, что нужно добавить.',\n 'fetchSelectAll': 'Выбрать все',\n 'fetchDeselectAll': 'Снять выбор',\n 'fetchAdopt': 'Добавить выбранные',\n 'customTag': 'Свой',\n 'customRoute': 'ID провайдера',\n 'customRouteHint': 'Идентификатор в нижнем регистре, начинающийся с буквы; уникально именует провайдера в запросах и как имя учётных данных.',\n 'customRouteInvalid': 'Начинайте с буквы в нижнем регистре; далее — буквы в нижнем регистре, цифры и дефисы.',\n 'customRouteTaken': 'Этот ID уже использует другой провайдер.',\n 'customDisplayName': 'Отображаемое имя',\n 'customApi': 'Протокол API',\n 'customApiUnset': 'Не выбран',\n 'customNeedsBaseUrl': 'Своему провайдеру нужен базовый URL.',\n 'customNeedsModels': 'Своему провайдеру нужна хотя бы одна модель.',\n 'create': 'Создать провайдера',\n 'creating': 'Создание…',\n 'welcomeTitle': 'Уведомление о внутреннем тестировании',\n 'welcomeBody': 'DeepSeek Harness 0.1 находится в стадии тестирования среди разработчиков Harness. Многие области ещё требуют доработки, и мы будем рады отзывам от сообщества разработчиков. Основные плагины и базовые API DeepSeek Harness будут активно развиваться в ближайшие месяцы.\\n\\nМы рассчитываем вместе с разработчиками по всему миру исследовать пределы возможностей интеллекта, опираясь на открытую, свободно используемую и компонуемую инфраструктуру. Приглашаем разработчиков Harness присоединиться к экосистеме плагинов DSH.',\n 'welcomeContinue': 'Продолжить',\n 'welcomeError': 'Не удалось сохранить подтверждение. Попробуйте ещё раз.',\n 'onboardingTitle': 'Добавьте API-ключ, чтобы начать',\n 'onboardingDescription': 'Настройте официального провайдера DeepSeek, чтобы начать работу.',\n 'onboardingLater': 'Настроить позже',\n 'onboardingSave': 'Сохранить и продолжить',\n 'onboardingSaving': 'Сохранение…',\n 'keyRequired': 'Введите API-ключ, чтобы продолжить.',\n 'fetchSearch': 'Поиск моделей',\n 'fetchNoMatches': 'Нет подходящих моделей.',\n 'customBaseUrlPlaceholder': 'https://gateway.example/v1',\n 'settingsPathUnresolvable': 'не удалось разрешить путь настроек',\n 'deepSeekEndpointHint': 'Используйте эндпоинт API, совместимый с Anthropic Messages.',\n 'customBaseUrlInvalid': 'Введите корректный URL с HTTP или HTTPS.',\n 'addMode': 'Способ добавления',\n 'addCatalog': 'Сторонний провайдер моделей',\n 'addCustom': 'Свой API моделей',\n 'addCatalogHint': 'Выберите OpenAI, Anthropic, Kimi или другого провайдера из встроенного каталога и введите его API-ключ.',\n 'addCustomHint': 'Подключите прокси, собственный сервер или любой другой эндпоинт, совместимый с OpenAI или Anthropic, указав базовый URL, протокол и модели.',\n 'addCatalogExhausted': 'Все провайдеры каталога уже настроены.',\n 'addCustomUnavailable': 'Нет доступного протокола API для объявления.',\n 'deepSeekBaseUrl': 'https://api.deepseek.com/anthropic',\n 'modelInputTypes': 'Типы ввода',\n 'modelInputText': 'Текст',\n 'modelInputImage': 'Изображение',\n 'protocolOpenAiCompletions': 'OpenAI Chat Completions',\n 'protocolOpenAiResponses': 'OpenAI Responses',\n 'protocolAnthropicMessages': 'Anthropic Messages',\n 'customAnthropicBaseUrlPlaceholder': 'https://gateway.example',\n 'deepSeekAccount': 'Учётная запись DeepSeek',\n },\n 'settings.pluginInventory': {\n 'tab': 'Список плагинов',\n 'loading': 'Чтение плагинов…',\n 'error': 'Плагины временно недоступны.',\n 'retry': 'Повторить',\n 'search': 'Поиск плагинов',\n 'empty': 'Нет доступных плагинов.',\n 'emptySearch': 'Нет подходящих плагинов.',\n 'enabledTag': 'Включён',\n 'disabledTag': 'Отключён',\n 'configuration': 'Конфигурация',\n 'unobserved': 'Не подключён',\n 'pending': 'Ожидание зависимостей',\n 'loadingPhase': 'Загрузка',\n 'active': 'Подключён',\n 'failed': 'Ошибка подключения',\n 'unloading': 'Отключение',\n 'presetTitle': 'Плагины сессии',\n 'presetSubtitle': 'Собираются для каждой сессии пресетами агента',\n 'countUnit': 'плагинов',\n 'switcherLabel': 'Выберите пресет агента для просмотра',\n 'presetOptionDefault': '{name} (по умолчанию)',\n 'presetOptionBroken': '{name} (не удалось загрузить)',\n 'globalTitle': 'Глобальные плагины',\n 'globalSubtitle': 'Общие для системы и всех сессий',\n 'presetProvidedDetail': 'Глобально отключён; пресеты агента включают его на уровне сессии',\n 'enabledIn': 'Включён в',\n 'viewInPreset': 'Открыть в группе пресета',\n 'matchesInOtherPresets': 'Ещё совпадений в других пресетах: {count} ',\n 'failedCountLabel': 'ошибок',\n 'conditionalTag': 'Условно',\n 'presetEnabledTag': 'Включён через пресеты',\n 'failedTag': 'Сбой',\n 'moduleLabel': 'Модуль',\n 'fromPreset': 'Из',\n 'condition': 'Отключается, когда',\n 'runtime': 'Состояние',\n 'clientSyncing': 'Синхронизация плагинов на этой странице…',\n 'clientSyncFailed': 'Часть плагинов не удалось синхронизировать на этой странице. Включение на хосте не изменилось.',\n 'clientSyncRetry': 'Повторить для этой страницы',\n 'metadataError': 'Ошибка метаданных пакета: {error}',\n },\n 'settings.plugins': {\n 'nav': 'Встроенные плагины',\n 'title': 'Встроенные плагины',\n 'intro': 'Просмотр плагинов, входящих в эту сборку.',\n 'tabs': 'Виды плагинов',\n 'empty': 'Эта сборка не открывает представлений плагинов.',\n },\n 'sidebar': {\n 'session.new': 'Новая сессия',\n 'session.new.label': 'Новая сессия',\n 'toggle.open': 'Открыть боковую панель',\n 'toggle.collapse': 'Свернуть боковую панель',\n 'panels.label': 'Глобальные панели',\n },\n 'skill': {\n 'row.title': 'Навык',\n 'row.running': 'Загрузка навыка',\n 'row.failed': 'Не удалось загрузить навык',\n 'row.stopped': 'Загрузка навыка прервана',\n 'row.instructions': 'Инструкции',\n 'row.inspect': 'Просмотр',\n 'menu.userOnly': 'только пользователь',\n 'row.preparing': 'Подготовка к загрузке навыка',\n },\n 'subagent': {\n 'duration.seconds': '{seconds} с',\n 'duration.minutes': '{minutes} мин {seconds} с',\n 'duration.hours': '{hours} ч {minutes} мин {seconds} с',\n 'duration.days': '{days} д',\n 'duration.daysHours': '{days} д {hours} ч',\n 'duration.months': '~{months} мес',\n 'duration.monthsDays': '~{months} мес {days} д',\n 'duration.years': '~{years} г',\n 'duration.yearsMonths': '~{years} г {months} мес',\n 'duration.exactDays': '{days} д {hours} ч {minutes} мин {seconds} с',\n 'duration.exactTitle': 'Общее время активности: {duration}',\n 'loading.label': 'Загрузка субагентов…',\n 'load.error': 'Не удалось загрузить субагентов',\n 'retry': 'Повторить',\n 'mode.oneShot': 'одноразовый',\n 'mode.continuable': 'можно продолжить',\n 'activity.running': 'выполняется',\n 'activity.inactive': 'не выполняется',\n 'branch.collapse': 'Свернуть потомков {label}',\n 'branch.expand': 'Развернуть потомков {label}',\n 'count.total.one': '{count} субагент',\n 'count.total.other': 'Субагентов: {count}',\n 'count.running.one': '{count} субагент выполняется',\n 'count.running.other': 'Субагентов выполняется: {count}',\n 'switcher.aria': 'Переключить субагента: {title}',\n 'tree.aria': 'Сессии субагентов',\n 'readonly.oneShot.title': 'Запись одноразового субагента',\n 'readonly.title': 'Этот субагент пока доступен только для чтения',\n 'readonly.oneShot.body': 'Одноразовые задачи не принимают продолжений; здесь можно посмотреть полную запись выполнения.',\n 'readonly.body': 'Родительская сессия сейчас не в сети; откройте её заново, чтобы продолжить отправку сообщений.',\n 'tokens.thousand': '{value} тыс.',\n 'tokens.million': '{value} млн',\n 'tokens.total': '{value} ток',\n 'mode.unknown': 'неизвестный режим',\n 'readonly.unknown.body': 'Откройте дочернюю сессию, чтобы понять, можно ли её продолжить.',\n 'activity.completed': 'завершено',\n 'open.sidebar': 'Открыть в боковой панели',\n 'sidebar.chat': 'Чат',\n 'open.sidebar.aria': 'Открыть {label} в боковой панели',\n },\n 'settings.theme': {\n 'appearance.title': 'Оформление',\n 'appearance.light': 'Светлая',\n 'appearance.dark': 'Тёмная',\n 'appearance.system': 'Как в системе',\n 'fontSize.title': 'Размер шрифта',\n 'fontSize.description': 'Влияет только на содержимое беседы',\n 'fontSize.unit': 'px',\n 'fontSize.increase': 'Увеличить размер шрифта',\n 'fontSize.decrease': 'Уменьшить размер шрифта',\n },\n 'trajectory': {\n 'view.trajectory': 'Траектория',\n 'toolbar.aria': 'Панель траектории',\n 'toolbar.duration': 'Длительность',\n 'toolbar.useActualDuration': 'Фактическая длительность',\n 'toolbar.useEqualWidth': 'Равная ширина операций',\n 'toolbar.actualTime': 'Фактическое время',\n 'toolbar.turns': 'Раунды',\n 'toolbar.expandTurns': 'Развернуть раунды',\n 'toolbar.collapseTurns': 'Свернуть раунды',\n 'toolbar.calls': 'Вызовы',\n 'toolbar.expandCalls': 'Развернуть вызовы',\n 'toolbar.collapseCalls': 'Свернуть вызовы',\n 'toolbar.search': 'Поиск по траектории',\n 'toolbar.searchPlaceholder': 'Поиск',\n 'column.input': 'Ввод',\n 'column.model': 'Модель',\n 'column.tools': 'Инструменты',\n 'status.pending': 'Ожидает',\n 'timing.notAvailable': 'Недоступно',\n 'timing.notRecorded': 'Не записано',\n 'timing.stepStartUnavailable': 'Недоступно время начала шага',\n 'timing.firstTokenUnavailable': 'Недоступно время первого токена',\n 'timing.usageUnavailable': 'Данные об использовании недоступны',\n 'timing.outputTokensUnavailable': 'Недоступно число выходных токенов',\n 'timing.durationTooShort': 'Длительность слишком мала',\n 'timing.started': 'Начало',\n 'timing.totalDuration': 'Общая длительность',\n 'timing.ttft': 'TTFT',\n 'timing.generation': 'Генерация',\n 'timing.throughput': 'Пропускная способность',\n 'timing.duration': 'Длительность',\n 'timing.source': 'Источник времени',\n 'timing.sessionTimestamps': 'Метки времени сессии',\n 'timing.sessionTimestampsRunning': 'Метки времени сессии (выполняется)',\n 'usage.input': 'Ввод',\n 'tab.tools': 'Инструменты',\n 'record.noContent': 'Нет содержимого',\n 'record.noPayload': 'Ввод не зафиксирован',\n 'record.noResult': 'Результат не зафиксирован',\n 'record.resultJson': 'Результат JSON',\n 'record.outputJson': 'Результат JSON',\n 'record.thinking': 'Рассуждение',\n 'record.tools': 'Инструменты',\n 'block.openSummaryTitle': 'Открыть сводку вызова',\n 'history.loadingEarlier': 'Загрузка более ранней истории…',\n 'history.loadingEarlierAria': 'Загрузка более ранней истории…',\n 'history.loadEarlier': 'Загрузить более раннюю историю',\n 'history.clickToLoadEarlier': 'Нажмите, чтобы загрузить более раннюю историю',\n 'details.event': 'Детали события',\n 'details.resize': 'Изменить размер панели деталей',\n 'details.resizeTitle': 'Перетащите, чтобы изменить размер. Двойной клик — сброс.',\n 'details.close': 'Закрыть детали',\n 'details.model': 'Модель',\n 'timeline.aria': 'Таймлайн траектории',\n 'timeline.overviewAria': 'Обзор таймлайна; перетаскивайте по горизонтали, чтобы фокусироваться на событиях',\n 'timeline.noTimingData': 'Нет данных о времени',\n 'timeline.total': 'Всего: {duration}',\n 'timeline.started': 'Начало: {time}',\n 'layout.toolCallOnly': 'Только вызов инструмента',\n 'kind.system': 'SYSTEM',\n 'kind.user': 'USER',\n 'kind.context': 'CONTEXT',\n 'kind.compacted': 'COMPACTED',\n 'kind.message': 'Сообщение',\n 'kind.assistant': 'ASSISTANT',\n 'kind.tool': 'TOOL',\n 'kind.subtool': 'SUBTOOL',\n 'kind.sub': 'Sub',\n 'column.output': 'Вывод',\n 'column.think': 'Размышление',\n 'column.time': 'Время',\n 'turn.label': 'Ход {turn}',\n 'section.betweenTurns': 'Между ходами',\n 'group.message': 'Сообщение',\n 'group.step': 'Шаг {step}',\n 'group.compaction': 'Сжатие {seq}',\n 'status.failed': 'Ошибка',\n 'status.completed': 'Завершено',\n 'timing.showLocalTime': 'Показать локальное время',\n 'timing.showUnixTimestamp': 'Показать Unix-метку времени',\n 'timing.request': 'Время запроса',\n 'unit.milliseconds': '{value} мс',\n 'unit.seconds': '{value} с',\n 'unit.tokens': '{value} ток',\n 'unit.tokensPerSecond': '{value} ток/с',\n 'usage.tokens': 'Токены',\n 'usage.reasoning': 'Размышление',\n 'usage.content': 'Содержимое',\n 'usage.notReported': 'Данные об использовании не сообщаются',\n 'usage.cached': 'Из кэша',\n 'usage.cacheCreated': 'Запись в кэш',\n 'usage.other': 'Прочее',\n 'usage.output': 'Выход',\n 'usage.thisRequest': 'Этот запрос',\n 'usage.sessionCumulative': 'Суммарно по сессии',\n 'options.notRecorded': 'Параметры не записаны',\n 'options.json': 'JSON параметров запроса',\n 'source.unknown': 'Неизвестно',\n 'source.user': 'Пользователь',\n 'source.plugin': 'Плагин',\n 'source.pluginNamed': 'Плагин · {plugin}',\n 'source.goal': 'Цель',\n 'source.goalRound': 'Цель · Раунд {round}',\n 'source.notRecorded': 'Источник не записан',\n 'source.messageJson': 'JSON источника сообщения',\n 'tab.summary': 'Сводка',\n 'tab.rawOutput': 'Исходный вывод',\n 'tab.preview': 'Предпросмотр',\n 'tab.raw': 'Исходный текст',\n 'tab.source': 'Источник',\n 'tab.payload': 'Запрос',\n 'tab.result': 'Результат',\n 'tab.schema': 'Схема',\n 'tab.timing': 'Время',\n 'tab.diff': 'Дифф',\n 'tab.systemPrompt': 'Системный промпт',\n 'tab.options': 'Параметры',\n 'tab.usage': 'Использование',\n 'record.toolCallOnly': '(только вызов инструмента)',\n 'record.noOutput': 'Нет вывода',\n 'record.schemaUnavailable': 'Схема недоступна',\n 'record.parameters': 'Параметры',\n 'record.json': 'JSON',\n 'record.parametersJson': 'JSON параметров',\n 'record.namedParametersJson': 'JSON параметров {name}',\n 'record.payloadJson': 'JSON запроса',\n 'record.systemPromptMissing': 'В этом запросе нет системного промпта',\n 'record.toolsMissing': 'В этом запросе нет инструментов',\n 'record.systemPrompt': 'Системный промпт',\n 'block.openSummary': 'Открыть сводку вызова инструментов для блока #{index}',\n 'block.label': 'Блок #{index} {type}',\n 'history.loadingTrajectory': 'Загрузка траектории…',\n 'request.label': 'Запрос #{request}',\n 'request.labelCompaction': 'Запрос #{request} · Сжатие',\n 'request.compaction': 'Сжатие · {section}',\n 'request.compactionPurpose': 'Сжатие',\n 'request.retryProgress': '{retry} из {maximum}',\n 'request.collapsedSummary': 'Свёрнутая сводка {kind}, {summary}',\n 'request.collapsedTurn': 'хода',\n 'request.collapsedAssistant': 'ассистента',\n 'request.rowAria': '{request}{kind}, {content}',\n 'request.rowPrefix': 'Запрос {request}, ',\n 'request.rowAriaCompaction': 'Запрос {request}, сжатие',\n 'request.noContent': 'нет содержимого',\n 'summary.toolCalls.one': '{count} вызов инструмента',\n 'summary.toolCalls.other': 'Вызовов инструментов: {count}',\n 'summary.steps.one': '{count} шаг',\n 'summary.steps.other': 'Шагов: {count}',\n 'details.status': 'Состояние',\n 'details.purpose': 'Назначение',\n 'details.provider': 'Провайдер',\n 'details.toolCalls': 'Вызовы инструментов',\n 'details.subtoolCalls': 'Вложенные вызовы',\n 'details.error': 'Ошибка',\n 'details.failure.auth': 'Недействительный API-ключ',\n 'details.retry': 'Повтор',\n 'details.scheduled': 'Запланирован',\n 'details.retryDelay': 'Задержка повтора',\n 'details.result': 'Результат',\n 'details.compacted': 'Сжато',\n 'details.assistantMessage': 'Сообщение ассистента',\n 'details.source': 'Источник',\n 'details.hierarchy': 'Иерархия',\n 'details.toolCall': 'Вызов инструмента',\n 'timeline.ttftDecoding': 'TTFT {ttft} · Декодирование {decoding}',\n 'layout.compacting': 'Сжатие контекста…',\n 'layout.compactionFailed': 'Сжатие не удалось',\n 'layout.compacted': 'Контекст сжат',\n 'layout.fileAttachments': 'Файлы ×{count}',\n 'layout.initialSystemPrompt': 'Начальный системный промпт',\n 'layout.systemPromptUpdated': 'Системный промпт обновлён',\n 'layout.toolsUpdated': 'Инструменты обновлены',\n 'layout.systemPromptAndToolsUpdated': 'Системный промпт и инструменты обновлены',\n 'layout.compactionInterrupted': 'Сжатие было прервано до завершения.',\n 'record.wrapLines': 'Перенос строк',\n 'code.source': 'Код',\n 'code.output': 'Результат',\n 'code.copySource': 'Копировать код',\n 'code.copyOutput': 'Копировать результат',\n 'code.originalJson': 'Исходный JSON',\n 'code.running': 'Выполняется…',\n 'attachment.list': 'Вложения',\n 'attachment.imageName': 'Изображение {index}',\n 'layout.imageCount': 'Изображения ×{count}',\n 'layout.toolAdded': 'Инструмент добавлен: {name}',\n 'layout.toolRemoved': 'Инструмент удалён: {name}',\n 'layout.toolUpdateNotice': 'Инструменты обновлены',\n 'layout.toolsAdded': 'Добавлены: {names}',\n 'layout.toolsAddedCount': 'добавлено: {count}',\n 'layout.toolsChanged': 'добавлено: {added}, удалено: {removed}',\n 'layout.toolsRemoved': 'Удалены: {names}',\n 'layout.toolsRemovedCount': 'удалено: {count}',\n },\n 'question': {\n 'error.resubmit': 'Ответ не успел дойти до продолжения работы; отправьте его ещё раз.',\n 'status.sent': 'Ответ отправлен; панель не удалось закрыть.',\n 'wait.takeTime': 'Не спешите',\n 'wait.countdown': 'Продолжу через {seconds} с',\n 'wait.paused': 'Пауза · осталось {seconds} с',\n 'wait.held': 'Жду вашего ответа',\n 'wait.continued': 'Работа продолжена — ответить ещё можно',\n 'review.status': 'Есть ответ',\n 'review.skipped': 'Этот вопрос был пропущен.',\n 'reply.label': 'Ответить на прежние вопросы',\n 'reply.open': 'Показать подробности вопроса',\n 'reply.close': 'Скрыть подробности вопроса',\n 'reply.answerLabel': 'Ответ: ',\n 'reply.skipped': 'Пропущен',\n 'nav.close': 'Закрыть панель — открыть снова можно из вызова инструмента',\n 'error.incomplete': 'Сначала завершите этот вопрос.',\n 'error.unanswered': 'Выберите вариант или введите свой ответ.',\n 'nav.prev': 'Предыдущий вопрос',\n 'nav.next': 'Следующий вопрос',\n 'nav.minimize': 'Свернуть карточку вопроса',\n 'nav.maximize': 'Развернуть карточку вопроса',\n 'nav.cancel': 'Отменить все вопросы',\n 'option.recommended': 'Рекомендуется',\n 'custom.placeholder': 'Введите ваш ответ',\n 'action.skip': 'Пропустить',\n 'action.next': 'Далее',\n 'plan.header': 'План на рассмотрении',\n 'plan.approve': 'Утвердить',\n 'plan.decline': 'Отклонить',\n 'plan.discuss': 'Запросить изменения',\n },\n 'workflowRun': {\n 'run.title': '{name}',\n 'run.members.one': '{count} участник',\n 'run.members.other': 'Участников: {count}',\n 'run.empty': 'Участники не запущены',\n 'phase.unassigned': 'Без фазы',\n 'phase.empty': 'Пустое имя фазы',\n 'statusCount.running': 'Выполняется: {count}',\n 'statusCount.completed': 'Завершено: {count}',\n 'statusCount.failed': 'Ошибка: {count}',\n 'statusCount.cancelled': 'Отменено: {count}',\n 'statusCount.interrupted': 'Прервано: {count}',\n 'member.empty': 'Пустое имя участника',\n 'member.open': 'Открыть {name}',\n 'status.running': 'Выполняется',\n 'status.completed': 'Завершено',\n 'status.failed': 'Ошибка',\n 'status.cancelled': 'Отменено',\n 'status.interrupted': 'Прервано',\n },\n 'workspace': {\n 'session.untitled': 'Без названия',\n 'draft.workspaceRequired': 'Сначала выберите рабочее пространство.',\n 'draft.initializationFailed': 'Не удалось заполнить черновик. Повторите попытку немного позже.',\n 'group.ungrouped': 'Без группы',\n 'session.new': 'Новая сессия',\n 'section.workspaces': 'Рабочие пространства',\n 'section.sessions': 'Сессии',\n 'viewOptions.label': 'Параметры вида',\n 'groupBy.label': 'Группировка',\n 'groupBy.workspace': 'По рабочим пространствам',\n 'groupBy.flat': 'Единым списком',\n 'orderBy.label': 'Сортировка',\n 'orderBy.manual': 'Вручную',\n 'orderBy.updated': 'По обновлению',\n 'sessions.expand': 'Показать ещё {n}',\n 'sessions.collapse': 'Свернуть',\n 'empty.none': 'Пока нет сессий',\n 'empty.noMatches': 'Ничего не найдено',\n 'workspace.add': 'Добавить рабочее пространство',\n 'search.sessions.aria': 'Поиск сессий',\n 'search.placeholder': 'Поиск по именам сессий…',\n 'search.clear': 'Очистить поиск',\n 'search.results.aria': 'Результаты поиска',\n 'search.pending': 'Поиск по истории сессий…',\n 'search.noMatches': 'Нет подходящих сессий',\n 'search.hasMore': 'Показаны первые {n}. Сузьте поиск.',\n 'menu.addWorkspace': 'Добавить рабочее пространство…',\n 'picker.loading': 'Загрузка рабочих пространств…',\n 'conflict.named': 'Рабочее пространство с именем «{name}» уже существует.',\n 'folderError.title': 'Не удалось открыть папку',\n 'folderError.retry': 'Выбрать снова',\n 'rename': 'Переименовать',\n 'rename.workspace.title': 'Переименовать рабочее пространство',\n 'rename.session.title': 'Переименовать сессию',\n 'field.workspaceName': 'Имя рабочего пространства',\n 'field.sessionName': 'Имя сессии',\n 'delete.workspace': 'Удалить рабочее пространство',\n 'delete.desc': 'Это удалит «{name}» из списка рабочих пространств. Папка и журналы сессий сохранятся; их сессии появятся в разделе «Без группы».',\n 'delete.pending': 'Удаление рабочего пространства…',\n 'menu.fork': 'Создать ответвление сессии',\n 'menu.archiveSession': 'Архивировать сессию',\n 'sessions.count.one': '{n} сессия',\n 'sessions.count.other': 'Сессий: {n}',\n 'actions.workspace.aria': 'Действия рабочего пространства {name}',\n 'actions.session.aria': 'Действия сессии {name}',\n 'actions.newSession.aria': 'Новая сессия в {name}',\n 'status.running': 'Выполняется',\n 'status.subagentsRunning.one': '{n} субагент выполняется',\n 'status.subagentsRunning.other': 'Субагентов выполняется: {n}',\n 'status.idle': 'Ожидает',\n 'status.waitingApproval': 'Ожидает одобрения',\n 'status.planReview': 'План на рассмотрении',\n 'status.waitingAnswer': 'Ожидает ответа',\n 'status.completed': 'Завершено',\n 'hover.created': 'Создано {time}',\n 'hover.copied': 'Скопировано',\n 'date.ymd': '{d}.{m}.{y}',\n 'time.now': 'только что',\n 'time.minutes': '{n} мин',\n 'time.hours': '{n} ч',\n 'time.days': '{n} д',\n 'time.months': '{n} мес',\n 'time.years': '{n} г',\n 'time.ago': '{t} назад',\n 'defaultWorkspace.failed': 'Не удалось создать рабочее пространство по умолчанию. Выберите папку через «Выбрать рабочее пространство».',\n 'defaultWorkspace.title': 'Рабочее пространство по умолчанию',\n 'schedule.active': 'Есть активная задача по расписанию',\n 'groupBy.workspaceTree': 'Дерево рабочих пространств',\n 'filterBy.label': 'Фильтр сессий',\n 'viewOptions.showArchived': 'Все диалоги (с архивными)',\n 'viewOptions.onlyArchived': 'Только архивные',\n 'menu.unarchiveSession': 'Вернуть сессию из архива',\n 'menu.pinSession': 'Закрепить сессию',\n 'menu.unpinSession': 'Открепить сессию',\n 'row.archived': 'В архиве',\n 'row.pinned': 'Закреплена',\n 'toast.archivedNotOpenable': 'Архивные сессии нельзя открыть. Верните её из архива, чтобы посмотреть.',\n 'toast.archived': 'Сессия в архиве. Можно ',\n 'toast.stoppedAndArchived': 'Сессия остановлена и отправлена в архив. Можно ',\n 'archive.confirm.title': 'Остановить и отправить сессию в архив?',\n 'archive.confirm.desc': '«{title}» ещё выполняет работу. Архивирование сначала остановит её; позже сессию можно вернуть через фильтр «Все диалоги (с архивными)» в боковой панели, а остановленная работа сама не возобновится.',\n 'archive.confirm.activity': 'Работа, которая будет остановлена',\n 'archive.confirm.turn': 'Текущий ход',\n 'archive.confirm.subagents.one': '{n} выполняющийся субагент: {names}',\n 'archive.confirm.subagents.other': 'Выполняющихся субагентов: {n} — {names}',\n 'archive.confirm.jobs.one': '{n} фоновая задача: {names}',\n 'archive.confirm.jobs.other': 'Фоновых задач: {n} — {names}',\n 'archive.confirm.schedules.one': '{n} запланированное напоминание: {names}',\n 'archive.confirm.schedules.other': 'Запланированных напоминаний: {n} — {names}',\n 'archive.confirm.other.one': '{n} другая единица работы ({kind})',\n 'archive.confirm.other.other': 'Других единиц работы: {n} ({kind})',\n 'archive.confirm.listSeparator': ', ',\n 'archive.confirm.action': 'Остановить и архивировать',\n 'archive.confirm.pending': 'Остановка и архивирование…',\n 'toast.archivedUndo': 'отменить',\n 'toast.archivedOr': ' или ',\n 'toast.archivedFilter': 'отфильтровать архивные сессии',\n 'toast.pinFailed': 'Не удалось закрепить. Повторите позже.',\n 'toast.unpinFailed': 'Не удалось открепить. Повторите позже.',\n 'toast.createFailed': 'Не удалось создать сессию: {message}',\n 'actions.archive': 'В архив',\n 'actions.unarchive': 'Из архива',\n 'actions.pin': 'Закрепить',\n 'actions.unpin': 'Открепить',\n 'actions.newSession': 'Новая сессия',\n 'status.compact.approval': 'Одобрение',\n 'status.compact.planReview': 'План на рассмотрении',\n 'status.compact.answer': 'Ответ',\n 'shortcut.noSession': 'Сначала выберите сессию',\n 'shortcut.noPicker': 'Выбор папки недоступен',\n 'shortcut.directoryBusy': 'Выбор или добавление рабочей папки',\n 'shortcut.noCompletedTurn': 'В этой сессии нет завершённого хода',\n 'shortcut.forkFailed': 'Не удалось создать форк сессии. Повторите попытку.',\n 'viewOptions.hideArchived': 'Скрыть архивные',\n 'empty.noneArchived': 'Архивных сессий пока нет',\n 'empty.viewOthers': 'Показать другие сессии',\n },\n 'agent-team': {\n 'memberStatus.running': 'Выполняется',\n 'memberStatus.inactive': 'Неактивен',\n 'memberStatus.provisioning': 'Подготовка',\n 'memberStatus.failed': 'Ошибка',\n 'status.pending': 'Ожидание',\n 'status.in_progress': 'В процессе',\n 'status.completed': 'Завершено',\n 'trigger': 'Команда агентов',\n 'loading': 'Загрузка команды…',\n 'empty': 'Общих задач пока нет. Создайте их в диалоге.',\n 'roster': 'Участники',\n 'tasks': 'Общие задачи',\n 'model': 'Модель',\n 'open': 'Открыть диалог с участником',\n 'owner': 'Исполнитель',\n 'unowned': 'Без исполнителя',\n 'blockedBy': 'Блокируется',\n 'writeScopes': 'Области записи',\n 'ready': 'Готово к работе',\n 'blocked': 'Заблокировано зависимостями',\n 'unavailable': 'Команда недоступна',\n 'failure': 'Некорректная сохранённая запись команды: {message}',\n 'current': 'Текущий чат',\n 'task.expand': 'Показать больше',\n 'task.collapse': 'Показать меньше',\n },\n 'cordis': {\n 'row.defineTitle': 'Зарегистрировать плагин Cordis',\n 'row.runTitle': 'Запустить плагин Cordis',\n 'row.updateTitle': 'Обновить плагин Cordis',\n 'row.stopTitle': 'Остановить плагин Cordis',\n 'row.removeTitle': 'Удалить плагин Cordis',\n 'purpose.missing': '(цель не указана)',\n 'status.idle': 'Готов',\n 'status.awaitingApproval': 'Ожидает одобрения',\n 'status.failed': 'Ошибка запуска',\n 'status.clientPending': 'Client готов к активации',\n 'status.running': 'Выполняется',\n 'status.removed': 'Удалён',\n 'status.superseded': 'Доступен более новый запуск',\n 'run.removed': 'Этого пакета больше не существует',\n 'run.superseded': 'Ниже доступна более новая карточка запуска',\n 'panel.hint': 'Управление запуском находится на панели Cordis над настройками',\n 'panel.plugins.aria': 'Плагины Cordis',\n 'panel.approvals.aria': 'Одобрения Cordis',\n 'panel.trigger': 'Плагин Cordis',\n 'panel.runningCount': '{count} в работе',\n 'panel.title': 'Плагины Cordis',\n 'panel.empty': 'Плагины ещё не определены',\n 'panel.loading': 'Чтение…',\n 'panel.readFailed': 'Не удалось прочитать список плагинов: {message}',\n 'panel.group.current': 'Эта сессия',\n 'panel.group.others': 'Другие сессии',\n 'panel.version': 'Версия',\n 'panel.current': 'Текущая: {packageId}',\n 'panel.next': 'Следующая: {packageId}',\n 'action.approve': 'Разрешить',\n 'action.approveOnce': 'Разрешить только эту версию',\n 'action.approvePlugin': 'Разрешить будущие версии этого плагина',\n 'action.decline': 'Отклонить',\n 'action.run': 'Запустить',\n 'action.stop': 'Остановить',\n 'action.remove': 'Удалить',\n 'action.retry': 'Повторить',\n 'action.rollback': 'Откатить',\n 'action.inspect': 'Просмотр',\n 'render.failedAbdicated': 'Сбой рендеринга в {slot}; восстановлен интерфейс по умолчанию:',\n 'render.failedHeld': 'Сбой рендеринга в {slot}:',\n 'a11y.defining': 'Идёт определение плагина',\n 'a11y.failed': 'Определение не удалось',\n 'a11y.stopped': 'Определение прервано',\n 'body.source': 'Исходный код плагина',\n 'body.hostCode': 'Хост',\n 'body.clientCode': 'Клиент',\n 'body.output': 'Результат',\n 'body.copy': 'Копировать',\n 'body.copied': 'Скопировано',\n 'a11y.preparing': 'Подготовка вызова инструмента Cordis',\n },\n 'session-log-download': {\n 'dialog.preparingTitle': 'Экспорт сессии',\n 'dialog.preparingDescription': 'Готовится ZIP-архив с этой сессией, её подсессиями и вложениями.',\n 'dialog.successTitle': 'Загрузка сессии началась',\n 'dialog.successDescription': 'Браузер загружает ZIP-архив сессии.',\n 'dialog.errorTitle': 'Не удалось экспортировать сессию',\n 'dialog.close': 'Закрыть',\n 'dialog.commandFailed': 'Не удалось запустить экспорт сессии.',\n 'header.more': 'Другие действия',\n 'menu.download': 'Скачать журнал сессии',\n 'menu.feedback': 'Отзыв',\n },\n 'chat': {\n 'chat.deepDivingFor': 'Углублённый анализ: {duration} ···',\n 'duration.secondUnit': 'с',\n 'duration.minuteUnit': 'мин ',\n 'duration.hourUnit': 'ч ',\n 'view.chat': 'Чат',\n 'number.groupSeparator': ' ',\n 'duration.compactSeconds': '{seconds} с',\n 'duration.compactMinutes': '{minutes} мин {seconds} с',\n 'duration.milliseconds': '{milliseconds} мс',\n 'stats.counts': '{turns} ходов, {steps} шагов',\n 'stats.cacheHit': 'Попадание в кэш {percent}%',\n 'chat.loadingHistory': 'Загрузка истории…',\n 'chat.loadError': 'Не удалось загрузить историю: {message} ({code})',\n 'chat.loadOlder': 'Загрузить ранее',\n 'chat.toBottom': 'Вниз',\n 'chat.deepDiving': 'Глубокое исследование…',\n 'chat.turnNavigation.label': 'Навигация по ходам',\n 'chat.turnNavigation.jump': 'Перейти к ходу {turn}',\n 'chat.turnNavigation.jumpLoad': 'Загрузить и перейти к ходу {turn}',\n 'chat.turnNavigation.turn': 'Ход {turn}',\n 'settings.transcript.title': 'Детали работы',\n 'settings.transcript.description': 'Выберите, сколько деталей показывать для вызовов инструментов',\n 'settings.transcript.compact': 'Компактный',\n 'settings.transcript.expanded': 'Полностью развёрнутый',\n 'fileOpen.title': 'Не удалось открыть файл',\n 'fileOpen.unknown': 'Не удалось открыть этот файл',\n 'message.extraBlock': 'Дополнительный блок содержимого',\n 'message.systemPrompt': 'Системный промпт',\n 'message.contextInjection': 'Инъекция контекста',\n 'message.contextRecall': 'Межсессонный поиск',\n 'message.referenceSummary': 'Ссылка на сессию · {labels}',\n 'message.referenceSeparator': ', ',\n 'message.context.instructions.loaded': 'загружено',\n 'message.context.instructions.added': 'добавлено',\n 'message.context.instructions.updated': 'обновлено',\n 'message.context.instructions.removed': 'удалено',\n 'message.context.catalog.replaced': 'Заменённый каталог',\n 'message.context.catalog.more': '… ещё {count}',\n 'message.context.snapshot.supersedes': 'Заменяет предыдущие снимки',\n 'message.context.relay.from': 'Из сессии {session}',\n 'message.context.recall.counts': 'Сохранено {retained} · Пропущено {omitted}',\n 'message.context.recall.truncated': 'обрезано',\n 'message.compaction': 'Контекст сжат',\n 'message.compaction.running': 'Сжатие контекста…',\n 'message.compaction.completed': 'Сжато {items} записей истории (~{tokens} токенов)',\n 'message.compaction.expand': 'Показать сводку сжатия',\n 'message.compaction.unavailable': 'Сводка сжатия недоступна',\n 'message.compaction.commandTitle': 'compact',\n 'message.think': 'Размышление',\n 'message.unknownSurface': 'Неизвестное surface-событие: {type}',\n 'message.unknownBlock': 'Неизвестный блок содержимого',\n 'message.turnProcess.toolCalls.one': '{count} вызов инструмента',\n 'message.turnProcess.toolCalls.other': 'Вызовов инструментов: {count}',\n 'message.turnProcess.messages.one': '{count} сообщение',\n 'message.turnProcess.messages.other': 'Сообщений: {count}',\n 'message.turnProcess.subagents.one': '{count} субагент',\n 'message.turnProcess.subagents.other': 'Субагентов: {count}',\n 'message.turnProcess.thoughtForAWhile': 'Думал некоторое время',\n 'message.turnProcess.separator': ' · ',\n 'message.stopped': 'Остановлено',\n 'message.branch': 'Ответвить новый диалог',\n 'message.branchUnavailable': 'Доступно только на последнем сообщении завершённого хода',\n 'message.retry.active': 'Повтор запроса к модели',\n 'message.retry.cancelled': 'Повтор запроса к модели отменён',\n 'message.retry.started': 'Запрос к модели повторён',\n 'message.retry.scheduled': 'Ожидание повтора запроса к модели',\n 'message.retry.status': '{label} ({retry}/{maximum}) · {seconds} с',\n 'message.retry.delay': 'Задержка повтора: ',\n 'message.retry.failure': 'Причина сбоя: ',\n 'message.failure.auth': 'Недействительный API-ключ',\n 'message.turnError': 'Этот ход завершился с ошибкой',\n 'message.maxTokens': 'Достигнут лимит выходных токенов',\n 'message.maxTokens.hint': 'Ответ обрезан; уже выведенное сохранено в диалоге. Отправьте «продолжай», чтобы модель завершила ответ.',\n 'message.tokensPerSecond': '{tps} ток/с',\n 'message.turnUsage.title': 'Расход хода',\n 'message.turnUsage.consumed': 'Расход {total}',\n 'message.turnUsage.model': 'Провайдер / модель',\n 'message.turnUsage.cacheHit': 'Попадание в кэш',\n 'message.turnUsage.input': 'Вход без кэша',\n 'message.turnUsage.cacheRead': 'Чтение из кэша',\n 'message.turnUsage.cacheWrite': 'Запись в кэш',\n 'message.turnUsage.output': 'Выход',\n 'message.turnUsage.reasoning': ' (из них размышление {tokens})',\n 'message.turnUsage.count': '{count} ток',\n 'duration.seconds': '{seconds} с',\n 'duration.minutes': '{minutes} мин {seconds} с',\n 'command.running': 'Выполняется…',\n 'command.failed': 'Команда завершилась с ошибкой',\n 'command.done': 'Завершено',\n 'command.title': 'Команда',\n 'row.running': 'Выполняется',\n 'row.failed': 'Ошибка',\n 'json.truncated': '… обрезано, всего {total} символов',\n 'clock.md': '{d}.{m}',\n 'clock.ymd': '{d}.{m}.{y}',\n 'message.systemPromptUpdate': 'Системный промпт обновлён',\n 'stats.dialog.title': 'Статистика сессии',\n 'stats.dialog.usageTitle': 'Использование токенов',\n 'stats.dialog.llmTime': 'Время модели',\n 'stats.dialog.toolTime': 'Время инструментов',\n 'stats.dialog.ttft': 'Среднее время до первого токена (TTFT)',\n 'stats.dialog.speed': 'Скорость вывода (ток./с)',\n 'duration.hours': '{hours} ч {minutes} мин {seconds} с',\n 'message.stepProcess.thinking': 'Анализ запроса',\n 'message.stepProcess.read': 'Чтение файлов',\n 'message.stepProcess.search': 'Поиск в коде',\n 'message.stepProcess.edit': 'Редактирование файлов',\n 'message.stepProcess.commands': 'Выполнение команд',\n 'message.stepProcess.code': 'Выполнение кода',\n 'message.stepProcess.webSearch': 'Поиск в интернете',\n 'message.stepProcess.webFetch': 'Открытие веб-страниц',\n 'message.stepProcess.subagents': 'Координация субагентов',\n 'message.stepProcess.plan': 'Обновление плана',\n 'message.stepProcess.questions': 'Ожидание вашего действия',\n 'message.stepProcess.tools': 'Вызов инструментов',\n 'message.stepProcess.done.thinking': 'Анализ завершён',\n 'message.stepProcess.done.read': 'Файлы прочитаны',\n 'message.stepProcess.done.search': 'Поиск в коде выполнен',\n 'message.stepProcess.done.edit': 'Файлы изменены',\n 'message.stepProcess.done.commands': 'Команды выполнены',\n 'message.stepProcess.done.code': 'Код выполнен',\n 'message.stepProcess.done.webSearch': 'Поиск в интернете выполнен',\n 'message.stepProcess.done.webFetch': 'Веб-страницы открыты',\n 'message.stepProcess.done.subagents': 'Субагенты скоординированы',\n 'message.stepProcess.done.plan': 'План обновлён',\n 'message.stepProcess.done.questions': 'Вопросы заданы',\n 'message.stepProcess.done.tools': 'Инструменты вызваны',\n 'message.stepProcess.joinTwo': '{first} и {second}',\n 'message.stepProcess.comma': ', ',\n 'message.stepProcess.sharedPrefix': '',\n 'message.stepProcess.more': '{title} и т. д.',\n 'message.trigger.request': 'Запрошено выполнение',\n 'message.trigger.goal': 'Продолжение цели',\n 'message.trigger.agent': 'Получено сообщение задачи',\n 'message.trigger.team': 'Получено сообщение команды',\n 'message.trigger.subagent': 'Обновлён статус подзадачи',\n 'message.trigger.github': 'Получено событие GitHub',\n 'message.trigger.webhook': 'Получено внешнее событие',\n 'message.trigger.schedule': 'Задача по расписанию',\n 'message.trigger.job': 'Обновлена фоновая задача',\n 'message.trigger.plugin': 'Обновлён статус плагина',\n 'message.trigger.explanation': 'Это уведомление запустило этот ответ.',\n 'message.turnProcess.worked': 'Работал',\n 'message.turnProcess.deepDivingFor': 'Углублённый анализ: {duration}',\n 'message.turnProcess.took': 'Заняло {duration}',\n 'message.turnProcess.failed': 'Сбой',\n 'settings.performance.title': 'Производительность и расход',\n 'settings.performance.description': 'Выберите, сколько сведений о производительности и расходе показывать',\n 'settings.performance.compact': 'Компактный',\n 'settings.performance.detailed': 'Подробный',\n 'settings.links.title': 'Открывать ссылки из чата в',\n 'settings.links.description': 'Выберите, где открывать веб-ссылки',\n 'settings.links.sidebar': 'Боковая панель приложения',\n 'settings.links.newTab': 'Браузер по умолчанию',\n 'settings.transcript.detailed': 'Подробный',\n 'message.stepProcess.readImage': 'Чтение изображений',\n 'message.stepProcess.write': 'Запись файлов',\n 'message.stepProcess.prepare.read': 'Подготовка к чтению файлов',\n 'message.stepProcess.prepare.readImage': 'Подготовка к чтению изображений',\n 'message.stepProcess.prepare.write': 'Подготовка к записи файлов',\n 'message.stepProcess.prepare.search': 'Подготовка к поиску по коду',\n 'message.stepProcess.prepare.edit': 'Подготовка к редактированию файлов',\n 'message.stepProcess.prepare.commands': 'Подготовка к выполнению команд',\n 'message.stepProcess.prepare.code': 'Подготовка к выполнению кода',\n 'message.stepProcess.prepare.webSearch': 'Подготовка к поиску в интернете',\n 'message.stepProcess.prepare.webFetch': 'Подготовка к открытию веб-страниц',\n 'message.stepProcess.prepare.subagents': 'Подготовка к координации субагентов',\n 'message.stepProcess.prepare.plan': 'Подготовка к обновлению плана',\n 'message.stepProcess.prepare.questions': 'Подготовка вопросов',\n 'message.stepProcess.prepare.tools': 'Подготовка вызовов инструментов',\n 'message.stepProcess.done.readImage': 'Изображения прочитаны',\n 'message.stepProcess.done.write': 'Файлы записаны',\n 'image.open': 'Посмотреть изображение целиком',\n 'image.loading': 'Загрузка изображения…',\n 'image.failed': 'Предпросмотр изображения недоступен',\n 'image.dialog': 'Просмотр изображения',\n 'image.close': 'Закрыть просмотр изображения',\n 'settings.transcript.standard': 'Стандартный',\n 'settings.transcript.verbose': 'Подробный',\n 'message.toolAdded': 'Инструмент добавлен: {name}',\n 'message.toolRemoved': 'Инструмент удалён: {name}',\n 'message.toolsAdded': 'Добавлены: {names}',\n 'message.toolsAddedCount': 'добавлено: {count}',\n 'message.toolsChanged': 'добавлено: {added}, удалено: {removed}',\n 'message.toolsRemoved': 'Удалены: {names}',\n 'message.toolsRemovedCount': 'удалено: {count}',\n 'message.toolsUpdated': 'Инструменты обновлены',\n 'message.accountStopped': 'Задача остановлена',\n 'message.failure.accountSignedOut': 'Остановлено, потому что вы вышли из DeepSeek.',\n 'message.failure.accountSignInRequired': 'Войдите в DeepSeek и убедитесь, что адресат запроса поддерживает авторизацию по учётной записи.',\n 'message.failure.quota': 'Квота запросов исчерпана.',\n },\n 'open-in-app': {\n 'open.title': 'Открыть в {app}',\n 'app.cursor': 'Cursor',\n 'app.vscode': 'VS Code',\n 'app.vscodeinsiders': 'VS Code Insiders',\n 'app.windsurf': 'Windsurf',\n 'app.zed': 'Zed',\n 'app.sublimetext': 'Sublime Text',\n 'app.xcode': 'Xcode',\n 'app.androidstudio': 'Android Studio',\n 'app.intellij': 'IntelliJ IDEA',\n 'app.pycharm': 'PyCharm',\n 'app.webstorm': 'WebStorm',\n 'app.phpstorm': 'PhpStorm',\n 'app.goland': 'GoLand',\n 'app.rider': 'Rider',\n 'app.rustrover': 'RustRover',\n 'app.fork': 'Fork',\n 'app.sourcetree': 'Sourcetree',\n 'app.github': 'GitHub Desktop',\n 'app.tower': 'Tower',\n 'app.gitkraken': 'GitKraken',\n 'app.smartgit': 'SmartGit',\n 'app.sublimemerge': 'Sublime Merge',\n 'app.ghostty': 'Ghostty',\n 'app.warp': 'Warp',\n 'app.iterm': 'iTerm2',\n 'app.kitty': 'kitty',\n 'app.windowsterminal': 'Windows Terminal',\n 'app.gitbash': 'Git Bash',\n 'app.gnometerminal': 'GNOME Terminal',\n 'app.konsole': 'Konsole',\n 'app.finder': 'Finder',\n 'app.explorer': 'Проводник',\n 'app.filemanager': 'Файлы',\n 'app.terminal': 'Терминал',\n 'path.appDefault': '{app} (по умолчанию)',\n 'path.appsError': 'Не удалось загрузить список приложений',\n 'path.open': 'Открыть',\n 'path.more': 'Другие способы открыть',\n 'path.reveal': 'Показать расположение файла',\n 'path.openError': 'Не удалось открыть. Повторите попытку.',\n 'path.revealError': 'Не удалось показать расположение файла. Повторите попытку.',\n 'shortcut.busy': 'Открывается рабочая папка',\n 'shortcut.unavailable': 'Текущая рабочая папка или локальное приложение недоступно',\n 'open.tooltip': 'Открыть локально',\n },\n 'sidebarCodePreview': {\n 'title': 'Код',\n 'copy': 'Копировать',\n 'copied': 'Скопировано',\n },\n 'sidebarFiles': {\n 'entry.other': 'Это не файл и не каталог, открыть нельзя.',\n 'error.notDirectory': 'Это не каталог.',\n 'error.notFound': 'Каталог исчез. Возможно, он перемещён или удалён.',\n 'error.outsideWorkspace': 'Каталог вне рабочей области, боковая панель его не читает.',\n 'error.unavailable': 'Не удалось прочитать: {message}',\n 'guide.description': 'Просмотр файлов рабочей области этой сессии',\n 'guide.title': 'Файлы рабочей области',\n 'type.label': 'Файлы',\n 'loading': 'Чтение…',\n 'empty': 'Пустой каталог',\n 'truncated': 'Слишком много элементов, показана только часть.',\n 'noWorkspace': 'У этой сессии нет рабочего каталога.',\n 'reload': 'Перезагрузить',\n 'autoRefresh': 'Автообновление',\n 'autoRefresh.enable': 'Включить автообновление',\n 'autoRefresh.disable': 'Отключить автообновление',\n 'shortcut.noSession': 'Сначала выберите сессию',\n },\n 'sidebarRight': {\n 'chrome.collapse': 'Свернуть боковую панель',\n 'chrome.collapseAria': 'Свернуть правую боковую панель',\n 'chrome.exitFullscreen': 'Выйти из полноэкранного режима',\n 'chrome.expand': 'Открыть боковую панель',\n 'chrome.expandAria': 'Открыть правую боковую панель',\n 'chrome.toFullscreen': 'Во весь экран',\n 'dock.addTab': 'Новая вкладка',\n 'dock.closeFloat': 'Закрыть',\n 'dock.closeTab': 'Закрыть',\n 'dock.dockFloat': 'Вернуть в боковую панель',\n 'dock.drop.bottom': 'Добавить нижнюю область',\n 'dock.drop.center': 'Переместить сюда',\n 'dock.drop.left': 'Добавить область слева',\n 'dock.drop.right': 'Добавить область справа',\n 'dock.drop.top': 'Добавить верхнюю область',\n 'dock.emptyPane': 'Пустая область',\n 'dock.splitPane': 'Разделить',\n 'dock.splitPaneDisabled': 'Максимум две области',\n 'dock.splitPaneNarrow': 'Недостаточно ширины для разделения — расширьте боковую панель',\n 'tab.guide.title': 'Начало',\n 'tab.unavailable': 'Пока ничто здесь не умеет отображать такой контент.',\n 'command.close': 'Закрыть текущую страницу или окно',\n 'command.refresh': 'Обновить текущую страницу',\n 'command.noRefresh': 'Эту страницу нельзя обновить',\n 'command.toggle': 'Показать или скрыть правую панель',\n 'command.fullscreen': 'Развернуть или свернуть панель во весь экран',\n 'command.noSession': 'Сначала выберите сессию',\n 'command.noFocus': 'Сначала выберите панель в правой боковой панели',\n 'command.stale': 'Страница изменилась, выберите её снова',\n 'command.collapsed': 'Сначала разверните правую панель',\n 'command.float': 'Действие недоступно в плавающей панели',\n 'command.empty': 'Сначала откройте страницу',\n 'command.budget': 'Больше двух панелей не помещается',\n 'command.width': 'Недостаточно ширины для разделения, увеличьте панель',\n },\n 'documentHtml': {\n 'title': 'HTML',\n 'frame': 'Предпросмотр HTML-документа',\n 'loading': 'Отрисовка документа…',\n 'failed': 'Не удалось показать этот HTML-документ.',\n },\n 'sidebarImage': {\n 'title': 'Изображение',\n 'preview': 'Предпросмотр изображения: {name}',\n 'loading': 'Отрисовка документа…',\n 'failed': 'Не удалось показать это изображение.',\n 'unsupported': 'Для предпросмотра изображения нужен полный файл.',\n 'zoomControls': 'Управление масштабом',\n 'zoomMenu': 'Выбрать масштаб',\n 'zoomOut': 'Уменьшить',\n 'zoomIn': 'Увеличить',\n 'zoomFitWidth': 'По ширине',\n 'zoomValue': '{percent}%',\n },\n 'sidebarDocumentPreview': {\n 'loading': 'Отрисовка документа…',\n 'loadMore': 'Загрузить ещё',\n 'changed': 'Файл изменился, показано прежнее содержимое.',\n 'reloadNow': 'Перезагрузить',\n 'reload': 'Прочитать файл заново',\n 'wrap.enable': 'Включить перенос строк',\n 'wrap.disable': 'Отключить перенос строк',\n 'wrap.aria': 'Перенос строк',\n 'openWith': 'Открыть в',\n 'viewer.text': 'Обычный текст',\n 'resourceUnavailable': 'Служба файловых ресурсов недоступна.',\n 'rendererUnavailable': 'Предпросмотр «{name}» недоступен.',\n 'unsupportedFile': 'Для этого типа файлов предпросмотр пока недоступен.',\n 'error.notFound': 'Файл не найден. Возможно, он перемещён или удалён.',\n 'error.tooLarge': 'Страница превышает лимит {limit} и не может быть прочитана.',\n 'error.notText': 'Для этого типа файлов предпросмотр пока недоступен.',\n 'error.notRegularFile': 'Это не обычный файл, показывать нечего.',\n 'error.unavailable': 'Не удалось прочитать: {message}',\n 'retry': 'Повторить',\n 'autoRefresh': 'Автообновление',\n 'autoRefresh.enable': 'Включить автообновление',\n 'autoRefresh.disable': 'Отключить автообновление',\n },\n 'documentMarkdown': {\n 'viewer.label': 'Markdown',\n 'code.copy': 'Копировать',\n 'code.copied': 'Скопировано',\n 'footnotes': 'Сноски',\n },\n 'sidebarPdf': {\n 'title': 'PDF',\n 'pageImage': 'Страница PDF {page}',\n 'loading': 'Отрисовка документа…',\n 'rendering': 'Отрисовка страницы…',\n 'failed': 'Не удалось показать PDF: {message}',\n 'password': 'Этот PDF защищён паролем; предпросмотр файлов с паролем не поддерживается.',\n 'workerFailed': 'Процесс отрисовки PDF прервался. Повторите попытку.',\n 'unsupported': 'Для предпросмотра PDF нужен полный файл.',\n 'retry': 'Повторить',\n 'zoomControls': 'Управление масштабом',\n 'zoomMenu': 'Выбрать масштаб',\n 'zoomOut': 'Уменьшить',\n 'zoomIn': 'Увеличить',\n 'zoomFitWidth': 'По ширине',\n 'zoomValue': '{percent}%',\n },\n 'sidebarTerminal': {\n 'recoveryFailed': 'Не удалось восстановить терминал: {message}',\n 'retryRecovery': 'Повторить восстановление терминала',\n 'shell': 'Выбрать shell',\n 'shellLoading': 'Чтение списка shell…',\n 'shellEmpty': 'Нет доступных shell',\n 'description': 'Выполнять команды в рабочей папке сессии',\n 'title': 'Терминал',\n 'new': 'Новый терминал',\n 'loading': 'Чтение окружения терминала…',\n 'creating': 'Запуск…',\n 'connecting': 'Подключение…',\n 'disconnected': 'Соединение разорвано.',\n 'reconnect': 'Переподключиться',\n 'readonly': 'Эта страница сейчас только для чтения.',\n 'control': 'Взять управление',\n 'closed': 'Терминал закрыт.',\n 'exited': 'Процесс завершился ({code})',\n 'failed': 'Ошибка терминала: {message}',\n 'rename': 'Имя терминала',\n 'unavailable': 'Недоступно',\n 'retry': 'Повторить',\n 'cleanupFailed': 'Не удалось завершить терминал «{title}»: {message}',\n 'missingTerminal': 'Этот терминал больше не существует. Создайте новый.',\n 'inputFull': 'Буфер ввода заполнен. Переподключитесь и повторите.',\n 'attachmentEnded': 'Соединение с терминалом завершено. Переподключитесь, чтобы продолжить.',\n 'invalidOutput': 'Не удалось получить изображение терминала. Переподключитесь, чтобы восстановить его.',\n 'terminalLimit': 'Достигнут предел числа терминалов. Закройте ненужные и повторите. Завершённые терминалы тоже учитываются.',\n 'shortcut.noSession': 'Сначала выберите сессию',\n },\n 'settings.agentLoop': {\n 'title': 'Цикл агента',\n 'description': 'Управляет тем, как агент распределяет вызовы инструментов.',\n 'maxParallel': 'Параллельные вызовы инструментов',\n 'maxParallelHint': 'Верхний предел одновременно выполняемых параллельно безопасных вызовов в пределах одного шага.',\n 'overridden': 'Переопределено',\n 'reset': 'Сбросить к значению по умолчанию',\n 'readOnly': 'В этой сборке настройки хранятся только для чтения.',\n 'unavailable': 'Этот плагин не загружен, поэтому сейчас его нельзя настроить.',\n 'save': 'Сохранить',\n 'saving': 'Сохранение…',\n 'saveFailed': 'Сборка не приняла эти значения; они оставлены для исправления.',\n 'invalidNumber': 'Введите число или оставьте поле пустым, чтобы использовать значение по умолчанию.',\n },\n 'settings.shell': {\n 'title': 'Командная оболочка',\n 'description': 'Ограничивает время работы каждой команды и объём её вывода.',\n 'timeoutMs': 'Тайм-аут команды (мс)',\n 'timeoutMsHint': 'Сколько может выполняться одна команда, прежде чем будет завершена.',\n 'maxOutputBytes': 'Лимит вывода на поток (байт)',\n 'maxOutputBytesHint': 'Вывод сверх лимита сохраняется во временный файл, а не теряется.',\n 'overridden': 'Переопределено',\n 'reset': 'Сбросить к значению по умолчанию',\n 'readOnly': 'В этой сборке настройки хранятся только для чтения.',\n 'unavailable': 'Этот плагин не загружен, поэтому сейчас его нельзя настроить.',\n 'save': 'Сохранить',\n 'saving': 'Сохранение…',\n 'saveFailed': 'Сборка не приняла эти значения; они оставлены для исправления.',\n 'invalidNumber': 'Введите число или оставьте поле пустым, чтобы использовать значение по умолчанию.',\n },\n 'settings.webSearch': {\n 'title': 'Веб-поиск',\n 'description': 'Настройка поискового провайдера DeepSeek.',\n 'apiKey': 'API-ключ',\n 'apiKeyHint': 'Хранится вне файла настроек. Оставьте пустым, чтобы сохранить текущий ключ.',\n 'apiKeySet': 'Ключ настроен.',\n 'apiKeyUnset': 'Ключ не настроен; поиск недоступен, пока он не будет добавлен.',\n 'baseUrl': 'Эндпоинт',\n 'baseUrlHint': 'Оставьте пустым, чтобы использовать адрес провайдера по умолчанию.',\n 'maxUses': 'Максимум поисков за запрос',\n 'maxUsesHint': 'Сколько раз один запрос может искать, прежде чем должен дать ответ.',\n 'overridden': 'Переопределено',\n 'reset': 'Сбросить к значению по умолчанию',\n 'readOnly': 'В этой сборке настройки хранятся только для чтения.',\n 'unavailable': 'Этот плагин не загружен, поэтому сейчас его нельзя настроить.',\n 'save': 'Сохранить',\n 'saving': 'Сохранение…',\n 'saveFailed': 'Сборка не приняла эти значения; они оставлены для исправления.',\n 'invalidNumber': 'Введите число или оставьте поле пустым, чтобы использовать значение по умолчанию.',\n },\n 'sidebarExcel': {\n 'title': 'Таблица',\n 'language': 'ru',\n 'loading': 'Отрисовка документа…',\n 'invalid': 'Не удалось открыть эту таблицу. Проверьте формат, содержимое и защиту паролем.',\n 'tooLarge': 'Книга превышает предельный размер для предпросмотра.',\n 'timeout': 'Открытие книги заняло слишком много времени. Попробуйте файл поменьше.',\n 'encoding': 'Не удалось прочитать эту кодировку. Сохраните файл в UTF-8 или UTF-16 с BOM и повторите.',\n 'formulaWarning': 'В книге есть формулы. Показанные результаты могут отсутствовать или быть неточными.',\n 'unsupportedNotice': 'Этот предпросмотр не поддерживает {features} в этой книге. Откройте её в системном приложении для полного просмотра.',\n 'charts': 'диаграммы',\n 'images': 'изображения',\n 'shapes': 'фигуры',\n 'conditionalFormatting': 'условное форматирование',\n 'featureSeparator': ', ',\n 'retry': 'Повторить',\n },\n 'sidebarOffice': {\n 'title': 'Документ Office',\n 'loading': 'Отрисовка документа…',\n 'retry': 'Повторить',\n 'viewMissingFonts': 'Нет шрифтов: {count}. Нажмите, чтобы посмотреть.',\n 'missingFontsTitle': 'Отсутствующие шрифты',\n 'missingFontsDescription': 'Эти шрифты недоступны для предпросмотра. Текст и вёрстка могут отличаться от исходного документа.',\n 'missingFontsCount': 'Шрифтов: {count}',\n 'closeDetails': 'Закрыть сведения о шрифтах',\n 'unavailable': 'Предпросмотр Office недоступен. Включите службу предпросмотра документов на компьютере с DeepSeek Harness.',\n 'invalid': 'Этот файл Office нельзя показать. Возможно, он повреждён, защищён паролем или имеет неверное расширение.',\n 'tooLarge': 'Файл Office или преобразованный PDF превышает предельный размер для предпросмотра. Уменьшите файл или измените настройки предпросмотра.',\n 'failed': 'Преобразование Office не дало пригодного PDF. Проверьте файл и повторите.',\n 'timeout': 'Преобразование Office заняло слишком много времени. Повторите попытку.',\n 'busy': 'Предпросмотр Office занят. Повторите чуть позже.',\n 'changed': 'Файл изменился во время чтения. Откройте предпросмотр заново.',\n },\n 'sidebarBrowser': {\n 'type.label': 'Браузер',\n 'guide.title': 'Браузер',\n 'guide.description': 'Просмотр веб-страниц',\n 'address.placeholder': 'Введите адрес HTTP(S)',\n 'address.changed': 'Адрес изменился',\n 'back': 'Назад',\n 'forward': 'Вперёд',\n 'reload': 'Перезагрузить',\n 'go': 'Перейти',\n 'external': 'Открыть в системном браузере',\n 'sandbox.disable': 'Отключить ограничения песочницы',\n 'sandbox.enable': 'Вернуть ограничения песочницы',\n 'sandbox.warning': 'Ограничения песочницы отключены: страница может управлять приложением верхнего уровня, а также использовать загрузки, модальные окна и блокировку ввода.',\n 'start': 'Введите адрес HTTP(S), чтобы начать просмотр',\n 'loading': 'Открытие…',\n 'restore.previous': 'Открывалось ранее',\n 'restore.action': 'Восстановить страницу',\n 'error.empty': 'Введите адрес.',\n 'error.invalid': 'Адрес неверен или слишком длинный.',\n 'error.protocol': 'Поддерживаются только адреса HTTP и HTTPS; для локальных файлов используйте предпросмотр документов.',\n 'error.credentials': 'Адрес не может содержать имя пользователя или пароль.',\n 'error.application-origin': 'Встроенный браузер не может открыть само приложение DSH.',\n 'load.failed': 'Не удалось загрузить страницу; перезагрузите её или откройте в системном браузере.',\n 'load.failed.detail': 'Не удалось загрузить страницу ({code}): {description}',\n 'address.unknown': 'Страница перешла по адресу, но этот канал не может прочитать новый URL.',\n 'shortcut.noSession': 'Сначала откройте сессию',\n },\n 'settings.subagent': {\n 'overridden': 'Переопределено',\n 'reset': 'Сбросить к значению по умолчанию',\n 'readOnly': 'В этой сборке настройки хранятся только для чтения.',\n 'unavailable': 'Этот плагин не загружен, поэтому сейчас его нельзя настроить.',\n 'save': 'Сохранить',\n 'saving': 'Сохранение…',\n 'saveFailed': 'Сборка не приняла эти значения; они оставлены для исправления.',\n 'subagentTitle': 'Субагент',\n 'subagentDescription': 'Настройка глубины рекурсии, количества и моделей субагентов.',\n 'subagentLimitsTitle': 'Ограничения',\n 'subagentMaxDepth': 'Максимальная глубина рекурсии',\n 'subagentDepthHelpLabel': 'О максимальной глубине рекурсии',\n 'subagentDepthHelp': 'Ограничивает, сколько уровней субагентов может создать агент.',\n 'subagentDepthZero': 'Отключить субагентов',\n 'subagentDepthOne': 'Только основной агент может создавать субагентов',\n 'subagentDepthOverride': 'Если инструмент задаёт собственную максимальную глубину рекурсии, приоритет у неё.',\n 'subagentMaxActive': 'Предел параллельных субагентов',\n 'subagentCapacityHelpLabel': 'О пределе параллельных субагентов',\n 'subagentCapacityHelp': 'Общее число живых субагентов под одним основным агентом на всех уровнях рекурсии. Основной агент не считается. При достижении предела новые запуски отклоняются.',\n 'subagentDepthInvalid': 'Введите целое число 0 или больше.',\n 'subagentCapacityInvalid': 'Введите целое число 1 или больше.',\n 'subagentModelSelectionTitle': 'Выбор модели',\n 'subagentModelSelectionToggle': 'Разрешить агентам выбирать модели для субагентов',\n 'subagentModelSelectionChoose': 'Если включено, агенты могут выбирать провайдера, модель и уровень рассуждения для каждого субагента из разрешённых моделей ниже. Применяется только к новым сессиям.',\n 'subagentModelSelectionAllowed': 'Модели, доступные агентам для выбора',\n 'subagentModelSelectionLoading': 'Загрузка моделей…',\n 'subagentModelSelectionLoadFailed': 'Не удалось загрузить модели.',\n 'subagentModelSelectionRetry': 'Повторить',\n 'subagentModelSelectionPartial': 'Часть провайдеров моделей не загрузилась; сохранённые выборки по-прежнему можно удалить.',\n 'subagentModelSelectionUnavailable': 'Сейчас недоступно',\n 'subagentModelSelectionUnavailableGroup': 'Сохранено, но сейчас недоступно',\n 'subagentModelSelectionEmpty': 'Ни один провайдер моделей сейчас не предлагает моделей.',\n 'subagentModelSelectionRequired': 'Перед сохранением выберите хотя бы одну модель.',\n 'subagentModelSelectionConflict': 'Настройки изменены в другом месте. Отмените черновик и повторите.',\n 'subagentModelSelectionOff': 'Субагенты используют настроенные значения по умолчанию или наследуют модель родительского агента. Сохранённые выборки моделей остаются.',\n },\n 'settings.account': {\n 'close': 'Закрыть',\n 'noResponse': 'Что-то пошло не так. Проверьте подключение к сети и попробуйте ещё раз.',\n 'addApiKey': 'Добавить API-ключ',\n 'retry': 'Войти снова',\n 'loginTitle': 'Начать',\n 'loginDescription': 'Войдите в свою учётную запись DeepSeek или добавьте API-ключ, чтобы начать. Проекты и файлы хранятся локально.',\n 'browserTitle': 'Ожидание входа',\n 'browserPrompt': 'Страница не открылась сама? ',\n 'copyLink': 'Копировать ссылку для входа',\n 'copiedLink': 'Ссылка скопирована',\n 'copyFailed': 'Не удалось скопировать',\n 'browserDescription': ', затем откройте её в браузере, чтобы завершить вход.',\n 'timeoutTitle': 'Время входа истекло',\n 'timeoutDescription': 'Войдите снова, чтобы продолжить.',\n 'failureTitle': 'Не удалось войти',\n 'platformFailed': 'Не удалось выполнить операцию. Повторите попытку.',\n 'platformRetry': 'Повторить',\n 'loading': 'Загрузка…',\n 'backToHarness': 'Вернуться в DeepSeek Harness',\n 'settings': 'Настройки',\n 'contactUs': 'Обратная связь',\n 'menu': 'Меню учётной записи',\n 'nav': 'Учётная запись',\n 'signedIn': 'Вы вошли в DeepSeek',\n 'signedOut': 'Вы не вошли',\n 'signIn': 'Войти',\n 'signOut': 'Выйти',\n 'cancel': 'Отмена',\n 'open': 'Открыть браузер',\n 'initializing': 'Начинаем вход…',\n 'waiting': 'Продолжите в браузере',\n 'completing': 'Завершаем вход…',\n 'expired': 'Вход истёк. Повторите попытку.',\n 'failed': 'Не удалось выполнить операцию. Повторите попытку.',\n 'settingsSignedOutTitle': 'Вы не вошли в DeepSeek Harness',\n 'settingsSignedOutDescription': 'Войдите в DeepSeek Harness, чтобы получить свой API-ключ',\n 'signInDescription': 'Начните работу со своей учётной записью DeepSeek.',\n 'profileUnavailable': 'Данные учётной записи пока недоступны.',\n 'balance': 'Пополненный баланс',\n 'bonusBalance': 'Начисленный баланс',\n 'balanceUnavailable': 'Посмотреть на платформе',\n 'balanceSignedOut': 'Войдите, чтобы посмотреть',\n 'accountInfo': 'Подробнее об учётной записи',\n 'more': 'Ещё',\n 'usage': 'Посмотреть расход',\n 'topUp': 'Пополнить',\n 'modelSignInRequired': 'Модель недоступна. Войдите и попробуйте снова.',\n 'sessionExpired': 'Вы вышли из учётной записи, войдите снова.',\n 'onboardingArtworkLocale': 'en',\n 'onboardingWelcome': 'Добро пожаловать в',\n 'onboardingBrand': 'DeepSeek Harness',\n 'onboardingIntroduction': 'DeepSeek Harness работает в локальной папке и использует инструменты, чтобы читать и записывать файлы на вашем компьютере. Он поможет изучить и упорядочить информацию, создать документы и таблицы, написать код, разобраться с проблемами и многое другое.',\n 'onboardingStart': 'Начать',\n 'onboardingCredit': 'Пополнить баланс',\n 'onboardingCreditDescription': 'DeepSeek Harness списывает баланс по количеству токенов, израсходованных моделями и инструментами. Пополните баланс заранее, чтобы задачи выполнялись без перебоев. Баланс расходуется только пока агент работает над задачей.',\n 'onboardingTopUp': 'Пополнить баланс',\n 'onboardingLater': 'Далее',\n 'onboardingFundedTopUp': 'Пополнить баланс',\n 'onboardingPurposePrefix': 'Что вы хотите',\n 'onboardingPurposeSuffix': '?',\n 'onboardingPurposeDescription': 'Мы подстроим интерфейс и инструменты под ваш способ работы.',\n 'onboardingOffice': 'Офисная и творческая работа',\n 'onboardingOfficeDescription': 'Редактируйте документы, систематизируйте данные, создавайте презентации и другое',\n 'onboardingDevelopment': 'Программирование и разработка',\n 'onboardingDevelopmentDescription': 'Редактируйте код, отлаживайте, выполняйте команды, управляйте файлами проекта и другое',\n 'onboardingContinue': 'Продолжить',\n 'onboardingProcess': 'Сколько подробностей показывать?',\n 'onboardingProcessDescription': 'Это влияет только на показ хода работы, а не на возможности DeepSeek Harness.',\n 'onboardingCompact': 'Только результаты',\n 'onboardingCompactDescription': 'Только результаты в чистом и простом интерфейсе',\n 'onboardingStandard': 'Ключевые детали',\n 'onboardingStandardDescription': 'Главное — результат, показываются только самые важные шаги и действия',\n 'onboardingDetailed': 'Все подробности',\n 'onboardingDetailedDescription': 'Полный ход работы — так проще отлаживать и разбираться с проблемами',\n 'onboardingEnter': 'Открыть приложение',\n 'onboardingBack': 'Назад',\n 'onboardingSkip': 'Пропустить',\n 'onboardingSkipTitle': 'Пропустить настройку?',\n 'onboardingSkipDescription': 'В любой момент можно изменить показ хода работы, производительности и расхода ресурсов, а также включить «Инструменты для кода» в «Профиль» → «Основные настройки».',\n 'onboardingKeepSetting': 'Продолжить настройку',\n 'onboardingNoCreditTitle': 'Не пополнять баланс?',\n 'onboardingNoCreditDescription': 'Без баланса DeepSeek Harness не может начинать новые задачи. Пополнить его можно позже в «Профиль» → «Учётные записи».',\n 'onboardingUnderstood': 'Понятно',\n 'onboardingGoTopUp': 'Пополнить баланс',\n 'onboardingSaveFailed': 'Не удалось сохранить настройки. Повторите попытку.',\n 'onboardingRetry': 'Повторить',\n 'onboardingLoading': 'Загрузка настроек…',\n 'contactUsSignedOut': 'Связаться с нами',\n 'signOutUnknownDescription': 'Не удалось проверить выполняющиеся задачи. Выход может прервать задачи, использующие эту учётную запись. Выйти сейчас?',\n 'signOutDescription': 'Выход не удалит данные. В эту учётную запись можно войти снова.',\n 'signOutRunningDescription': 'Сейчас выполняются задачи. Выход прервёт их. Выйти сейчас?',\n 'quotaTitle': 'Нет доступного баланса',\n 'quotaDescription': 'Без баланса DeepSeek Harness не может начать новую задачу в этой учётной записи. Пополнить баланс? Это можно сделать и позже в «Настройки» → «Учётная запись».',\n 'quotaTopUp': 'Пополнить',\n 'bonusNoticeTitle': 'Бонус начислен',\n 'bonusEmpty': 'Бонус отсутствует',\n },\n\n 'claude-code-mods': {\n 'band': 'Модификаторы Claude Code',\n 'pressing': 'Работа…',\n 'press.failed': 'Не сработала кнопка: {message}',\n 'press.stale': 'Эта кнопка относилась к предыдущему рисунку; полоса обновилась',\n },\n 'inspectorPanel': {\n 'resize': 'Изменить высоту панели NodeJS Inspector',\n 'frameTitle': 'NodeJS Inspector',\n },\n 'session-inspector': {\n 'tab.title': 'Журнал сессии',\n 'tab.description': 'Анализ сырых логов и сгруппированных сообщений чата текущей сессии на боковой панели.',\n 'view.presentation': 'Представление',\n 'view.sessionLog': 'Сырой лог',\n 'view.chatNode': 'Группа чата',\n 'picker.pick': 'Выбрать элемент в виде чата',\n 'picker.cancel': 'Отменить выбор (Esc)',\n 'picker.instructions': 'Наведите в основном чате для предпросмотра, затем щёлкните для выбора. Esc отменяет.',\n 'picker.noMatch': 'В этой таблице нет подходящей записи. Выберите другой элемент или нажмите Esc для отмены.',\n 'picker.noChat': 'Сначала откройте эту сессию в основном чате.',\n 'table.id': 'Индекс',\n 'table.type': 'Тип',\n 'filter.title': 'Фильтр по типам',\n 'filter.input': 'Ключевое слово',\n 'filter.placeholder': 'Введите фрагмент, например delta',\n 'filter.help': 'Содержит совпадение (*слово*). Enter подтверждает; Esc отменяет.',\n 'filter.candidates': 'Подсказки по типу',\n 'filter.loading': 'Ищем подсказки…',\n 'filter.failed': 'Не удалось загрузить подсказки по типу.',\n 'filter.noCandidates': 'Подсказок нет. Ключевое слово всё равно можно применить.',\n 'filter.clear': 'Очистить',\n 'filter.cancel': 'Отмена',\n 'filter.apply': 'Применить фильтр',\n 'filter.context': 'Родительский контекст подходящей записи',\n 'table.location': 'Т/С',\n 'table.time': 'Время (UTC)',\n 'table.data': 'Данные',\n 'table.older': 'Загрузить более ранние',\n 'table.loading': 'Загрузка…',\n 'table.latest': 'Следить за новыми',\n 'table.empty': 'Нет записей',\n 'table.raw': 'Сырые данные',\n 'table.rawError': 'Не удалось сериализовать эту запись. Выберите другую, чтобы продолжить.',\n 'table.resizeDetails': 'Изменить высоту панели сырых данных',\n 'table.close': 'Закрыть',\n 'table.expand': 'Развернуть потомков',\n 'table.collapse': 'Свернуть потомков',\n 'table.removed': 'Эта запись была удалена или закрыта. Выберите актуальную.',\n 'object.node': 'Узел',\n 'object.nodeData': 'Данные узла',\n 'object.group': 'Группа',\n 'object.groupData': 'Данные группы',\n 'object.turn': 'Ход',\n 'object.turnData': 'Данные хода',\n 'object.step': 'Шаг',\n 'object.stepData': 'Данные шага',\n 'object.accessor': '[Геттер/сеттер, не вычислено]',\n 'object.empty': 'Пусто',\n 'object.absent': '[Пустой слот]',\n 'object.properties': 'Другие свойства',\n 'object.more': 'Показать больше',\n 'object.navigation': 'Навигация по сырым данным',\n },\n 'pluginManager': {\n 'infoLabel': 'О плагинах',\n 'infoDescription': 'Здесь настраиваются официальные плагины, а также устанавливаются и управляются остальные. Список встроенных плагинов и их состояние — в разделе «Настройки → Встроенные плагины».',\n 'refreshError': 'Не удалось обновить. Попробуйте ещё раз.',\n 'installGitTemplateHint': 'Замените на настоящий адрес Git-репозитория.',\n 'installPathTemplateHint': 'Замените на настоящий путь к локальному каталогу плагинов.',\n 'installUpgradeNotice': 'Установленные плагины пока не обновляются автоматически. Чтобы обновить плагин, удалите его и установите новую версию. В следующих выпусках обновление станет удобнее.',\n 'sentenceSeparator': ' ',\n 'chooseAddMethod': 'Выберите способ добавления плагина',\n 'installExisting': 'Установить сторонний плагин',\n 'installExistingDescription': 'Поддерживаются npm-пакеты, Git-репозитории и локальные каталоги',\n 'sourceTitle': 'Источник',\n 'sourceSpec': 'Исходный код',\n 'sourceBuiltIn': 'Встроенный',\n 'sourceVersion': 'Текущая версия',\n 'installDoneOtherVersion': 'По политике безопасности цепочки поставок pnpm (minimumReleaseAge) версии, опубликованные недавно, не ставятся автоматически, поэтому вместо {version} установлена {installed}. Новая версия ещё не прошла этот срок ожидания и может содержать нераспознанный вредоносный код или дефекты. Если нужна версия {version}, удалите текущую и установите {exact}, чтобы запросить именно её.',\n 'installProblemShipped': 'Этот плагин входит в состав DSH; его обновят вместе с DSH',\n 'reasonIncompatibleInstall': 'Установите версию плагина, совместимую с этой сборкой DSH.',\n 'reasonIncompatibleInstalled': 'Удалите его и установите версию, совместимую с этой сборкой DSH.',\n 'panel': 'Плагины',\n 'title': 'Плагины',\n 'intro': 'Добавление плагинов и управление ими',\n 'loading': 'Чтение плагинов…',\n 'error': 'Не удалось прочитать все плагины — возможно, проблема с сетью',\n 'unavailable': 'Эта сборка работает без управляемого профиля, поэтому здесь нельзя устанавливать плагины и переключать их.',\n 'retry': 'Повторить',\n 'refresh': 'Обновить',\n 'empty': 'Пока не установлено ни одного плагина.',\n 'addPlugin': 'Добавить плагин',\n 'restartNotice': 'Изменение вступит в силу при следующем запуске',\n 'overriddenNotice': '{name} сохранён, но конфигурация с более высоким приоритетом переопределяет его, поэтому он не действует',\n 'bundlesTitle': 'Установленные',\n 'officialTitle': 'Официальные',\n 'statusProblem': 'Проблема',\n 'statusBeta': 'Экспериментально',\n 'reasonLabel': 'Причина',\n 'metadataError': 'Ошибка метаданных пакета: {error}',\n 'versionTag': 'v{version}',\n 'partsLabel': 'Компоненты',\n 'partsEmpty': 'В этом наборе плагинов нет компонентов.',\n 'partsCountTotal': 'Всего: {count}',\n 'partsCountRunning': 'Запущено: {count}',\n 'partsCountOff': 'Отключено: {count}',\n 'partOff': 'Отключён',\n 'partsCountFailed': 'Сбоев: {count}',\n 'partsFilter': 'Фильтр компонентов',\n 'partsFilterEmpty': 'Нет подходящих компонентов.',\n 'partToggle': 'Включить компонент {name}',\n 'rowPhasePending': 'Ожидание зависимостей',\n 'rowPhaseLoading': 'Загрузка',\n 'rowPhaseActive': 'Запущен',\n 'rowPhaseFailed': 'Проблема',\n 'rowPhaseUnloading': 'Отключение',\n 'enableToggle': 'Включить {name}',\n 'openDetail': 'Открыть {name}',\n 'backToList': 'Назад к плагинам',\n 'crumbRoot': 'Плагины',\n 'backToPackage': 'Назад к {name}',\n 'configureRow': 'Настроить {name}',\n 'rowStateIdle': 'Не запущен',\n 'uninstall': 'Удалить',\n 'uninstallLabel': 'Удалить {name}',\n 'installTitle': 'Добавить плагин',\n 'installDescription': 'Введите имя пакета плагина, адрес репозитория GitHub или путь к локальному каталогу.',\n 'installSpecLabel': 'Имя пакета или адрес',\n 'installSpecPlaceholder': 'например, @deepseek-ai/dsh-subagent-codex',\n 'installGuideToggle': 'Руководство по установке и примеры',\n 'installGuideHide': 'Скрыть руководство',\n 'installGuideIdTitle': 'Имя пакета',\n 'installGuideIdExample': '@deepseek-ai/dsh-subagent-codex',\n 'installGuideIdHint': 'Имя пакета плагина — это имя пакета в npm (например, dsh-xxx или @author/plugin): то, что идёт после dsh plugin add или pnpm add в команде установки из README стороннего плагина.',\n 'installGuideGitTitle': 'Адрес репозитория GitHub',\n 'installGuideGitExample': 'https://github.com/author/dsh-plugin',\n 'installGuideGitHint': 'Адрес открытого репозитория плагина на GitHub; другие хостинги Git тоже подойдут.',\n 'installGuidePathTitle': 'Локальный каталог плагина',\n 'installGuidePathExample': '/Users/name/my-plugin',\n 'installGuidePathHint': 'Абсолютный путь к каталогу плагина на этой машине — созданному здесь или скачанному.',\n 'installGuideExampleLabel': 'Пример: ',\n 'installGuideFill': 'Подставить пример',\n 'installGuideFillAria': 'Подставить пример {example}',\n 'installGuideSafety': 'Устанавливайте только те плагины, которым доверяете: они работают с вашими правами и могут повредить DeepSeek Harness или привести к утечке данных.',\n 'registryToggle': 'Реестр',\n 'registryLegend': 'Реестр npm, из которого скачивается плагин',\n 'registryDefault': 'Реестр по умолчанию',\n 'registryNpmmirror': 'Зеркало для материкового Китая',\n 'registryWithHost': '{name} ({host})',\n 'registryCustom': 'Свой адрес',\n 'registryCustomPlaceholder': 'https://npm.example.com/',\n 'registryCustomHint': 'Корпоративный или частный реестр npm; если для него нужен вход, храните учётные данные в ~/.npmrc на этой машине',\n 'registryCustomInvalid': 'Введите адрес, начинающийся с http:// или https://',\n 'registryListSeparator': ', ',\n 'installRun': 'Установить',\n 'installChecking': 'Проверка…',\n 'installProblemInvalid': 'Это не имя пакета и не адрес, которые можно установить: {reason}',\n 'installProblemInstalled': 'Этот плагин уже установлен',\n 'installProblemNotFound': 'Такой плагин не найден',\n 'installProblemNotPackage': 'Путь не существует или не является корректным пакетом плагина',\n 'installProblemNotBundle': 'Этот пакет не объявляет bundle, поэтому его нельзя установить как плагин: {reason}',\n 'installProblemNetwork': 'Не удалось связаться с реестром плагинов; проверьте сеть и повторите попытку',\n 'installProblemNetworkAll': 'Ни один реестр не ответил (проверены: {registries}); проверьте сеть и настройки прокси или смените реестр',\n 'installProblemUnknown': 'Не удалось найти плагин: {reason}',\n 'installingTitle': 'Установка плагина…',\n 'installedTitle': 'Установлен',\n 'installFailedTitle': 'Не удалось установить плагин',\n 'installEdit': 'Изменить',\n 'installEditAria': 'Вернуться к редактированию',\n 'installCancelAndEdit': 'Отменить установку и вернуться к редактированию',\n 'installApplyingCancellationError': 'Отмена не подтверждена. Установка применяется; дождитесь её результата. {reason}',\n 'installReconcile': 'Проверить состояние установки',\n 'installUnknownTitle': 'Результат установки недоступен',\n 'installUnknownDescription': 'У хоста нет активной установки с этим ID запроса. Проверьте список плагинов, прежде чем повторять.',\n 'installResultUnconfirmed': 'Результат установки не получен. Проверьте состояние установки. {reason}',\n 'installAwaitingAcceptance': 'Ожидание, пока хост примет установку. После подтверждения отмена повторится автоматически.',\n 'installBackgroundUnknown': 'Результат установки недоступен. Проверьте список плагинов.',\n 'installCancel': 'Отменить установку',\n 'installCloseCancels': 'Отменить установку и закрыть',\n 'installViewTask': 'Открыть установку',\n 'installUnconfirmedTitle': 'Состояние установки не подтверждено',\n 'installBackgroundDone': 'Установка завершена. Откройте подробности установки.',\n 'installBackgroundFailed': 'Установка не удалась. Откройте подробности установки.',\n 'installBackgroundUnconfirmed': 'Состояние установки не подтверждено. Откройте установку, чтобы увидеть подробности.',\n 'installBackgroundApplying': 'Установка применяется, и её нельзя отменить. Откройте ход установки.',\n 'installStarting': 'Подготовка установки…',\n 'installCancelling': 'Остановка установки…',\n 'installApplying': 'Применение конфигурации, подождите…',\n 'installCancelledShort': 'Отменено',\n 'installCancelled': 'Установка отменена; плагин не включён, а скачанные файлы могут остаться',\n 'installCancelUnconfirmed': 'Не подтверждено, что установка остановлена. Повторите отмену или дождитесь результата установки. {reason}',\n 'installEnableNow': 'Включить сейчас',\n 'installDetailsShow': 'Показать подробности установки',\n 'installDetailsHide': 'Скрыть подробности установки',\n 'installVersion': 'Версия {version}',\n 'installSubjectPath': 'Локальный каталог',\n 'installSubjectGit': 'Репозиторий Git',\n 'installSubjectTarball': 'Tarball',\n 'installLocation': 'Устанавливается в {dir}',\n 'installRetry': 'Повторить',\n 'installChangeRegistry': 'Сменить реестр',\n 'installAttempt': '{previous} не смог отдать пакет; повтор через {registry} (реестр {index} из {total})',\n 'installAttemptBadge': 'Попытка {index} · {registry}',\n 'installFailureNetwork': 'Не удалось подключиться к сети',\n 'installFailureNetworkAll': 'Ни один реестр не ответил (проверены: {registries}). Проверьте сеть и настройки прокси или смените реестр и повторите.',\n 'installFailureNetworkHost': 'Не удалось связаться с {host}. Адрес GitHub или ссылка .tgz не загружаются через реестр: эта машина должна иметь к ним прямой доступ или доступ через прокси. Если плагин также опубликован в npm, введите вместо этого имя его пакета.',\n 'installFailureNotFound': 'Такой плагин не найден',\n 'installFailureNoMatchingVersion': 'Нет версии, подходящей под запрос',\n 'installFailureDiskFull': 'Диск заполнен; установка остановлена',\n 'installFailurePermission': 'Нет прав на запись; плагин нельзя установить',\n 'installFailureBuildBlocked': 'Скрипты установки зависимости требуют вашего разрешения, прежде чем установка сможет продолжиться',\n 'installFailureBuildBlockedManual': 'pnpm заблокировал скрипты установки; разрешите их в allowBuilds в pnpm-workspace.yaml и повторите',\n 'installFailureIntegrity': 'Скачанный пакет не прошёл проверку целостности',\n 'installFailureTimeout': 'Время установки истекло',\n 'installFailurePnpmMissing': 'pnpm не найден, поэтому ничего нельзя установить',\n 'installFailureGeneric': 'Во время установки что-то пошло не так; что именно — видно в подробностях',\n 'terminalRunning': 'Выполняется',\n 'terminalFailed': 'Сбой',\n 'terminalDone': 'Готово',\n 'terminalCopy': 'Копировать',\n 'terminalCopied': 'Скопировано',\n 'terminalNoOutput': 'Нет вывода',\n 'terminalCollapseAria': 'Свернуть вывод',\n 'terminalCollapse': 'Свернуть',\n 'terminalExpandAria': 'Развернуть оставшиеся строки вывода ({n})',\n 'terminalExpand': '… ещё {n} строк',\n 'terminalExitCode': 'код выхода {code}',\n 'terminalSignal': 'сигнал {signal}',\n 'terminalNoExitCode': 'нет кода выхода',\n 'installDoneNothing': 'Установка завершена, новых зависимостей нет.',\n 'installDoneRestart': 'Установлено; загрузится при следующем запуске.',\n 'installDoneApproved': 'Скрипты установки разрешены для {names}',\n 'installApprovalTitle': 'Скриптам установки нужно разрешение',\n 'installApprovalDescription': 'У этих пакетов есть скрипты установки, которые pnpm не выполнил.',\n 'installApprovalConsequence': 'После разрешения скрипты выполнятся здесь с вашими правами, а разрешение сохранится в этом профиле.',\n 'installApprovalCaution': 'Разрешайте только те пакеты, которым доверяете.',\n 'installApproveAndRetry': 'Разрешить эти скрипты и повторить',\n 'installClose': 'Готово',\n 'close': 'Закрыть',\n 'cancel': 'Отмена',\n 'confirmUninstallTitle': 'Удалить «{name}»?',\n 'confirmUninstallDescription': 'То, что он предоставляет, исчезнет после удаления.',\n 'confirmUninstall': 'Удалить',\n 'failedEnable': 'Не удалось включить: {reason}',\n 'failedDisable': 'Не удалось отключить: {reason}',\n 'failedUninstall': 'Не удалось удалить: {reason}',\n 'failedRowEnable': 'Не удалось включить компонент: {reason}',\n 'failedRowDisable': 'Не удалось отключить компонент: {reason}',\n 'reasonManagementRequired': 'Он нужен для управления плагинами; его нельзя отключить или удалить.',\n 'reasonUnaddressable': 'Патч профиля не может однозначно обратиться к этому элементу.',\n 'reasonUnknownPlugin': 'Такого плагина нет.',\n 'reasonInvalidSpec': 'Введите корректное имя пакета или адрес.',\n 'reasonAmbiguousInstall': 'По изменению зависимостей нельзя определить, какой пакет был установлен.',\n 'reasonNotBundle': 'Этот пакет не объявляет bundle, поэтому им нельзя управлять как плагином.',\n 'reasonNotRemovable': 'Этот пакет не принадлежит профилю или нужен для управления плагинами.',\n 'reasonStopProfile': 'Этот профиль работает без HMR; остановите его и удалите пакет командой dsh plugin.',\n 'reasonBundleInUse': 'Другая конфигурация всё ещё использует компоненты этого bundle; сначала отключите их.',\n 'reasonStaleApproval': 'Ожидающие разрешения для скриптов изменились; запустите установку заново, чтобы их обновить.',\n 'reasonOperationError': 'Хост сообщил об ошибке.',\n 'installGithubFailedTitle': 'Не удалось получить доступ к GitHub',\n 'installGithubTimeoutTitle': 'Истекло время ожидания соединения с GitHub',\n 'installGithubFailedDescription': 'Попробуйте другой источник установки.',\n 'installUseGithubMirror': 'Использовать зеркало для материкового Китая',\n 'installPackageLabel': 'Имя пакета плагина',\n 'reasonIncompatibleVersion': '{plugin} несовместим с DSH {runtime} (требуется {peers}); его запуск может привести к сбоям или потере данных. Установите версию плагина, совместимую с этим DSH.',\n 'reasonIncompatibleVersionUnnamed': 'Этот плагин несовместим с текущей версией DSH; его запуск может привести к сбоям или потере данных.',\n 'registryOfficial': 'Официальный реестр npm',\n 'installTryAnotherWay': 'Попробовать другой способ',\n },\n 'voice-input': {\n 'dictate': 'Диктовать',\n 'setupPrompt.title': 'Настройте голосовой ввод перед записью',\n 'setupPrompt.body': 'Голосовой ввод включён. При первом использовании нужно скачать и подготовить локальные модели распознавания. Откройте сведения о плагине, чтобы оценить место на диске, память и время до начала настройки.',\n 'setupPrompt.later': 'Позже',\n 'setupPrompt.open': 'Перейти к настройке',\n 'setup.local': 'Локальные модели будут скачаны на машину с DSH. Python и компилятор не требуются.',\n 'setup.disk': 'Место на диске',\n 'setup.diskValue': 'Заложите около {gb} ГБ на модели, среду выполнения и кэш загрузок',\n 'setup.memory': 'Память',\n 'setup.memoryValue': 'Около {gb} ГБ с загруженной моделью; при распознавании может потребоваться больше',\n 'setup.time': 'Первая настройка',\n 'setup.timeValue': 'Заложите примерно {min}–{max} минут в зависимости от сети и машины',\n 'setup.estimateNote': 'Это оценки; в медленной сети может занять больше времени. Загрузки используются повторно; неактивные модели по умолчанию освобождают память.',\n 'step.check': 'Проверка локальных ресурсов',\n 'step.model': 'Подготовка модели распознавания',\n 'step.vad': 'Подготовка модели определения голоса',\n 'step.verify': 'Проверка файлов моделей',\n 'step.load': 'Загрузка {name}',\n 'stepStatus.pending': 'Не начато',\n 'stepStatus.running': 'Выполняется',\n 'stepStatus.complete': 'Завершено',\n 'stepStatus.failed': 'Ошибка',\n 'stepStatus.cancelled': 'Отменено',\n 'short.downloading': 'Загрузка',\n 'short.failed': 'Сбой настройки',\n 'retryRecording': 'Записать снова',\n 'preparationSteps': 'Этапы подготовки',\n 'prepare': 'Скачать и подготовить',\n 'retryPrepare': 'Повторить подготовку',\n 'cancelPrepare': 'Отменить подготовку',\n 'downloadProgress': 'Ход загрузки',\n 'downloadBytes': 'Загрузка: {completed} / {total} МБ, {percent}%',\n 'downloadUnknown': 'Скачано {completed} МБ',\n 'elapsed': 'Ожидание {seconds} с',\n 'preparationFailed': 'Сбой подготовки: {message}',\n 'download.network': 'Не удалось скачать {resource}: не удалось подключиться к службе загрузки.',\n 'download.dns': 'Не удалось скачать {resource}: не удалось разрешить адрес загрузки.',\n 'download.timeout': 'Время загрузки {resource} истекло.',\n 'download.certificate': 'Не удалось скачать {resource}: не удалось проверить сертификат.',\n 'download.http': 'Не удалось скачать {resource}: служба загрузки вернула HTTP {status}.',\n 'download.integrity': 'Загрузка {resource} не завершена или не прошла проверку.',\n 'download.storage': 'Не удалось сохранить {resource}: недостаточно места на диске или нет прав на запись.',\n 'download.unknown': 'Не удалось подготовить {resource}.',\n 'downloadAdvice.network': 'Проверьте, что машина с DSH имеет доступ к источнику загрузки и его службам загрузки моделей. При необходимости настройте прокси на этой машине и повторите попытку.',\n 'downloadAdvice.dns': 'Проверьте настройки DNS и прокси на машине с DSH. Убедитесь, что она может разрешить домен источника загрузки, и повторите попытку.',\n 'downloadAdvice.timeout': 'Проверьте сеть или подключение через прокси на машине с DSH и повторите позже. Проверенные скачанные файлы сохраняются.',\n 'downloadAdvice.certificate': 'Проверьте системные часы, доверенные сертификаты и настройки прокси на машине с DSH и повторите попытку.',\n 'downloadAdvice.http': 'Убедитесь, что адрес загрузки доступен и прокси может подключиться к службе загрузки, или повторите позже.',\n 'downloadAdvice.integrity': 'Повторите загрузку. Остальные завершённые и проверенные файлы сохраняются.',\n 'downloadAdvice.storage': 'Проверьте свободное место на диске и права на запись в каталог моделей на машине с DSH и повторите попытку.',\n 'downloadAdvice.unknown': 'Проверьте сеть, свободное место на диске и права на каталог моделей на машине с DSH и повторите попытку.',\n 'downloadSource': 'Источник загрузки: {source}',\n 'downloadCode': 'Код ошибки: {code}',\n 'reconnecting': 'Подключение к распознаванию речи…',\n 'preparation.unprepared': 'При первом использовании скачиваются локальные модели распознавания.',\n 'preparation.checking': 'Проверка локальных ресурсов…',\n 'preparation.loading': 'Загрузка {name}…',\n 'preparation.waking': 'Запуск локального распознавания речи…',\n 'preparation.ready': 'Локальное распознавание речи готово.',\n 'preparation.standby': 'Локальные ресурсы подготовлены. Запись запустит распознавание.',\n 'preparation.cancelled': 'Подготовка отменена. Завершённые загрузки сохраняются.',\n 'preparation.cancelling': 'Отмена подготовки…',\n 'cloudReady': 'Облачное распознавание речи готово.',\n 'discard': 'Удалить расшифровку',\n 'transcribingShort': 'Расшифровка…',\n 'wakingShort': 'Запуск…',\n 'provider': 'Служба распознавания',\n 'language': 'Язык распознавания',\n 'auto': 'Определять автоматически',\n 'zh': 'Китайский',\n 'en': 'Английский',\n 'yue': 'Кантонский',\n 'ja': 'Японский',\n 'ko': 'Корейский',\n 'start': 'Начать запись',\n 'stop': 'Остановить и расшифровать',\n 'cancel': 'Отмена',\n 'insert': 'Вставить текст',\n 'loading': 'Загрузка служб распознавания…',\n 'requesting': 'Разрешите доступ к микрофону, чтобы продолжить…',\n 'recording': 'Запись…',\n 'interrupted': 'Запись прервана. Попробуйте ещё раз.',\n 'local': 'Аудио распознаётся на машине с DSH. Если модели нужно скачать, эта машина должна иметь доступ к выбранному источнику и его файловым службам. При необходимости настройте на этой машине прокси.',\n 'cloud': 'Аудио будет отправлено в выбранную облачную службу.',\n 'empty': 'Речь не распознана',\n 'cancelled': 'Голосовой ввод отменён.',\n 'conflict': 'Черновик изменился. Расшифровка сохранена, и её можно вставить в текущую позицию курсора.',\n 'failed': 'Сбой распознавания речи: {message}',\n 'unavailable': 'Этот браузер не может записывать аудио. Используйте браузер с поддержкой микрофона.',\n 'permission': 'Доступ к микрофону запрещён. Разрешите его в настройках браузера и системы.',\n 'tooLarge': 'Запись превышает ограничение службы. Попробуйте записать короче.',\n 'sourceChoice': 'Источник загрузки моделей',\n 'sourceAuto': 'Автоматически (рекомендуется)',\n 'sourceHuggingFace': 'Hugging Face',\n 'sourceMirror': 'HF-Mirror (зеркало для Китая)',\n 'sourceAutoHelp': 'Приоритет у источника, который отвечает быстрее; если загрузка не удалась, пробуется другой.',\n 'sourceManualHelp': 'Загрузка только из выбранного источника. Проверенные загруженные файлы переиспользуются.',\n 'setupPrompt.trigger': 'Открыть настройку голосового ввода',\n 'setupPrompt.details': 'Открыть настройки голосового плагина',\n 'setupPrompt.unavailableTitle': 'Распознавание речи не готово',\n 'setupPrompt.unavailableBody': 'Откройте сведения о голосовом плагине, чтобы проверить состояние распознавания, ход подготовки или ошибки.',\n },\n 'schedule.catalog': {\n 'trigger.label': 'Напоминания',\n 'list.loading': 'Загрузка напоминаний…',\n 'list.error': 'Не удалось загрузить напоминания.',\n 'list.retry': 'Повторить',\n 'delete.action': 'Удалить',\n 'delete.pending': 'Удаление…',\n 'delete.label': 'Удалить напоминание: {title}',\n 'list.open': 'Открыть сведения о напоминании: {title}',\n 'trigger.one': '{count} напоминание',\n 'trigger.other': 'Напоминаний: {count}',\n 'list.aria': 'Активные напоминания',\n 'status.scheduled': 'По расписанию',\n 'status.overdue': 'Просрочено',\n 'list.nextRun': 'Следующий запуск',\n 'frequency.once': 'Один раз',\n 'frequency.every': 'Каждые {value} {unit}',\n 'time.locale': 'en',\n 'time.utcPrefix': 'UTC',\n 'frequency.daily': 'Каждый день в {time} ({timeZone})',\n 'frequency.dailyLocal': 'Каждый день в {time}',\n 'frequency.weekly': 'По {weekdays} в {time} ({timeZone})',\n 'frequency.weeklyLocal': 'По {weekdays} в {time}',\n 'frequency.cron': 'Cron {expression} ({timeZone})',\n 'frequency.cronLocal': 'Cron {expression}',\n 'frequency.cronRule': '{rule} ({timeZone})',\n 'cron.list.join': ', ',\n 'cron.part.join': ' ',\n 'cron.weekday.name': '{weekday}',\n 'cron.weekday.range': '{from}–{to}',\n 'cron.months': ' в {months}',\n 'cron.day.every': 'Каждый день{months}',\n 'cron.day.weekdays': '{weekdays}{months}',\n 'cron.day.monthDays': '{days} числа каждого месяца{months}',\n 'cron.day.both': '{days} числа каждого месяца или {weekdays}{months}',\n 'cron.day.bothStarred': '{days} числа каждого месяца и {weekdays}{months}',\n 'cron.hours.range': '{from}–{to}',\n 'cron.hours.list': '{hours}',\n 'cron.time.everyMinute': 'Каждую минуту',\n 'cron.time.everyMinutes': 'Каждые {step} мин',\n 'cron.time.joinedEveryMinute': 'каждую минуту',\n 'cron.time.joinedEveryMinutes': 'каждые {step} мин',\n 'cron.time.everyHour': 'Каждый час',\n 'cron.time.joinedEveryHour': 'каждый час',\n 'cron.time.everyNHours': 'Каждые {count} ч',\n 'cron.time.joinedEveryNHours': 'каждые {count} ч',\n 'cron.time.hourlyAt': 'Каждый час в минуту {minutes}',\n 'cron.time.joinedHourlyAt': 'каждый час в минуту {minutes}',\n 'cron.time.hoursEveryMinute': 'каждую минуту в часы {hours}',\n 'cron.time.hoursEveryMinutes': 'каждые {step} минут в часы {hours}',\n 'cron.time.at': 'в {times}',\n 'cron.time.hoursAt': 'в минуту {minutes} часов {hours}',\n 'frequency.weekday.join': ', ',\n 'frequency.weekday.1': 'Пн',\n 'frequency.weekday.2': 'Вт',\n 'frequency.weekday.3': 'Ср',\n 'frequency.weekday.4': 'Чт',\n 'frequency.weekday.5': 'Пт',\n 'frequency.weekday.6': 'Сб',\n 'frequency.weekday.7': 'Вс',\n 'unit.day.one': 'день',\n 'unit.day.other': 'д',\n 'unit.hour.one': 'час',\n 'unit.hour.other': 'ч',\n 'unit.minute.one': 'минута',\n 'unit.minute.other': 'мин',\n 'unit.second.one': 'секунда',\n 'unit.second.other': 'с',\n 'relative.now': 'Подходит время',\n 'relative.future': 'через {value} {unit}',\n 'relative.overdue': 'просрочено на {value} {unit}',\n 'mark.aria': 'Задач по расписанию: {count}',\n 'hover.more': 'ещё {count}',\n },\n 'schedule.manager': {\n 'timing.subagentSession': 'Эта сессия принадлежит субагенту, который не получает доставленные напоминания.',\n 'panel': 'Задачи автоматизации',\n 'title': 'Задачи автоматизации',\n 'new.action': 'Создать',\n 'list.label': 'Каталог задач',\n 'list.nextPrefix': 'Следующий запуск: ',\n 'list.loading': 'Загрузка задач…',\n 'list.error': 'Не удалось загрузить задачи.',\n 'list.retry': 'Повторить',\n 'list.empty': 'Задач пока нет. Задачи, созданные в сессиях, появятся здесь.',\n 'list.emptyInactive': 'Неактивных задач автоматизации нет',\n 'list.noMatches': 'Подходящих задач нет',\n 'search.label': 'Поиск задач',\n 'search.placeholder': 'Поиск задач автоматизации',\n 'search.clear': 'Очистить поиск',\n 'empty.action': 'Создать задачу автоматизации',\n 'statusFilter.label': 'Состояние задачи',\n 'statusFilter.all': 'Все',\n 'status.active': 'Включена',\n 'status.inactive': 'Неактивна',\n 'detail.label': 'Сведения о задаче',\n 'detail.close': 'Закрыть сведения',\n 'detail.more': 'Действия с задачей автоматизации',\n 'detail.nextRun': 'Следующий запуск',\n 'detail.tabs': 'Представления сведений о задаче',\n 'detail.rule': 'Правила',\n 'detail.records': 'Журнал запусков',\n 'delivery.empty': 'Записей о запусках пока нет',\n 'delivery.loading': 'Загрузка журнала запусков…',\n 'delivery.error': 'Не удалось загрузить журнал запусков.',\n 'delivery.notFound': 'Эта задача больше недоступна.',\n 'delivery.cursorError': 'Записи обновлены.',\n 'delivery.retry': 'Повторить',\n 'delivery.refresh': 'Обновить',\n 'delivery.loadMore': 'Показать ещё',\n 'delivery.expand': 'Развернуть',\n 'delivery.collapse': 'Свернуть',\n 'delivery.pruned': 'Более ранние записи о запусках удалены',\n 'delivery.retention': 'Правила хранения',\n 'delivery.retentionBounds': 'Каждая задача хранит до {records} записей о запусках за последние {days} дн.',\n 'delivery.retentionExplanation': 'При сохранении новой записи более старые записи сверх этих пределов удаляются автоматически. Удаление записей не останавливает задачу.',\n 'detail.name': 'Название задачи автоматизации',\n 'detail.instruction': 'Инструкция для задачи',\n 'detail.status': 'Состояние',\n 'detail.next': 'Следующий запуск',\n 'detail.frequency': 'Периодичность',\n 'detail.id': 'ID задачи',\n 'detail.session': 'Связанная сессия',\n 'detail.openSession': 'Связанная сессия: открыть исходную сессию',\n 'detail.openSessionTitle': 'Связанная сессия {title}: открыть исходную сессию',\n 'detail.sessionLoading': 'Загрузка сведений об исходной сессии.',\n 'detail.sessionArchived': 'Исходная сессия в архиве.',\n 'detail.sessionUnavailable': 'Исходная сессия недоступна.',\n 'detail.missing': 'Задача недоступна. Возможно, она удалена.',\n 'delivery.label': 'Сохранённая запись о запуске',\n 'frequency.once': 'Один раз',\n 'frequency.every': 'Каждые {value} {unit}',\n 'timing.date': 'Дата',\n 'timing.time': 'Время',\n 'timing.hour': 'Часы',\n 'timing.minute': 'Минуты',\n 'timing.second': 'Секунды',\n 'timing.prevMonth': 'Предыдущий месяц',\n 'timing.nextMonth': 'Следующий месяц',\n 'timing.zone': 'Часовой пояс',\n 'timing.zoneSearch': 'Поиск по смещению UTC, идентификатору IANA или городу',\n 'timing.zoneNoResults': 'Подходящих часовых поясов нет',\n 'timing.interval': 'Интервал повтора',\n 'timing.intervalIncrease': 'Увеличить интервал',\n 'timing.intervalDecrease': 'Уменьшить интервал',\n 'timing.unit.hour': 'ч',\n 'timing.unit.minute': 'мин',\n 'timing.unit.second': 'с',\n 'timing.intervalHint.hour': 'Не менее 1 ч. Интервал отсчитывается от создания задачи или последнего изменения правила и не зависит от часового пояса.',\n 'timing.intervalHint.minute': 'Не менее 1 мин. Интервал отсчитывается от создания задачи или последнего изменения правила и не зависит от часового пояса.',\n 'timing.intervalHint.second': 'Не менее 60 с. Интервал отсчитывается от создания задачи или последнего изменения правила и не зависит от часового пояса.',\n 'timing.zoneNoStored': 'Одноразовая задача хранит только момент срабатывания, без часового пояса. Дата и время трактуются в выбранном часовом поясе.',\n 'timing.inactive': 'Неактивные задачи доступны только для чтения, их расписание нельзя изменить.',\n 'timing.conflict': 'Задача изменилась, пока вы её редактировали. Черновик сохранён. Отмените правку и откройте задачу заново после обновления, чтобы изменить последнее правило.',\n 'timing.notFound': 'Эта задача больше недоступна. Черновик сохранён; отмените правку, чтобы закрыть редактор.',\n 'timing.invalid': 'Введите корректные дату и время или проверьте поля расписания.',\n 'timing.invalidZone': 'Введите корректный часовой пояс IANA, например Asia/Shanghai.',\n 'timing.notFuture': 'Выберите дату и время в будущем.',\n 'timing.invalidInterval': 'Введите интервал не менее 1 мин.',\n 'timing.invalidInterval.hour': 'Введите интервал не менее 1 ч.',\n 'timing.invalidInterval.minute': 'Введите интервал не менее 1 мин.',\n 'timing.invalidInterval.second': 'Введите интервал не менее 60 с.',\n 'timing.error': 'Не удалось подтвердить изменение расписания. Черновик сохранён. Проверьте задачу перед повторной попыткой.',\n 'rule.title': 'Время запуска',\n 'rule.repeat': 'Повтор',\n 'rule.weekday': 'День недели',\n 'rule.weekdayOption': 'День недели: {weekday}',\n 'rule.unsaved': 'Несохранённые изменения',\n 'rule.save': 'Сохранить изменения',\n 'rule.saving': 'Сохранение…',\n 'rule.cancel': 'Отмена',\n 'rule.invalidTitle': 'Введите название задачи длиной не более 120 символов.',\n 'rule.invalidPrompt': 'Введите инструкцию для задачи.',\n 'rule.once': 'Один раз',\n 'rule.everyMinutes': 'Каждые N минут',\n 'rule.everyHours': 'Каждые N часов',\n 'rule.everySeconds': 'Каждые N секунд',\n 'rule.daily': 'Каждый день',\n 'rule.weekdays': 'С понедельника по пятницу',\n 'rule.weekly': 'Еженедельно',\n 'rule.cron': 'Свой cron',\n 'rule.cronLabel': 'Cron-выражение',\n 'rule.cronInvalid': 'Введите cron-выражение из пяти полей, например 0 9 * * 1-5.',\n 'cronForm.frequency': 'Частота',\n 'cronForm.monthly': 'Ежемесячно',\n 'cronForm.weekly': 'Еженедельно',\n 'cronForm.daily': 'Каждый день',\n 'cronForm.dates': 'В указанные даты',\n 'cronForm.dateOption': 'День {day}',\n 'cronForm.atMinute': 'В минуту',\n 'cronForm.minuteIncrease': 'Увеличить минуту',\n 'cronForm.minuteDecrease': 'Уменьшить минуту',\n 'rule.zone.system': ' (системный)',\n 'rule.error.conflict': 'Задача изменилась до сохранения. В строке показано сохранённое правило; попробуйте ещё раз.',\n 'rule.error.notFound': 'Эта задача больше недоступна.',\n 'rule.error.unknown': 'Не удалось подтвердить обновление правила. В строке показано сохранённое правило.',\n 'delete.action': 'Удалить задачу',\n 'delete.title': 'Удалить эту задачу?',\n 'delete.description': 'Задача перестанет срабатывать, а сама она и сохранённые записи о запусках будут удалены. Исходная сессия и её сообщения сохранятся; поставленные в очередь сообщения не будут отозваны.',\n 'delete.confirm': 'Подтвердить удаление',\n 'delete.cancel': 'Отмена',\n 'delete.close': 'Закрыть подтверждение удаления',\n 'delete.pending': 'Удаление…',\n 'toast.deleted': 'Задача удалена.',\n 'toast.deleteFailed': 'Не удалось удалить задачу.',\n 'card.open': 'Открыть',\n 'card.openLabel': 'Открыть сведения о задаче: {title}',\n 'card.deleted': 'Удалена',\n 'tool.invoked': 'Вызвано: {name}',\n 'time.locale': 'en',\n 'time.utcPrefix': 'UTC',\n 'frequency.daily': 'Каждый день в {time} ({timeZone})',\n 'frequency.dailyLocal': 'Каждый день в {time}',\n 'frequency.weekly': 'По {weekdays} в {time} ({timeZone})',\n 'frequency.weeklyLocal': 'По {weekdays} в {time}',\n 'frequency.cron': 'Cron {expression} ({timeZone})',\n 'frequency.cronLocal': 'Cron {expression}',\n 'frequency.cronRule': '{rule} ({timeZone})',\n 'cron.list.join': ', ',\n 'cron.part.join': ' ',\n 'cron.weekday.name': '{weekday}',\n 'cron.weekday.range': '{from}–{to}',\n 'cron.months': ' в {months}',\n 'cron.day.every': 'Каждый день{months}',\n 'cron.day.weekdays': '{weekdays}{months}',\n 'cron.day.monthDays': '{days} числа каждого месяца{months}',\n 'cron.day.both': '{days} числа каждого месяца или {weekdays}{months}',\n 'cron.day.bothStarred': '{days} числа каждого месяца и {weekdays}{months}',\n 'cron.hours.range': '{from}–{to}',\n 'cron.hours.list': '{hours}',\n 'cron.time.everyMinute': 'Каждую минуту',\n 'cron.time.everyMinutes': 'Каждые {step} мин',\n 'cron.time.joinedEveryMinute': 'каждую минуту',\n 'cron.time.joinedEveryMinutes': 'каждые {step} мин',\n 'cron.time.everyHour': 'Каждый час',\n 'cron.time.joinedEveryHour': 'каждый час',\n 'cron.time.everyNHours': 'Каждые {count} ч',\n 'cron.time.joinedEveryNHours': 'каждые {count} ч',\n 'cron.time.hourlyAt': 'Каждый час в минуту {minutes}',\n 'cron.time.joinedHourlyAt': 'каждый час в минуту {minutes}',\n 'cron.time.hoursEveryMinute': 'каждую минуту в часы {hours}',\n 'cron.time.hoursEveryMinutes': 'Каждые {step} мин в часы {hours}',\n 'cron.time.at': 'в {times}',\n 'cron.time.hoursAt': 'в минуту {minutes} часов {hours}',\n 'frequency.weekday.join': ', ',\n 'frequency.weekday.1': 'Пн',\n 'frequency.weekday.2': 'Вт',\n 'frequency.weekday.3': 'Ср',\n 'frequency.weekday.4': 'Чт',\n 'frequency.weekday.5': 'Пт',\n 'frequency.weekday.6': 'Сб',\n 'frequency.weekday.7': 'Вс',\n 'unit.day.one': 'день',\n 'unit.day.other': 'д',\n 'unit.hour.one': 'час',\n 'unit.hour.other': 'ч',\n 'unit.minute.one': 'минута',\n 'unit.minute.other': 'мин',\n 'unit.second.one': 'секунда',\n 'unit.second.other': 'с',\n 'relative.now': 'Подходит время',\n 'relative.future': 'через {value} {unit}',\n 'relative.overdue': 'просрочено на {value} {unit}',\n },\n 'shortcuts.layout': {\n 'toggle': 'Показать или скрыть левую панель',\n },\n 'shortcuts': {\n 'edit-label': 'Изменить сочетание клавиш для «{command}»',\n 'record': 'Нажмите сочетание клавиш',\n 'record-help': 'Отпустите клавиши, чтобы сохранить. Tab переходит между действиями, Esc отменяет.',\n 'web-help': 'Сочетания для браузера: Mod+/, Mod+Shift+,, Mod+Shift+.. Mod — это Command на Mac и Ctrl на остальных системах.',\n 'unsupported-key': 'Эта клавиша не поддерживается.',\n 'reserved': 'Это сочетание зарезервировано для системных действий или редактирования текста.',\n 'modifier-required': 'В сочетании должны быть Command, Ctrl или Alt.',\n 'too-many-keys': 'Удерживайте не более двух клавиш без модификаторов. Отпустите клавиши, чтобы повторить.',\n 'macos-web-help': 'Используйте Command+/, Command+,, Command+Backslash, Control+Backquote, Command+Option+клавиша или Command+Shift+клавиша. Поддерживаются и сочетания с тремя или четырьмя разными модификаторами. Сочетания браузера или системы могут не доходить до страницы.',\n 'windows-web-help': 'Используйте Ctrl+/, Ctrl+,, Ctrl+Alt+клавиша или Ctrl+Shift+клавиша. Поддерживаются и сочетания с тремя или четырьмя разными модификаторами. Сочетания браузера или системы могут не доходить до страницы.',\n 'unsupported-browser': 'Этот браузер пока не поддерживает такое сочетание.',\n 'conflict': 'Уже занято: «{commands}»',\n 'saved': 'Изменено',\n 'clear': 'Убрать',\n 'retry-save': 'Повторить сохранение',\n 'reset': 'Вернуть по умолчанию',\n 'reset-all': 'Вернуть все значения по умолчанию',\n 'modified-count': 'изменено: {count}',\n 'reset-title': 'Вернуть все сочетания клавиш по умолчанию?',\n 'reset-description': 'Восстановятся сочетания клавиш по умолчанию для этой платформы. Все изменённые и удалённые сочетания вернутся. Другие платформы не затронуты.',\n 'cancel': 'Отмена',\n 'reset-saved': 'Сочетания клавиш по умолчанию восстановлены',\n 'close-confirmation': 'Подтверждение закрытия',\n 'reset-failed': 'Не удалось восстановить значения по умолчанию. Сочетания клавиш не изменились. Повторите попытку.',\n 'review': 'Актуальная конфигурация просмотрена',\n 'stale': 'Конфигурация сочетаний клавиш или доступные команды изменились. Проверьте актуальные привязки перед сохранением.',\n 'write-failed': 'Не удалось сохранить. Прежние сочетания клавиш и текущий черновик сохранены. Повторите попытку.',\n 'not-ready': 'Сочетания клавиш ещё не готовы. Повторите попытку.',\n 'read': 'Не удалось прочитать {location}. Проверьте права доступа, затем {reload}.',\n 'invalid': 'Конфигурация сочетаний клавиш в {location} повреждена. Сделайте резервную копию и восстановите её, затем {reload}.',\n 'future': 'Конфигурация сочетаний клавиш в {location} создана более новой версией. Обновите Harness и повторите попытку.',\n 'web-document': 'запись localStorage dsh.keybindings.v1 этого сайта',\n 'desktop-document': 'userData/keybindings.json',\n 'web-reload': 'перезагрузите страницу',\n 'desktop-reload': 'перезапустите Harness',\n 'using-defaults': 'Действуют сочетания по умолчанию.',\n 'using-accepted': 'Остаются действующими последние успешно прочитанные привязки.',\n 'native-failed': 'Не удалось перехватить запись клавиш в десктопном приложении. Выйдите из записи и повторите попытку.',\n 'global-hint': 'Открывается отовсюду',\n 'clear-search': 'Очистить поиск',\n 'title': 'Горячие клавиши',\n 'open': 'Открыть горячие клавиши',\n 'settings': 'Горячие клавиши',\n 'view': 'Изменить сочетания клавиш',\n 'description': 'Просмотр и настройка доступных сочетаний клавиш и действий ввода',\n 'search': 'Поиск сочетаний клавиш',\n 'close': 'Закрыть горячие клавиши',\n 'application': 'Приложение',\n 'input': 'Ввод сообщений',\n 'menus': 'Меню и диалоги',\n 'approval': 'Область подтверждений',\n 'unbound': 'Без сочетания клавиш',\n 'empty': 'Подходящих сочетаний нет',\n 'move': 'Переместить выделение в меню',\n 'select': 'Выбрать пункт меню',\n 'dismiss': 'Закрыть меню или верхний диалог',\n },\n}\n","/**\n * Russian screen typography for translated strings.\n *\n * The harness locale contract is a flat `Record<string, string>`, so a\n * language pack cannot reach the composed sentences a component builds from\n * several keys, and cannot ask the host to insert typography. The rendered DOM\n * is the one place where every translated string passes through, so this module\n * rewrites text nodes in place. The rules are deliberately conservative: they\n * only fire on unambiguous straight-quote and spaced-hyphen patterns, and the\n * DOM pass skips code, form fields and editable content.\n */\n\n/** Straight double quotes around a span become Russian guillemets. */\nconst QUOTED = /\"([^\"\\n]{1,200})\"/g\n\n/** A spaced hyphen between two words is an em dash in Russian typography. */\nconst SPACED_HYPHEN = /(?<=[\\p{L}\\p{N}»\\)]) - (?=[\\p{L}\\p{N}«\\(])/gu\n\n/** Three dots in running text are an ellipsis. */\nconst ELLIPSIS = /\\.{3}(?=\\s|$)/g\n\n/** A digit followed by a lowercase letter keeps a non-breaking space. */\nconst NUMBER_UNIT = /(\\d) ([а-яё]{1,24})(?![а-яё])/giu\n\n/** Non-breaking space keeps a number attached to a short unit-like token. */\nconst NUMBER_SYMBOL = /(\\d) ([%°₽$€£]|кб|КБ|МБ|ГБ)(?=\\s|$)/giu\n\n/** Guillemets, em dash, ellipsis, and non-breaking spaces in running text. */\nexport function applyRussianTypography(text: string): string {\n return text\n .replace(QUOTED, '«$1»')\n .replace(SPACED_HYPHEN, ' — ')\n .replace(ELLIPSIS, '…')\n .replace(NUMBER_UNIT, '$1\\u00A0$2')\n .replace(NUMBER_SYMBOL, '$1\\u00A0$2')\n}\n\n/** Elements whose text is code, data or user input and must stay verbatim. */\nconst SKIP_SELECTOR = [\n 'code', 'pre', 'kbd', 'samp', 'var', 'textarea', 'input', 'select', 'option',\n '[contenteditable]:not([contenteditable=\"false\"])',\n '[data-typography=\"off\"]',\n].join(',')\n\n/** Text nodes already rewritten, so a later pass leaves them alone. */\nconst processed = new WeakSet<Text>()\n\n/** Whether the node sits inside content that must not be rewritten. */\nfunction isSkipped(node: Node): boolean {\n const element = node.nodeType === Node.ELEMENT_NODE\n ? (node as Element)\n : (node as Text).parentElement\n return element === null || element.closest(SKIP_SELECTOR) !== null\n}\n\nfunction rewriteNode(node: Node): void {\n if (node.nodeType === Node.TEXT_NODE) {\n if (processed.has(node as Text)) return\n processed.add(node as Text)\n const before = (node as Text).data\n const after = applyRussianTypography(before)\n if (after !== before) (node as Text).data = after\n return\n }\n if (node.nodeType !== Node.ELEMENT_NODE || isSkipped(node)) return\n for (const child of (node as Element).childNodes) rewriteNode(child)\n}\n\n/**\n * Start the typography pass on a document and keep it current as the app\n * renders. Returns a disposer that stops observing.\n *\n * @param doc - document whose body carries the rendered interface.\n * @returns disposer removing the observer.\n */\nexport function startRussianTypography(doc: Document): () => void {\n const root = doc.body\n if (root === null) return () => {}\n rewriteNode(root)\n const observer = new MutationObserver(records => {\n for (const record of records) {\n if (record.type === 'characterData') {\n if (isSkipped(record.target)) continue\n rewriteNode(record.target)\n continue\n }\n for (const added of record.addedNodes) rewriteNode(added)\n }\n })\n observer.observe(root, { childList: true, characterData: true, subtree: true })\n return () => observer.disconnect()\n}\n","/**\n * Russian (ru) language pack, browser half. Registers `ru` as an external\n * selectable language and contributes a `ru` dictionary for every client\n * locale namespace, following the language-pack pattern from\n * `@deepseek-ai/dsh-client-locale` (addLanguage + per-locale register).\n */\nimport type { Context as ClientContext } from '@deepseek-ai/cordis'\nimport type {} from '@deepseek-ai/dsh-client-locale/client'\nimport { RU_DICTS, RU_LABEL } from './dicts.ts'\nimport { startRussianTypography } from './typography.ts'\n\n/** Required service: the locale registry that owns languages and dictionaries. */\nexport const inject = ['locale']\n\n/**\n * Client plugin body: add `ru` to the selectable language catalog, register\n * a ru dictionary for every namespace this pack contributes, and start the\n * Russian typography pass. Registration is an effect, so the contributed\n * language, dictionaries and the typography observer are torn down with this\n * plugin's fiber.\n * @param ctx - client root context.\n */\nexport function apply(ctx: ClientContext): void {\n ctx.effect(\n () => ctx.locale.addLanguage({ id: 'ru', label: RU_LABEL, fallback: 'en' }),\n 'locale-ru: language',\n )\n for (const [ns, dict] of Object.entries(RU_DICTS)) {\n ctx.effect(() => ctx.locale.register(ns, 'ru', dict), `locale-ru: ${ns} dictionary`)\n }\n ctx.effect(\n () => startRussianTypography(document),\n 'locale-ru: typography',\n )\n}\n"],"mappings":"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"}