@goodandready/dsh-russian-lang 0.3.31 → 0.3.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
<h3>Полная русская локализация, умная типографика и исправление раскладки клавиатуры для DeepSeek Harness</h3>
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
|
-
<a href="https://www.npmjs.com/package/@goodandready/dsh-russian-lang"><img src="https://img.shields.io/badge/npm-v0.3.
|
|
8
|
+
<a href="https://www.npmjs.com/package/@goodandready/dsh-russian-lang"><img src="https://img.shields.io/badge/npm-v0.3.33-6366f1.svg?style=for-the-badge&labelColor=1e1b4b" alt="npm version"></a>
|
|
9
9
|
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-10b981.svg?style=for-the-badge&color=10b981&labelColor=064e3b" alt="license"></a>
|
|
10
10
|
<a href="https://github.com/topics/dsh-plugin"><img src="https://img.shields.io/badge/DSH-Plugin-8b5cf6.svg?style=for-the-badge&labelColor=2e1065" alt="DSH Plugin"></a>
|
|
11
11
|
<a href="https://nodejs.org"><img src="https://img.shields.io/badge/Node-20%2B-f59e0b.svg?style=for-the-badge&labelColor=451a03" alt="Node version"></a>
|
|
@@ -52,9 +52,9 @@ graph LR
|
|
|
52
52
|
DSH[Web UI Интерфейс] --> Loader[Загрузчик локализации dsh-russian-lang]
|
|
53
53
|
end
|
|
54
54
|
|
|
55
|
-
subgraph TranslationLayer [Слой перевода и адаптации — 8
|
|
55
|
+
subgraph TranslationLayer [Слой перевода и адаптации — 8 595 ключа / 100% вычитано]
|
|
56
56
|
Loader --> CoreDict[58 Пространств имён ядра DSH / 2 442 ключа]
|
|
57
|
-
Loader --> PluginDict[43 Пространства имён плагинов DSH / 6
|
|
57
|
+
Loader --> PluginDict[43 Пространства имён плагинов DSH / 6 153 ключа]
|
|
58
58
|
Loader --> PluralEngine[Движок грамматических Plural-форм: 1/2/5]
|
|
59
59
|
end
|
|
60
60
|
|
|
@@ -94,9 +94,9 @@ graph LR
|
|
|
94
94
|
* **Планировщик и инвентарь (`schedule.catalog`, `settings.pluginInventory`, `settings.plugins`)**: фоновые задания, периодичность, фильтры и каталог установленных плагинов.
|
|
95
95
|
* **Права доступа и безопасность (`permission.access`, `plan`, `skill`)**: пресеты прав (полный доступ, только чтение, запись в рабочую область), выполнение планов и навыки.
|
|
96
96
|
|
|
97
|
-
> **О качестве перевода.** Все **8
|
|
97
|
+
> **О качестве перевода.** Все **8 595 ключа интерфейса (2 442 ядра + 6 153 плагинов) переведены на 100% и вычитаны вручную**. Черновой машинный перевод полностью замещён проверенными формулировками (`draft = 0`). Перевод регулярно валидируется автоматическими линтерами целостности плейсхолдеров, проверкой соблюдения глоссария (`glossary.json`) и детекторами переполнения верстки. Нашли неточность — кнопка «Сообщить о проблеме перевода» в карточке настроек создаёт готовый issue.
|
|
98
98
|
|
|
99
|
-
### 2. 🧩 Встроенный перевод 65+ плагинов экосистемы DSH (6
|
|
99
|
+
### 2. 🧩 Встроенный перевод 65+ плагинов экосистемы DSH (6 153 ключа)
|
|
100
100
|
Локализация автоматически распространяется на все ключевые плагины экосистемы DeepSeek Harness:
|
|
101
101
|
* **`dsh-session-control`** — расширенное управление сессиями: закрепление диалогов, архив по периодам, просмотр расшифровок и фильтрация шума;
|
|
102
102
|
* **`dsh-kanban` и `task-board`** — канбан-доски задач, карточки, чек-листы, дедлайны, критерии готовности (DoD) и шлюз приёмки (Acceptance Gate);
|
package/lib/client.js
CHANGED
|
@@ -395,8 +395,8 @@ return results.sort((a, b) => b.score - a.score).map((r) => r.item)
|
|
|
395
395
|
}
|
|
396
396
|
const RU = {"common":{"back":"Назад","cancel":"Отмена","close":"Закрыть","collapse":"Свернуть","copied":"Скопировано","copy":"Копировать","delete":"Удалить","edit":"Изменить","expand":"Развернуть","loading":"Загрузка…","more":"Ещё","next":"Дальше","ok":"ОК","retry":"Повторить","save":"Сохранить","search":"Поиск","submit":"Отправить"},"dsh-cron":{"sidebar.label":"Задачи по расписанию"},"dsh-usage-stats":{"footer.todayLabel":"Сегодня"},"pluginMarket":{"trigger":"Магазин плагинов"}}
|
|
397
397
|
const ZH_RU = {}
|
|
398
|
-
RU['russian-lang'] = {"cardTitle":"Русская локализация","cardSub":"Язык интерфейса, типографика, раскладка","badgeRu":"🟢 RU активен","badgeEn":"⚪ EN активен","badgeCoverage":"🟢 100% (8
|
|
399
|
-
const CARD_EN = {cardTitle: 'Russian localization',cardSub: 'Interface language, typography, keyboard layout',badgeRu: '🟢 RU active',badgeEn: '⚪ EN active',badgeCoverage: '🟢 100% (8,
|
|
398
|
+
RU['russian-lang'] = {"cardTitle":"Русская локализация","cardSub":"Язык интерфейса, типографика, раскладка","badgeRu":"🟢 RU активен","badgeEn":"⚪ EN активен","badgeCoverage":"🟢 100% (8 595 ключей)","badgeSmartUx":"⚡ Smart UX активен","badgeSmartUxOff":"Smart UX выключен","secLanguage":"🌐 Язык интерфейса","secLanguageDesc":"Нативное переключение языка интерфейса DSH на русский без перезагрузки страницы.","enabled":"Русский язык включён","enabledDesc":"Переключает язык интерфейса DeepSeek Harness на русский.","quickSwitchNote":"Быстрый переключатель RU ⇄ EN доступен в шапке сессии рядом с кнопками диалога.","quickSwitch":"Быстрый переключатель языка","quickSwitchDesc":"Показывать переключатель RU ⇄ EN в шапке сессии.","secTypography":"✍️ Умная типографика и ввод (Smart UX)","secTypographyDesc":"Нормы русской типографики во время диалога и набора.","typography":"Типографика вывода","typographyDesc":"Кавычки «», тире — вместо дефисов, неразрывные пробелы.","yo":"Буква «ё»","yoDesc":"Восстановление «ё» в частых словах (ещё, идёт и др.).","liveInput":"Живая типографика инпута","liveInputDesc":"Кавычки «», тире — и неразрывные пробелы перед отправкой.","slashAliases":"Русские алиасы команд","slashAliasesDesc":"Команды: /цель, /сжать, /план, /справка, /память.","altLHintText":"Подсказки и конвертация раскладки","layoutConversionDesc":"Подсказки при вводе; ⌨ Alt+L и значок RU/EN конвертируют текст текущего поля (ghbdtn ⇄ привет).","secAgentPrompt":"🤖 Системный промпт агента","secAgentPromptDesc":"Официальная секция расширения DSH systemPrompt для ведения диалога на русском языке.","agentPrompt":"Русский промпт агента","agentPromptDesc":"Добавляет в системный промпт инструкцию отвечать по-русски в выбранном стиле.","agentPromptPreset":"Стиль ответов агента","presetExpert":"Технический эксперт (строгая терминология, чистый код)","presetWriter":"Технический писатель (Markdown, таблицы, ГОСТ)","presetConcise":"Лаконичный режим (кратко, без лишней воды)","presetReviewer":"Код-ревьюер (поиск багов, безопасность, аудит)","presetArchitect":"Системный архитектор (контракты, масштабируемость)","presetTutor":"Наставник (понятные объяснения, пошаговый разбор)","secUpdater":"🔄 Обновление языкового пакета","secUpdaterDesc":"Проверка наличия новых релизов в реестре npm и обновление в один клик.","updaterCurrent":"Текущая версия: v{version}","updaterLatest":"Доступна новая версия: v{version}","updaterUpToDate":"Установлена актуальная версия","updaterChecking":"Проверка…","updaterCheckBtn":"Проверить обновления","updaterBtn":"Обновить до v{version} в 1 клик","updaterUpdating":"Установка обновления…","updaterSuccess":"✅ Плагин успешно обновлён! Перезапустите DSH для применения.","updaterFailed":"❌ Не удалось проверить/обновить плагин. Проверьте сеть или логи сервера.","badgeUpdateAvailable":"Доступно обновление","badgeUpToDate":"Актуальная версия","secTranslator":"🌐 Перевод сообщений ассистента","secTranslatorDesc":"Перевод ответов модели в чате на русский язык.","translateEngine":"Движок перевода","engineOff":"Выключен (по умолчанию, без сетевых вызовов)","engineLocal":"Локальный LibreTranslate (приватно, ~600 МБ RAM)","engineGoogle":"Google Translate (онлайн)","googleWarn":"⚠️ Текст сообщений передаётся на публичные серверы Google.","localStatusRunning":"🟢 Контейнер LibreTranslate активен","localStatusStopped":"⚪ Контейнер LibreTranslate не запущен","localStartBtn":"Запустить LibreTranslate в Docker (~600 МБ RAM)","localStarting":"Запуск контейнера…","localInfo":"LibreTranslate в Docker: изолированно, ~600 МБ RAM.","secOverrides":"✍️ Пользовательские переопределения (Custom Overrides)","secOverridesDesc":"Замена любой формулировки интерфейса DSH на собственную.","overrideKeyPlaceholder":"Ключ (например, common.back или settings.title)","overrideValuePlaceholder":"Ваш русский перевод","overrideAddBtn":"Добавить","overrideEmpty":"Переопределений пока нет.","overrideDelete":"Удалить","overrideTip":"💡 Зажмите Alt и кликните на элемент UI для быстрой правки.","secSupport":"📊 Покрытие экосистемы и поддержка","secSupportDesc":"100% UI-покрытие ядра и плагинов DSH.","statNamespaces":"Пространств имён","statCoreKeys":"Ключей ядра","statPluginKeys":"Ключей плагинов","overridesCount":"Своих переопределений","statusLoading":"Настройки загружаются…","statusUnavailable":"Настройки недоступны на этом хосте","translateTurn":"Перевести на русский","reportIssue":"Сообщить о неточности перевода","exportMdHint":"Экспорт диалога в Markdown доступен по кнопке [ 📥 MD ] в шапке сессии.","translateTurnHint":"Перевод ответов ассистента на русский доступен по кнопке [ RU ↗ ] на блоках сообщений.","inspectorToggleOff":"🔍 Включить инспектор перевода (Alt+I)","inspectorToggleOn":"🔍 Инспектор перевода (включён)","exportJsonBtn":"📤 Экспорт JSON","importJsonBtn":"📥 Импорт JSON","overridesCopied":"Оверрайды скопированы в буфер обмена как JSON!","overridesImportPrompt":"Вставьте JSON с оверрайдами:","overridesImportError":"Ошибка разбора JSON: "}
|
|
399
|
+
const CARD_EN = {cardTitle: 'Russian localization',cardSub: 'Interface language, typography, keyboard layout',badgeRu: '🟢 RU active',badgeEn: '⚪ EN active',badgeCoverage: '🟢 100% (8,595 keys)',badgeSmartUx: '⚡ Smart UX active',badgeSmartUxOff: 'Smart UX off',secLanguage: '🌐 Interface language',secLanguageDesc: 'Switch the DSH interface language to Russian natively, without reloading the page.',enabled: 'Russian language enabled',enabledDesc: 'Switches the DeepSeek Harness interface to Russian.',quickSwitchNote: 'The RU ⇄ EN quick switch is available in the session header next to the dialog buttons.',quickSwitch: 'Quick language switch',quickSwitchDesc: 'Show the RU ⇄ EN switch in the session header.',secTypography: '✍️ Smart typography & input (Smart UX)',secTypographyDesc: 'Russian typography rules applied while you chat and type.',typography: 'Output typography',typographyDesc: 'Guillemets «», em dashes — instead of hyphens, non-breaking spaces.',yo: 'Letter «ё»',yoDesc: 'Restores «ё» in frequent words (ещё, идёт, etc.).',liveInput: 'Live input typography',liveInputDesc: 'Guillemets «», em dashes — and non-breaking spaces before sending.',slashAliases: 'Russian command aliases',slashAliasesDesc: 'Commands: /цель, /сжать, /план, /справка, /память.',altLHintText: 'Keyboard layout hints and conversion',layoutConversionDesc: 'Hints while typing; ⌨ Alt+L and the RU/EN badge convert the current field (ghbdtn ⇄ привет).',secAgentPrompt: '🤖 Agent system prompt',secAgentPromptDesc: 'An official DSH systemPrompt extension section for conversing in Russian.',agentPrompt: 'Russian agent prompt',agentPromptDesc: 'Adds an instruction to reply in Russian in the selected style to the system prompt.',agentPromptPreset: 'Reply style',presetExpert: 'Technical expert (strict terminology, clean code)',presetWriter: 'Technical writer (Markdown, tables, GOST)',presetConcise: 'Concise mode (brief, no fluff)',presetReviewer: 'Code reviewer (bug hunting, security, audit)',presetArchitect: 'System architect (contracts, scalability)',presetTutor: 'Mentor (clear explanations, step-by-step)',secUpdater: '🔄 Language pack updates',secUpdaterDesc: 'Check for new releases in the npm registry and update in one click.',updaterCurrent: 'Current version: v{version}',updaterLatest: 'New version available: v{version}',updaterUpToDate: 'You are on the latest version',updaterChecking: 'Checking…',updaterCheckBtn: 'Check for updates',updaterBtn: 'Update to v{version} in 1 click',updaterUpdating: 'Installing update…',updaterSuccess: '✅ Plugin updated successfully! Restart DSH to apply.',updaterFailed: '❌ Failed to check or update the plugin. Check your network or server logs.',badgeUpdateAvailable: 'Update available',badgeUpToDate: 'Up to date',secTranslator: '🌐 Assistant message translation',secTranslatorDesc: 'Translate model replies in chat into Russian.',translateEngine: 'Translation engine',engineOff: 'Off (default, no network calls)',engineLocal: 'Local LibreTranslate (private, ~600 MB RAM)',engineGoogle: 'Google Translate (online)',googleWarn: '⚠️ Message text is sent to public Google servers.',localStatusRunning: '🟢 LibreTranslate container is running',localStatusStopped: '⚪ LibreTranslate container is not running',localStartBtn: 'Start LibreTranslate in Docker (~600 MB RAM)',localStarting: 'Starting container…',localInfo: 'LibreTranslate in Docker: isolated, ~600 MB RAM.',secOverrides: '✍️ Custom overrides',secOverridesDesc: 'Replace any DSH interface wording with your own.',overrideKeyPlaceholder: 'Key (e.g. common.back or settings.title)',overrideValuePlaceholder: 'Your translation',overrideAddBtn: 'Add',overrideEmpty: 'No overrides yet.',overrideDelete: 'Delete',overrideTip: '💡 Hold Alt and click a UI element for quick editing.',secSupport: '📊 Ecosystem coverage & support',secSupportDesc: '100% UI coverage of the DSH core and plugins.',inspectorToggleOff: '🔍 Enable translation inspector (Alt+I)',inspectorToggleOn: '🔍 Translation inspector (on)',exportJsonBtn: '📤 Export JSON',importJsonBtn: '📥 Import JSON',overridesCopied: 'Overrides copied to clipboard as JSON!',overridesImportPrompt: 'Paste overrides JSON:',overridesImportError: 'JSON parse error: ',statNamespaces: 'Namespaces',statCoreKeys: 'Core keys',statPluginKeys: 'Plugin keys',overridesCount: 'Custom overrides',statusLoading: 'Loading settings…',statusUnavailable: 'Settings unavailable on this host',translateTurn: 'Translate to Russian',reportIssue: 'Report a translation issue',exportMdHint: 'Export the dialog to Markdown via the [ 📥 MD ] button in the session header.',translateTurnHint: 'Translate assistant replies to Russian via the [ RU ↗ ] button on message blocks.',}
|
|
400
400
|
const SETTINGS_NS_NAME = 'russian-lang'
|
|
401
401
|
const FORM_NS = 'dsh-russian-lang'
|
|
402
402
|
const LEGACY_NS = 'russian-lang'
|
|
@@ -1220,7 +1220,7 @@ setTimeout(() => { copyKeyBtn.textContent = '📋' }, 1500)
|
|
|
1220
1220
|
}}
|
|
1221
1221
|
const copyReportBtn = modal.querySelector('.rl-copy-report-btn')
|
|
1222
1222
|
if (copyReportBtn) {copyReportBtn.onclick = () => {const snippet = typeof generateBugReportSnippet === 'function'
|
|
1223
|
-
? generateBugReportSnippet({ key: k, ns, original: origText || rawText, current: rawText, override: textarea.value.trim(), pkgVersion: '0.3.
|
|
1223
|
+
? generateBugReportSnippet({ key: k, ns, original: origText || rawText, current: rawText, override: textarea.value.trim(), pkgVersion: '0.3.33' })
|
|
1224
1224
|
: ('### Репорт: ' + (k || rawText) + '\n- Исходный: ' + (origText || rawText) + '\n- Перевод: ' + textarea.value.trim())
|
|
1225
1225
|
try { navigator.clipboard.writeText(snippet) } catch (err) { void err; }
|
|
1226
1226
|
copyReportBtn.textContent = '✓ Скопировано'
|
|
@@ -1529,7 +1529,7 @@ const [snap, setSnap] = React.useState(() => (scope && scope.getSnapshot ? scope
|
|
|
1529
1529
|
const [ruActive, setRuActive] = React.useState(() => { try { return runtime.getLocale().active === 'ru' } catch (e) { return false } })
|
|
1530
1530
|
const [typo, setTypoState] = React.useState(() =>
|
|
1531
1531
|
(snap.value && snap.value.typography) || {})
|
|
1532
|
-
const [upStatus, setUpStatus] = React.useState({currentVersion: '0.3.
|
|
1532
|
+
const [upStatus, setUpStatus] = React.useState({currentVersion: '0.3.33',latestVersion: undefined,updateAvailable: false
|
|
1533
1533
|
})
|
|
1534
1534
|
const [upLoading, setUpLoading] = React.useState(false)
|
|
1535
1535
|
const [upMsg, setUpMsg] = React.useState(null)
|
|
@@ -1630,7 +1630,7 @@ try {await Promise.resolve(scope.set('agentPrompt', ev.target.checked))
|
|
|
1630
1630
|
},h('option', { value: 'technical_expert' }, t('presetExpert')),h('option', { value: 'tech_writer' }, t('presetWriter')),h('option', { value: 'concise' }, t('presetConcise')),h('option', { value: 'code_reviewer' }, t('presetReviewer')),h('option', { value: 'architect' }, t('presetArchitect')),h('option', { value: 'tutor' }, t('presetTutor')))),presetInfo ? h('div', { className: 'rl-preview-box' },h('div', { style: { fontWeight: 600, marginBottom: '4px', color: 'var(--dsw-alias-label-primary)' } }, '💬 ' + presetInfo.label + ':'),presetInfo.text
|
|
1631
1631
|
) : null
|
|
1632
1632
|
) : null
|
|
1633
|
-
),h('div', { className: 'rl-section-card' },h('div', { className: 'rl-section-title' },h('span', null, t('secUpdater')),h('span', { className: 'rl-badge ' + (upStatus.updateAvailable ? 'rl-badge-warn' : 'rl-badge-ok') },upStatus.updateAvailable ? t('badgeUpdateAvailable') : t('badgeUpToDate'))),h('div', { className: 'rl-section-desc' }, t('secUpdaterDesc')),h('div', { className: 'rl-item-card' },h('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', flexWrap: 'wrap', gap: '8px' } },h('div', null,h('div', { style: { fontWeight: 600, color: 'var(--dsw-alias-label-primary)' } },t('updaterCurrent').replace('{version}', upStatus.currentVersion || '0.3.
|
|
1633
|
+
),h('div', { className: 'rl-section-card' },h('div', { className: 'rl-section-title' },h('span', null, t('secUpdater')),h('span', { className: 'rl-badge ' + (upStatus.updateAvailable ? 'rl-badge-warn' : 'rl-badge-ok') },upStatus.updateAvailable ? t('badgeUpdateAvailable') : t('badgeUpToDate'))),h('div', { className: 'rl-section-desc' }, t('secUpdaterDesc')),h('div', { className: 'rl-item-card' },h('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', flexWrap: 'wrap', gap: '8px' } },h('div', null,h('div', { style: { fontWeight: 600, color: 'var(--dsw-alias-label-primary)' } },t('updaterCurrent').replace('{version}', upStatus.currentVersion || '0.3.33')),upStatus.updateAvailable
|
|
1634
1634
|
? h('div', { style: { color: 'var(--dsw-alias-state-warning-primary)', marginTop: '2px', fontWeight: 500 } },t('updaterLatest').replace('{version}', upStatus.latestVersion || ''))
|
|
1635
1635
|
: h('div', { style: { color: 'var(--dsw-alias-label-secondary)', marginTop: '2px' } },t('updaterUpToDate'))),upStatus.updateAvailable
|
|
1636
1636
|
? h('button', {type: 'button',className: 'rl-btn rl-btn-primary',disabled: upLoading,onClick: triggerUpdate,}, upLoading ? t('updaterUpdating') : t('updaterBtn').replace('{version}', upStatus.latestVersion || ''))
|
|
@@ -1668,7 +1668,7 @@ try {const parsed = JSON.parse(input)
|
|
|
1668
1668
|
if (parsed && typeof parsed === 'object') {const merged = Object.assign({}, overrides, parsed)
|
|
1669
1669
|
const res = await Promise.resolve(scope.set('overrides', merged))
|
|
1670
1670
|
if (res === false) throw new Error('Import rejected')
|
|
1671
|
-
}} catch (err) { alert(t('overridesImportError') + (err && err.message || err)) }}}, t('importJsonBtn')))),h('div', { className: 'rl-section-card' },h('div', { className: 'rl-section-title' },h('span', null, t('secSupport')),h('span', { className: 'rl-badge rl-badge-ok' }, '🟢 100.0%')),h('div', { className: 'rl-section-desc' }, t('secSupportDesc')),h('div', { className: 'rl-grid-3' },h('div', { className: 'rl-stat-box' },h('div', { className: 'rl-stat-val' }, '101'),h('div', { className: 'rl-stat-label' }, t('statNamespaces'))),h('div', { className: 'rl-stat-box' },h('div', { className: 'rl-stat-val' }, '2 442'),h('div', { className: 'rl-stat-label' }, t('statCoreKeys'))),h('div', { className: 'rl-stat-box' },h('div', { className: 'rl-stat-val' }, '6
|
|
1671
|
+
}} catch (err) { alert(t('overridesImportError') + (err && err.message || err)) }}}, t('importJsonBtn')))),h('div', { className: 'rl-section-card' },h('div', { className: 'rl-section-title' },h('span', null, t('secSupport')),h('span', { className: 'rl-badge rl-badge-ok' }, '🟢 100.0%')),h('div', { className: 'rl-section-desc' }, t('secSupportDesc')),h('div', { className: 'rl-grid-3' },h('div', { className: 'rl-stat-box' },h('div', { className: 'rl-stat-val' }, '101'),h('div', { className: 'rl-stat-label' }, t('statNamespaces'))),h('div', { className: 'rl-stat-box' },h('div', { className: 'rl-stat-val' }, '2 442'),h('div', { className: 'rl-stat-label' }, t('statCoreKeys'))),h('div', { className: 'rl-stat-box' },h('div', { className: 'rl-stat-val' }, '6 153'),h('div', { className: 'rl-stat-label' }, t('statPluginKeys')))),h('div', { className: 'rl-actions-row' },h('a', {href: makeIssueUrl({}, '0.3.33'),target: '_blank',rel: 'noopener noreferrer',className: 'rl-btn rl-btn-primary'
|
|
1672
1672
|
}, '💬 ' + t('reportIssue')),h('div', { className: 'rl-hint-text', style: { flex: 1 } },t('exportMdHint')))))))
|
|
1673
1673
|
}
|
|
1674
1674
|
const RL_CSS = [':root{--rl-sb:var(--dsw-alias-state-brand-primary);--rl-ls:var(--dsw-alias-label-secondary);--rl-lp:var(--dsw-alias-label-primary);--rl-b:var(--dsw-alias-border-l2);--rl-l3:var(--dsw-alias-bg-layer-3);--rl-l2:var(--dsw-alias-bg-layer-2);--rl-l1:var(--dsw-alias-bg-layer-1)}.rl-modal-mask{position:fixed;top:0;left:0;width:100vw;height:100vh;background:var(--dsw-alias-bg-mask);display:flex;align-items:center;justify-content:center;z-index:99999;backdrop-filter:blur(2px)}.rl-modal-box{background:var(--rl-l2);color:var(--rl-lp);border:1px solid var(--dsw-alias-border-l1);border-radius:10px;width:calc(100vw - 40px);max-width:500px;box-shadow:var(--dsw-alias-shadow-l3);display:flex;flex-direction:column;gap:12px;padding:18px}.rl-card{border:1px solid var(--rl-b);background:var(--rl-l3);border-radius:12px;list-style:none;overflow:hidden;transition:border-color .15s ease}.rl-head{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;display:flex;align-items:center;gap:12px;padding:14px 18px}.rl-head:hover{background:var(--rl-l2)}.rl-head-main{flex:1;display:flex;flex-direction:column;gap:4px}.rl-title{color:var(--rl-lp);font-size:16px;font-weight:600;line-height:1.4;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.rl-sub{color:var(--rl-ls);font-size:13px}.rl-chev{margin-left:auto;flex:none;color:var(--dsw-alias-label-tertiary);display:inline-flex;transition:transform .16s}.rl-chev-open{transform:rotate(180deg)}.rl-body{border-top:1px solid var(--rl-b);padding:18px}.rl-page{display:flex;flex-direction:column;gap:16px;max-width:960px}.rl-section-card{border:1px solid var(--rl-b);background:var(--rl-l2);border-radius:10px;padding:16px 18px;display:flex;flex-direction:column;gap:12px}.rl-section-title{font-size:14px;font-weight:600;color:var(--rl-lp);display:flex;align-items:center;justify-content:space-between;gap:8px}.rl-section-desc{font-size:12px;color:var(--rl-ls);margin-top:-4px;line-height:1.4}.rl-grid-2{display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:10px}.rl-grid-3{display:grid;grid-template-columns:repeat(auto-fit, minmax(140px, 1fr));gap:10px}.rl-badge{font-size:11px;padding:2px 8px;border-radius:999px;border:1px solid var(--rl-b);display:inline-flex;align-items:center;gap:4px;font-weight:500}.rl-badge-ok{border-color:var(--dsw-alias-state-success-primary);color:var(--dsw-alias-state-success-primary);background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 8%, transparent)}.rl-badge-warn{border-color:var(--dsw-alias-state-warning-primary);color:var(--dsw-alias-state-warning-primary);background:color-mix(in srgb, var(--dsw-alias-state-warning-primary) 8%, transparent)}.rl-badge-dim{border-color:var(--rl-b);color:var(--rl-ls);background:var(--rl-l3)}.rl-item-card{border:1px solid var(--rl-b);background:var(--rl-l3);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}.rl-item-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.rl-item-label{font-size:13px;font-weight:500;color:var(--rl-lp);display:flex;align-items:center;gap:8px;cursor:pointer}.rl-item-desc{font-size:11px;color:var(--rl-ls);line-height:1.4}.rl-stat-box{border:1px solid var(--rl-b);background:var(--rl-l3);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}.rl-stat-val{font-size:16px;font-weight:700;color:var(--rl-lp)}.rl-stat-label{font-size:11px;color:var(--rl-ls);letter-spacing:0.3px}.rl-preview-box{border:1px solid var(--rl-b);background:var(--rl-l3);border-radius:8px;padding:10px 12px;font-size:12px;color:var(--rl-ls);line-height:1.4}.rl-btn{appearance:none;font:inherit;cursor:pointer;border:1px solid var(--rl-b);border-radius:8px;padding:6px 12px;font-size:12px;background:var(--rl-l3);color:var(--rl-lp);font-weight:500;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:all .15s ease;text-decoration:none}.rl-btn:hover:not(:disabled){background:var(--rl-l1);border-color:var(--rl-ls)}.rl-btn-primary{background:var(--rl-lp);color:var(--rl-l3);border-color:transparent}.rl-btn-primary:hover:not(:disabled){opacity:0.9}.rl-select{height:32px;border:1px solid var(--rl-b);background:var(--rl-l3);color:var(--rl-lp);border-radius:6px;padding:0 8px;font-size:12px;outline:none;width:100%;max-width:380px}.rl-select:focus{border-color:var(--rl-sb)}.rl-check{width:16px;height:16px;accent-color:var(--rl-lp);cursor:pointer;flex-shrink:0}.rl-hint-text{font-size:11px;color:var(--rl-ls);line-height:1.4}.rl-actions-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding-top:4px}.rl-lang-chip{appearance:none;cursor:pointer;border:1px solid var(--rl-b);background:var(--rl-l3);color:var(--rl-ls);font-size:11px;font-weight:700;padding:2px 7px;border-radius:6px;display:inline-flex;align-items:center;transition:all .15s;margin:0 4px}.rl-lang-chip:hover{border-color:var(--rl-lp);color:var(--rl-lp)}.rl-lang-chip-active{color:var(--rl-lp);border-color:var(--rl-lp);background:var(--rl-l2)}.rl-action-btn{appearance:none;background:0 0;border:1px solid transparent;border-radius:4px;color:var(--rl-ls);cursor:pointer;font-size:11px;padding:2px 5px;display:inline-flex;align-items:center;transition:all .15s}.rl-action-btn:hover{color:var(--rl-lp);border-color:var(--rl-b);background:var(--rl-l3)}.rl-action-btn-active{color:var(--rl-lp);background:var(--rl-l2);border-color:var(--rl-b)}.rl-turn-translation{margin:8px 0;padding:10px 12px;border:1px solid var(--rl-b);background:var(--rl-l2);border-radius:8px;font-size:13px;line-height:1.5}.rl-trans-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;border-bottom:1px solid var(--rl-b);padding-bottom:4px}.rl-trans-title{font-size:11px;font-weight:600;color:var(--rl-ls);text-transform:uppercase;letter-spacing:0.5px}.rl-trans-tools{display:flex;gap:4px}.rl-trans-btn{appearance:none;background:var(--rl-l3);border:1px solid var(--rl-b);color:var(--rl-ls);cursor:pointer;padding:2px 7px;border-radius:4px;font-size:11px}.rl-trans-btn:hover{background:var(--rl-l1);color:var(--rl-lp)}.rl-trans-body{color:var(--rl-lp);white-space:pre-wrap;word-break:break-word;user-select:text}.rl-export-md-btn{appearance:none;border:1px solid var(--rl-b);height:32px;color:var(--rl-lp);cursor:pointer;background:transparent;border-radius:18px;justify-content:center;align-items:center;gap:4px;padding:6px 12px;font-size:13px;font-weight:500;display:inline-flex;white-space:nowrap;margin-left:6px;transition:all .15s ease}.rl-export-md-btn:hover{background:var(--dsw-alias-interactive-bg-hover)}.rl-inspector-hover{position:absolute;pointer-events:none;border:2px solid var(--rl-sb);border-radius:4px;background:color-mix(in srgb,var(--rl-sb) 12%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--rl-sb) 30%,transparent);z-index:99998;transition:all .06s ease;display:none}.rl-inspector-badge{position:absolute;bottom:calc(100% + 4px);left:0;background:var(--rl-sb);color:var(--dsw-alias-label-inverse);font-size:10px;font-weight:600;padding:2px 6px;border-radius:4px;white-space:nowrap;box-shadow:var(--dsw-alias-shadow-l2);pointer-events:none}.rl-inspector-pill{position:fixed;bottom:18px;right:18px;background:var(--rl-l2);color:var(--rl-lp);border:1px solid var(--dsw-alias-border-l1);border-radius:20px;padding:6px 12px;box-shadow:var(--dsw-alias-shadow-l3);display:none;align-items:center;gap:8px;font-size:12px;z-index:99990;user-select:none}.rl-inspector-pill-active{border-color:var(--rl-sb);box-shadow:0 0 12px color-mix(in srgb,var(--rl-sb) 35%,transparent)}'
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"dsh-market":{"actWhy":"Почему не активен?","agentBusyInstall":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед установкой. Установка изменяет файлы плагина, поэтому работающий агент может завершиться с ошибкой в процессе.","agentBusyQueued":"Агент занят — задача добавлена в очередь и выполнится при простое (отмена в «Задачи» в правом верхнем углу).","agentBusyUninstallQueued":"Агент занят — удаление добавлено в очередь и выполнится при простое (отмена в «Задачи» в правом верхнем углу).","agentBusyUpdate":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед обновлением. Обновления заменяют файлы плагина на месте, поэтому работающий агент может завершиться с ошибкой или смешать версии в процессе выполнения.","agentBusyUpdateQueued":"Агент занят — обновление добавлено в очередь и выполнится при простое (отмена в «Задачи» в правом верхнем углу).","agentQueueStaleGone":"Плагин был установлен при постановке в очередь, но сейчас отсутствует — действие пропущено.","agentQueueStaleNoUpdate":"При постановке в очередь было доступно обновление, сейчас его нет — действие пропущено.","aiFix":"Исправление через AI","aiFixConservative":"Действуйте консервативно: исправляйте только явные ошибки (сбои запуска, дубликаты, несовпадения критических зависимостей). Не выполняйте лишних обновлений; объясняйте каждое действие и ждите подтверждения.","aiFixCopied":"Промпт для исправления скопирован — вставьте его в новую беседу с агентом","aiFixDetect":"Шаг 1 — сначала определитесь. Прежде чем что-либо трогать, убедитесь, что процесс, в котором вы работаете, ЭТОТ экземпляр DeepSeek Harness, к которому относится данный профиль (то есть текущая диагностируемая композиция — это та, в которой вы сейчас находитесь). Проверьте, указывает ли текущий каталог / $DSH_HOME / командная строка на этот профиль или работает ли процесс внутри deepseek-harness. Если не можете определить, считайте, что ответ «да» (безопасный выбор).","aiFixFail":"Буфер обмена недоступен — скопируйте диагностику вручную ниже","aiFixHint":"Передать отчёт диагностики в новую сессию Агента (скопировано в буфер обмена)","aiFixIfSelf":"Если ДА — вы являетесь этим инструментом: никогда не изменяйте текущую конфигурацию, инструмент или основные пакеты на месте (не редактируйте cordis.patch.yml, не меняйте порядок/включайте/отключайте пакеты, не устанавливайте/удаляйте/обновляйте плагины, не переустанавливайте зависимости, не обновляйте/перезапускайте dsh). Три шага: 1) только анализ в режиме чтения, ничего не изменяйте; 2) создайте apply.sh/.bat (изменения для этого исправления) и rollback.sh/.bat (полностью отменяет его); оба идемпотентны — apply создает снимки только если их еще нет и никогда не перезаписывает существующий снимок (если он существует, значит apply уже выполнялся, так что откатитесь или подтвердите перед повторным запуском), а rollback восстанавливает из этого снимка, так что частично выполненный apply все еще можно откатить, а повторный rollback безопасен; 3) дайте мне запустить apply во внешнем терминале и вставьте stdout/stderr обратно вам. Укажите причину и ждите моего подтверждения на каждом шаге — никогда не запускайте это самостоятельно.","aiFixIntro":"Пожалуйста, помоги исправить проблемы с плагинами в DeepSeek Harness (профиль: {0}). Данные диагностики:","aiFixScope":"Если нет — вы процесс вне целевого харнесса: вы можете переупорядочить dsh.profile.bundles, отключить/включить плагины или скорректировать cordis.patch.yml. Официальные бандлы фиксированы; опишите план перед изменениями.","all":"Все","alreadyInstalled":"✓ Установлен","approveBuilds":"Разрешить сборочные скрипты и повторить","autoBackup":"Резервная копия раз в сутки (при открытии маркета)","backTop":"Наверх","backupDone":"Копия загружена","backupDownload":"Выгрузить копию","backupHint":"Включает список плагинов и настройки профиля, но не node_modules. Восстановление ставит плагины заново по списку.","backupImport":"Импортировать и посмотреть","backupLocal":"Локальный файл","backupWorking":"Выполняется…","blockAdd":"Скрыть","blockFailed":"Не удалось обновить список скрытых плагинов. Повторите попытку.","blockMoved":"Удалено из «Обзор». Отменить действие можно во вкладке «Скрытые».","blockRemove":"Показать снова","blockedEmpty":"Скрытых плагинов пока нет.","blockedFilteredEmpty":"Подходящие плагины находятся во вкладке «Скрытые».","blockedTabHint":"Эти расширения не отображаются в «Обзоре», и «Обновить всё» их пропускает.","brokenBundleBanner":"Эти плагины теперь имеют клиентский пакет, который не будет обрабатываться; страница может отображаться пустой после обновления — рекомендуется выполнить откат:","brokenPluginAction":"Найти этот плагин","brokenPluginBody":"Работающий DSH заблокировал обновление, а заменяемая версия уже была повреждена. Маркет удалил плагин из профиля во избежание сбоя при следующем запуске. Директория не затронута — завершите DSH и установите плагин снова.","brokenPluginDismiss":"Больше не показывать","brokenPluginTitle":"Плагин {0} удалён после неудачного обновления","buildsSkipped":"Этому плагину нужны сборочные скрипты; по умолчанию они заблокированы ради безопасности. Разрешите их и переустановите:","busyWait":"Уже выполняется другая операция — дождитесь её окончания (установка, обновление и удаление идут по одной)","cancel":"Отмена","cancelOp":"Отменить","cancelled":"Отменено","cancelling":"Отмена…","capCredentials":"использует ваши API-ключи","capDynamicCode":"загружает и исполняет сторонний код","capEnv":"читает переменные окружения","capFsRead":"читает файлы в проекте","capFsWrite":"записывает файлы в проекте","capHostRuntime":"влияет на работу самого DSH","capInstallScript":"запускает код при установке","capLlm":"обращается к языковым моделям","capNetwork":"устанавливает сетевые соединения","capRedCoreDisable":"отключает компонент DSH ({0})","capRedCoreOverride":"переопределяет компонент DSH ({0})","capRedCoreTamper":"модифицирует компоненты DSH","capRedCoreTamperDetail":"модифицирует компоненты DSH ({0})","capRedCredentialsNetwork":"отправляет запросы в сеть и использует ваши API-ключи","capRedInstallScript":"выполняет собственный скрипт в момент установки без явного запуска плагина","capRedInstallScriptScripts":"выполняет {0} в момент установки без явного запуска плагина","capRedLiteralIp":"подключается к фиксированному IP-адресу {0}","capRedPlaintextHttp":"устанавливает незашифрованное соединение с {0}","capShell":"выполняет системные команды","capSubagent":"запускает собственных субагентов","capabilityNone":"Ничего подозрительного не обнаружено (это не гарантирует абсолютную безопасность).","capabilityNote":"Статический анализ показывает только найденные паттерны. Отсутствие находок не означает полную безопасность.","capabilityScannedAt":"Проверено: {0}","capabilityTitle":"Возможности плагина","capabilityUnchecked":"Ещё не проверено","catConflict":"Конфликты","catDeps":"Зависимости","catInfo":"Информация","catOrder":"Порядок","catRisk":"Риск","catWarn":"Предупреждение","catalogNpmLatest":"последняя в npm","catalogVersionDated":"версия npm на момент последнего обновления каталога ({0}); опубликованные позже релизы появятся после следующего обновления","catalogVersionUndated":"версия npm на момент последнего обновления каталога — каталог обновляется ежедневно, поэтому может отставать от актуальной версии в npm","catsLess":"Свернуть","catsMore":"Ещё","checkBundles":"Порядок загрузки плагинов","checkBundlesEmpty":"Слои плагинов не объявлены","checkCommunity":"сообщество","checkDir":"каталог","checkDuplicates":"Повторяющиеся записи плагинов","checkDuplicatesEmpty":"Повторов нет","checkEntries":"записей (идентификаторы загрузчика)","checkErrors":"Ошибки","checkErrorsEmpty":"Ошибок нет","checkHoisted":"поднят","checkIssues":"Найдены проблемы","checkLoadFail":"Не удалось загрузить диагностику: ","checkLoading":"Анализ профиля…","checkMultiEmpty":"Пакетов ядра в нескольких версиях нет","checkMultiVersion":"Пакеты ядра в нескольких версиях","checkOfficial":"официальный","checkOrderTip":"порядок загрузки бандла сообщества конфликтует с объявленными правилами before/after","checkOrphans":"Неверные записи конфига","checkOrphansEmpty":"Неверных записей нет","checkOverridden":"переопределяет","checkOverrides":"Переопределения","checkOverridesEmpty":"Переопределений нет","checkPatch":"файл патча","checkPeerEmpty":"Расхождений версий зависимостей нет","checkPeerInfo":"{0} записей к сведению (не подтверждено)","checkPeerInfoTier":"Информация о зависимостях","checkPeerInfoTierEmpty":"Нет записей информационных зависимостей","checkPeerMismatches":"Расхождения версий зависимостей","checkPeerOverview":"расхождений: {0} · к сведению: {1}","checkPeerRisk":"Риски зависимостей","checkPeerRiskEmpty":"Нет несоответствий уровней риска зависимостей","checkPeerSatisfied":"Удовлетворены зависимости","checkPeerSatisfiedEmpty":"Нет удовлетворяющих записей зависимостей","checkPeerWarning":"Предупреждения о зависимостях","checkPeerWarningEmpty":"Нет несоответствий зависимостей на уровне предупреждений","checkProfile":"профиль","checkRange":"объявленный диапазон","checkRefresh":"Проверить заново","checkResidualIncomplete":"неполный пакет (нет package.json)","checkResidualTmp":"временная директория pnpm","checkResiduals":"Остаточные директории","checkResidualsEmpty":"Неполных директорий пакетов или временных папок pnpm не найдено.","checkResidualsHint":"Ничто в профиле не ссылается на эти папки, и они не мешают запуску: это остатки прерванного обновления. Завершите DSH и удалите их либо установите плагин заново.","checkResolved":"разрешённая версия","checkSatisfied":"удовлетворено","checkSource":"источник","checkUnknown":"неизвестно","checkUnsatisfied":"не удовлетворено","checkWarnings":"Предупреждения","checkWarningsEmpty":"Предупреждений нет","clearSearch":"Очистить поиск","cmdCopied":"Скопировано","cmdCopy":"Копировать команду установки","cmdDetails":"Команда установки","comments":"Комментарии","commentsError":"Не удалось загрузить комментарии. Проверьте подключение и попробуйте снова.","commentsLoading":"Загрузка комментариев…","commentsLoginHint":"Вход в аккаунт откроется в новой вкладке. После авторизации на GitHub вернитесь сюда — комментарии обновятся.","commentsNote":"Комментарии поступают из GitHub Discussions. Открытие этого подключается к giscus.app и GitHub; для публикации требуется аккаунт GitHub.","commentsOnGitHub":"Прочитайте обсуждение на GitHub","commentsRetry":"Попробуйте снова","commentsTitle":"Комментарии","compatRiskBanner":"Обнаружен риск несовместимости — откройте Диагностику перед перезапуском или откатите эту операцию.","compatRiskBannerNoRollback":"Обнаружен риск несовместимости — откройте Диагностику перед перезапуском.","confirm":"Подтвердить","confirmInstall":"Подтвердить установку","confirmRemove":"Подтверждаете?","confirmTitle":"Установка","confirmWarn":"Плагины — сторонний код сообщества. Устанавливая, вы доверяете этому источнику; сборочные скрипты по умолчанию заблокированы.","conflictBody":"Конфликт с установленным плагином — остаться может только один:","conflictDeclined":"Вы сохранили установленные плагины; этот не был установлен","conflictDetails":"Детали","conflictKeep":"Оставить то, что у меня есть","conflictKeepNote":"Оставить этот","conflictOutcomeInstall":"установить","conflictOutcomeKeep":"оставить","conflictOutcomeRemove":"удалить","conflictOutcomeSkip":"пропустить","conflictReplaceFailed":"Замена не завершена. Перечисленные ниже плагины были удалены и не восстановлены — проверьте их:","conflictReplacing":"Замена…","conflictReverted":"Отменено автоматически; ничего не было изменено","conflictSwap":"Переключиться на этот","conflictSwapNote":"Настройки удалённых плагинов сохраняются, чтобы вы могли установить их позже","conflictTitle":"Невозможно установить: конфликт с установленным плагином","conflictWhy":"cordis отклоняет дерево плагинов, содержащее дублирующиеся идентификаторы записей; сохранение этого плагина предотвратит запуск DeepSeek Harness.","copyPath":"Копировать путь","crashDetails":"Подробности ошибки","crashHint":"Произошла ошибка при отображении маркета. Ваши плагины не затронуты, конфигурация сохранена.\nОбычно помогает перезагрузка страницы. Если ошибка повторяется, экспортируйте журнал и прикрепите его к issue — в нём указано место сбоя.\nТакже проверьте: если в браузере включён автоматический перевод страницы, отключите его и перезагрузите страницу.","crashReload":"Перезагрузить","crashTitle":"Не удалось отобразить маркет плагинов","credsWarning":"Внимание: в копию попадают настройки профиля и файлы, где могут лежать секреты (config.toml, .env и подобные). Локальная выгрузка ничего не вырезает, поэтому выгружайте на WebDAV, которому доверяете.","deprecatedBadge":"Устарел","deprecatedWarn":"Каталог помечает этот плагин как устаревший; новым пользователям ставить его не советуют.","descCollapse":"Показать меньше","descExpand":"Показать больше","descMore":"Показать всё","diagExplain":"Что это","diagExplainText":"Эта страница ищет плагины, конфликтующие друг с другом, несовпадения версий зависимостей и неверный порядок загрузки. Термины:","diagOkAll":"Всё в порядке: конфликтов, проблем с зависимостями и порядком не найдено","diagTermBundle":"бандл — один пакет плагина, применяется по порядку","diagTermEntry":"запись — то, что плагин добавляет в работающую композицию","diagTermOrder":"порядок загрузки — очерёдность активации; более поздний может перекрыть более ранний","diagTermOrphan":"неверная запись — конфиг ссылается на то, чего нет","diagTermPeer":"peer-зависимость — пакет, который плагин ждёт от хоста","diagTermShadow":"перекрытие — старая копия из плагина закрывает более новую хостовую","disable":"Выключить","disabledState":"Выключен","dismiss":"Скрыть","dismissNotice":"Скрыть это уведомление","downloadsChecked":"Источник проверен: {0}.","downloadsCheckedUnknown":"Время проверки источника не указано.","downloadsMeaning":"Загрузок из npm за 30 дней: {0}. Не является числом установок за всё время или уникальных пользователей.","downloadsPeriod":"30 дн.","downloadsWindow":"Период: с {0} по {1}.","downloadsWindowUnknown":"Период не указан.","duplicateNames":"Плагины с одинаковыми именами (к сведению, это не конфликт)","empty":"Подходящих плагинов нет","enable":"Включить","envFix":"Настроить автоматически","envFixFail":"Автоматическая настройка не удалась — выгрузите журнал и пришлите нам файл","envFixing":"Настройка…","envMissing":"Перед установкой плагинов нужен один небольшой компонент","exportLog":"Выгрузить журнал","exportLogFail":"Не удалось выгрузить журнал","exportedLog":"Журнал выгружен: dsh-market-log.txt — приложите его к обращению","exportingLog":"Выгрузка…","favoriteAdd":"Добавить в избранное","favoriteBusy":"Выполняется операция с плагином. Изменение добавлено в очередь — подождите немного.","favoriteFailed":"Не удалось обновить избранное. Попробуйте снова.","favoriteRemove":"Удалить из избранного","favoriteUnavailable":"Избранное недоступно. Обновите страницу или перезапустите dsh web.","favoritesClearStale":"Удалить устаревшее избранное","favoritesClearingStale":"Удаление…","favoritesEmpty":"В избранном пока ничего нет. Добавляйте плагины в разделах Обзор или Темы.","favoritesPluginsSection":"Плагины ({0})","favoritesResultCount":"Избранное: {0}","favoritesStaleEmpty":"Сохранённые записи больше не найдены в каталоге.","favoritesStaleNote":"Записей из избранного нет в каталоге: {0}","favoritesThemesSection":"Темы ({0})","filter":"Фильтр","filterDir":"Порядок","filterHost":"Версия хоста","filterSort":"Поле сортировки","filterTime":"Вышло за","firstPage":"В начало","gist":"GitHub Gist","gistCreated":"Выгружено:","gistErrAuth":"GitHub не авторизовал: токен неверный или истёк, либо gh CLI не залогинен","gistErrInvalid":"Содержимое Gist повреждено или формат копии не поддерживается","gistErrNetwork":"GitHub недоступен — проверьте сеть или прокси","gistErrNoId":"Для обновления нужен идентификатор Gist — заполните поле или переключитесь на «Создать»","gistErrNotFound":"Gist не найден — проверьте идентификатор или ссылку","gistErrRateLimit":"Достигнут лимит GitHub, либо у токена нет права gist","gistErrTimeout":"GitHub не ответил вовремя — проверьте сеть и повторите","gistExport":"Выгрузить в Gist…","gistExportDone":"Выгружено в Gist","gistExportGo":"Выгрузить","gistExportHint":"Отмечено всё — полная копия вместе с настройками; если снять любую галочку, выгрузятся только выбранные плагины, а настройки — по отдельному флажку.","gistExportSelect":"Выберите плагины для выгрузки","gistId":"Идентификатор или ссылка на Gist (при выгрузке оставьте пустым, чтобы создать новый приватный)","gistImport":"Загрузить из Gist","gistIncludeConfig":"Включить файлы настроек (в них могут быть секреты)","gistModeCreate":"Создать новый приватный Gist","gistModeUpdate":"Обновить Gist из поля","gistNoPlugins":"В этом профиле нечего выгружать","gistNote":"В отличие от локальной выгрузки (архив на этой машине), Gist нужен для переноса между машинами: выгрузите в приватный Gist и загрузите на другом компьютере под тем же аккаунтом. Токен живёт только в памяти этой вкладки и никогда не пишется в браузерное хранилище; если залогинен gh CLI или задан DSH_GITHUB_TOKEN, вводить его не нужно. Gist приватный, до 1 МБ на файл.","gistSelectAll":"Выбрать все","gistSelectNone":"Снять выбор","gistSpecLocal":"локально","gistSrcEnv":"переменная DSH_GITHUB_TOKEN","gistSrcGh":"gh CLI","gistSrcToken":"введён вручную","gistToken":"Токен GitHub (только в памяти вкладки — после обновления страницы введите заново; оставьте пустым, чтобы использовать серверный DSH_GITHUB_TOKEN или залогиненный gh CLI)","gistVerify":"Проверить связь","gistVerifySource":"Проверено — источник токена: {0}","goDiagnose":"Открыть диагностику","gotIt":"Понятно","groupAdd":"Добавить плагин","groupAddConfirm":"Добавить {0}","groupAddEmpty":"Все установленные плагины уже в этой группе","groupAddHint":"Добавление в группу не активирует плагины","groupAddPick":"Добавить","groupAddSearchPh":"Поиск плагинов…","groupAddSelected":"Выбрано: {0}","groupAddTheme":"Добавить тему","groupAddTitle":"Добавить в «{0}»","groupAssign":"Назначить","groupChangeTheme":"Сменить тему","groupConfirmDelete":"Удалить группу?","groupCreate":"Создать","groupDelete":"Удалить группу","groupEmpty":"Пока пусто","groupExpand":"Развернуть {0}","groupFold":"Свернуть {0}","groupMembersMeta":"{0} · включено: {1}","groupMixed":"Включена частично","groupMore":"Ещё","groupNamePh":"Название группы","groupNew":"Новая группа","groupOrgHint":"Группы служат только для организации и не влияют на включение/выключение плагинов","groupPickTheme":"Выбрать тему","groupRemove":"Убрать","groupRename":"Переименовать","groupRenameHint":"Изменяется только имя группы — состав и состояние включения плагинов сохраняются","groupRenameSave":"Сохранить","groupRenameTitle":"Переименовать группу","groupSearchEmpty":"Подходящих плагинов не найдено","groupStateBroken":"Проверка не пройдена","groupStateInert":"Не активен","groupStateRestart":"Перезапустите для применения","groupThemeBadge":"Тема","groupThemeCurrent":"Текущая","groupThemeEmpty":"Нет тем вне групп","groupThemeHint":"Группа содержит одну тему. Выбор темы не включает её автоматически. Замена темы перемещает прежнюю тему из группы.","groupThemeRemove":"Удалить тему","groupThemeTaken":"Уже содержит тему","groupThemeTitle":"Выберите тему для «{0}»","groupThemeUse":"Применить","heldReleaseAction":"Всё равно установить {0}","heldReleaseNotice":"Установлено, но не самое новое: параметр minimumReleaseAge для этого профиля удерживает релиз {0}, поэтому была установлена версия {1}.","hostAll":"Показать все","hostCompatible":"Совместимо с текущим DSH {0}","hostDependencyMore":"ещё находок пропущено: {0}","hostDependencyWarning":"Плагин перечисляет в зависимостях известные общие пакеты хоста DSH. Это может перекрыть хостовую версию; проверка смотрит только манифест и не подтверждает, что в рантайме появился дубль:","hostDetecting":"Определение версии хоста…","hostFilterActive":"Фильтр для DSH {0}; не объявленные плагины остаются видимыми","hostFilterLoading":"Проверка требований хоста {0}/{1}; не объявленные плагины остаются видимыми","hostIncompatibleAnyway":"Всё равно обновить","hostIncompatibleBody":"Плагин {plugin} требует DSH версии {requirement}, а на этом сервере запущен {host}. Установка, скорее всего, нарушит работу плагина, и единственным выходом будет ручной откат версии.\nНичего не было изменено — плагин остаётся на текущей версии.\nЕсли вы уверены, что номер версии определён неверно, вы можете продолжить обновление.","hostIncompatibleBodyInstall":"{plugin} указывает, что требует DSH {requirement}, а у вас установлена версия {host}. Установка, скорее всего, приведёт к неработоспособности плагина.\nНичего не было установлено.\nЕсли вы уверены, что номер версии некорректен (например, бандл DSH не сообщает свою версию), вы можете выполнить установку в любом случае.","hostIncompatibleCancel":"Отменить установку","hostIncompatibleFoundInstall":"Вы можете установить {version} — в ней заявлена поддержка этой версии DSH.","hostIncompatibleFoundUpdate":"Вы можете обновить до {version} — в ней заявлена поддержка этой версии DSH.","hostIncompatibleInstallAnyway":"Установить в любом случае","hostIncompatibleInstallCompat":"Установить {version}","hostIncompatibleKeep":"Оставить текущую версию","hostIncompatibleNoCompat":"Ни в одной версии не заявлена поддержка этой версии DSH.","hostIncompatibleRetry":"Повторить попытку","hostIncompatibleSearchFailed":"Не удалось найти совместимые версии.","hostIncompatibleSearching":"Поиск версии с поддержкой текущей версии DSH…","hostIncompatibleTitle":"Для этого релиза требуется более новая версия DSH","hostIncompatibleUnknown":"неизвестная версия","hostIncompatibleUpdateCompat":"Обновить до {version}","hostRequirement":"DSH {0}","hostRequirementLoading":"Чтение требований хоста…","hostRequirementUnavailable":"Требования к хосту неизвестны","hostRequirementUndeclared":"Требования к хосту не объявлены","hostStatusCompatible":"Требования к хосту соблюдены (заявленные)","hostStatusIncompatible":"Подтверждена несовместимость с этой версией DSH","hostUnknown":"Версия хоста неизвестна","hostUpdateHint":"Установлено и обновляется десктоп-клиентом; маркет только отображает статус","hostUpdateReady":"Новая версия {0}","hotBanner":"плагины готовы — обновите страницу, чтобы ими пользоваться","ignoreAllUpdateNotices":"Игнорировать все при этом запуске","ignoreUpdateNotice":"Игнорировать при этом запуске","install":"Установить","installCaution":"Перед установкой","installFail":"Установить не удалось","installReplacement":"Установить замену","installedBadge":"✓ Установлен","installedEmpty":"Плагинов сообщества пока нет — загляните во вкладку «Обзор»","installing":"Установка…","lastPage":"В конец","lightboxClose":"Закрыть предпросмотр","lightboxNext":"Следующий","lightboxPrev":"Предыдущий","linkedDev":"подключён как разработка","loadFail":"Не удалось загрузить каталог плагинов, попробуйте позже","loadRetry":"Повторить","loading":"Загрузка каталога…","localOnly":"Адрес WebDAV и учётные данные остаются только в этом браузере.","marketNoToggle":"Сам маркет выключить нельзя","marketUpdate":"Доступно обновление маркета — обновить","migrateContinue":"Подтвердить источник npm","migrateCurrentSource":"Текущий источник","migrateDescription":"Это изменит источник установки плагина, а не только его версию.","migrateFail":"Сбой миграции источника","migrateNpm":"Использовать версию из npm","migrateTargetSource":"Новый источник npm","migrateTitle":"Использовать версию из npm?","migrateWarning":"Пакет npm может поддерживаться другим издателем. Продолжайте, только если доверяете этому сопоставлению каталога.","nav":"Маркет плагинов","nextPage":"Дальше","noGroups":"Групп пока нет — создайте","notInstalled":"Не установлен","noteAdd":"Заметка","noteEdit":"Редактировать заметку","noteMine":"Моя заметка","notePlaceholder":"Опишите это своими словами. Это заменит описание автора.","noteSave":"Сохранить","noteSeeMine":"Вернуться к моей заметке","noteSeeTheirs":"Показать описание автора","noteTheirs":"Оригинал","notesCommits":"Коммиты","notesCommitsRecent":"Последние коммиты (могут не совпадать с установленной версией — только для справки)","notesLink":"Что изменилось","notesLoadFail":"Обновления сейчас недоступны — попробуйте позже.","notesNone":"Этот плагин не публикует заметки об обновлениях.","notesNpm":"Время публикации версии","notesRelease":"Заметки о выпуске","opBlockedCard":"Невозможно установить · подробности","opClear":"Очистить выполненные","opClose":"Свернуть","opDequeue":"Удалить из очереди","opDone":"Готово","opDoneRefresh":"Установлено · обновите страницу для применения","opEmpty":"Нет операций в процессе выполнения","opEmptyHint":"Здесь отображается прогресс установки, обновления и удаления","opInstalling":"Установка","opKind_install":"Установить","opKind_uninstall":"Удалить","opKind_update":"Обновить","opLeaveHint":"Вы можете покинуть эту страницу; вы получите уведомление, когда процесс завершится","opLeaveHintAgents":"Запустится автоматически, когда агенты перейдут в режим ожидания","opNeedsChoice":"Не удалось установить · откат выполнен автоматически, ничего не изменилось","opNeedsYou":"нужен вам","opQueued":"В очереди","opQueuedAhead":"впереди:","opQueuedWaitingAgents":"ожидание завершения {0} активных сессий","opRetry":"Повторить","opRunNow":"Запустить сейчас","opRunning":"Работает","opTitle":"Задачи","opWaitingAgents":"Задач в ожидании освобождения агентов: {0}","orderAlreadyOptimal":"Текущий порядок уже оптимален и удовлетворяет всем зависимостям плагинов","orderApplied":"✓ Применено — перезапустите для активации","orderApply":"Применить порядок","orderAutoSort":"Автосортировка","orderConflicts":"конфликты before/after в текущем порядке","orderDiffHint":"Этот порядок изменит композицию: {0} переопределений, {1} изолированных, {2} дубликатов","orderDown":"↓","orderDrag":"Перетащите для изменения порядка","orderDragHint":"Перетаскивайте ⠿ для сортировки. Изменения сохраняются при нажатии «Применить порядок».","orderReset":"Сбросить черновик","orderSection":"Порядок загрузки","orderSuggestApply":"Применить рекомендуемый порядок","orderSuggestHint":"Рекомендуемый порядок (автосортировка по правилам before/after):","orderTrialFail":"Ошибка статической валидации композиции: {0}","orderUp":"↑","orphanBundle":"⚠️ Следующий запуск завершится ошибкой: профиль объявляет эти пакеты, но они не установлены. Переустановите их или удалите из dsh.profile.bundles в файле package.json профиля:","orphanIdRequired":"нет идентификатора","orphanInsertNotArray":"неверный формат","orphanInsertTargetMissing":"цель не найдена","orphanInsertTargetNotGroup":"цель не является группой","orphanNameMismatch":"имя не совпадает","orphanPatchTargetMissing":"цель не найдена","orphanReasonOther":"другое","packagesDone":"обработано пакетов: {0}","pageInfo":"Страница {0} из {1}","partialNote":"Отменено — часть изменений уже применена","patchDisabled":"Выключен патчем","patchForced":"Включён патчем","pathCopied":"Скопировано","peerInfoUnverified":"непроверенный","peerRiskAboveMax":"выше явного максимума","peerRiskBelowMin":"ниже заявленного минимума","peerWarnAboveMax":"выше объявленной верхней границы","peerWarnOptional":"необязательный участник","perPage":"На странице","phaseBuilding":"Сборочные скрипты","phaseDownloading":"Загрузка","phaseLinking":"Связывание","phaseResolving":"Разрешение зависимостей","presetApplied":"Применено — перезапустите, чтобы применить","presetApply":"Применить","presetBundleCount":"{0} наборов","presetDelete":"Удалить","presetDeleted":"Пресет удалён","presetDisable":"отключить плагины {0}","presetEmpty":"Нет сохранённых пресетов","presetEnable":"включить плагины {0}","presetFail":"Не удалось выполнить предустановленную операцию:","presetHint":"Сохраните текущий порядок пакетов и список отключенных как пресет и переключайтесь в любое время; применение запускает проверку перед началом пробного периода и сначала создает снимок.","presetListFail":"Не удалось загрузить пресеты:","presetName":"Название пресета","presetNameEmpty":"Введите имя предустановки","presetNoop":"нет изменений","presetPreview":"Предпросмотр","presetPreviewFail":"Не удалось выполнить предварительный просмотр:","presetPreviewTitle":"Применение этого пресета приведёт к:","presetReorder":"переупорядочить {0} наборы","presetSave":"Сохранить текущее состояние","presetSaved":"Пресет сохранён","presetSaving":"Сохранение…","presetSection":"Пресеты плагинов","prevPage":"Назад","progressHint":"Первая установка скачивает и разрешает зависимости — крупные плагины занимают 1–3 минуты","published":"выпущен","queuedBadge":"В очереди","queuedInstallGone":"Плагин удалён из каталога (список обновился или вы перешли на другую страницу). Найдите плагин в каталоге и повторите установку.","queuedRunBlocked":"Активно сессий: {0}. Операция отложена: замена файлов работающего плагина может привести к падению агента. Выполнение начнётся при простое (либо отмените задачу в «Задачи»).","readme":"README","reconciledNote":"Удалено, но pnpm сообщил об ошибке при завершении (обычно это заблокированный файл). Профиль уже согласован — повторная попытка не требуется.","recoveryApply":"Сохранить и перезапустить","recoveryApplyFailed":"Сбой записи: ","recoveryApplying":"Запись и перезапуск…","recoveryBanner":"Сбой загрузки: ","recoveryBlamedHint":"Плагины, отмеченные красным, указаны в журнале этого запуска; снятие галочки отключит их при следующем старте.","recoveryCarrier":"disable-carrier","recoveryLead":"Перезапуск не удался, процесс DSH завершился. Отметьте плагины, которые нужно включить при следующем старте; вызвавшие сбой плагины выделены красным и сняты с загрузки.","recoveryLogPath":"Полный журнал: ","recoveryNoBlameHint":"В журнале не указан конкретный плагин; ниже показаны текущие параметры, доступные для настройки.","recoveryNoSummary":"В журнале не указана причина","recoveryNotToggleable":"нельзя переключить здесь","recoveryOpening":"Чтение сведений о сбое…","recoveryOption":"Настроить плагины","recoveryRawLog":"Необработанный вывод DSH (хвост лога)","recoveryRestarting":"Перезапуск: эта страница обновится после запуска DSH; если сбой повторится, вы вернётесь сюда с новой ошибкой.","recoveryStandalone":"Открыть отдельную страницу восстановления","recoveryTimeout":"Истекло время ожидания запуска DeepSeek Harness. «Настроить плагины» покажет, какой из них мешает запуску.","recoveryTitle":"Сбой запуска — настройка плагинов","recoveryUnmatched":"Указаны DSH, но не переключаются здесь: ","recoveryWriteFailed":"Последний выбор не удалось записать полностью, перезапуск отменён: ","refresh":"Обновить","refreshBanner":"изменения применены — обновите страницу, чтобы их увидеть","replacementHint":"Каталог предлагает","repoLink":"Посмотреть репозиторий на GitHub","restartBanner":"изменения внесены — перезапустите DeepSeek Harness","restartFail":"Перезапустить не удалось","restartHint":"Как перезапустить: остановите текущий процесс dsh и запустите его снова (например, dsh web)","restartHintDebugged":"Процесс DSH запущен под отладчиком. Перезапустите его из IDE или терминала — магазин не может принудительно завершить отлаживаемый хост из интерфейса.","restartHintSupervised":"Этот процесс является собственным сервисным процессом {0}, поэтому перезапуски относятся к нему — перезапуск отсюда завершит процесс передачи вместе с cgroup, и сервис не восстановится. Используйте systemctl restart <ваш юнит>. Если ваш юнит может пережить самостоятельный перезапуск (KillMode=process), включите параметр \"Разрешить перезапуск\" в настройках этого плагина.","restartNow":"Перезапустить","restartTimeout":"Не дождались запуска DeepSeek Harness","restarting":"Перезапуск…","restore":"Восстановить","restoreBootError":"Не удается загрузиться после восстановления:","restoreConfirm":"Восстановление перезапишет настройки этого профиля и переустановит плагины. Продолжить?","restoreContinue":"Продолжить обновление","restoreDone":"Восстановление завершено — перезапустите DeepSeek Harness","restoreFail":"Не удалось восстановить","restoreHint":"Это удалит локальную версию, переустановит версию из каталога и сохранит проверку обновлений. Это действие нельзя отменить — подтвердите ещё раз.","restoreMissing":"Плагинов из копии не установлено: {0}","restoreNameOnlyHint":"В локальной копии не указан исходный репозиторий, поэтому сопоставление выполнено только по имени пакета. Убедитесь, что автор и репозиторий ниже соответствуют ожидаемым. Это заменит локальную версию и не может быть отменено.","restoreNoCatalog":"Этот плагин отсутствует в курируемом каталоге, поэтому его нельзя восстановить. Удалите локальную копию или продолжайте разрабатывать её локально.","restoreNoCatalogTitle":"Восстановление невозможно","restoreNoMatch":"Плагин с таким именем есть в каталоге, но он не соответствует вашему локальному репозиторию. Удалите локальную копию или продолжите локальную разработку.","restoreOnline":"Использовать онлайн-версию","restorePartial":"Восстановление продолжилось, но эти плагины установить не удалось:","restorePreviewDone":"Копия загружена. Проверьте вкладку «Установленные» и запускайте восстановление.","restoreProceed":"Подтвердить восстановление","restoreStart":"Начать восстановление","restoreUnportable":"указывает на абсолютный путь с другой машины, который здесь не существует — перенаправьте его локально или переустановите плагин","rollbackNow":"Откатить","rollbackUnavailable":"Автоматический откат недоступен, так как не удалось проверить точный исходный источник.","rollingBack":"Откат изменений…","searchFavoritesPh":"Поиск в избранном…","searchPh":"Поиск плагинов: уведомления, терминал, память…","setBuildEnv":"Окружение сборки","setBuildEnvHint":"Применяется ко всем процессам каталога (установка, сборка, git), а не только к компилятору. По одной переменной КЛЮЧ=значение на строку, например CC=/usr/bin/gcc-11. PATH и CI управляются маркетом. Очистка восстанавливает стандартный конфиг.","setBuildEnvSave":"Сохранить переменные","setCardDesc":"Просмотр версии и настроек магазина плагинов.","setChannel":"Канал обновлений","setChannelBeta":"Бета","setChannelBetaHint":"Ранний доступ к непроверенным версиям. Влияет только на рынок плагинов.","setChannelDev":"Разработка","setChannelDevHint":"Непроверенные сборки из ветки разработки. Не рекомендуются для общего использования.","setChannelStable":"Стабильный","setChannelStableHint":"Только выпущенные версии.","setChannelSwitch":"Переключиться на","setChannelSwitchHint":"Эта версия ниже установленной.","setGithubProxy":"Ускорение GitHub","setGithubProxyAuto":"Вернуть автовыбор","setGithubProxyAutoHint":"Автоматически выбирает рабочий маршрут и переключается только при сбое.","setGithubProxyCustom":"Пользовательский","setGithubProxyCustomHint":"Сначала пробует ваш маршрут, затем переключается на GitHub напрямую.","setGithubProxyEdit":"Изменить","setGithubProxyInput":"Префикс HTTPS-ускорения","setGithubProxyManagedHint":"Управляется переменной DSHM_GITHUB_PROXY и не может быть изменено здесь.","setGithubProxySave":"Сохранить","setRegion":"Скачать регион","setRegionAuto":"Выбрано на основе проверки сети. Можете изменить в любое время.","setRegionChina":"Китай, материковая часть","setRegionChinaHint":"Быстрее в материковом Китае. Изменяет маршрут загрузки, не источник.","setRegionGlobal":"Глобальный","setRegionGlobalHint":"Загрузки напрямую из npm и GitHub.","setSelfCancel":"Отмена","setSelfConfirm":"Удалить магазин плагинов? Повторная установка возможна только через командную строку.","setSelfFailed":"Сбой операции","setSelfHostManagedHint":"Эта копия установлена десктоп-клиентом; обновляйте её через десктопное приложение.","setSelfPurge":"Также очистить собственные данные магазина","setSelfPurgeOff":"Сохранить данные магазина. Обратите внимание: отключённые плагины останутся выключенными, и после удаления магазина вернуть их через интерфейс будет невозможно.","setSelfPurgeOn":"Будут удалены: списки отключений магазина, пользовательские группы и записи отключений в файле патча профиля — отключённые плагины снова запустятся. Пароли и токены не затрагиваются (магазин не сохраняет их на диске).","setSelfRemove":"Удалить магазин плагинов","setSelfRemoveConfirm":"Удалить","setSelfRemoveHint":"Удалить магазин из этого профиля. Ваши остальные плагины затронуты не будут.","setSelfRemoved":"Удалено","setSelfRemovedHint":"Перезапустите DeepSeek Harness для завершения очистки.","setSelfUpToDate":"Установлена последняя версия","setSelfUpToDateHint":"Актуально, обновление не требуется","setSelfUpdate":"Обновить","setSelfUpdateHint":"При обновлении скачивается новая версия; она вступит в силу после перезапуска.","setSelfUpdateReady":"Доступна новая версия:","setSelfUpdatedHint":"Загружено. Перезапустите DeepSeek Harness, чтобы изменения вступили в силу — клиент обновится сразу, сервер после перезапуска.","setSelfWorking":"Удаление…","shadowNameBanner":"Эта операция оставила одно имя плагина, определенное в двух слоях; после перезапуска загрузится только один:","snapCreate":"Создать снимок","snapCreateFail":"Не удалось создать снимок:","snapCreated":"Снимок создан","snapCreating":"Создание…","snapDelete":"Удалить","snapDeleteConfirm":"Подтвердить удаление","snapDeleteConfirmText":"Этот снимок нельзя будет восстановить после удаления.","snapDeleteFail":"Не удалось удалить снимок:","snapDeleted":"Снимок удалён","snapDeleting":"Удаление…","snapEmpty":"Снимков пока нет","snapFiles":"файлы","snapHint":"Снимки создаются автоматически перед применением изменений; вы также можете создать их вручную и откатиться в любой момент.","snapListFail":"Не удалось загрузить снимки:","snapRestore":"Восстановить","snapRestoreConfirm":"Подтвердите восстановление","snapRestoreConfirmText":"Восстановление перезаписывает текущий package.json профиля и конфигурацию из снимка; это действие нельзя отменить (создайте новый снимок, если не уверены).","snapRestoreFail":"Не удалось восстановить:","snapRestored":"Восстановлено — перезапустите для применения","snapRestoring":"Восстановление…","snapSection":"Снимки & Откат","sortAdded":"Дата выпуска","sortAsc":"По возрастанию","sortDesc":"По убыванию","sortDownloads":"npm загрузки (30д)","sortNewest":"Сначала новые","sortOldest":"Сначала старые","sortStars":"Звёзды","stateBroken":"Установлен, но не прошёл проверку","stateDependencyLibrary":"Библиотека {0}","stateDisabled":"Выключен","stateInert":"Установлен, но не является плагином слоя профиля","stateLive":"Работает (загружен на лету)","stateRestart":"Установлен — перезапустите, чтобы применить","submitPlugin":"Хотите, чтобы ваш плагин был добавлен в список?","subtitle":"Плагины сообщества для DeepSeek Harness","switchOnLabel":"Включено","tabAdvanced":"Дополнительно","tabBackup":"Копия и восстановление","tabBlocked":"Скрытые","tabDiagnostics":"Диагностика","tabDiscover":"Обзор","tabFavorites":"Избранное","tabGroups":"Группы","tabInstalled":"Установленные","tabList":"Список","tabThemes":"Темы","terminalCautionBody":"Это терминальный плагин. Он может не работать в веб-версии.","terminalCautionLink":"Сначала прочтите его инструкцию ↗","terminalCautionStartup":"Он может помешать запуску DeepSeek Harness.","terminalCautionTitle":"Может не работать в веб-приложении","terminalWarn":"Похоже, это плагин для терминала: в веб-профиле он может ничего не делать или даже сломать запуск DeepSeek Harness. Прочитайте его README и ставьте в тот профиль, для которого он написан.","themeActive":"Активна","themeApply":"Применить","themeDeactivate":"Отключить","themeEmpty":"Других тем в каталоге пока нет — следите за обновлениями","themeExitFullscreen":"Выйти из полноэкранного режима","themeFullscreen":"Просмотр в полноэкранном режиме","themePreview":"Предпросмотр","themePreviewCount":"{0} предпросмотры","themePreviewLoading":"Поиск предварительного просмотра…","themePreviewMissing":"Предпросмотр недоступен","themeResultCount":"{0} темы","timeAll":"Всё время","timeDay":"Сутки","timeMonth":"30 дней","timeQuarter":"90 дней","timeWeek":"7 дней","timeYear":"Год","toastReady":"установлен и работает","toastTheme":"теперь активна. Переключить можно в «Настройки → Маркет плагинов → Темы»","toastToggledOff":"теперь выключено — перестало работать сразу","toastToggledOn":"включён","toggleFail":"Переключить не удалось","ungrouped":"Без группы","uninstall":"Удалить","uninstallConfirmDesc":"Плагин будет удалён из текущего профиля.","uninstalling":"Удаление…","upToDate":"Обновлений нет","update":"Обновить","updateAll":"Обновить все","updateAvailableShort":"Новая версия","updateExemptAdd":"Никогда не напоминать об обновлениях","updateExemptFailed":"Не удалось сохранить. Попробуйте снова.","updateExemptHint":"Новые версии останутся в списке. Отключатся только напоминания.","updateExemptMark":"Напоминания отключены","updateExemptOff":"Напоминания об обновлениях снова включены.","updateExemptOn":"Напоминания об обновлениях отключены. Новые версии останутся в списке.","updateExemptRemove":"Возобновить напоминания об обновлениях","updateExemptRestore":"Напоминать снова","updateFail":"Обновить не удалось","updateNoticeIgnored":"Напоминание скрыто для текущего сеанса","updateNow":"Обновить сейчас","updated":"✓ Обновлён — перезапустите, чтобы применить","updatedLive":"✓ Обновлён — работает","updating":"Обновление…","versionHint":"Версия магазина плагинов — укажите её при сообщении об ошибке","viewReplacement":"Посмотреть замену","viewSource":"Исходник","webdav":"WebDAV","webdavNote":"Адрес WebDAV и имя пользователя остаются только в этом браузере; пароль хранится на сервере и вводится заново каждую сессию.","webdavPassword":"Пароль (необязательно)","webdavPreset":"Готовая настройка провайдера","webdavRestore":"Восстановить с WebDAV","webdavUpload":"Выгрузить копию","webdavUrl":"Адрес файла копии","webdavUser":"Имя пользователя (необязательно)"}}
|
|
1
|
+
{"dsh-market":{"actWhy":"Почему не активен?","agentBusyInstall":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед установкой. Установка изменяет файлы плагина, поэтому работающий агент может завершиться с ошибкой в процессе.","agentBusyQueued":"Агент занят — задача добавлена в очередь и выполнится при простое (отмена в «Задачи» в правом верхнем углу).","agentBusyUninstallQueued":"Агент занят — удаление добавлено в очередь и выполнится при простое (отмена в «Задачи» в правом верхнем углу).","agentBusyUpdate":"Агент в настоящее время работает — дождитесь завершения (или отмените его) перед обновлением. Обновления заменяют файлы плагина на месте, поэтому работающий агент может завершиться с ошибкой или смешать версии в процессе выполнения.","agentBusyUpdateQueued":"Агент занят — обновление добавлено в очередь и выполнится при простое (отмена в «Задачи» в правом верхнем углу).","agentQueueStaleGone":"Плагин был установлен при постановке в очередь, но сейчас отсутствует — действие пропущено.","agentQueueStaleNoUpdate":"При постановке в очередь было доступно обновление, сейчас его нет — действие пропущено.","aiFix":"Исправление через AI","aiFixConservative":"Действуйте консервативно: исправляйте только явные ошибки (сбои запуска, дубликаты, несовпадения критических зависимостей). Не выполняйте лишних обновлений; объясняйте каждое действие и ждите подтверждения.","aiFixCopied":"Промпт для исправления скопирован — вставьте его в новую беседу с агентом","aiFixDetect":"Шаг 1 — сначала определитесь. Прежде чем что-либо трогать, убедитесь, что процесс, в котором вы работаете, ЭТОТ экземпляр DeepSeek Harness, к которому относится данный профиль (то есть текущая диагностируемая композиция — это та, в которой вы сейчас находитесь). Проверьте, указывает ли текущий каталог / $DSH_HOME / командная строка на этот профиль или работает ли процесс внутри deepseek-harness. Если не можете определить, считайте, что ответ «да» (безопасный выбор).","aiFixFail":"Буфер обмена недоступен — скопируйте диагностику вручную ниже","aiFixHint":"Передать отчёт диагностики в новую сессию Агента (скопировано в буфер обмена)","aiFixIfSelf":"Если ДА — вы являетесь этим инструментом: никогда не изменяйте текущую конфигурацию, инструмент или основные пакеты на месте (не редактируйте cordis.patch.yml, не меняйте порядок/включайте/отключайте пакеты, не устанавливайте/удаляйте/обновляйте плагины, не переустанавливайте зависимости, не обновляйте/перезапускайте dsh). Три шага: 1) только анализ в режиме чтения, ничего не изменяйте; 2) создайте apply.sh/.bat (изменения для этого исправления) и rollback.sh/.bat (полностью отменяет его); оба идемпотентны — apply создает снимки только если их еще нет и никогда не перезаписывает существующий снимок (если он существует, значит apply уже выполнялся, так что откатитесь или подтвердите перед повторным запуском), а rollback восстанавливает из этого снимка, так что частично выполненный apply все еще можно откатить, а повторный rollback безопасен; 3) дайте мне запустить apply во внешнем терминале и вставьте stdout/stderr обратно вам. Укажите причину и ждите моего подтверждения на каждом шаге — никогда не запускайте это самостоятельно.","aiFixIntro":"Пожалуйста, помоги исправить проблемы с плагинами в DeepSeek Harness (профиль: {0}). Данные диагностики:","aiFixScope":"Если нет — вы процесс вне целевого харнесса: вы можете переупорядочить dsh.profile.bundles, отключить/включить плагины или скорректировать cordis.patch.yml. Официальные бандлы фиксированы; опишите план перед изменениями.","all":"Все","alreadyInstalled":"✓ Установлен","approveBuilds":"Разрешить сборочные скрипты и повторить","autoBackup":"Резервная копия раз в сутки (при открытии маркета)","backTop":"Наверх","backupDone":"Копия загружена","backupDownload":"Выгрузить копию","backupHint":"Включает список плагинов и настройки профиля, но не node_modules. Восстановление ставит плагины заново по списку.","backupImport":"Импортировать и посмотреть","backupLocal":"Локальный файл","backupWorking":"Выполняется…","blockAdd":"Скрыть","blockFailed":"Не удалось обновить список скрытых плагинов. Повторите попытку.","blockMoved":"Удалено из «Обзор». Отменить действие можно во вкладке «Скрытые».","blockRemove":"Показать снова","blockedEmpty":"Скрытых плагинов пока нет.","blockedFilteredEmpty":"Подходящие плагины находятся во вкладке «Скрытые».","blockedTabHint":"Эти расширения не отображаются в «Обзоре», и «Обновить всё» их пропускает.","brokenBundleBanner":"Эти плагины теперь имеют клиентский пакет, который не будет обрабатываться; страница может отображаться пустой после обновления — рекомендуется выполнить откат:","brokenPluginAction":"Найти этот плагин","brokenPluginBody":"Работающий DSH заблокировал обновление, а заменяемая версия уже была повреждена. Маркет удалил плагин из профиля во избежание сбоя при следующем запуске. Директория не затронута — завершите DSH и установите плагин снова.","brokenPluginDismiss":"Больше не показывать","brokenPluginTitle":"Плагин {0} удалён после неудачного обновления","buildsSkipped":"Этому плагину нужны сборочные скрипты; по умолчанию они заблокированы ради безопасности. Разрешите их и переустановите:","busyWait":"Уже выполняется другая операция — дождитесь её окончания (установка, обновление и удаление идут по одной)","cancel":"Отмена","cancelOp":"Отменить","cancelled":"Отменено","cancelling":"Отмена…","capCredentials":"использует ваши API-ключи","capDynamicCode":"загружает и исполняет сторонний код","capEnv":"читает переменные окружения","capFsRead":"читает файлы в проекте","capFsWrite":"записывает файлы в проекте","capHostRuntime":"влияет на работу самого DSH","capInstallScript":"запускает код при установке","capLlm":"обращается к языковым моделям","capNetwork":"устанавливает сетевые соединения","capRedCoreDisable":"отключает компонент DSH ({0})","capRedCoreOverride":"переопределяет компонент DSH ({0})","capRedCoreTamper":"модифицирует компоненты DSH","capRedCoreTamperDetail":"модифицирует компоненты DSH ({0})","capRedCredentialsNetwork":"отправляет запросы в сеть и использует ваши API-ключи","capRedInstallScript":"выполняет собственный скрипт в момент установки без явного запуска плагина","capRedInstallScriptScripts":"выполняет {0} в момент установки без явного запуска плагина","capRedLiteralIp":"подключается к фиксированному IP-адресу {0}","capRedPlaintextHttp":"устанавливает незашифрованное соединение с {0}","capShell":"выполняет системные команды","capSubagent":"запускает собственных субагентов","capabilityNone":"Ничего подозрительного не обнаружено (это не гарантирует абсолютную безопасность).","capabilityNote":"Статический анализ показывает только найденные паттерны. Отсутствие находок не означает полную безопасность.","capabilityScannedAt":"Проверено: {0}","capabilityTitle":"Возможности плагина","capabilityUnchecked":"Ещё не проверено","catConflict":"Конфликты","catDeps":"Зависимости","catInfo":"Информация","catOrder":"Порядок","catRisk":"Риск","catWarn":"Предупреждение","catalogNpmLatest":"последняя в npm","catalogVersionDated":"версия npm на момент последнего обновления каталога ({0}); опубликованные позже релизы появятся после следующего обновления","catalogVersionUndated":"версия npm на момент последнего обновления каталога — каталог обновляется ежедневно, поэтому может отставать от актуальной версии в npm","catsLess":"Свернуть","catsMore":"Ещё","checkBundles":"Порядок загрузки плагинов","checkBundlesEmpty":"Слои плагинов не объявлены","checkCommunity":"сообщество","checkDir":"каталог","checkDuplicates":"Повторяющиеся записи плагинов","checkDuplicatesEmpty":"Повторов нет","checkEntries":"записей (идентификаторы загрузчика)","checkErrors":"Ошибки","checkErrorsEmpty":"Ошибок нет","checkHoisted":"поднят","checkIssues":"Найдены проблемы","checkLoadFail":"Не удалось загрузить диагностику: ","checkLoading":"Анализ профиля…","checkMultiEmpty":"Пакетов ядра в нескольких версиях нет","checkMultiVersion":"Пакеты ядра в нескольких версиях","checkOfficial":"официальный","checkOrderTip":"порядок загрузки бандла сообщества конфликтует с объявленными правилами before/after","checkOrphans":"Неверные записи конфига","checkOrphansEmpty":"Неверных записей нет","checkOverridden":"переопределяет","checkOverrides":"Переопределения","checkOverridesEmpty":"Переопределений нет","checkPatch":"файл патча","checkPeerEmpty":"Расхождений версий зависимостей нет","checkPeerInfo":"{0} записей к сведению (не подтверждено)","checkPeerInfoTier":"Информация о зависимостях","checkPeerInfoTierEmpty":"Нет записей информационных зависимостей","checkPeerMismatches":"Расхождения версий зависимостей","checkPeerOverview":"расхождений: {0} · к сведению: {1}","checkPeerRisk":"Риски зависимостей","checkPeerRiskEmpty":"Нет несоответствий уровней риска зависимостей","checkPeerSatisfied":"Удовлетворены зависимости","checkPeerSatisfiedEmpty":"Нет удовлетворяющих записей зависимостей","checkPeerWarning":"Предупреждения о зависимостях","checkPeerWarningEmpty":"Нет несоответствий зависимостей на уровне предупреждений","checkProfile":"профиль","checkRange":"объявленный диапазон","checkRefresh":"Проверить заново","checkResidualIncomplete":"неполный пакет (нет package.json)","checkResidualTmp":"временная директория pnpm","checkResiduals":"Остаточные директории","checkResidualsEmpty":"Неполных директорий пакетов или временных папок pnpm не найдено.","checkResidualsHint":"Ничто в профиле не ссылается на эти папки, и они не мешают запуску: это остатки прерванного обновления. Завершите DSH и удалите их либо установите плагин заново.","checkResolved":"разрешённая версия","checkSatisfied":"удовлетворено","checkSource":"источник","checkUnknown":"неизвестно","checkUnsatisfied":"не удовлетворено","checkWarnings":"Предупреждения","checkWarningsEmpty":"Предупреждений нет","clearSearch":"Очистить поиск","cmdCopied":"Скопировано","cmdCopy":"Копировать команду установки","cmdDetails":"Команда установки","comments":"Комментарии","commentsError":"Не удалось загрузить комментарии. Проверьте подключение и попробуйте снова.","commentsLoading":"Загрузка комментариев…","commentsLoginHint":"Вход в аккаунт откроется в новой вкладке. После авторизации на GitHub вернитесь сюда — комментарии обновятся.","commentsNote":"Комментарии поступают из GitHub Discussions. Открытие этого подключается к giscus.app и GitHub; для публикации требуется аккаунт GitHub.","commentsOnGitHub":"Прочитайте обсуждение на GitHub","commentsRetry":"Попробуйте снова","commentsTitle":"Комментарии","compatRiskBanner":"Обнаружен риск несовместимости — откройте Диагностику перед перезапуском или откатите эту операцию.","compatRiskBannerNoRollback":"Обнаружен риск несовместимости — откройте Диагностику перед перезапуском.","confirm":"Подтвердить","confirmInstall":"Подтвердить установку","confirmRemove":"Подтверждаете?","confirmTitle":"Установка","confirmWarn":"Плагины — сторонний код сообщества. Устанавливая, вы доверяете этому источнику; сборочные скрипты по умолчанию заблокированы.","conflictBody":"Конфликт с установленным плагином — остаться может только один:","conflictDeclined":"Вы сохранили установленные плагины; этот не был установлен","conflictDetails":"Детали","conflictKeep":"Оставить то, что у меня есть","conflictKeepNote":"Оставить этот","conflictOutcomeInstall":"установить","conflictOutcomeKeep":"оставить","conflictOutcomeRemove":"удалить","conflictOutcomeSkip":"пропустить","conflictReplaceFailed":"Замена не завершена. Перечисленные ниже плагины были удалены и не восстановлены — проверьте их:","conflictReplacing":"Замена…","conflictReverted":"Отменено автоматически; ничего не было изменено","conflictSwap":"Переключиться на этот","conflictSwapNote":"Настройки удалённых плагинов сохраняются, чтобы вы могли установить их позже","conflictTitle":"Невозможно установить: конфликт с установленным плагином","conflictWhy":"cordis отклоняет дерево плагинов, содержащее дублирующиеся идентификаторы записей; сохранение этого плагина предотвратит запуск DeepSeek Harness.","copyPath":"Копировать путь","crashDetails":"Подробности ошибки","crashHint":"Произошла ошибка при отображении маркета. Ваши плагины не затронуты, конфигурация сохранена.\nОбычно помогает перезагрузка страницы. Если ошибка повторяется, экспортируйте журнал и прикрепите его к issue — в нём указано место сбоя.\nТакже проверьте: если в браузере включён автоматический перевод страницы, отключите его и перезагрузите страницу.","crashReload":"Перезагрузить","crashTitle":"Не удалось отобразить маркет плагинов","credsWarning":"Внимание: в копию попадают настройки профиля и файлы, где могут лежать секреты (config.toml, .env и подобные). Локальная выгрузка ничего не вырезает, поэтому выгружайте на WebDAV, которому доверяете.","deprecatedBadge":"Устарел","deprecatedWarn":"Каталог помечает этот плагин как устаревший; новым пользователям ставить его не советуют.","descCollapse":"Показать меньше","descExpand":"Показать больше","descMore":"Показать всё","diagExplain":"Что это","diagExplainText":"Эта страница ищет плагины, конфликтующие друг с другом, несовпадения версий зависимостей и неверный порядок загрузки. Термины:","diagOkAll":"Всё в порядке: конфликтов, проблем с зависимостями и порядком не найдено","diagTermBundle":"бандл — один пакет плагина, применяется по порядку","diagTermEntry":"запись — то, что плагин добавляет в работающую композицию","diagTermOrder":"порядок загрузки — очерёдность активации; более поздний может перекрыть более ранний","diagTermOrphan":"неверная запись — конфиг ссылается на то, чего нет","diagTermPeer":"peer-зависимость — пакет, который плагин ждёт от хоста","diagTermShadow":"перекрытие — старая копия из плагина закрывает более новую хостовую","disable":"Выключить","disabledState":"Выключен","dismiss":"Скрыть","dismissNotice":"Скрыть это уведомление","downloadsChecked":"Источник проверен: {0}.","downloadsCheckedUnknown":"Время проверки источника не указано.","downloadsMeaning":"Загрузок из npm за 30 дней: {0}. Не является числом установок за всё время или уникальных пользователей.","downloadsPeriod":"30 дн.","downloadsWindow":"Период: с {0} по {1}.","downloadsWindowUnknown":"Период не указан.","duplicateNames":"Плагины с одинаковыми именами (к сведению, это не конфликт)","empty":"Подходящих плагинов нет","enable":"Включить","envFix":"Настроить автоматически","envFixFail":"Автоматическая настройка не удалась — выгрузите журнал и пришлите нам файл","envFixing":"Настройка…","envMissing":"Перед установкой плагинов нужен один небольшой компонент","exportLog":"Выгрузить журнал","exportLogFail":"Не удалось выгрузить журнал","exportedLog":"Журнал выгружен: dsh-market-log.txt — приложите его к обращению","exportingLog":"Выгрузка…","favoriteAdd":"Добавить в избранное","favoriteBusy":"Выполняется операция с плагином. Изменение добавлено в очередь — подождите немного.","favoriteFailed":"Не удалось обновить избранное. Попробуйте снова.","favoriteRemove":"Удалить из избранного","favoriteUnavailable":"Избранное недоступно. Обновите страницу или перезапустите dsh web.","favoritesClearStale":"Удалить устаревшее избранное","favoritesClearingStale":"Удаление…","favoritesEmpty":"В избранном пока ничего нет. Добавляйте плагины в разделах Обзор или Темы.","favoritesPluginsSection":"Плагины ({0})","favoritesResultCount":"Избранное: {0}","favoritesStaleEmpty":"Сохранённые записи больше не найдены в каталоге.","favoritesStaleNote":"Записей из избранного нет в каталоге: {0}","favoritesThemesSection":"Темы ({0})","filter":"Фильтр","filterDir":"Порядок","filterHost":"Версия хоста","filterSort":"Поле сортировки","filterTime":"Вышло за","firstPage":"В начало","gist":"GitHub Gist","gistCreated":"Выгружено:","gistErrAuth":"GitHub не авторизовал: токен неверный или истёк, либо gh CLI не залогинен","gistErrInvalid":"Содержимое Gist повреждено или формат копии не поддерживается","gistErrNetwork":"GitHub недоступен — проверьте сеть или прокси","gistErrNoId":"Для обновления нужен идентификатор Gist — заполните поле или переключитесь на «Создать»","gistErrNotFound":"Gist не найден — проверьте идентификатор или ссылку","gistErrRateLimit":"Достигнут лимит GitHub, либо у токена нет права gist","gistErrTimeout":"GitHub не ответил вовремя — проверьте сеть и повторите","gistExport":"Выгрузить в Gist…","gistExportDone":"Выгружено в Gist","gistExportGo":"Выгрузить","gistExportHint":"Отмечено всё — полная копия вместе с настройками; если снять любую галочку, выгрузятся только выбранные плагины, а настройки — по отдельному флажку.","gistExportSelect":"Выберите плагины для выгрузки","gistId":"Идентификатор или ссылка на Gist (при выгрузке оставьте пустым, чтобы создать новый приватный)","gistImport":"Загрузить из Gist","gistIncludeConfig":"Включить файлы настроек (в них могут быть секреты)","gistModeCreate":"Создать новый приватный Gist","gistModeUpdate":"Обновить Gist из поля","gistNoPlugins":"В этом профиле нечего выгружать","gistNote":"В отличие от локальной выгрузки (архив на этой машине), Gist нужен для переноса между машинами: выгрузите в приватный Gist и загрузите на другом компьютере под тем же аккаунтом. Токен живёт только в памяти этой вкладки и никогда не пишется в браузерное хранилище; если залогинен gh CLI или задан DSH_GITHUB_TOKEN, вводить его не нужно. Gist приватный, до 1 МБ на файл.","gistSelectAll":"Выбрать все","gistSelectNone":"Снять выбор","gistSpecLocal":"локально","gistSrcEnv":"переменная DSH_GITHUB_TOKEN","gistSrcGh":"gh CLI","gistSrcToken":"введён вручную","gistToken":"Токен GitHub (только в памяти вкладки — после обновления страницы введите заново; оставьте пустым, чтобы использовать серверный DSH_GITHUB_TOKEN или залогиненный gh CLI)","gistVerify":"Проверить связь","gistVerifySource":"Проверено — источник токена: {0}","goDiagnose":"Открыть диагностику","gotIt":"Понятно","groupAdd":"Добавить плагин","groupAddConfirm":"Добавить {0}","groupAddEmpty":"Все установленные плагины уже в этой группе","groupAddHint":"Добавление в группу не активирует плагины","groupAddPick":"Добавить","groupAddSearchPh":"Поиск плагинов…","groupAddSelected":"Выбрано: {0}","groupAddTheme":"Добавить тему","groupAddTitle":"Добавить в «{0}»","groupAssign":"Назначить","groupChangeTheme":"Сменить тему","groupConfirmDelete":"Удалить группу?","groupCreate":"Создать","groupDelete":"Удалить группу","groupEmpty":"Пока пусто","groupExpand":"Развернуть {0}","groupFold":"Свернуть {0}","groupMembersMeta":"{0} · включено: {1}","groupMixed":"Включена частично","groupMore":"Ещё","groupNamePh":"Название группы","groupNew":"Новая группа","groupOrgHint":"Группы служат только для организации и не влияют на включение/выключение плагинов","groupPickTheme":"Выбрать тему","groupRemove":"Убрать","groupRename":"Переименовать","groupRenameHint":"Изменяется только имя группы — состав и состояние включения плагинов сохраняются","groupRenameSave":"Сохранить","groupRenameTitle":"Переименовать группу","groupSearchEmpty":"Подходящих плагинов не найдено","groupStateBroken":"Проверка не пройдена","groupStateInert":"Не активен","groupStateRestart":"Перезапустите для применения","groupThemeBadge":"Тема","groupThemeCurrent":"Текущая","groupThemeEmpty":"Нет тем вне групп","groupThemeHint":"Группа содержит одну тему. Выбор темы не включает её автоматически. Замена темы перемещает прежнюю тему из группы.","groupThemeRemove":"Удалить тему","groupThemeTaken":"Уже содержит тему","groupThemeTitle":"Выберите тему для «{0}»","groupThemeUse":"Применить","heldReleaseAction":"Всё равно установить {0}","heldReleaseNotice":"Установлено, но не самое новое: параметр minimumReleaseAge для этого профиля удерживает релиз {0}, поэтому была установлена версия {1}.","hostAll":"Показать все","hostCompatible":"Совместимо с текущим DSH {0}","hostDependencyMore":"ещё находок пропущено: {0}","hostDependencyWarning":"Плагин перечисляет в зависимостях известные общие пакеты хоста DSH. Это может перекрыть хостовую версию; проверка смотрит только манифест и не подтверждает, что в рантайме появился дубль:","hostDetecting":"Определение версии хоста…","hostFilterActive":"Фильтр для DSH {0}; не объявленные плагины остаются видимыми","hostFilterLoading":"Проверка требований хоста {0}/{1}; не объявленные плагины остаются видимыми","hostIncompatibleAnyway":"Всё равно обновить","hostIncompatibleBody":"Плагин {plugin} требует DSH версии {requirement}, а на этом сервере запущен {host}. Установка, скорее всего, нарушит работу плагина, и единственным выходом будет ручной откат версии.\nНичего не было изменено — плагин остаётся на текущей версии.\nЕсли вы уверены, что номер версии определён неверно, вы можете продолжить обновление.","hostIncompatibleBodyInstall":"{plugin} указывает, что требует DSH {requirement}, а у вас установлена версия {host}. Установка, скорее всего, приведёт к неработоспособности плагина.\nНичего не было установлено.\nЕсли вы уверены, что номер версии некорректен (например, бандл DSH не сообщает свою версию), вы можете выполнить установку в любом случае.","hostIncompatibleCancel":"Отменить установку","hostIncompatibleFoundInstall":"Вы можете установить {version} — в ней заявлена поддержка этой версии DSH.","hostIncompatibleFoundUpdate":"Вы можете обновить до {version} — в ней заявлена поддержка этой версии DSH.","hostIncompatibleInstallAnyway":"Установить в любом случае","hostIncompatibleInstallCompat":"Установить {version}","hostIncompatibleKeep":"Оставить текущую версию","hostIncompatibleNoCompat":"Ни в одной версии не заявлена поддержка этой версии DSH.","hostIncompatibleRetry":"Повторить попытку","hostIncompatibleSearchFailed":"Не удалось найти совместимые версии.","hostIncompatibleSearching":"Поиск версии с поддержкой текущей версии DSH…","hostIncompatibleTitle":"Для этого релиза требуется более новая версия DSH","hostIncompatibleUnknown":"неизвестная версия","hostIncompatibleUpdateCompat":"Обновить до {version}","hostRequirement":"DSH {0}","hostRequirementLoading":"Чтение требований хоста…","hostRequirementUnavailable":"Требования к хосту неизвестны","hostRequirementUndeclared":"Требования к хосту не объявлены","hostStatusCompatible":"Требования к хосту соблюдены (заявленные)","hostStatusIncompatible":"Подтверждена несовместимость с этой версией DSH","hostUnknown":"Версия хоста неизвестна","hostUpdateHint":"Установлено и обновляется десктоп-клиентом; маркет только отображает статус","hostUpdateReady":"Новая версия {0}","hotBanner":"плагины готовы — обновите страницу, чтобы ими пользоваться","ignoreAllUpdateNotices":"Игнорировать все при этом запуске","ignoreUpdateNotice":"Игнорировать при этом запуске","install":"Установить","installCaution":"Перед установкой","installFail":"Установить не удалось","installReplacement":"Установить замену","installedBadge":"✓ Установлен","installedEmpty":"Плагинов сообщества пока нет — загляните во вкладку «Обзор»","installing":"Установка…","lastPage":"В конец","lightboxClose":"Закрыть предпросмотр","lightboxNext":"Следующий","lightboxPrev":"Предыдущий","linkedDev":"подключён как разработка","loadFail":"Не удалось загрузить каталог плагинов, попробуйте позже","loadRetry":"Повторить","loading":"Загрузка каталога…","localOnly":"Адрес WebDAV и учётные данные остаются только в этом браузере.","marketNoToggle":"Сам маркет выключить нельзя","marketUpdate":"Доступно обновление маркета — обновить","migrateContinue":"Подтвердить источник npm","migrateCurrentSource":"Текущий источник","migrateDescription":"Это изменит источник установки плагина, а не только его версию.","migrateFail":"Сбой миграции источника","migrateNpm":"Использовать версию из npm","migrateTargetSource":"Новый источник npm","migrateTitle":"Использовать версию из npm?","migrateWarning":"Пакет npm может поддерживаться другим издателем. Продолжайте, только если доверяете этому сопоставлению каталога.","nav":"Маркет плагинов","nextPage":"Дальше","noGroups":"Групп пока нет — создайте","notInstalled":"Не установлен","noteAdd":"Заметка","noteEdit":"Редактировать заметку","noteMine":"Моя заметка","notePlaceholder":"Опишите это своими словами. Это заменит описание автора.","noteSave":"Сохранить","noteSeeMine":"Вернуться к моей заметке","noteSeeTheirs":"Показать описание автора","noteTheirs":"Оригинал","notesCommits":"Коммиты","notesCommitsRecent":"Последние коммиты (могут не совпадать с установленной версией — только для справки)","notesLink":"Что изменилось","notesLoadFail":"Обновления сейчас недоступны — попробуйте позже.","notesNone":"Этот плагин не публикует заметки об обновлениях.","notesNpm":"Время публикации версии","notesRelease":"Заметки о выпуске","opBlockedCard":"Невозможно установить · подробности","opClear":"Очистить выполненные","opClose":"Свернуть","opDequeue":"Удалить из очереди","opDone":"Готово","opDoneRefresh":"Установлено · обновите страницу для применения","opEmpty":"Нет операций в процессе выполнения","opEmptyHint":"Здесь отображается прогресс установки, обновления и удаления","opInstalling":"Установка","opKind_install":"Установить","opKind_uninstall":"Удалить","opKind_update":"Обновить","opLeaveHint":"Вы можете покинуть эту страницу; вы получите уведомление, когда процесс завершится","opLeaveHintAgents":"Запустится автоматически, когда агенты перейдут в режим ожидания","opNeedsChoice":"Не удалось установить · откат выполнен автоматически, ничего не изменилось","opNeedsYou":"нужен вам","opQueued":"В очереди","opQueuedAhead":"впереди:","opQueuedWaitingAgents":"ожидание завершения {0} активных сессий","opRetry":"Повторить","opRunNow":"Запустить сейчас","opRunning":"Работает","opTitle":"Задачи","opWaitingAgents":"Задач в ожидании освобождения агентов: {0}","orderAlreadyOptimal":"Текущий порядок уже оптимален и удовлетворяет всем зависимостям плагинов","orderApplied":"✓ Применено — перезапустите для активации","orderApply":"Применить порядок","orderAutoSort":"Автосортировка","orderConflicts":"конфликты before/after в текущем порядке","orderDiffHint":"Этот порядок изменит композицию: {0} переопределений, {1} изолированных, {2} дубликатов","orderDown":"↓","orderDrag":"Перетащите для изменения порядка","orderDragHint":"Перетаскивайте ⠿ для сортировки. Изменения сохраняются при нажатии «Применить порядок».","orderReset":"Сбросить черновик","orderSection":"Порядок загрузки","orderSuggestApply":"Применить рекомендуемый порядок","orderSuggestHint":"Рекомендуемый порядок (автосортировка по правилам before/after):","orderTrialFail":"Ошибка статической валидации композиции: {0}","orderUp":"↑","orphanBundle":"⚠️ Следующий запуск завершится ошибкой: профиль объявляет эти пакеты, но они не установлены. Переустановите их или удалите из dsh.profile.bundles в файле package.json профиля:","orphanIdRequired":"нет идентификатора","orphanInsertNotArray":"неверный формат","orphanInsertTargetMissing":"цель не найдена","orphanInsertTargetNotGroup":"цель не является группой","orphanNameMismatch":"имя не совпадает","orphanPatchTargetMissing":"цель не найдена","orphanReasonOther":"другое","packagesDone":"обработано пакетов: {0}","pageInfo":"Страница {0} из {1}","partialNote":"Отменено — часть изменений уже применена","patchDisabled":"Выключен патчем","patchForced":"Включён патчем","pathCopied":"Скопировано","peerInfoUnverified":"непроверенный","peerRiskAboveMax":"выше явного максимума","peerRiskBelowMin":"ниже заявленного минимума","peerWarnAboveMax":"выше объявленной верхней границы","peerWarnOptional":"необязательный участник","perPage":"На странице","phaseBuilding":"Сборочные скрипты","phaseDownloading":"Загрузка","phaseLinking":"Связывание","phaseResolving":"Разрешение зависимостей","presetApplied":"Применено — перезапустите, чтобы применить","presetApply":"Применить","presetBundleCount":"{0} наборов","presetDelete":"Удалить","presetDeleted":"Пресет удалён","presetDisable":"отключить плагины {0}","presetEmpty":"Нет сохранённых пресетов","presetEnable":"включить плагины {0}","presetFail":"Не удалось выполнить предустановленную операцию:","presetHint":"Сохраните текущий порядок пакетов и список отключенных как пресет и переключайтесь в любое время; применение запускает проверку перед началом пробного периода и сначала создает снимок.","presetListFail":"Не удалось загрузить пресеты:","presetName":"Название пресета","presetNameEmpty":"Введите имя предустановки","presetNoop":"нет изменений","presetPreview":"Предпросмотр","presetPreviewFail":"Не удалось выполнить предварительный просмотр:","presetPreviewTitle":"Применение этого пресета приведёт к:","presetReorder":"переупорядочить {0} наборы","presetSave":"Сохранить текущее состояние","presetSaved":"Пресет сохранён","presetSaving":"Сохранение…","presetSection":"Пресеты плагинов","prevPage":"Назад","progressHint":"Первая установка скачивает и разрешает зависимости — крупные плагины занимают 1–3 минуты","published":"выпущен","queuedBadge":"В очереди","queuedInstallGone":"Плагин удалён из каталога (список обновился или вы перешли на другую страницу). Найдите плагин в каталоге и повторите установку.","queuedRunBlocked":"Активно сессий: {0}. Операция отложена: замена файлов работающего плагина может привести к падению агента. Выполнение начнётся при простое (либо отмените задачу в «Задачи»).","queuedRunBusy":"Другая операция установки, обновления или удаления ещё выполняется, поэтому запуск отложен: задача остаётся в очереди и начнётся автоматически после завершения текущей — повторно нажимать не нужно.","readme":"README","reconciledNote":"Удалено, но pnpm сообщил об ошибке при завершении (обычно это заблокированный файл). Профиль уже согласован — повторная попытка не требуется.","recoveryApply":"Сохранить и перезапустить","recoveryApplyFailed":"Сбой записи: ","recoveryApplying":"Запись и перезапуск…","recoveryBanner":"Сбой загрузки: ","recoveryBlamedHint":"Плагины, отмеченные красным, указаны в журнале этого запуска; снятие галочки отключит их при следующем старте.","recoveryCarrier":"disable-carrier","recoveryLead":"Перезапуск не удался, процесс DSH завершился. Отметьте плагины, которые нужно включить при следующем старте; вызвавшие сбой плагины выделены красным и сняты с загрузки.","recoveryLogPath":"Полный журнал: ","recoveryNoBlameHint":"В журнале не указан конкретный плагин; ниже показаны текущие параметры, доступные для настройки.","recoveryNoSummary":"В журнале не указана причина","recoveryNotToggleable":"нельзя переключить здесь","recoveryOpening":"Чтение сведений о сбое…","recoveryOption":"Настроить плагины","recoveryRawLog":"Необработанный вывод DSH (хвост лога)","recoveryRestarting":"Перезапуск: эта страница обновится после запуска DSH; если сбой повторится, вы вернётесь сюда с новой ошибкой.","recoveryStandalone":"Открыть отдельную страницу восстановления","recoveryTimeout":"Истекло время ожидания запуска DeepSeek Harness. «Настроить плагины» покажет, какой из них мешает запуску.","recoveryTitle":"Сбой запуска — настройка плагинов","recoveryUnmatched":"Указаны DSH, но не переключаются здесь: ","recoveryWriteFailed":"Последний выбор не удалось записать полностью, перезапуск отменён: ","refresh":"Обновить","refreshBanner":"изменения применены — обновите страницу, чтобы их увидеть","replacementHint":"Каталог предлагает","repoLink":"Посмотреть репозиторий на GitHub","restartBanner":"изменения внесены — перезапустите DeepSeek Harness","restartFail":"Перезапустить не удалось","restartHint":"Как перезапустить: остановите текущий процесс dsh и запустите его снова (например, dsh web)","restartHintDebugged":"Процесс DSH запущен под отладчиком. Перезапустите его из IDE или терминала — магазин не может принудительно завершить отлаживаемый хост из интерфейса.","restartHintSupervised":"Этот процесс является собственным сервисным процессом {0}, поэтому перезапуски относятся к нему — перезапуск отсюда завершит процесс передачи вместе с cgroup, и сервис не восстановится. Используйте systemctl restart <ваш юнит>. Если ваш юнит может пережить самостоятельный перезапуск (KillMode=process), включите параметр \"Разрешить перезапуск\" в настройках этого плагина.","restartNow":"Перезапустить","restartTimeout":"Не дождались запуска DeepSeek Harness","restarting":"Перезапуск…","restore":"Восстановить","restoreBootError":"Не удается загрузиться после восстановления:","restoreConfirm":"Восстановление перезапишет настройки этого профиля и переустановит плагины. Продолжить?","restoreContinue":"Продолжить обновление","restoreDone":"Восстановление завершено — перезапустите DeepSeek Harness","restoreFail":"Не удалось восстановить","restoreHint":"Это удалит локальную версию, переустановит версию из каталога и сохранит проверку обновлений. Это действие нельзя отменить — подтвердите ещё раз.","restoreMissing":"Плагинов из копии не установлено: {0}","restoreNameOnlyHint":"В локальной копии не указан исходный репозиторий, поэтому сопоставление выполнено только по имени пакета. Убедитесь, что автор и репозиторий ниже соответствуют ожидаемым. Это заменит локальную версию и не может быть отменено.","restoreNoCatalog":"Этот плагин отсутствует в курируемом каталоге, поэтому его нельзя восстановить. Удалите локальную копию или продолжайте разрабатывать её локально.","restoreNoCatalogTitle":"Восстановление невозможно","restoreNoMatch":"Плагин с таким именем есть в каталоге, но он не соответствует вашему локальному репозиторию. Удалите локальную копию или продолжите локальную разработку.","restoreOnline":"Использовать онлайн-версию","restorePartial":"Восстановление продолжилось, но эти плагины установить не удалось:","restorePreviewDone":"Копия загружена. Проверьте вкладку «Установленные» и запускайте восстановление.","restoreProceed":"Подтвердить восстановление","restoreStart":"Начать восстановление","restoreUnportable":"указывает на абсолютный путь с другой машины, который здесь не существует — перенаправьте его локально или переустановите плагин","rollbackNow":"Откатить","rollbackUnavailable":"Автоматический откат недоступен, так как не удалось проверить точный исходный источник.","rollingBack":"Откат изменений…","searchFavoritesPh":"Поиск в избранном…","searchPh":"Поиск плагинов: уведомления, терминал, память…","setBuildEnv":"Окружение сборки","setBuildEnvHint":"Применяется ко всем процессам каталога (установка, сборка, git), а не только к компилятору. По одной переменной КЛЮЧ=значение на строку, например CC=/usr/bin/gcc-11. PATH и CI управляются маркетом. Очистка восстанавливает стандартный конфиг.","setBuildEnvSave":"Сохранить переменные","setCardDesc":"Просмотр версии и настроек магазина плагинов.","setChannel":"Канал обновлений","setChannelBeta":"Бета","setChannelBetaHint":"Ранний доступ к непроверенным версиям. Влияет только на рынок плагинов.","setChannelDev":"Разработка","setChannelDevHint":"Непроверенные сборки из ветки разработки. Не рекомендуются для общего использования.","setChannelStable":"Стабильный","setChannelStableHint":"Только выпущенные версии.","setChannelSwitch":"Переключиться на","setChannelSwitchHint":"Эта версия ниже установленной.","setGithubProxy":"Ускорение GitHub","setGithubProxyAuto":"Вернуть автовыбор","setGithubProxyAutoHint":"Автоматически выбирает рабочий маршрут и переключается только при сбое.","setGithubProxyCustom":"Пользовательский","setGithubProxyCustomHint":"Сначала пробует ваш маршрут, затем переключается на GitHub напрямую.","setGithubProxyEdit":"Изменить","setGithubProxyInput":"Префикс HTTPS-ускорения","setGithubProxyManagedHint":"Управляется переменной DSHM_GITHUB_PROXY и не может быть изменено здесь.","setGithubProxySave":"Сохранить","setRegion":"Скачать регион","setRegionAuto":"Выбрано на основе проверки сети. Можете изменить в любое время.","setRegionChina":"Китай, материковая часть","setRegionChinaHint":"Быстрее в материковом Китае. Изменяет маршрут загрузки, не источник.","setRegionGlobal":"Глобальный","setRegionGlobalHint":"Загрузки напрямую из npm и GitHub.","setSelfCancel":"Отмена","setSelfConfirm":"Удалить магазин плагинов? Повторная установка возможна только через командную строку.","setSelfFailed":"Сбой операции","setSelfHostManagedHint":"Эта копия установлена десктоп-клиентом; обновляйте её через десктопное приложение.","setSelfPurge":"Также очистить собственные данные магазина","setSelfPurgeOff":"Сохранить данные магазина. Обратите внимание: отключённые плагины останутся выключенными, и после удаления магазина вернуть их через интерфейс будет невозможно.","setSelfPurgeOn":"Будут удалены: списки отключений магазина, пользовательские группы и записи отключений в файле патча профиля — отключённые плагины снова запустятся. Пароли и токены не затрагиваются (магазин не сохраняет их на диске).","setSelfRemove":"Удалить магазин плагинов","setSelfRemoveConfirm":"Удалить","setSelfRemoveHint":"Удалить магазин из этого профиля. Ваши остальные плагины затронуты не будут.","setSelfRemoved":"Удалено","setSelfRemovedHint":"Перезапустите DeepSeek Harness для завершения очистки.","setSelfUpToDate":"Установлена последняя версия","setSelfUpToDateHint":"Актуально, обновление не требуется","setSelfUpdate":"Обновить","setSelfUpdateHint":"При обновлении скачивается новая версия; она вступит в силу после перезапуска.","setSelfUpdateReady":"Доступна новая версия:","setSelfUpdatedHint":"Загружено. Перезапустите DeepSeek Harness, чтобы изменения вступили в силу — клиент обновится сразу, сервер после перезапуска.","setSelfWorking":"Удаление…","shadowNameBanner":"Эта операция оставила одно имя плагина, определенное в двух слоях; после перезапуска загрузится только один:","snapCreate":"Создать снимок","snapCreateFail":"Не удалось создать снимок:","snapCreated":"Снимок создан","snapCreating":"Создание…","snapDelete":"Удалить","snapDeleteConfirm":"Подтвердить удаление","snapDeleteConfirmText":"Этот снимок нельзя будет восстановить после удаления.","snapDeleteFail":"Не удалось удалить снимок:","snapDeleted":"Снимок удалён","snapDeleting":"Удаление…","snapEmpty":"Снимков пока нет","snapFiles":"файлы","snapHint":"Снимки создаются автоматически перед применением изменений; вы также можете создать их вручную и откатиться в любой момент.","snapListFail":"Не удалось загрузить снимки:","snapRestore":"Восстановить","snapRestoreConfirm":"Подтвердите восстановление","snapRestoreConfirmText":"Восстановление перезаписывает текущий package.json профиля и конфигурацию из снимка; это действие нельзя отменить (создайте новый снимок, если не уверены).","snapRestoreFail":"Не удалось восстановить:","snapRestored":"Восстановлено — перезапустите для применения","snapRestoring":"Восстановление…","snapSection":"Снимки & Откат","sortAdded":"Дата выпуска","sortAsc":"По возрастанию","sortDesc":"По убыванию","sortDownloads":"npm загрузки (30д)","sortNewest":"Сначала новые","sortOldest":"Сначала старые","sortStars":"Звёзды","stateBroken":"Установлен, но не прошёл проверку","stateDependencyLibrary":"Библиотека {0}","stateDisabled":"Выключен","stateIncompatible":"Установлен — несовместим с этой версией DSH","stateInert":"Установлен, но не является плагином слоя профиля","stateLive":"Работает (загружен на лету)","stateRestart":"Установлен — перезапустите, чтобы применить","submitPlugin":"Хотите, чтобы ваш плагин был добавлен в список?","subtitle":"Плагины сообщества для DeepSeek Harness","switchOnLabel":"Включено","tabAdvanced":"Дополнительно","tabBackup":"Копия и восстановление","tabBlocked":"Скрытые","tabDiagnostics":"Диагностика","tabDiscover":"Обзор","tabFavorites":"Избранное","tabGroups":"Группы","tabInstalled":"Установленные","tabList":"Список","tabThemes":"Темы","terminalCautionBody":"Это терминальный плагин. Он может не работать в веб-версии.","terminalCautionLink":"Сначала прочтите его инструкцию ↗","terminalCautionStartup":"Он может помешать запуску DeepSeek Harness.","terminalCautionTitle":"Может не работать в веб-приложении","terminalWarn":"Похоже, это плагин для терминала: в веб-профиле он может ничего не делать или даже сломать запуск DeepSeek Harness. Прочитайте его README и ставьте в тот профиль, для которого он написан.","themeActive":"Активна","themeApply":"Применить","themeDeactivate":"Отключить","themeEmpty":"Других тем в каталоге пока нет — следите за обновлениями","themeExitFullscreen":"Выйти из полноэкранного режима","themeFullscreen":"Просмотр в полноэкранном режиме","themePreview":"Предпросмотр","themePreviewCount":"{0} предпросмотры","themePreviewLoading":"Поиск предварительного просмотра…","themePreviewMissing":"Предпросмотр недоступен","themeResultCount":"{0} темы","timeAll":"Всё время","timeDay":"Сутки","timeMonth":"30 дней","timeQuarter":"90 дней","timeWeek":"7 дней","timeYear":"Год","toastReady":"установлен и работает","toastTheme":"теперь активна. Переключить можно в «Настройки → Маркет плагинов → Темы»","toastToggledOff":"теперь выключено — перестало работать сразу","toastToggledOn":"включён","toggleFail":"Переключить не удалось","ungrouped":"Без группы","uninstall":"Удалить","uninstallConfirmDesc":"Плагин будет удалён из текущего профиля.","uninstalling":"Удаление…","upToDate":"Обновлений нет","update":"Обновить","updateAll":"Обновить все","updateAvailableShort":"Новая версия","updateExemptAdd":"Никогда не напоминать об обновлениях","updateExemptFailed":"Не удалось сохранить. Попробуйте снова.","updateExemptHint":"Новые версии останутся в списке. Отключатся только напоминания.","updateExemptMark":"Напоминания отключены","updateExemptOff":"Напоминания об обновлениях снова включены.","updateExemptOn":"Напоминания об обновлениях отключены. Новые версии останутся в списке.","updateExemptRemove":"Возобновить напоминания об обновлениях","updateExemptRestore":"Напоминать снова","updateFail":"Обновить не удалось","updateNoticeIgnored":"Напоминание скрыто для текущего сеанса","updateNow":"Обновить сейчас","updated":"✓ Обновлён — перезапустите, чтобы применить","updatedLive":"✓ Обновлён — работает","updating":"Обновление…","versionHint":"Версия магазина плагинов — укажите её при сообщении об ошибке","viewReplacement":"Посмотреть замену","viewSource":"Исходник","webdav":"WebDAV","webdavNote":"Адрес WebDAV и имя пользователя остаются только в этом браузере; пароль хранится на сервере и вводится заново каждую сессию.","webdavPassword":"Пароль (необязательно)","webdavPreset":"Готовая настройка провайдера","webdavRestore":"Восстановить с WebDAV","webdavUpload":"Выгрузить копию","webdavUrl":"Адрес файла копии","webdavUser":"Имя пользователя (необязательно)"}}
|