@ragnoryok1/dsh-client-locale-ru 0.2.9 → 0.2.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -5064,6 +5064,7 @@ window.__ModuleLoader__.load({
5064
5064
  "term.title": "Терминал {id}"
5065
5065
  },
5066
5066
  "univer": {
5067
+ "collapse": "Свернуть просмотр",
5067
5068
  "dock.close": "Закрыть",
5068
5069
  "dock.currentVersion": "Текущая версия",
5069
5070
  "dock.discard": "Отклонить",
@@ -5094,11 +5095,13 @@ window.__ModuleLoader__.load({
5094
5095
  "dock.unit.conflict": "Конфликт",
5095
5096
  "dock.unit.deleted": "У",
5096
5097
  "dock.unit.modified": "И",
5098
+ "expand": "Развернуть просмотр",
5097
5099
  "gateway.checking": "Проверяем Univer Gateway…",
5098
5100
  "gateway.failed": "Univer Gateway недоступен — нажмите, чтобы повторить",
5099
5101
  "gateway.running": "Univer Gateway работает",
5100
5102
  "gateway.starting": "Запускаем Univer Gateway…",
5101
5103
  "gateway.stopped": "Univer Gateway остановлен — нажмите, чтобы запустить",
5104
+ "refresh": "Обновить",
5102
5105
  "settings.autoOpenLivePreview": "Открывать живой просмотр автоматически",
5103
5106
  "settings.autoOpenLivePreviewHint": "Показывать плавающий просмотр, пока агент правит документ. Карточки проверки в разговоре остаются доступны и при выключенном параметре.",
5104
5107
  "settings.conversationReviewCards": "Показывать карточки проверки в разговоре",
@@ -5112,6 +5115,7 @@ window.__ModuleLoader__.load({
5112
5115
  "settings.saveFailed": "Не удалось сохранить. Повторите попытку.",
5113
5116
  "settings.saving": "Сохраняем…",
5114
5117
  "settings.title": "Univer Office",
5118
+ "title": "Просмотр Univer",
5115
5119
  "viewer.missing": "Этого файла больше нет в рабочей области текущей сессии"
5116
5120
  },
5117
5121
  "web-ui-plugins": { "title": "Веб-плагины" },
@@ -6616,6 +6620,2593 @@ window.__ModuleLoader__.load({
6616
6620
  "failed": "Не удалось переключить директиву — нет соединения",
6617
6621
  "switching": "Переключение…",
6618
6622
  "title": "Переключение личной директивы"
6623
+ },
6624
+ "betterSidebar": {
6625
+ "addPluginsBrowseMore": "Больше плагинов на GitHub (тема: dsh-better-sidebar)",
6626
+ "addPluginsEmpty": "Подборки плагинов пока нет — опубликуйте свой под темой на GitHub",
6627
+ "addPluginsNoMatch": "Подходящих плагинов нет",
6628
+ "addPluginsRecommended": "Рекомендуемые плагины",
6629
+ "addPluginsSearch": "Поиск по названию или описанию плагина…",
6630
+ "addPluginsTabCard": "Плагины для вкладок",
6631
+ "addPluginsTabCardDesc": "Регистрация новой страницы боковой панели",
6632
+ "addPluginsTabDesc": "Страницы боковой панели (вкладки) можно расширять плагинами. Плагины регистрируются через службу ctx.betterSidebar; нажатие «Установить» копирует команду установки — вставьте её в терминал, где находится ваш профиль DSH, и выполните.",
6633
+ "addPluginsViewerCard": "Плагины для предпросмотра",
6634
+ "addPluginsViewerCardDesc": "Регистрация предпросмотра для типа файлов",
6635
+ "addPluginsViewerDesc": "Предпросмотр файлов можно расширять плагинами. Плагины регистрируются через службу ctx.betterSidebar; нажатие «Установить» копирует команду установки — вставьте её в терминал, где находится ваш профиль DSH, и выполните.",
6636
+ "addToConversation": "Добавить в беседу",
6637
+ "archiveToolMissing": "В этой системе нет команды архивирования (ни zip, ни tar), поэтому выделение нельзя упаковать для скачивания",
6638
+ "binary": "Двоичный файл, предпросмотр недоступен",
6639
+ "binaryNoPreview": "Предпросмотр этого типа файлов недоступен",
6640
+ "branch": "Ветка",
6641
+ "brokenSymlink": "Битая символическая ссылка",
6642
+ "browser": "Браузер",
6643
+ "browserBack": "Назад",
6644
+ "browserBlockedLoopback": "Заблокировано: локальные и внутренние адреса здесь не открываются",
6645
+ "browserBlockedScheme": "Заблокировано: разрешены только URL по http/https",
6646
+ "browserEmbedAnyway": "Всё равно загрузить",
6647
+ "browserEmbedBlocked": "{host} запретил встраивание",
6648
+ "browserEmbedBlockedDesc": "Сайт запрещает показ внутри других страниц (X-Frame-Options / frame-ancestors), поэтому он не загрузится в боковой панели. Откройте его напрямую в браузере.",
6649
+ "browserForward": "Вперёд",
6650
+ "browserGo": "Перейти",
6651
+ "browserInvalid": "Некорректный URL",
6652
+ "browserOpenExternal": "Открыть в браузере",
6653
+ "browserPlaceholder": "Введите URL, например example.com",
6654
+ "browserStart": "Введите URL, чтобы начать просмотр (режим песочницы)",
6655
+ "cancel": "Отмена",
6656
+ "catalogLoadFailed": "Не удалось загрузить веток: {count}",
6657
+ "changes": "Git",
6658
+ "changesClean": "В рабочем дереве нет изменений",
6659
+ "changesClosePreview": "Закрыть предпросмотр",
6660
+ "changesContentTab": "Содержимое",
6661
+ "changesContext": "контекст",
6662
+ "changesDiffTab": "Различия",
6663
+ "changesEdit": "Правка",
6664
+ "changesError": "ошибка",
6665
+ "changesFilterAll": "Все",
6666
+ "changesFilterEmpty": "Операций такого вида нет",
6667
+ "changesFold": "{count} строк… нажмите, чтобы развернуть",
6668
+ "changesFoldLoading": "Разворачиваем…",
6669
+ "changesFoldUnavailable": "Контекст недоступен",
6670
+ "changesGitLens": "Git",
6671
+ "changesHtmlRaw": "Исходный код",
6672
+ "changesHtmlRender": "Разметка",
6673
+ "changesLoadError": "Записи файлов сессии сейчас недоступны",
6674
+ "changesMdRaw": "Исходный код",
6675
+ "changesMdReading": "Чтение",
6676
+ "changesNewFile": "Новый файл",
6677
+ "changesNoCommit": "Коммит не выбран",
6678
+ "changesNoContent": "Здесь показывать нечего",
6679
+ "changesOpenDiffTab": "Открыть во вкладке различий",
6680
+ "changesOpGone": "Этой операции больше нет в журнале сессии",
6681
+ "changesPriorUnknown": "Предыдущее содержимое находится за пределами загруженного окна; показано как целиком добавленное",
6682
+ "changesRead": "Чтение",
6683
+ "changesReadNoDiff": "У чтения нет различий",
6684
+ "changesRedactBanner": "Скрыто",
6685
+ "changesRedactOff": "Скрытие выключено: содержимое файла показывается дословно; нажмите, чтобы включить",
6686
+ "changesRedactOffLabel": "Скрытие выключено",
6687
+ "changesRedactOn": "Скрытие включено: секреты показываются как [СКРЫТО]; нажмите, чтобы выключить (на свой страх и риск)",
6688
+ "changesRedactOnLabel": "Скрытие",
6689
+ "changesResizePreview": "Изменить размер предпросмотра",
6690
+ "changesRunning": "выполняется",
6691
+ "changesSessionEmpty": "В этой сессии пока нет операций с файлами",
6692
+ "changesSessionLens": "Сессия",
6693
+ "changesStageFailed": "Не удалось проиндексировать: {message}",
6694
+ "changesWrite": "Запись",
6695
+ "checkoutError": "Не удалось переключить ветку",
6696
+ "cherryPickCommit": "Перенести коммит (cherry-pick)",
6697
+ "cherryPickDesc": "Применить изменения из «{subject}» к текущей ветке.",
6698
+ "cherryPickTitle": "Перенос коммита (cherry-pick)",
6699
+ "clearSelection": "Снять выделение",
6700
+ "close": "Закрыть",
6701
+ "closeAllTabs": "Закрыть все вкладки",
6702
+ "closeLeftTabs": "Закрыть вкладки слева",
6703
+ "closeOtherTabs": "Закрыть остальные вкладки",
6704
+ "closeRightTabs": "Закрыть вкладки справа",
6705
+ "closeUnsavedConfirm": "В этом файле есть несохранённые изменения. Закрытие вкладки удалит их. Продолжить?",
6706
+ "codeBlockTitle": "Блок кода",
6707
+ "codeBlockUnwrap": "Не переносить строки",
6708
+ "codeBlockWrap": "Переносить строки",
6709
+ "collapseBottomPanel": "Свернуть нижнюю панель",
6710
+ "commit": "Коммит",
6711
+ "commitModelCurrent": "Текущая: {route}",
6712
+ "commitModelDefaultNote": "по умолчанию",
6713
+ "commitModelDesc": "Выберите модель, которая пишет сообщения коммитов; по умолчанию она следует за моделью текущей беседы.",
6714
+ "commitModelEmpty": "Модели не найдены (введите провайдер/модель выше)",
6715
+ "commitModelFollow": "Следовать за беседой",
6716
+ "commitModelInvalid": "используйте форму провайдер/модель",
6717
+ "commitModelRecentNote": "используется здесь",
6718
+ "commitModelSearchPlaceholder": "Поиск: введите провайдер/модель",
6719
+ "commitModelTitle": "Модель для сообщений коммита",
6720
+ "commitModelUnavailable": "в этом развёртывании нет службы моделей; доступно только следование",
6721
+ "commitPlaceholder": "Сообщение ({shortcut} — коммит в «{branch}»)",
6722
+ "committingMessage": "Создаём коммит…",
6723
+ "contextDiagnostics": "Диагностика контекста",
6724
+ "contextDiagnosticsDismiss": "Скрыть",
6725
+ "contextDiagnosticsFailed": "Не удалось открыть диагностику контекста для «{label}»",
6726
+ "contextDiagnosticsNavigation": "Не удалось найти эту беседу",
6727
+ "contextDiagnosticsOpenFailed": "Страницу открыть не удалось",
6728
+ "contextDiagnosticsTarget": "Текущая сессия",
6729
+ "contextDiagnosticsTimeout": "Время ожидания истекло — попробуйте снова",
6730
+ "contextDiagnosticsUnavailable": "Страница «Context» плагина dsh-context недоступна (плагин не установлен или не зарегистрирован)",
6731
+ "copied": "Скопировано",
6732
+ "copy": "Копировать",
6733
+ "copyAbsolute": "Копировать абсолютный путь",
6734
+ "copyFullHash": "Копировать полный хеш",
6735
+ "copyInstall": "Копировать команду установки",
6736
+ "copyPaths": "Копировать пути",
6737
+ "copyRelative": "Копировать относительный путь",
6738
+ "copyShortHash": "Копировать короткий хеш",
6739
+ "copySubject": "Копировать тему",
6740
+ "delete": "Удалить",
6741
+ "deleteDescDir": "Каталог и всё его содержимое будут удалены безвозвратно. Отменить это нельзя.",
6742
+ "deleteDescFile": "Файл будет удалён безвозвратно. Отменить это нельзя.",
6743
+ "deleteSelected": "Удалить выбранные",
6744
+ "deleteSelectedDesc": "Эти файлы и папки будут удалены безвозвратно. Отменить это нельзя.",
6745
+ "deleteSelectedTitle": "Удалить выбранные элементы ({count})?",
6746
+ "deleteTitle": "Удалить «{name}»?",
6747
+ "diffAdded": "Добавлено",
6748
+ "diffBinary": "Двоичный",
6749
+ "diffDeleted": "Удалено",
6750
+ "diffEmpty": "Текстовых изменений нет",
6751
+ "diffExpand": "Показать ещё {count} строк",
6752
+ "diffLoadError": "Не удалось загрузить различия",
6753
+ "diffRenamed": "Переименовано",
6754
+ "discard": "Отменить изменения",
6755
+ "discardDesc": "Это отменит изменения рабочего дерева в «{path}» (восстановить их будет нельзя).",
6756
+ "discardTitle": "Отменить изменения",
6757
+ "disconnected": "Терминал отключён, переподключаемся…",
6758
+ "dismiss": "Скрыть",
6759
+ "download": "Скачать",
6760
+ "downloadToView": "Скачать, чтобы посмотреть",
6761
+ "edit": "Изменить",
6762
+ "editor": "Редактор",
6763
+ "editorEmptyHint": "Выберите файл на панели дерева или в поле пути выше, чтобы начать предпросмотр",
6764
+ "editorExplorer": "Как открываются файлы",
6765
+ "editorExplorerDesc": "Управляет тем, как открываются файлы",
6766
+ "editorExplorerMerged": "В одном окне",
6767
+ "editorExplorerMergedDesc": "Файлы сменяют друг друга в том же окне; новые окна открываются с деревом",
6768
+ "editorExplorerSplit": "В отдельных окнах",
6769
+ "editorExplorerSplitDesc": "Окна без пути — это отдельный проводник (только дерево); каждый файл открывается в своём окне (дерево закреплено, по умолчанию закрыто)",
6770
+ "editorPathPlaceholder": "Путь к файлу (относительно каталога сессии или абсолютный), Enter — открыть",
6771
+ "editorSearchNoResults": "Подходящих файлов нет",
6772
+ "editorSearchPlaceholder": "Поиск файлов по названию…",
6773
+ "editorSearchTruncated": "Слишком много результатов — показан частичный список",
6774
+ "editorTreeToggle": "Панель дерева файлов",
6775
+ "error": "Не удалось загрузить",
6776
+ "exited": "Процесс терминала завершился",
6777
+ "expandBottomPanel": "Развернуть нижнюю панель",
6778
+ "explorer": "Проводник",
6779
+ "explorerExclude": "Шаблоны исключений",
6780
+ "explorerExcludeAdd": "Добавить",
6781
+ "explorerExcludeDesc": "Исключить подходящие записи из дерева файлов и из поиска целиком (в стиле VS Code files.exclude; подстановочные знаки «*» и «?», паттерн с **/ в начале соответствует любой вложенности); исключённые записи не мешают сворачиванию по хлебным крошкам",
6782
+ "explorerExcludePlaceholder": "Добавьте шаблон, например node_modules, *.log, **/.git",
6783
+ "explorerExcludeRemove": "Убрать",
6784
+ "files": "Файлы",
6785
+ "filesSelected": "Выбрано: {count}",
6786
+ "filesTruncated": "В этой папке слишком много записей; показаны только первые",
6787
+ "generateCommitMessage": "Создать сообщение коммита",
6788
+ "generateCommitMessageWith": "Создать сообщение коммита (с помощью {model})",
6789
+ "generatingCommitMessage": "Создаём сообщение коммита…",
6790
+ "gitBranchesUnavailable": "Ветки недоступны",
6791
+ "gitChanges": "Изменения",
6792
+ "gitDetached": "Отсоединённый HEAD",
6793
+ "gitGraph": "Граф",
6794
+ "gitMergeChanges": "Слить изменения",
6795
+ "gitMoreActions": "Другие действия",
6796
+ "gitNoUpstream": "Нет верхней ветки",
6797
+ "gitRepository": "Репозиторий",
6798
+ "gitStagedChanges": "Проиндексированные изменения",
6799
+ "gitStatusAdded": "Добавлен",
6800
+ "gitStatusConflict": "Конфликт",
6801
+ "gitStatusDeleted": "Удалён",
6802
+ "gitStatusModified": "Изменён",
6803
+ "gitStatusRenamed": "Переименован",
6804
+ "gitStatusUntracked": "Не отслеживается",
6805
+ "gitSync": "Синхронизировать изменения",
6806
+ "gitSyncUnavailable": "Синхронизация недоступна",
6807
+ "graphAllBranches": "Все ветки",
6808
+ "graphBranchFilter": "Фильтр по веткам",
6809
+ "graphDetails": "Сведения о коммите",
6810
+ "graphEmpty": "Коммитов нет",
6811
+ "graphLoadError": "Не удалось загрузить историю коммитов",
6812
+ "graphLoadMore": "Загрузить ещё",
6813
+ "graphParents": "Родители",
6814
+ "graphStale": "История изменилась. Обновите, чтобы продолжить.",
6815
+ "guideDescBrowser": "Встроенный браузер, который может перехватывать ссылки из беседы",
6816
+ "guideDescFiles": "Просмотр дерева рабочей области; нажмите на файл, чтобы показать предпросмотр или изменить его",
6817
+ "guideDescGit": "Изменения Git и правки файлов этой сессии на одной вкладке",
6818
+ "guideDescSidechat": "Отдельная ветка продолжения, наследующая контекст этой сессии",
6819
+ "guideDescSubagent": "Граф Workflow, доска командных задач и фоновые задачи — в реальном времени",
6820
+ "guideDescTerminal": "Настоящая оболочка (xterm + pty) с переподключением",
6821
+ "history": "История",
6822
+ "htmlNoSandboxWarning": "Песочница выключена: этот HTML работает с полными правами интерфейса (включите её снова в настройках)",
6823
+ "jobCopied": "Скопировано",
6824
+ "jobCopyOutput": "Копировать вывод",
6825
+ "jobDragHint": "Перетащите, чтобы переместить",
6826
+ "jobDurationHours": "{hours} ч {minutes} мин",
6827
+ "jobDurationMinutes": "{minutes} мин {seconds} с",
6828
+ "jobDurationSeconds": "{seconds} с",
6829
+ "jobFollowTail": "Следить за новыми",
6830
+ "jobKill": "Завершить",
6831
+ "jobKillConfirm": "Нажмите ещё раз, чтобы подтвердить завершение",
6832
+ "jobKillError": "Не удалось завершить",
6833
+ "jobNoOutput": "Вывода пока нет",
6834
+ "jobNotReadYet": "Ожидание, пока модель прочитает эту задачу; её вывод появится здесь, когда модель выполнит job_output",
6835
+ "jobOutputError": "Не удалось прочитать вывод",
6836
+ "jobOutputTruncated": "Вывод обрезан",
6837
+ "jobs": "Фоновые задачи",
6838
+ "jobsAutoCollapsed": "Свёрнуто автоматически (много агентов)",
6839
+ "jobsCount": "Фоновых задач: {count}",
6840
+ "jobsCountRunning": "Фоновых задач: {count} · выполняется: {running}",
6841
+ "jobStatusCompleted": "Завершено",
6842
+ "jobStatusFailed": "Ошибка",
6843
+ "jobStatusKilled": "Прервано",
6844
+ "jobStatusRunning": "Выполняется",
6845
+ "jobStatusStopping": "Останавливается",
6846
+ "jobViewOutput": "Посмотреть вывод",
6847
+ "jsonCollapseNode": "Свернуть",
6848
+ "jsonCopyButtonTitle": "Копировать: {action}",
6849
+ "jsonCopyCompactJson": "Копировать как компактный JSON",
6850
+ "jsonCopyFailed": "Не удалось скопировать",
6851
+ "jsonCopyPath": "Копировать путь",
6852
+ "jsonCopyPrettyJson": "Копировать как форматированный JSON",
6853
+ "jsonExpandNode": "Развернуть",
6854
+ "jsonlInvalidRecord": "Эта строка не является корректным JSON",
6855
+ "jsonlRecordRange": "Записи {from}–{to}",
6856
+ "largeFileEmpty": "(пустой файл)",
6857
+ "loadAll": "Загрузить все",
6858
+ "loadAllProgress": "Загрузка: {loaded} / {total}",
6859
+ "loading": "Загрузка…",
6860
+ "loadMore": "Загрузить ещё",
6861
+ "mermaidError": "Не удалось отрисовать Mermaid",
6862
+ "mermaidZoomHint": "Прокрутка — масштаб · перетаскивание — сдвиг · Esc — закрыть",
6863
+ "mermaidZoomIn": "Приблизить",
6864
+ "mermaidZoomOut": "Отдалить",
6865
+ "mermaidZoomReset": "Сбросить",
6866
+ "newFile": "Новый файл",
6867
+ "newFileExists": "Файл с таким именем уже есть",
6868
+ "newFileInvalid": "Недопустимое имя файла",
6869
+ "newFilePlaceholder": "Имя файла",
6870
+ "newFolder": "Новая папка",
6871
+ "newFolderInvalid": "Недопустимое имя папки",
6872
+ "newFolderPlaceholder": "Имя папки",
6873
+ "newTab": "Новая вкладка",
6874
+ "noSession": "Выберите беседу, чтобы пользоваться боковой панелью",
6875
+ "notRepo": "Этот каталог не является репозиторием Git",
6876
+ "openEditor": "Открыть редактор",
6877
+ "openFileNewTab": "Открыть в новой вкладке",
6878
+ "openFileSide": "Открыть сбоку",
6879
+ "openInAppDefault": "Открыть приложением по умолчанию",
6880
+ "openInAppEmpty": "Открыть его нечем",
6881
+ "openInAppFailed": "Не удалось открыть: {path}",
6882
+ "openPlugin": "Открыть",
6883
+ "openWithCursor": "Cursor",
6884
+ "openWithExplorer": "Файловый менеджер",
6885
+ "openWithMenu": "Открыть с помощью",
6886
+ "openWithSettingsAdd": "Добавить",
6887
+ "openWithSettingsCustomDesc": "Название + шаблон URL (подстановка {path}) + признак семейства VSCode; в удалённом режиме открыть удалённый путь могут только редакторы семейства VSCode",
6888
+ "openWithSettingsCustomTitle": "Свои редакторы",
6889
+ "openWithSettingsFamily": "Семейство VSCode",
6890
+ "openWithSettingsFamilyDesc": "Этот редактор понимает формат URL VSCode (поддерживает открытие по SSH)",
6891
+ "openWithSettingsInvalidHint": "Редакторы без названия или с шаблоном без {path} / scheme:// не показываются в меню",
6892
+ "openWithSettingsName": "Название",
6893
+ "openWithSettingsRemove": "Убрать",
6894
+ "openWithSettingsSshDesc": "Пусто — локальная рабочая область; с user@host или псевдонимом SSH редакторы семейства VSCode переключаются на протокол vscode-remote/ssh-remote, а файловый менеджер, Zed и свои редакторы вне семейства VSCode скрываются из меню",
6895
+ "openWithSettingsSshPlaceholder": "user@host или псевдоним SSH",
6896
+ "openWithSettingsSshTitle": "Удалённый узел SSH",
6897
+ "openWithSettingsTemplate": "например cursor://file/{path}",
6898
+ "openWithSshSuffix": " (SSH)",
6899
+ "openWithVscode": "VS Code",
6900
+ "openWithZed": "Zed",
6901
+ "pagedLineRange": "Строки {from}–{to}",
6902
+ "parent": "Родительский каталог",
6903
+ "pinAgentTerminal": "Закрепить терминал агента",
6904
+ "pinOpenWith": "Закрепить в меню",
6905
+ "pinTerminal": "Закрепить терминал",
6906
+ "pinToGlobal": "Закрепить глобально",
6907
+ "pinToWorkspace": "Закрепить в рабочей области",
6908
+ "pluginAgentPersonaDesc": "Персоны системного промпта по рабочим областям или сессиям: одна персона может охватывать несколько каталогов рабочих областей и несколько сессий, сопоставляться точно, по префиксу, по подстроке или по регулярному выражению, побеждает самая специфичная, а одну персону можно отметить как используемую по умолчанию; управление ведётся со страницы настроек и вкладки «Персоны» в беседе, изменения вступают в силу со следующего сообщения",
6909
+ "pluginAgentPersonaName": "dsh-agent-persona Персоны",
6910
+ "pluginAudioDesc": "Встроенный предпросмотр аудио (.mp3/.wav/.flac/.ogg/.m4a/.aac/.opus) для редактора better-sidebar: масштабируемый плеер волновой формы (перемотка по щелчку и перетаскиванию, цикл A-B, переключение каналов), а также живой спектр и спектрограмма всего файла — собственный медиамаршрут поддерживает HTTP Range, поэтому перемотка работает для файлов любого размера",
6911
+ "pluginAudioName": "Предпросмотр аудио",
6912
+ "pluginBetterOverleafDesc": "Вкладка Overleaf для better-sidebar: вход прямо в браузере через CDP (поддерживается сторонний Chromium), список проектов и переключение между ними, локальные зеркала Git в <workspace>/overleaf/, двусторонняя синхронизация Git с откатом на API только для чтения и предпросмотр файлов через рабочую среду боковой панели",
6913
+ "pluginBetterOverleafName": "dsh-better-overleaf Вкладка Overleaf",
6914
+ "pluginBilingualReaderDesc": "Чтение PDF со статьями в боковой панели DSH: встроенная отрисовка PDF, выделите текст, чтобы перевести его с помощью LLM с учётом контекста, при этом полностью изолированно от основной беседы — это только помощь для чтения",
6915
+ "pluginBilingualReaderName": "dsh-bilingual-reader Двуязычное чтение",
6916
+ "pluginCodeNavDesc": "Навигатор предпросмотра кода: определяет язык по типу файла и подсвечивает синтаксис, показывает структуру символов (фильтры по классам, методам и переменным + переход в один клик) и ищет по файлу (подсветка всех совпадений, предыдущее и следующее, с учётом регистра) — перехватывает предпросмотр файлов кода в редакторе better-sidebar",
6917
+ "pluginCodeNavName": "Навигатор предпросмотра кода",
6918
+ "pluginDevGitGraphDesc": "Вкладка с графом коммитов, повторяющая vscode-git-graph: подключается как встроенная вкладка better-sidebar с автоматической привязкой к рабочей области сессии, с полным набором git-команд (checkout/merge/rebase/push/tag/stash), отслеживанием светлой и тёмной темы и просмотром различий по файлу через встроенную вкладку DiffTab; сначала нужно установить dsh-better-sidebar",
6919
+ "pluginDocsPanelDesc": "Глобальные документы в боковой панели DSH: читайте свои заметки в Markdown из любой рабочей области — список файлов, оглавление, открытие в Chrome / VS Code и кнопки копирования; каталог документов настраивается (по умолчанию ~/.dsh/docs)",
6920
+ "pluginDocsPanelName": "dsh-docs-panel Глобальные документы",
6921
+ "pluginDshMemoryDeltaDesc": "Память между сессиями, которая подставляет только изменившееся — ровно ничего, если ничего не изменилось, — с напоминаниями о дате пересмотра, поиском по релевантности и вкладкой в боковой панели.",
6922
+ "pluginDshMemoryDeltaName": "dsh-memory-delta Память",
6923
+ "pluginEgoBrowserDesc": "Браузер агента для DeepSeek Harness: 32 инструмента ego_* управляют настоящим Chromium, а встроенная вкладка боковой панели «ego browser» показывает вживую каждую страницу, которую открывает агент — можно щёлкать, перетаскивать и печатать, чтобы перехватить управление. Вкладка регистрируется автоматически, если доступен better-sidebar, иначе используется всплывающий пузырь",
6924
+ "pluginEgoBrowserName": "ego-browser Браузер агента",
6925
+ "pluginFileTraceDesc": "Записывает каждый файл, который модель читает, пишет или изменяет; сгруппированный список с содержимым и различиями по строкам, режим чтения Markdown и скрытие секретов; отдельное всплывающее окно без better-sidebar",
6926
+ "pluginFileTraceName": "dsh-file-trace Отслеживание файлов",
6927
+ "pluginFlowglassDesc": "Живой граф потока сессии с тремя дорожками для пользователя, ассистента и вызовов инструментов, а также с группами параллельных веток, ветками субагентов, детализацией и живым статусом; регистрирует встроенную вкладку Flowglass, если установлен better-sidebar, и сохраняет отдельную панель как запасной вариант",
6928
+ "pluginFlowglassName": "dsh-flowglass Flowglass",
6929
+ "pluginGitForgeDesc": "Вкладка Git Forge: библиотека аккаунтов GitHub/Gitea (и других площадок) + права по проектам + строгая политика push; токены остаются в локальных секретах (никогда не попадают в контекст модели); инструмент GitForge только для чтения и помощник агента с учётными данными HTTPS",
6930
+ "pluginGitForgeName": "dsh-git-forge Учётные данные Git",
6931
+ "pluginGithubWorkbenchDesc": "Вкладка GitHub Workbench: дерево удалённого репозитория + Issues / Pull requests / Actions с полной поддержкой записи — создание Issue/PR, комментарии, правки, закрытие и переоткрытие, слияние squash·merge·rebase (с усиленным подтверждением), перезапуск и отмена CI; переключатель репозиториев сам выводит доступные репозитории и ищет публичные; без better-sidebar работает как отдельная панель справа",
6932
+ "pluginGithubWorkbenchName": "dsh-github-workbench GitHub Workbench",
6933
+ "pluginIdeGitDesc": "Вкладка Git для better-sidebar: дерево веток (значки ahead/behind, метка рабочего дерева), граф коммитов с фильтрами по тексту, ветке, автору, дате и пути, различия по строкам для каждого файла, список изменений и поле коммита, а также merge, rebase, cherry-pick, reset, stash и теги; разрушительные действия сначала подтверждаются, а удаления и отмены можно обратить. Без better-sidebar плагин регистрируется в правой боковой панели DSH, поэтому работает и сам по себе",
6934
+ "pluginIdeGitName": "dsh-ide-git Окно инструментов Git",
6935
+ "pluginMdExportDesc": "Добавляет кнопку «Экспорт» на панель инструментов Markdown в better-sidebar: одним нажатием текущий .md отрисовывается в самостоятельный HTML (таблицы, блоки кода и диаграммы Mermaid встраиваются, оформление соответствует теме предпросмотра) и сохраняется рядом с .md либо экспортируется в PDF через окно печати",
6936
+ "pluginMdExportName": "Экспорт Markdown",
6937
+ "pluginMnemeDesc": "Движок памяти между сессиями: фоновая консолидация autoDream, сворачивание сессий и профиль пользователя; SQLite и зеркала в Markdown, которые можно править вручную, полностью офлайн и приватно. Регистрирует вкладку «Библиотека памяти» (представления: воспоминания, сущности, статус, настройки), если доступен better-sidebar, и сохраняет отдельную панель боковой панели как запасной вариант",
6938
+ "pluginMnemeName": "dsh-mneme Библиотека памяти",
6939
+ "pluginNotLoaded": "Плагин не загружен; вкладка недоступна:",
6940
+ "pluginOfficeDesc": "Предпросмотр документов Office (.docx / .xlsx / .pptx) для редактора better-sidebar: тяжёлые библиотеки отрисовки Office остаются вне основного пакета",
6941
+ "pluginOfficeName": "Предпросмотр Office",
6942
+ "pluginSentinelDesc": "Пробуждение агента по условиям: датчики файлов, процессов, портов, HTTP, команд и вебхуков будят спящие сессии при выполнении условий; регистрирует вкладку «Sentinel» с общей таблицей наблюдения",
6943
+ "pluginSentinelName": "dsh-sentinel Система пробуждения",
6944
+ "pluginServerDeckDesc": "Панель карточек серверов: по карточке на каждый узел с онлайн-статусом, ОС, временем работы и загрузкой CPU, памяти и диска с задержкой; нажатие на карточку открывает интерактивный терминал xterm.js; импорт ~/.ssh/config в одно нажатие (псевдонимы хостингов Git пропускаются автоматически). Регистрирует встроенную вкладку «Серверы», если установлен better-sidebar, и сохраняет отдельную панель как запасной вариант",
6945
+ "pluginServerDeckName": "dsh-server-deck Панель серверов",
6946
+ "pluginSidebarQaDesc": "Выделить и спросить: выделите текст беседы → задайте вопрос в правой панели → появится отдельная сессия продолжения (❓уточняющий вопрос) в той же рабочей области; быстрая модель без размышлений сжимает основной контекст и подставляет его вместе с цитатой, не прерывая основную беседу. Вопросы вложены друг в друга, продолжаются и архивируются",
6947
+ "pluginSidebarQaName": "dsh-sidebar-qa Выделить и спросить",
6948
+ "pluginSidenoteDesc": "Боковая беседа в духе Codex + заметки к выделенному: ответвите текущую сессию в постоянную боковую панель (архивируется вне списка сессий, несколько экземпляров, команда /side, переживает перезагрузку, модель следует за основной сессией); выделите текст ассистента → нумерованная метка и редактор заметок → чип «N заметок» отправится вместе со следующим сообщением, либо задайте вопрос прямо в боковой беседе",
6949
+ "pluginSidenoteName": "dsh-sidenote Боковая беседа",
6950
+ "pluginSshTunnelDesc": "Вкладка SSH-туннеля: список нескольких узлов + права по проектам + локальные секреты; инструмент SSHManager (стратегии exec/SFTP/сессия); интерактивный терминал по центру и SFTP в две панели",
6951
+ "pluginSshTunnelName": "dsh-ssh-tunnel SSH-туннель",
6952
+ "pluginSuhuangScrollDesc": "Подключите локальный Suhuang Scroll Runtime к настройкам DSH и better-sidebar для конфигурации моделей, проверки соединения и постоянного управления оценкой; нужны Suhuang Scroll Runtime и плагин dsh-better-sidebar",
6953
+ "pluginSuhuangScrollName": "dsh-suhuang-scroll Suhuang Scroll",
6954
+ "pluginTurnOutlineDesc": "Сверните сессию в раунды пользователя (ввод + шаги инструментов + вывод) и нажмите любой шаг, чтобы вернуться к его точному месту в беседе — без вызовов LLM, только чтение",
6955
+ "pluginTurnOutlineName": "dsh-turn-outline Схема хода",
6956
+ "pluginTylinaDesc": "Редактор документов Typst, использующий рабочую область текущей сессии, с WYSIWYG-вёрсткой статей, отчётов, экзаменационных материалов, резюме, диаграмм, плакатов, нот и слайдов с экспортом в PPTX",
6957
+ "pluginTylinaName": "dsh-tylina Редактор документов Typst",
6958
+ "pluginVideoPreviewDesc": "Встроенный предпросмотр видео (.mp4/.webm/.mov/.mkv/.avi и т. д.) для редактора better-sidebar, работающий через отдельный маршрут хоста /video с поддержкой HTTP Range (206) — перемотка работает, а воспроизведение начинается до загрузки файла целиком",
6959
+ "pluginVideoPreviewName": "Предпросмотр видео",
6960
+ "preview": "Предпросмотр",
6961
+ "previewOnlyNotice": "Файл слишком большой ({size}) — доступен только постраничный предпросмотр; правка доступна до {limit}",
6962
+ "previewRowLimit": "Предпросмотр ограничен числом строк: {rows} — остальное скачайте",
6963
+ "produced": "Создано",
6964
+ "pull": "Получить",
6965
+ "pullError": "Не удалось получить",
6966
+ "push": "Отправить",
6967
+ "pushError": "Не удалось отправить",
6968
+ "referenceFile": "@file",
6969
+ "refresh": "Обновить",
6970
+ "refreshUnsavedConfirm": "Файл изменился на диске. Обновление отменит несохранённые правки. Продолжить?",
6971
+ "rename": "Переименовать",
6972
+ "renameInvalid": "Имя не может быть пустым или содержать разделители пути.",
6973
+ "retry": "Повторить",
6974
+ "revealInFileManager": "Показать в файловом менеджере",
6975
+ "revealTabInFileManager": "Показать в файловом менеджере",
6976
+ "revertCommit": "Отменить коммит",
6977
+ "revertDesc": "Создать новый коммит в текущей ветке, отменяющий «{subject}».",
6978
+ "revertTitle": "Отмена коммита",
6979
+ "sandboxRestore": "Вернуть песочницу",
6980
+ "sandboxStatusOn": "Режим песочницы: вкл. · страницы не могут обращаться к данным интерфейса и локальным файлам; вход на сайты и сторонние cookie могут не работать",
6981
+ "sandboxUnlock": "Временно отключить (небезопасно)",
6982
+ "save": "Сохранить",
6983
+ "saveConflict": "Файл изменился на диске после загрузки. Сохранение остановлено; ваши правки остались в редакторе.",
6984
+ "saveConflictReload": "Перезагрузить с диска",
6985
+ "saved": "Сохранено",
6986
+ "saveFailed": "Не удалось сохранить",
6987
+ "searchAll": "все",
6988
+ "searchCurrentMatch": "текущее совпадение",
6989
+ "searchFind": "Найти",
6990
+ "searchGo": "перейти",
6991
+ "searchGoToLine": "Перейти к строке",
6992
+ "searchMatchCase": "учёт регистра",
6993
+ "searchNext": "далее",
6994
+ "searchOnLine": "в строке",
6995
+ "searchPrevious": "назад",
6996
+ "searchRegexp": "регулярное выражение",
6997
+ "searchReplace": "Заменить",
6998
+ "searchReplaceAll": "заменить все",
6999
+ "searchReplacedMatches": "заменено $ совпадений",
7000
+ "searchReplacedMatchOnLine": "заменено совпадений в строке $",
7001
+ "searchWholeWord": "по слову",
7002
+ "settingsBottomTerminalDesc": "Когда нижняя панель впервые за сессию разворачивается, в ней пытается открыться новая вкладка терминала (лимит терминалов по-прежнему действует; включено по умолчанию)",
7003
+ "settingsBottomTerminalTitle": "Автоматически открывать терминал при первом разворачивании нижней панели",
7004
+ "settingsBrowserLoopbackDesc": "Список разрешённых петлевых адресов через запятую (например, localhost:5174 или 127.0.0.1:8080), которые может посещать браузер боковой панели; пустое значение по умолчанию блокирует все локальные адреса. Песочница по-прежнему действует — страницы не могут читать данные интерфейса",
7005
+ "settingsBrowserLoopbackPlaceholder": "например, localhost:5174, 127.0.0.1:8080",
7006
+ "settingsBrowserLoopbackTitle": "Разрешённые локальные адреса",
7007
+ "settingsBrowserSandboxDesc": "При выключенной песочнице любой посещённый сайт работает с тем же источником, что и интерфейс: он может читать данные сессии и действовать от имени вашей сессии. Включайте только для полностью доверенных сайтов",
7008
+ "settingsBrowserSandboxTitle": "Отключать песочницу браузера (небезопасно)",
7009
+ "settingsConflict": "Настройка изменилась в другом окне — повторите попытку",
7010
+ "settingsCustomCssPlaceholder": "/* например, переключите нижнюю панель на моноширинный шрифт */n[data-dsh-bottom-panel] {n font-family: var(--dsw-font-mono);n}",
7011
+ "settingsCustomCssTitle": "Свой CSS",
7012
+ "settingsDone": "Готово",
7013
+ "settingsEditorGitGutterDesc": "Подкрашивать колонку номеров строк редактора кода для незакоммиченных изменений и показывать при наведении авторство этой строки (автор, время и сводку коммита); в выключенном режиме все метки скрыты",
7014
+ "settingsEditorGitGutterTitle": "Метки незакоммиченных изменений в редакторе",
7015
+ "settingsFontFamilyDesc": "Свой шрифт терминала (стек CSS font-family вида «JetBrains Mono», monospace; оставьте пустым, чтобы использовать моноширинный шрифт темы)",
7016
+ "settingsFontFamilyPlaceholder": "«JetBrains Mono», monospace",
7017
+ "settingsFontFamilyTitle": "Шрифт терминала",
7018
+ "settingsFontSizeDesc": "Размер шрифта терминала в px (9–32, по умолчанию 13)",
7019
+ "settingsFontSizeTitle": "Размер шрифта терминала",
7020
+ "settingsGeneralTitle": "Общие",
7021
+ "settingsHtmlDefaultUnsafeDesc": "Если включено, каждый новый предпросмотр HTML открывается без песочницы (тот же источник, что и у интерфейса — он может читать файлы сессии и вызывать внутренние API); в строке состояния по-прежнему есть возврат в одно нажатие",
7022
+ "settingsHtmlDefaultUnsafeTitle": "Открывать предпросмотр HTML без песочницы по умолчанию (небезопасно)",
7023
+ "settingsHtmlSandboxDesc": "При выключенной песочнице предпросматриваемый HTML работает с тем же источником, что и интерфейс: он может читать файлы сессии, локальное хранилище и вызывать внутренние API. Включайте только для полностью доверенных файлов",
7024
+ "settingsHtmlSandboxTitle": "Отключать песочницу предпросмотра HTML (небезопасно)",
7025
+ "settingsIntro": "Настройте, что показывает боковая карточка и как она себя ведёт",
7026
+ "settingsJobsDesc": "Когда для текущего диалога появляется новая фоновая задача, страница «Задачи» создаётся в боковой карточке и помечается точкой непрочитанного (срабатывает на каждой новой задаче); боковая карточка, уже развёрнутая на другой странице, остаётся нетронутой и не переключается — нажмите на точку, чтобы перейти туда; на широких экранах боковая карточка тоже разворачивается, а узкие полноэкранные панели принудительно не открываются; выключите, чтобы не создавать её автоматически",
7027
+ "settingsJobsTitle": "Автоматически активировать страницу «Задачи» при новой фоновой задаче",
7028
+ "settingsMobileNoAutoOpenDesc": "На телефоне или узком экране новый субагент или фоновая задача больше не переключают на страницу «Задачи» сами (её по-прежнему можно открыть вручную)",
7029
+ "settingsMobileNoAutoOpenTitle": "Не открывать автоматически на узких экранах",
7030
+ "settingsMobileTitle": "Мобильный",
7031
+ "settingsMobileTreeDesc": "На телефоне или узком экране страница «Задачи» открывается обычным деревом вместо графа workflow; переключатель внутри страницы всё равно меняет вид на лету",
7032
+ "settingsMobileTreeTitle": "По умолчанию показывать страницу «Задачи» деревом",
7033
+ "settingsNav": "Боковая карточка",
7034
+ "settingsOpenToolsDesc": "Если включено, модель может сама открывать файлы, папки и страницы HTTP(S) в боковой панели через инструмент sidebar_open (по умолчанию выключено)",
7035
+ "settingsOpenToolsTitle": "Добавлять инструмент sidebar_open для модели",
7036
+ "settingsOpenWithPluginDesc": "По умолчанию собственные цели плагина (файловый менеджер / VS Code / Cursor / Zed / пользовательские редакторы, удалённые хосты по SSH) показываются только тогда, когда хост не сообщает о локальном связанном приложении; включите, чтобы оставить и те, и другие рядом",
7037
+ "settingsOpenWithPluginTitle": "Всегда показывать собственные цели «Открыть с помощью» плагина",
7038
+ "settingsPopup": "Настройки функции",
7039
+ "settingsPopupDesc": "Настройте связанные параметры для {feature}",
7040
+ "settingsSaveFailed": "Не удалось сохранить",
7041
+ "settingsShellArgsDesc": "Явные аргументы оболочки, разделённые пробелом; если они заданы, полностью заменяют значения по умолчанию (тот же контракт, что и у yaml shellArgs)",
7042
+ "settingsShellArgsPlaceholder": "например, -l (пусто = по умолчанию)",
7043
+ "settingsShellArgsTitle": "Аргументы оболочки",
7044
+ "settingsShellDesc": "Оболочка, запускаемая для терминалов интерфейса и модели (полный путь или просто имя исполняемого файла). Пустое значение оставляет прежний порядок: yaml config.shell → $SHELL / оболочка входа / Windows powershell.exe. Применяется к терминалам, открытым позже",
7045
+ "settingsShellPlaceholder": "например, /bin/zsh (пусто = авто)",
7046
+ "settingsShellTitle": "Путь к оболочке",
7047
+ "settingsSubagentDesc": "Когда текущий диалог порождает нового субагента, страница «Задачи» создаётся в боковой карточке и помечается точкой непрочитанного; боковая карточка, уже развёрнутая на другой странице, остаётся нетронутой и не переключается — нажмите на точку, чтобы перейти туда; на широких экранах боковая карточка тоже разворачивается, а узкие полноэкранные панели принудительно не открываются; выключите, чтобы не создавать её автоматически",
7048
+ "settingsSubagentTitle": "Автоматически активировать страницу «Задачи» при появлении субагента",
7049
+ "settingsTabsTitle": "Содержимое боковой панели",
7050
+ "settingsToolsDesc": "Если включено, модель может создавать терминалы боковой панели и управлять ими через восемь инструментов terminal_* (по умолчанию выключено)",
7051
+ "settingsToolsTitle": "Добавлять инструменты terminal_* для модели",
7052
+ "settingsViewerCatchAll": "Любой файл",
7053
+ "settingsViewersTitle": "Просмотр файлов",
7054
+ "settingsViewModeDesc": "Как страница «Задачи» отображается при открытии (переключатель внутри страницы всё равно меняет вид на лету)",
7055
+ "settingsViewModeGraph": "Граф workflow",
7056
+ "settingsViewModeGraphDesc": "Слойный граф узлов с масштабированием и перемещением",
7057
+ "settingsViewModeTitle": "Вид страницы «Задачи» по умолчанию",
7058
+ "settingsViewModeTree": "Дерево",
7059
+ "settingsViewModeTreeDesc": "Классическое дерево с отступами, управляется с клавиатуры",
7060
+ "showInFolder": "Показать в папке",
7061
+ "sideChat": "Боковой чат (бета)",
7062
+ "sideChatArchive": "Архивировать этот побочный диалог (найдёте его снова через «Показать архивные» в списке сессий)",
7063
+ "sideChatArchiveRunning": "Это обсуждение выполняется — остановите его перед архивированием",
7064
+ "sideChatBlockCollapse": "Свернуть",
7065
+ "sideChatBlockCollapseAria": "Свернуть",
7066
+ "sideChatBlockCommandLine": "Строка команды {line}",
7067
+ "sideChatBlockDone": "Готово",
7068
+ "sideChatBlockExitCode": "Код выхода {code}",
7069
+ "sideChatBlockExpand": "Показать скрытые строки: {hidden}",
7070
+ "sideChatBlockExpandAria": "Показать ещё строк: {hidden}",
7071
+ "sideChatBlockFailed": "Ошибка",
7072
+ "sideChatBlockNoExitCode": "Завершился без кода выхода",
7073
+ "sideChatBlockNoOutput": "(нет вывода)",
7074
+ "sideChatBlockRunning": "Выполняется",
7075
+ "sideChatBlockSignal": "Убит сигналом: {signal}",
7076
+ "sideChatBlockWindow": "Строк показано: {shown} из {total}",
7077
+ "sideChatCancelTitle": "Прервать выполняющийся ход (работа в очереди сохраняется)",
7078
+ "sideChatComposerPlaceholder": "Задайте уточняющий вопрос…",
7079
+ "sideChatConnConnecting": "Переподключение…",
7080
+ "sideChatConnDisconnected": "Соединение потеряно, переподключиться",
7081
+ "sideChatConnReconnectAction": "Переподключиться",
7082
+ "sideChatConnRecovered": "Соединение восстановлено",
7083
+ "sideChatConnRestartAction": "Перезапустить соединение",
7084
+ "sideChatCreating": "Создаём побочный диалог…",
7085
+ "sideChatDequeue": "Убрать из очереди",
7086
+ "sideChatEmpty": "Побочных диалогов нет",
7087
+ "sideChatEmptyDesc": "Каждый побочный диалог — отдельная вкладка в полосе вкладок: он наследует контекст текущей сессии и никогда не попадает в основной диалог",
7088
+ "sideChatError": "Ошибка бокового чата: {message}",
7089
+ "sideChatFirstPlaceholder": "Задайте первый вопрос — контекст наследуется…",
7090
+ "sideChatInjection": "Контекст внедрён",
7091
+ "sideChatModel": "Модель",
7092
+ "sideChatModelInherit": "Наследовать модель основного диалога (каталог моделей недоступен)",
7093
+ "sideChatNew": "Новое обсуждение",
7094
+ "sideChatNoTurn": "Сохранение доступно после первого завершённого хода",
7095
+ "sideChatPendingDrop": "Последний без ответа уточняющий вопрос не попадёт в сохранённую сессию",
7096
+ "sideChatQueued": "В очереди",
7097
+ "sideChatReasoning": "Глубина размышления",
7098
+ "sideChatRetry": "Повторить",
7099
+ "sideChatRunError": "Запуск не удался: {message}",
7100
+ "sideChatSave": "Сохранить как новую сессию",
7101
+ "sideChatSaved": "Сохранено как новая сессия",
7102
+ "sideChatSaveTitle": "Перевести это обсуждение в сессию верхнего уровня в основном списке сессий",
7103
+ "sideChatSend": "Отправить",
7104
+ "sideChatSending": "Отправляем…",
7105
+ "sideChatThink": "Размышление",
7106
+ "sideChatThinking": "Погружаемся…",
7107
+ "sideChatThreads": "Сменить обсуждение / новое",
7108
+ "sideChatTurnUsage": "Ввод {input} ток · Вывод {output} ток",
7109
+ "sideChatUntitled": "Новое обсуждение",
7110
+ "sort": "Сортировка",
7111
+ "sortByName": "Сортировать по имени",
7112
+ "sortByType": "Сортировать по типу",
7113
+ "sortFoldersFirst": "Сначала папки",
7114
+ "stage": "Добавить в индекс",
7115
+ "stageAll": "Добавить всё в индекс",
7116
+ "staged": "В индексе",
7117
+ "statusTruncated": "Слишком много изменений: показаны первые 2 000 записей",
7118
+ "subagent": "Задачи",
7119
+ "subagentCount": "Субагентов: {count}",
7120
+ "subagentCountRunning": "Субагентов: {count} · выполняется: {running}",
7121
+ "subagentEmpty": "Субагентов нет",
7122
+ "subagentEmptyDesc": "Здесь появятся субагенты, созданные основным агентом",
7123
+ "subagentInactive": "Неактивен",
7124
+ "subagentMainAgent": "Основной агент",
7125
+ "subagentModeContinuable": "Можно продолжить",
7126
+ "subagentModeOneShot": "Одноразовый",
7127
+ "subagentThinking": "Думаем…",
7128
+ "suggestCommitEmpty": "Нет изменений для описания",
7129
+ "suggestCommitError": "Не удалось составить сообщение коммита",
7130
+ "tabUnread": "Появилась новая страница, которую вы не открывали",
7131
+ "tasksFoldCollapse": "Свернуть завершённые узлы",
7132
+ "tasksFoldCompleted": "✓ Завершено: {count}",
7133
+ "tasksFoldExpand": "Развернуть завершённые узлы",
7134
+ "tasksFoldExpandShort": "Развернуть",
7135
+ "tasksFoldIdle": "Простаивающих: {count}",
7136
+ "tasksFoldIdleGroup": "Ожидающих: {count}",
7137
+ "tasksFoldOne": "Свернуть в завершённые",
7138
+ "tasksKindSubagent": "Субагент",
7139
+ "tasksKindTeammate": "Участник команды",
7140
+ "tasksKindWorkflow": "Workflow",
7141
+ "tasksNodeDetail": "Подробности узла",
7142
+ "tasksNodeDuration": "Длительность",
7143
+ "tasksNodeJump": "Открыть журнал",
7144
+ "tasksNodeMode": "Режим",
7145
+ "tasksNodeModel": "Модель",
7146
+ "tasksNodeOpenMain": "Открыть в главном окне",
7147
+ "tasksNodeState": "Состояние",
7148
+ "tasksNodeTasks": "Общие задачи",
7149
+ "tasksNodeTeamRole": "Роль в команде",
7150
+ "tasksNodeTokens": "Токены",
7151
+ "tasksStateDone": "Готово",
7152
+ "tasksStateError": "Ошибка",
7153
+ "tasksStateIdle": "Простаивает",
7154
+ "tasksStateProvisioning": "Подготовка",
7155
+ "tasksStateRunning": "Выполняется",
7156
+ "tasksTreeCollapseAll": "Свернуть всё",
7157
+ "tasksTreeCollapseRow": "Свернуть потомков",
7158
+ "tasksTreeExpandAll": "Развернуть всё",
7159
+ "tasksTreeExpandRow": "Развернуть потомков",
7160
+ "tasksViewGraph": "Граф workflow",
7161
+ "tasksViewSwitchToGraph": "Переключиться на граф workflow",
7162
+ "tasksViewSwitchToTree": "Переключиться на дерево",
7163
+ "tasksViewTree": "Дерево",
7164
+ "tasksZoomFit": "По размеру холста",
7165
+ "tasksZoomIn": "Приблизить",
7166
+ "tasksZoomOut": "Отдалить",
7167
+ "taskWindowCreate": "Новая задача",
7168
+ "taskWindowDetail": "Подробности задачи",
7169
+ "teamBoard": "Доска командных задач",
7170
+ "teamChip": "Команда: участников — {members}, задач — {tasks}",
7171
+ "teamFilterAll": "Все",
7172
+ "teamTaskActions": "Действия с задачей",
7173
+ "teamTaskBlocked": "Заблокирована",
7174
+ "teamTaskBlockedBy": "Блокирует",
7175
+ "teamTaskCancel": "Отмена",
7176
+ "teamTaskClaim": "Взять",
7177
+ "teamTaskComplete": "Завершить",
7178
+ "teamTaskCompleted": "Завершена",
7179
+ "teamTaskConflict": "Задача изменилась в другом месте; данные обновлены",
7180
+ "teamTaskCreate": "Новая задача",
7181
+ "teamTaskDelete": "Удалить",
7182
+ "teamTaskDeleteConfirm": "Подтвердите удаление",
7183
+ "teamTaskDeleted": "Удалена",
7184
+ "teamTaskDescription": "Описание",
7185
+ "teamTaskDescriptionPlaceholder": "Дополнительный контекст (необязательно)",
7186
+ "teamTaskDetail": "Подробности задачи",
7187
+ "teamTaskEdit": "Изменить",
7188
+ "teamTaskError": "Операция не удалась: {message}",
7189
+ "teamTaskInProgress": "В работе",
7190
+ "teamTaskNoDescription": "Описания пока нет — нажмите «Изменить», чтобы добавить его",
7191
+ "teamTaskOwner": "Ответственный",
7192
+ "teamTaskPending": "В ожидании",
7193
+ "teamTaskReopen": "Переоткрыть",
7194
+ "teamTaskSave": "Сохранить",
7195
+ "teamTasksEmpty": "Общих задач пока нет",
7196
+ "teamTaskSubject": "Тема",
7197
+ "teamTaskSubjectPlaceholder": "Одна строка с описанием работы",
7198
+ "teamTaskUnowned": "Без ответственного",
7199
+ "terminal": "Терминал",
7200
+ "terminalConnectFailed": "Терминал несколько раз не смог подключиться",
7201
+ "terminalDepsFailed": "Не удалось загрузить зависимость терминала node-pty",
7202
+ "terminalDepsHint": "Выполните команду ниже в терминале или cmd на машине DSH, чтобы устранить проблему, затем повторите попытку (node-pty остаётся в паре с версией ядра DSH):",
7203
+ "terminalDepsProfile": " (определённый профиль: {profile})",
7204
+ "terminalError": "Ошибка подключения к терминалу",
7205
+ "terminalGone": "Этого терминала больше нет — запустите новый",
7206
+ "terminalNew": "Новый терминал",
7207
+ "terminalRetry": "Повторить",
7208
+ "terminalShellNotFound": "Настроенная оболочка не найдена: {name} — проверьте путь к оболочке в разделе «Настройки» → «Боковая карточка» → «Терминал»",
7209
+ "terminalSkipWait": "Не ждать",
7210
+ "terminalUnavailable": "Хост не поддерживает терминалы",
7211
+ "terminalWaitBanner": "Агент ждёт {needle}",
7212
+ "timeHoursAgo": "{n} ч назад",
7213
+ "timeJustNow": "только что",
7214
+ "timeMinutesAgo": "{n} мин назад",
7215
+ "timeYesterday": "вчера",
7216
+ "toc": "Содержание",
7217
+ "unpinOpenWith": "Открепить",
7218
+ "unpinTerminal": "Открепить",
7219
+ "unsaved": "Не сохранено",
7220
+ "unstage": "Убрать из индекса",
7221
+ "unstageAll": "Убрать всё из индекса",
7222
+ "unstaged": "Вне индекса",
7223
+ "uploadCancelled": "Загрузка отменена",
7224
+ "uploadDone": "Загружено файлов: {count}",
7225
+ "uploadDropChat": "Перетащите в чат, чтобы добавить изображения",
7226
+ "uploadDropHint": "Перетащите сюда файлы или папки, чтобы загрузить их",
7227
+ "uploadFailed": "Не удалось загрузить: {error}",
7228
+ "uploadFailedUnknown": "Неизвестная ошибка",
7229
+ "uploadFiles": "Загрузить файлы",
7230
+ "uploadFolder": "Загрузить папку",
7231
+ "uploadHere": "Загрузить сюда",
7232
+ "uploadingTo": "Загружаем в {dir}…",
7233
+ "uploadProgress": "Загрузка {done}/{total}: {name}",
7234
+ "uploadTo": "Загрузить в {dir}",
7235
+ "uploadTooLarge": "Файл слишком большой (превышен предел загрузки)",
7236
+ "viewCommitDiff": "Посмотреть изменения коммита",
7237
+ "viewerCode": "Код",
7238
+ "viewerHtml": "HTML",
7239
+ "viewerJsonl": "JSONL",
7240
+ "viewerMarkdown": "Markdown",
7241
+ "workflowCancelled": "Отменено",
7242
+ "workflowCompleted": "Завершено",
7243
+ "workflowFailed": "Ошибка",
7244
+ "workflowMembers": "Участников: {done}/{total}",
7245
+ "workflowPhaseUnnamed": "Фаза без имени",
7246
+ "workflowRun": "Workflow",
7247
+ "workflowRunning": "Выполняется",
7248
+ "worktree": "Рабочее дерево",
7249
+ "zipDownload": "Упаковать и скачать",
7250
+ "zipDownloadCount": "Упаковать и скачать (элементов: {count})",
7251
+ "zipFailed": "Не удалось создать архив: {message}"
7252
+ },
7253
+ "dsh-cron": {
7254
+ "actions.approve": "Одобрить",
7255
+ "actions.archive": "Архив",
7256
+ "actions.archiveTitle": "Архив выполнений и журналы",
7257
+ "actions.create": "Создать",
7258
+ "actions.createWithDsh": "💬 Создать с помощью DSH",
7259
+ "actions.delete": "Удалить задачу",
7260
+ "actions.dryRun": "Пробный запуск",
7261
+ "actions.dryRunTitle": "Пробный запуск (тестовое выполнение без побочных эффектов и уведомлений)",
7262
+ "actions.duplicate": "Дублировать задачу",
7263
+ "actions.edit": "Изменить / Подробнее",
7264
+ "actions.pause": "Пауза",
7265
+ "actions.reject": "Отклонить",
7266
+ "actions.resume": "Возобновить",
7267
+ "actions.runNow": "Запустить сейчас",
7268
+ "actions.runNowShort": "Запустить",
7269
+ "actions.settings": "Уведомления и каналы",
7270
+ "actions.setupManually": "✏️ Настроить вручную",
7271
+ "actions.tuneWithDsh": "Настроить с помощью DSH",
7272
+ "adaptive.backoff": "с задержкой",
7273
+ "adaptive.badge": "Адаптивный",
7274
+ "adaptive.idle": "простой",
7275
+ "approval.approved": "Одобрено",
7276
+ "approval.rejected": "Отклонено",
7277
+ "approval.waiting": "Ожидает одобрения человека",
7278
+ "archive.close": "Закрыть",
7279
+ "archive.empty": "Для этой задачи пока нет архивных запусков.",
7280
+ "archive.loadMore": "Загрузить ещё ({shown} из {total})",
7281
+ "archive.title": "📜 Архив выполнений",
7282
+ "archive.totalRuns": "Всего запусков: {total}",
7283
+ "banner.loadError": "Не удалось загрузить задачи: {error}",
7284
+ "banner.retry": "Повторить",
7285
+ "chainGraph.close": "Закрыть",
7286
+ "chainGraph.decisionNode": "Узел решения",
7287
+ "chainGraph.modalTitle": "Визуальный граф цепочки и контрольных точек",
7288
+ "chainGraph.noNodes": "Для этой задачи или запуска цепочек шагов не найдено.",
7289
+ "chainGraph.retryStep": "Повторить шаг",
7290
+ "chainGraph.stepFailed": "Ошибка",
7291
+ "chainGraph.stepPending": "В ожидании",
7292
+ "chainGraph.stepSkipped": "Пропущено",
7293
+ "chainGraph.stepSuccess": "Успешно",
7294
+ "chainGraph.viewGraph": "Граф цепочки",
7295
+ "chip.title": "Задачи по расписанию (Cron)",
7296
+ "confirm.delete": "Удалить эту задачу?",
7297
+ "digest.buttonLabel": "Сводка",
7298
+ "digest.buttonTitle": "Показать аналитику автоматизации и сводку расходов за 7 или 30 дней",
7299
+ "digest.copied": "Скопировано.",
7300
+ "digest.copyMarkdown": "Копировать Markdown",
7301
+ "digest.cost": "Расход (USD)",
7302
+ "digest.executions": "Запуски",
7303
+ "digest.expensiveTitle": "Лидеры по потреблению ресурсов",
7304
+ "digest.fleet": "Автоматизации",
7305
+ "digest.modalTitle": "Сводка по автоматизации и расходам",
7306
+ "digest.period30": "Последние 30 дней",
7307
+ "digest.period7": "Последние 7 дней",
7308
+ "digest.sendTelegram": "Отправить в Telegram",
7309
+ "digest.sentSuccess": "Успешно отправлено в Telegram.",
7310
+ "digest.tokens": "Токены",
7311
+ "digest.unstableTitle": "Самые нестабильные автоматизации",
7312
+ "dryRun.close": "Закрыть",
7313
+ "dryRun.duration": "Длительность",
7314
+ "dryRun.output": "Имитация вывода",
7315
+ "dryRun.preflight": "Предварительная проверка",
7316
+ "dryRun.status": "Статус имитации",
7317
+ "dryRun.task": "Задача",
7318
+ "dryRun.title": "🧪 Имитация пробного запуска",
7319
+ "dsh.descLabel": "Опишите задачу и желаемую частоту:",
7320
+ "dsh.launchError": "Не удалось запустить: {error}",
7321
+ "dsh.modalTitle": "Запланируйте задачу с помощью агента DSH",
7322
+ "dsh.placeholder": "Например: каждые 2 часа проверять свободное место на диске и упавшие службы systemd и сообщать только о проблемах…",
7323
+ "dsh.sendHint": "Ctrl+Enter — отправить",
7324
+ "dsh.sendTitle": "Отправить агенту",
7325
+ "dsh.startFailed": "Не удалось открыть диалог с агентом: {error}",
7326
+ "duplicate.done": "Копия создана и на паузе: проверьте её расписание перед возобновлением.",
7327
+ "duplicate.failed": "Не удалось дублировать задачу: {error}",
7328
+ "duplicate.oneShotHint": "Копия одноразовая и на паузе — исходное время, скорее всего, уже прошло, поэтому задайте новое время перед возобновлением.",
7329
+ "filters.any": "Любой",
7330
+ "filters.channel": "Канал",
7331
+ "filters.empty": "Нет задач, соответствующих текущим фильтрам.",
7332
+ "filters.model": "Модель",
7333
+ "filters.reset": "Сбросить фильтры",
7334
+ "filters.showing": "Показано {shown} из {total}",
7335
+ "filters.title": "Фильтры",
7336
+ "filters.type": "Тип",
7337
+ "form.adaptiveEnabled": "Адаптивный опрос",
7338
+ "form.adaptiveHint": "Экспоненциальная задержка, когда изменения не обнаружены",
7339
+ "form.agentPresetHint": "Пресет агента из dsh-agent-presets (например, standard, minimal, cordis, ptc). Подключает инструменты рабочей области и программирования.",
7340
+ "form.agentPresetLabel": "Пресет агента",
7341
+ "form.agentPresetPlaceholder": "standard (оставьте пустым для настроенного по умолчанию)",
7342
+ "form.autoDiagnoseLabel": "Автодиагностика сбоев агентом ИИ",
7343
+ "form.autoHealHint": "Автоматически диагностировать сбой и применять безопасные исправления (не более 1 автоисправления в день)",
7344
+ "form.autoHealLabel": "Автономный самоисцеляющий доктор",
7345
+ "form.chainingTitle": "Цепочки и оркестрация по DAG",
7346
+ "form.channelBark": "Bark",
7347
+ "form.channelDiscord": "Discord",
7348
+ "form.channelGitea": "Задача Gitea",
7349
+ "form.channelKanban": "Карточка dsh-kanban",
7350
+ "form.channelNtfy": "ntfy",
7351
+ "form.channelPushplus": "PushPlus",
7352
+ "form.channelsHint": "Выберите каналы для этой задачи. Явный выбор имеет приоритет над переключателем Telegram выше; если ничего не отмечено, действует он.",
7353
+ "form.channelSlack": "Slack",
7354
+ "form.channelsTitle": "Каналы доставки",
7355
+ "form.channelTelegram": "Telegram",
7356
+ "form.channelTts": "Голос (dsh-tts)",
7357
+ "form.concurrencyGroupLabel": "Группа параллельности",
7358
+ "form.cwdLabel": "Рабочий каталог (необязательно)",
7359
+ "form.dependsOnHint": "Ждать эти ID задач перед выполнением (барьер Fan-In)",
7360
+ "form.dependsOnLabel": "Зависимости (dependsOn)",
7361
+ "form.dockerImageLabel": "Образ контейнера",
7362
+ "form.elseTaskHint": "Задача, которую нужно запустить, если не сработало ни одно правило условной ветки",
7363
+ "form.elseTaskLabel": "Резервная задача по умолчанию (elseTask)",
7364
+ "form.elseTaskPlaceholder": "например, task-fallback",
7365
+ "form.envHint": "Применяется только к средам выполнения без LLM. Не храните здесь секреты.",
7366
+ "form.envLabel": "Переменные окружения (KEY=VALUE в каждой строке)",
7367
+ "form.envPlaceholder": "NODE_ENV=production\nTZ=Europe/Berlin",
7368
+ "form.fallbackModelHint": "Если запуск на указанной выше модели завершится с ошибкой, он один раз повторяется на этой модели. В расход входят обе попытки.",
7369
+ "form.fallbackModelLabel": "Резервная модель (необязательно)",
7370
+ "form.fallbackModelPlaceholder": "например, deepseek-reasoner",
7371
+ "form.gracePeriodLabel": "Льготный период пульса (секунды)",
7372
+ "form.heartbeatIntervalLabel": "Дедлайн пульса (секунды, 0 = отключено)",
7373
+ "form.httpBodyLabel": "Тело запроса (необязательно)",
7374
+ "form.httpHeadersLabel": "Заголовки (JSON, необязательно)",
7375
+ "form.httpMethodLabel": "Метод HTTP",
7376
+ "form.httpUrlLabel": "URL",
7377
+ "form.inspectOnFailureHint": "После неудачного запуска модель читает промпт, ошибку и вывод, а диагноз с предлагаемым изменением промпта сохраняется вместе с запуском. Ничего не применяется автоматически.",
7378
+ "form.inspectOnFailureLabel": "Диагностика сбоев моделью",
7379
+ "form.joinPolicyAll": "Все предварительные условия (all_success)",
7380
+ "form.joinPolicyAny": "Любое из предварительных условий (any_success)",
7381
+ "form.joinPolicyLabel": "Политика объединения",
7382
+ "form.kanbanAlways": "Создавать карточку при каждом завершении (Done / Backlog)",
7383
+ "form.kanbanLabel": "Создание карточек Kanban (dsh-kanban)",
7384
+ "form.kanbanNone": "Не создавать карточки (отключено)",
7385
+ "form.kanbanOnFailure": "Создавать карточку при сбое (в Backlog)",
7386
+ "form.keepWorktreeLabel": "Сохранять рабочее дерево после запуска",
7387
+ "form.misfireCatchUp": "Выполнить один раз с опозданием и зафиксировать разрыв (catchUpAll)",
7388
+ "form.misfireLabel": "При пропущенном запуске (после простоя)",
7389
+ "form.misfireRunOnce": "Выполнить один раз с опозданием (runOnce)",
7390
+ "form.misfireSkip": "Пропустить запуск (skip)",
7391
+ "form.modelDefault": "По умолчанию",
7392
+ "form.modelLabel": "Модель LLM",
7393
+ "form.nameLabel": "Название задачи",
7394
+ "form.namePlaceholder": "Например: dsh-tags-watch",
7395
+ "form.nextRunLabel": "Следующий запуск: ",
7396
+ "form.notifyOnlyFailure": "Только при сбоях (onlyOnFailure / тихо при успехе)",
7397
+ "form.notifyTelegram": "Отправлять отчёт о запуске в Telegram",
7398
+ "form.notifyTitle": "Уведомления в Telegram",
7399
+ "form.notScheduled": "не по расписанию",
7400
+ "form.onFailureHint": "ID задач через запятую, выполняемых при сбое",
7401
+ "form.onFailureLabel": "Запуск при сбое (ID задач)",
7402
+ "form.onSuccessHint": "ID задач через запятую, выполняемых при успехе (Fan-Out)",
7403
+ "form.onSuccessLabel": "Запуск при успехе (ID задач)",
7404
+ "form.overlapLabel": "Политика пересечений",
7405
+ "form.overlapQueue": "Поставить следующий запуск в очередь (queue)",
7406
+ "form.overlapReplace": "Отменить текущий запуск и запустить заново (replace)",
7407
+ "form.overlapSkip": "Пропустить новый запуск (skip)",
7408
+ "form.permissionDefault": "По умолчанию (как настроено в DSH)",
7409
+ "form.permissionFull": "Полный доступ",
7410
+ "form.permissionLabel": "Права сессии",
7411
+ "form.permissionReadonly": "Только чтение",
7412
+ "form.permissionWrite": "Запись в рабочую область",
7413
+ "form.preflightDisk": "Место на диске (путь:минПроцент)",
7414
+ "form.preflightHttp": "HTTP (проверка 2xx)",
7415
+ "form.preflightLabel": "Предварительная проверка",
7416
+ "form.preflightNone": "Нет",
7417
+ "form.preflightShell": "Команда shell (код возврата 0)",
7418
+ "form.preflightTargetLabel": "Цель предварительной проверки",
7419
+ "form.preflightTargetPlaceholder": "https://example.com/healthz ИЛИ ls /data ИЛИ /:10%",
7420
+ "form.previewSchedule": "Показать следующие запуски",
7421
+ "form.previewScheduleTitle": "Следующие 5 запусков по расписанию:",
7422
+ "form.priorityLabel": "Приоритет в очереди (1–10, больший выполняется раньше)",
7423
+ "form.promptLabelLlm": "Инструкция / промпт для агента",
7424
+ "form.promptLabelScript": "Команда shell или скрипт",
7425
+ "form.promptPlaceholderLlm": "Точно опишите, что должен делать агент…",
7426
+ "form.promptPlaceholderScript": "curl -fsSL https://… || exit 1",
7427
+ "form.providerDefault": "По умолчанию (DSH)",
7428
+ "form.providerLabel": "Провайдер LLM",
7429
+ "form.reliabilityTitle": "🛡️ Надёжность, пульс и самоисцеление",
7430
+ "form.requireApprovalHint": "Если включено, задача не выполняется, пока авторизованный пользователь не одобрит предложение запуска (#318).",
7431
+ "form.requireApprovalLabel": "Требовать одобрения человека перед выполнением",
7432
+ "form.retriesLabel": "Автоматические повторы при сбое (0 = отключено)",
7433
+ "form.scheduleLabel": "Расписание (cron или интервал)",
7434
+ "form.schedulePlaceholder": "0 */6 * * * или every 2h или in 30m или at: 2026-09-05T15:00:00Z",
7435
+ "form.selfHealingLabel": "Команда сценария самоисцеления (shell)",
7436
+ "form.selfHealingPlaceholder": "systemctl restart app || true",
7437
+ "form.silentRuleHint": "Для задач с выводом: дешёвая модель оценивает запуск по этому правилу, и отчёт пропускается, если она велит молчать. Если модель недоступна или не уверена, отчёт доставляется.",
7438
+ "form.silentRuleLabel": "Правило молчания (необязательно)",
7439
+ "form.silentRulePlaceholder": "Молчать, когда ни одна файловая система не занята больше 80%",
7440
+ "form.skillNameLabel": "Название навыка",
7441
+ "form.sshKeyLabel": "Путь к закрытому ключу (резервный, необязательно)",
7442
+ "form.sshProfileHint": "Предпочтительно: хост и учётные данные остаются в плагине remote-workspace.",
7443
+ "form.sshProfileLabel": "ID профиля dsh-remote-workspace",
7444
+ "form.sshTargetLabel": "Резервная цель (user@host, необязательно)",
7445
+ "form.targetSessionIdHint": "Если задан, запуски по расписанию продолжают эту сессию, чтобы сохранять контекст диалога между запусками, а не создавать новую изолированную сессию.",
7446
+ "form.targetSessionIdLabel": "ID постоянной сессии",
7447
+ "form.targetSessionIdPlaceholder": "например, audit-chat или dev-summary (пусто = изолированный запуск)",
7448
+ "form.targetSessionResetDaily": "Ежедневная ротация (новая сессия каждый день)",
7449
+ "form.targetSessionResetHint": "Автоматически меняет идентификатор сессии, чтобы контекстное окно не разрасталось при долгой работе.",
7450
+ "form.targetSessionResetLabel": "Ротация контекста сессии",
7451
+ "form.targetSessionResetNever": "Непрерывно (без ротации)",
7452
+ "form.targetSessionResetWeekly": "Еженедельная ротация (новая сессия каждую неделю)",
7453
+ "form.templateHint": "Переменные: {title} {id} {status} {output} {error} {duration} {schedule} {time} {tokens} {cost} {model}. Пусто = встроенный текст.",
7454
+ "form.templateLabel": "Шаблон сообщения (необязательно)",
7455
+ "form.templatePlaceholder": "⏰ {title} — {status} за {duration}",
7456
+ "form.timeoutLabel": "Тайм-аут выполнения (секунды)",
7457
+ "form.timezoneLabel": "Часовой пояс (IANA, необязательно)",
7458
+ "form.timezonePlaceholder": "например, Europe/Berlin (пусто = локальное время сервера)",
7459
+ "form.typeDocker": "Контейнер Docker",
7460
+ "form.typeHttp": "HTTP-запрос / вебхук",
7461
+ "form.typeLabel": "Тип выполнения",
7462
+ "form.typeLlm": "LLM (агент ИИ)",
7463
+ "form.typeNode": "Node.js",
7464
+ "form.typePython": "Python",
7465
+ "form.typeScript": "Команда shell / скрипт",
7466
+ "form.typeSkill": "Навык DSH",
7467
+ "form.typeSsh": "Удалённый SSH",
7468
+ "form.typeWorkflow": "Workflow DSH",
7469
+ "form.workflowNameLabel": "Название Workflow",
7470
+ "form.workspaceLabel": "ID или путь рабочей области (необязательно)",
7471
+ "form.worktreeLabel": "Выполнять в изолированном рабочем дереве git",
7472
+ "heatmap.buttonLabel": "Тепловая карта",
7473
+ "heatmap.matrixDesc": "Концентрация расходов по часам недели (7 дней × 24 часа):",
7474
+ "heatmap.modalTitle": "Тепловая карта расходов и расхода токенов",
7475
+ "heatmap.tabHeatmap": "Тепловая карта расходов",
7476
+ "history.applySuggestion": "Открыть форму редактирования с этим предложением",
7477
+ "history.artifacts": "Артефакты",
7478
+ "history.autoHealed": "Автоматически исправлено доктором",
7479
+ "history.diagnosis": "Диагноз",
7480
+ "history.doctorApply": "Применить исправление в один клик",
7481
+ "history.doctorDiagnosis": "Диагноз доктора и предлагаемое исправление",
7482
+ "history.doctorRevert": "Вернуть предыдущий код",
7483
+ "history.empty": "Запусков пока не записано",
7484
+ "history.loading": "Загружаем историю…",
7485
+ "history.openSession": "Открыть сессию",
7486
+ "history.refresh": "Обновить историю",
7487
+ "history.resolveCompleted": "Отметить как выполнено",
7488
+ "history.resolveFailed": "Отметить как сбой",
7489
+ "history.retryDelivery": "Повторить доставку",
7490
+ "history.retryingDelivery": "Повторяем доставку…",
7491
+ "history.silentSkip": "промолчала:",
7492
+ "history.stage_delivery": "Доставка",
7493
+ "history.stage_execution": "Выполнение",
7494
+ "history.stage_preflight": "Проверка",
7495
+ "history.stage_queue": "Очередь",
7496
+ "history.stage_validation": "Валидация",
7497
+ "history.statusFailed": "Сбой",
7498
+ "history.statusMissed": "Не выполнен",
7499
+ "history.statusSkipped": "Пропущен",
7500
+ "history.statusSuccess": "Успешно",
7501
+ "history.statusTimeout": "Тайм-аут",
7502
+ "history.statusUncertain": "Неопределённо",
7503
+ "history.statusUncertainHint": "Прервано перезапуском — проверьте результат",
7504
+ "history.statusValidationFailed": "проверка не пройдена",
7505
+ "history.stoppedReasonTitle": "Причина остановки:",
7506
+ "list.configManaged": "Конфигурация",
7507
+ "list.configManagedHint": "Объявлено в config.jobs в файле конфигурации профиля; измените файл, чтобы изменить или удалить задачу",
7508
+ "list.empty": "Задач по расписанию пока нет",
7509
+ "list.loadErrorPrefix": "Не удалось загрузить задачи",
7510
+ "list.loading": "Загружаем задачи по расписанию…",
7511
+ "list.next": " · следующий: {time}",
7512
+ "list.oneShot": "Одноразовая",
7513
+ "list.runningNow": "Выполняется сейчас",
7514
+ "list.typeLlm": "LLM",
7515
+ "list.typeShell": "Shell",
7516
+ "liveLog.autoScroll": "Автопрокрутка",
7517
+ "liveLog.close": "Закрыть поток",
7518
+ "liveLog.completed": "Поток выполнения завершён",
7519
+ "liveLog.connecting": "Подключаемся к потоку журнала…",
7520
+ "liveLog.modalTitle": "Журнал выполнения в реальном времени",
7521
+ "liveLog.viewLog": "Поток в реальном времени",
7522
+ "liveLog.waiting": "Ждём вывод исполнителя…",
7523
+ "modal.cancel": "Отмена",
7524
+ "modal.close": "Закрыть",
7525
+ "modal.confirmDiscard": "Отменить несохранённые изменения?",
7526
+ "modal.create": "Создать задачу",
7527
+ "modal.editTitle": "Изменение задачи",
7528
+ "modal.history": "История запусков ({count})",
7529
+ "modal.newTitle": "Новая задача по расписанию",
7530
+ "modal.params": "Параметры",
7531
+ "modal.save": "Сохранить изменения",
7532
+ "modal.statusActive": "● Активна",
7533
+ "modal.statusPaused": "○ На паузе",
7534
+ "panel.back": "Вернуться в чат",
7535
+ "panel.subtitle": "Попросите DSH спланировать задачи, настроить напоминания или следить за обновлениями",
7536
+ "panel.title": "Задачи по расписанию",
7537
+ "prompt.history": "История промптов",
7538
+ "prompt.rollback": "Вернуть v",
7539
+ "prompt.successRate": "СР",
7540
+ "prompt.version": "Версия промпта",
7541
+ "recipe.dependenciesMissing": "Не хватает обязательных интеграций или учётных данных",
7542
+ "recs.hint": "Готовые рецепты. Нажатие открывает форму с заполненными полями — ничего не создаётся, пока вы не сохраните.",
7543
+ "recs.title": "Рекомендуемые задачи",
7544
+ "search.placeholder": "Поиск задач по расписанию",
7545
+ "settings.apiTokenLabel": "Внешний API-токен",
7546
+ "settings.apiTokenPlaceholder": "Bearer-токен для /dsh-cron/api/* (пусто = отключено)",
7547
+ "settings.automationHint": "Модели для небольших вспомогательных вызовов (проверка правил, анализ сбоев). Оставьте пустым, чтобы использовать модель задачи.",
7548
+ "settings.automationSection": "Модели автоматизации",
7549
+ "settings.barkKeyLabel": "Ключ устройства Bark",
7550
+ "settings.barkServerLabel": "URL сервера Bark",
7551
+ "settings.botTokenRefLabel": "Имя учётных данных с токеном бота",
7552
+ "settings.botTokenRefPlaceholder": "например, TELEGRAM_BOT_TOKEN",
7553
+ "settings.cardDesc": "Выполнение задач по расписанию (cron/интервалы), фоновые сценарии агента и доставка отчётов о запусках в Telegram, Discord, Slack, ntfy, Bark, PushPlus, голосом и Gitea.",
7554
+ "settings.cardTitle": "⏰ Планировщик задач (Cron)",
7555
+ "settings.channelTemplateLabel": "Шаблон для {channel}",
7556
+ "settings.chatIdLabel": "ID чата Telegram",
7557
+ "settings.chatIdPlaceholder": "Например: 345678901",
7558
+ "settings.checkingKanban": "Проверяем Kanban…",
7559
+ "settings.defaultHint": "✓ В профиле DSH найден настроенный бот",
7560
+ "settings.deliverySection": "Каналы доставки",
7561
+ "settings.deliveryTimeoutMsLabel": "Тайм-аут доставки для каждого канала (мс)",
7562
+ "settings.discordLabel": "URL вебхука Discord",
7563
+ "settings.dynamicCredentials": "Динамическое разрешение учётных данных (credential://…)",
7564
+ "settings.dynamicCredentialsHint": "Разрешать credential://… в памяти из учётных данных DeepSeek Harness во время выполнения (#335)",
7565
+ "settings.giteaBaseUrlLabel": "Базовый URL Gitea",
7566
+ "settings.giteaRepoLabel": "Репозиторий Gitea (владелец/репозиторий)",
7567
+ "settings.giteaTokenRefLabel": "Имя учётных данных с токеном Gitea",
7568
+ "settings.globalNotify": "Глобально доставлять отчёты всех задач в Telegram",
7569
+ "settings.globalOnlyFailure": "Глобальный режим: только при сбоях (тихо при успехе)",
7570
+ "settings.inspectorModelLabel": "Модель для диагностики сбоев",
7571
+ "settings.kanbanFail": "❌ {error}",
7572
+ "settings.kanbanOk": "✅ Карточка Kanban создана",
7573
+ "settings.kanbanUrlLabel": "Базовый URL Kanban",
7574
+ "settings.loading": "Загружаем настройки…",
7575
+ "settings.modalTitle": "Уведомления и каналы доставки",
7576
+ "settings.ntfyTokenRefLabel": "Имя учётных данных с токеном ntfy",
7577
+ "settings.ntfyTopicLabel": "Тема ntfy",
7578
+ "settings.ntfyUrlLabel": "URL сервера ntfy",
7579
+ "settings.openPanel": "Открыть панель задач",
7580
+ "settings.pushplusTokenRefLabel": "Имя учётных данных с токеном PushPlus",
7581
+ "settings.pushplusUrlLabel": "Конечная точка PushPlus",
7582
+ "settings.retry": "Повторить",
7583
+ "settings.save": "Сохранить настройки",
7584
+ "settings.saved": "✓ Сохранено",
7585
+ "settings.saveError": "Не удалось сохранить: {error}",
7586
+ "settings.saveErrorUnknown": "неизвестная ошибка",
7587
+ "settings.secretsHint": "Введите ИМЯ учётных данных DSH, а не сам секрет. Секреты остаются в хранилище учётных данных.",
7588
+ "settings.secretsOnCard": "Учётные данные, на которые ссылается панель настроек, показываются в замаскированном виде и хранятся по имени.",
7589
+ "settings.secretsSection": "Учётные данные (ссылки)",
7590
+ "settings.sending": "Отправка…",
7591
+ "settings.silentRuleModelLabel": "Модель для беззвучных правил",
7592
+ "settings.slackLabel": "URL вебхука Slack",
7593
+ "settings.telegramSection": "Telegram",
7594
+ "settings.templateHint": "Применяется к каждому каналу, у которого нет своего шаблона. Пусто — встроенный текст.",
7595
+ "settings.templateLabel": "Шаблон сообщения по умолчанию",
7596
+ "settings.templatesSection": "Шаблоны сообщений",
7597
+ "settings.testFail": "❌ {error}",
7598
+ "settings.testKanban": "📋 Проверка Kanban",
7599
+ "settings.testOk": "✅ Тестовое сообщение доставлено в Telegram.",
7600
+ "settings.testTelegram": "🔔 Проверка доставки в Telegram",
7601
+ "settings.tokenLabel": "Токен бота Telegram",
7602
+ "settings.tokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ",
7603
+ "settings.tokenPlaceholderDefault": "Используется бот из настроек DSH (или введите своего)",
7604
+ "settings.ttsBaseUrlLabel": "Базовый URL dsh-tts",
7605
+ "settings.unavailable": "Настройки сейчас недоступны.",
7606
+ "sidebar.jobsTitle": "Активные задачи",
7607
+ "sidebar.label": "Задачи по расписанию",
7608
+ "sidebar.moreJobs": "и ещё {count} шт.",
7609
+ "sidebar.noActiveJobs": "Активных задач нет",
7610
+ "stats.activeTasks": "Активные задачи",
7611
+ "stats.totalCost": "Оценочная стоимость",
7612
+ "stats.totalRuns": "Всего запусков",
7613
+ "stats.totalTokens": "Потрачено токенов",
7614
+ "tabs.active": "Активные",
7615
+ "tabs.all": "Все",
7616
+ "tabs.completed": "Завершённые",
7617
+ "tabs.paused": "Приостановленные",
7618
+ "timeline.buttonLabel": "Хронология",
7619
+ "timeline.buttonTitle": "Показать прогноз расписания и хронологию параллельности за 24 часа",
7620
+ "timeline.legendDesc": "Прогноз распределения запусков по часовым интервалам за 24 часа:",
7621
+ "timeline.modalTitle": "Хронология расписания за 24 часа",
7622
+ "timeline.peakWarning": "Предупреждение о пиковой параллельности",
7623
+ "timeline.tabTimeline": "Хронология расписания",
7624
+ "transfer.badFile": "Выбранный файл не является корректным экспортом в JSON: {error}",
7625
+ "transfer.confirm": "Импортировать",
7626
+ "transfer.exported": "Экспортировано задач: {count}.",
7627
+ "transfer.exportFailed": "Не удалось экспортировать: {error}",
7628
+ "transfer.exportPrompt": "Выберите режим экспорта:\nOK = очищенный (удаляет пользовательские переменные окружения и заголовки)\nCancel = полный сырой экспорт",
7629
+ "transfer.exportTitle": "Экспорт задач",
7630
+ "transfer.imported": "Импортировано задач: {count}.",
7631
+ "transfer.importFailed": "Не удалось импортировать: {error}",
7632
+ "transfer.importHint": "Только конфигурация задач: без истории запусков и счётчиков. Конфигурации каналов ссылаются на учётные данные по имени; учтите, что сырые экспорты сохраняют пользовательские переменные окружения и заголовки HTTP-запросов.",
7633
+ "transfer.importTitle": "Импорт задач",
7634
+ "transfer.importTitleModal": "Импорт задач",
7635
+ "transfer.strategyAdd": "Добавить как новые задачи (новые id, существующие останутся нетронутыми)",
7636
+ "transfer.strategyReplace": "Заменить задачи с тем же id",
7637
+ "transfer.strategySkip": "Пропустить задачи, чей id уже существует",
7638
+ "transfer.summary": "В файле задач: {total}, новых: {add}, с совпадающим id: {replace}, уже пропущено: {skip}.",
7639
+ "tune.startFailed": "Не удалось начать диалог настройки: {error}",
7640
+ "updater.available": "Доступно обновление: v{version}",
7641
+ "updater.btnCheck": "Проверить обновления",
7642
+ "updater.btnUpdate": "Обновить до v{version}",
7643
+ "updater.checking": "Проверяем…",
7644
+ "updater.current": "Текущая версия: v{version}",
7645
+ "updater.desc": "Проверять реестр npm и устанавливать обновления плагинов на месте без доступа по SSH.",
7646
+ "updater.success": "Обновление до v{version} выполнено. Перезапустите DSH или перезагрузите профиль, чтобы применить изменения.",
7647
+ "updater.title": "Автообновление плагинов",
7648
+ "updater.updating": "Обновляем…",
7649
+ "updater.upToDate": "Обновлений нет"
7650
+ },
7651
+ "dsh-image-gen": {
7652
+ "approval.aspectLabel": "Соотношение сторон / Размер",
7653
+ "approval.cancelled": "Генерация отменена или прервана по таймауту.",
7654
+ "approval.confirmBtn": "Подтвердить генерацию",
7655
+ "approval.confirmed": "Генерация подтверждена пользователем, продолжаем…",
7656
+ "approval.confirmPrompt": "Генерация изображения подтверждена: generate_image(prompt: «{p}», approved: true)",
7657
+ "approval.editBtn": "Изменить / Отменить",
7658
+ "approval.modelLabel": "Модель / Провайдер",
7659
+ "approval.promptLabel": "Промпт",
7660
+ "approval.title": "Требуется подтверждение генерации",
7661
+ "card.actionRemoveBg": "Удалить фон",
7662
+ "card.actionReroll": "Перегенерировать изображение",
7663
+ "card.actionUpscale": "Увеличить изображение",
7664
+ "card.copyPrompt": "Копировать промпт",
7665
+ "card.desc": "Настройка генерации изображений через несколько провайдеров, дорисовки, увеличения и векторизации.",
7666
+ "card.dirty": "Есть несохранённые изменения",
7667
+ "card.discard": "Отменить изменения",
7668
+ "card.draftPreview": "Предпросмотр черновика",
7669
+ "card.failed": "Генерация не удалась",
7670
+ "card.generating": "Генерация изображения…",
7671
+ "card.image": "Результат студии изображений",
7672
+ "card.inpaint": "Дорисовка",
7673
+ "card.nextRevision": "Следующая ревизия",
7674
+ "card.origPrompt": "Исходный промпт",
7675
+ "card.prevRevision": "Предыдущая ревизия",
7676
+ "card.remix": "Ремикс",
7677
+ "card.removeBg": "Удалить фон",
7678
+ "card.rendering": "Отрисовка…",
7679
+ "card.reroll": "Перегенерировать",
7680
+ "card.responsiveTabs": "Адаптивные размеры окна",
7681
+ "card.revisions": "Ревизии",
7682
+ "card.save": "Сохранить изменения",
7683
+ "card.saving": "Сохранение…",
7684
+ "card.seedPrefix": "Сид",
7685
+ "card.sizePrefix": "Размер",
7686
+ "card.title": "Студия ИИ-изображений",
7687
+ "card.unknownError": "Во время генерации произошла неизвестная ошибка.",
7688
+ "card.upscale": "Увеличение 2x/4x",
7689
+ "diagnostics.desc": "Мгновенная проверка состояния соединения и задержки до API выбранного провайдера.",
7690
+ "diagnostics.ready": "Готово",
7691
+ "diagnostics.test": "Проверить соединение",
7692
+ "diagnostics.testing": "Проверяем…",
7693
+ "diagnostics.title": "Диагностика связи с провайдером",
7694
+ "f.activeProjectProfile": "Активный профиль проекта",
7695
+ "f.activeProjectProfileHint": "Выберите сохранённый визуальный профиль (палитра, стиль, формат), который будет единообразно применяться ко всем генерациям (#435).",
7696
+ "f.allowCustomBaseUrl": "Разрешить свой хост провайдера",
7697
+ "f.allowCustomBaseUrlHint": "Явно разрешить customBaseURL или baseURL обращаться к внешним хостам за пределами доверенного списка ИИ-провайдеров.",
7698
+ "f.apiKeyEnv": "Ссылка на ключ FAL",
7699
+ "f.apiKeyEnvHint": "Ссылка на учётные данные с ключом FAL API.",
7700
+ "f.approvalTimeoutSec": "Таймаут подтверждения (секунды)",
7701
+ "f.approvalTimeoutSecHint": "Максимальное время ожидания подтверждения пользователя до отмены задачи (5–600 секунд).",
7702
+ "f.autoEnhancePrompt": "Автоулучшение промпта",
7703
+ "f.autoEnhancePromptHint": "Дополняет промпты маркерами качества фотографии, освещения и композиции.",
7704
+ "f.baseURL": "Базовый URL FAL",
7705
+ "f.baseURLHint": "Адрес сервиса очередей FAL.",
7706
+ "f.cacheByPrompt": "Кэш только по промпту",
7707
+ "f.cacheByPromptHint": "Использовать существующий результат, если этот промпт уже генерировался.",
7708
+ "f.cacheBySeed": "Кэш по сиду и промпту",
7709
+ "f.cacheBySeedHint": "Использовать существующий результат, если запрошены точно такие же сид и промпт.",
7710
+ "f.cacheTtlDays": "Срок хранения кэша (устаревшее)",
7711
+ "f.cacheTtlDaysHint": "Устаревшее название срока хранения в днях.",
7712
+ "f.comfyTemplate": "Шаблон workflow ComfyUI",
7713
+ "f.comfyTemplateHint": "Проверенный шаблон workflow (например, SDXL txt2img, img2img, перенос лиц InstantID, увеличитель RealESRGAN).",
7714
+ "f.comfyWorkflowJson": "JSON workflow ComfyUI",
7715
+ "f.comfyWorkflowJsonHint": "Свой граф workflow ComfyUI API (JSON) с подстановками {{prompt}}.",
7716
+ "f.customBaseURL": "Свой базовый URL API",
7717
+ "f.customBaseURLHint": "Корень эндпоинта изображений с совместимостью с OpenAI (например, https://api.openai.com/v1).",
7718
+ "f.customKeyEnv": "Ссылка на свой ключ",
7719
+ "f.customKeyEnvHint": "Ссылка на учётные данные с ключом API для своего эндпоинта.",
7720
+ "f.customModel": "ID своей модели",
7721
+ "f.customModelHint": "Имя модели, отправляемое в свой эндпоинт изображений.",
7722
+ "f.customSize": "Свой размер изображения",
7723
+ "f.customSizeHint": "Фиксированный размер, отправляемый в свой эндпоинт (например, 1024x1024).",
7724
+ "f.dailyBudgetUsd": "Дневной бюджет расходов ($ USD)",
7725
+ "f.dailyBudgetUsdHint": "Жёсткий предел расходов в день по всем инструментам генерации изображений (0 — без ограничений).",
7726
+ "f.defaultFormat": "Формат результата",
7727
+ "f.defaultFormatHint": "Итоговый формат файла (PNG, JPEG или WEBP).",
7728
+ "f.defaultSize": "Соотношение сторон по умолчанию",
7729
+ "f.defaultSizeHint": "Соотношение сторон и разрешение, применяемые, если image_size не задан.",
7730
+ "f.defaultStylePreset": "Пресет стиля по умолчанию",
7731
+ "f.defaultStylePresetHint": "Пресет стиля по умолчанию, применяемый к генерациям (например, кинематографичный, аниме, фотореализм).",
7732
+ "f.deliverAs": "Режим передачи",
7733
+ "f.deliverAsHint": "Как изображения попадают в беседу: «link» (безопасно для текстовой LLM) или «image» (мультимодальное зрение).",
7734
+ "f.diskCache": "Дисковый кэш с адресацией по содержимому",
7735
+ "f.diskCacheHint": "Мгновенное получение (<50 мс) и нулевая стоимость API при повторных одинаковых генерациях.",
7736
+ "f.enabled": "Главный переключатель",
7737
+ "f.enabledHint": "Включает или выключает инструменты генерации изображений во всей рабочей области.",
7738
+ "f.enableLlmEnhancer": "Включить улучшитель LLM (устаревшее)",
7739
+ "f.enableLlmEnhancerHint": "Устаревший переключатель расширения промптов через LLM.",
7740
+ "f.enhanceBelowChars": "Порог улучшения",
7741
+ "f.enhanceBelowCharsHint": "Промпты длиннее указанного числа символов не расширяются.",
7742
+ "f.enhanceModel": "Модель улучшения",
7743
+ "f.enhanceModelHint": "Отдельная модель LLM для расширения промптов (пусто — модель беседы).",
7744
+ "f.enhancePrompt": "Улучшитель промптов на LLM",
7745
+ "f.enhancePromptHint": "Расширяет краткие промпты художественными деталями перед генерацией.",
7746
+ "f.fallbackProviders": "Цепочка резервных провайдеров",
7747
+ "f.fallbackProvidersHint": "Список резервных провайдеров через запятую, к которым переходим при кодах 429, 5xx или достижении лимита квоты (например, replicate, custom, gemini).",
7748
+ "f.geminiKeyEnv": "Ссылка на ключ Gemini",
7749
+ "f.geminiKeyEnvHint": "Ссылка на учётные данные с ключом Google Gemini API.",
7750
+ "f.geminiModel": "ID модели Gemini",
7751
+ "f.geminiModelHint": "Идентификатор модели генерации изображений Google Gemini.",
7752
+ "f.historyLimit": "Лимит истории",
7753
+ "f.historyLimitHint": "Максимальное число последних записей о генерации, которые хранятся в памяти.",
7754
+ "f.inherit": "По умолчанию / Наследовать",
7755
+ "f.localA1111Url": "Локальный URL A1111 (устаревшее)",
7756
+ "f.localA1111UrlHint": "Прямой URL эндпоинта Automatic1111.",
7757
+ "f.localBaseURL": "URL локального сервера",
7758
+ "f.localBaseURLHint": "Адрес сервера (например, http://127.0.0.1:8188 для ComfyUI, http://127.0.0.1:7860 для A1111).",
7759
+ "f.localCfg": "Шкала CFG",
7760
+ "f.localCfgHint": "Шкала руководства без классификатора.",
7761
+ "f.localComfyUrl": "Локальный URL ComfyUI (устаревшее)",
7762
+ "f.localComfyUrlHint": "Прямой URL эндпоинта ComfyUI.",
7763
+ "f.localKind": "Архитектура локального движка",
7764
+ "f.localKindHint": "Выбор бэкенда: ComfyUI API или Automatic1111 WebUI.",
7765
+ "f.localModel": "Локальная модель / чекпоинт",
7766
+ "f.localModelHint": "Имя чекпоинта или имя workflow ComfyUI.",
7767
+ "f.localSteps": "Шаги сэмплирования",
7768
+ "f.localStepsHint": "Число шагов сэмплирования при удалении шума.",
7769
+ "f.loopGuardLimit": "Лимит защиты от цикла в сессии",
7770
+ "f.loopGuardLimitHint": "Максимальное число подряд идущих генераций изображений до запроса ввода пользователя (0 — отключено).",
7771
+ "f.model": "ID модели FAL",
7772
+ "f.modelHint": "Целевая модель в эндпоинте FAL (например, fal-ai/flux-2/klein/9b).",
7773
+ "f.needCodex": "Встроенная подписка Codex",
7774
+ "f.needCustom": "Нужен эндпоинт с совместимостью с OpenAI",
7775
+ "f.needFal": "Нужен ключ FAL API",
7776
+ "f.needGemini": "Нужен ключ Google Gemini API",
7777
+ "f.needGrok": "Встроенная подписка Grok",
7778
+ "f.needLocal": "Локальный ComfyUI или A1111",
7779
+ "f.needReplicate": "Нужен токен Replicate API",
7780
+ "f.needSeedream": "Нужен ключ SeaDream API",
7781
+ "f.outputDir": "Каталог результатов",
7782
+ "f.outputDirHint": "Путь каталога, куда на диске сохраняются сгенерированные изображения.",
7783
+ "f.pollIntervalMs": "Интервал опроса (мс)",
7784
+ "f.pollIntervalMsHint": "Как часто проверяется ход задачи в асинхронных очередях.",
7785
+ "f.provider": "Провайдер изображений",
7786
+ "f.providerHint": "Сервис-бэкенд для генерации изображений.",
7787
+ "f.pruneDays": "Срок хранения (дни)",
7788
+ "f.pruneDaysHint": "Автоматически удалять файлы изображений и кэш старше указанного числа дней (0 — хранить вечно).",
7789
+ "f.qualityGate": "Тихий контроль качества",
7790
+ "f.qualityGateHint": "Автоматически проверяет готовые кадры и незаметно перегенерирует пустые или повреждённые результаты.",
7791
+ "f.replicateKeyEnv": "Ссылка на ключ Replicate",
7792
+ "f.replicateKeyEnvHint": "Ссылка на учётные данные с токеном Replicate API.",
7793
+ "f.replicateModel": "ID модели Replicate",
7794
+ "f.replicateModelHint": "Идентификатор целевой модели в Replicate.",
7795
+ "f.requireApproval": "Интерактивное подтверждение",
7796
+ "f.requireApprovalHint": "Требовать явного подтверждения пользователя в беседе перед вызовом платных API генерации изображений.",
7797
+ "f.seedreamBaseURL": "Базовый URL SeaDream",
7798
+ "f.seedreamBaseURLHint": "URL эндпоинта SeaDream API (ByteDance/Volcengine Ark).",
7799
+ "f.seedreamKeyEnv": "Ссылка на ключ SeaDream",
7800
+ "f.seedreamKeyEnvHint": "Ссылка на учётные данные с ключом SeaDream API.",
7801
+ "f.seedreamModel": "ID модели SeaDream",
7802
+ "f.seedreamModelHint": "Идентификатор модели ByteDance SeaDream.",
7803
+ "f.stylePreset": "Пресет художественного стиля",
7804
+ "f.stylePresetHint": "Автоматический суффикс визуального стиля, добавляемый ко всем сгенерированным промптам.",
7805
+ "f.subscriptionQuality": "Качество по подписке",
7806
+ "f.subscriptionQualityHint": "Целевой профиль качества при работе с подписками Codex или Grok.",
7807
+ "f.timeoutMs": "Таймаут (мс)",
7808
+ "f.timeoutMsHint": "Общий максимальный таймаут до признания запроса генерации неудачным.",
7809
+ "f.toolsetCreative": "Творческий набор инструментов",
7810
+ "f.toolsetCreativeHint": "Включить творческие инструменты: spritesheet, seamless_pattern, sketch_to_image, image_pack.",
7811
+ "f.toolsetDesign": "Набор инструментов для дизайна",
7812
+ "f.toolsetDesignHint": "Включить инструменты дизайна: style_matrix, theme_pair, ui_asset, character_sheet, beautify_diagram, anchor.",
7813
+ "f.toolsetFrontend": "Набор инструментов для фронтенда",
7814
+ "f.toolsetFrontendHint": "Включить инструменты фронтенда: extract_design_tokens, image_to_css_gradient, check_image_contrast, responsive_mockups.",
7815
+ "f.toolsetProcessing": "Набор инструментов для обработки",
7816
+ "f.toolsetProcessingHint": "Включить инструменты обработки: remove_background, upscale, vectorize, convert, grid, smart_crop, asset_pack, replace_image_text.",
7817
+ "f.toolsetProfile": "Профиль набора инструментов",
7818
+ "f.toolsetProfileHint": "Выбор инструментов, которые регистрируются в контексте: minimal (не больше 3 основных инструментов, экономия ~8k токенов промпта), all (30 инструментов) или свой.",
7819
+ "gallery.copy_link": "Копировать ссылку Markdown",
7820
+ "gallery.copy_prompt": "Копировать промпт",
7821
+ "gallery.empty": "Генераций пока нет. Сгенерированные изображения появятся здесь.",
7822
+ "gallery.inspector": "Сведения о генерации",
7823
+ "gallery.title": "Последние генерации",
7824
+ "inpaint.apply": "Применить дорисовку",
7825
+ "inpaint.brush": "Кисть",
7826
+ "inpaint.brush_size": "Размер",
7827
+ "inpaint.clear": "Очистить маску",
7828
+ "inpaint.copied": "✓ Инструкция скопирована.",
7829
+ "inpaint.eraser": "Ластик",
7830
+ "inpaint.invert": "Инвертировать маску",
7831
+ "inpaint.prompt_placeholder": "Опишите, что нужно сгенерировать в замаскированной области…",
7832
+ "inpaint.title": "Холст дорисовки (закрасьте белым маску над областью, которую нужно изменить)",
7833
+ "inpaint.undo": "Отменить",
7834
+ "label.settingsSections": "Разделы настроек",
7835
+ "matrix.blind_on": "Слепой режим включён",
7836
+ "matrix.blind_toggle": "Показать стили",
7837
+ "matrix.copied": "✓ Выбрано.",
7838
+ "matrix.title": "Тест матрицы стилей (2×2)",
7839
+ "matrix.use_style": "Применить стиль",
7840
+ "p.apiKeyEnv": "FAL_API_KEY",
7841
+ "p.approvalTimeoutSec": "120",
7842
+ "p.baseURL": "https://queue.fal.run",
7843
+ "p.cacheTtlDays": "0",
7844
+ "p.comfyWorkflowJson": "{«3»: {«class_type»: «KSampler», …}}",
7845
+ "p.customBaseURL": "https://api.openai.com/v1",
7846
+ "p.customKeyEnv": "OPENAI_API_KEY",
7847
+ "p.customModel": "dall-e-3",
7848
+ "p.customSize": "1024x1024",
7849
+ "p.dailyBudgetUsd": "0.00",
7850
+ "p.defaultStylePreset": "none",
7851
+ "p.enhanceBelowChars": "200",
7852
+ "p.enhanceModel": "Оставьте пустым, чтобы использовать модель беседы по умолчанию",
7853
+ "p.fallbackProviders": "replicate, custom, gemini",
7854
+ "p.geminiKeyEnv": "GEMINI_API_KEY",
7855
+ "p.geminiModel": "gemini-3.1-flash-image",
7856
+ "p.historyLimit": "50",
7857
+ "p.localA1111Url": "http://127.0.0.1:7860",
7858
+ "p.localBaseURL": "http://127.0.0.1:8188",
7859
+ "p.localCfg": "7",
7860
+ "p.localComfyUrl": "http://127.0.0.1:8188",
7861
+ "p.localModel": "v1-5-pruned-emaonly.safetensors",
7862
+ "p.localSteps": "20",
7863
+ "p.loopGuardLimit": "3",
7864
+ "p.model": "fal-ai/flux-2/klein/9b",
7865
+ "p.outputDir": "generated/images",
7866
+ "p.pollIntervalMs": "2000",
7867
+ "p.pruneDays": "0",
7868
+ "p.replicateKeyEnv": "REPLICATE_API_TOKEN",
7869
+ "p.replicateModel": "black-forest-labs/flux-schnell",
7870
+ "p.seedreamBaseURL": "https://api.bytedanceapi.com/v1",
7871
+ "p.seedreamKeyEnv": "SEEDREAM_API_KEY",
7872
+ "p.seedreamModel": "seedream-4.0",
7873
+ "p.timeoutMs": "180000",
7874
+ "remix.copied": "✓ Скопировано.",
7875
+ "remix.copy_instruction": "Копировать инструкцию",
7876
+ "remix.creative_btn": "Творческий (0.65)",
7877
+ "remix.creativity_label": "Творческая свобода / Сила удаления шума",
7878
+ "remix.drawer_title": "Рабочая область вариаций и смены стиля",
7879
+ "remix.prompt_placeholder": "Опишите стилистические правки, новый фон или варианты…",
7880
+ "remix.subtle_btn": "Едва заметный (0.25)",
7881
+ "settings.collapse": "Свернуть",
7882
+ "settings.credentialHint": "Ключи API хранятся в учётных данных DSH (~/.dsh/.credentials.yaml) и никогда не попадают в файлы конфигурации.",
7883
+ "settings.description": "Генерация ИИ-изображений, дорисовка, вариации, увеличение и векторизация.",
7884
+ "settings.discard": "Отменить изменения",
7885
+ "settings.expand": "Развернуть",
7886
+ "settings.invalidNumber": "Введите допустимое число",
7887
+ "settings.loading": "Загрузка настроек плагина…",
7888
+ "settings.navLabel": "Студия изображений",
7889
+ "settings.overridden": "переопределено",
7890
+ "settings.readOnly": "В этом контексте настройки доступны только для чтения.",
7891
+ "settings.reset": "Сбросить к значениям по умолчанию",
7892
+ "settings.save": "Сохранить настройки",
7893
+ "settings.saveFailed": "Не удалось сохранить настройки. Проверьте учётные данные и повторите.",
7894
+ "settings.saving": "Сохранение…",
7895
+ "settings.title": "Студия изображений",
7896
+ "settings.unavailable": "Настройки плагина недоступны: пространство имён настроек хоста ещё не готово.",
7897
+ "settings.unsaved": "Есть несохранённые изменения",
7898
+ "stat.active_provider": "Активный провайдер",
7899
+ "stat.approvalAuto": "Без подтверждения",
7900
+ "stat.approvalRequired": "Подтверждение включено",
7901
+ "stat.budget_cache": "Бюджет и кэш",
7902
+ "stat.cacheOff": "Выключено",
7903
+ "stat.cacheOn": "Кэш включён",
7904
+ "stat.format_size": "Формат и размер по умолчанию",
7905
+ "stat.gateActive": "Включено",
7906
+ "stat.gateOff": "Выключено",
7907
+ "stat.guard": "Защита: {n}",
7908
+ "stat.noLimit": "Без ограничения",
7909
+ "stat.safety_status": "Безопасность и защита от цикла",
7910
+ "studio.aspectRatio": "Соотношение сторон:",
7911
+ "studio.canvas": "Холст студии",
7912
+ "studio.copiedCommand": "Команда генерации скопирована в буфер обмена.",
7913
+ "studio.copiedSnippet": "Фрагмент скопирован в буфер обмена.",
7914
+ "studio.copyHtml": "Копировать HTML",
7915
+ "studio.copyMarkdown": "Копировать Markdown",
7916
+ "studio.download": "Скачать",
7917
+ "studio.emptyCanvas": "Выберите изображение в ленте ниже или нажмите «Сгенерировать».",
7918
+ "studio.exitFullscreen": "Выйти из полноэкранного режима",
7919
+ "studio.fullscreen": "Полноэкранный режим",
7920
+ "studio.generate": "Сгенерировать в беседе",
7921
+ "studio.parameters": "Параметры генерации",
7922
+ "studio.prompt": "Промпт:",
7923
+ "studio.promptPlaceholder": "Опишите замысел…",
7924
+ "studio.provider": "Провайдер:",
7925
+ "studio.random": "Случайный",
7926
+ "studio.randomizeSeed": "Случайный сид",
7927
+ "studio.recent": "Последние генерации",
7928
+ "studio.seed": "Сид (необязательно):",
7929
+ "studio.stylePreset": "Пресет стиля:",
7930
+ "studio.title": "Студия изображений",
7931
+ "studio.vault": "Хранилище ресурсов",
7932
+ "subtitle": "Генерация ИИ-изображений через нескольких провайдеров, редактирование, увеличение и векторизация.",
7933
+ "tab.cache": "Кэш и хранилище",
7934
+ "tab.enhancer": "Промпты и стили",
7935
+ "tab.gallery": "Галерея",
7936
+ "tab.general": "Общие",
7937
+ "tab.provider": "Провайдер",
7938
+ "tab.safety": "Безопасность и бюджет",
7939
+ "themePair.copiedCss": "CSS скопирован.",
7940
+ "themePair.copiedHtml": "HTML скопирован.",
7941
+ "themePair.copyCss": "Копировать CSS",
7942
+ "themePair.copyHtml": "Копировать HTML",
7943
+ "themePair.dark": "Тёмная",
7944
+ "themePair.light": "Светлая",
7945
+ "themePair.title": "Графика пары тем",
7946
+ "title": "Студия ИИ-изображений",
7947
+ "updater.check": "Проверить обновления",
7948
+ "updater.checking": "Проверяем…",
7949
+ "updater.current": "Текущая версия",
7950
+ "updater.failed": "Не удалось проверить обновление: ",
7951
+ "updater.latest": "Последняя версия",
7952
+ "updater.success": "Плагин успешно обновлён. Перезапустите службу DSH.",
7953
+ "updater.title": "Обновления плагинов",
7954
+ "updater.updateNow": "Обновить до v{version}",
7955
+ "updater.updating": "Обновляем…",
7956
+ "updater.upToDate": "Актуальная версия",
7957
+ "vault.allProviders": "Все провайдеры",
7958
+ "vault.allRatios": "Все соотношения",
7959
+ "vault.confirmDelete": "Вы уверены, что хотите удалить этот ресурс?",
7960
+ "vault.copiedMarkdown": "Фрагмент Markdown скопирован в буфер обмена.",
7961
+ "vault.copiedPrompt": "Промпт и сид скопированы в буфер обмена.",
7962
+ "vault.delete": "Удалить",
7963
+ "vault.deleted": "Ресурс удалён",
7964
+ "vault.deleteFailed": "Не удалось удалить ресурс",
7965
+ "vault.download": "Скачать",
7966
+ "vault.empty": "В хранилище нет ресурсов.",
7967
+ "vault.exportDesign": "🎨 OpenDesign",
7968
+ "vault.exportDesignCopied": "Фрагмент Figma/Penpot и Data-URL скопированы в буфер обмена.",
7969
+ "vault.exportDesignFailed": "Не удалось экспортировать фрагмент дизайна",
7970
+ "vault.insert": "Вставить в беседу",
7971
+ "vault.inspector": "Инспектор ресурсов",
7972
+ "vault.loading": "Загрузка…",
7973
+ "vault.loadMore": "Загрузить ещё ресурсы",
7974
+ "vault.newest": "Сначала новые",
7975
+ "vault.noPrompt": "Без промпта",
7976
+ "vault.oldest": "Сначала старые",
7977
+ "vault.provider": "Провайдер",
7978
+ "vault.reroll": "Перегенерировать по сиду",
7979
+ "vault.search": "Поиск по промпту или тегам…",
7980
+ "vault.seed": "Сид",
7981
+ "vault.title": "Обозреватель ресурсов и хранилище"
7982
+ },
7983
+ "dsh-kanban": {
7984
+ "acceptance.accept": "Принять (Готово)",
7985
+ "acceptance.acceptAndMerge": "Принять и слить (--no-ff)",
7986
+ "acceptance.merging": "Слитие…",
7987
+ "acceptance.reject": "Вернуть на доработку",
7988
+ "acceptance.rejectedAlert": "Возвращено на доработку: {reason}",
7989
+ "acceptance.rejectedBadge": "Доработка",
7990
+ "acceptance.rejectReasonPlaceholder": "Опишите, что нужно исправить или улучшить…",
7991
+ "acceptance.rejectSubmit": "Вернуть",
7992
+ "acceptance.rejectTitle": "Вернуть в работу",
7993
+ "acceptance.title": "Шлюз приёмки после проверки",
7994
+ "action.cancelWorkflow": "Отменить Workflow",
7995
+ "action.exportCsv": "Экспорт CSV (Excel)",
7996
+ "action.resume": "↻ Возобновить",
7997
+ "archive.empty": "Архив пуст.",
7998
+ "archive.hint": "Карточки, которые отслужили свой срок в колонке «Готово». Ничего не удаляется: восстановленная карточка возвращается в ту колонку, из которой вышла.",
7999
+ "archive.restore": "Вернуть на доску",
8000
+ "archive.since": "архивировано {ago} назад",
8001
+ "batch.hint": "Одна сессия на все задачи. Задачи выполняются по одной: агент берёт следующую, когда заканчивает текущую. В колонку «В работе» переходит только первая — остальные ждут своей очереди на своих местах.",
8002
+ "batch.start": "Начать",
8003
+ "batch.title": "Запуск задач в одном чате: {n}",
8004
+ "board.allRepos": "Все репозитории",
8005
+ "board.archive": "Архив",
8006
+ "board.back": "К чату",
8007
+ "board.backHint": "Закрыть доску и вернуться к диалогу",
8008
+ "board.clearFilters": "Сбросить фильтры",
8009
+ "board.collapse": "Свернуть колонку",
8010
+ "board.empty": "Задач пока нет.",
8011
+ "board.expand": "Развернуть колонку",
8012
+ "board.export": "Скачать",
8013
+ "board.exportHint": "Скачать всю доску в формате JSON",
8014
+ "board.import": "Импорт",
8015
+ "board.imported": "Импортировано задач: {n}",
8016
+ "board.limit": "лимит {n}",
8017
+ "board.loading": "Загружаем доску…",
8018
+ "board.metrics": "Метрики",
8019
+ "board.mine": "Мои: {n}",
8020
+ "board.mineHint": "Задачи, назначенные на {who}",
8021
+ "board.newTask": "Задача",
8022
+ "board.noMatch": "Ничего не найдено по запросу.",
8023
+ "board.noRepo": "без проекта",
8024
+ "board.overdueCount": "Просрочено: {n}",
8025
+ "board.overdueHint": "Показывать только просроченные задачи",
8026
+ "board.pickArchive": "В архив",
8027
+ "board.pickedCount": "выбрано: {n}",
8028
+ "board.pickMove": "Переместить в…",
8029
+ "board.pickNone": "Снять выделение",
8030
+ "board.pickStart": "Запустить выбранные",
8031
+ "board.pickUnqueue": "Убрать из очереди",
8032
+ "board.refresh": "Обновить",
8033
+ "board.repo": "репозиторий",
8034
+ "board.search": "Поиск",
8035
+ "board.shown": "показано {shown} из {total}",
8036
+ "board.someFailed": "Готово для {done} из {total}; остальные отказались.",
8037
+ "board.sync": "Проверить Gitea",
8038
+ "board.syncing": "Проверяем…",
8039
+ "board.waitCount": "Ждут вас: {n}",
8040
+ "board.waitCountHint": "Задачи, где агент задал вопрос или хочет разрешения.",
8041
+ "board.waiting": "ждёт вас",
8042
+ "boardName.main": "Доска проекта",
8043
+ "boardName.simple": "Простая доска",
8044
+ "card.assigneeHint": "Кто взял задачу",
8045
+ "card.costLimitExceeded": "Превышен лимит расходов",
8046
+ "card.due": "до {date}",
8047
+ "card.move": "переместить",
8048
+ "card.nudge": "Подтолкнуть",
8049
+ "card.nudgeHint": "Отправить указание работающему агенту",
8050
+ "card.pack": "пакет {at} из {total}",
8051
+ "card.packHint": "Запущены вместе, одна сессия; агент берёт их в таком порядке.",
8052
+ "card.pick": "Выбрать для группового запуска",
8053
+ "card.queue": "в очередь…",
8054
+ "card.revive": "возобновить работу",
8055
+ "card.stop": "остановить",
8056
+ "card.toChat": "к чату",
8057
+ "card.unqueue": "убрать из очереди",
8058
+ "checklist.add": "Добавить",
8059
+ "checklist.empty": "Пункты DoD пока не заданы.",
8060
+ "checklist.evidence": "Подтверждение: {text}",
8061
+ "checklist.placeholder": "Новый критерий DoD…",
8062
+ "checklist.progress": "DoD: {done}/{total}",
8063
+ "checklist.required": "Обязательный",
8064
+ "checklist.title": "Определение готовности (DoD)",
8065
+ "chip.moveTo": "Переместить в",
8066
+ "chip.note": "Оставить заметку",
8067
+ "chip.noteHint": "Заметка дописывается в тело задачи. Тело уходит агенту вместе с первым сообщением, поэтому заметка, оставленная до старта, попадёт в работу, а оставленная после — нет.",
8068
+ "chip.noteSave": "Дописать",
8069
+ "chip.openCard": "Открыть карточку",
8070
+ "column.backlog": "Бэклог",
8071
+ "column.cleanup": "Очистка",
8072
+ "column.deploy": "Развёртывание",
8073
+ "column.done": "Готово",
8074
+ "column.in-progress": "В работе",
8075
+ "column.review": "Проверка",
8076
+ "comments.add": "Отправить комментарий",
8077
+ "comments.authorAgent": "Агент",
8078
+ "comments.authorUser": "Пользователь",
8079
+ "comments.empty": "Комментариев пока нет.",
8080
+ "comments.placeholder": "Добавьте заметку или отзыв…",
8081
+ "comments.title": "Обсуждение и комментарии",
8082
+ "console.empty": "Вывод агента пока не записан.",
8083
+ "console.tab": "Живая консоль",
8084
+ "costMeter.active": "Плагин @goodandready/dsh-cost-meter включён",
8085
+ "costMeter.inactive": "Плагин @goodandready/dsh-cost-meter не обнаружен",
8086
+ "costMeter.notice": "Для учёта расходов и токенов нужен установленный и включённый в профиле DSH плагин @goodandready/dsh-cost-meter.",
8087
+ "dialog.archived": "в архиве",
8088
+ "dialog.bodyHint": "Уходит агенту первым сообщением при запуске задачи.",
8089
+ "dialog.cancel": "Отмена",
8090
+ "dialog.create": "Создать",
8091
+ "dialog.fromGitea": "Из Gitea",
8092
+ "dialog.imported": "уже на доске",
8093
+ "dialog.kind": "Какая задача",
8094
+ "dialog.kindPlain": "Не проект",
8095
+ "dialog.kindPlainHint": "Заметка, не связанная с репозиторием. Она живёт на простой доске и никогда не попадает в Gitea.",
8096
+ "dialog.kindProject": "Проект",
8097
+ "dialog.kindProjectHint": "В Gitea создаётся задача, и карточка привязывается к ней. Карточка живёт на доске проекта.",
8098
+ "dialog.labelsHint": "через запятую",
8099
+ "dialog.loadingRepos": "Загружаем репозитории…",
8100
+ "dialog.noIssues": "Открытых задач в Gitea не найдено.",
8101
+ "dialog.noRepos": "Репозитории недоступны",
8102
+ "dialog.own": "Своя задача",
8103
+ "dialog.pickRepo": "Выберите репозиторий",
8104
+ "dialog.repo": "Репозиторий",
8105
+ "dialog.repoNamePlaceholder": "название нового репозитория",
8106
+ "dialog.repoNew": "— новый репозиторий —",
8107
+ "dialog.repoNewHint": "Репозиторий будет создан в организации: приватный и пустой, без README и без заготовок. Создание репозитория нельзя отменить отсюда.",
8108
+ "dialog.taskBody": "Описание",
8109
+ "dialog.taskColumn": "Колонка",
8110
+ "dialog.taskLabels": "Метки",
8111
+ "dialog.taskTitle": "Заголовок",
8112
+ "dialog.title": "Новая задача",
8113
+ "diff.commits": "Коммиты ({n})",
8114
+ "diff.confirmDiscard": "Отклонить изменения в {file}?",
8115
+ "diff.discard": "Отклонить изменения",
8116
+ "diff.empty": "В рабочем дереве изменений не обнаружено.",
8117
+ "diff.filesChanged": "Изменённых файлов: {n}",
8118
+ "diff.hide": "Скрыть различия",
8119
+ "diff.show": "Показать различия",
8120
+ "diff.title": "Изменения Git и различия",
8121
+ "diff.truncated": "Различия обрезаны (превышен предел)",
8122
+ "discard": "Отклонить",
8123
+ "epic.addSubtask": "Добавить подзадачу",
8124
+ "epic.badge": "Эпик",
8125
+ "epic.createGiteaIssues": "Также создать связанные задачи в Gitea",
8126
+ "epic.noSubtasks": "Подзадач пока нет.",
8127
+ "epic.progress": "подзадач: {done}/{total}",
8128
+ "epic.subtasks": "Подзадачи",
8129
+ "epic.triage": "Разбор / Декомпозиция",
8130
+ "epic.triageHelp": "Введите по одному названию подзадачи в строке. Дочерние задачи будут связаны с этим эпиком.",
8131
+ "epic.triageSubmit": "Создать подзадачи",
8132
+ "epic.triageTitle": "Разбить задачу на подзадачи",
8133
+ "error.bad-repo-name": "Имя репозитория может содержать только латинские буквы, цифры, точку, дефис и подчёркивание.",
8134
+ "error.badImport": "Этот файл не является корректной резервной копией доски.",
8135
+ "error.crossSite": "Запрос отклонён как межсайтовый.",
8136
+ "error.gitea-unreachable": "Gitea не ответил, поэтому некому взять задачу.",
8137
+ "error.giteaAbsent": "Плагин Gitea не установлен, поэтому импорт недоступен.",
8138
+ "error.giteaUnconfigured": "Сначала настройте Gitea в карточке плагина Gitea.",
8139
+ "error.issue-not-created": "Задача в Gitea не создана. Если репозиторий был новым, он остался — ничего не удалено.",
8140
+ "error.issueNotFound": "Задача в Gitea не найдена.",
8141
+ "error.modelNotSelected": "Модель не выбрана — выберите её в настройках или укажите здесь.",
8142
+ "error.no-live-sessions": "Нет работающей сессии, в очередь которой можно добавить задачу.",
8143
+ "error.permission-refused": "В доступе отказано; задача не запущена.",
8144
+ "error.permission-unavailable": "В этом развёртывании нет уровней доступа — задача не запущена, поэтому выполнить её с правами выше запрошенных не удалось.",
8145
+ "error.repo-not-created": "Репозиторий не создан; больше ничего не сделано.",
8146
+ "error.repo-required": "Выберите репозиторий или укажите название нового.",
8147
+ "error.session-not-live": "Эта сессия больше не работает.",
8148
+ "error.sessionNotOpened": "Сессия запущена ({id}), но эта сборка не может переключиться на неё. Найдите её в списке сессий.",
8149
+ "error.startFailed": "Не удалось запустить сессию.",
8150
+ "error.task-not-queued": "Эта задача не в очереди.",
8151
+ "error.taskHasNoIssue": "У этой задачи нет связанной задачи в Gitea.",
8152
+ "error.taskNotFound": "Задача не найдена.",
8153
+ "error.timeout": "Время ожидания запроса истекло. Попробуйте ещё раз.",
8154
+ "error.titleRequired": "Заголовок обязателен.",
8155
+ "error.unknown": "Запрос не выполнен.",
8156
+ "facet.assignee": "Исполнитель",
8157
+ "facet.author": "Автор",
8158
+ "facet.priority": "Приоритет",
8159
+ "facet.release": "Релиз",
8160
+ "facet.repo": "Репозиторий",
8161
+ "facet.risk": "Риск",
8162
+ "facet.scope": "Область",
8163
+ "facet.signal": "Сигнал",
8164
+ "facet.status": "Статус",
8165
+ "facet.type": "Тип",
8166
+ "field.announceToAgent": "Передавать доску в системном промпте",
8167
+ "field.archiveAfterDays": "Срок архивации готовой карточки (дни)",
8168
+ "field.autoSyncSessions": "Автосинхронизация внешних чат-сессий",
8169
+ "field.boardToolEnabled": "Разрешить агенту перемещать карточки",
8170
+ "field.columnNames": "Свои названия колонок",
8171
+ "field.costMeterEnabled": "Телеметрия Cost Meter",
8172
+ "field.cronEnabled": "Включить cron задач на стороне хоста",
8173
+ "field.defaultProjectRoot": "Корень проекта",
8174
+ "field.giteaOwner": "Организация Gitea",
8175
+ "field.giteaTokenRef": "Имя учётных данных",
8176
+ "field.giteaUrl": "URL экземпляра",
8177
+ "field.githubOwner": "Организация или пользователь GitHub",
8178
+ "field.githubTokenRef": "Токен учётных данных GitHub",
8179
+ "field.githubWebhookSecretRef": "Секрет вебхука GitHub",
8180
+ "field.gitProvider": "Провайдер Git",
8181
+ "field.maxConcurrentSessions": "Максимум одновременных сессий агента",
8182
+ "field.permissionGateEnabled": "Включить шлюз подтверждения разрешений",
8183
+ "field.preventIdleSleep": "Не давать системе засыпать в простое",
8184
+ "field.progressDumpEnabled": "Включить передачи PROGRESSDUMP",
8185
+ "field.pushToGitea": "Закрывать задачу в Gitea",
8186
+ "field.replyInstruction": "Постоянная заметка",
8187
+ "field.sessionDefaultPermission": "Базовый уровень разрешений по умолчанию",
8188
+ "field.staleAfterMin": "Срок молчания задачи (минуты)",
8189
+ "field.startPrompt": "Шаблон первого сообщения",
8190
+ "field.syncIntervalSec": "Интервал проверки Gitea (секунды)",
8191
+ "field.taskCostLimit": "Лимит расходов на задачу (USD)",
8192
+ "field.verificationCommand": "Команда проверки",
8193
+ "field.verificationGateEnabled": "Шлюз проверки",
8194
+ "field.verificationTimeoutMs": "Тайм-аут проверки (мс)",
8195
+ "field.watchRepos": "Ограничить сбор этими репозиториями",
8196
+ "field.webhookSecretRef": "Имя учётных данных вебхука",
8197
+ "field.wipInProgress": "Лимит колонки «В работе»",
8198
+ "field.wipReview": "Лимит колонки «Проверка»",
8199
+ "field.workspaceClaimBoundaries": "Границы закрепления рабочей области",
8200
+ "field.worktreeIsolation": "Изолировать задачи в рабочих деревьях git",
8201
+ "field.worktreeRoot": "Каталог рабочих деревьев",
8202
+ "filter.active": "Активные",
8203
+ "filter.all": "Все",
8204
+ "filter.epics": "Эпики",
8205
+ "filter.review": "Проверка",
8206
+ "filter.stale": "Молчащие",
8207
+ "group.assignee": "По исполнителю",
8208
+ "group.forge": "Git-фордж",
8209
+ "group.general": "Общее",
8210
+ "group.gitea": "Gitea",
8211
+ "group.github": "GitHub",
8212
+ "group.limits": "Лимиты колонок",
8213
+ "group.nobody": "никто не взял",
8214
+ "group.repo": "По проекту",
8215
+ "group.sync": "Автоматические переходы",
8216
+ "hint.announceToAgent": "Добавляет раздел с указаниями в системный промпт агента.",
8217
+ "hint.archiveAfterDays": "Считается с момента, когда карточка попала в «Готово». Ноль оставляет всё на доске.",
8218
+ "hint.autoSyncSessions": "Автоматически создаёт карточки доски для обычных диалогов DSH.",
8219
+ "hint.boardToolEnabled": "Выключено, пока навык workflow запрещает этой CLI работать с канбаном.",
8220
+ "hint.columnNames": "Пары «id=Название» через запятую, например «backlog=Идеи, review=Проверка». Пустое значение оставляет обычные названия.",
8221
+ "hint.costMeterEnabled": "Включает интеграцию телеметрии токенов и расходов через @goodandready/dsh-cost-meter.",
8222
+ "hint.cronEnabled": "Запускает задачи по пятисегментному cron на хосте, даже если браузер закрыт.",
8223
+ "hint.defaultProjectRoot": "Где живут рабочие копии проектов. Пустое значение — рабочий каталог Harness.",
8224
+ "hint.giteaOwner": "Чьи репозитории отслеживает доска. Пустое значение подходит, пока токен принадлежит ровно одной организации.",
8225
+ "hint.giteaTokenRef": "ИМЯ учётных данных DSH, в которых хранится токен. Никогда не вводите сам токен сюда.",
8226
+ "hint.giteaUrl": "Например https://gitea.example.com. Пустое значение означает, что импорт недоступен.",
8227
+ "hint.githubOwner": "Учётная запись GitHub, отслеживаемая по умолчанию. Пустое значение — авторизованный пользователь.",
8228
+ "hint.githubTokenRef": "Имя учётных данных DSH, в которых хранится PAT или токен приложения GitHub. Никогда не вводите сам токен.",
8229
+ "hint.githubWebhookSecretRef": "Имя учётных данных DSH, в которых хранится секрет вебхука GitHub (HMAC-SHA256).",
8230
+ "hint.gitProvider": "Активный фордж: «auto» (определять по учётным данным), «gitea» или «github».",
8231
+ "hint.label": "Пустое значение — для этой колонки метка не задана.",
8232
+ "hint.limit": "Ноль — без ограничения. Превышение подсвечивается, но не блокируется.",
8233
+ "hint.permissionGateEnabled": "Требует ручного подтверждения пользователя перед запуском задач с повышенными разрешениями.",
8234
+ "hint.preventIdleSleep": "Не даёт хосту уснуть, пока задачи выполняются или стоят наготове.",
8235
+ "hint.progressDumpEnabled": "Захватывает дампы прогресса сессии и даёт чистые вступления следующим агентам.",
8236
+ "hint.pushToGitea": "Карточка, дошедшая до «Готово», закрывает свою задачу в Gitea. Доска метки не ставит: шаг и так виден по ветке и запросу на слияние.",
8237
+ "hint.replyInstruction": "Дописывается к каждому первому сообщению — например, язык ответа. Пустое значение ничего не добавляет.",
8238
+ "hint.sessionDefaultPermission": "Задачи, запрашивающие разрешения выше этого уровня, требуют подтверждения.",
8239
+ "hint.staleAfterMin": "Отмечаются только задачи, у которых есть сессия. Ноль отключает отметку.",
8240
+ "hint.startPrompt": "Шаблон первого сообщения агенту. Пустое значение — встроенный шаблон.",
8241
+ "hint.syncIntervalSec": "Ноль отключает проверку. Значение меньше пятнадцати секунд поднимается до пятнадцати.",
8242
+ "hint.taskCostLimit": "Порог расходов на задачу в USD; 0 отключает предупреждения о пороге.",
8243
+ "hint.verificationCommand": "Команда проверки по умолчанию, выполняемая в рабочем дереве задачи перед переходом в «Проверка» (по умолчанию: npm test).",
8244
+ "hint.verificationGateEnabled": "Запускает автоматический шлюз проверки (например, npm test), прежде чем разрешить карточкам перейти в «Проверка».",
8245
+ "hint.verificationTimeoutMs": "Тайм-аут выполнения шлюза проверки в миллисекундах (по умолчанию: 120000).",
8246
+ "hint.watchRepos": "Через запятую: «owner/repo» или только «repo». Пустое значение — все репозитории организации, где есть открытые задачи.",
8247
+ "hint.webhookSecretRef": "ИМЯ учётных данных DSH, в которых хранится секрет вебхука Gitea. Пустое значение оставляет только опрос.",
8248
+ "hint.worktreeIsolation": "Создаёт отдельное рабочее дерево git для каждой сессии задачи, чтобы файлы не конфликтовали.",
8249
+ "hint.worktreeRoot": "Свой каталог для рабочих деревьев задач. Оставьте пустым, чтобы использовать $DSH_HOME/worktrees.",
8250
+ "metrics.columns": "Время в колонке",
8251
+ "metrics.empty": "Переходов пока нет — измерять нечего.",
8252
+ "metrics.hint": "Задач на доске: {n} · готово за неделю: {week} · за месяц: {month}",
8253
+ "metrics.mean": "среднее {time}",
8254
+ "metrics.median": "медиана {time}",
8255
+ "metrics.noStale": "Ничего не лежит так долго.",
8256
+ "metrics.stale": "Стоит без движения дольше {days} дн.",
8257
+ "move.backlog": "Работа над задачей останавливается: текущий раунд агента прерывается. Если сессии нет, карточка просто переезжает.",
8258
+ "move.cleanup": "Агент удаляет ветку Gitea, рабочее дерево и локальную ветку и записывает это в задачу в Gitea.",
8259
+ "move.confirm": "Переместить",
8260
+ "move.deploy": "Агент сливает запрос на слияние и выполняет развёртывание. Этот переход — ваше явное согласие на развёртывание, агент больше не спросит.",
8261
+ "move.done": "Задача считается выполненной. Это решение человека: агент сам никогда не переносит сюда карточки.",
8262
+ "move.in-progress": "Агенту дано указание начать или продолжить реализацию.",
8263
+ "move.review": "Агент передаёт работу на проверку: снимает отметку «черновик» с запроса на слияние и просит проверить.",
8264
+ "move.title": "Переместить в «{column}»?",
8265
+ "nudge.failed": "Не удалось доставить указание",
8266
+ "nudge.placeholder": "Введите немедленное указание или поправку для агента…",
8267
+ "nudge.send": "Отправить",
8268
+ "nudge.sending": "Отправляем…",
8269
+ "nudge.success": "Указание доставлено агенту",
8270
+ "nudge.title": "Управление в реальном времени",
8271
+ "order.manual": "Как разложено",
8272
+ "order.new": "Сначала новые",
8273
+ "order.old": "Сначала старые",
8274
+ "panel.agentPreset": "Профиль агента",
8275
+ "panel.archive": "В архив",
8276
+ "panel.assignDrop": "Отпустить здесь",
8277
+ "panel.assignee": "исполнитель: {who}",
8278
+ "panel.assignMe": "Взять",
8279
+ "panel.author": "автор: {who}",
8280
+ "panel.bodyLoading": "читаем описание…",
8281
+ "panel.cleanupWorktree": "Очистить рабочее дерево",
8282
+ "panel.close": "Закрыть",
8283
+ "panel.continue": "Продолжить",
8284
+ "panel.continueHint": "У задачи остаётся свой чат: открывается существующая сессия, а не новая.",
8285
+ "panel.created": "создано {ago} назад",
8286
+ "panel.delete": "Удалить",
8287
+ "panel.deleteConfirm": "Удалить «{title}»? Это нельзя отменить.",
8288
+ "panel.due": "Срок выполнения",
8289
+ "panel.issue": "Задача в Gitea",
8290
+ "panel.labels": "Метки",
8291
+ "panel.log": "Переходы",
8292
+ "panel.message": "Сообщение агенту",
8293
+ "panel.messageHint": "Отредактируйте перед отправкой. Пустое значение — встроенный текст.",
8294
+ "panel.model": "Модель",
8295
+ "panel.noLog": "Переходов пока нет.",
8296
+ "panel.noModels": "Этот провайдер не предлагает моделей",
8297
+ "panel.noProviders": "Провайдеры недоступны",
8298
+ "panel.openChat": "Открыть чат",
8299
+ "panel.permission": "Уровень доступа",
8300
+ "panel.pickModel": "Выберите модель",
8301
+ "panel.pickProvider": "Выберите провайдера",
8302
+ "panel.pickProviderFirst": "Сначала выберите провайдера",
8303
+ "panel.presetDefault": "По умолчанию Harness",
8304
+ "panel.priority": "Приоритет",
8305
+ "panel.priorityNone": "Без приоритета",
8306
+ "panel.provider": "Провайдер",
8307
+ "panel.refresh": "Обновить из Gitea",
8308
+ "panel.saveEdit": "Сохранить",
8309
+ "panel.start": "Запустить",
8310
+ "panel.startHint": "Для этой задачи открывается отдельная сессия агента. Ветку и рабочее дерево создаёт агент после своей подготовки, а не здесь.",
8311
+ "panel.starting": "Запускаем…",
8312
+ "panel.startWorkflow": "⚡ Workflow",
8313
+ "panel.startWorkflowHint": "Запустить мультиагентный workflow через базовый движок workflow",
8314
+ "panel.updated": "последнее изменение {ago} назад",
8315
+ "panel.verificationFailed": "Автоматическая проверка перед переводом в «Ревью» не пройдена",
8316
+ "panel.workDir": "Рабочая папка: {path}",
8317
+ "panel.workDirHint": "Корень проекта не задан в настройках, поэтому используется эта папка.",
8318
+ "panel.worktree": "Рабочее дерево: {path}",
8319
+ "panel.worktreeDirty": "Незакоммиченные изменения в рабочем дереве: {files}",
8320
+ "plan.counter": "{done} из {total}",
8321
+ "plan.title": "План агента",
8322
+ "pr.create": "Создать PR в Gitea",
8323
+ "pr.created": "Создан PR #{n}",
8324
+ "pr.creating": "Создание PR…",
8325
+ "pr.view": "Посмотреть PR",
8326
+ "priority.high": "Высокий",
8327
+ "priority.low": "Низкий",
8328
+ "priority.medium": "Средний",
8329
+ "queue.add": "В очередь",
8330
+ "queue.hint": "Задача попадает в очередь сессии: агент возьмёт её, когда закончит текущую работу. До этого карточка остаётся на месте.",
8331
+ "queue.option": "{title} — задач: {n}",
8332
+ "queue.session": "Сессия",
8333
+ "queue.title": "Добавить в работающую сессию",
8334
+ "reasoning.default": "По умолчанию (модель)",
8335
+ "reasoning.high": "Высокий (глубокое мышление)",
8336
+ "reasoning.label": "Уровень рассуждения",
8337
+ "reasoning.low": "Низкий (быстро / экономно)",
8338
+ "reasoning.medium": "Средний (сбалансированно)",
8339
+ "report.artifacts": "Артефакты",
8340
+ "report.changedFiles": "Изменённые файлы",
8341
+ "report.checksRun": "Проверки",
8342
+ "report.risks": "Риски и заметки",
8343
+ "report.summary": "Сводка",
8344
+ "report.title": "Отчёт о выполнении",
8345
+ "revive.fresh": "Старая сессия исчезла, поэтому началась новая; прежней беседы больше нет.",
8346
+ "revive.same": "Старая сессия вернулась — беседа там, где вы её оставили.",
8347
+ "save": "Сохранить",
8348
+ "section.label": "Канбан",
8349
+ "settings.loading": "Загрузка настроек…",
8350
+ "settings.readOnly": "В этой сессии настройки доступны только для чтения.",
8351
+ "settings.saved": "Сохранено.",
8352
+ "settings.saveFailed": "Не удалось сохранить: {fields}",
8353
+ "settings.unavailable": "Хост не знает пространство настроек dsh-kanban. После установки плагина перезапустите веб-интерфейс.",
8354
+ "slash.hint": "Введите / для команд и навыков",
8355
+ "state.queued": "в очереди · {n}",
8356
+ "state.running": "в работе",
8357
+ "state.stopped": "остановлено",
8358
+ "stop.idle": "Агент не работал — останавливать было нечего.",
8359
+ "stop.no-session": "У этой задачи нет сессии.",
8360
+ "subtitle": "Доска задач: задачи Gitea и отдельная сессия на каждую задачу",
8361
+ "sync.failed": "проверка не проходит",
8362
+ "sync.lastSeen": "последняя успешная проверка {ago} назад",
8363
+ "sync.never": "ещё не проверялось в Gitea",
8364
+ "sync.neverSeen": "с момента запуска Harness успешных проверок не было",
8365
+ "sync.okAgo": "проверено {ago} назад",
8366
+ "sync.running": "проверка в Gitea…",
8367
+ "task.confirmPermission": "Подтвердить разрешение",
8368
+ "task.cron": "Расписание Cron",
8369
+ "task.nextRun": "Следующий запуск: {date}",
8370
+ "task.noRuns": "Запусков пока нет",
8371
+ "task.permissionConfirmed": "Разрешение подтверждено",
8372
+ "task.permissionGateWarning": "Требуется подтверждение для повышенного разрешения ({permission})",
8373
+ "task.progressDump": "Снимок прогресса (передача)",
8374
+ "task.runs": "История выполнения",
8375
+ "telemetry.cache": "Из кэша",
8376
+ "telemetry.cost": "Расчётная стоимость",
8377
+ "telemetry.input": "Ввод",
8378
+ "telemetry.limit": "Лимит бюджета",
8379
+ "telemetry.output": "Вывод",
8380
+ "telemetry.title": "Телеметрия ресурсов",
8381
+ "telemetry.tokens": "Токены",
8382
+ "template.bugfix": "Исправление ошибки (устранение дефекта)",
8383
+ "template.feature": "Функция (новая функциональность)",
8384
+ "template.label": "Шаблон задачи",
8385
+ "template.none": "Нет (пустой шаблон)",
8386
+ "template.refactor": "Рефакторинг (очистка кода)",
8387
+ "template.release": "Релиз (подготовка релиза)",
8388
+ "template.security": "Безопасность (аудит и CVE)",
8389
+ "time.day": "{n} д",
8390
+ "time.hour": "{n} ч",
8391
+ "time.min": "{n} мин",
8392
+ "time.now": "только что",
8393
+ "title": "Канбан",
8394
+ "updater.check": "Проверить обновления",
8395
+ "updater.checking": "Проверка…",
8396
+ "updater.current": "Текущая версия",
8397
+ "updater.failed": "Не удалось проверить обновления: ",
8398
+ "updater.latest": "Последняя версия",
8399
+ "updater.success": "Плагин успешно обновлён. Перезапустите службу DSH.",
8400
+ "updater.title": "Обновления плагинов",
8401
+ "updater.updateNow": "Обновить до v{version}",
8402
+ "updater.updating": "Обновление…",
8403
+ "updater.upToDate": "Всё актуально"
8404
+ },
8405
+ "dsh-voice": {
8406
+ "addCustom": "Добавить своего провайдера",
8407
+ "addMacro": "Добавить макрос",
8408
+ "addProvider": "Добавить провайдера",
8409
+ "assistantSpeakingGated": "Ассистент говорит (режим приглушения)",
8410
+ "autoSendVisualRing": "Анимация обратного отсчёта кольца тишины",
8411
+ "avgLatency": "Средняя задержка",
8412
+ "badgeHostOffline": "Хост недоступен",
8413
+ "badgeHostOnline": "Хост на связи ({ms} мс)",
8414
+ "badgeProviders": "Провайдеров готово: {count}",
8415
+ "badgeSenseVoiceActive": "SenseVoice активен",
8416
+ "badgeSenseVoiceInactive": "SenseVoice не в сети",
8417
+ "badgeWhisperActive": "Whisper активен",
8418
+ "badgeWhisperInactive": "Whisper не в сети",
8419
+ "bargeIn": "Перебивание",
8420
+ "bargeInDesc": "Настоящее перебивание (ваша речь прерывает речь ассистента)",
8421
+ "beep": "Звуковой сигнал при старте и остановке",
8422
+ "benchmarkHint": "Измеряет коэффициент реального времени (RTF) и задержку инференса на аудио 1.0 с для текущего провайдера выполнения.",
8423
+ "benchmarking": "Выполняется тест производительности…",
8424
+ "benchmarkTitle": "Тест производительности оборудования (скорость и задержка)",
8425
+ "bilingualDeveloperPrompt": "Двуязычный контекст для разработчика (RU/EN)",
8426
+ "bilingualDeveloperPromptHint": "Подсказывать модели STT технические термины и команды CLI, чтобы не было фонетической транслитерации",
8427
+ "browserFailed": "Браузер не распознал: ",
8428
+ "browserHint": "Распознавание Web Speech (в режиме авто использует язык страницы или браузера, Chrome отправляет аудио в Google)",
8429
+ "browserWebGpu": "Whisper в браузере через WebGPU (офлайн)",
8430
+ "browserWebGpuHint": "Запускает модель Whisper прямо на GPU в браузере через WebGPU/WASM: офлайн, без отправки на хост и в облако.",
8431
+ "calibratedMsg": "Порог задан: {db} дБ (фон: {noise} дБ)",
8432
+ "calibratedValue": "Откалибровано",
8433
+ "calibrateNoise": "Калибровка шума (2 с)",
8434
+ "calibrateNoiseHint": "Измерить шум в помещении за 2 секунды и автоматически задать оптимальный шумовой порог",
8435
+ "calibrating": "Измеряем шум…",
8436
+ "cancel": "Отмена",
8437
+ "cancelPreview": "Отмена",
8438
+ "cardHint": "Диктовка и голосовые сообщения: провайдеры, цепочки, локальный whisper",
8439
+ "chainHint": "Сверху вниз — порядок перебора",
8440
+ "checkingUpdates": "Проверяем обновления…",
8441
+ "clearKey": "Очистить ключ",
8442
+ "clipping": "Перегрузка",
8443
+ "clippingHint": "Слишком громко (перегрузка)",
8444
+ "collapse": "Свернуть",
8445
+ "composerUnavailable": "Поле ввода недоступно",
8446
+ "contextGlossary": "Внедрение глоссария в контекст",
8447
+ "contextGlossaryHint": "Автоматически извлекать идентификаторы кода и термины из поля ввода, чтобы повысить точность STT",
8448
+ "customHint": "Любой совместимый с OpenAI API. Имя станет доступно в цепочках выше.",
8449
+ "customKeyName": "имя ключа",
8450
+ "customModel": "модель",
8451
+ "customModelHint": "модель для запроса (пусто — значит встроенная)",
8452
+ "customName": "имя, используемое в цепочке",
8453
+ "customTitle": "Свои провайдеры",
8454
+ "deepgramEndpoint": "Deepgram: базовый URL",
8455
+ "deepgramEndpointHint": "Базовый URL для Deepgram или собственного развёртывания (по умолчанию https://api.deepgram.com)",
8456
+ "deepinfraHint": "openai/whisper-large-v3-turbo · ключ DEEPINFRA_API_KEY",
8457
+ "diagBytes": "Аудио: {bytes} Б",
8458
+ "diagExportNotice": "Экспортированный JSON содержит обезличенные тайминги, цепочку провайдеров, формат MIME и коды ошибок, но не сырое аудио и не расшифровки речи.",
8459
+ "diagLatencyBreakdown": "Разбор задержки:",
8460
+ "diagnosticsExportSuccess": "Отчёт скачан",
8461
+ "diagPolish": "Полировка: {ms} мс",
8462
+ "diagStt": "STT: {ms} мс",
8463
+ "diagTotal": "Всего: {ms} мс",
8464
+ "diagVad": "VAD: {ms} мс",
8465
+ "diagWords": "Слов: {count}",
8466
+ "dictationBtn": "Голосовой набор",
8467
+ "dictationHint": "Речь делится на паузах, а текст добавляется к введённому.",
8468
+ "dictationModeDesc": "Выберите, как обрабатывать продиктованную речь перед вставкой: дословно (0 вызовов LLM), чистый текст (форматирование и удаление слов-паразитов), задача агента (структурированная подсказка) или заметка (ключевые тезисы и действия).",
8469
+ "dictationModeTitle": "Режим постобработки диктовки",
8470
+ "dictationPill": "Диктовка — текст добавляется к введённому",
8471
+ "dictationPromptsDesc": "Свои шаблоны подсказок для постобработки диктовки. Используйте {text} как плейсхолдер для распознанной речи.",
8472
+ "dictationPromptsTitle": "Шаблоны подсказок для диктовки",
8473
+ "down": "Вниз",
8474
+ "editablePreview": "Предпросмотр с правкой перед отправкой",
8475
+ "editablePreviewHint": "Показывать распознанный текст перед отправкой с возможностью правки, сравнения и отмены.",
8476
+ "editPreview": "Править",
8477
+ "error": "Ошибка",
8478
+ "errorPrefix": "Ошибка",
8479
+ "expand": "Развернуть",
8480
+ "exportDiagnosticsBtn": "Экспортировать отчёт диагностики",
8481
+ "exportingDiagnostics": "Экспортируем отчёт…",
8482
+ "fast": "Быстро",
8483
+ "fireworksHint": "whisper-v3-turbo · ключ FIREWORKS_API_KEY",
8484
+ "gatedTurnTaking": "Режим приглушения (микрофон выключается, пока говорит ассистент)",
8485
+ "general": "Общее",
8486
+ "hardwareDesc": "Микрофон, локальный whisper.cpp и настройки среды выполнения SenseVoice.",
8487
+ "hardwareTitle": "Оборудование и локальные движки",
8488
+ "hide": "Скрыть",
8489
+ "holdHint": "Удерживайте — отпустите, чтобы отправить",
8490
+ "hotkey": "Клавиша голосового сообщения",
8491
+ "hotkeyHint1": "Удерживайте для записи, отпустите, чтобы отправить агенту, Esc отменяет. ",
8492
+ "hotkeyHint2": "Подойдёт любая клавиша: буква, функциональная клавиша или клавиша-модификатор.",
8493
+ "idle": "Вызовов нет",
8494
+ "installingSensevoice": "Устанавливаем SenseVoice…",
8495
+ "installSensevoice": "Установить SenseVoice-Small (в один клик)",
8496
+ "jargonAdd": "Добавить замену",
8497
+ "jargonFormatHint": " (произносимое -> замена)",
8498
+ "jargonFrom": "Произносимый сленг",
8499
+ "jargonPlaceholder": "k8s -> kubernetesnpr -> pull request",
8500
+ "jargonTitle": "Лексикон разработчика и IT-жаргон",
8501
+ "jargonTo": "Правильное написание",
8502
+ "keepPending": "Не отправлять",
8503
+ "keySpace": "Пробел",
8504
+ "keyUnset": "не задан",
8505
+ "langAuto": "Автоопределение",
8506
+ "langDe": "Немецкий (de)",
8507
+ "langEn": "Английский (en)",
8508
+ "langRu": "Русский (ru)",
8509
+ "language": "Язык",
8510
+ "langUk": "Украинский (uk)",
8511
+ "langZh": "Китайский (zh)",
8512
+ "lastRecording": "Последнее голосовое сообщение",
8513
+ "listenBack": "Прослушать",
8514
+ "listening": "Слушаем в браузере…",
8515
+ "liveInterimPreview": "Живой предпросмотр речи (предпросмотр призрачным текстом)",
8516
+ "llmUnavailableFallback": "LLM недоступна, показываем сырую расшифровку",
8517
+ "loadingSettings": "Загружаем настройки…",
8518
+ "localHint": "задаётся при запуске сервера",
8519
+ "localOnly": "Только локальный whisper",
8520
+ "localOnlyHint": "Ограничить обе цепочки локальным сервером whisper.cpp: полностью офлайн.",
8521
+ "lowVolume": "Слабый сигнал",
8522
+ "lowVolumeHint": "Говорите громче",
8523
+ "macroDelete": "Удалить",
8524
+ "macroTemplate": "Раскрытый шаблон подсказки",
8525
+ "macroTrigger": "Произносимая триггерная фраза",
8526
+ "messageBtn": "Голосовое сообщение — нажмите или удерживайте",
8527
+ "messageHint": "Одна целая запись, отправленная агенту после расшифровки.",
8528
+ "messagePill": "Записываем голосовое сообщение",
8529
+ "messageTitle": "Голосовое сообщение",
8530
+ "mic": "Микрофон",
8531
+ "micDefault": "Системное по умолчанию",
8532
+ "micLevel": "Уровень микрофона",
8533
+ "micUnavailable": "Микрофон недоступен: нужен HTTPS или localhost",
8534
+ "mistralHint": "voxtral-mini-latest · ключ MISTRAL_API_KEY",
8535
+ "modeClean": "Чистый текст",
8536
+ "modeNote": "Заметка",
8537
+ "modeTask": "Задача агента",
8538
+ "modeVerbatim": "Дословно",
8539
+ "noiseGate": "Шумовой порог (дБ)",
8540
+ "noiseGateHint": "Заглушать фоновый гул вентилятора и щелчки клавиатуры ниже порога. Выключено — порог отключён.",
8541
+ "noiseGateOff": "Выключено",
8542
+ "noiseSuppression": "Аппаратное шумоподавление",
8543
+ "noiseSuppressionHint": "Включить шумоподавление в браузере, подавление эха и автоподстройку усиления",
8544
+ "noRecognitionsYet": "Записей о распознавании пока нет.",
8545
+ "noRecorder": "MediaRecorder не поддерживается этим браузером",
8546
+ "normal": "Обычный",
8547
+ "normalizeTranscript": "Нормализовать расшифровки файлов",
8548
+ "normalizeTranscriptHint": "transcribe_audio: числа словами — цифрами, пунктуация приводится в порядок",
8549
+ "nothingHeard": "Ничего не распознано",
8550
+ "nothingToUndo": "Отменять нечего",
8551
+ "notReady1": "DSH ещё не получил настройки этого плагина. Если он только что перезапустился, ",
8552
+ "notReady2": "раздел появится сам через несколько секунд.",
8553
+ "npuProvider": "Аппаратное ускорение (NPU SBC / хост)",
8554
+ "npuProviderHint": "Провайдер выполнения для SenseVoice / sherpa-onnx: CPU, NPU Rockchip RK3588 (rknpu), OpenVINO или CUDA.",
8555
+ "npuThreads": "Потоки (CPU/SBC)",
8556
+ "openaiHint": "whisper-1 · ключ OPENAI_API_KEY",
8557
+ "openrouterHint": "google/gemini-2.5-flash · ключ OPENROUTER_API_KEY",
8558
+ "openrouterWarning": "В OpenRouter нет /audio/transcriptions — используйте там шаблон openai-chat-audio",
8559
+ "pause": "Пауза",
8560
+ "pauseHint": "Меньшее значение даёт более частые фрагменты и быстрее текст, но повышает риск разрезать слово",
8561
+ "pauseMs": "Пауза, завершающая фразу, мс",
8562
+ "play": "Воспроизвести",
8563
+ "polish": "Полировать расшифровку моделью",
8564
+ "polishBaseUrl": "Адрес офлайн-полировки",
8565
+ "polishBaseUrlHint": "Базовый URL /chat/completions, совместимый с OpenAI, например локальный Ollama. Пусто — модель DSH",
8566
+ "polishedText": "Отполировано",
8567
+ "polishHint": "Исправлять пунктуацию и слова-паразиты моделью DSH перед вставкой",
8568
+ "polishKeyEnv": "Учётные данные ключа офлайн-полировки",
8569
+ "polishModel": "Модель офлайн-полировки",
8570
+ "polishSend": "Полировать весь черновик перед отправкой",
8571
+ "polishSendHint": "Прогнать собранный черновик через модель прямо перед отправкой",
8572
+ "pressKey": "Нажмите клавишу…",
8573
+ "profileLockCheckError": "Проверка блокировки профиля не удалась. Требуется осмотр файловой системы (не удаляйте файл блокировки).",
8574
+ "profileLockedExisting": "Профиль заблокирован существующим файлом блокировки. Если он устарел, следуйте задокументированной процедуре восстановления оператором.",
8575
+ "profileLockedPid": "Профиль заблокирован процессом (PID {pid}). Если блокировка устарела, следуйте задокументированной процедуре восстановления оператором.",
8576
+ "promptClean": "Подсказка для чистого текста",
8577
+ "promptNote": "Подсказка для заметки",
8578
+ "promptTask": "Подсказка для задачи агента",
8579
+ "providerDashboard": "Задержка и состояние провайдеров",
8580
+ "rawTab": "Сырой STT",
8581
+ "rawText": "Сырой",
8582
+ "recentRecognitionsTitle": "Телеметрия последних распознаваний",
8583
+ "recognitionError": "не удалось распознать",
8584
+ "recordSlot": "Запись голоса",
8585
+ "refreshStats": "Обновить статистику",
8586
+ "remove": "Убрать",
8587
+ "resetPrompts": "Сбросить к значениям по умолчанию",
8588
+ "resultTab": "Результат",
8589
+ "retry": "Повторить",
8590
+ "runBenchmarkBtn": "Запустить тест производительности",
8591
+ "save": "Сохранить",
8592
+ "saved": "Сохранено ✓",
8593
+ "saveFailed": "Некоторые поля не сохранены —",
8594
+ "secondsShort": " с",
8595
+ "sendDelay": "Задержка отправки диктовки (мс)",
8596
+ "sendDelayHint": "Ждать перед добавлением продиктованной фразы, оставляя окно для отмены. 0 — выключено",
8597
+ "sendingIn": "Отправка агенту через",
8598
+ "sendNow": "Отправить",
8599
+ "sensevoiceAutostart": "Автозапуск сервера SenseVoice",
8600
+ "sensevoiceBin": "SenseVoice: исполняемый файл",
8601
+ "sensevoiceBinHint": "используется при включённом автозапуске",
8602
+ "sensevoiceDesc": "Сверхбыстрое офлайн-распознавание речи на CPU (задержка 50–100 мс, русский и английский).",
8603
+ "sensevoiceDownloading": "Скачиваем модель…",
8604
+ "sensevoiceEndpoint": "SenseVoice: адрес",
8605
+ "sensevoiceEndpointHint": "POST-адрес sherpa-onnx или совместимого сервера",
8606
+ "sensevoiceHint": "SenseVoice-ONNX / Sherpa-ONNX · сверхбыстрый локальный STT (~50 мс)",
8607
+ "sensevoiceModel": "SenseVoice: путь к модели",
8608
+ "sensevoiceModelHint": "Абсолютный путь или идентификатор модели SenseVoice / sherpa-onnx",
8609
+ "sensevoiceNotInstalled": "Не установлен",
8610
+ "sensevoiceReady": "Готов",
8611
+ "sensevoiceTitle": "Локальное распознавание речи SenseVoice (настройка в один клик)",
8612
+ "sessionCommands": "Голосовые команды сессии",
8613
+ "sessionCommandsHint": "«send», «cancel», «stop», «continue» управляют сессией, а не попадают в текст",
8614
+ "sessionMismatch": "Активен другой чат; отменено, чтобы не допустить утечки.",
8615
+ "silence": "Пауза…",
8616
+ "siliconflowHint": "FunAudioLLM/SenseVoiceSmall · ключ SILICONFLOW_API_KEY",
8617
+ "slow": "Медленно",
8618
+ "smartActionsTitle": "Голосовое управление и умные действия",
8619
+ "speaking": "Вы говорите…",
8620
+ "statusDesc": "Текущее состояние подключения к голосовым бэкендам и сервисам распознавания.",
8621
+ "statusTitle": "Подключение и состояние движков",
8622
+ "stop": "Остановить",
8623
+ "stopTest": "Остановить тест",
8624
+ "stream": "Непрерывная диктовка",
8625
+ "streamChunkMs": "Фрагмент потока (мс)",
8626
+ "streamHint": "Фразы делятся по таймеру, пока вы говорите, вместо ожидания долгой паузы",
8627
+ "streamingWs": "Потоковый WebSocket",
8628
+ "streamingWsHint": "Потоковая передача аудио по WebSocket в реальном времени в локальный ASR",
8629
+ "structuredPromptVoice": "Голосовые ответы на интерактивные подсказки с выбором",
8630
+ "successRate": "Успех",
8631
+ "techJargonCorrection": "Автоисправление технического жаргона (GitHub, Docker, pnpm, Kubernetes и т. д.)",
8632
+ "testMic": "Проверить микрофон",
8633
+ "title": "Голос",
8634
+ "transcribing": "Расшифровываем…",
8635
+ "turnTakingDesc": "Согласовать говорение и слушание, чтобы звук ассистента не попадал обратно в микрофон.",
8636
+ "turnTakingTitle": "Очередность и координация аудио",
8637
+ "uiError": "Ошибка голосового интерфейса:",
8638
+ "undo": "Отменить последнюю вставку",
8639
+ "undoHint": "Сколько ещё можно отменить автоматическую отправку",
8640
+ "undoMs": "Окно отмены, мс",
8641
+ "undone": "Вставка отменена",
8642
+ "up": "Вверх",
8643
+ "updateAvailable": "Доступно обновление",
8644
+ "updateCheckFailed": "Не удалось проверить обновление",
8645
+ "updateFailed": "Не удалось обновить. Проверьте журналы.",
8646
+ "updateNow": "Обновить сейчас",
8647
+ "updatePrompt": "В npm доступна новая версия. Нажмите «Обновить сейчас», чтобы установить.",
8648
+ "updateStatusUnknown": "Состояние версии неизвестно",
8649
+ "updateSuccess": "Обновление выполнено! Перезапустите DSH, чтобы применить.",
8650
+ "updating": "Обновляем…",
8651
+ "upToDate": "Актуальная версия",
8652
+ "vadAdapt": "Адаптивная тишина",
8653
+ "vadAdaptHint": "Автоматически подстраивать порог тишины под темп вашей речи. 0 — фиксированный",
8654
+ "vadAmplitude": "Порог по амплитуде",
8655
+ "vadEngine": "Движок VAD",
8656
+ "vadEngineHint": "Нейросетевой Silero VAD (WASM/ONNX) или классический порог по амплитуде",
8657
+ "vadSilero": "Silero VAD (нейросетевой)",
8658
+ "versionHint": "Проверять новые версии и обновляться прямо из npm.",
8659
+ "versionTitle": "Версия плагина и обновления",
8660
+ "visBars": "Классические полосы",
8661
+ "visDynamicOrb": "Динамическая сфера",
8662
+ "visLiquidWave": "Жидкая волна",
8663
+ "visOff": "Выключено",
8664
+ "visualizerStyle": "Стиль визуализатора звука",
8665
+ "visualizerStyleHint": "Анимация звуковой волны внутри плашки записи",
8666
+ "vocabulary": "Свой словарь (по одному слову в строке)",
8667
+ "voiceActionsLabel": "Голосовые команды действий («send», «cancel», «clear», «new line»)",
8668
+ "voiceCommandsLabel": "Голосовые команды правки («new line», «paragraph»)",
8669
+ "voiceInput": "Голосовой ввод",
8670
+ "voiceMacrosDesc": "Произносимые триггерные фразы автоматически разворачиваются в структурированные шаблоны подсказок.",
8671
+ "voiceMacrosTitle": "Макросы голосовых действий",
8672
+ "wakeWord": "Слово активации",
8673
+ "wakeWordHint": "Распознавание в браузере начинает запись, когда речь начинается с этой фразы. Пусто — выключено",
8674
+ "webgpuAvailable": "WebGPU доступен (аппаратное ускорение готово)",
8675
+ "webgpuNotAvailable": "WebGPU не обнаружен (будет откат на сервер)",
8676
+ "webgpuStatus": "Состояние WebGPU в браузере",
8677
+ "whisperAutostart": "Автозапуск локального whisper",
8678
+ "whisperBin": "Локальный whisper: исполняемый файл",
8679
+ "whisperBinHint": "используется при включённом автозапуске",
8680
+ "whisperEndpoint": "Локальный whisper: адрес",
8681
+ "whisperEndpointHint": "POST /inference сервера whisper.cpp",
8682
+ "whisperModel": "Локальный whisper: модель",
8683
+ "whisperModelHint": "Абсолютный путь к файлу модели ggml",
8684
+ "wizardAreaBrowser": "В браузере (WebGPU / WebSpeech)",
8685
+ "wizardAreaCloud": "Удалённый облачный провайдер",
8686
+ "wizardAreaServer": "Локальный сервер MiniPC (SenseVoice / Whisper)",
8687
+ "wizardBtnLaunch": "Открыть мастер микрофона и STT",
8688
+ "wizardClose": "Закрыть мастер",
8689
+ "wizardDesc": "Пошаговый диагностический тест: проверка безопасного контекста, разрешений микрофона, уровня звука и обратного пути STT.",
8690
+ "wizardFinishSuccess": "Настройка и проверка завершены",
8691
+ "wizardHintDevice": "Проверьте подключение микрофона или выберите другое устройство ввода.",
8692
+ "wizardHintHttps": "Откройте DeepSeek Harness по HTTPS или через адрес localhost.",
8693
+ "wizardHintPermission": "Нажмите «Запросить доступ к микрофону» и разрешите запрос браузера.",
8694
+ "wizardHintProvider": "Настройте учётные данные движка STT или установите модель SenseVoice ниже.",
8695
+ "wizardMediaDevicesBad": "В браузере нет API mediaDevices",
8696
+ "wizardMediaDevicesOk": "Браузер поддерживает API mediaDevices",
8697
+ "wizardMediaRecorderBad": "API MediaRecorder не поддерживается этим браузером",
8698
+ "wizardMediaRecorderOk": "API MediaRecorder поддерживается",
8699
+ "wizardMicLabel": "Устройство ввода микрофона:",
8700
+ "wizardMicPermissionBad": "Доступ к микрофону запрещён",
8701
+ "wizardMicPermissionOk": "Доступ к микрофону разрешён",
8702
+ "wizardMicPermissionPrompt": "Доступ к микрофону ещё не разрешён",
8703
+ "wizardNextStepHint": "Следующий шаг: {hint}",
8704
+ "wizardProcessingArea": "Область обработки:",
8705
+ "wizardProviderLabel": "Активный движок и модель STT:",
8706
+ "wizardRecordingTest": "Записываем тестовую фразу… говорите сейчас ({left} с)",
8707
+ "wizardRequestMic": "Запросить доступ к микрофону",
8708
+ "wizardSecureContextBad": "Небезопасный контекст (нужен HTTPS или localhost)",
8709
+ "wizardSecureContextOk": "Безопасный контекст / HTTPS проверен",
8710
+ "wizardSignalOk": "Аудиосигнал обнаружен (RMS: {level}%)",
8711
+ "wizardSignalTesting": "Ждём аудиосигнал… говорите в микрофон",
8712
+ "wizardSignalZero": "Обнаружен нулевой уровень звука — говорите в микрофон или выберите правильное устройство",
8713
+ "wizardSkip": "Пропустить мастер",
8714
+ "wizardStartSignalCheck": "Начать проверку уровня звука",
8715
+ "wizardStartTestRecord": "Записать тестовую фразу на 3 секунды",
8716
+ "wizardStatusCompleted": "Микрофон и STT проверены",
8717
+ "wizardStep1": "1. Звук и окружение",
8718
+ "wizardStep2": "2. Проверка сигнала вживую",
8719
+ "wizardStep3": "3. Тест расшифровки STT",
8720
+ "wizardStopSignalCheck": "Остановить проверку звука",
8721
+ "wizardTestEmpty": "В тестовой записи речь не обнаружена. Говорите чётче и попробуйте ещё раз.",
8722
+ "wizardTestFailed": "Тест STT не удался: {error}",
8723
+ "wizardTestResult": "Результат теста STT:",
8724
+ "wizardTestSuccess": "Обратный путь STT успешно проверен! Задержка: {latency} мс",
8725
+ "wizardTitle": "Мастер первичной настройки и диагностики",
8726
+ "wizardTranscribingTest": "Расшифровываем тестовую фразу…"
8727
+ },
8728
+ "foldPositions": {
8729
+ "advisory.desc": ": в текущей версии есть серьёзный дефект; bili сам обновляет её до безопасной версии. Причина:",
8730
+ "advisory.hint": ". Если обновление не завершилось автоматически, выполните его вручную:",
8731
+ "advisory.on": "Уведомление о критическом дефекте",
8732
+ "advisory.restartDesc": ": безопасная версия уже установлена на диске, но этот процесс всё ещё работает на затронутой версии. Причина:",
8733
+ "advisory.restartHint": ". Перезапустите bili, чтобы она вступила в силу.",
8734
+ "alert.dismiss": "Понятно",
8735
+ "alert.hint.connect_refused": "TCP отклонён (через прокси, если он настроен, иначе напрямую к апстриму) — эндпоинт недоступен или указан неверный порт",
8736
+ "alert.hint.connect_timeout": "Рукопожатие TCP так и не завершилось — апстрим или прокси недоступен либо трафик уходит в никуда; возможна ограниченная повторная попытка отправки (BILI_REPLAY_RETRY_MAX)",
8737
+ "alert.hint.dns": "не удалось разрешить имя — ошибка DNS-сервера или опечатка в имени узла; возможна ограниченная повторная попытка отправки (BILI_REPLAY_RETRY_MAX)",
8738
+ "alert.hint.proxy_reset": "прокси разорвал соединение до получения ответа — проверьте ограничения прокси на простой и на размер передаваемых данных (BILI_PROXY_KEEPALIVE_MAX_MS может сократить окно переиспользования соединения); возможна ограниченная повторная попытка отправки (BILI_REPLAY_RETRY_MAX)",
8739
+ "alert.hint.tls": "Сбой TLS или сертификата на шаге CONNECT или рукопожатия с апстримом — проверьте настройки CA и MITM в прокси.",
8740
+ "alert.hint.unknown": "неклассифицированный сбой транспорта — сообщите с полной цепочкой ошибок",
8741
+ "alert.hint.upstream_reset": "апстрим или сеть сбросили соединение до получения ответа — проверьте апстрим и локальную сеть; возможна ограниченная повторная попытка отправки (BILI_REPLAY_RETRY_MAX)",
8742
+ "alert.item": "Не удаётся связаться с {host} ({kind} ×{count}, с {first}) — {hint}",
8743
+ "alert.note.skipped_proxy": "доступный прокси {proxy} ({source}) пропущен — upstreamProxyMode не задан (прямое подключение предусмотрено по умолчанию, #346/#357); задайте «upstreamProxyMode»: «auto» или BILI_UPSTREAM_PROXY_MODE=auto либо назначьте этому провайдеру канал «proxy», чтобы включить его",
8744
+ "alert.title": "Проблемы с подключением к апстриму",
8745
+ "ca.not_ready": "(ещё не создан; появится при первом MITM)",
8746
+ "card.claude_key": "Claude Code",
8747
+ "card.codex_key": "Codex",
8748
+ "card.codex_login": "Codex (вход через ChatGPT)",
8749
+ "card.opencode": "OpenCode",
8750
+ "card.other": "Другие клиенты",
8751
+ "card.pi": "Pi",
8752
+ "cfg.file": "Файл конфигурации",
8753
+ "cfg.file_desc": "Эта карточка правит файл конфигурации напрямую — действуют все поля верхнего уровня в этом JSON (маршруты, сжатие, сеть, проброс, promptPack, ccr, …). Сохранение применяется сразу",
8754
+ "cfg.invalid_json": "Некорректный JSON — не сохранено",
8755
+ "cfg.parse_error": "Файл конфигурации не содержит корректный JSON — вместо него показан пустой вид",
8756
+ "cfg.passthrough": "Проброс",
8757
+ "cfg.passthrough_desc": "Определяет, проходит ли трафик, не подпадающий ни под один маршрут, в целевую службу без изменений (без перехвата и без переписывания). Состояние хранится в файле конфигурации; если его принудительно задала переменная окружения ACP_PASSTHROUGH, интерфейс помечает источник, и вам нужно сбросить переменную и перезапустить, прежде чем менять её здесь",
8758
+ "cfg.pt_clear": "Отключить проброс",
8759
+ "cfg.pt_off": "Выключено",
8760
+ "cfg.pt_on": "Включено",
8761
+ "cfg.q_absorb": "Мгновенное поглощение результатов инструментов (absorb) — крупные результаты модель перерабатывает сразу при получении; оригиналы скрыты до следующего раунда сжатия (по умолчанию выключено)",
8762
+ "cfg.q_absorb_hint": "по умолчанию поглощаются только результаты с изображениями (#3422); задайте mediaOnly: false, чтобы поглощать и текст целиком. Подполяня (minToolTokens, contextThresholdPct, excludeTools) указываются в редакторе JSON ниже",
8763
+ "cfg.q_debug": "Отладочный журнал (debug)",
8764
+ "cfg.q_imgrescale": "Уменьшение исходящих изображений (imageRescale) — крупные исходящие изображения сжимаются до отправки модели; оригиналы остаются в локальном хранилище сессии (по умолчанию включено)",
8765
+ "cfg.q_imgrescale_hint": "порог по длинной стороне через переменную окружения BILI_IMAGE_RESCALE_MAX_DIM (по умолчанию 1600)",
8766
+ "cfg.q_mitm": "Домены для расшифровки MITM, через запятую (mitm.domains)",
8767
+ "cfg.q_mitm_ph": "api.anthropic.com, open.bigmodel.cn",
8768
+ "cfg.q_more": "Другие настройки (полный справочник полей)",
8769
+ "cfg.q_more_url": "https://github.com/ranxianglei/billion-context/blob/master/CONFIGURATION.md",
8770
+ "cfg.q_never": "Исключить инструменты из сохранения недавних сообщений (compress.neverPreserveRecentTools)",
8771
+ "cfg.q_never_note": "По умолчанию исключаются decompress, search_context, read, bash — при массовом чтении уберите read из списка, чтобы только что прочитанные файлы не сжимались сразу",
8772
+ "cfg.q_never_ph": "через запятую, допускаются маски *; пусто — встроенный список ядра (включая read, bash)",
8773
+ "cfg.q_nudge": "Порог прироста для сжатия, токены (compress.nudgeGrowthTokens)",
8774
+ "cfg.q_nudge_high": "выше 100000: слишком длинный контекст между сжатиями может ослабить внимание модели",
8775
+ "cfg.q_nudge_low": "ниже 20000: слишком частое сжатие ухудшает качество сводки (по умолчанию ядра 50000)",
8776
+ "cfg.q_nudge_step": "шаг 5000",
8777
+ "cfg.q_pack": "Набор промптов для сжатия (compress.promptPack)",
8778
+ "cfg.q_pack_custom": "свой набор — загружается по имени из ~/.config/billion-context/packs/ (или из каталога проекта .billion-context/packs/)",
8779
+ "cfg.q_pack_default_desc": "по умолчанию (полный набор): подробные описания инструментов и полные правила сжатия — самые полные указания. Замерено ≈2,900+ токенов на запрос (токенизатор qwen)",
8780
+ "cfg.q_pack_lean_desc": "краткий: однострочные описания инструментов, сжатые правила — более краткие указания. Замерено ≈1,400 токенов на запрос (токенизатор qwen), примерно вдвое меньше, чем в наборе по умолчанию",
8781
+ "cfg.q_parse_err": "Расширенный JSON сейчас не разбирается — быстрые настройки приостановлены, пока он снова не станет корректным",
8782
+ "cfg.q_passthrough": "Режим проброса (passthrough) — только проксирование, без внедрения и без сжатия",
8783
+ "cfg.q_prm": "Сохранение недавних сообщений (compress.preserveRecentMessages)",
8784
+ "cfg.q_prm_ph": "пусто — по умолчанию ядра",
8785
+ "cfg.q_ptools": "Имена защищённых инструментов (protectedTools, никогда не сжимаются)",
8786
+ "cfg.q_ptools_ph": "через запятую, допускаются маски *, например skill, skill_*; по умолчанию пусто",
8787
+ "cfg.q_ptools_warn": "Не защищайте многословные инструменты вроде read / bash / edit — их вывод занимает большую часть токенов большинства сессий; защита означает, что он никогда не сжимается, и контекст продолжает расти",
8788
+ "cfg.q_tiers": "Пороги срабатывания сжатия по уровням, токены (compress.tierNudgeTokens; предзаполнены расчётными значениями по умолчанию, сохраняются только изменённые)",
8789
+ "cfg.q_tiers_auto": "авто",
8790
+ "cfg.q_tiers_desc": "Предзаполнены текущими расчётными значениями по умолчанию (T1 = шаг роста, T2/T3 = ×1.5); неизменённые значения не сохраняются. Обратите внимание: T2/T3 считают токены СВОДКИ нижнего уровня, а не сырые — при значении по умолчанию 75K и коэффициенте сжатия сводки примерно 10:1 один блок T2 несёт около 750K сырого контекста; для длинных проектов увеличьте T2.",
8791
+ "cfg.q_tiers_step": "шаг 5000",
8792
+ "cfg.q_tiers_tip_t1": "Порог сжатия сырых сообщений T1 (измеряется в сырых токенах) — по умолчанию равен порогу роста для сжатия выше",
8793
+ "cfg.q_tiers_tip_t2": "Порог повторной переработки T2 (измеряется в токенах сводки T1) — по умолчанию равен порогу роста × 1.5; увеличьте его, чтобы каждый блок T2 содержал больше истории проекта",
8794
+ "cfg.q_tiers_tip_t3": "Порог уплотнения T3 (измеряется в токенах сводки T2) — по умолчанию равен порогу роста × 1.5",
8795
+ "cfg.quick": "Быстрые настройки",
8796
+ "cfg.quick_desc": "Переключайте частые параметры, не трогая JSON — каждое изменение сразу попадает в редактор ниже (тот же файл, новых полей конфигурации нет); сложные структуры вроде таблицы провайдеров остаются в JSON",
8797
+ "cfg.resign": "Подписанные апстримы (переподпись)",
8798
+ "cfg.resign_awaiting": "ожидание поддержки переподписи в bili (по контракту «сжать или отказать» никакая конфигурация не может пропустить это)",
8799
+ "cfg.resign_builtin": "Встроенная схема {scheme} ({label}): bili переподписывает автоматически (обычное сжатие), когда срабатывает служба учётных данных dsh; иначе — локальный отказ",
8800
+ "cfg.resign_copy_hint": "Скопируйте этот фрагмент в файл конфигурации: эта ссылка передаётся без изменений байтов и БЕЗ сжатия (только для встроенной схемы)",
8801
+ "cfg.resign_desc": "Апстримы, подписывающие тело запроса: любое переписывание ломает их проверку подписи (401). По контракту «сжать или отказать» у подписанного запроса ровно два исхода — переподписан и сжат либо отклонён локально (403); режима передачи без подписи нет. Встроенная схема может включить проброс (явно согласившись на передачу без сжатия), если учётные данные не найдены; любая другая схема остаётся недоступной, пока bili не поставит переподписант (никакая конфигурация это не обойдёт). Записи появляются по подписям, наблюдаемым во время работы",
8802
+ "cfg.resign_disabled": "защита отключена (поведение до переподписи: тело переписывается, апстрим может вернуть 401)",
8803
+ "cfg.resign_loading": "Загрузка…",
8804
+ "cfg.resign_none": "Отказов по подписи нет — подписанных запросов, которые нельзя переподписать, не наблюдалось",
8805
+ "cfg.resign_passthrough": "напрямую (без сжатия)",
8806
+ "cfg.resign_refusing": "отказ по умолчанию",
8807
+ "cfg.resign_row": "{origin} · отказов {count}× (с {firstSeen})",
8808
+ "cfg.save": "Сохранить",
8809
+ "cfg.saved": "Сохранено в файл конфигурации ✓",
8810
+ "cfg.state": "Состояние подключения",
8811
+ "cfg.state_reached": "HTTP {status} · доступен (аутентификацию берёт на себя клиент)",
8812
+ "cfg.sub": "Правки сразу попадают в файл конфигурации и применяются на ходу — проверьте синтаксис JSON перед сохранением",
8813
+ "cfg.test_btn": "Проверить подключение",
8814
+ "cfg.test_hint": "Отправляет один минимальный запрос, чтобы проверить доступность; ничего не меняет",
8815
+ "cfg.title": "Конфигурация",
8816
+ "cfg.unsaved": "⚠ Есть несохранённые изменения — ничего не записывается, пока вы не нажмёте «Сохранить»",
8817
+ "cfg.untested": "Ещё не проверено",
8818
+ "cfg.up_auto": "авто (следовать системному прокси)",
8819
+ "cfg.up_direct": "напрямую (принудительно напрямую)",
8820
+ "cfg.up_manual": "вручную (явный прокси)",
8821
+ "cfg.upstream_net": "Сеть апстрима",
8822
+ "common.back": "← К списку сессий",
8823
+ "common.context": "контекст",
8824
+ "common.copied_hint": "Скопировано ✓",
8825
+ "common.copy": "Копировать",
8826
+ "common.ctx_est": "оценка",
8827
+ "common.ctx_est_calib": "оценка·с калибровкой",
8828
+ "common.ctx_est_raw": "оценка·без калибровки",
8829
+ "common.ctx_meas": "замерено",
8830
+ "common.ctx_upper": "оценка·верхняя граница",
8831
+ "common.empty": "Данных пока нет",
8832
+ "common.label": "метка",
8833
+ "common.live": "активно",
8834
+ "common.loading": "Загрузка…",
8835
+ "common.none": "—",
8836
+ "common.protocol": "протокол",
8837
+ "common.requests": "запросы",
8838
+ "common.saved": "сохранено",
8839
+ "common.sessions": "сессии",
8840
+ "common.title": "заголовок",
8841
+ "common.upstream": "апстрим",
8842
+ "common.window": "окно",
8843
+ "con.launcher_help_pre": "Полный список:",
8844
+ "con.launcher_mitm": "Добавьте домены в белый список для расшифровки по сертификату MITM (например, собственный релей): bili pi --mitm-domain api.foo.com",
8845
+ "con.method_a": "Способ 3 · Универсальный прокси (маршрутизация по префиксу URL)",
8846
+ "con.method_a_hint": "Только для клиентов, у которых можно изменить baseURL (добавьте указанный ниже адрес к их базовому URL); для большинства клиентов лучше средство запуска выше",
8847
+ "con.method_b": "Альтернатива: маршрутизация через сертификат MITM",
8848
+ "con.method_b_hint": "Клиенты с жёстко заданными эндпоинтами используют перехват HTTPS; сначала доверьте сертификату CA",
8849
+ "con.method_launcher": "Способ 2 · Средство запуска bili (без установки — заменяет привычную команду запуска)",
8850
+ "con.method_launcher_hint": "Когда billion-context установлен, запускайте клиент одной из команд ниже вместо обычного способа: bili proxy + состояние сжатия подставляется автоматически, правки конфигурации клиента не нужны",
8851
+ "con.method_plugin": "Способ 1 · Установить плагин (рекомендуется · нативный режим)",
8852
+ "con.method_plugin_hint": "Рекомендуется — после установки просто запускайте агента как обычно; он автоматически пойдёт через billion-context и получит самый полный набор возможностей. Частые команды управления:",
8853
+ "con.note_aider": "Aider (парное программирование на Python): сертификат MITM через HTTPS_PROXY + SSL_CERT_FILE/REQUESTS_CA_BUNDLE; адрес берётся из унаследованного окружения, из --openai-api-base или из .aider.conf.yml; локальные адреса напрямую через NO_PROXY (#1048)",
8854
+ "con.note_amp": "Amp CLI (Sourcegraph, закрытый бинарник на Go) — сертификат MITM; ampcode.com в белом списке (#1049)",
8855
+ "con.note_antigravity": "Antigravity CLI (agy, Google, преемник Gemini CLI): CLOUD_CODE_URL /bili/ переписан в daily-cloudcode-pa.googleapis.com — реальный апстрим по умолчанию (чистый cloudcode-pa отвечает 400 на /v1internal:*, #3129; недокументированный переопределитель окружения языкового сервера, проверен в бинарнике v2.19.1; обмен распознаётся как нативный Google по пути) (#2115)",
8856
+ "con.note_claude": "Запустите claude",
8857
+ "con.note_codebuddy": "Tencent CodeBuddy Code CLI: переписывание CODEBUDDY_BASE_URL /bili/ (протокол OpenAI chat-completions); бюджет согласован через CODEBUDDY_AUTO_COMPACT_WINDOW; настоящий ~/.codebuddy не затрагивается",
8858
+ "con.note_codex": "Запустите codex",
8859
+ "con.note_copilot": "Copilot CLI (GitHub, закрытый бинарник на Go) — сертификат MITM; api.githubcopilot.com и поддомены уровней в белом списке (#1049)",
8860
+ "con.note_dsh": "deepseek-harness: полный нативный плагин внедряется через --patch (#941) — compress/decompress/acp_status регистрируются как настоящие инструменты dsh; нелокальный апстрим через переменные окружения прокси, локальный сохраняет подмены DSH_HOME; встроенный маршрут deepseek через DEEPSEEK_BASE_URL; нативное автосжатие отключено",
8861
+ "con.note_gemini": "Gemini CLI (Google): GOOGLE_GEMINI_BASE_URL /bili/ переписывается в generativelanguage.googleapis.com (нативный протокол Google); настоящий ~/.gemini не затрагивается",
8862
+ "con.note_goose": "Goose (Block, Rust/reqwest): сборки rustls не доверяют файлам CA — переменных окружения прокси нет вовсе; встроенные ветки openai/anthropic перенаправляются через OPENAI_HOST/ANTHROPIC_HOST; собственные декларативные провайдеры получают заново созданный наложенный каталог GOOSE_PATH_ROOT, который переписывает base_url в /bili/; сторонние провайдеры с фиксированным адресом вызывают предупреждение (#1049)",
8863
+ "con.note_hermes": "без файлов (#535): HTTPS_PROXY + SSL_CERT_FILE с объединённым пакетом CA — https через CONNECT MITM, http с пересылкой в абсолютной форме; настоящий ~/.hermes не затрагивается",
8864
+ "con.note_iflow": "iFlow CLI: IFLOW_BASE_URL /bili/ переписывается в apis.iflow.cn/v1 (протокол OpenAI chat-completions); настоящий ~/.iflow не затрагивается",
8865
+ "con.note_jcode": "Терминальный агент для кода на Rust — запуск с сертификатом MITM через переменные окружения; api.z.ai по умолчанию в белом списке; локальный провайдер напрямую через NO_PROXY",
8866
+ "con.note_kimi": "Kimi Code CLI (Moonshot): кроме безусловного обхода локальных адресов весь трафик идёт по стандартным переменным окружения прокси — для нелокальных адресов https идёт через сертификат MITM, http пересылается в абсолютной форме; узлы берутся из ~/.kimi-code/config.toml; локальные адреса собраны с ручными подсказками о префиксе /bili/ (#757)",
8867
+ "con.note_mcode": "MiniMax Code CLI: кроме безусловного обхода локальных адресов — стандартные переменные окружения прокси; для нелокальных адресов https идёт через сертификат MITM, http пересылается в абсолютной форме; узлы берутся из ~/.minimax*/config.yaml; сессии связываются заголовком X-Mavis-Session-Id (#1050)",
8868
+ "con.note_omp": "Тот же подход, что и у pi, без файлов (#535): переменные окружения + расширение registerProvider; настоящий ~/.omp не затрагивается",
8869
+ "con.note_opencode": "OpenCode (1.x и 2.x): подробное руководство в разделе OpenCode ниже",
8870
+ "con.note_pi": "Запустите pi через прокси — без файлов (#535): переменные окружения + расширение registerProvider; настоящий ~/.pi не затрагивается",
8871
+ "con.note_qoder": "адрес модели жёстко задан по https (переписать на /bili/ нельзя) — сертификат MITM (HTTPS_PROXY + NODE_EXTRA_CA_CERTS); узел модели по умолчанию заранее в белом списке (#653)",
8872
+ "con.note_qwen": "Qwen Code (форк gemini-cli с несколькими протоколами, без перехвата базового URL): сертификат MITM через HTTPS_PROXY + NODE_EXTRA_CA_CERTS; узлы моделей DashScope/Qwen по умолчанию в белом списке; собственные релеи добавляются через --mitm-domain",
8873
+ "con.note_trae": "Trae CLI (ByteDance, закрытый бинарник на Go, без переопределения базового URL) — сертификат MITM; узел модели берётся из TRAE_CLI_API_HOST или из корпоративного шлюза по умолчанию (#655)",
8874
+ "con.origin": "Адрес прокси",
8875
+ "con.plugin_note": "Режим плагина сейчас охватывает эти 9 агентов: pi · omp · claude · codex · opencode · dsh · kimi · hermes · zcode — остальные клиенты используют способ 2 или способ 3. Для opencode добавьте --with-mcp при установке, чтобы зарегистрировать и его инструменты MCP",
8876
+ "con.sub": "Направьте ИИ-клиентов на этот прокси",
8877
+ "con.title": "Подключение клиентов",
8878
+ "conflict.age_active": "{n} за последние 7 дней",
8879
+ "conflict.age_historical": "{n} раньше",
8880
+ "conflict.clear_btn": "Очистить записи",
8881
+ "conflict.cleared": "Записи о конфликтах очищены",
8882
+ "conflict.dismiss": "Больше не показывать",
8883
+ "conflict.dismissed": "Скрыто — плашка появится снова, если произойдёт новый конфликт",
8884
+ "conflict.docs": "полная таблица: CONFIGURATION.md → «Detecting other compression plugins (#1206)»",
8885
+ "conflict.found": ": следы ",
8886
+ "conflict.hint_label": "Что делать (по клиентам):",
8887
+ "conflict.hint_more": "ещё клиентов: {n} — смотрите страницу сессий ниже",
8888
+ "conflict.hint.claude": "claude: запускайте через bili claude (он сам выравнивает CLAUDE_CODE_AUTO_COMPACT_WINDOW) или задайте CLAUDE_CODE_AUTO_COMPACT_WINDOW равным действующему окну bili",
8889
+ "conflict.hint.codex": "codex: bili по умолчанию перехватывает нативное сжатие (BILI_CODEX_COMPACT=intercept) — если вы задали pass, уберите переопределение, чтобы отключить; иначе сообщите версию bili",
8890
+ "conflict.hint.generic": "отключите собственное автосжатие клиента (или направьте эту сессию в обход bili), затем начните новую сессию — реестр ведётся по сессиям, поэтому старые записи исчезнут вместе со старой сессией",
8891
+ "conflict.hint.omp": "omp: расширение bili отменяет нативное автосжатие клиента, пока ведёт беседу — если вы это видите, вероятно, не хватает подтверждений переноса или версия устарела; сообщите клиент и версию bili",
8892
+ "conflict.hint.opencode": "opencode: задайте в конфигурации opencode «compaction»: { «auto»: false } (или выполните bili opencode / bili plugin install opencode — они сделают это за вас)",
8893
+ "conflict.hint.pi": "pi: расширение bili отменяет нативное автосжатие клиента, пока ведёт беседу — если вы это видите, вероятно, не хватает подтверждений переноса или версия устарела; сообщите клиент и версию bili",
8894
+ "conflict.on": "Обнаружен конфликт сжатия",
8895
+ "conflict.on_suspected": "Обнаружен возможный плагин сжатия",
8896
+ "conflict.on_unconfirmed": "Обнаружены неподтверждённые признаки, связанные со сжатием",
8897
+ "conflict.risk_active": " найдены. Два сжимателя в одной беседе сжимают дважды и портят ссылки на сообщения, из-за чего контекст путается — оставьте ровно один сжиматель.",
8898
+ "conflict.risk_historical": " найдены (событий за последние 7 дней нет — только штатные записи) — когда вы убедитесь, что другой сжиматель удалён или заблокирован bili, очистите их кнопкой.",
8899
+ "conflict.risk_sibling": " найдены. Это собственные родственные расширения bili, а не сторонние сжиматели: пока сессию ведёт bili, они автоматически бездействуют (метка BILLION_CONTEXT_NATIVE в нативном режиме, иначе самопроверка baseUrl с /bili/), так что второй сжиматель не активен — проверьте, что версии свежие, и очистите эту запись; ничего удалять не нужно.",
8900
+ "conflict.risk_suspected": " — только сигнал по имени [подозрение], а не наблюдаемое доказательство двойного сжатия. Прежде чем действовать, убедитесь, что он действительно переписывает контекст модели; плагин отображения или сворачивания вывода инструментов (например, pi-compact-transcript) не сжимает дважды и удаления не требует.",
8901
+ "conflict.risk_unconfirmed": " — все перечисленные выше признаки НЕПОДТВЕРЖДЕНЫ: они не доказывают существование второго сжимателя (возможные причины: правки на стороне клиента, нераспознанный формат сжатия или другой плагин). Проверьте, прежде чем действовать; просмотрщик контекста только для чтения или плагин отображения и сворачивания вывода инструментов не является сжимателем и удаления не требует.",
8902
+ "conflict.what_join": " и ",
8903
+ "conflict.what_native": "нативное автосжатие клиента, переписывающее историю беседы",
8904
+ "conflict.what_plugin": "сторонний плагин сжатия, работающий рядом с bili",
8905
+ "conflict.what_signal": "переписывание истории беседы (изменение замечено, причина пока не установлена)",
8906
+ "conflict.what_suspected": "плагин, имя которого совпадает с ключевыми словами про сжатие (пока не подтверждено, что он действительно сжимает контекст)",
8907
+ "conflict.where": "Подробности: страница сессий ниже или поле conflicts в ответе GET /__bili/stats.",
8908
+ "copy.ca": "Скопировать путь к CA",
8909
+ "data.error": "Не удалось загрузить данные: {msg} · автоматический повтор с задержкой",
8910
+ "data.generic": "сетевая ошибка или истекло время ожидания запроса",
8911
+ "data.timeout": "истекло время ожидания запроса (20 с)",
8912
+ "det.active_pack": "Набор промптов",
8913
+ "det.attr_abort": "⏻ Связано с прерыванием",
8914
+ "det.attr_abort_tip": "Промахи уложились в 30 с после прерывания клиента в середине потока — повторные попытки переписывают пересылаемый хвост; это корреляция, а не причина (метка наложения, а не отдельная категория)",
8915
+ "det.attr_client": "✎ Переписывание клиентом в середине истории",
8916
+ "det.attr_client_tip": "Собственная пересылка истории клиента разошлась в середине списка (вставка или переписывание — другой плагин на хосте, подъём вставок, повторный рендер): пара отпечатков входящих сообщений не совпадает на этом индексе, и точная пересборка bili перенесла изменение в запрос. Пересчёт на стороне клиента, а не шов пересборки bili (#3023)",
8917
+ "det.attr_provider": "▲ Промах на стороне провайдера (аномалия)",
8918
+ "det.attr_provider_tip": "Пришёл вскоре после предыдущего запроса, весь список сообщений которого вернулся байт в байт (целиком или его префикс с добавленными только хвостовыми сообщениями; выше предела криминалистики в 512 КиБ, что доказано устойчивой записанной головой и точным ростом числа сообщений), но апстрим не отдал свой кэш — аномалия: вытеснение или смена релей-узла. Парные случаи с большим интервалом учитываются как истечение TTL у апстрима",
8919
+ "det.attr_rest": "остальное {x}",
8920
+ "det.attr_rest_tip": "мелкие остатки ниже порога классификации (<8K или <30% ввода на один замер) по отдельности не классифицируются",
8921
+ "det.attr_restart": "⟳ сброс при перезапуске",
8922
+ "det.attr_restart_tip": "После перезапуска bili или восстановления сессии окно реестра разрывается: первый запрос после перезапуска не сопоставляется с замерами до перезапуска, поэтому его промах учитывается как первый (исходный контент)",
8923
+ "det.attr_rewind": "↩ История перемотана назад",
8924
+ "det.attr_rewind_tip": "Откат или обрезка на стороне клиента уменьшили число сообщений — это разрешённый однократный пересчёт сохранённого префикса, а не дефект",
8925
+ "det.attr_seam": "⚠ Шов кэша",
8926
+ "det.attr_seam_tip": "Исходящие тела разошлись в середине истории без привязки к сжатию, смене модели или перезапуску — подозревается шов пересборки. Значение = токены, пересчитанные на подозрительных замерах. Если сжатие произошло за несколько минут до этого, обычно это пересчёт клиентского эха после сжатия (принадлежит сжатию начиная с #2929)",
8927
+ "det.attr_ttl": "⏱ Истечение TTL у апстрима (норма)",
8928
+ "det.attr_ttl_tip": "Промахи с неизменившимися байтами или с добавлением в хвост уложились более чем через 10 минут после предыдущего замера — кэш префикса апстрима просто устарел; это ожидаемая стоимость, ничего делать не нужно",
8929
+ "det.auto_mode_forge": "Вердикты авторежима",
8930
+ "det.auto_mode_forge_local": "вердикты авторежима, на которые bili отвечает локально (нулевой трафик к апстриму)",
8931
+ "det.auto_mode_forge_short": "кузница",
8932
+ "det.auto_mode_forge_tip": "Вердикты безопасности авторежима для этой сессии отвечает локально bili — без вызова модели апстрима и без списаний (#2740)",
8933
+ "det.block_active": "активные",
8934
+ "det.block_external": "внешние",
8935
+ "det.block_inactive": "неактивные",
8936
+ "det.blocks_copy_md": "скопировать Markdown",
8937
+ "det.blocks_count": "Всего: {total} · активных: {active}",
8938
+ "det.blocks_download": "скачать блоки (.md)",
8939
+ "det.blocks_empty": "Блоков сжатия пока нет",
8940
+ "det.blocks_title": "Блоки сжатия",
8941
+ "det.cache_econ": "Экономика кэша",
8942
+ "det.calib_chip": "k̂={k} · замеров: {n} · разброс {spread}× · {origin}",
8943
+ "det.calib_tip": "Коэффициент калибровки k̂: среднее по последним {n} согласованным замерам (разброс {spread}×) на этом маршруте и модели; занижает только оценки; переучивается после смены маршрута или модели. Источник: {origin}{model}.",
8944
+ "det.cause_cold": "холодный старт (кэша раньше не было)",
8945
+ "det.cause_comp": "пересборка после сжатия",
8946
+ "det.cause_ttl": "пересчёт без причины · остальное",
8947
+ "det.cause_unattrib": "пересчёт без причины",
8948
+ "det.ccr": "CCR — извлечение содержимого",
8949
+ "det.ccr_detail": "вызовов: {calls} · попаданий: {hits} · промахов: {misses}",
8950
+ "det.ce_balanced": "Реестр сходится ✓",
8951
+ "det.ce_breakdown": "из них:",
8952
+ "det.ce_comp": "Пересборка после сжатия",
8953
+ "det.ce_comp_hint": "Совет: уменьшение compress.preserveRecentMessages (числа защищённых недавних сообщений) сокращает эту долю — минимум 1",
8954
+ "det.ce_new": "Новое содержимое",
8955
+ "det.ce_residual": "Остаток",
8956
+ "det.ce_ttl": "Пересчёт без причины",
8957
+ "det.ce_unbalanced": "Реестр не сходится ✗",
8958
+ "det.client_hint": "клиент",
8959
+ "det.conflicts_clear": "Очистить записи этой сессии",
8960
+ "det.conflicts_cleared": "Очищено",
8961
+ "det.conflicts_hint": "Признаки того, что к сессии прикасался другой сжиматель (диагностика, а не история)",
8962
+ "det.conflicts_more": "Более ранних событий: {n}…",
8963
+ "det.conflicts_title": "Конфликты сжатия",
8964
+ "det.covlost_sub": "сжатий потеряно покрытие: {n} ({x} заморожено): покрытые ими сообщения исчезли из пересылаемой истории — начисление остановлено",
8965
+ "det.ctx_age": "снимок {v} назад",
8966
+ "det.ctx_age_tip": "Когда это значение контекста было измерено или оценено; оно перестаёт обновляться при восстановлении или простое — старый снимок не отражает текущее отправленное состояние",
8967
+ "det.fold_h": "попаданий после сжатия, %",
8968
+ "det.fold_s": "сжато, S",
8969
+ "det.fold_short": "сжатие",
8970
+ "det.fold_sigma": "сводка, σ",
8971
+ "det.fold_t": "накопленный пересчёт, T",
8972
+ "det.fold_time": "когда",
8973
+ "det.folds": "Разбивка по сжатиям",
8974
+ "det.folds_empty": "Событий сжатия пока нет",
8975
+ "det.handoff": "Документ передачи",
8976
+ "det.handoff_copy_md": "Скопировать как Markdown",
8977
+ "det.handoff_download": "Скачать .md",
8978
+ "det.handoff_hint": "То же содержимое, что и в экспорте bili — вставьте в новую сессию, чтобы продолжить",
8979
+ "det.handoff_truncated": "⚠️ Содержимое обрезано для показа",
8980
+ "det.hit_pct": "доля попаданий в кэш",
8981
+ "det.identity": "Идентификатор",
8982
+ "det.key_events": "Смены ключа ({n})",
8983
+ "det.key_events_tip": "Смена отпечатка учётных данных = релей переключился на другую учётную запись; отпечатки — это префиксы sha256 из 12 шестнадцатеричных символов, а не сами ключи",
8984
+ "det.key_fp": "отпечаток ключа",
8985
+ "det.last_input": "Ввод последнего одиночного раунда",
8986
+ "det.ledger_gap": "Запросов не учтено в реестре: {n}",
8987
+ "det.ledger_gap_tip": "Реестр попаданий и промахов учитывает только запросы с момента последней пересборки; запросы вне этого окна не считаются — это типично для нескольких экземпляров с общим каталогом состояния. Сжатия внутри разрыва также не попадают в экономику сжатия",
8988
+ "det.leg_client": "✎ переписывание клиентом",
8989
+ "det.leg_pside": "▲ промах на стороне провайдера",
8990
+ "det.leg_pttl": "⏱ истечение TTL у апстрима",
8991
+ "det.leg_rest": "остальное",
8992
+ "det.leg_rewind": "↩ перемотка",
8993
+ "det.legend_base": "базовая линия системного промпта (измеряется, не сжимается)",
8994
+ "det.legend_base_est": "оценка базовой линии (системный промпт и инструменты, не сжимаются)",
8995
+ "det.legend_cached": "из них в кэше",
8996
+ "det.legend_fold": "сжатие",
8997
+ "det.legend_input": "ввод",
8998
+ "det.legend_seam": "шов кэша",
8999
+ "det.legend_window": "предел окна контекста",
9000
+ "det.log": "Журнал",
9001
+ "det.log_view": "посмотреть журнал этой сессии ▸",
9002
+ "det.miss_split_line": "разбивка промахнутых токенов по доле попаданий: новое содержимое {n} (−{pn}%) · пересборка после сжатия {c} (−{pc}%) · пересчёт без причины {x} (−{px}%, TTL у апстрима/вытеснение/неизвестно)",
9003
+ "det.miss_sub": "пересчёт без причины −{x}% · пересборка после сжатия −{c}% · новое −{n}%",
9004
+ "det.not_found": "Сессия не найдена",
9005
+ "det.not_found_hint": "Возможно, её удалили или она находится за пределами этого каталога данных",
9006
+ "det.obudget_degraded": "⚠️ У модели {model} НЕТ известного верхнего предела вывода: её бюджет вывода поднят до {value} токенов (большее из собственной оценки клиента и абсолютного минимума; авторитетного предела, который можно подтвердить, нет), поэтому более длинные ответы могут обрываться на пределе вывода. Задайте предел вывода для этого провайдера и модели в конфигурации bili или задайте maxTokens у модели в профиле хоста (#2904/#3071)",
9007
+ "det.omitted": "Самые ранние замеры обрезаны при записи: {n} — каждая сессия хранит только 4096 последних замеров кэша (восстановить их нельзя), поэтому график начинается с самого старого сохранённого замера",
9008
+ "det.proj_events": "Смены проекции или режима ({n})",
9009
+ "det.proj_events_tip": "Отпечаток пересылаемой проекции изменился, хотя каноническое входящее содержимое system и developer осталось тем же — значит, сам прокси переключил режим сжатия или проекцию (например, самовосстановление с переходом на прокси); отпечатки — это префиксы sha256 из 16 шестнадцатеричных символов, а не исходный текст (#2867)",
9010
+ "det.proj_fp": "отпечаток проекции",
9011
+ "det.prompt_events": "Переписывания системного промпта ({n})",
9012
+ "det.prompt_events_tip": "Отпечаток пересылаемой проекции изменился И каноническое входящее содержимое тоже изменилось — значит, хост переписал свой системный промпт между запросами; отпечатки — это префиксы sha256 из 16 шестнадцатеричных символов, а не исходный текст (#2350/#2867)",
9013
+ "det.prompt_fp": "отпечаток промпта",
9014
+ "det.report_dl": "скачать отчёт по кэшу (.md)",
9015
+ "det.report_masked": "[скрыто]",
9016
+ "det.report_md": "полный отчёт · Markdown",
9017
+ "det.report_note": "заголовок и другие персональные данные по умолчанию скрыты",
9018
+ "det.report_png": "полный отчёт · изображение (PNG)",
9019
+ "det.rpt_cached": "из кэша",
9020
+ "det.rpt_hit": "попаданий, %",
9021
+ "det.rpt_input": "ввод",
9022
+ "det.rpt_missed": "промахнуто",
9023
+ "det.seam_col_div": "первое расхождение",
9024
+ "det.seam_col_hit": "попаданий, %",
9025
+ "det.seam_col_input": "ввод",
9026
+ "det.seam_events": "⚠ События шва кэша · {n}",
9027
+ "det.seam_events_tip": "Первое расхождение между соседними исходящими телами; если оно повторяется, приложите bili.log за это время (семейство #1548)",
9028
+ "det.seam_mark_tip": "⚠ ШОВ КЭША #{seq} · {at} · попаданий {hit}% · первое расхождение ≥{lcp} байт @ сообщение[{msg}] ({prev}→{cur} сообщ.)",
9029
+ "det.seam_msg": "сообщение[{i}] ({prev}→{cur} сообщ.)",
9030
+ "det.self_heal": "Самовосстановление",
9031
+ "det.self_heal_degrade_to_proxy": "плагин-канал исчез → переход в режим прокси (инструменты внедрены заново)",
9032
+ "det.self_heal_short": "починка",
9033
+ "det.self_heal_suppress_nudge": "цикл подталкивания в простое → подавлен (снимется, когда сжатие возобновится)",
9034
+ "det.self_heal_tip": "Самовосстановление застрявшей сессии взяло управление на себя — смотрите подробности сессии (#2155)",
9035
+ "det.stab_append": "добавление в хвост",
9036
+ "det.stab_gap": "медианный интервал между запросами: при низкой доле попаданий (<80%) {a} с против {b} с при высокой доле",
9037
+ "det.stab_head": "начало <1КиБ (смена параметров)",
9038
+ "det.stab_identical": "идентичны байт в байт",
9039
+ "det.stab_mid": "переписывание в середине истории",
9040
+ "det.stab_pairs": "соседних пар: {n}",
9041
+ "det.stab_size": "доля попаданий по размеру ввода (медиана)",
9042
+ "det.stab_tail": "хвост (параметры / временные заметки)",
9043
+ "det.stab_tip": "Побайтовое сравнение SHA-256 каждого исходящего тела с предыдущим устоявшимся запросом: совпадение — полное совпадение байтов (например, повтор транспорта); различающиеся пары классифицируются по первому расхождению — начало <1КиБ = смена параметров на стороне хоста (модель, инструменты, сэмплирование), добавление в хвост = чистый рост хвоста, середина истории = настоящее переписывание префикса, хвост = завершающие параметры верхнего уровня или временные заметки в конце или за концом массива сообщений (байты истории не тронуты, кэш не задет), смещение неизвестно = тела выше предела хранения (неравенство всё равно доказано дайджестом)",
9044
+ "det.stab_title": "Стабильность тел (побайтовое доказательство по каждому вызову)",
9045
+ "det.stab_unknown": "смещение неизвестно (превышен предел)",
9046
+ "det.storage_mode": "Режим хранения",
9047
+ "det.storage_mode_full": "полный (сначала единое хранилище, двойная запись)",
9048
+ "det.storage_mode_legacy": "устаревший (только JSON)",
9049
+ "det.storage_mode_shadow": "теневой (пробная двойная запись)",
9050
+ "det.store": "Хранилище содержимого",
9051
+ "det.thinking": "размышление",
9052
+ "det.traj_reset": "Сбросить вид",
9053
+ "det.traj_zoom_hint": "Проведите по графику, чтобы приблизить диапазон замеров; дважды щёлкните или нажмите Esc, чтобы сбросить",
9054
+ "det.traj_zoomed": "Вид #{a}–#{b} ({times})",
9055
+ "det.trajectory": "Траектория контекста",
9056
+ "det.trajectory_empty": "Замеров расхода для этой сессии пока нет",
9057
+ "det.trajectory_sub": "Ввод в токенах и попадания в кэш по каждому запросу; красные отметки — сжатия",
9058
+ "det.upper_bound": "граница {v} (верхняя граница по числу символов — только защита, а не фактический расход)",
9059
+ "det.usage": "Расход",
9060
+ "det.version": "Версия прокси",
9061
+ "dt.auth": "Аутентификация",
9062
+ "dt.ca_cert": "Сертификат CA",
9063
+ "dt.config_file": "Файл конфигурации",
9064
+ "dt.env": "Окружение",
9065
+ "dt.example": "Пример",
9066
+ "dt.setting": "Настройка",
9067
+ "fork.label": "★ Сделать форк на GitHub",
9068
+ "hostplug.desc": "Его состав по сегментам и хронология оцениваются по локальному счётчику до сжатия (по требованиям архитектуры dsh долговременный журнал остаётся без потерь), поэтому доли сегментов могут не совпадать с тем, что отправляется на самом деле; итоговый размер контекста отражает реально отправленный объём.",
9069
+ "hostplug.dismiss_btn": "Закрыть",
9070
+ "hostplug.dismissed": "Уведомление закрыто",
9071
+ "hostplug.hint": "Достоверные данные об эффективном контексте: /acp или GET /__bili/plugin/status → contextTokens.",
9072
+ "hostplug.on": "Обнаружен плагин на стороне хоста",
9073
+ "logs.count": "показано последних {n} из {total} подходящих строк",
9074
+ "logs.ctx": "контекст ±3 строки",
9075
+ "logs.dl": "скачать текущий вид (.txt)",
9076
+ "logs.dl_all": "скачать полный журнал (.txt)",
9077
+ "logs.empty": "подходящих строк нет (файл журнала мог ещё не появиться)",
9078
+ "logs.filter_ph": "фильтр (id сессии или ключевое слово)",
9079
+ "logs.omitted": " · {o} более ранних строк обрезано (увеличьте лимит строк)",
9080
+ "logs.path": "файл журнала",
9081
+ "logs.sub": "живой просмотр bili.log · фильтр по id сессии или ключевому слову, с расширением контекста и окна времени",
9082
+ "logs.title": "Журнал запуска",
9083
+ "logs.win": "окно времени ±2 мин",
9084
+ "nav.config": "Конфигурация",
9085
+ "nav.connect": "Подключение",
9086
+ "nav.logs": "Журналы",
9087
+ "nav.overview": "Обзор",
9088
+ "nav.sessions": "Сессии",
9089
+ "other.rule": "Добавить в начало любого baseURL:",
9090
+ "ov.by_protocol": "По протоколу обмена",
9091
+ "ov.cached_tokens": "Токены из кэша",
9092
+ "ov.covlost_note": "Потеряно покрытие: {n} сжатий, заморожено: {x}",
9093
+ "ov.global_hitpct": "Общая доля попаданий в кэш",
9094
+ "ov.gross_note": "суммирует экономию каждого сжатия по всем последующим запросам (теоретический верхний предел)",
9095
+ "ov.gross_saved": "Экономия от сжатия (накопительно)",
9096
+ "ov.hist": "исторические",
9097
+ "ov.input_tokens": "Входные токены",
9098
+ "ov.live_now": "сейчас активны",
9099
+ "ov.miss_split": "непокрытые токены (учтённые сессии): новое содержимое {n} · пересборка после сжатия {c} · неатрибутированный возврат {x} (на удалённом сервере: TTL/вытеснение/неизвестно)",
9100
+ "ov.net_excl": "сессии до тегирования без замеров не включены",
9101
+ "ov.net_saved": "Чистая экономия",
9102
+ "ov.output_tokens": "Выходные токены",
9103
+ "ov.recent": "Недавно активные сессии",
9104
+ "ov.saved_from_legacy": "{n} из них оценено локально по сессиям до тегирования",
9105
+ "ov.saved_neg_tip": "Отрицательная чистая экономия: пересборка после сжатия (стоимость повторного чтения сводки) превысила теоретическую выгоду; это типично для коротких сессий, завершившихся сразу после сжатия",
9106
+ "ov.sub": "Глобальная статистика по всем живым и сохранённым на диске сессиям",
9107
+ "ov.sub_repay": "после вычета пересборки после сжатия {r} и стоимости сводки {s}",
9108
+ "ov.title": "Обзор",
9109
+ "ov.tokens_saved": "Сэкономлено сжатием",
9110
+ "ov.total_requests": "Всего запросов",
9111
+ "ov.total_sessions": "Всего сессий",
9112
+ "ov.view_all": "Смотреть все →",
9113
+ "pck.hint": "Этот удалённый сервер отклоняет запросы с prompt_cache_key (400 с ключом, без ключа — принимает), поэтому bili не передаёт ключ туда до перезапуска. Если это ваш пул промежуточных серверов и учётных записей, привязка к префиксному кэшу для таких сессий может ухудшиться.",
9114
+ "pck.on": "Ключ маршрутизации кэша (prompt_cache_key) не передаётся",
9115
+ "pck.sessions": "Затронутые сессии: {ids}",
9116
+ "pluginadv.desc": "Этот плагин перед каждым вызовом инструмента заново отправляет модели всю беседу для проверки, поэтому префиксный кэш удалённого сервера почти не срабатывает (процент попаданий обычно однозначный), а расход токенов резко растёт. Это не связано со сжатием bili: bili выносит такие запросы в отдельную подсессию, оставляя префиксный кэш основной сессии нетронутым.",
9117
+ "pluginadv.hint": "Подумайте, стоит ли отключить плагин или попросить его разработчиков оптимизировать его; подробности — в ссылке выше (эта задача).",
9118
+ "pluginadv.on": "Обнаружен плагин с высокой стоимостью",
9119
+ "protocol.unmarked": "не отмечено (сессии старой версии)",
9120
+ "routing.codex_auth_note": "(Передача токена OAuth без изменений, сертификат не нужен)",
9121
+ "routing.codex_note_a": "Провайдер по умолчанию — openai, model_provider не нужен; если вы изменили",
9122
+ "routing.codex_note_b": "в config.toml, добавьте также",
9123
+ "routing.codex_note_c": ". Если подключение не работает и задан HTTP(S)_PROXY, добавьте также",
9124
+ "routing.codex_note_d": "; если bili работает в WSL2/Docker, используйте",
9125
+ "routing.codex_note_e": "из Windows (пересылается автоматически); 127.0.0.1 не сработает.",
9126
+ "ses.badge_live_tip": "Сессию обрабатывает текущий демон (живые данные)",
9127
+ "ses.count": "Сессий: {count}",
9128
+ "ses.covlost_tip": "Потеряно покрытие: {n} сжатий ({x} заморожено): хост удалил сжатые оригиналы вне ведения bili (например, штатным сжатием dsh) — их экономия больше не накапливается",
9129
+ "ses.drop_ph": "потери попаданий в процентах от всего ввода, порядок: новое содержимое / пересборка после сжатия / неатрибутированный возврат",
9130
+ "ses.empty": "Сессий пока нет",
9131
+ "ses.empty_hidden": "Скрыто пустых сессий: {n} (без запросов, контекста и учёта; по прямой ссылке они всё ещё доступны)",
9132
+ "ses.empty_hint": "Первый запрос через прокси создаёт сессию автоматически",
9133
+ "ses.load_more": "Загрузить ещё",
9134
+ "ses.no_title": "без названия",
9135
+ "ses.refresh": "Обновить",
9136
+ "ses.search_ph": "Поиск по названию, метке или id…",
9137
+ "ses.sub": "Все сессии из памяти и с диска — нажмите на строку, чтобы открыть подробности, траекторию и документ передачи",
9138
+ "ses.th_blocks": "Блоки",
9139
+ "ses.th_client": "Клиент",
9140
+ "ses.th_ctx": "Контекст сейчас",
9141
+ "ses.th_folds": "Сжатий",
9142
+ "ses.th_hit": "Попадания, %",
9143
+ "ses.th_input": "Накопленный ввод",
9144
+ "ses.th_keyswitches_tip": "Ротация ключа и учётной записи промежуточного сервера (за тем же URL сменился отпечаток учётных данных) · токены пересчитаны, потому что новая учётная запись начинает с холодного кэша (#2131)",
9145
+ "ses.th_projswitches_tip": "Прокси переключил свой режим сжатия или проекцию (например, самовосстановление с переходом в режим прокси заново поднимает сообщения разработчика из середины истории в системный блок) · каждое переключение сбрасывает все последующие записи префиксного кэша — токены пересчитаны для стабильного префикса (#2867)",
9146
+ "ses.th_promptswitches_tip": "Хост переписал свой системный промпт (отпечаток изменился между запросами, например из-за периодической динамической секции) · каждая перезапись сбрасывает все последующие записи префиксного кэша — токены пересчитаны для стабильного префикса (#2350)",
9147
+ "ses.th_proto": "Протокол",
9148
+ "ses.th_reqs": "Запросы",
9149
+ "ses.th_saved": "Сэкономлено",
9150
+ "ses.th_seen": "Последняя активность",
9151
+ "ses.th_switches": "Переключения",
9152
+ "ses.th_switches_tip": "Переключения модели в середине сессии · токены пересчитаны, потому что новая модель начинает с холодного префиксного кэша (#1535) · 🔑 = ротация ключа и учётной записи промежуточного сервера (смена отпечатка учётных данных, #2131) · ✍️ = переписывание системного промпта хостом (смена отпечатка промпта, #2350) · 🔀 = переключение режима сжатия или проекции прокси (например, самовосстановление с переходом в режим прокси, #2867)",
9153
+ "ses.th_title": "Сессия",
9154
+ "ses.th_upstream": "Удалённый сервер",
9155
+ "ses.title": "Сессии",
9156
+ "summary.add": "Добавить цель",
9157
+ "summary.bytes": "Лимит сводки (байт)",
9158
+ "summary.concurrency": "Размер пула (от 1 до 32, по умолчанию 4)",
9159
+ "summary.credentials": "Учётные данные рецепта",
9160
+ "summary.down": "Переместить ниже",
9161
+ "summary.enabled": "Включено",
9162
+ "summary.invalid": "Некорректная конфигурация сводки; исправьте её в JSON",
9163
+ "summary.key": "Ключ API",
9164
+ "summary.key_bad_ref": "Некорректный формат ссылки",
9165
+ "summary.key_delete": "Удалить ключ",
9166
+ "summary.key_invalid": "Значение непригодно (пусто, пробельные или управляющие символы либо слишком длинное)",
9167
+ "summary.key_missing": "Не настроено",
9168
+ "summary.key_save": "Сохранить ключ",
9169
+ "summary.key_saved": "Ключ сохранён",
9170
+ "summary.key_set": "Настроено",
9171
+ "summary.key_unreadable": "Хранилище учётных данных недоступно для чтения (права доступа или содержимое)",
9172
+ "summary.no_recipes": "В провайдерах пока нет именованных рецептов подключения (записей без URL, с полями baseUrl/api) — сначала добавьте один в JSON",
9173
+ "summary.ref": "Цель (провайдер/модель)",
9174
+ "summary.remove": "Убрать цель",
9175
+ "summary.timeout": "Тайм-аут для каждой цели (мс)",
9176
+ "summary.title": "Общая служба сводок (экспериментально)",
9177
+ "summary.total": "Общий лимит времени (мс)",
9178
+ "summary.up": "Переместить выше",
9179
+ "sys.attribution_broken": "Перехват сломан ({agent}): запросы к модели идут напрямую (без сжатия), отклонено {n} — перезапустите хост, чтобы вернуть сжатие",
9180
+ "sys.blind_tunnels": "Слепые туннели MITM (CONNECT без TLS)",
9181
+ "sys.disk_version": "Версия на диске",
9182
+ "sys.inflight": "Запросы в работе",
9183
+ "sys.policy_hold": "HOLD действует для всего парка — автообновления заморожены; вручную по-прежнему можно: bili update",
9184
+ "sys.policy_pinned": "парк закреплён на v{version} — ничего новее не установится автоматически; вручную: npm install -g billion-context@<version>",
9185
+ "sys.policy_title": "Автообновления по удалённой политике обновлений:",
9186
+ "sys.pt_env": "Переменная окружения ACP_PASSTHROUGH (или флаг --passthrough)",
9187
+ "sys.pt_file": "в файле конфигурации passthrough: true",
9188
+ "sys.pt_on": "Passthrough включён: все запросы пересылаются без изменений, сжатие отключено. Источник:",
9189
+ "sys.report_copy": "Копировать диагностику",
9190
+ "sys.report_issue": "Сообщить на GitHub",
9191
+ "sys.stale": "На диске новая версия v{disk} — работает v{running}; перезапустите хост, чтобы загрузить новый код",
9192
+ "sys.stale_auto": "Автоперезапуск включён — переключается автоматически в простое",
9193
+ "sys.stale_manual": "Автоперезапуск не включён (нужен --auto-restart-on-update)",
9194
+ "sys.storage_degraded": "В одном из будущих выпусков единое хранилище SQLite станет стандартным, но эта система не может работать с ним ({reason}). Вас автоматически вернули на хранилище JSON — сегодня это ни на что не влияет. Сообщите об этом, чтобы вашу среду учли до переключения.",
9195
+ "sys.storage_degraded_title": "Хранилище SQLite работает с ограничениями:",
9196
+ "sys.title": "Состояние системы",
9197
+ "sys.update": "Напоминание об обновлении:",
9198
+ "sys.update_available": "доступно критическое исправление — обновитесь до v{version} или новее: {summary}",
9199
+ "sys.update_ready": "критическое исправление готово (v{version}) — перезапустите bili, чтобы применить",
9200
+ "sys.version": "Версия",
9201
+ "toast.connect_ok": "Соединение установлено, HTTP {status}",
9202
+ "toast.failed": "Операция не удалась: {msg}",
9203
+ "toast.passthrough_cleared": "Passthrough отключён ✓",
9204
+ "toast.upstream_reachable": "Доступен (HTTP {status}) — сеть в порядке; авторизацию обрабатывает клиент",
9205
+ "zcode.hint_a": "Путь к CA — это абсолютный путь, который bili действительно создал на этой машине — нажмите «Скопировать путь к CA» и вставьте его прямо в ZCode. ⚠️ В Windows ZCode не разворачивает",
9206
+ "zcode.hint_b": ", не набирайте вручную",
9207
+ "zcode.hint_c": "пути вида -.",
9208
+ "zcode.method": "Прозрачный прокси MITM",
9209
+ "zcode.title": "ZCode (тариф для программирования)"
6619
9210
  }
6620
9211
  };
6621
9212
  //#endregion