@goodandready/dsh-russian-lang 0.2.17 → 0.2.20

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.
Files changed (152) hide show
  1. package/README.md +3 -2
  2. package/README.ru.md +2 -1
  3. package/README.zh.md +102 -0
  4. package/lib/client.js +242 -277
  5. package/lib/index.js +49 -10
  6. package/lib/locales/plugins/01-token-dashboard.json +1 -0
  7. package/lib/locales/plugins/02-subscriptions.json +1 -0
  8. package/lib/locales/plugins/03-dshmarket.json +1 -0
  9. package/lib/locales/plugins/04-context-doctor.json +1 -0
  10. package/lib/locales/plugins/05-plugins-store.json +1 -0
  11. package/lib/locales/plugins/06-im-hub.json +1 -0
  12. package/lib/locales/plugins/07-better-sidebar.json +1 -0
  13. package/lib/locales/plugins/08-task-board.json +1 -0
  14. package/lib/locales/plugins/09-dshmarket-1.13.json +1 -0
  15. package/lib/locales/plugins/10-kanban.json +1 -0
  16. package/lib/locales/plugins/11-skill-hub.json +1 -0
  17. package/lib/locales/plugins/12-skills-manager.json +1 -0
  18. package/lib/locales/plugins/13-agent-teams.json +1 -0
  19. package/lib/locales/plugins/14-ollama-cloud.json +1 -0
  20. package/lib/locales/plugins/15-commandcode.json +1 -0
  21. package/lib/locales/plugins/16-usage-stats.json +1 -0
  22. package/lib/locales/plugins/17-dsh-context.json +1 -0
  23. package/lib/locales/plugins/18-opencode-palette.json +1 -0
  24. package/lib/locales/plugins/19-univer-office.json +1 -0
  25. package/lib/locales/plugins/20-skill-explorer.json +1 -0
  26. package/lib/locales/plugins/21-auto-collapse.json +1 -0
  27. package/lib/locales/plugins/22-subagent-director.json +1 -0
  28. package/lib/locales/plugins/23-moa.json +1 -0
  29. package/lib/locales/plugins/24-personal-directive.json +1 -0
  30. package/lib/locales/plugins/25-hooks.json +1 -0
  31. package/lib/locales/plugins/26-config-manager.json +1 -0
  32. package/lib/locales/plugins/27-config-manager-sync.json +1 -0
  33. package/lib/locales/plugins/28-config-manager-market.json +1 -0
  34. package/lib/locales/plugins/29-config-manager-recovery.json +1 -0
  35. package/lib/locales/plugins/30-config-manager-history.json +1 -0
  36. package/lib/locales/plugins/31-dshhub-market.json +1 -0
  37. package/lib/locales/plugins/32-vision-bridge.json +1 -0
  38. package/lib/locales/plugins/33-messenger-gateway.json +1 -0
  39. package/lib/locales/plugins/34-key-rotation.json +1 -0
  40. package/lib/locales/plugins/35-gitea.json +1 -0
  41. package/lib/locales/plugins/36-cost-meter.json +1 -0
  42. package/lib/locales/plugins/37-time-machine.json +1 -0
  43. package/lib/locales/plugins/38-context-lens.json +1 -0
  44. package/lib/locales/plugins/39-shadow-auditor.json +1 -0
  45. package/lib/locales/plugins/40-clinebot.json +1 -0
  46. package/lib/locales/plugins/41-lanmode.json +1 -0
  47. package/lib/locales/plugins/42-plugin-console.json +1 -0
  48. package/lib/locales/plugins/43-better-input.json +1 -0
  49. package/lib/locales/plugins/44-auto-review.json +1 -0
  50. package/lib/locales/plugins/45-session-control.json +1 -0
  51. package/lib/locales/plugins/46-memory-brain.json +1 -0
  52. package/lib/locales/plugins/47-llm-wiki.json +1 -0
  53. package/lib/locales/plugins/48-task-tracker.json +1 -0
  54. package/lib/locales/plugins/49-usage-guard.json +1 -0
  55. package/lib/locales/plugins/50-automode.json +1 -0
  56. package/lib/locales/plugins/51-plugin-guard.json +1 -0
  57. package/lib/locales/plugins/52-navbar.json +1 -0
  58. package/lib/locales/plugins/53-remote-workspace.json +1 -0
  59. package/lib/locales/plugins/54-workshop-market.json +1 -0
  60. package/lib/locales/plugins/55-skin-center.json +1 -0
  61. package/lib/locales/plugins/56-cron.json +1 -0
  62. package/lib/locales/plugins/57-live-canvas.json +1 -0
  63. package/lib/locales/plugins/58-grok-xsearch.json +1 -0
  64. package/lib/locales/plugins/59-goal.json +1 -0
  65. package/lib/locales/plugins/60-model-sync.json +1 -0
  66. package/lib/locales/plugins/61-issue-reporter.json +1 -0
  67. package/lib/locales/plugins/62-model-search.json +1 -0
  68. package/lib/locales/plugins/63-agent-orchestrator.json +1 -0
  69. package/lib/locales/plugins/64-key-limits.json +1 -0
  70. package/lib/locales/plugins/65-subscriptions.json +1 -0
  71. package/lib/locales/plugins/66-tts.json +1 -0
  72. package/lib/locales/plugins/67-voice.json +1 -0
  73. package/lib/locales/plugins/68-image-gen.json +1 -0
  74. package/lib/locales/plugins/69-plugin-notify.json +1 -0
  75. package/lib/locales/plugins/70-hypotheses.json +1 -0
  76. package/lib/locales/zh-ru.json +1 -0
  77. package/lib/locales.js +32 -0
  78. package/lib/plugin-updater.js +8 -2
  79. package/package.json +6 -7
  80. package/docs/media/banner.jpg +0 -0
  81. package/docs/media/language-selector.png +0 -0
  82. package/docs/media/ui-russian.png +0 -0
  83. package/ru/01-core-small.json +0 -201
  84. package/ru/02-conversation.json +0 -834
  85. package/ru/03-models-workspace.json +0 -190
  86. package/ru/04-preset-cordis.json +0 -136
  87. package/ru/05-plugins-subagent.json +0 -158
  88. package/ru/06-rest.json +0 -257
  89. package/ru/07-sidebar-previewers.json +0 -57
  90. package/ru-plugins/01-token-dashboard.json +0 -83
  91. package/ru-plugins/02-subscriptions.json +0 -40
  92. package/ru-plugins/03-dshmarket.json +0 -536
  93. package/ru-plugins/04-context-doctor.json +0 -64
  94. package/ru-plugins/05-plugins-store.json +0 -81
  95. package/ru-plugins/06-im-hub.json +0 -97
  96. package/ru-plugins/07-better-sidebar.json +0 -490
  97. package/ru-plugins/08-task-board.json +0 -126
  98. package/ru-plugins/09-dshmarket-1.13.json +0 -46
  99. package/ru-plugins/10-kanban.json +0 -460
  100. package/ru-plugins/11-skill-hub.json +0 -257
  101. package/ru-plugins/12-skills-manager.json +0 -222
  102. package/ru-plugins/13-agent-teams.json +0 -193
  103. package/ru-plugins/14-ollama-cloud.json +0 -72
  104. package/ru-plugins/15-commandcode.json +0 -200
  105. package/ru-plugins/16-usage-stats.json +0 -126
  106. package/ru-plugins/17-dsh-context.json +0 -316
  107. package/ru-plugins/18-opencode-palette.json +0 -31
  108. package/ru-plugins/19-univer-office.json +0 -57
  109. package/ru-plugins/20-skill-explorer.json +0 -69
  110. package/ru-plugins/21-auto-collapse.json +0 -16
  111. package/ru-plugins/22-subagent-director.json +0 -142
  112. package/ru-plugins/23-moa.json +0 -214
  113. package/ru-plugins/24-personal-directive.json +0 -9
  114. package/ru-plugins/25-hooks.json +0 -11
  115. package/ru-plugins/26-config-manager.json +0 -453
  116. package/ru-plugins/27-config-manager-sync.json +0 -202
  117. package/ru-plugins/28-config-manager-market.json +0 -142
  118. package/ru-plugins/29-config-manager-recovery.json +0 -102
  119. package/ru-plugins/30-config-manager-history.json +0 -55
  120. package/ru-plugins/31-dshhub-market.json +0 -398
  121. package/ru-plugins/32-vision-bridge.json +0 -216
  122. package/ru-plugins/33-messenger-gateway.json +0 -236
  123. package/ru-plugins/34-key-rotation.json +0 -217
  124. package/ru-plugins/35-gitea.json +0 -174
  125. package/ru-plugins/36-cost-meter.json +0 -90
  126. package/ru-plugins/37-time-machine.json +0 -38
  127. package/ru-plugins/38-context-lens.json +0 -36
  128. package/ru-plugins/39-shadow-auditor.json +0 -67
  129. package/ru-plugins/40-clinebot.json +0 -142
  130. package/ru-plugins/41-lanmode.json +0 -164
  131. package/ru-plugins/42-plugin-console.json +0 -354
  132. package/ru-plugins/43-better-input.json +0 -127
  133. package/ru-plugins/44-auto-review.json +0 -83
  134. package/ru-plugins/45-session-control.json +0 -122
  135. package/ru-plugins/46-memory-brain.json +0 -33
  136. package/ru-plugins/47-llm-wiki.json +0 -26
  137. package/ru-plugins/48-task-tracker.json +0 -19
  138. package/ru-plugins/49-usage-guard.json +0 -51
  139. package/ru-plugins/50-automode.json +0 -28
  140. package/ru-plugins/51-plugin-guard.json +0 -12
  141. package/ru-plugins/52-navbar.json +0 -6
  142. package/ru-plugins/53-remote-workspace.json +0 -140
  143. package/ru-plugins/54-workshop-market.json +0 -58
  144. package/ru-plugins/55-skin-center.json +0 -97
  145. package/ru-plugins/56-cron.json +0 -334
  146. package/ru-plugins/57-live-canvas.json +0 -121
  147. package/ru-plugins/58-grok-xsearch.json +0 -80
  148. package/ru-plugins/59-goal.json +0 -54
  149. package/ru-plugins/60-model-sync.json +0 -121
  150. package/ru-plugins/61-issue-reporter.json +0 -192
  151. package/ru-plugins/62-model-search.json +0 -22
  152. package/ru-plugins/63-agent-orchestrator.json +0 -10
@@ -0,0 +1 @@
1
+ {"config-manager":{"about.authorLabel":"Author","about.cli.docs":"CLI documentation","about.cli.hint":"The GUI lives inside DSH — when DSH cannot start, the separately installed CLI (dsh-config-manager) is your first rescue tool: list snapshots / offline restore / one-click DSH reinstall, no DSH runtime needed. Install once and use it on any machine:","about.cli.title":"CLI Rescue Tool","about.diag.bundles":"бандлы: {bundles}","about.diag.hint":"Если данные не совпадают с вашей конфигурацией, проверьте аргумент DSH --profile и переменную DSH_HOME.","about.diag.label":"Источник списка плагинов","about.diag.manifestUnreadable":"В каталоге отсутствует читаемый package.json — список плагинов пуст. Проверьте соответствие профиля DSH и переменной DSH_HOME этому пути.","about.diag.pluginCount":"Обнаружено плагинов: {count}","about.diag.profile":"Профиль: {profile}","about.diag.profileDir":"Каталог: {path}","about.docs":"Documentation","about.dshVersion":"DSH {version}","about.issues":"Issues","about.links":"Links","about.loading":"Loading version info…","about.official":"Official","about.releaseNotes":"Release Notes","about.releaseNotes.allLoaded":"All releases loaded","about.releaseNotes.confirm":"Confirm","about.releaseNotes.empty":"No releases found.","about.releaseNotes.error":"Failed to load release notes. Please check your network connection or try again later.","about.releaseNotes.latest":"Latest","about.releaseNotes.loading":"Loading release notes…","about.releaseNotes.loadingMore":"Loading more releases…","about.releaseNotes.neverShow":"Don't show again","about.releaseNotes.noBody":"No description provided for this release.","about.releaseNotes.prerelease":"Pre-release","about.releaseNotes.retry":"Retry","about.releaseNotes.title":"Release Notes","about.releaseNotes.viewOnGithub":"View all releases on GitHub","about.releaseNotes.viewSingleOnGithub":"View on GitHub","about.repo":"GitHub Repository","about.retryStatus":"Retry","about.star":"⭐ Star on GitHub","about.subtitle":"Plugin info, author and feedback links","about.title":"About DSH Config Manager","about.version":"Version {version}","backupFiles.delete":"Delete","backupFiles.deleteConfirm":"Delete backup file \\«{name}\\»? This cannot be undone.","backupFiles.deleteConfirmTitle":"Delete backup file","backupFiles.deleted":"Удалён файл бэкапа «{name}»","backupFiles.download":"Download","backupFiles.empty":"No backup files yet. They appear here after a manual export or once scheduled backups are enabled.","backupFiles.error":"Failed to load backup files","backupFiles.hint":"All export artifacts (manual exports and scheduled backups) are managed here: download to your machine, import to restore, or delete. Scheduled backups auto-keep the latest 10.","backupFiles.import":"Import","backupFiles.inspect":"Inspect / Compare","backupFiles.inspectDiff":"Diff against this backup (read-only preview)","backupFiles.inspectEmpty":"This backup could not be analyzed (corrupt or unsupported format)","backupFiles.inspectGroup.changes":"Changes (will apply)","backupFiles.inspectGroup.conflicts":"Conflicts (need decision)","backupFiles.inspectGroup.others":"Others","backupFiles.inspectGroup.paths":"Path mappings (need handling)","backupFiles.inspectGroup.skipped":"Identical (nothing to do)","backupFiles.inspectItems":"Change details","backupFiles.inspectLoading":"Analyzing backup contents…","backupFiles.inspectSections":"Sections included","backupFiles.loading":"Loading backup files…","backupFiles.name":"Файл","backupFiles.noteUnreadable":"(примечание не читается)","backupFiles.searchEmpty":"No matching backup files","backupFiles.searchPlaceholder":"Search by file name or note…","backupFiles.size":"Размер","backupFiles.source":"Источник","backupFiles.source.auto":"Scheduled","backupFiles.source.manual":"Manual","backupFiles.time":"Изменён","backupFiles.title":"Backup Files","backupSchedule.consecutiveFailures":"Scheduled backups failed {count} time(s) in a row — check the configuration (disk space / permissions / section export errors)","backupSchedule.customHint":"Runs a full backup once a week at the selected weekday and time (missed triggers are not backfilled)","backupSchedule.enabled":"Enable scheduled backups","backupSchedule.enabledHint":"When on, DSH backs up automatically on the cadence below; one run fires on every startup (skipped if less than 1h since the last run).","backupSchedule.error":"Failed to load scheduled backup settings","backupSchedule.hint":"Automatically export a full backup ZIP in the background on a fixed cadence (secrets are never included, never encrypted — use manual export for encryption). Config lives in sync/backup-schedule.json and migrates with the self section.","backupSchedule.interval":"Backup interval","backupSchedule.interval.12h":"Every 12 hours","backupSchedule.interval.24h":"Every 24 hours","backupSchedule.interval.6h":"Every 6 hours","backupSchedule.interval.7d":"Every 7 days","backupSchedule.interval.custom":"Custom (weekly at a fixed time)","backupSchedule.lastRun":"Last run","backupSchedule.loading":"Loading scheduled backup settings…","backupSchedule.never":"Never run","backupSchedule.runNow":"Back up now","backupSchedule.running":"Backing up…","backupSchedule.save":"Save settings","backupSchedule.saved":"Settings saved","backupSchedule.status.failed":"Failed","backupSchedule.status.skipped":"Skipped","backupSchedule.status.success":"Success","backupSchedule.title":"Scheduled Full Backups","backupSchedule.weekday.friday":"Friday","backupSchedule.weekday.monday":"Monday","backupSchedule.weekday.saturday":"Saturday","backupSchedule.weekday.sunday":"Sunday","backupSchedule.weekday.thursday":"Thursday","backupSchedule.weekday.tuesday":"Tuesday","backupSchedule.weekday.wednesday":"Wednesday","common.back":"Назад","common.cancel":"Отмена","common.close":"Закрыть","common.confirm":"Confirm","common.done":"Готово","common.loading":"Загрузка…","common.next":"Далее","common.retry":"Повторить","common.unknownError":"Неизвестная ошибка","error.hint":"Error messages are auto-redacted and never leak secrets.","error.title":"Operation failed","export.download":"Download backup file","export.encrypt":"Encrypt backup","export.encryptHint":"Encrypt the entire backup file with a password (AES-256-GCM). The password is used once and never written into the backup or any config file; it is required to unlock the backup on import.","export.excluded":"Excluded","export.fileName":"Custom file name","export.fileNameHint":"Leave empty to auto-name (dsh-config-<date>.zip); no need to type .zip — it is appended automatically. Letters, digits, spaces, — _ . only.","export.fileNameInvalid":"Invalid file name: letters, digits, spaces, — _ . only, no path separators.","export.group.unknown":"Other","export.includeSecrets":"Export secrets","export.includeSecretsHint":"Write the real secrets (credential values) into the backup. Secrets must be stored encrypted: checking this also checks «Encrypt backup»; unchecking «Encrypt backup» unchecks this.","export.included":"Included","export.mode.custom":"Custom Export","export.mode.customHint":"Select sections per group.","export.mode.quick":"Quick Export","export.mode.quickHint":"One-click export of recommended sections (portable, no device-specific data) for routine backups.","export.naming":"File name & note (optional)","export.note":"Note","export.noteHint":"The note is shown in the local backup list (and travels with the config backup) so you can tell exports apart.","export.notePlaceholder":"e.g. Full backup before migration / 2026-08 archive","export.password":"Backup encryption password","export.passwordConfirm":"Confirm password","export.passwordMismatch":"Passwords do not match","export.passwordRequired":"An encryption password is required when encrypting the backup","export.preview":"Preview export contents","export.previewSkipped":"{count} section(s) failed to export and were skipped","export.previewSummary":"Will package {sections} section(s), approx. {size} (no secrets)","export.previewing":"Counting…","export.run":"Start Export","export.running":"Exporting…","export.saved":"Saved to downloads: {name}","export.security":"Security options","export.selectionWarnings":"Device-specific sections may not apply on another machine:","import.analyzing":"Analyzing backup…","import.compatibility.fail":"Backup analysis failed: {reason}","import.compatibility.ok":"The backup can be imported","import.compatibility.paths":"Проблем с путями: {count}","import.compatibility.plugins":"установлено {installed} · к установке {toInstall}","import.compatibility.score":"Compatibility score: {score}","import.compatibility.score.excellent":"Отличная","import.compatibility.score.good":"Хорошая","import.compatibility.score.partial":"Частичная","import.compatibility.score.unsupported":"Не поддерживается","import.compatibility.secrets":"Секретов для повторного ввода: {count}","import.compatibility.sections":"Разделов: {count}","import.compatibility.sectionsTitle":"Разделы в этой резервной копии","import.compatibility.title":"Compatibility","import.confirm.encrypted":"The backup password will decrypt and restore {count} credential(s).","import.confirm.execute":"Confirm Import","import.confirm.warning":"Import modifies the current DSH configuration; a safety snapshot is created first and everything rolls back on failure.","import.conflicts.hint":"These items already exist on this machine and differ from the backup. Decide per item.","import.conflicts.keepCurrent":"Keep current","import.conflicts.keepCurrentAll":"Keep all current","import.conflicts.review":"Decide later","import.conflicts.title":"Resolve Conflicts","import.conflicts.unresolved":"{count} item(s) unresolved","import.conflicts.useImported":"Use backup","import.conflicts.useImportedAll":"Use all backup","import.decrypt.badge":"encrypted backup","import.decrypt.previewHint":"Encrypted backup: credentials are restored automatically by the unlock password — no further password prompt.","import.decryptArchive.hint":"This backup is fully encrypted (the whole file is password-protected). Enter the password set at export time to decrypt and continue — encrypted credentials inside are restored with the same password, so this is the only password prompt. It is used once and never written to disk.","import.decryptArchive.passwordPlaceholder":"Enter backup encryption password","import.decryptArchive.title":"Unlock Encrypted Backup","import.decryptArchive.unlock":"Unlock & Continue","import.decryptArchive.unlocking":"Unlocking…","import.importing":"Importing… (installing many plugins may take a few minutes; keep this page open)","import.log.empty":"Waiting for command output…","import.log.newOutput":"↓ New output","import.log.title":"Import Log","import.paths.hint":"Absolute paths in the backup may not exist on this machine. Map each path to a new location (leave blank to skip).","import.paths.new":"New path","import.paths.old":"Original path","import.paths.title":"Path Mapping","import.paths.unresolved":"{count} path(s) unmapped","import.preview.conflicts":"{count} conflict(s)","import.preview.mcp":"{count} MCP server(s) added","import.preview.paths":"{count} path mapping(s) needed","import.preview.plugins":"{count} plugin(s) to install","import.preview.prompts":"{count} prompt(s)","import.preview.restart":"A DSH restart is required after import","import.preview.secrets":"{count} secret(s) to re-enter","import.preview.settings":"{count} settings update(s)","import.preview.title":"Import Preview","import.preview.unchanged":"{count} item(s) already identical (skipped)","import.preview.willChange":"{count} item(s) will change","import.retrySkipped":"Retry failed/skipped items ({count})","import.rollbackOnError":"Roll back everything on failure (recommended)","import.secrets.hint":"These credentials were not exported with the backup (security by design). Enter them manually to use them here; leave blank to skip.","import.secrets.optional":"(optional)","import.secrets.required":"(required)","import.secrets.title":"Re-enter Secrets","import.select.browse":"Choose ZIP file","import.select.cancel":"Cancel selection","import.select.file":"Selected: {name}","import.select.hint":"Pick a dsh-config-*.zip backup exported from DSH to begin. Analysis is read-only and changes nothing.","import.select.reselect":"Reselect","import.select.title":"Select Backup File","import.skipCurrent":"Skip current plugin","import.skipPending":"Skipping… the rest of the import continues","import.stage.analyze":"Анализ","import.stage.confirm":"Подтверждение","import.stage.decide":"Предпросмотр и решение","import.stage.done":"Готово","import.stage.execute":"Выполнение","import.stage.select":"Выбор","import.stepper.label":"Шаг {current} из {total}: {label}","nav.about":"О плагине","nav.activity":"Активность","nav.backups":"Бэкапы","nav.export":"Экспорт","nav.import":"Импорт","nav.market":"Витрина","nav.overview":"Обзор","nav.profiles":"Профили","nav.refresh":"Обновить","nav.sync":"Синхронизация","nextSteps.done":"All done — nothing else to handle","nextSteps.restart.hint":"These changes only take effect after restarting DSH:","nextSteps.restart.title":"Restart DSH to apply ({count})","nextSteps.secrets.hint":"These credentials were not exported with the backup; re-enter them on this machine:","nextSteps.secrets.title":"Re-enter credentials ({count})","nextSteps.title":"Next steps","nextSteps.unresolved.hint":"These items were not applied; you can retry them from the result page:","nextSteps.unresolved.title":"Failed / skipped ({count})","overview.activity.copy":"Копировать","overview.activity.empty":"Активности пока нет (здесь появятся бэкапы, импорты и синхронизации)","overview.activity.redacted":"(имя файла скрыто)","overview.activity.title":"Недавняя активность","overview.activity.viewAll":"Смотреть все","overview.empty.body":"После создания первого бэкапа или снимка здесь отобразятся статус здоровья и недавняя активность.","overview.empty.title":"Начните защиту своей конфигурации","overview.health.noBackup":"Резервных копий пока нет — сначала создайте бэкап или снимок","overview.health.ok":"Конфигурация в полном порядке","overview.health.recovery":"Неразрешённые элементы восстановления требуют внимания","overview.health.recoveryAction":"Перейти к восстановлению инцидентов","overview.health.scheduleFailed":"Последний бэкап по расписанию не удался — проверьте настройки","overview.kind.autosync":"Автосинхронизация","overview.kind.backup":"Резервное копирование","overview.kind.import":"Импорт","overview.kind.other":"Другая операция","overview.kind.profile-delete":"Удаление профиля","overview.kind.profile-import":"Импорт профиля","overview.kind.profile-rename":"Переименование профиля","overview.kind.profile-save":"Сохранение профиля","overview.kind.profile-switch":"Переключение профиля","overview.kind.recovery":"Восстановление","overview.kind.restore":"Восстановление","overview.kind.rollback":"Откат","overview.kind.snapshot-delete":"Удаление снимка","overview.kind.snapshot-prune":"Очистка снимков","overview.kind.sync-apply":"Применение синхронизации","overview.loading":"Загрузка обзора…","overview.location.dir":"Каталог бэкапов","overview.location.lastRun":"Последний запуск","overview.location.nextRun":"Следующий запуск","overview.location.retention":"Снимки","overview.location.retentionValue":"{used} / {limit}","overview.location.schedule":"Расписание","overview.location.scheduleOff":"Выкл.","overview.location.scheduleOn":"{interval} · посл. {time}","overview.location.title":"Хранилище бэкапов","overview.location.totalSize":"Общий объём","overview.meta.lastBackup":"Посл.: {time}","overview.meta.never":"Никогда не запускалось","overview.meta.noBackup":"Записей пока нет","overview.meta.scheduleFail":"Сбой последнего бэкапа","overview.meta.scheduleOff":"Отключено (включите для автозащиты)","overview.meta.scheduleOn":"Включено · посл. запуск {time}","overview.meta.syncOff":"Не настроено","overview.meta.syncOn":"Настроено · посл. синхронизация {time}","overview.metric.backups":"Файлы бэкапов","overview.metric.schedule":"Бэкап по расписанию","overview.metric.snapshots":"Снимки безопасности","overview.metric.sync":"Удалённая синхронизация","overview.nav.about":"О плагине","overview.nav.activity":"Активность","overview.quick.backup":"Создать бэкап","overview.quick.backupDone":"Резервное копирование завершено","overview.quick.backupFailed":"Сбой резервного копирования","overview.quick.backupHint":"Полный снимок (без секретов), доступный для отката в любой момент","overview.quick.backupTitle":"Полный снимок с возможностью отката в любой момент","overview.quick.export":"Экспорт бэкапа","overview.quick.exportHint":"Создать переносимый ZIP-архив резервной копии","overview.quick.exportTitle":"Сформировать переносимый ZIP-бэкап и скачать его","overview.quick.import":"Импорт / восстановление","overview.quick.importHint":"Восстановить конфигурацию из файла бэкапа на этом компьютере","overview.quick.importTitle":"Восстановить из файла бэкапа или перенести на этот компьютер","overview.quick.sync":"Удалённая синхронизация","overview.quick.syncHint":"Поддерживать одинаковые настройки на разных устройствах (Git / WebDAV)","overview.quick.syncTitle":"Синхронизировать конфигурации между устройствами (Git / WebDAV)","overview.quick.title":"Быстрые действия","overview.refresh":"Обновить","overview.result.failed":"Сбой","overview.result.skipped":"Пропущено","overview.result.success":"Успешно","overview.running":"Задач выполняется: {count}","overview.sections.entries":"Элементов: {count}","overview.sections.hint":"Оценено по текущей конфигурации (предпросмотр только для чтения, без записи)","overview.sections.title":"Состав разделов","overview.sections.total":"Всего","overview.state.off":"Выкл.","overview.state.on":"Вкл.","overview.subtitle":"Здоровье конфигурации и быстрые действия (данные только для чтения из каждого раздела)","overview.suggest.schedule":"Включите бэкап по расписанию для автоматической защиты настроек","overview.suggest.sync":"Настройте удалённую синхронизацию для лёгкого переноса между устройствами","overview.suggest.title":"Рекомендации","overview.time.day":"{n} дн назад","overview.time.hour":"{n} ч назад","overview.time.min":"{n} мин назад","overview.time.now":"только что","profiles.delete":"Delete","profiles.delete.done":"Удалён профиль «{name}»","profiles.deleteMessage":"Delete profile \\«{name}\\»? This group of configuration snapshots will be permanently removed.","profiles.deleteTitle":"Delete profile","profiles.empty":"No profiles yet. Save the current configuration to get started.","profiles.import.choose":"Choose JSON file","profiles.import.done":"Импортирован профиль «{name}»","profiles.import.hint":"Import an exported profile.json (from this or another machine; file sections are embedded).","profiles.import.title":"Import profile","profiles.loading":"Loading profiles…","profiles.name":"Name","profiles.nameInvalid":"Invalid profile name: letters, digits and common characters only; no path separators (/ \\\\) or \\«..\\»","profiles.previewConflicts":"{count} conflict(s)","profiles.previewHint":"Click to preview the switch (read-only)","profiles.previewItems":"Change details","profiles.previewNote":"Read-only preview above (zero writes). After confirmation a snapshot is created automatically and everything rolls back on failure.","profiles.previewRestart":"DSH restart required","profiles.previewSecrets":"{count} secret(s) to re-enter","profiles.previewSections":"Sections in this profile","profiles.previewSummary":"Switch impact","profiles.previewUnchanged":"{count} identical","profiles.previewWillChange":"{count} item(s) will change","profiles.previewing":"Analyzing switch plan…","profiles.rename":"Rename","profiles.renameMessage":"Rename profile \\«{name}\\» to:","profiles.renameTitle":"Rename profile","profiles.save.action":"Save profile","profiles.save.done":"Сохранён профиль «{name}»","profiles.save.hint":"Pick a name and save: contents reuse the export pipeline (no secrets), file sections (skills / presets) are embedded too.","profiles.save.placeholder":"e.g. Work / Personal / Minimal","profiles.save.saving":"Saving…","profiles.save.title":"Save current config as a profile","profiles.sections":"Sections","profiles.subtitle":"Save your current DSH configuration as multiple switchable profiles (Work / Personal / …); switching includes preview + auto snapshot + rollback on failure.","profiles.switch":"Switch","profiles.switchConfirm":"Confirm switch","profiles.switchDone":"Switch complete: {count} item(s) applied","profiles.switchFailed":"Switch failed (some items not applied)","profiles.switchPreviewTitle":"Switch preview: {name}","profiles.switchRolledBack":"Switch failed — fully rolled back","profiles.switching":"Switching… (auto snapshot + staged apply)","profiles.title":"Profiles","profiles.updatedAt":"Updated","report.action.done":"Done","report.action.fixIssues":"View failures","report.action.viewDetails":"View details","report.export.title":"Export Complete","report.import.title":"Import Result","report.needsRestart":"Plugin / MCP changes take effect after restarting DSH.","report.rollback.title":"Rollback Report","retention.appliesTo":"Применяется к: снимкам перед импортом + архивам запланированных резервных копий","retention.hint":"Определяет, сколько копий сохраняет автоочистка (общее правило для снимков и бэкапов). Закреплённые снимки и незавершённые точки восстановления никогда не удаляются.","retention.invalid":"Недопустимые параметры ротации — каждое поле должно быть целым числом в разрешённом диапазоне","retention.keepLast":"Хранить последних","retention.keepLastHint":"Хранить N самых свежих копий по времени; 0 отключает уровень «недавних»","retention.keepMonthly":"Хранить ежемесячных","retention.keepMonthlyHint":"Дополнительно сохранять самую свежую копию каждого месяца, не более N месяцев; 0 отключает","retention.keepYearly":"Хранить ежегодных","retention.keepYearlyHint":"Дополнительно сохранять самую свежую копию каждого года, не более N лет; 0 отключает","retention.months":"мес.","retention.summary":"Последних {keepLast} · ежемесячных {keepMonthly} · ежегодных {keepYearly}","retention.tiersOff":"Уровни не включены (эквивалентно «хранить только N самых свежих»)","retention.title":"Политика ротации копий","retention.unit":"копий","retention.years":"лет","section.description":"Экспорт / импорт / миграция конфигурации DSH (секреты исключены; опционально шифрование архива)","section.label":"Резервное копирование и миграция","shell.drawer.title":"Активность и информация","shell.status.idle":"Ожидание","shell.status.recovery":"Ожидает восстановления","shell.status.running":"Задач выполняется: {count}","shell.version":"Плагин {plugin} · DSH {dsh}","snapshots.actions":"Actions","snapshots.confirmRestore":"Confirm restore? Current files are first backed up to a safe location, then plugins added during the import are removed.","snapshots.confirmTitle":"Confirm restore","snapshots.createdAt":"Created","snapshots.delete":"Delete","snapshots.deleteConfirm":"Delete the snapshot created at {time}? This pre-import rollback point will be permanently removed and cannot be recovered.","snapshots.deleteConfirmTitle":"Delete Snapshot","snapshots.deleted":"Снимок удалён","snapshots.empty":"No snapshots yet. A safety snapshot is created automatically on import.","snapshots.empty.body":"Снимки создаются автоматически перед импортом и восстановлением для отката в один клик. Вы также можете сделать снимок прямо сейчас.","snapshots.empty.runBackup":"Создать снимок сейчас","snapshots.empty.title":"Снимков пока нет","snapshots.empty.viewFiles":"Просмотр файлов бэкапов","snapshots.entries":"Entries","snapshots.execute":"Restore now","snapshots.executing":"Restoring…","snapshots.failed":"Failed","snapshots.hint":"Export backups = portable ZIPs (download / one-click import / delete, incl. scheduled full backups). Snapshot restore = back to the pre-import state: whole-file restore of settings/patch, uninstall plugins added during import, compensate modified files; current files are backed up to a safe location first.","snapshots.kind.credentialHint":"Manual hint","snapshots.kind.fileRemove":"Remove file","snapshots.kind.fileRestore":"Restore file","snapshots.kind.hostFileRemove":"Remove whole file","snapshots.kind.hostFileRestore":"Restore whole file","snapshots.kind.pluginRemove":"Uninstall plugin","snapshots.kind.skip":"Skip","snapshots.kind.unknown":"Unknown","snapshots.loading":"Loading snapshots…","snapshots.manualHints":"Manual action needed","snapshots.noActions":"No restorable actions for this snapshot (or all skipped).","snapshots.pin":"Pin","snapshots.planTitle":"Restore Plan Preview","snapshots.plugins":"Plugins","snapshots.removedPlugins":"Removed plugins","snapshots.reportTitle":"Restore Report","snapshots.restored":"Restored","snapshots.retentionHint":"Up to {count} snapshots are kept automatically (oldest pruned); pinned snapshots are exempt from auto-pruning and can only be deleted manually.","snapshots.selectHint":"Select a snapshot to preview its restore plan (read-only preview, changes nothing):","snapshots.skipped":"Skipped","snapshots.sourceZip":"Source","snapshots.status":"Status","snapshots.status.done":"Done","snapshots.status.pending":"Pending","snapshots.status.rolled-back":"Rolled back","snapshots.status.unknown":"Unknown","snapshots.subTab.files":"Backup Files","snapshots.subTab.recovery":"Recovery","snapshots.subTab.restore":"Snapshot Restore","snapshots.subTab.schedule":"Расписание","snapshots.summary":"{hostFileRestores} whole-file restore · {hostFileRemoves} whole-file remove · {pluginRemoves} plugin uninstall · {fileRestores} file restore · {fileRemoves} file remove · {credentialHints} credential hints · {skips} skip","snapshots.title":"Backup & Snapshots","snapshots.unpin":"Unpin","snapshots.viewPlan":"View restore plan","starPrompt.body":"If you find this plugin useful, please give it a ⭐ on GitHub — your support keeps it maintained!","starPrompt.dismiss":"Don't ask again","starPrompt.star":"Star on GitHub","starPrompt.title":"Enjoying Config Manager?","status.ready":"Config Manager ready (plugin {version} · DSH {dsh} · {platform})","status.unavailable":"Config Manager service unavailable — verify the plugin is mounted.","sync.status.lastSync":"Последняя синхронизация","sync.status.sections":"Синхронизируемые разделы","toast.copied":"Скопировано в буфер обмена","toast.copyFailed":"Не удалось скопировать — выделите текст и скопируйте вручную","toast.refreshed":"Обновлено","view.about":"About","view.export":"Export","view.import":"Import","view.market":"Marketplace","view.more":"More","view.overview":"Обзор","view.profiles":"Управление профилями","view.snapshots":"Backup & Snapshots","view.sync":"Remote Sync","view.transfer":"Экспорт и импорт"}}
@@ -0,0 +1 @@
1
+ {"config-manager-sync":{"action.pull":"Pull diff preview","action.pulling":"Pulling…","action.push":"Push to remote","action.pushing":"Pushing…","autosync.description":"When enabled, DSH keeps config in sync in the background: uploads locally-changed config automatically, pulls and merges only when it detects a new remote snapshot; the timer is just a fallback poll and no-ops when nothing changed. Local writes happen only when there are no conflicts or manual-decision items.","autosync.due":"Due — running soon","autosync.enable":"Enable auto sync","autosync.failCount":"{n} consecutive failure(s)","autosync.failed":"Failed","autosync.interval":"Fallback poll interval","autosync.interval12h":"12 hr","autosync.interval15m":"15 min","autosync.interval24h":"24 hr","autosync.interval30m":"30 min","autosync.interval5m":"5 min","autosync.interval60m":"60 min","autosync.interval6h":"6 hr","autosync.intervalHint":"On interval / DSH startup, checks for a new remote snapshot and pulls+merges only if one exists (no upload); local config changes trigger an upload.","autosync.nextRun":"Next in ~{time}","autosync.partial":"Partial","autosync.running":"Auto sync running…","autosync.skipped":"Skipped","autosync.status":"Last run: {status} ({time})","autosync.statusNever":"Never run","autosync.success":"Success","autosync.title":"Auto Sync","change.total":"{total} change(s)","channel.configured":"Configured","channel.currentUrl":"Current URL","channel.git":"Git private repo","channel.notConfigured":"Not configured","channel.open":"Configure sync channel","channel.openHint":"Remote sync runs through a sync channel: a private Git repository or a WebDAV server. Click the button to configure or change it in the dialog.","channel.perChannelHint":"Auto sync, sync mode, encryption and remote snapshots are configured independently for GitHub and WebDAV channels.","channel.title":"Sync Channel","channel.webdav":"WebDAV server","common.close":"Закрыть","common.loading":"Загрузка…","common.retry":"Повторить","config.repoUrl":"Repository URL","config.repoUrlHint":"Private Git repository URL (https / ssh / local path). Use the credential field below for the auth token; never embed it in the URL.","config.save":"Save config","config.saveHint":"Form changes are saved automatically (password/token written securely into DSH credentials, never into sync files or logs); you can also save explicitly with the button.","config.saving":"Saving…","config.title":"Repository","config.token":"Auth token","config.tokenHint":"Securely written into DSH credentials (ref {ref}); never written into sync files or logs. Leave blank to reuse the saved credential.","config.tokenPlaceholder":"ghp_… (optional)","config.tokenSaved":"Credential configured","github.cancel":"Cancel","github.clientIdHint":"Requires the githubClientId plugin config (the client_id of your GitHub OAuth App).","github.description":"Authorize via the GitHub OAuth device flow: no manual token entry — after you approve in the browser, the token is written into DSH credentials automatically.","github.login":"Sign in with GitHub","github.openAuth":"Open GitHub authorization page","github.retry":"Sign in again","github.title":"GitHub Sign-in","github.tokenInvalid":"GitHub sign-in is no longer valid — please sign in again.","github.userCode":"One-time code","history.autosyncApplied":"Applied sections: {sections}","history.autosyncBoth":"Both","history.autosyncConflicted":"Skipped conflict sections: {sections}","history.autosyncDirection":"Direction: {direction}","history.autosyncError":"Error: {error}","history.autosyncNotified":"Notified (3 consecutive failures)","history.autosyncPull":"Pull","history.autosyncPush":"Push","history.autosyncReasonConflict":"Conflict","history.autosyncReasonNetwork":"Network issue","history.autosyncReasonNoRemote":"No remote snapshot","history.autosyncReasonNotConfigured":"No repository configured","history.autosyncSkipReason":"Skip reason: {reason}","history.channelGit":"GitHub","history.channelWebdav":"WebDAV","history.colDetail":"Detail","history.colKind":"Kind","history.colTime":"Time","history.column.autosync":"Auto Sync","history.column.snapshot":"Snapshot","history.detail":"Detail","history.empty":"No sync history yet","history.emptyHint":"Records appear here after your first push / one-click sync / auto sync.","history.kindAutosync":"Auto Sync","history.kindSnapshot":"Snapshot","history.sectionCount":"sections","history.stats.autosync":"Автосинхронизаций: {count}","history.stats.failed":"Сбоев: {count}","history.stats.skipped":"Пропущено: {count}","history.stats.snapshots":"Снимков: {count}","history.stats.summary":"Статистика истории синхронизации","history.stats.total":"Всего: {count}","history.title":"Sync History","load.failed":"Не удалось загрузить статус синхронизации","mode.advanced":"Advanced (Custom Export)","mode.advancedHint":"Manually select the sections to push (same as Custom Export in the Export tab); only portable sections can sync.","mode.atLeastOne":"Select at least one section to sync","mode.decryptPassword":"Decryption password (for encrypted snapshot pull/sync, optional)","mode.decryptPasswordHint":"Provide it when pulling or one-click syncing an encrypted snapshot; without it encrypted snapshots cannot be read (auto sync skips and reports them in history).","mode.default":"Default (Quick Export)","mode.defaultCount":"Will sync {n} recommended section(s)","mode.defaultHint":"Push all recommended sections (settings, providers, plugins, prompts, skills, etc.) in one click — no configuration needed.","mode.encrypt":"Encrypt backup","mode.encryptAutosyncNotice":"Encrypted snapshots are only produced/consumed by manual push/pull; auto sync has no password, so it skips encrypted snapshots and reports them in history.","mode.encryptHint":"Encrypt the sync snapshot with a password (AES-256-GCM). The password is memory-only for this push and never persisted; auto sync cannot decrypt encrypted snapshots, so it skips them and reports it in sync history.","mode.hint":"Choose which sections to export when pushing: Default = recommended sections in one click (Quick Export); Advanced = custom selection (Custom Export).","mode.includeSecrets":"Export secrets","mode.includeSecretsHint":"Write real credential values into the encrypted snapshot (auto-selects encryption when checked; secrets never enter a plaintext snapshot).","mode.password":"Encryption password","mode.passwordConfirm":"Confirm password","mode.passwordMismatch":"Passwords do not match","mode.passwordRequired":"Encryption requires a password","mode.persistHint":"The mode and section selection are saved locally: both auto sync and manual push use this configuration (persists across restarts).","mode.sectionPortable":"Portable","mode.sectionRecommended":"Recommended","mode.sectionsHint":"Only portable sections can sync: device-specific (plugin files, credentials status, sessions) and platform-specific (MCP, workspaces) sections never participate in remote sync.","mode.sectionsTitle":"Sync Sections","mode.security":"Encryption & Secret Export (Security Options)","mode.title":"Sync Mode","privateRepoHint":"Security requirement: the sync repository MUST be private (a public repo would expose your configuration). The auth token is only used for repository access and is never written into sync files, commit content, or logs.","pull.empty":"Remote snapshot matches local (no changes)","pull.needsReview":"Contains items that need human decisions (conflicts / secrets / dependencies / installs)","pull.previewHint":"Read-only diff preview above; nothing is imported. One-click import is not supported in this version; use the Import wizard to apply a downloaded backup if needed.","pull.title":"Pull Diff Preview","push.title":"Push Result","section.description":"Синхронизация переносимой конфигурации между устройствами через приватный Git-репозиторий (секреты не синхронизируются)","section.label":"Удалённая синхронизация","sections.title":"Synced Sections","status.never":"Never synced","status.title":"Sync Status","syncStatus.lastSync":"Последняя синхронизация","syncStatus.sections":"Синхронизируемые разделы","syncStatus.state":"Состояние","syncflow.adoptHint":"Check = import item; uncheck = skip","syncflow.adoptRemote":"Adopt remote","syncflow.bulkHint":"Bulk decisions only apply to conflict items; other changes are adopted by default.","syncflow.button":"One-click sync","syncflow.cancel":"Cancel","syncflow.confirmImport":"Confirm import","syncflow.conflictAncestorLabel":"Common ancestor","syncflow.conflictLocalLabel":"Current","syncflow.conflictRemoteLabel":"Backup","syncflow.conflictTitle":"Resolve conflict","syncflow.conflictUnresolved":"Conflict item {itemId} has no resolution yet (keep current / use backup)","syncflow.conflictUseLocal":"Keep current","syncflow.conflictUseRemote":"Use backup","syncflow.diff":"Diff","syncflow.diffCount":"{count} change(s)","syncflow.empty":"Remote snapshot matches local (no changes)","syncflow.importDone":"Imported {n} section(s)","syncflow.importFailed":"Import failed (rolled back)","syncflow.importWarnings":"Import warnings","syncflow.importedSections":"Written","syncflow.keepLocalAll":"Keep all current","syncflow.latestSnapshot":"Latest snapshot","syncflow.needsRestart":"Some changes require a DSH restart to take effect","syncflow.needsReviewBadge":"Needs decision","syncflow.noSnapshots":"No remote snapshots","syncflow.pushConfirm":"Push","syncflow.pushFirstBaseline":"No remote snapshots yet: this push creates the first sync baseline","syncflow.pushPreviewSections":"Sections to push","syncflow.pushPreviewTitle":"Confirm Push","syncflow.pushing":"Pushing…","syncflow.refreshSnapshots":"Refresh snapshots","syncflow.refreshingSnapshots":"Fetching…","syncflow.rollback":"Rollback","syncflow.rollbackDone":"Rolled back","syncflow.rollingBack":"Rolling back…","syncflow.selectSnapshot":"Select snapshot","syncflow.snapshotOption":"({date} · {count} sections)","syncflow.syncFailed":"Sync failed","syncflow.syncing":"Syncing…","syncflow.title":"One-Click Sync","syncflow.useRemoteAll":"Use all backup","toast.autosyncLoadFailed":"Не удалось загрузить статус автосинхронизации","toast.autosyncUpdateFailed":"Не удалось обновить параметры автосинхронизации","toast.autosyncUpdated":"Параметры автосинхронизации обновлены","toast.configNothingToSave":"Введите URL канала перед сохранением","toast.configSaveFailed":"Не удалось сохранить настройки канала","toast.configSaved":"Настройки канала сохранены","toast.pullDone":"Получение завершено","toast.pullFailed":"Ошибка получения","toast.pushDone":"Отправка завершена","toast.pushFailed":"Ошибка отправки","toast.pushPreviewFailed":"Не удалось сформировать предпросмотр отправки","toast.selectionSaveFailed":"Не удалось сохранить настройки синхронизации","toast.snapshotsLoadFailed":"Не удалось загрузить удалённые снимки","toast.snapshotsRefreshed":"Список удалённых снимков обновлён","toast.syncStartFailed":"Синхронизация в один клик не удалась","warnings.title":"Section Warnings","webdav.password":"Password","webdav.passwordHint":"Securely written into DSH credentials (ref {ref}); never written into sync files or logs. Leave blank to reuse the saved credential.","webdav.passwordPlaceholder":"Password (optional)","webdav.passwordSaved":"Credential configured","webdav.presetHint":"Pick a common WebDAV server to prefill the URL; templates containing <placeholders> need to be replaced with your real server/username.","webdav.title":"WebDAV Configuration","webdav.url":"Server URL","webdav.urlHint":"WebDAV server root URL (https://…). Sync snapshots and the index are stored under a dsh-config-manager/ subdirectory of that URL. Do not include a username/password in the URL.","webdav.username":"Username","webdav.usernameHint":"HTTP Basic auth username (not sensitive, may be shown)."}}
@@ -0,0 +1 @@
1
+ {"config-manager-market":{"common.cancel":"Отмена","common.close":"Закрыть","common.loading":"Загрузка…","common.retry":"Повторить","common.unknownError":"Неизвестная ошибка","config.refresh":"Refresh","config.refreshed":"Индекс витрины обновлён","config.refreshing":"Refreshing…","config.title":"Market Repository","detail.approval.count":"{selected}/{total} section(s) approved","detail.approval.highRiskHint":"These sections install plugins / write files / inject global instructions / register MCP / restore sessions — high-risk changes, not imported by default. Check each one to import it.","detail.approval.requiresApproval":"Requires approval","detail.approval.safe":"Importable","detail.approval.title":"Approve sections to import","detail.back":"Back to list","detail.downloadedAt":"Downloaded: {time}","detail.emptySections":"This item contains no importable sections","detail.errors":"Verification errors:","detail.failed":"Ошибка скачивания — закройте этот диалог и повторите (см. уведомление справа внизу)","detail.impact.conflicts":"{count} conflict(s)","detail.impact.paths":"{count} path mapping(s)","detail.impact.restart":"DSH restart required","detail.impact.secrets":"{count} secret(s) to re-enter","detail.impact.unchanged":"{count} identical","detail.impact.willChange":"{count} item(s) will change","detail.import":"Confirm import","detail.needReview":"Needs human confirmation","detail.noApproval":"No sections approved — cannot import","detail.previewHint":"Read-only preview below (changes nothing). Confirming the import reuses the existing safe pipeline (snapshot + validation + rollback on failure).","detail.title":"Item Details","detail.version":"version {version}","disclaimer.confirm":"I understand, continue","disclaimer.dontAsk":"Don't ask again (no more disclaimers for this action)","disclaimer.download.text":"You are about to download configs from a public network market and import them locally.\\n\\nDownloaded content is untrusted input: not officially reviewed and may carry risks (installing plugins / writing files / changing settings).\\n· Everything is validated and shown before import; high-risk sections are not imported by default and require individual approval;\\n· A snapshot is auto-created before import and rollback is available on failure;\\n· Please verify the source and content before confirming the import.","disclaimer.install.text":"You are about to reinstall configs from your public repo to this machine.\\n\\nThis is content you uploaded before, but it still goes through the same validation and per-section approval:\\n· High-risk sections are not imported by default and require individual approval;\\n· A snapshot is auto-created before import and rollback is available on failure.","disclaimer.title":"Disclaimer","disclaimer.upload.text":"You are about to upload configs to your public repo (<login>/dsh-configs) and submit a listing request to the official market.\\n\\nUploaded content becomes publicly visible and requires human review before entering the official market. Please ensure:\\n· No real secrets / credentials are included (env-var references like $VAR are safe);\\n· No personal privacy or local environment info is included;\\n· You have the right to share these configs.","import.done":"Импорт завершён: записано элементов: {count}","import.failed":"Ошибка импорта (сбоев: {count})","import.needsRestart":"Некоторые изменения требуют перезапуска DSH","list.browse":"Browse","list.browsed":"Витрина обновлена","list.cacheCached":"cached","list.cacheFresh":"just fetched","list.cacheNone":"not cached","list.categoriesAll":"All categories","list.count":"{count} item(s)","list.download":"View details","list.empty":"The built-in market has not loaded yet. Click \\«Refresh\\» first.","list.filtered":"({count} after filter)","list.loading":"Reading market…","list.noItems":"This market has no items.","list.searchPlaceholder":"Search name / author / description…","list.sectionsAll":"All sections","list.sectionsUnknown":"{count} more item(s) not downloaded yet — cannot match by section","list.sortDefault":"Default order","list.sortName":"Name A–Z","list.sortStars":"Most starred","list.sortUpdated":"Recently updated","list.sourceAll":"All sources","list.sourceOfficial":"Official","list.sourcePersonal":"Community","list.stars":"⭐ {count}","list.starsHint":"Stars of the source repo (repo-level, not per item)","myconfigs.back":"Back to market","myconfigs.delete.confirm":"Confirm delete","myconfigs.delete.confirmText":"Delete? This permanently removes the item index and files from your config repo (not recoverable)","myconfigs.delete.confirmTitle":"Delete item","myconfigs.delete.delistStarted":"Local item deleted; a \\«delist PR\\» has been submitted (removal from the official market needs human merge; the item may still appear in the market meanwhile)","myconfigs.delete.prClosed":"Local item deleted; its pending listing PR has been closed","myconfigs.delete.run":"Delete","myconfigs.error.loadItems":"Failed to read uploaded items","myconfigs.error.loadStatus":"Failed to read sign-in status","myconfigs.install.failed":"Ошибка скачивания — закройте этот диалог и повторите (см. уведомление справа внизу)","myconfigs.item.install":"Install locally","myconfigs.item.openPr":"View listing PR","myconfigs.item.update":"Update","myconfigs.list.empty":"No configs uploaded yet","myconfigs.list.loading":"Loading…","myconfigs.list.openRepo":"Open repo","myconfigs.list.refresh":"Refresh","myconfigs.list.summary":"{total} item(s) · {listed} listed · {pending} pending · {none} not listed","myconfigs.list.title":"Uploaded","myconfigs.login.cancel":"Cancel sign-in","myconfigs.login.checking":"Checking sign-in status…","myconfigs.login.hint":"After signing in you can upload configs to your public repo (auto-created as <login>/dsh-configs) and submit a listing PR to the official market (target repo is fixed and not editable).","myconfigs.login.loggedInAs":"Signed in as {login}","myconfigs.login.openAuth":"Open authorization page","myconfigs.login.relogin":"Sign in again","myconfigs.login.repoMissing":"Config repo not created yet — it will be auto-created (public) on first upload","myconfigs.login.repoReady":"Config repo: {repo}","myconfigs.login.start":"Sign in with GitHub","myconfigs.login.targetRepo":"Listing target (fixed): {repo}","myconfigs.login.title":"GitHub sign-in","myconfigs.login.userCode":"One-time code: {code}","myconfigs.result.listingFailed":"Listing failed","myconfigs.result.listingPending":"Uploaded ✓ submitting listing in the background (fork + PR) — list status will update shortly","myconfigs.result.openPr":"View PR","myconfigs.result.openRepo":"Open repo","myconfigs.result.pr":"Listing PR #{number}","myconfigs.result.relist":"Resubmit listing","myconfigs.result.repo":"Config repo","myconfigs.result.sections":"Sections: {sections}","myconfigs.result.sha256":"SHA-256: {hash}","myconfigs.result.title":"Upload/update complete","myconfigs.result.version":"version {version}","myconfigs.tab.browse":"Browse Market","myconfigs.tab.myconfigs":"My Configs","myconfigs.update.hint":"The version will be bumped automatically (+1); item info is prefilled (name editable).","myconfigs.update.run":"Update","myconfigs.update.running":"Updating…","myconfigs.update.selectZip":"Choose new ZIP…","myconfigs.update.title":"Update config","myconfigs.update.zipHint":"Updating needs a new config zip: pick one and it will be validated automatically, then you can update.","myconfigs.upload.form.autoHint":"These fields are generated automatically:","myconfigs.upload.form.categories":"Categories (optional, comma-separated)","myconfigs.upload.form.description":"Description (optional)","myconfigs.upload.form.name":"Name","myconfigs.upload.form.nameHint":"Prefilled from the zip file name; editable","myconfigs.upload.form.title":"Item info","myconfigs.upload.mode.migrate":"Migrate (keep everything)","myconfigs.upload.mode.share":"Share (auto-exclude sensitive content)","myconfigs.upload.mode.shareHint":"Share mode auto-excludes device/platform-specific sections (credentials status / sessions / MCP / workspaces, etc.) and enforces privacy scanning — any sensitive trace blocks publishing instead of just warning.","myconfigs.upload.mode.title":"Publish mode","myconfigs.upload.reselect":"Choose again","myconfigs.upload.run":"Upload","myconfigs.upload.running":"Uploading…","myconfigs.upload.select":"Choose ZIP…","myconfigs.upload.selectHint":"Pick an exported config zip (create a backup on the \\«Export\\» tab first, then pick it here). The market channel never carries secrets — backups containing secrets are rejected.","myconfigs.upload.selected":"Selected: {name}","myconfigs.upload.title":"Upload","myconfigs.upload.validate":"Run validation","myconfigs.upload.validateInvalid":"Content validation failed — cannot upload","myconfigs.upload.validateOk":"Validation passed: valid content, no secrets","myconfigs.upload.validateSecrets":"Contains secrets: the market channel never carries secrets — upload rejected","myconfigs.upload.validating":"Validating…","section.description":"Просмотр и загрузка конфигураций сообщества (публичные Git-репозитории; загружаемый контент не является доверенным — проверяется перед импортом)","section.label":"Каталог конфигураций"}}
@@ -0,0 +1 @@
1
+ {"config-manager-recovery":{"common.cancel":"Отмена","common.retry":"Повторить","common.unknownError":"Неизвестная ошибка","recovery.actionError":"Operation failed","recovery.banner":"Configuration changes are protected: there is an unfinished recovery item. Resolve it before continuing.","recovery.bannerAction":"Go to recovery","recovery.completed":"Recovery complete","recovery.completed.recovered":"Recovered and verified","recovery.completed.rolledBack":"Rolled back and verified","recovery.confirm.dismiss":"Abandon recovery? The operation will be set aside (quarantined), and the related snapshot and operation records are kept, but it will not be auto-recovered.","recovery.confirm.dismissTitle":"Abandon recovery","recovery.confirm.message":"Recovery / rollback is a dangerous operation. Confirm execution? Current files are backed up to a safe location first.","recovery.confirm.retry":"Retry recovery after verification failure. Confirm running it again?","recovery.confirm.rollbackContinue":"Continue the interrupted rollback (already-completed parts are skipped and not redone).","recovery.confirm.title":"Confirm recovery","recovery.continue":"Continue","recovery.currentState.hasSnapshot":"Trusted recovery snapshot available","recovery.currentState.noSnapshot":"No trusted recovery snapshot","recovery.currentState.safeMode":"Safe mode active (config-modifying operations paused)","recovery.currentState.safeModeCleared":"Restored to normal — you can continue","recovery.currentState.title":"Current state","recovery.decision.unknown":"Unknown","recovery.dismiss":"Abandon recovery","recovery.dismissing":"Abandoning…","recovery.empty":"No recovery items to handle.","recovery.environment.compatible":"Environment matches","recovery.environment.incompatible":"Environment mismatch (may be from another machine / install)","recovery.environment.title":"Environment","recovery.error":"Failed to load recovery status","recovery.execute":"Execute recovery","recovery.executing":"Recovering…","recovery.inProgress":"Recovery in progress","recovery.incident.createdAt":"Occurred at","recovery.incident.decision":"Recommendation","recovery.incident.operationId":"Operation ID","recovery.incident.operationType":"Operation type","recovery.incident.reason":"Reason","recovery.incident.state":"State","recovery.incident.state.committed":"Completed","recovery.incident.state.needsAttention":"Manual action needed","recovery.incident.state.recovered":"Recovered","recovery.incident.state.recovering":"Recovering","recovery.incident.state.rolledBack":"Rolled back","recovery.incident.state.unknown":"Unknown","recovery.incident.title":"What happened","recovery.loading":"Checking recovery status…","recovery.manualActionRequired":"Manual action required","recovery.mismatch":"Mismatch","recovery.needsAttention":"Needs attention","recovery.needsAttention.hint":"Recovery could not complete or verification failed. Review the reason, then retry or abandon.","recovery.needsAttention.title":"Needs attention","recovery.partialMatch":"Partial match","recovery.preview.action":"Action","recovery.preview.detail":"Detail","recovery.preview.empty":"No restorable actions for this operation (or all skipped).","recovery.preview.hint":"Read-only preview below (zero writes). Recovery only runs after confirmation.","recovery.preview.loading":"Generating preview…","recovery.preview.summary":"Will execute {count} action(s)","recovery.preview.title":"Recovery preview","recovery.required":"Recovery Required","recovery.requiredHint":"An operation did not complete normally. To stay safe, all config-modifying operations are paused. Handle the recovery item(s) below to restore normal operation.","recovery.retry":"Retry","recovery.retrying":"Retrying…","recovery.rollbackContinue":"Continue rollback","recovery.rollbackRecommended":"Rollback recommended","recovery.running":"Recovery task in progress","recovery.runningHint":"Recovery / rollback is running; keep this page open.","recovery.snapshot.createdAt":"Snapshot time","recovery.snapshot.id":"Snapshot ID","recovery.snapshot.operationType":"Snapshot operation","recovery.snapshot.title":"Recovery snapshot","recovery.snapshot.verdict":"Snapshot validation","recovery.snapshot.verdict.corrupt":"Corrupt","recovery.snapshot.verdict.invalid":"Invalid","recovery.snapshot.verdict.legacy":"Legacy snapshot (explicit confirmation required)","recovery.snapshot.verdict.manual":"Manual / local (outside this operation)","recovery.snapshot.verdict.trusted":"Trusted (bound to this operation)","recovery.snapshot.verdict.unknown":"Unknown","recovery.snapshot.verdict.unsafe":"Unsafe path","recovery.snapshot.verdict.wrongEnv":"Environment mismatch","recovery.verificationError":"Verification error","recovery.verified":"Verified","recovery.verify":"Verify","recovery.verify.details":"Check details","recovery.verify.manualHints":"Manual action needed","recovery.verify.terminal.needsAttention":"Needs attention","recovery.verify.terminal.recovered":"Recovered","recovery.verify.terminal.rolledBack":"Rolled back","recovery.verify.title":"Verification result","recovery.verify.verdict.error":"Verification error: could not reliably complete verification; recovery incomplete","recovery.verify.verdict.match":"Verified: target state matches the trusted snapshot","recovery.verify.verdict.mismatch":"Verification failed: target state does not match the trusted snapshot; recovery incomplete","recovery.verify.verdict.partial":"Verified (partial match): core state matches, but some items could not be auto-verified","recovery.verify.verdict.unknown":"Unknown","recovery.verifying":"Verifying…","section.description":"Восстановление профилей и откат к предыдущим снапшотам","section.label":"Аварийное восстановление","view.recovery":"Recovery"}}
@@ -0,0 +1 @@
1
+ {"config-manager-history":{"history.corruptedBanner":"Detected unreadable or possibly tampered history entries","history.corruptedCount":"{count} entry(s) were skipped (excluded from export)","history.empty":"No migration records yet. Executing an import, restore, profile switch, sync apply, or scheduled backup will create audit entries here.","history.export.json":"Export JSON","history.export.markdown":"Export Markdown","history.exportError":"Export failed","history.exported":"Exported","history.exporting":"Exporting…","history.filter.kind":"Operation","history.filter.recent":"Time range","history.filter.recent.200":"Latest 200","history.filter.recent.50":"Latest 50","history.filter.recent.all":"All","history.filter.result":"Result","history.filter.sections":"Sections","history.filter.title":"Filter & export","history.kind.autosync":"Autosync","history.kind.backup":"Scheduled backup","history.kind.import":"Import","history.kind.profile-delete":"Profile delete","history.kind.profile-import":"Profile import","history.kind.profile-rename":"Profile rename","history.kind.profile-save":"Profile save","history.kind.profile-switch":"Profile switch","history.kind.recovery":"Recovery/rollback","history.kind.restore":"Snapshot restore","history.kind.rollback":"Rollback","history.kind.snapshot-delete":"Snapshot delete","history.kind.snapshot-prune":"Snapshot retention","history.kind.sync-apply":"Sync apply","history.loadError":"Failed to load migration history","history.loading":"Loading migration history…","history.refresh":"Refresh","history.reload":"Reload","history.result.failed":"Failed","history.result.skipped":"Skipped","history.result.success":"Success","history.search.placeholder":"Search summary / error / section…","history.stats.failed":"Failed","history.stats.skipped":"Skipped","history.stats.success":"Success","history.stats.total":"Total","history.subtitle":"Единый журнал аудита всех деструктивных и миграционных операций","history.table.kind":"Operation","history.table.result":"Result","history.table.sections":"Sections","history.table.summary":"Summary","history.table.time":"Time","history.title":"История миграций и аудита","history.updatedAt":"Updated","view.history":"История миграций"}}
@@ -0,0 +1 @@
1
+ {"dshhub-market":{"aboutLabel":"About this plugin","actWhy":"Почему не активен?","agentBusyInstall":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед установкой. Установка изменяет файлы плагина, поэтому работающий агент может завершиться с ошибкой в процессе.","agentBusyUpdate":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед обновлением. Обновления заменяют файлы плагина на месте, поэтому работающий агент может завершиться с ошибкой или смешать версии в процессе выполнения.","aiFix":"Исправление через AI","aiFixConservative":"Действуйте консервативно: исправляйте только явные ошибки (сбои запуска, дубликаты, несовпадения критических зависимостей). Не выполняйте лишних обновлений; объясняйте каждое действие и ждите подтверждения.","aiFixCopied":"Промпт для исправления скопирован — вставьте его в новую беседу с агентом","aiFixFail":"Буфер обмена недоступен — скопируйте диагностику вручную ниже","aiFixHint":"Передать отчёт диагностики в новую сессию Агента (скопировано в буфер обмена)","aiFixIntro":"Пожалуйста, помоги исправить проблемы с плагинами в DeepSeek Harness (профиль: {0}). Данные диагностики:","aiFixScope":"Если нет — вы процесс вне целевого харнесса: вы можете переупорядочить dsh.profile.bundles, отключить/включить плагины или скорректировать cordis.patch.yml. Официальные бандлы фиксированы; опишите план перед изменениями.","all":"Все","alreadyInstalled":"✓ Установлен","approveBuilds":"Разрешить сборочные скрипты и повторить","auditBadgePass":"AI-reviewed","auditBadgeWarn":"AI-reviewed (notes)","authoredBy":"Original authors & license: ","autoBackup":"Резервная копия раз в сутки (при открытии маркета)","backTop":"Наверх","backupDone":"Копия загружена","backupDownload":"Выгрузить копию","backupHint":"Включает список плагинов и настройки профиля, но не node_modules. Восстановление ставит плагины заново по списку.","backupImport":"Импортировать и посмотреть","backupLocal":"Локальный файл","backupWorking":"Выполняется…","buildsSkipped":"Этому плагину нужны сборочные скрипты; по умолчанию они заблокированы ради безопасности. Разрешите их и переустановите:","busyWait":"Уже выполняется другая операция — дождитесь её окончания (установка, обновление и удаление идут по одной)","byAuthor":"Provided by {0}","cancel":"Отмена","cancelOp":"Отменить","cancelled":"Отменено","cancelling":"Отмена…","catConflict":"Конфликты","catDeps":"Зависимости","catOrder":"Порядок","catsLess":"Свернуть","catsMore":"Ещё","changelogLabel":"Changelog","checkBundles":"Порядок загрузки плагинов","checkBundlesEmpty":"Слои плагинов не объявлены","checkCommunity":"сообщество","checkDir":"каталог","checkDuplicates":"Повторяющиеся записи плагинов","checkDuplicatesEmpty":"Повторов нет","checkEntries":"записей (идентификаторы загрузчика)","checkErrors":"Ошибки","checkErrorsEmpty":"Ошибок нет","checkHoisted":"поднят","checkIssues":"Найдены проблемы","checkLoadFail":"Не удалось загрузить диагностику: ","checkLoading":"Анализ профиля…","checkMultiEmpty":"Пакетов ядра в нескольких версиях нет","checkMultiVersion":"Пакеты ядра в нескольких версиях","checkOfficial":"официальный","checkOrderTip":"порядок загрузки бандла сообщества конфликтует с объявленными правилами before/after","checkOrphans":"Неверные записи конфига","checkOrphansEmpty":"Неверных записей нет","checkOverridden":"переопределяет","checkOverrides":"Переопределения","checkOverridesEmpty":"Переопределений нет","checkPatch":"файл патча","checkPeerEmpty":"Расхождений версий зависимостей нет","checkPeerInfo":"{0} записей к сведению (не подтверждено)","checkPeerMismatches":"Расхождения версий зависимостей","checkPeerOverview":"расхождений: {0} · к сведению: {1}","checkProfile":"профиль","checkRange":"объявленный диапазон","checkRefresh":"Проверить заново","checkResolved":"разрешённая версия","checkSatisfied":"удовлетворено","checkSource":"источник","checkUnknown":"неизвестно","checkUnsatisfied":"не удовлетворено","checkWarnings":"Предупреждения","checkWarningsEmpty":"Предупреждений нет","cmdDetails":"Команда установки","compatRiskBanner":"Обнаружен риск несовместимости — откройте Диагностику перед перезапуском или откатите эту операцию.","confirm":"Подтвердить","confirmRemove":"Подтверждаете?","confirmTitle":"Установка","confirmWarn":"Плагины — сторонний код сообщества. Устанавливая, вы доверяете этому источнику; сборочные скрипты по умолчанию заблокированы.","contactLabel":"Contact the creator","contactLink":"Link","copiedToast":"Copied","copyBtn":"Copy","credsWarning":"Внимание: в копию попадают настройки профиля и файлы, где могут лежать секреты (config.toml, .env и подобные). Локальная выгрузка ничего не вырезает, поэтому выгружайте на WebDAV, которому доверяете.","daysAgo":"Updated {0} days ago","deprecatedBadge":"Устарел","deprecatedWarn":"Каталог помечает этот плагин как устаревший; новым пользователям ставить его не советуют.","diagExplain":"Что это","diagExplainText":"Эта страница ищет плагины, конфликтующие друг с другом, несовпадения версий зависимостей и неверный порядок загрузки. Термины:","diagOkAll":"Всё в порядке: конфликтов, проблем с зависимостями и порядком не найдено","diagTermBundle":"бандл — один пакет плагина, применяется по порядку","diagTermEntry":"запись — то, что плагин добавляет в работающую композицию","diagTermOrder":"порядок загрузки — очерёдность активации; более поздний может перекрыть более ранний","diagTermOrphan":"неверная запись — конфиг ссылается на то, чего нет","diagTermPeer":"peer-зависимость — пакет, который плагин ждёт от хоста","diagTermShadow":"перекрытие — старая копия из плагина закрывает более новую хостовую","disable":"Выключить","disabledState":"Выключен","dismiss":"Скрыть","dismissNotice":"Скрыть это уведомление","duplicateNames":"Плагины с одинаковыми именами (к сведению, это не конфликт)","empty":"Подходящих плагинов нет","enable":"Включить","envFix":"Настроить автоматически","envFixFail":"Автоматическая настройка не удалась — выгрузите журнал и пришлите нам файл","envFixing":"Настройка…","envMissing":"Перед установкой плагинов нужен один небольшой компонент","exportLog":"Выгрузить журнал","exportLogFail":"Не удалось выгрузить журнал","exportedLog":"Журнал выгружен: dsh-market-log.txt — приложите его к обращению","exportingLog":"Выгрузка…","fabModalTitle":"Магазин плагинов dshhub.co","fabTitle":"Открыть магазин плагинов dshhub.co","faqLabel":"FAQ","filter":"Фильтр","filterDir":"Порядок","filterSort":"Поле сортировки","filterTime":"Вышло за","firstPage":"В начало","gist":"GitHub Gist","gistCreated":"Выгружено:","gistErrAuth":"GitHub не авторизовал: токен неверный или истёк, либо gh CLI не залогинен","gistErrInvalid":"Содержимое Gist повреждено или формат копии не поддерживается","gistErrNetwork":"GitHub недоступен — проверьте сеть или прокси","gistErrNoId":"Для обновления нужен идентификатор Gist — заполните поле или переключитесь на «Создать»","gistErrNotFound":"Gist не найден — проверьте идентификатор или ссылку","gistErrRateLimit":"Достигнут лимит GitHub, либо у токена нет права gist","gistErrTimeout":"GitHub не ответил вовремя — проверьте сеть и повторите","gistExport":"Выгрузить в Gist…","gistExportDone":"Выгружено в Gist","gistExportGo":"Выгрузить","gistExportHint":"Отмечено всё — полная копия вместе с настройками; если снять любую галочку, выгрузятся только выбранные плагины, а настройки — по отдельному флажку.","gistExportSelect":"Выберите плагины для выгрузки","gistId":"Идентификатор или ссылка на Gist (при выгрузке оставьте пустым, чтобы создать новый приватный)","gistImport":"Загрузить из Gist","gistIncludeConfig":"Включить файлы настроек (в них могут быть секреты)","gistModeCreate":"Создать новый приватный Gist","gistModeUpdate":"Обновить Gist из поля","gistNoPlugins":"В этом профиле нечего выгружать","gistNote":"В отличие от локальной выгрузки (архив на этой машине), Gist нужен для переноса между машинами: выгрузите в приватный Gist и загрузите на другом компьютере под тем же аккаунтом. Токен живёт только в памяти этой вкладки и никогда не пишется в браузерное хранилище; если залогинен gh CLI или задан DSH_GITHUB_TOKEN, вводить его не нужно. Gist приватный, до 1 МБ на файл.","gistSelectAll":"Выбрать все","gistSelectNone":"Снять выбор","gistSpecLocal":"локально","gistSrcEnv":"переменная DSH_GITHUB_TOKEN","gistSrcGh":"gh CLI","gistSrcToken":"введён вручную","gistToken":"Токен GitHub (только в памяти вкладки — после обновления страницы введите заново; оставьте пустым, чтобы использовать серверный DSH_GITHUB_TOKEN или залогиненный gh CLI)","gistVerify":"Проверить связь","gistVerifySource":"Проверено — источник токена: {0}","goDiagnose":"Открыть диагностику","gotIt":"Понятно","groupAdd":"Добавить плагин","groupAddEmpty":"Все установленные плагины уже в этой группе","groupAddTheme":"Добавить тему","groupAssign":"Назначить","groupConfirmDelete":"Удалить группу?","groupCreate":"Создать","groupDelete":"Удалить группу","groupEmpty":"Пока пусто","groupMixed":"Включена частично","groupNamePh":"Название группы","groupNew":"Новая группа","groupRemove":"Убрать","groupRename":"Переименовать","hostDependencyMore":"ещё находок пропущено: {0}","hostDependencyWarning":"Плагин перечисляет в зависимостях известные общие пакеты хоста DSH. Это может перекрыть хостовую версию; проверка смотрит только манифест и не подтверждает, что в рантайме появился дубль:","hotBanner":"плагины готовы — обновите страницу, чтобы ими пользоваться","install":"Установить","installFail":"Установить не удалось","installReplacement":"Установить замену","installedBadge":"✓ Установлен","installedEmpty":"Плагинов сообщества пока нет — загляните во вкладку «Обзор»","installedLabel":"Installed","installing":"Установка…","kindApp":"App","kindPlugin":"Plugin","kindPreset":"Agent Mode","kindSkill":"Skill","kindTheme":"Theme","kindTool":"Tool","lastPage":"В конец","linkedDev":"подключён как разработка","loadFail":"Не удалось загрузить каталог плагинов, попробуйте позже","loading":"Загрузка каталога…","localOnly":"Адрес WebDAV и учётные данные остаются только в этом браузере.","marketNoToggle":"Сам маркет выключить нельзя","marketUpdate":"Доступно обновление маркета — обновить","nav":"Маркет плагинов","nextPage":"Дальше","noGroups":"Групп пока нет — создайте","notInstalled":"Не установлен","openExternal":"Open","orderAlreadyOptimal":"Текущий порядок уже оптимален и удовлетворяет всем зависимостям плагинов","orderApplied":"✓ Применено — перезапустите для активации","orderApply":"Применить порядок","orderAutoSort":"Автосортировка","orderConflicts":"конфликты before/after в текущем порядке","orderDiffHint":"Этот порядок изменит композицию: {0} переопределений, {1} изолированных, {2} дубликатов","orderDown":"↓","orderDrag":"Перетащите для изменения порядка","orderDragHint":"Перетаскивайте ⠿ для сортировки. Изменения сохраняются при нажатии «Применить порядок».","orderReset":"Сбросить черновик","orderSection":"Порядок загрузки","orderSuggestApply":"Применить рекомендуемый порядок","orderSuggestHint":"Рекомендуемый порядок (автосортировка по правилам before/after):","orderTrialFail":"Ошибка статической валидации композиции: {0}","orderUp":"↑","orphanIdRequired":"нет идентификатора","orphanInsertNotArray":"неверный формат","orphanInsertTargetMissing":"цель не найдена","orphanInsertTargetNotGroup":"цель не является группой","orphanNameMismatch":"имя не совпадает","orphanPatchTargetMissing":"цель не найдена","orphanReasonOther":"другое","packagesDone":"обработано пакетов: {0}","pageInfo":"Страница {0} из {1}","partialNote":"Отменено — часть изменений уже применена","patchDisabled":"Выключен патчем","patchForced":"Включён патчем","perPage":"На странице","phaseBuilding":"Сборочные скрипты","phaseDownloading":"Загрузка","phaseLinking":"Связывание","phaseResolving":"Разрешение зависимостей","prevPage":"Назад","progressHint":"Первая установка скачивает и разрешает зависимости — крупные плагины занимают 1–3 минуты","published":"выпущен","rateCommentLabel":"Comment (optional)","rateCommentPh":"Share your experience (optional, up to 500 characters)","rateFail":"Rating submission failed, please retry later","rateLink":"Rate","rateOk":"Rating submitted, thanks for your feedback","ratePickScore":"Please pick a star rating first","rateScoreLabel":"Your rating","rateScoreValue":"{0} stars","rateSubmit":"Submit rating","rateSubmitting":"Submitting…","rateTitle":"Rate this plugin","rateTooFast":"Too many submissions, please try again later (max 3 per plugin per day)","readme":"README","redeemBtn":"Unlock","redeemDemo":"Try 080808 to unlock a theme for free","redeemOk":"Unlocked: {0}, added to the list below","redeemPh":"Passcode, e.g. 3K7M9P","redeemTitle":"Enter a passcode to unlock plugins","redeeming":"Unlocking…","refresh":"Обновить","refreshBanner":"изменения применены — обновите страницу, чтобы их увидеть","removedItemLabel":"Removed from marketplace","removedItemReason":"Reason: {0}","replacementHint":"Каталог предлагает","reportCatFraud":"Fraud / scam","reportCatInfringement":"Infringement (copyright / trademark / patent)","reportCatMalware":"Malware / data theft","reportCatMisleading":"Misleading / false claims","reportCatOther":"Other issue","reportCatPorn":"Pornographic content","reportCategoryLabel":"Reason","reportContactLabel":"Contact","reportContactPh":"Optional contact so the platform can reach you","reportDescLabel":"Description","reportDescPh":"Describe the issue and evidence (at least 10 characters)","reportFail":"Report submission failed, please retry later","reportLink":"Report","reportOk":"Report submitted. The platform will verify it, usually within 48 hours. Thanks for keeping the marketplace safe.","reportPick":"Select…","reportPickCategory":"Please pick a reason","reportRateLimited":"Too many submissions, please try again later","reportSubmit":"Submit report","reportSubmitting":"Submitting…","reportTitle":"Report this plugin","reportTooShort":"Description must be at least 10 characters","restartBanner":"изменения внесены — перезапустите DeepSeek Harness","restartFail":"Перезапустить не удалось","restartHint":"Как перезапустить: остановите текущий процесс dsh и запустите его снова (например, dsh web)","restartNow":"Перезапустить","restartTimeout":"Не дождались запуска DeepSeek Harness","restarting":"Перезапуск…","restoreConfirm":"Восстановление перезапишет настройки этого профиля и переустановит плагины. Продолжить?","restoreDone":"Восстановление завершено — перезапустите DeepSeek Harness","restoreMissing":"Плагинов из копии не установлено: {0}","restorePartial":"Восстановление продолжилось, но эти плагины установить не удалось:","restorePreviewDone":"Копия загружена. Проверьте вкладку «Установленные» и запускайте восстановление.","restoreStart":"Начать восстановление","rollbackNow":"Откатить","rollingBack":"Откат изменений…","searchPh":"Поиск плагинов: уведомления, терминал, память…","setCardDesc":"Просмотр версии и настроек магазина плагинов.","setChannel":"Канал обновлений","setChannelBeta":"Бета","setChannelBetaHint":"Ранний доступ к непроверенным версиям. Влияет только на рынок плагинов.","setChannelDev":"Разработка","setChannelDevHint":"Непроверенные сборки из ветки разработки. Не рекомендуются для общего использования.","setChannelStable":"Стабильный","setChannelStableHint":"Только выпущенные версии.","setChannelSwitch":"Переключиться на","setChannelSwitchHint":"Эта версия ниже установленной.","setSelfCancel":"Отмена","setSelfConfirm":"Удалить магазин плагинов? Повторная установка возможна только через командную строку.","setSelfFailed":"Сбой операции","setSelfPurge":"Также очистить собственные данные магазина","setSelfPurgeOff":"Сохранить данные магазина. Обратите внимание: отключённые плагины останутся выключенными, и после удаления магазина вернуть их через интерфейс будет невозможно.","setSelfPurgeOn":"Будут удалены: списки отключений магазина, пользовательские группы и записи отключений в файле патча профиля — отключённые плагины снова запустятся. Пароли и токены не затрагиваются (магазин не сохраняет их на диске).","setSelfRemove":"Удалить магазин плагинов","setSelfRemoveConfirm":"Удалить","setSelfRemoveHint":"Удалить магазин из этого профиля. Ваши остальные плагины затронуты не будут.","setSelfRemoved":"Удалено","setSelfRemovedHint":"Перезапустите DeepSeek Harness для завершения очистки.","setSelfUpToDate":"Установлена последняя версия","setSelfUpToDateHint":"Актуально, обновление не требуется","setSelfUpdate":"Обновить","setSelfUpdateHint":"При обновлении скачивается новая версия; она вступит в силу после перезапуска.","setSelfUpdateReady":"Доступна новая версия:","setSelfUpdatedHint":"Загружено. Перезапустите DeepSeek Harness, чтобы изменения вступили в силу — клиент обновится сразу, сервер после перезапуска.","setSelfWorking":"Удаление…","sortAdded":"Дата выпуска","sortAsc":"По возрастанию","sortDesc":"По убыванию","sortDownloads":"npm загрузки (30д)","sortNewest":"Сначала новые","sortOldest":"Сначала старые","sortStars":"Звёзды","stateBroken":"Установлен, но не прошёл проверку","stateDisabled":"Выключен","stateInert":"Установлен, но не является плагином слоя профиля","stateLive":"Работает (загружен на лету)","stateRestart":"Установлен — перезапустите, чтобы применить","stepsLabel":"Getting started","subtitle":"Плагины сообщества для DeepSeek Harness","tabAgentic":"Agents & Skills","tabAppearance":"Appearance & Experience","tabBackup":"Копия и восстановление","tabDiagnostics":"Диагностика","tabDiscover":"Обзор","tabGroups":"Группы","tabInstalled":"Установленные","tabList":"Список","tabPublic":"Public market","tabRedeem":"Passcode","tabThemes":"Темы","tabUtility":"Tools & Capabilities","teachingLabel":"Guides","terminalWarn":"Похоже, это плагин для терминала: в веб-профиле он может ничего не делать или даже сломать запуск DeepSeek Harness. Прочитайте его README и ставьте в тот профиль, для которого он написан.","themeActive":"Активна","themeApply":"Применить","themeDeactivate":"Отключить","themeEmpty":"Других тем в каталоге пока нет — следите за обновлениями","timeAll":"Всё время","timeDay":"Сутки","timeMonth":"30 дней","timeQuarter":"90 дней","timeWeek":"7 дней","timeYear":"Год","toastReady":"установлен и работает","toastTheme":"теперь активна. Переключить можно в «Настройки → Маркет плагинов → Темы»","today":"Updated today","toggleFail":"Переключить не удалось","trustedLabel":"Platform-verified source","ungrouped":"Без группы","uninstall":"Удалить","uninstallConfirmDesc":"Плагин будет удалён из текущего профиля.","uninstalling":"Удаление…","unlockDelete":"Remove","unlockDeleteConfirm":"Remove this unlock record? Installed plugins are not affected.","unlockDeleteFail":"Remove failed","unlockDeleteWorking":"Removing…","unlockInstall":"Install","unlockInstallOk":"Installed: {0} — find it in the Installed tab","unlockedAt":"Unlocked {0}","unlockedEmpty":"Nothing unlocked yet. Seen a passcode in a creator’s video? Type it in.","unlockedTitle":"My unlocked plugins","upToDate":"Обновлений нет","update":"Обновить","updateAll":"Обновить все","updateFail":"Обновить не удалось","updateNow":"Обновить сейчас","updated":"✓ Обновлён — перезапустите, чтобы применить","updatedLive":"✓ Обновлён — работает","updating":"Обновление…","versionHint":"Версия магазина плагинов — укажите её при сообщении об ошибке","videoFallback":"Not playing? Watch in browser","videoLabel":"Tutorial video","viewReplacement":"Посмотреть замену","viewSource":"Исходник","webdav":"WebDAV","webdavNote":"Адрес WebDAV и имя пользователя остаются только в этом браузере; пароль хранится на сервере и вводится заново каждую сессию.","webdavPassword":"Пароль (необязательно)","webdavPreset":"Готовая настройка провайдера","webdavRestore":"Восстановить с WebDAV","webdavUpload":"Выгрузить копию","webdavUrl":"Адрес файла копии","webdavUser":"Имя пользователя (необязательно)"}}
@@ -0,0 +1 @@
1
+ {"dsh-vision-bridge":{"addChannel":"Добавить канал","advanced":"Расширенные настройки","apiKey":"Ключ API","attachMaxItems":"Макс. вложений за вызов","attachMaxItemsRange":"Количество вложений за вызов должно быть целым числом от 1 до 32","attachments":"Вложения","attachmentsHint":"Сколько изображений можно опубликовать за один вызов attach, и нужно ли скрывать инструменты бриджа от моделей с нативным зрением.","auto":"Автоматически","autoDiscoverOllama":"Автопоиск моделей Ollama","baseURL":"Базовый URL","bench":"Бенчмарк","blurFaces":"Размывать лица на изображениях","channelOrderAutoLatency":"По задержке (наименьший пинг)","channelOrderManual":"Вручную (по списку)","channelOrderMode":"Режим порядка каналов","channelOrderWeighted":"По весам провайдеров","channels":"Каналы провайдеров","channelsDesc":"Список настроенных OCR / Vision провайдеров для анализа изображений.","channelsHint":"Перетащите каналы для изменения порядка приоритета.","circuitClosed":"Норма","circuitHalfOpen":"Тест восстановления","circuitOpen":"Разомкнут (сбой)","circuitState":"Состояние предохранителя (Circuit Breaker)","compression":"Сжатие изображений","compressionDesc":"Автоматически масштабировать и сжимать большие изображения перед отправкой в API.","concurrency":"Параллельные запросы","concurrencyHint":"Максимальное количество одновременных задач распознавания","consensus":"Консенсус моделей","cropImages":"Автообрезка пустых полей","cropImagesDesc":"Удалять пустые поля для экономии токенов и ускорения анализа","current":"Текущая: {provider} / {model}","currentAuto":"Автовыбор","defaultChannel":"Основной канал","defaultModel":"Модель по умолчанию","degraded":"Деградация","deleteChannel":"Удалить канал","describeStrategy":"Стратегия описания","description":"Шлюз компьютерного зрения: анализ скриншотов, распознавание документов, OCR и обработка изображений через мультимодальные модели.","deskew":"Устранение перекоса изображений","detailLevel":"Детализация (Detail Level)","detailLevelAuto":"Авто (Auto)","detailLevelHigh":"Высокая (High Detail)","detailLevelLow":"Низкая (Low Detail - экономия токенов)","discard":"Сбросить","editChannel":"Редактировать канал","empty":"-","emptyChannels":"Каналы компьютерного зрения не настроены.","enableFacePrivacy":"Защита приватности лиц","enableFacePrivacyDesc":"Обнаруживать и скрывать лица людей на скриншотах перед отправкой во внешние API","enhanceImage":"Улучшение качества изображений","errorCount":"Ошибок: {n}","escalation":"Эскалация","escalationAuto":"Автоэскалация (второй проход для сложных изображений)","escalationSimple":"Только простой режим (один проход)","failCount":"Сбоев: {n}","failed":"Не удалось загрузить/сохранить","fallbackChannel":"Резервный канал","fallbackChannelDesc":"Канал, используемый при недоступности основного провайдера","fastMode":"Быстрый режим OCR","filterProviders":"Фильтр провайдеров…","freeProviders":"Бесплатные провайдеры","healthy":"В норме","hideRedundantTools":"Скрывать инструменты бриджа у моделей со зрением","imageDimensions":"Максимальное разрешение (px)","imageDimensionsHint":"Например 2048 для ограничения максимальной стороны изображения","imageFormat":"Формат конвертации","imageFormatJpeg":"JPEG (меньший размер)","imageFormatPng":"PNG (без потерь)","imageFormatWebp":"WebP (оптимальный баланс)","imageMaxHeight":"Макс. высота (px)","imageMaxWidth":"Макс. ширина (px)","imageQuality":"Качество (1–100)","jsonrpc":"JSON-RPC","keyHidden":"неизвестно","keyMissing":"нет ключа","keyOk":"ключ в порядке","latency":"Задержка: {time}мс","latencyAvg":"Средняя задержка: {time}мс","latencyMax":"Макс. задержка: {time}мс","latencyMin":"Мин. задержка: {time}мс","latencyP95":"p95 задержка: {time}мс","loading":"Загрузка настроек Vision Bridge…","maskPII":"Маскировать персональные данные в промптах","maskSystemPaths":"Маскировать пути и IP в ответах","maxDimension":"Макс. размер стороны (px)","maxDimensionHint":"Изображения большего размера будут пропорционально уменьшены","maxTokens":"Максимум токенов вывода","method":"Метод","mode":"Режим","modeHybrid":"Гибридный (автоперезапись + инструменты)","modeLlm":"Только LLM (автоперезапись, инструменты доступны)","modeTools":"Только инструменты (без перезаписи, вызов describe_image)","model":"Модель","modelCatalog":"Каталог моделей","modelCatalogFailed":"Не удалось загрузить каталог моделей","modelCatalogLoading":"Загрузка каталога моделей…","modelInvalid":"Модель не принимает изображения","modelName":"Имя модели (например gpt-4o, claude-3-5-sonnet, qwen-vl)","modelPlaceholder":"gpt-4o","modelSelection":"Выбор модели","noChannels":"Нет доступных каналов","noModels":"Модели не найдены","noVisionModels":"No vision models in the catalog (input: [text, image]) — add one in Настройки → Models.","nsfwFilter":"Фильтр неприемлемого контента","ocrEngine":"Движок OCR","ocrEngineAuto":"Автовыбор","ocrEngineCloud":"Облачные мультимодальные модели","ocrEngineLocal":"Локальный OCR / Ollama","ocrLanguage":"Язык распознавания текста","ocrLanguageHint":"Например rus+eng для Tesseract / локальных движков","offline":"Офлайн","orderLatency":"По минимальной задержке","orderManual":"Ручной порядок","orderRandom":"Случайный балансировщик","orderRoundRobin":"Циклический (Round Robin)","orderWeighted":"Взвешенный балансировщик","pipeline":"Пайплайн обработки","pixelDiff":"Попиксельное сравнение (Pixel Diff)","pixelDiffHint":"Точное отслеживание изменений интерфейса «до / после» на уровне пикселей.","presetCloud":"Пресет: Облако","presetLmStudio":"Пресет: LM Studio","presetLocal":"Пресет: Локальный","privacy":"Приватность и безопасность","protocol":"Протокол","protocolOpenaiChat":"openai-chat","protocolOpenaiResponses":"openai-responses","provider":"Провайдер","providerName":"Имя провайдера (например openai, anthropic, ollama)","providerNameHint":"Идентификатор провайдера в системе","providerPlaceholder":"openai","quality":"Качество сжатия (1-100)","qualityAnalysis":"Анализ качества и детекция размытия","qualityAnalysisHint":"Определение резкости (дисперсия Лапласа) и извлечение цветовой палитры.","qualityHint":"85 рекомендуется для оптимального соотношения качества и размера","qualityJpeg":"Качество JPEG (%)","qualityWebp":"Качество WebP (%)","rateLimit":"Лимит запросов в минуту (RPM)","rateLimitRpm":"Лимит RPM","rateLimitTpm":"Лимит TPM","remove":"Удалить","reqBoth":"Выберите провайдера и модель, или оставьте оба пустыми для автовыбора","requestTemplate":"Шаблон запроса","requestTimeout":"Таймаут запроса (сек)","requestTimeoutHint":"Максимальное время ожидания ответа от Vision API","requests":"Запросов","reset":"Сброс (авто)","resetCircuits":"Сбросить предохранители","resetCircuitsSuccess":"Состояния предохранителей сброшены","resolution":"Разрешение","responsePath":"Путь ответа","retryAttempts":"Попыток повтора при ошибке","retryAttemptsHint":"Количество автоматических повторов при временных сбоях сети","retryCount":"Повторов: {n}","routeDirect":"Прямой маршрут","routeFallback":"Резервный маршрут","routeStrategy":"Стратегия маршрутизации","routingStrategy":"Стратегия маршрутизации","save":"Сохранить","saveChannel":"Сохранить канал","saved":"Настройки сохранены","savedChannel":"Канал сохранён","saving":"Сохранение…","savingChannel":"Сохранение канала…","secImage":"Качество изображений","secRouting":"Маршрутизация","security":"Безопасность","selfCheck":"Визуальная самопроверка","settings.channels":"Каналы","settings.circuitBreaker":"Предохранители","settings.general":"Основные","settings.performance":"Производительность","settings.privacy":"Приватность","sglang":"SGLang","status":"Статус провайдеров","statusActive":"Канал активен и проверен","statusBenchmarking":"Тестирование задержки…","statusError":"Ошибка канала: {error}","statusIdle":"Канал ожидает запросов","strategyAuto":"Авто (использовать Vision LLM)","strategyCacheOnly":"Только кэш (без сети)","strategyLlm":"Зрительная модель (Vision LLM)","strategyOcrLocal":"Локальный OCR (резерв)","stripEXIF":"Удалять метаданные EXIF","subtitle":"Изображения в чате обрабатываются выбранной моделью зрения. Оставьте поля пустыми для автовыбора первой подходящей модели.","successCount":"Успешных: {n}","successRate":"Успешность: {rate}%","targetFormat":"Целевой формат","telemetry":"Телеметрия канала","telemetryHint":"Задержка канала (RTT) в реальном времени, объём запросов и статус работоспособности.","testAllChannels":"Протестировать все каналы","testChannel":"Проверить канал","testFail":"Сбой: {err}","testOk":"OK ({ms}мс)","testSuccess":"Тест успешно пройден: ответ за {time}мс","testVision":"Тест зрения","testing":"Тестирование…","testingChannels":"Тестирование каналов…","tileLargeImages":"Фрагментировать большие изображения","timeoutSec":"Таймаут (сек)","title":"Шлюз компьютерного зрения (Vision Bridge)","tokenCount":"Токенов: {n}","tokenUsage":"Расход токенов","tokensAvg":"В среднем токенов: {n}","totalCalls":"Всего вызовов: {n}","totalLatency":"Суммарная задержка: {time}с","totalProcessed":"Обработано изображений: {n}","type":"Тип","visionFeatures":"Функции распознавания","visionFeaturesDesc":"Анализ структуры страниц, таблиц, графиков и рукописного текста","vllm":"vLLM","weightHint":"Относительный вес канала при взвешенной балансировке","weightLabel":"Вес:"}}
@@ -0,0 +1 @@
1
+ {"dsh-messenger-gateway":{"adminIds":"ID администраторов","adminIdsHint":"ID пользователей с правами выполнения привилегированных команд","advanced":"Опрос Telegram (Long Polling)","agent":"Агент","agentSub":"Назначение модели и системных инструкций для Telegram-сессий","allowDirectMessages":"Разрешить личные сообщения","allowGroupMessages":"Разрешить работу в группах","allowedIds":"Разрешённые ID пользователей","allowedIdsHint":"Через запятую. Пусто = доступ разрешён всем","artifactPreviews":"Генерировать превью диаграмм и таблиц","autoSummarize":"Автосводка длинных сообщений","badge.cron_count":"Cron: {count}","badge.offline":"Telegram отключен","badge.online":"Telegram онлайн (@{username})","badge.pairing_count":"Сопряжено устройств: {count}","badge.pending":"Ожидание подключения бота…","badge.running":"Шлюз запущен","badge.stopped":"Шлюз остановлен","badge.token_missing":"Токен отсутствует","badge.token_ok":"Токен настроен","badge.transport":"Транспорт: Long Polling","botToken":"Токен бота (только запись)","botTokenHint":"Оставьте пустым, чтобы сохранить текущий токен","botUsername":"Имя пользователя бота (@username)","btn.disconnect":"Отключить бота","btn.ping":"Проверить связь (Ping)","btn.regenerate_code":"Новый код сопряжения","cmd.update":"Проверить или установить обновление плагина","debugLogs":"Подробные логи отладки","description":"Telegram-бот: обмен текстом, голосом, фото и документами.","diag.desc":"Проверка доступности Telegram Bot API, пинга и прав бота","diag.smoke_btn":"Запустить Smoke-тест","diag.smoke_err":"Smoke-тест завершился с ошибкой: {error}","diag.smoke_ok":"Smoke-тест пройден успешно! Бот готов к работе.","diag.smoke_testing":"Тестирование шлюза…","diag.title":"Диагностика связи и Smoke-тест","disableDiscord":"Отключить Discord","disableSlack":"Отключить Slack","disableTelegram":"Отключить Telegram","discord":"Шлюз Discord","discordChannels":"Разрешённые ID каналов Discord","discordChannelsHint":"Список ID каналов через запятую. Оставьте пустым, чтобы разрешить все настроенные.","discordSub":"Настройки бота и исходящих вебхуков Discord.","discordToken":"Токен бота Discord","discordTokenHint":"Из Discord Developer Portal. Оставьте пустым для сохранения текущего.","discordWebhook":"URL вебхука Discord","discordWebhookHint":"Входящий вебхук для отправки сообщений/уведомлений.","enableDiscord":"Включить Discord","enableSlack":"Включить Slack","enableTelegram":"Включить Telegram","endpoint":"Webhook URL / Endpoint","endpointHint":"URL для приёма входящих вебхуков от Telegram","errorNotification":"Уведомлять об ошибках выполнения","field.allowed_users":"Разрешённые ID пользователей","field.allowed_users_hint":"Список Telegram ID через запятую (оставьте пустым для сопряжения по коду)","field.notify_on_error":"Оповещать об ошибках выполнения","field.notify_on_error_hint":"Срочные уведомления о падении агента или превышении лимитов","field.notify_on_turn":"Уведомлять о завершении хода","field.notify_on_turn_hint":"Отправлять сообщение в Telegram, когда модель закончила длинный ответ","field.pairing_code":"Код сопряжения (Pairing Code)","field.pairing_code_hint":"Введите этот 6-значный код боту для авторизации нового устройства","field.token":"Bot Token (Telegram)","field.token_hint":"Токен бота от @BotFather (хранится безопасно в DSH Credentials)","fileHandling":"Обработка файлов","fileHandlingDesc":"Автоматически передавать прикреплённые документы и изображения в рабочую область","groupMention":"Отвечать только при упоминании в группах","groupsEnable":"Разрешить работу в группах","header.sub":"Мост между DeepSeek Harness и Telegram: сессии, управление, уведомления и доступ с мобильных","header.title":"Шлюз Telegram и мессенджеров","hideAdvanced":"Скрыть расширенные настройки","idleTimeout":"Таймаут неактивности сессии (мин)","instruction":"Пользовательская инструкция","instructionHint":"Дополнительная системная инструкция для сообщений из Telegram","instructionPlaceholder":"Отвечай кратко и лаконично…","loading":"Загрузка настроек шлюза…","maxDocMb":"Макс. размер документа (МБ)","maxFileSize":"Максимальный размер файла (МБ)","maxFileSizeHint":"Лимит размера файлов, принимаемых от пользователей","maxHistory":"Глубина истории контекста (сообщений)","maxImageMb":"Макс. размер фото (МБ)","maxMessageLength":"Максимальная длина сообщения","maxTextKb":"Макс. текст из документа (КБ)","maxVoiceSec":"Макс. длительность голосового (сек)","media":"Медиа","mediaCaption":"Подпись к медиа","mediaGroup":"Группировка медиа","mediaGroupDesc":"Объединять серии фото и документов в одно сообщение","mediaSub":"Приём и отправка голосовых сообщений, фото и файлов","messageChunkSize":"Размер фрагмента при разбиении сообщений","messageRateLimit":"Лимит сообщений в секунду","mode":"Режим работы","modeHelp":"Режимы доставки входящих сообщений от Telegram API","modePolling":"Опрос (Long Polling)","modeWebhook":"Вебхук (Webhook)","model":"Модель","modelHint":"Пусто = по умолчанию в DSH","msg.ping_failed":"Не удалось связаться с Telegram API: {error}","msg.ping_ok":"Связь с Telegram API установлена ({ms} мс)","notifications":"Уведомления","notificationsDesc":"Отправлять системные оповещения в Telegram","notifyBridge":"Уведомления → Telegram-чат","notifyBridgeHint":"task_done/error из веб-сессий (не msgw-*)","notifyHome":"Имя домашнего чата уведомлений","pairing":"Привязка аккаунта","pairingApprove":"Одобрить","pairingCode":"Код привязки: {code}","pairingDesc":"Отправьте этот код боту для авторизации вашего Telegram-аккаунта","pairingEmpty":"Нет ожидающих кодов","pairingRefresh":"Обновить","pairingReject":"Отклонить","pairingSub":"Управление авторизованными пользователями и разовыми кодами","parseMode":"Режим парсинга разметки","parseModeHtml":"HTML","parseModeMarkdown":"MarkdownV2","parseModeNone":"Без разметки (Plain text)","photoOnly":"Фото без подписи","photoPrompt":"Ждать вопроса (рекомендуется)","photoQuality":"Качество фото","photoQualityHigh":"Высокое (несжатое)","photoQualityNormal":"Обычное (сжатое Telegram)","photoRun":"Отвечать немедленно","pollInterval":"Интервал опроса (мс)","pollTimeout":"Таймаут опроса (сек)","pollingInterval":"Интервал опроса (мс)","pollingIntervalHint":"Задержка между запросами getUpdates в режиме polling","privacyMode":"Режим приватности","privacyModeDesc":"Не сохранять вложения и медиафайлы на диск","progressEnable":"Сообщение о ходе выполнения (рассуждение → удаление → финал)","provider":"Провайдер","providerHint":"Пусто = по умолчанию в DSH","proxy":"HTTPS прокси","proxyAuth":"Авторизация прокси (user:pass)","proxyHint":"например http://127.0.0.1:10808 для обхода сетевых ограничений","proxyType":"Тип прокси","proxyTypeHttp":"HTTP","proxyTypeHttps":"HTTPS","proxyTypeSocks5":"SOCKS5","queueSize":"Размер очереди сообщений","quickActions":"Клавиатура быстрых действий (/new, /stop, /voice, /status)","rateLimitExceeded":"Превышен лимит сообщений, попробуйте позже","reactionsEnable":"Реакции во время обработки (👀)","reconnectDelay":"Задержка переподключения (сек)","renderMarkdown":"Форматирование Markdown","renderMarkdownDesc":"Преобразовывать ответы модели в красивую разметку Telegram HTML/MarkdownV2","resetToken":"Сбросить токен","retryAttempts":"Количество попыток отправки","save":"Сохранить","saved":"Настройки сохранены","saving":"Сохранение…","sec.access_desc":"Ограничение доступа по Telegram User ID или разовым кодам сопряжения","sec.access_title":"Контроль доступа и белый список","sec.bot_desc":"Укажите токен бота от @BotFather для приёма сообщений и запуска сессий DSH","sec.bot_title":"Параметры Telegram-бота","sec.notify_desc":"Оповещения в Telegram о завершении ответов и ошибках","sec.notify_title":"Уведомления о событиях","secretToken":"Секретный токен вебхука","secretTokenHint":"Случайная строка для заголовка X-Telegram-Bot-Api-Secret-Token","sendPhotoAsFile":"Всегда отправлять фото как документ (без сжатия)","sendTyping":"Отправлять действие чата","sendVoiceNote":"Отправлять аудио как голосовое сообщение","sessionMode":"Режим диалога","sessionModeGroup":"Один общий диалог на группу","sessionModeUser":"Отдельный диалог для каждого пользователя","sessionScope":"Область действия групповых сессий","sessionScopeChat":"Общая для чата/темы","sessionScopeUser":"Для каждого пользователя (рекомендуется)","sessionTimeout":"Таймаут сессии диалога","settings.loading":"Загрузка настроек шлюза мессенджеров…","settings.retry":"Повторить","settings.unavailable":"Настройки недоступны (хостовый модуль не готов).","showAdvanced":"Показать расширенные настройки","slack":"Шлюз Slack","slackDefaultChannel":"Канал по умолчанию Slack","slackDefaultChannelHint":"Канал или ID участника для исходящих сообщений (напр. #general или C12345).","slackSub":"Настройки бота и входящих вебхуков Slack.","slackToken":"Токен бота Slack (xoxb-…)","slackTokenHint":"Bot User OAuth Token. Оставьте пустым для сохранения текущего.","slackWebhook":"URL вебхука Slack","slackWebhookHint":"Входящий вебхук для отправки сообщений/уведомлений в канал.","splitMessages":"Автоматически разбивать длинные сообщения","stat.active_chats":"Активных чатов","stat.avg_latency":"Пинг до Telegram API","stat.messages_relayed":"Передано сообщений","stats.active_chats":"Активных чатов","stats.desc":"Текущая статистика передаваемых сообщений и времени аптайма","stats.errors":"Ошибок шлюза","stats.sent":"Отправлено сообщений","stats.title":"Метрики шлюза","stats.uptime":"Время работы","status":"Статус подключения","statusConnected":"Telegram-бот подключён и работает","statusDisabled":"Telegram-шлюз отключён","statusError":"Ошибка подключения бота: {error}","statusIndicator":"Статус indicator (Online/Offline)","statusIndicatorHint":"Задаёт краткое описание бота; у ботов нет индикатора присутствия.","statusWaiting":"Ожидание подключения к Telegram…","streamResponse":"Потоковая передача ответа","sttEngine":"Движок распознавания речи (STT)","sttEngineLocal":"Локальный Whisper","sttEngineOpenAI":"OpenAI Whisper API","sttLanguage":"Язык распознавания речи","telegram":"Telegram","telegramApiUrl":"Пользовательский URL Telegram Bot API","telegramApiUrlHint":"Для локального сервера telegram-bot-api","telegramSub":"Настройки Telegram Bot API и интеграции","textFormat":"Формат текста","textFormatHtml":"Markdown → Telegram HTML","textFormatPlain":"Простой текст","title":"Шлюз Telegram (Messenger Gateway)","transport":"Транспорт","transportPoll":"Длинный опрос (getUpdates)","transportWebhook":"Вебхук (Webhook)","tts":"Голосовые ответы","ttsEnable":"Голосовые ответы через dsh-tts","ttsEngine":"Движок синтеза речи (TTS)","ttsEngineEdge":"Edge TTS","ttsEngineOpenAI":"OpenAI TTS","ttsMaxChars":"Макс. символов для озвучки","ttsSpeed":"Скорость речи","ttsSub":"Синтез речи (TTS) для голосовых ответов бота","ttsVoice":"Голос синтеза","turnTimeout":"Таймаут хода агента (сек)","typingIndicator":"Индикатор набора текста","typingIndicatorDesc":"Показывать «печатает…» во время генерации ответа моделью","unauthorizedMessage":"Сообщение при отказе в доступе","unauthorizedMessageHint":"Отправляется пользователям, не входящим в белый список","update.already_latest":"✅ Плагин уже обновлён до актуальной версии (<code>v{version}</code>).","update.available":"📦 <b>Доступно обновление!</b>\nТекущая версия: <code>v{current}</code>\nНовый релиз: <code>v{latest}</code>\n\nЗапустите <code>/update now</code> для установки.","update.check_failed":"⚠️ Не удалось проверить обновления: {error}","update.current":"✅ <b>Messenger Gateway актуален.</b>\nТекущая версия: <code>v{version}</code>.","update.failed":"❌ <b>Ошибка обновления:</b> {error}","update.installing":"⏳ <b>Обновление плагина…</b>\nЗапущена фоновая установка пакета DSH…","update.success":"🎉 <b>Успешно обновлено до v{version}!</b>\nПожалуйста, перезапустите службу: <code>sudo systemctl restart dsh-web.service</code>","updater.available":"Доступно обновление: v{version}","updater.btn_check":"Проверить обновления","updater.btn_update":"Обновить до v{version}","updater.check_failed":"Ошибка проверки обновлений: {error}","updater.checking":"Проверка обновлений…","updater.current":"Текущая версия: {version}","updater.desc":"Проверка обновлений в реестре npmjs и обновление на месте.","updater.failed":"Сбой обновления: {error}","updater.success":"Обновлено до v{version}! Перезапустите службу DSH при необходимости.","updater.title":"Автообновление плагина","updater.upToDate":"Актуальная версия","updater.updating":"Обновление…","userLanguage":"Язык ответов пользователю","voiceBitrate":"Битрейт аудио","voiceFormat":"Формат голосовых сообщений","voiceFormatMp3":"MP3","voiceFormatOgg":"OGG Opus","voiceInput":"Приём голосовых сообщений","voiceInputDesc":"Распознавать входящие голосовые аудиосообщения через Whisper / STT","voiceMode":"Режим голосовых ответов","voiceModeAlways":"Всегда использовать TTS","voiceModeMirror":"В ответ на входящие голосовые","voiceModeOff":"Выключено (если не включён /voice)","voiceOutput":"Голосовые ответы","voiceOutputDesc":"Озвучивать ответы модели с помощью модуля синтеза речи (TTS)","voiceSpeed":"Скорость озвучки","voiceVoice":"Голос синтеза речи","webhookHost":"Хост вебхука","webhookPath":"Путь вебхука","webhookPort":"Порт вебхука","webhookSecret":"Секретный токен","webhookSecretHint":"Оставьте пустым для сохранения текущего","webhookUrl":"Публичный URL вебхука","webhookUrlHint":"Полный HTTPS URL, на который Telegram отправляет POST-запросы","welcomeMessage":"Приветственное сообщение","welcomeMessageHint":"Текст сообщения при команде /start","whitelist":"Белый список пользователей","whitelistDesc":"Ограничить доступ к боту только указанными Telegram ID","wrapCode":"Оформление блоков кода","wrapCodeDesc":"Автоматически оборачивать фрагменты кода в моноширинные блоки с подсветкой"}}
@@ -0,0 +1 @@
1
+ {"dsh-key-rotation":{"activeBadge":"активен","addKey":"+ Добавить ключ","addKeyTitle":"Добавить API-ключ","addProvider":"+ Добавить провайдера","brokenKey":"повреждён (3× AUTH)","budgetLabel":"бюджет:","bulkApply":"Применить к выбранным","bulkCooldownPlaceholder":"Массовый таймаут (мс)","bulkRemove":"Удалить выбранные","cancel":"Отмена","cardDesc":"Ротация API-ключей для провайдеров: пулы ключей, автоматическое переключение при исчерпании квот и rate-limit, кулдаун и восстановление.","codesTitle":"Переключать при этих ошибках","confirm":"Подтвердить","confirmBulkRemoveDesc":"Выбранные провайдеры и все их ключи будут исключены из ротации. Действие можно отменить один раз сразу после удаления.","confirmBulkRemoveTitle":"Удалить выбранных провайдеров ({n})?","confirmRemoveProvDesc":"Вы уверены, что хотите удалить этого провайдера и все настроенные ключи из ротации?","confirmRemoveProvTitle":"Удалить провайдера {p}?","confirmResetDesc":"Это немедленно сбросит счётчики сбоев, таймеры охлаждения и переведёт автоматический выключатель (circuit breaker) в исходное состояние.","confirmResetTitle":"Сбросить охлаждение для {p}?","cooldown":"Кулдаун после ошибки (мс)","desc":"Ротация API-ключей по провайдерам. Для каждого провайдера укажите список его ключей (имена переменных окружения из DSH credentials). Плагин направляет запросы по очереди и автоматически переключается на следующий ключ при ошибках лимитов или квот.","dialogLabel":"Подтверждение","discard":"Сбросить","empty":"Провайдеры для ротации ключей не настроены.","emptyDesc":"Добавьте провайдера и хотя бы одно имя API-ключа для запуска ротации.","emptyKeys":"В пуле пока нет ключей.","emptyTitle":"Пулов пока нет","errorCount":"Ошибок: {n}","errorTitle":"Не удалось загрузить настройки","eventAt":"Время","eventCooldown":"Таймаут","eventKey":"Ключ","eventReason":"Причина","exportCsv":"Экспорт в CSV","exportOne":"Экспорт пула","exportPools":"Экспорт всех пулов в JSON","exportProvider":"Экспортировать этого провайдера","failover":"Автоматическое переключение","failoverDesc":"Переключаться на следующий ключ в пуле при получении кодов 429, 402, 403, 503","filterAll":"Все ключи","filterCooldown":"На кулдауне","filterErrors":"С ошибками","filterReady":"Готовы к работе","header.keys_badge":"настроенных ключей","header.pools_badge":"активных пулов","header.sub":"Автоматическая круговая (round-robin) ротация нескольких ключей, экспоненциальные таймауты при ошибках 429/5xx, защита цепи failover и безопасность учётных данных (~/.dsh/.credentials.yaml).","header.title":"Ротация ключей и отказоустойчивость","headerPoolsTitle":"Пулы ротации ключей","health":"Состояние пула","healthBad":"Все ключи исчерпаны или заблокированы","healthGood":"Все ключи работоспособны","healthScoreTitle":"рейтинг надёжности","healthWarn":"Часть ключей на кулдауне","hoursAgo":"{n} ч назад","importEnv":"Импорт из переменных окружения (.env)","importPools":"Импорт пулов из JSON","justNow":"только что","key":"Ключ","keyActive":"Активен","keyBlocked":"Заблокирован","keyCooldown":"Кулдаун ({time}с)","keyCooling":"охлаждение, {s}с","keyDisabled":"Отключён вручную","keyErrors":"Ошибок подряд: {n}","keyExpired":"истёк","keyExpiringSoon":"истекает через {n} дн.","keyFromEnv":"из переменных окружения, только чтение","keyHint":"Значение сохраняется в учётных данных DSH и никогда не отправляется обратно в браузер — отображаются только последние 5 символов.","keyLabel":"Ключ {n}","keyLatency":"Задержка: {time}мс","keyMissing":"учётные данные отсутствуют","keyName":"Имя ключа","keyPlaceholder":"OPENAI_API_KEY_2","keyPool":"Пул ключей","keyPriority":"Приоритет","keyQuota":"Квота исчерпана","keyRateLimit":"Превышен лимит запросов","keyReady":"готов","keyRemoved":"Ключ удалён","keySave":"Сохранить key","keySaved":"Ключ добавлен","keySuccess":"Успешных запросов: {n}","keyValuePlaceholder":"paste the key, then Сохранить","keyWeight":"Вес: {n}","keyWriteFailed":"не удалось сохранить ключ: {msg}","keysCount":"Ключей в пуле: {n}","keysTitle":"Список ключей","lastError":"Последняя ошибка: {msg}","lastSuccess":"Успешный запрос: {time}","liveEventStream":"Лента событий в реальном времени","liveEventStreamEmpty":"События ротации пока не зафиксированы","loadChartAria":"Распределение трафика по ключам","loadDistribution":"Распределение трафика","loading":"Загрузка пулов ротации…","metrics":"Метрики использования","metricsAvgLatency":"Средняя задержка","metricsErrors":"Ошибки","metricsSuccess":"Успешные","metricsThroughput":"Запросов/мин","metricsTotal":"Всего запросов","minutesAgo":"{n} мин назад","modalAddKey":"Добавление ключа в пул","modalAddProvider":"Добавление пула провайдера","modalClose":"Закрыть диалог","modalEditKey":"Редактирование ключа","modalEditProvider":"Редактирование провайдера","mode":"Режим выбора ключа","modeOrder":"По порядку (Sequential)","modeRandom":"Случайно (Random)","modeWeighted":"По весам / бюджету","moveDown":"Переместить вниз","moveUp":"Переместить вверх","name":"Ротация API-ключей","noActivePools":"Нет активных пулов","noProviders":"Провайдеры не добавлены","noTrafficYet":"Трафик пока не зафиксирован","notRegistered":"не зарегистрирован","notSecretShape":"сохранено, но значение не похоже на API-ключ — проверьте опечатки","pausedBudget":"приостановлен","poolActive":"Пул активен","poolDisabled":"Пул отключён","poolEmpty":"В пуле нет активных ключей","poolExhausted":"пул исчерпан — все ключи охлаждаются","poolName":"Имя пула провайдера","proactiveGuardHint":"Заранее ставить ключи на паузу при приближении к квоте или заголовку Retry-After до получения 429","proactiveGuardLabel":"Превентивная защита от лимитов (Rate-Limit Guard)","provider":"Провайдер","providerActive":"Активен","providerDisabled":"Отключён","providerName":"Имя провайдера (например openai, openrouter)","providerPlaceholder":"openai","providerRemoved":"Провайдер удалён","providerType":"Тип провайдера","providersTitle":"Провайдеры и их ключи","quotaExhausted":"Квота исчерпана","quotaResetIn":"Сброс через {time}","rateLimit":"Превышен лимит запросов","recentFailures":"Недавние сбои ({n})","removeKey":"Удалить ключ","removeProvider":"Удалить провайдера","resetAll":"Сбросить статистику и кулдауны","resetAllSuccess":"Статистика и кулдауны успешно сброшены","resetCooldown":"Сбросить охлаждение","resetCooldowns":"Сбросить все кулдауны","resetSuccess":"Кулдауны ключей сброшены","resetting":"Сброс…","retestBroken":"Повторный тест","retestFail":"повторный тест не пройден — ключ всё ещё не работает","retry":"Повторить","retryCount":"Попыток повтора","retryInterval":"Интервал повтора (мс)","rotationMode":"Режим ротации","rotationSequential":"Последовательный (Round-Robin)","rotationWeighted":"Взвешенный (Weighted)","routingStrategyLabel":"Стратегия маршрутизации","routingStrategyLeastLoaded":"Минимальная нагрузка (по параллелизму)","routingStrategyLowestLatency":"Минимальная задержка (p95)","routingStrategyRoundRobin":"Круговой перебор (Round-Robin, по умолчанию)","rpmTitle":"запросов/мин: {u} использовано, {r} осталось","save":"Сохранить настройки","saved":"Настройки сохранены","saving":"Сохранение…","scheduleDays":"Расписание ротации (дней, 0=выкл.)","secondsAgo":"{n} с назад","sectionBackup":"Резервные копии и снимки","sectionBackupDesc":"Экспорт и импорт пулов провайдеров и создание полных снимков конфигурации плагина.","sectionFailover":"Триггеры отказа и коды ошибок","sectionFailoverDesc":"Выбор условий и ошибок, вызывающих автоматическое переключение на следующий доступный ключ.","sectionStats":"Здоровье пула и телеметрия","sectionStatsDesc":"Телеметрия активных пулов ключей в реальном времени, доступные учётные данные и статус переключения.","sectionTiming":"Тайминги и расписание ротации","sectionTimingDesc":"Настройка длительности периода охлаждения (cooldown) и окон периодической ротации.","selectProvider":"Выбрать провайдера {p}","selfHealingHint":"Периодическая проверка бесплатной моделью для возврата вышедших из строя ключей (0 — отключено)","selfHealingLabel":"Интервал автовосстановления (мин)","snapshotExport":"Снимок ⬇","snapshotImport":"Восстановить","sortUsage":"Сортировать по нагрузке","statHealthy":"Исправны / Готовы","statKeys":"Всего ключей","statPools":"Настроенных пулов","statRequests":"запросов","status":"Статус","statusAvailable":"Доступен","statusCooldown":"Кулдаун","statusDisabled":"Отключён","statusExhausted":"Исчерпан","statusFailed":"Ошибка","strategy":"Стратегия failover","subtitle":"Ротация API-ключей по провайдерам: пулы ключей, автоматическое переключение при исчерпании квот/лимитов, охлаждение и восстановление.","switchCodes":"Коды переключения (через запятую)","switchCount":"Переключений: {n}","switchesNone":"переключений пока не было","switchesSome":"переключений: {n} · последнее: {reason}, {ago}","testAll":"Проверить все ключи","testFail":"СБОЙ","testKey":"Проверить ключ","testOk":"OK","testSuccess":"Ключ валиден: ответ за {time}мс","testing":"Тестирование…","testingAllProgress":"Проверка {n} из {total}…","title":"Ротация API-ключей (dsh-key-rotation)","totalCalls":"Всего вызовов: {n}","totalErrors":"Всего сбоев: {n}","totalRequestsTitle":"всего запросов","unavailableDesc":"Хост не предоставил пространство настроек dsh-key-rotation. Откройте «Настройки» заново или проверьте, включён ли плагин.","unavailableTitle":"Мост настроек недоступен","undo":"Отменить","undoKey":"Ключ удалён","undoProvider":"Провайдер удалён","usedAgo":"{ago} назад","weight":"Вес ключа","weightHint":"вес в round-robin: сколько раз ключ участвует в цикле (1 = равная доля)"}}
@@ -0,0 +1 @@
1
+ {"dsh-gitea":{"activePr":"Активный Pull Request: #{number}","baseUrl":"URL сервера Gitea","baseUrlHint":"например https://gitea.example.com","bgSchedulerEnabled":"Включить фоновый планировщик триажа","bgSchedulerEnabledHint":"Периодически проверять открытые задачи и пул-реквесты в фоне","bgSchedulerIntervalMin":"Интервал планировщика (минуты)","bgSchedulerIntervalMinHint":"Частота выполнения фонового триажа","bgSchedulerOwner":"Владелец для фонового триажа","bgSchedulerOwnerHint":"Пользователь или организация для фонового сканирования","bgSchedulerRepo":"Репозиторий для фонового триажа","bgSchedulerRepoHint":"Имя репозитория для фонового сканирования","bgSchedulerWebhook":"Вебхук для отчётов триажа","bgSchedulerWebhookHint":"URL для отправки дайджестов проверки задач","branch":"Текущая ветка:","btn.save_settings":"Сохранить параметры Gitea","btn.trigger_triage":"Запустить триаж сейчас","ciFail":"CI завершился с ошибкой","ciPass":"CI пройден успешно","ciPending":"CI выполняется","collapse":"Свернуть","daysAgo":"дн. назад","defaultOwner":"Владелец / Организация по умолчанию","defaultOwnerHint":"Организация или пользователь в Gitea для создания репозиториев","defaultRepo":"Репозиторий по умолчанию","defaultRepoHint":"Основной репозиторий проекта","description":"Инструменты и учётные данные Gitea или Forgejo.","discard":"Сбросить","dodReminder":"Напоминания Definition of Done (DoD)","dodReminderHint":"Напоминать о критериях приёмки перед открытием или слиянием PR","drawerClose":"Закрыть панель","drawerRefresh":"Обновить состояние Git","drawerTitle":"Инспектор Git и Worktree","expand":"Развернуть","forceHttpsUrls":"Принудительный HTTPS для URL репозиториев","forceHttpsUrlsHint":"Преобразовывать http:// ссылки в безопасный https://","gitAhead":"Впереди","gitBehind":"Позади","gitChanges":"Изменения","gitClean":"Рабочая копия чистая","gitCommits":"Недавние коммиты","gitDirty":"Есть незакоммиченные изменения","gitEmpty":"В репозитории нет коммитов","gitHint":"Сведения о состоянии локального git-репозитория и удалённой ветки","gitNoChanges":"Нет изменений","gitNoCommits":"Нет коммитов для отправки","gitNoRemote":"Удалённый репозиторий не настроен","gitPulled":"Ветка обновлена из удалённого репозитория","gitPushed":"Коммиты успешно отправлены в Gitea","gitRemote":"Удалённый репозиторий (Remote)","gitStatus":"Статус Git","gitSync":"Синхронизация","gitSynced":"Ветка синхронизирована с Gitea","gitUpToDate":"Ветка актуальна","gitWrapper":"Пользовательский Git-враппер","gitWrapperHint":"Имя бинарника/скрипта-обёртки для Git (например, git-antigravity)","giteaBranch":"Ветка","giteaCommit":"Коммит","giteaOwner":"Владелец / Организация","giteaRepo":"Репозиторий","giteaToken":"Персональный токен","giteaUrl":"URL сервера","giteaUser":"Пользователь","graph.ci_failing":"CI: Ошибки сборки","graph.ci_passing":"CI: Тесты пройдены","graph.ci_pending":"CI: Выполняется…","graph.desc":"Визуальный граф веток, слияний и результатов автоматических тестов","graph.refresh":"Обновить граф","graph.title":"История коммитов и статус CI","graphClose":"Закрыть граф","graphEmpty":"В репозитории не найдено коммитов","graphLoadMore":"Загрузить ещё коммиты","graphLoading":"Загрузка графа коммитов…","graphTitle":"Граф коммитов Git","hoursAgo":"ч назад","inspector.branch":"Текущая ветка: {name}","inspector.clean_state":"Рабочее дерево чисто (Clean)","inspector.desc":"Просмотр активных веток, коммитов, worktree и незафиксированных изменений","inspector.empty":"Рабочие деревья и изменения не найдены","inspector.last_commit":"Последний коммит: {hash} — {msg}","inspector.loading":"Считывание состояния репозитория…","inspector.refresh":"Обновить дерево Git","inspector.staged":"Файлы в индексе (Staged) ({count})","inspector.title":"Инспектор Git и репозиториев","inspector.unstaged":"Незафиксированные файлы ({count})","inspector.worktrees":"Активные Worktree ({count}):","intro":"Создайте учётные данные DSH, вставьте туда токен API, затем укажите только имя учётных данных ниже (например, GITEA_TOKEN).","issues":"Задачи (Issues)","justNow":"только что","loading":"Загрузка данных Gitea…","minutesAgo":"мин назад","msg.saved":"Настройки Gitea успешно сохранены","msg.triage_started":"Фоновый триаж запущен","noChangesDesc":"Нет изменённых или неотслеживаемых файлов","noEvents":"События не зафиксированы","noInstances":"Дополнительные инстансы Gitea не настроены","noIssues":"Нет открытых задач","noPulls":"Нет открытых pull request","noRepos":"Репозитории не найдены","notifyWebhook":"URL вебхука для уведомлений","notifyWebhookHint":"Внешний вебхук для отправки статусов триажа и событий","openGraph":"Граф коммитов","openInGitea":"Открыть в Gitea","password":"Пароль / Токен доступа","passwordHint":"Персональный токен доступа Gitea с правами api, repo, issue","pullRequests":"Запросы на слияние (Pull Requests)","recentEvents":"Недавние события репозитория","refresh":"Обновить","repoCloned":"Репозиторий успешно клонирован","repoCloning":"Клонирование репозитория…","repos":"Репозитории","save":"Сохранить","saveFailed":"Сохранить failed","saved":"Настройки сохранены","saving":"Сохранение…","scheduler.auto_triage":"Автоматический триаж новых Issue","scheduler.desc":"Автоматическая проверка новых задач (issues), напоминания DoD и ревью","scheduler.dod_hint":"Проверять чек-листы готовности перед закрытием PR и задач","scheduler.dod_reminder":"Напоминания Definition of Done (DoD)","scheduler.enabled":"Включить фоновый планировщик","scheduler.interval":"Интервал проверки (минуты)","scheduler.last_run":"Последний запуск: {time}","scheduler.next_run":"Следующий запуск: через {mins} мин","scheduler.title":"Фоновый триаж и задачи по расписанию","sectionDefaults":"Значения по умолчанию и Git Worktrees","sectionInstance":"Подключение и основные настройки","sectionInstances":"Дополнительные инстансы","sectionScheduler":"Фоновый планировщик триажа","sectionWebhooks":"Вебхуки и уведомления","settingsUnavailable":"Настройки unavailable (namespace not registered).","status":"Статус подключения","statusClean":"Рабочее дерево чисто (Clean)","statusConnected":"Подключено к Gitea","statusDirty":"Есть незафиксированные изменения","statusDisconnected":"Не подключено","statusError":"Ошибка подключения","tabEvents":"Журнал событий","tabGraph":"Граф и CI","tabInspector":"Git Inspector","tabScheduler":"Планировщик задач","tabStatus":"Статус ветки и индекс","tabWebhooks":"Входящие вебхуки","timeoutMs":"Таймаут API запросов (мс)","timeoutMsHint":"Максимальное время ожидания ответа Gitea API","title":"Интеграция с Gitea","toggleAdvanced":"Расширенные настройки","token":"Токен API","tokenEnv":"Имя учётных данных","tokenEnvHint":"Имя учётных данных DSH, а не сам токен. По умолчанию GITEA_TOKEN.","tokenHint":"Токен авторизации Gitea API","tokenOff":"Токен не настроен","tokenOn":"Токен настроен","unsaved":"Не сохранено","upstream":"Ветка upstream:","username":"Имя пользователя","usernameHint":"Логин вашей учётной записи в Gitea","viewCommit":"Посмотреть коммит","viewInGitea":"Открыть в Gitea ↗","viewIssue":"Посмотреть задачу","viewPull":"Посмотреть PR","viewRepo":"Посмотреть репозиторий","webhookSecretEnv":"Переменная окружения для HMAC-секрета","webhookSecretEnvHint":"Имя переменной с секретным ключом для валидации входящих вебхуков","webhooks.desc":"Приём событий push, pull_request, issue с проверкой HMAC-SHA256 подписи","webhooks.endpoint":"URL вебхука: {url}","webhooks.no_events":"События вебхуков ещё не поступали","webhooks.recent":"Недавние события ({count})","webhooks.secret":"Секретный ключ (HMAC Secret)","webhooks.secret_hint":"Секрет для верификации подписи X-Gitea-Signature","webhooks.title":"Входящие вебхуки Gitea","worktreeBranch":"Ветка worktree"}}
@@ -0,0 +1 @@
1
+ {"dsh-cost-meter":{"action.copied":"Скопировано!","action.copy_report":"Скопировать сводку","action.sync_err":"Синхронизация не удалась","action.sync_now":"Синхронизировать сейчас","action.sync_ok":"Каталог обновлён","action.sync_rate_limited":"Подождите {seconds} с","action.syncing":"Синхронизация…","badge.catalog_empty":"Каталог: загрузка…","badge.catalog_err":"Каталог: ошибка","badge.catalog_off":"Каталог: отключён","badge.catalog_ok":"Каталог: моделей — {count}","badge.catalog_stale":"Кэш: офлайн","badge.deepseek":"Тариф DeepSeek: активен","budget.exceeded":"⚠️ Лимит бюджета превышен: {limit}","catalogUnavailable":"Каталог OpenRouter недоступен: ","chipRate":"тариф","chipUnknown":"тариф ?","diag.last_sync":"Последняя синхронизация","diag.models_count":"Моделей в каталоге","diag.route":"Активный маршрут","diag.tariff_source":"Источник тарифов","field.budgetThreshold":"Порог бюджета сессии (USD)","field.currency":"Символ валюты","field.displayTimeZone":"Часовой пояс отображения","field.refreshHours":"Интервал обновления каталога (в часах)","field.usdRate":"Курс к USD","field.useOpenRouter":"Использовать каталог OpenRouter","flat":"фикс.","header.sub":"Мониторинг расхода токенов, автоматический расчёт тарифов и скидочные интервалы","header.title":"Счётчик расходов","hint.budgetThreshold":"Предупреждать цветом плашки при превышении расходов в сессии (0 — выключено).","hint.currency":"Символ валюты в виджете (например $, ₽, €).","hint.displayTimeZone":"Часовой пояс IANA для расписания пиковых/ночных тарифов.","hint.refreshHours":"Интервал фонового запроса каталога в часах (от 1 до 168).","hint.usdRate":"Курс обмена: количество единиц валюты за 1 USD (например 80 для ₽).","hint.useOpenRouter":"Динамически получать тарифы и окна скидок через публичный API OpenRouter.","modal.close":"Закрыть","modal.title":"Тарифы и стоимость моделей","modelNotFound":"Модель не найдена в каталоге OpenRouter. Задайте цены вручную в настройках или сопоставьте модель через modelMap.","models.show_less":"Свернуть","models.show_more":"Показать все модели ({count})","modelsBreakdown":"Детализация по моделям","noPriceSpecified":"тариф не указан","noUsageYet":"Провайдер ещё не передал данные об использовании для этой сессии.","offPeak":"ночь","offpeak":"ночной тариф","peak":"пик","rate.cache_hit":"Вход (попадание в кэш)","rate.cache_write":"Вход (запись в кэш)","rate.custom":"Пользовательский","rate.default":"По умолчанию","rate.input":"Вход: {price} / 1M токенов","rate.output":"Выход: {price} / 1M токенов","rate.per_1m":"1 млн токенов, $","rate.unit":"/ 1M ток.","routeUnknown":"маршрут неизвестен","savings.cache_saved":"⚡ Сэкономлено на кэше контекста: ≈ {amount} ({percent}%)","savings.hint":"💡 Скидка 50% начнётся через {time} ({clock} {zone})","section.diagnostics":"Диагностика и статус","section.diagnostics_desc":"Текущее состояние фоновой синхронизации и кэша тарифов","section.general":"Основные параметры","section.general_desc":"Отображение валюты, коэффициент конвертации и настройка часового пояса","section.openrouter":"Каталог тарифов OpenRouter","section.openrouter_desc":"Публичный каталог для динамического расчёта стоимости моделей и скидочных интервалов","sessionTokens":"Токены сессии","settings.loading":"Загрузка настроек…","settings.retry":"Повторить попытку","settings.save":"Сохранить","settings.saveFailed":"Не удалось сохранить настройки: ","settings.saved":"Сохранено","settings.saving":"Сохранение…","settings.unavailable":"Настройки недоступны (namespace ещё не зарегистрирован).","subtitle":"Стоимость сессии в шапке, тарифы токенов и детализация по моделям","table.model":"Модель","table.provider":"Провайдер","table.rate":"Тарифная ставка","table.total":"Итого","title":"Счётчик стоимости токенов","tokens.models_spent":"Расходы по моделям","tokens.no_usage_yet":"Провайдер пока не передал статистику использования для этой сессии.","tokens.not_priced":"Тариф не задан","tokens.session":"Токены сессии","tokens.session_total":"Всего за сессию:","tokens.tokens_col":"Токены","totalCost":"Общая стоимость","tz.invalid":"Недопустимый идентификатор часового пояса IANA"}}
@@ -0,0 +1 @@
1
+ {"@goodandready/dsh-time-machine":{"allFiles":"Все файлы","autoHeal":"Восстановление промпта при сбое","autoSnapshot":"Автоснимок перед правкой файлов","close":"Закрыть","confirmDelete":"Удалить эту контрольную точку?","confirmRestoreFile":"Восстановить этот файл к состоянию контрольной точки?","confirmRollback":"Откатиться к этой контрольной точке? Это сбросит изменения в рабочей области.","create":"Создать точку сохранения","delete":"Удалить","diff":"Различия","empty":"Контрольных точек пока нет.","fileRestored":"Файл успешно восстановлен.","filesChanged":"Изменённые файлы","guideDesc":"Контрольные точки, визуальные диффы и мгновенный откат рабочей области.","guideTitle":"Машина времени","labelPh":"Название контрольной точки","list":"Хронология","loading":"Загрузка точек сохранения…","maxSnapshots":"Максимум снимков","noDiff":"Нет изменений относительно контрольной точки.","restore":"Восстановить","restoreFile":"Восстановить файл","rollback":"Откат","rollbackSuccess":"Рабочая область успешно восстановлена.","save":"Создать точку","saved":"Точка сохранена","selectFile":"Выберите файл для просмотра различий","sidebarNotice":"Снимки состояния рабочей области сохраняются автоматически перед каждым крупным действием агента.","snapshots":"Снимки состояния","sub":"Теневые снимки, diff и мгновенный откат для безопасности агента.","tabTitle":"Машина времени","title":"Машина времени (Time Machine)","unavailable":"Настройки недоступны","view":"Просмотр"}}
@@ -0,0 +1 @@
1
+ {"@goodandready/dsh-context-lens":{"active":"Активно","autoCollapse":"Автосворачивание логов","budget":"Бюджет","budgetAlertPercent":"Порог предупреждения о бюджете (%)","clearFocus":"Очистить фокус","compress":"Сжать","depth":"Макс. глубина AST","focusPaths":"Активный фокус","history":"Недавние операции","lowBudget":"Бюджет почти исчерпан","lowBudgetBadge":"Низкий бюджет","mode":"Режим сжатия","noData":"Нет данных","noFocus":"Пути фокуса не заданы","ops":"Операции","placeholder":"Вставьте лог Jest/Pytest сюда…","preview":"Предпросмотр лога","previewApprox":"Предпросмотр на сервере","ready":"Готово","readyState":"Готов к сжатию","refresh":"Обновить","saved":"Сохранено","saving":"Сохранение…","stats":"Статистика","sub":"Сжатие AST, фильтрация логов, бюджет токенов","threshold":"Порог автосжатия (символов)","title":"Context Lens & Token Guard","tokens":"Токены","total":"Всего","tracking":"Отслеживание экономии токенов","trimmed":"Обрезано","viewLog":"Просмотреть лог"}}
@@ -0,0 +1 @@
1
+ {"@goodandready/dsh-shadow-auditor":{"action.export_bill":"Экспорт отчёта (MD)","action.export_json":"Экспорт в JSON","auditBadge":"Аудит команд","auditBadgeDesc":"Отображать бейдж безопасности в заголовке сессии","blockCommands":"Блокировать опасные команды","blockCommandsDesc":"Проверяет --force, rm -rf, systemctl, удаление БД, curl|bash","customBlockedCommands":"Шаблоны блокируемых команд","customBlockedCommandsDesc":"Регулярные выражения или подстроки команд для запрета (по одному шаблону в строке).","diffGate.block":"Блокировка (Строгая)","diffGate.disabled":"Отключено","diffGate.warning":"Предупреждение (Аудит)","diffGateMode":"Политика контроля изменений (Diff Gate)","diffGateModeDesc":"Политика барьера одобрения diff: предупреждение или блокировка при высоком и критическом уровне риска","diffInspector.remediation":"Рекомендуемое безопасное действие: ","diffInspector.title":"Активное срабатывание Diff Gate: ","enableAuditLog":"Включить журнал аудита","enableAuditLogDesc":"Записывать все выполненные агентом shell-команды в локальный файл журнала","enablePromptInjection":"Сканер внедрения промптов","enablePromptInjectionDesc":"Сканирование diff-изменений на попытки переопределения системного промпта и джейлбрейка","enableSast":"Небезопасные паттерны кода (SAST)","enableSastDesc":"Проверка diff-изменений на SQL-инъекции, командные инъекции, path traversal и вызовы eval()","feed.blocked":"ЗАБЛОКИРОВАНО","feed.empty":"Журнал аудита для этого фильтра пуст.","feed.refresh":"Обновить","filter.all":"Все","filter.diff_gate":"Diff Gate","filter.guard":"Shell Guard","filter.high_risk":"Высокий риск","header.sub":"Аудит безопасности в реальном времени, защита от утечки секретов, перехват деструктивных команд и гейтинг diff-изменений.","lastAudit":"Последний аудит","loading":"Загрузка…","maxFileSizeMb":"Макс. размер файла лога (МБ)","maxFileSizeMbDesc":"Размер, при котором выполняется ротация файла аудита","retentionDays":"Срок хранения логов (дней)","retentionDaysDesc":"Удалять записи аудита старше указанного количества дней","save":"Сохранить","saved":"Сохранено","saving":"Сохранение…","sec.audit_log_desc":"Постоянный журнал телеметрии JSONL с автоматической gzip-ротацией и политикой хранения.","sec.audit_log_title":"Журнал аудита и хранение","sec.diff_gate_desc":"Многофакторный предварительный анализ изменений исходного кода, уязвимостей SAST и попыток внедрения промптов.","sec.diff_gate_title":"Контроль изменений кода и SAST","sec.feed_desc":"Живой журнал вызовов инструментов, перехватов защитника и оценки рисков с фильтрацией угроз.","sec.feed_title":"Недавние перехваты и журнал аудита","sec.file_integrity_desc":"Защита от несанкционированного чтения или изменения критических учётных данных, конфигураций и якорей.","sec.file_integrity_title":"Контроль целостности файлов и чувствительных путей","sec.guards_desc":"Упреждающая проверка границ для перехвата опасных системных операций до выполнения команды.","sec.guards_title":"Безопасность выполнения и гарды","sensitivePathPatterns":"Шаблоны чувствительных путей","sensitivePathPatternsDesc":"Отслеживаемые маски файлов или регулярные выражения (по одному в строке, напр. .env*, *credentials*, id_rsa, settings.yaml).","shellGuard.audit_only":"Только аудит (Audit Only: логирование)","shellGuard.enforce":"Блокировка (Enforce: запрет выполнения)","shellGuardMode":"Политика Shell Guard","shellGuardModeDesc":"Режим Enforce блокирует опасные команды; Audit Only только логирует предупреждения без блокировки.","shield.green":"Безопасно","shield.red":"Тревога","shield.yellow":"Внимание","strictSecrets":"Строгое сканирование секретов","strictSecretsDesc":"Блокировать при наличии API-ключей или приватных токенов в diff","subtitle":"Безопасность секретов и команд","title":"Аудитор безопасности (Shadow Auditor)","unavailable":"Настройки аудитора временно недоступны","unlocked":"Разблокировано"}}
@@ -0,0 +1 @@
1
+ {"dsh-clinebot":{"accounts.active_badge":"Активен","accounts.add_btn":"Добавить аккаунт","accounts.apiBase":"Базовый URL API","accounts.apiKey":"API-ключ","accounts.cancel":"Отмена","accounts.cooldown":"Охлаждение: {s}с","accounts.delete":"Удалить","accounts.delete_confirm":"Удалить аккаунт «{name}»?","accounts.desc":"Управление учётными записями и API-ключами провайдеров для ClineBot.","accounts.edit":"Редактировать","accounts.empty":"Нет настроенных аккаунтов. Добавьте первый аккаунт выше.","accounts.env_placeholder":"Имя переменной окружения (напр. CLINE_API_KEY)","accounts.label_placeholder":"Название аккаунта (напр. Рабочий)","accounts.model":"Модель по умолчанию","accounts.pin_btn":"Сделать основным","accounts.pinned_badge":"Основной","accounts.provider":"Провайдер","accounts.quota":"Остаток квоты","accounts.rateLimit":"Лимит запросов","accounts.save":"Сохранить аккаунт","accounts.status":"Статус","accounts.title":"Аккаунты ClineBot","badge.key_missing":"Ключ отсутствует","badge.key_ok":"Ключ ✓ ({source})","badge.not_registered":"Не зарегистрирован","badge.offline":"Узел недоступен","badge.online":"Узел онлайн ({latency} мс)","badge.registered":"Зарегистрирован в DSH ({count} моделей)","diag.desc":"ClineBot автоматически регистрируется в моделях DSH при настройке ключа. Вы можете выполнить проверку связи или принудительную синхронизацию.","diag.resync_btn":"Принудительно синхронизировать с DSH","diag.resynced_msg":"Провайдер синхронизирован с моделями DSH ({count} моделей)","diag.resyncing":"Синхронизация…","diag.smoke_btn":"Выполнить экспресс-тест (Ping)","diag.smoke_ok":"Экспресс-тест пройден успешно! Задержка: {latency} мс","diag.smoke_testing":"Тестирование…","diag.title":"⚡ Диагностика и авторегистрация","diag.unregister_btn":"Снять регистрацию в DSH","diag.unregistered_msg":"Провайдер удалён из моделей DSH","diag.unregistering":"Удаление…","header.sub":"Подключение моделей подписки ClinePass ($9.99/мес). Совместимость с OpenAI API, автоматическое отслеживание скользящих лимитов и мгновенная авторегистрация в DSH.","header.title":"Провайдер ClineBot (ClinePass)","key.desc":"Ключ сохраняется непосредственно в хранилище учётных данных DSH (~/.dsh/.credentials.yaml) и никогда не отображается в открытом виде в конфигурациях.","key.empty_err":"Пожалуйста, введите API-ключ перед сохранением","key.env_label":"Имя переменной окружения: ","key.get_key":"Получить ключ в консоли app.cline.bot ↗","key.hide":"Скрыть","key.login_fast":"🚀 Быстрый вход через веб","key.login_fast: ":"🚀 Быстрый вход через веб","key.login_waiting":"Ожидание авторизации в браузере…","key.placeholder_empty":"Вставьте ключ ClinePass (cline_...)","key.placeholder_has":"••••••••••••••••••••••••","key.save":"Сохранить ключ","key.saved_msg":"Ключ сохранён в учётных данных DSH. Валидация: {status}","key.saving":"Сохранение…","key.show":"Показать","key.title":"🔑 Авторизация и API-ключ","models.all":"Все","models.auto_new":"Новинки","models.coding":"Только кодинг","models.desc":"Каталог синхронизируется напрямую с подпиской ClinePass. Модели новых тарифов подключаются автоматически. Снимите выбор, чтобы скрыть модель из выбора в чате DSH.","models.recommended":"Рекомендуемые","models.star":"Избранное","models.sync":"🔄 Проверить модели тарифа","models.synced_msg":"Модели подписки синхронизированы: {total} ({discovered} обнаружено из ClinePass)","models.syncing":"Проверка…","models.th_active":"Вкл","models.th_caps":"Возможности","models.th_ctx":"Контекст","models.th_id":"ID модели","models.th_name":"Имя модели","models.title":"🎯 Выбор моделей в DSH (активно {enabled} из {total})","models.vision":"Только с зрением","profiles.add":"Создать профиль","profiles.contextLimit":"Лимит контекста","profiles.default":"По умолчанию","profiles.delete":"Удалить профиль","profiles.desc":"Готовые наборы настроек, системных инструкций и разрешений.","profiles.maxTokens":"Максимум токенов","profiles.name":"Имя профиля","profiles.prompt":"Системный промпт","profiles.save":"Сохранить профиль","profiles.select":"Выбрать профиль","profiles.temperature":"Температура","profiles.title":"Профили настроек","quota.account":"Аккаунт: {email} · Тариф: {plan}","quota.desc":"Официальные скользящие лимиты запросов от ClinePass","quota.refresh":"Обновить квоты","quota.refreshed_msg":"Квоты подписки обновлены","quota.refreshing":"Обновление…","quota.remaining":"Осталось: {pct}%","quota.reset_at":"Сброс: {time}","quota.title":"📊 Квоты и лимиты запросов ClinePass","quota.used":"Использовано {pct}%","quota.window_5h":"⏱ 5-часовой скользящий лимит","quota.window_weekly":"📅 Еженедельный лимит","settings.advanced":"Дополнительно","settings.autoApprove":"Автоодобрение безопасных действий","settings.autoApproveDesc":"Автоматически выполнять команды чтения и безопасные операции без запроса подтверждения","settings.diffViewer":"Встроенный просмотрщик diff","settings.diffViewerDesc":"Отображать подробные различия кода перед применением правок","settings.general":"Основные","settings.loading":"Загрузка настроек ClineBot…","settings.models":"Модели","settings.retry":"Повторить","settings.saveFailed":"Не удалось сохранить настройки","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.security":"Безопасность","settings.soundNotifications":"Звуковые уведомления","settings.soundNotificationsDesc":"Воспроизводить сигнал при завершении длительной задачи или ожидании ввода","settings.subtitle":"Интеграция автономного кодинг-ассистента ClineBot в DeepSeek Harness.","settings.telemetry":"Анонимная телеметрия","settings.telemetryDesc":"Отправлять отчёты о сбоях для улучшения стабильности","settings.title":"Настройки ClineBot","settings.unavailable":"Настройки ClineBot временно недоступны","stats.desc":"Локальный мониторинг запросов, сетевой задержки и расхода токенов через ClinePass.","stats.last_req":"Время последнего запроса","stats.latency":"Задержка последнего запроса","stats.requests":"Успешных / Всего запросов","stats.title":"📈 Телеметрия текущей сессии DSH","stats.tokens":"Оценочные токены сессии","status.connecting":"Подключение к ClineBot…","status.disconnected":"Связь с ClineBot отключена","status.error":"Ошибка инициализации ClineBot","status.idle":"Ожидание задачи","status.ready":"ClineBot готов к работе","status.running":"Выполняется задача ClineBot","subtitle":"Автономный агент ClineBot для глубокого рефакторинга и парного программирования","title":"ClineBot","tools.bash":"Выполнение команд терминала","tools.browser":"Управление браузером","tools.desc":"Разрешённые системные инструменты для выполнения задач агентом.","tools.disableAll":"Отключить все","tools.editor":"Умная правка кода","tools.enableAll":"Включить все","tools.fs":"Чтение и запись файлов","tools.mcp":"Внешние MCP-серверы","tools.title":"Инструменты ClineBot"}}