@goodandready/dsh-russian-lang 0.3.11 → 0.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/client.js +6 -5
- package/lib/client.template.js +1 -0
- package/lib/locales/plugins/10-kanban.json +1 -1
- package/lib/locales/plugins/23-moa.json +1 -1
- package/lib/locales/plugins/34-key-rotation.json +1 -1
- package/lib/locales/plugins/40-clinebot.json +1 -1
- package/lib/locales/plugins/46-memory-brain.json +1 -1
- package/lib/locales/plugins/49-dsml-guard.json +1 -1
- package/lib/locales/plugins/60-model-sync.json +1 -1
- package/lib/locales/plugins/65-subscriptions.json +1 -1
- package/lib/locales/plugins/66-tts.json +1 -1
- package/lib/locales/plugins/67-voice.json +1 -1
- package/lib/locales/plugins/83-smart-restart.json +1 -1
- package/lib/locales/plugins/84-session-search.json +1 -0
- package/package.json +1 -1
- package/lib/locales/plugins/63-agent-orchestrator.json +0 -1
package/lib/client.js
CHANGED
|
@@ -545,7 +545,8 @@ const value = scope.getSnapshot().value || {}
|
|
|
545
545
|
if (!!value.enabled !== wantRu) {const r = scope.set('enabled', wantRu)
|
|
546
546
|
if (r && typeof r.catch === 'function') {r.catch((err) => {console.warn('dsh-russian-lang: scope.set enabled failed', err && err.message || err)
|
|
547
547
|
})
|
|
548
|
-
}}} catch (err) {
|
|
548
|
+
}}} catch (err) {void err;
|
|
549
|
+
}}
|
|
549
550
|
ctx.effect(() => {try { return runtime.subscribe(syncFlag) } catch (err) { return undefined }}, 'dsh-russian-lang: sync-flag')
|
|
550
551
|
const activate = () => {try {if (runtime.getLocale().active === 'ru') return
|
|
551
552
|
runtime.setLocale('ru')
|
|
@@ -1113,7 +1114,7 @@ setTimeout(() => { copyKeyBtn.textContent = '📋' }, 1500)
|
|
|
1113
1114
|
}}
|
|
1114
1115
|
const copyReportBtn = modal.querySelector('.rl-copy-report-btn')
|
|
1115
1116
|
if (copyReportBtn) {copyReportBtn.onclick = () => {const snippet = typeof generateBugReportSnippet === 'function'
|
|
1116
|
-
? generateBugReportSnippet({ key: k, ns, original: origText || rawText, current: rawText, override: textarea.value.trim(), pkgVersion: '0.3.
|
|
1117
|
+
? generateBugReportSnippet({ key: k, ns, original: origText || rawText, current: rawText, override: textarea.value.trim(), pkgVersion: '0.3.13' })
|
|
1117
1118
|
: ('### Репорт: ' + (k || rawText) + '\n- Исходный: ' + (origText || rawText) + '\n- Перевод: ' + textarea.value.trim())
|
|
1118
1119
|
try { navigator.clipboard.writeText(snippet) } catch (err) { void err; }
|
|
1119
1120
|
copyReportBtn.textContent = '✓ Скопировано'
|
|
@@ -1400,7 +1401,7 @@ const [snap, setSnap] = React.useState(() => (scope && scope.getSnapshot ? scope
|
|
|
1400
1401
|
const [ruActive, setRuActive] = React.useState(() => { try { return runtime.getLocale().active === 'ru' } catch (e) { return false } })
|
|
1401
1402
|
const [typo, setTypoState] = React.useState(() =>
|
|
1402
1403
|
(snap.value && snap.value.typography) || {})
|
|
1403
|
-
const [upStatus, setUpStatus] = React.useState({currentVersion: '0.3.
|
|
1404
|
+
const [upStatus, setUpStatus] = React.useState({currentVersion: '0.3.13',latestVersion: undefined,updateAvailable: false
|
|
1404
1405
|
})
|
|
1405
1406
|
const [upLoading, setUpLoading] = React.useState(false)
|
|
1406
1407
|
const [upMsg, setUpMsg] = React.useState(null)
|
|
@@ -1493,7 +1494,7 @@ scope.set('agentPromptPreset', val)
|
|
|
1493
1494
|
} catch (err) { console.warn('dsh-russian-lang: set agentPromptPreset failed', err) }}},React.createElement('option', { value: 'technical_expert' }, t('presetExpert')),React.createElement('option', { value: 'tech_writer' }, t('presetWriter')),React.createElement('option', { value: 'concise' }, t('presetConcise')),React.createElement('option', { value: 'code_reviewer' }, t('presetReviewer')),React.createElement('option', { value: 'architect' }, t('presetArchitect')),React.createElement('option', { value: 'tutor' }, t('presetTutor')))),presetInfo ? React.createElement('div', { className: 'rl-preview-box' },React.createElement('div', { style: { fontWeight: 600, marginBottom: '4px', color: 'var(--dsw-alias-label-primary)' } }, '💬 ' + presetInfo.label + ':'),presetInfo.text
|
|
1494
1495
|
) : null
|
|
1495
1496
|
) : null
|
|
1496
|
-
),React.createElement('div', { className: 'rl-section-card' },React.createElement('div', { className: 'rl-section-title' },React.createElement('span', null, t('secUpdater')),React.createElement('span', { className: 'rl-badge ' + (upStatus.updateAvailable ? 'rl-badge-warn' : 'rl-badge-ok') },upStatus.updateAvailable ? t('badgeUpdateAvailable') : t('badgeUpToDate'))),React.createElement('div', { className: 'rl-section-desc' }, t('secUpdaterDesc')),React.createElement('div', { className: 'rl-item-card' },React.createElement('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', flexWrap: 'wrap', gap: '8px' } },React.createElement('div', null,React.createElement('div', { style: { fontWeight: 600, color: 'var(--dsw-alias-label-primary)' } },t('updaterCurrent').replace('{version}', upStatus.currentVersion || '0.3.
|
|
1497
|
+
),React.createElement('div', { className: 'rl-section-card' },React.createElement('div', { className: 'rl-section-title' },React.createElement('span', null, t('secUpdater')),React.createElement('span', { className: 'rl-badge ' + (upStatus.updateAvailable ? 'rl-badge-warn' : 'rl-badge-ok') },upStatus.updateAvailable ? t('badgeUpdateAvailable') : t('badgeUpToDate'))),React.createElement('div', { className: 'rl-section-desc' }, t('secUpdaterDesc')),React.createElement('div', { className: 'rl-item-card' },React.createElement('div', { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', flexWrap: 'wrap', gap: '8px' } },React.createElement('div', null,React.createElement('div', { style: { fontWeight: 600, color: 'var(--dsw-alias-label-primary)' } },t('updaterCurrent').replace('{version}', upStatus.currentVersion || '0.3.13')),upStatus.updateAvailable
|
|
1497
1498
|
? React.createElement('div', { style: { color: 'var(--dsw-alias-state-warning-primary)', marginTop: '2px', fontWeight: 500 } },t('updaterLatest').replace('{version}', upStatus.latestVersion || ''))
|
|
1498
1499
|
: React.createElement('div', { style: { color: 'var(--dsw-alias-label-secondary)', marginTop: '2px' } },t('updaterUpToDate'))),upStatus.updateAvailable
|
|
1499
1500
|
? React.createElement('button', {type: 'button',className: 'rl-btn rl-btn-primary',disabled: upLoading,onClick: triggerUpdate,}, upLoading ? t('updaterUpdating') : t('updaterBtn').replace('{version}', upStatus.latestVersion || ''))
|
|
@@ -1531,7 +1532,7 @@ if (!input) return
|
|
|
1531
1532
|
try {const parsed = JSON.parse(input)
|
|
1532
1533
|
if (parsed && typeof parsed === 'object') {const merged = Object.assign({}, overrides, parsed)
|
|
1533
1534
|
scope.set('overrides', merged)
|
|
1534
|
-
}} catch (err) { alert('Ошибка разбора JSON: ' + (err && err.message || err)) }}}, '📥 Импорт JSON'))),React.createElement('div', { className: 'rl-section-card' },React.createElement('div', { className: 'rl-section-title' },React.createElement('span', null, t('secSupport')),React.createElement('span', { className: 'rl-badge rl-badge-ok' }, '🟢 100.0%')),React.createElement('div', { className: 'rl-section-desc' }, t('secSupportDesc')),React.createElement('div', { className: 'rl-grid-3' },React.createElement('div', { className: 'rl-stat-box' },React.createElement('div', { className: 'rl-stat-val' }, '113'),React.createElement('div', { className: 'rl-stat-label' }, t('statNamespaces'))),React.createElement('div', { className: 'rl-stat-box' },React.createElement('div', { className: 'rl-stat-val' }, '1 225'),React.createElement('div', { className: 'rl-stat-label' }, t('statCoreKeys'))),React.createElement('div', { className: 'rl-stat-box' },React.createElement('div', { className: 'rl-stat-val' }, '5 924'),React.createElement('div', { className: 'rl-stat-label' }, t('statPluginKeys')))),React.createElement('div', { className: 'rl-actions-row' },React.createElement('a', {href: makeIssueUrl({}, '0.3.
|
|
1535
|
+
}} catch (err) { alert('Ошибка разбора JSON: ' + (err && err.message || err)) }}}, '📥 Импорт JSON'))),React.createElement('div', { className: 'rl-section-card' },React.createElement('div', { className: 'rl-section-title' },React.createElement('span', null, t('secSupport')),React.createElement('span', { className: 'rl-badge rl-badge-ok' }, '🟢 100.0%')),React.createElement('div', { className: 'rl-section-desc' }, t('secSupportDesc')),React.createElement('div', { className: 'rl-grid-3' },React.createElement('div', { className: 'rl-stat-box' },React.createElement('div', { className: 'rl-stat-val' }, '113'),React.createElement('div', { className: 'rl-stat-label' }, t('statNamespaces'))),React.createElement('div', { className: 'rl-stat-box' },React.createElement('div', { className: 'rl-stat-val' }, '1 225'),React.createElement('div', { className: 'rl-stat-label' }, t('statCoreKeys'))),React.createElement('div', { className: 'rl-stat-box' },React.createElement('div', { className: 'rl-stat-val' }, '5 924'),React.createElement('div', { className: 'rl-stat-label' }, t('statPluginKeys')))),React.createElement('div', { className: 'rl-actions-row' },React.createElement('a', {href: makeIssueUrl({}, '0.3.13'),target: '_blank',rel: 'noopener noreferrer',className: 'rl-btn rl-btn-primary'
|
|
1535
1536
|
}, '💬 ' + t('reportIssue')),React.createElement('div', { className: 'rl-hint-text', style: { flex: 1 } },t('exportMdHint')))))))
|
|
1536
1537
|
}
|
|
1537
1538
|
const RL_CSS = ['.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(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);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(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);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(--dsw-alias-bg-layer-2)}.rl-head-main{flex:1;display:flex;flex-direction:column;gap:4px}.rl-title{color:var(--dsw-alias-label-primary);font-size:16px;font-weight:600;line-height:1.4;display:flex;align-items:center;flex-wrap:wrap;gap:8px}.rl-sub{color:var(--dsw-alias-label-secondary);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(--dsw-alias-border-l2);padding:18px}.rl-page{display:flex;flex-direction:column;gap:16px;max-width:960px}.rl-section-card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:10px;padding:16px 18px;display:flex;flex-direction:column;gap:12px}.rl-section-title{font-size:14px;font-weight:600;color:var(--dsw-alias-label-primary);display:flex;align-items:center;justify-content:space-between;gap:8px}.rl-section-desc{font-size:12px;color:var(--dsw-alias-label-secondary);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(--dsw-alias-border-l2);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(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-3)}.rl-item-card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);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(--dsw-alias-label-primary);display:flex;align-items:center;gap:8px;cursor:pointer}.rl-item-desc{font-size:11px;color:var(--dsw-alias-label-secondary);line-height:1.4}.rl-stat-box{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}.rl-stat-val{font-size:16px;font-weight:700;color:var(--dsw-alias-label-primary)}.rl-stat-label{font-size:11px;color:var(--dsw-alias-label-secondary);letter-spacing:0.3px}.rl-hotkey-box{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:8px;padding:10px 12px;font-size:12px;color:var(--dsw-alias-label-secondary);line-height:1.4;display:flex;align-items:flex-start;gap:10px}.rl-hotkey-tag{font-size:11px;font-weight:700;padding:2px 6px;border-radius:4px;background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-primary);white-space:nowrap}.rl-preview-box{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);border-radius:8px;padding:10px 12px;font-size:12px;color:var(--dsw-alias-label-secondary);line-height:1.4}.rl-btn{appearance:none;font:inherit;cursor:pointer;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;padding:6px 12px;font-size:12px;background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);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(--dsw-alias-bg-layer-1);border-color:var(--dsw-alias-label-secondary)}.rl-btn-primary{background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-3);border-color:transparent}.rl-btn-primary:hover:not(:disabled){opacity:0.9}.rl-select{height:32px;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-primary);border-radius:6px;padding:0 8px;font-size:12px;outline:none;width:100%;max-width:380px}.rl-select:focus{border-color:var(--dsw-alias-state-brand-primary)}.rl-check{width:16px;height:16px;accent-color:var(--dsw-alias-label-primary);cursor:pointer;flex-shrink:0}.rl-hint-text{font-size:11px;color:var(--dsw-alias-label-secondary);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(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-secondary);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(--dsw-alias-label-primary);color:var(--dsw-alias-label-primary)}.rl-lang-chip-active{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}.rl-action-btn{appearance:none;background:0 0;border:1px solid transparent;border-radius:4px;color:var(--dsw-alias-label-secondary);cursor:pointer;font-size:11px;padding:2px 5px;display:inline-flex;align-items:center;transition:all .15s}.rl-action-btn:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-3)}.rl-action-btn-active{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-border-l2)}.rl-turn-translation{margin:8px 0;padding:10px 12px;border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);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(--dsw-alias-border-l2);padding-bottom:4px}.rl-trans-title{font-size:11px;font-weight:600;color:var(--dsw-alias-label-secondary);text-transform:uppercase;letter-spacing:0.5px}.rl-trans-tools{display:flex;gap:4px}.rl-trans-btn{appearance:none;background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);cursor:pointer;padding:2px 7px;border-radius:4px;font-size:11px}.rl-trans-btn:hover{background:var(--dsw-alias-bg-layer-1);color:var(--dsw-alias-label-primary)}.rl-trans-body{color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;user-select:text}.rl-export-md-btn{appearance:none;border:1px solid var(--dsw-alias-border-l2);height:32px;color:var(--dsw-alias-label-primary);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(--dsw-alias-state-brand-primary);border-radius:4px;background:color-mix(in srgb,var(--dsw-alias-state-brand-primary) 12%,transparent);box-shadow:0 0 10px color-mix(in srgb,var(--dsw-alias-state-brand-primary) 30%,transparent);z-index:99998;transition:all .06s ease;display:none}.rl-inspector-badge{position:absolute;bottom:calc(100% + 4px);left:0;background:var(--dsw-alias-state-brand-primary);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(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);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(--dsw-alias-state-brand-primary);box-shadow:0 0 12px color-mix(in srgb,var(--dsw-alias-state-brand-primary) 35%,transparent)}'
|
package/lib/client.template.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"dsh-kanban":{"DEFAULT_BOARDS.main.title":"Проектная доска","DEFAULT_BOARDS.simple.title":"Простая доска","acceptance.accept":"Принять (Выполнено)","acceptance.acceptAndMerge":"Принять и смержить ветку","acceptance.merging":"Выполняется слияние ветки…","acceptance.reject":"Вернуть на доработку","acceptance.rejectReasonPlaceholder":"Укажите, что необходимо исправить или доработать...","acceptance.rejectSubmit":"Отправить на доработку","acceptance.rejectTitle":"Возврат на доработку","acceptance.rejectedAlert":"Возвращено на доработку: {reason}","acceptance.rejectedBadge":"На доработке","acceptance.title":"Приёмка и проверка задачи","action.exportCsv":"Экспорт доски в CSV","action.resume":"Возобновить выполнение","archive.empty":"В архиве пусто.","archive.hint":"Карточки, отстоявшие свой срок в «Выполнено». Ничего не удалено: возвращённая карточка встаёт в ту же колонку, откуда ушла.","archive.restore":"Вернуть на доску","archive.since":"в архиве {ago}","archiveAfterDays":"Через сколько дней в колонке «Выполнено» карточка уходит в архив. Ноль — не убирать.","batch.hint":"Одна сессия на все. Задачи приходят по очереди: агент берёт следующую, закончив текущую. В «В работе» уезжает только первая — остальные ждут своей очереди там, где лежат.","batch.start":"Запустить","batch.title":"Запустить {n} задач в одном чате","board.allRepos":"Все репозитории","board.archive":"Архив","board.back":"В чат","board.backHint":"Закрыть доску и вернуться в разговор","board.clearFilters":"Снять отборы","board.collapse":"Свернуть колонку","board.empty":"Задач пока нет.","board.expand":"Развернуть колонку","board.export":"Скачать","board.exportHint":"Экспортировать всю доску в файл JSON","board.import":"Импорт","board.imported":"Импортировано {n} задач","board.limit":"предел {n}","board.loading":"Доска загружается…","board.metrics":"Метрики","board.mine":"Мои: {n}","board.mineHint":"Задачи, назначенные на {who}","board.newTask":"Задача","board.noMatch":"Ничего не найдено.","board.noRepo":"без проекта","board.overdueCount":"Просрочено: {n}","board.overdueHint":"Показать только просроченные задачи","board.pickArchive":"В архив","board.pickMove":"Перенести…","board.pickNone":"Снять выбор","board.pickStart":"Запустить выбранные","board.pickUnqueue":"Снять с очереди","board.pickedCount":"выбрано {n}","board.refresh":"Обновить","board.repo":"репозиторий","board.search":"Поиск","board.shown":"показано {shown} из {total}","board.someFailed":"Сделано у {done} из {total}, остальные отказали.","board.sync":"Сверить с Gitea","board.syncing":"Сверяю…","board.waitCount":"Ждут ответа: {n}","board.waitCountHint":"Задачи, где агент задал вопрос или просит разрешения.","board.waiting":"нужен человек","boardName.main":"Проектная доска","boardName.simple":"Простая доска","boardToolEnabled":"Разрешить агенту двигать карточки инструментом board_move.","card.assigneeHint":"Кто взял задачу","card.attach":"Прикрепить файл","card.checklist":"Чеклист","card.comments":"Комментарии","card.created":"Создано {date}","card.deadline":"Срок выполнения","card.deleteConfirm":"Удалить эту карточку?","card.description":"Описание задачи","card.due":"срок {date}","card.dueDate":"Крайний срок","card.edit":"Редактировать","card.labels":"Метки","card.move":"Переместить в колонку","card.pack":"пачка {at} из {total}","card.packHint":"Запущены вместе, одной сессией; агент берёт их в этом порядке.","card.pick":"Отметить для группового запуска","card.priority":"Приоритет","card.progress":"Прогресс","card.queue":"в очередь...","card.revive":"Восстановить","card.stop":"остановить","card.tags":"Теги","card.title":"Название карточки","card.toChat":"перейти в чат","card.unqueue":"снять с очереди","checklist.add":"Добавить","checklist.empty":"Критерии готовности ещё не настроены.","checklist.evidence":"Подтверждение: {text}","checklist.placeholder":"Новый критерий готовности...","checklist.progress":"DoD: {done} из {total}","checklist.required":"Обязательно","checklist.title":"Критерии готовности (DoD)","chip.moveTo":"Перенести в","chip.note":"Оставить заметку","chip.noteHint":"Заметка дописывается в тело задачи. Тело уходит агенту первым сообщением, поэтому заметка до запуска попадёт в работу, а после запуска — нет.","chip.noteSave":"Дописать","chip.openCard":"Перейти к карточке","column.addCard":"+ Добавить карточку","column.backlog":"Бэклог","column.cleanup":"Уборка","column.clear":"Очистить колонку","column.collapse":"Свернуть колонку","column.delete":"Удалить колонку","column.deploy":"Выкатка","column.done":"Выполнено","column.empty":"В этой колонке нет задач","column.expand":"Развернуть колонку","column.in-progress":"В работе","column.limit":"Лимит WIP: {n}","column.rename":"Переименовать колонку","column.review":"Ревью","column.title":"Название колонки","columnNames":"Свои названия колонок парами «идентификатор=Название» через запятую. Пусто — обычные названия.","comments.add":"Опубликовать комментарий","comments.authorAgent":"Агент","comments.authorUser":"Пользователь","comments.empty":"Комментариев пока нет.","comments.placeholder":"Добавьте заметку или отзыв...","comments.title":"Обсуждение и комментарии","console.empty":"Вывод агента пока не записан.","console.tab":"Живая консоль","defaultProjectRoot":"Корень, в котором лежат рабочие копии проектов. Пусто — рабочая папка харнесса.","dialog.archived":"архив","dialog.bodyHint":"Уйдёт агенту первым сообщением при запуске задачи.","dialog.cancel":"Отмена","dialog.create":"Создать","dialog.fromGitea":"Из Gitea","dialog.imported":"уже на доске","dialog.kind":"Какая это задача","dialog.kindPlain":"Не проект","dialog.kindPlainHint":"Заметка, не относящаяся ни к какому репозиторию. Живёт на простой доске и в Gitea не попадает.","dialog.kindProject":"Проект","dialog.kindProjectHint":"В Gitea заводится issue, карточка привязывается к нему и живёт на проектной доске.","dialog.labelsHint":"через запятую","dialog.loadingRepos":"Репозитории загружаются…","dialog.noIssues":"Открытых issue не найдено.","dialog.noRepos":"Репозиториев нет","dialog.own":"Своя задача","dialog.pickRepo":"Выберите репозиторий","dialog.repo":"Репозиторий","dialog.repoNamePlaceholder":"имя нового репозитория, латиницей","dialog.repoNew":"— новый репозиторий —","dialog.repoNewHint":"Будет создан в организации: приватный и пустой, без README и заготовок. Создание репозитория отсюда не отменить.","dialog.taskBody":"Описание","dialog.taskColumn":"Колонка","dialog.taskLabels":"Метки","dialog.taskTitle":"Заголовок","dialog.title":"Новая задача","diff.additions":"Добавлено","diff.author":"Автор","diff.branch":"Ветка: {name}","diff.cherryPick":"Перенести коммит (Cherry-pick)","diff.commits":"Коммиты задачи ({n})","diff.date":"Дата","diff.deletions":"Удалено","diff.empty":"Нет коммитов или изменений файлов для этой задачи.","diff.filesChanged":"Изменено файлов: {n}","diff.hash":"Хеш","diff.hide":"Скрыть просмотр diff","diff.loadFailed":"Не удалось загрузить изменения: {error}","diff.loading":"Загрузка коммитов и diff…","diff.mergeConflict":"Обнаружены конфликты слияния","diff.mergeFailed":"Сбой слияния ветки: {error}","diff.mergeSuccess":"Ветка успешно смержена в основную","diff.message":"Сообщение коммита","diff.resolveConflicts":"Разрешить конфликты","diff.revert":"Откатить коммит","diff.show":"Показать просмотр diff","diff.staged":"Подготовленные изменения","diff.title":"Изменения в ветке задачи","diff.truncated":"Дифф обрезан (превышен лимит)","diff.uncommitted":"Незакоммиченные изменения","diff.view":"Просмотр изменений","discard":"Отменить","epic.addSubtask":"Добавить подзадачу","epic.badge":"Эпик","epic.createGiteaIssues":"Также создать связанные задачи в Gitea","epic.noSubtasks":"Подзадач пока нет.","epic.progress":"Подзадач: {done}/{total}","epic.subtasks":"Подзадачи","epic.triage":"Декомпозировать","epic.triageHelp":"Введите по одному названию подзадачи в строке. Дочерние задачи будут привязаны к этому эпику.","epic.triageSubmit":"Создать подзадачи","epic.triageTitle":"Декомпозиция задачи на подзадачи","error.bad-repo-name":"В имени репозитория допустимы только латинские буквы, цифры, точка, дефис и подчёркивание.","error.badImport":"Неверный формат файла импорта","error.crossSite":"Запрос отклонён как межсайтовый.","error.gitea-unreachable":"Сервер Gitea недоступен","error.giteaAbsent":"Плагин Gitea не установлен, импорт недоступен.","error.giteaUnconfigured":"Сначала настройте Gitea в карточке плагина Gitea.","error.issue-not-created":"Issue не заведён. Если репозиторий был новым, он остался — ничего не удалено.","error.issueNotFound":"Issue не найден.","error.modelNotSelected":"Модель не выбрана — задайте её в настройках или укажите здесь.","error.no-live-sessions":"Нет ни одной идущей сессии, в очередь ставить некуда.","error.permission-refused":"Уровень доступа не принят, задача не запущена.","error.permission-unavailable":"В этой сборке уровней доступа нет — задача не запущена, чтобы не пойти с бо́льшими правами, чем просили.","error.repo-not-created":"Репозиторий не создан; больше ничего не сделано.","error.repo-required":"Выберите репозиторий или назовите новый.","error.session-not-live":"Эта сессия больше не идёт.","error.sessionNotOpened":"Сессия поднята ({id}), но эта сборка не умеет в неё переключиться. Найдите её в списке сессий.","error.startFailed":"Не удалось поднять сессию.","error.task-not-queued":"Задача не стоит в очереди.","error.taskHasNoIssue":"За этой задачей нет issue в Gitea.","error.taskNotFound":"Задача не найдена.","error.titleRequired":"Нужен заголовок.","error.unknown":"Запрос не выполнен.","facet.assignee":"Исполнитель","facet.author":"Автор","facet.priority":"Приоритет","facet.release":"Выпуск","facet.repo":"Репозиторий","facet.risk":"Риск","facet.scope":"Область","facet.signal":"Сигнал","facet.status":"Статус","facet.type":"Тип","field.announceToAgent":"Уведомлять агента об изменениях","field.archiveAfterDays":"Убирать в архив из «Выполнено» через, дней","field.autoSyncSessions":"Автосинхронизация внешних сессий чата","field.boardToolEnabled":"Разрешить агенту двигать карточки","field.columnNames":"Свои названия колонок","field.cronEnabled":"Включить планировщик задач","field.defaultProjectRoot":"Корень проектов","field.gitProvider":"Git-провайдер","field.giteaOwner":"Организация Gitea","field.giteaTokenRef":"Имя учётной записи","field.giteaUrl":"Адрес инстанса","field.githubOwner":"Организация или пользователь GitHub","field.githubTokenRef":"Токен учётных данных GitHub","field.githubWebhookSecretRef":"Секрет вебхука GitHub","field.maxConcurrentSessions":"Макс. параллельных сессий агентов","field.permissionGateEnabled":"Контроль прав доступа к доске","field.preventIdleSleep":"Предотвращать засыпание при активных задачах","field.progressDumpEnabled":"Дамп прогресса выполнения","field.pushToGitea":"Закрывать issue в Gitea","field.replyInstruction":"Постоянная приписка","field.sessionDefaultPermission":"Права доступа сессии по умолчанию","field.staleAfterMin":"Считать задачу молчащей после, минут","field.startPrompt":"Шаблон первого сообщения","field.syncIntervalSec":"Сверяться с Gitea раз в, секунд","field.watchRepos":"Сузить подхват до репозиториев","field.webhookSecretRef":"Имя учётной записи для вебхука","field.wipInProgress":"Предел «В работе»","field.wipReview":"Предел «Ревью»","field.workspaceClaimBoundaries":"Границы захвата рабочей области","field.worktreeIsolation":"Изоляция рабочих деревьев (worktree)","field.worktreeRoot":"Корневой каталог worktree","filter.active":"Активные","filter.all":"Все задачи","filter.assignee":"Исполнитель","filter.epics":"Эпики","filter.label":"Метка","filter.overdue":"Просроченные","filter.priority":"Приоритет","filter.review":"На проверке","filter.search":"Поиск задач…","filter.stale":"Без активности","giteaOwner":"Организация Gitea, чьи репозитории смотрит доска. Пусто — определяется сама, если организация одна.","giteaTokenRef":"ИМЯ учётной записи DSH, в которой лежит токен. Сам токен сюда не вводить.","giteaUrl":"Адрес инстанса Gitea или Forgejo, например https://gitea.example.com. Пусто — импорт недоступен.","group.assignee":"По исполнителям","group.forge":"Git-кузница","group.general":"Общее","group.gitea":"Gitea","group.github":"GitHub","group.limits":"Пределы колонок","group.nobody":"Без исполнителя","group.repo":"По репозиториям","group.sync":"Автоперемещение","hint.announceToAgent":"Автоматически отправлять агенту сообщения о перемещении карточек","hint.archiveAfterDays":"Считается с попадания карточки в «Выполнено». Ноль — оставлять всё на доске.","hint.autoSyncSessions":"Автоматически создавать карточки на доске для стандартных диалогов чата DSH.","hint.boardToolEnabled":"Выключено, пока скилл воркфлоу запрещает этому CLI трогать канбан.","hint.columnNames":"Пары «идентификатор=Название» через запятую, например «backlog=Идеи, review=Проверка». Пусто — обычные названия.","hint.cronEnabled":"Запуск фоновых периодических проверок статусов задач","hint.defaultProjectRoot":"Где лежат рабочие копии проектов. Пусто — рабочая папка харнесса.","hint.gitProvider":"Активная кузница: «auto» (определять по учётным данным), «gitea» или «github».","hint.giteaOwner":"Чьи репозитории смотрит доска. Пусто — определится сама, пока у токена ровно одна организация.","hint.giteaTokenRef":"ИМЯ учётной записи DSH, в которой лежит токен. Сам токен сюда не вводить.","hint.giteaUrl":"Например https://gitea.example.com. Пусто — импорт недоступен.","hint.githubOwner":"Основная учётная запись GitHub для отслеживания. Если пусто, используется авторизованный пользователь.","hint.githubTokenRef":"Имя учётных данных DSH, содержащих токен PAT или GitHub App. Никогда не вводите сам токен открытым текстом.","hint.githubWebhookSecretRef":"Имя учётных данных DSH, содержащих секрет вебхука GitHub (HMAC-SHA256).","hint.label":"Пусто — метка для этой колонки не ставится.","hint.limit":"Ноль — без предела. Превышение подсвечивается, но не запрещается.","hint.permissionGateEnabled":"Требовать подтверждения при выполнении деструктивных операций","hint.preventIdleSleep":"Не усыплять фоновый процесс DSH, пока есть незавершённые задачи","hint.progressDumpEnabled":"Периодически сохранять прогресс выполнения в файл progress.md","hint.pushToGitea":"Карточка, дошедшая до «Выполнено», закрывает свой issue. Меток доска не ставит: стадия и так видна по ветке и pull request.","hint.replyInstruction":"Дописывается к каждому первому сообщению — например язык ответа. Пусто — ничего не добавляется.","hint.sessionDefaultPermission":"Уровень прав, выдаваемый сессиям без явных настроек","hint.staleAfterMin":"Помечаются только задачи с сессией. Ноль отключает отметку.","hint.startPrompt":"Шаблон первого сообщения агенту. Пусто — встроенный шаблон.","hint.syncIntervalSec":"Ноль отключает сверку. Меньше пятнадцати секунд поднимается до пятнадцати.","hint.watchRepos":"Через запятую, «владелец/репо» или просто «репо». Пусто — все репозитории организации, где есть открытые задачи.","hint.webhookSecretRef":"ИМЯ учётной записи DSH с секретом вебхука Gitea. Пусто — остаётся только опрос.","hint.worktreeIsolation":"Создавать отдельный git worktree для каждой задачи","hint.worktreeRoot":"Каталог, в котором создаются временные изолированные worktree","import.error":"Ошибка импорта JSON доски","import.success":"Доска успешно импортирована","label.assigned":"Назначено","label.blocked":"Заблокировано","label.completed":"Выполнено","label.inProgress":"В работе","label.pending":"В очереди","label.review":"На проверке","metrics.columns":"Время в колонках","metrics.completed":"Завершено задач: {n}","metrics.cycleTime":"Среднее время выполнения: {days} дн.","metrics.empty":"Переходов ещё не было — измерять нечего.","metrics.hint":"{n} задач на доске • выполнено за неделю: {week} • за месяц: {month}","metrics.leadTime":"Общее время от создания: {days} дн.","metrics.leadTimeAvg":"Средний Lead Time","metrics.mean":"среднее {time}","metrics.median":"медиана {time}","metrics.noStale":"Ни одна задача не задерживалась так долго.","metrics.stale":"Без движения дольше {days} дн.","metrics.throughput":"Пропускная способность","metrics.total":"Всего задач: {n}","metrics.wip":"Задач в работе (WIP): {n}","metrics.wipLimit":"Лимит задач в работе (WIP)","modal.confirmDelete":"Подтверждение удаления","modal.createTask":"Создание новой задачи","modal.editTask":"Редактирование задачи","move.backlog":"Работа по задаче останавливается: идущий ход агента будет прерван. Если сессии нет, карточка просто переедет.","move.cleanup":"Агент удалит ветку в Gitea, worktree и локальную ветку и запишет это в issue.","move.confirm":"Перенести","move.deploy":"Агент вольёт pull request и выкатит. Сам перенос в эту колонку И ЕСТЬ ваше «ок» на deploy — второй раз агент спрашивать не станет.","move.done":"Задача считается завершённой. Это решение человека: сам агент карточку сюда не переносит.","move.in-progress":"Агент получит команду начать или продолжить реализацию.","move.review":"Агент доведёт работу до ревью: снимет с pull request пометку черновика и запросит проверку.","move.title":"Перенести в «{column}»?","nav.all":"Все доски","nav.back":"Назад к доске","nav.settings":"Настройки доски","order.manual":"Как разложено","order.new":"Сначала новые","order.old":"Сначала старые","panel.agentPreset":"Профиль агента","panel.archive":"В архив","panel.assignDrop":"Отказаться","panel.assignMe":"Взять себе","panel.assignee":"взял {who}","panel.author":"завёл {who}","panel.bodyLoading":"читаю описание…","panel.cleanupWorktree":"Очистить worktree","panel.close":"Закрыть","panel.continue":"Продолжить","panel.continueHint":"У задачи один чат: открывается прежняя сессия, а не новая.","panel.created":"заведена {ago} назад","panel.delete":"Удалить","panel.deleteConfirm":"Удалить «{title}»? Отменить будет нельзя.","panel.due":"Срок","panel.issue":"Issue","panel.labels":"Метки","panel.log":"Переходы","panel.message":"Сообщение агенту","panel.messageHint":"Правьте перед отправкой. Пустое — уйдёт встроенный текст.","panel.model":"Модель","panel.noLog":"Переходов пока нет.","panel.noModels":"У этого провайдера нет моделей","panel.noProviders":"Провайдеров нет","panel.openChat":"Открыть чат","panel.permission":"Уровень доступа","panel.pickModel":"Выберите модель","panel.pickProvider":"Выберите провайдера","panel.pickProviderFirst":"Сначала выберите провайдера","panel.presetDefault":"Как в харнессе по умолчанию","panel.priority":"Приоритет","panel.priorityNone":"Без приоритета","panel.provider":"Провайдер","panel.refresh":"Обновить из Gitea","panel.saveEdit":"Сохранить","panel.start":"Начать","panel.startHint":"Откроется отдельная сессия агента по этой задаче. Ветку и worktree заводит агент после preflight, а не отсюда.","panel.starting":"Запускается…","panel.updated":"последнее изменение {ago} назад","panel.workDir":"Рабочая папка: {path}","panel.workDirHint":"Корень проекта не указан в настройках, поэтому используется эта папка.","panel.worktree":"Worktree: {path}","panel.worktreeDirty":"Незакоммиченные изменения в worktree: {files}","plan.counter":"{done} из {total}","plan.title":"План агента","pr.create":"Создать PR в Gitea","pr.created":"PR #{n} создан","pr.creating":"Создание PR…","pr.view":"Открыть PR","priority.high":"Высокий","priority.highest":"Критический","priority.low":"Низкий","priority.lowest":"Минимальный","priority.medium":"Средний","priority.normal":"Обычный","priority.urgent":"Срочный","queue.add":"В очередь","queue.hint":"Задача встанет в очередь сессии: агент возьмёт её, закончив текущую работу. До этого карточка остаётся там, где лежит.","queue.option":"{title} - задач: {n}","queue.session":"Сессия","queue.title":"Поставить в очередь идущей сессии","reasoning.default":"По умолчанию (модель)","reasoning.high":"Высокое (глубокие рассуждения)","reasoning.label":"Глубина рассуждений","reasoning.low":"Низкая (быстро / экономно)","reasoning.medium":"Средняя (сбалансировано)","replyInstruction":"Постоянная приписка к первому сообщению — например язык ответа. Пусто — ничего не добавляется.","report.artifacts":"Артефакты","report.changedFiles":"Изменённые файлы","report.checksRun":"Проверки и тесты","report.risks":"Риски и примечания","report.summary":"Сводка","report.title":"Отчёт о выполнении","revive.fresh":"Предыдущая сессия завершена, поэтому запущена новая; старый чат больше недоступен.","revive.same":"Предыдущая сессия восстановлена — чат на том месте, где вы остановились.","save":"Сохранить","section.label":"Канбан","settings.autoArchive":"Автоархивация завершённых задач","settings.autoArchiveHint":"Перемещать завершённые задачи в архив через указанное число дней","settings.boardName":"Название доски","settings.columns":"Колонки доски","settings.description":"Описание канбан-доски","settings.general":"Основные настройки","settings.integrations":"Интеграции","settings.loading":"Загрузка настроек доски…","settings.readOnly":"Настройки в этой сессии доступны только для чтения.","settings.save":"Сохранить настройки","settings.saveFailed":"Не сохранены поля: {fields}","settings.saved":"Настройки сохранены","settings.saving":"Сохранение настроек…","settings.subtitle":"Канбан-доска для сессий и задач","settings.unavailable":"Хост не знает пространство настроек dsh-kanban. Перезапустите веб-интерфейс после установки плагина.","slash.hint":"Введите / для списка команд и навыков","staleAfterMin":"После скольких минут молчания задача с сессией помечается тревожно. Ноль — не помечать.","startPrompt":"Шаблон первого сообщения агенту. Пусто — встроенный шаблон.","state.queued":"в очереди · {n}","state.running":"в работе","state.stopped":"остановился","status.active":"Активна","status.archived":"В архиве","status.closed":"Закрыта","status.open":"Открыта","stop.idle":"Агент не работал, останавливать было нечего.","stop.no-session":"У задачи нет сессии.","subtitle":"Доска задач: issue из Gitea и отдельная сессия под задачу","sync.failed":"сверка не проходит","sync.lastSeen":"последняя удачная сверка {ago} назад","sync.never":"сверки с Gitea ещё не было","sync.neverSeen":"удачной сверки с запуска харнесса не было","sync.okAgo":"сверено {ago} назад","sync.running":"сверяемся с Gitea…","syncIntervalSec":"Как часто сверяться с Gitea, в секундах. Ноль — не сверяться.","task.confirmPermission":"Подтвердить права","task.cron":"Расписание Cron","task.nextRun":"Следующий запуск: {date}","task.noRuns":"Запусков ещё не было","task.permissionConfirmed":"Права подтверждены","task.permissionGateWarning":"Требуется подтверждение повышенных прав ({permission})","task.progressDump":"Дамп прогресса (Handover)","task.runs":"История выполнений","template.bugfix":"Исправление бага (Bugfix)","template.feature":"Новая функция (Feature)","template.label":"Шаблон задачи","template.none":"Без шаблона (пусто)","template.refactor":"Рефакторинг (Refactor)","template.release":"Релиз (Подготовка выпуска)","template.security":"Безопасность (Аудит и CVE)","time.day":"{n} дн","time.hour":"{n} ч","time.min":"{n} мин","time.now":"только что","title":"Канбан","updater.check":"Проверить обновления","updater.checking":"Проверка…","updater.current":"Текущая версия","updater.failed":"Ошибка проверки обновлений: ","updater.latest":"Последняя версия","updater.success":"Плагин успешно обновлен! Пожалуйста, перезапустите сервис DSH.","updater.title":"Обновления плагина","updater.upToDate":"Актуальная версия","updater.updateNow":"Обновить до v{version}","updater.updating":"Обновление…","view.analytics":"Аналитика","view.archive":"Архив","view.board":"Доска","view.calendar":"Календарь","view.gantt":"Диаграмма Ганта","view.list":"Список","view.table":"Таблица","watchRepos":"Сузить подхват до этих репозиториев, через запятую. Пусто — все репозитории организации, где есть открытые задачи.","wipInProgress":"Предел числа карточек в колонке «В работе». Ноль — без предела.","wipReview":"Предел числа карточек в колонке «Ревью». Ноль — без предела."}}
|
|
1
|
+
{"dsh-kanban":{"DEFAULT_BOARDS.main.title":"Проектная доска","DEFAULT_BOARDS.simple.title":"Простая доска","acceptance.accept":"Принять (Выполнено)","acceptance.acceptAndMerge":"Принять и смержить ветку","acceptance.merging":"Выполняется слияние ветки…","acceptance.reject":"Вернуть на доработку","acceptance.rejectReasonPlaceholder":"Укажите, что необходимо исправить или доработать...","acceptance.rejectSubmit":"Отправить на доработку","acceptance.rejectTitle":"Возврат на доработку","acceptance.rejectedAlert":"Возвращено на доработку: {reason}","acceptance.rejectedBadge":"На доработке","acceptance.title":"Приёмка и проверка задачи","action.cancelWorkflow":"Отменить Workflow","action.exportCsv":"Экспорт доски в CSV","action.resume":"Возобновить выполнение","archive.empty":"В архиве пусто.","archive.hint":"Карточки, отстоявшие свой срок в «Выполнено». Ничего не удалено: возвращённая карточка встаёт в ту же колонку, откуда ушла.","archive.restore":"Вернуть на доску","archive.since":"в архиве {ago}","archiveAfterDays":"Через сколько дней в колонке «Выполнено» карточка уходит в архив. Ноль — не убирать.","batch.hint":"Одна сессия на все. Задачи приходят по очереди: агент берёт следующую, закончив текущую. В «В работе» уезжает только первая — остальные ждут своей очереди там, где лежат.","batch.start":"Запустить","batch.title":"Запустить {n} задач в одном чате","board.allRepos":"Все репозитории","board.archive":"Архив","board.back":"В чат","board.backHint":"Закрыть доску и вернуться в разговор","board.clearFilters":"Снять отборы","board.collapse":"Свернуть колонку","board.empty":"Задач пока нет.","board.expand":"Развернуть колонку","board.export":"Скачать","board.exportHint":"Экспортировать всю доску в файл JSON","board.import":"Импорт","board.imported":"Импортировано {n} задач","board.limit":"предел {n}","board.loading":"Доска загружается…","board.metrics":"Метрики","board.mine":"Мои: {n}","board.mineHint":"Задачи, назначенные на {who}","board.newTask":"Задача","board.noMatch":"Ничего не найдено.","board.noRepo":"без проекта","board.overdueCount":"Просрочено: {n}","board.overdueHint":"Показать только просроченные задачи","board.pickArchive":"В архив","board.pickMove":"Перенести…","board.pickNone":"Снять выбор","board.pickStart":"Запустить выбранные","board.pickUnqueue":"Снять с очереди","board.pickedCount":"выбрано {n}","board.refresh":"Обновить","board.repo":"репозиторий","board.search":"Поиск","board.shown":"показано {shown} из {total}","board.someFailed":"Сделано у {done} из {total}, остальные отказали.","board.sync":"Сверить с Gitea","board.syncing":"Сверяю…","board.waitCount":"Ждут ответа: {n}","board.waitCountHint":"Задачи, где агент задал вопрос или просит разрешения.","board.waiting":"нужен человек","boardName.main":"Проектная доска","boardName.simple":"Простая доска","boardToolEnabled":"Разрешить агенту двигать карточки инструментом board_move.","card.assigneeHint":"Кто взял задачу","card.attach":"Прикрепить файл","card.checklist":"Чеклист","card.comments":"Комментарии","card.created":"Создано {date}","card.deadline":"Срок выполнения","card.deleteConfirm":"Удалить эту карточку?","card.description":"Описание задачи","card.due":"срок {date}","card.dueDate":"Крайний срок","card.edit":"Редактировать","card.labels":"Метки","card.move":"Переместить в колонку","card.pack":"пачка {at} из {total}","card.packHint":"Запущены вместе, одной сессией; агент берёт их в этом порядке.","card.pick":"Отметить для группового запуска","card.priority":"Приоритет","card.progress":"Прогресс","card.queue":"в очередь...","card.revive":"Восстановить","card.stop":"остановить","card.tags":"Теги","card.title":"Название карточки","card.toChat":"перейти в чат","card.unqueue":"снять с очереди","checklist.add":"Добавить","checklist.empty":"Критерии готовности ещё не настроены.","checklist.evidence":"Подтверждение: {text}","checklist.placeholder":"Новый критерий готовности...","checklist.progress":"DoD: {done} из {total}","checklist.required":"Обязательно","checklist.title":"Критерии готовности (DoD)","chip.moveTo":"Перенести в","chip.note":"Оставить заметку","chip.noteHint":"Заметка дописывается в тело задачи. Тело уходит агенту первым сообщением, поэтому заметка до запуска попадёт в работу, а после запуска — нет.","chip.noteSave":"Дописать","chip.openCard":"Перейти к карточке","column.addCard":"+ Добавить карточку","column.backlog":"Бэклог","column.cleanup":"Уборка","column.clear":"Очистить колонку","column.collapse":"Свернуть колонку","column.delete":"Удалить колонку","column.deploy":"Выкатка","column.done":"Выполнено","column.empty":"В этой колонке нет задач","column.expand":"Развернуть колонку","column.in-progress":"В работе","column.limit":"Лимит WIP: {n}","column.rename":"Переименовать колонку","column.review":"Ревью","column.title":"Название колонки","columnNames":"Свои названия колонок парами «идентификатор=Название» через запятую. Пусто — обычные названия.","comments.add":"Опубликовать комментарий","comments.authorAgent":"Агент","comments.authorUser":"Пользователь","comments.empty":"Комментариев пока нет.","comments.placeholder":"Добавьте заметку или отзыв...","comments.title":"Обсуждение и комментарии","console.empty":"Вывод агента пока не записан.","console.tab":"Живая консоль","defaultProjectRoot":"Корень, в котором лежат рабочие копии проектов. Пусто — рабочая папка харнесса.","dialog.archived":"архив","dialog.bodyHint":"Уйдёт агенту первым сообщением при запуске задачи.","dialog.cancel":"Отмена","dialog.create":"Создать","dialog.fromGitea":"Из Gitea","dialog.imported":"уже на доске","dialog.kind":"Какая это задача","dialog.kindPlain":"Не проект","dialog.kindPlainHint":"Заметка, не относящаяся ни к какому репозиторию. Живёт на простой доске и в Gitea не попадает.","dialog.kindProject":"Проект","dialog.kindProjectHint":"В Gitea заводится issue, карточка привязывается к нему и живёт на проектной доске.","dialog.labelsHint":"через запятую","dialog.loadingRepos":"Репозитории загружаются…","dialog.noIssues":"Открытых issue не найдено.","dialog.noRepos":"Репозиториев нет","dialog.own":"Своя задача","dialog.pickRepo":"Выберите репозиторий","dialog.repo":"Репозиторий","dialog.repoNamePlaceholder":"имя нового репозитория, латиницей","dialog.repoNew":"— новый репозиторий —","dialog.repoNewHint":"Будет создан в организации: приватный и пустой, без README и заготовок. Создание репозитория отсюда не отменить.","dialog.taskBody":"Описание","dialog.taskColumn":"Колонка","dialog.taskLabels":"Метки","dialog.taskTitle":"Заголовок","dialog.title":"Новая задача","diff.additions":"Добавлено","diff.author":"Автор","diff.branch":"Ветка: {name}","diff.cherryPick":"Перенести коммит (Cherry-pick)","diff.commits":"Коммиты задачи ({n})","diff.date":"Дата","diff.deletions":"Удалено","diff.empty":"Нет коммитов или изменений файлов для этой задачи.","diff.filesChanged":"Изменено файлов: {n}","diff.hash":"Хеш","diff.hide":"Скрыть просмотр diff","diff.loadFailed":"Не удалось загрузить изменения: {error}","diff.loading":"Загрузка коммитов и diff…","diff.mergeConflict":"Обнаружены конфликты слияния","diff.mergeFailed":"Сбой слияния ветки: {error}","diff.mergeSuccess":"Ветка успешно смержена в основную","diff.message":"Сообщение коммита","diff.resolveConflicts":"Разрешить конфликты","diff.revert":"Откатить коммит","diff.show":"Показать просмотр diff","diff.staged":"Подготовленные изменения","diff.title":"Изменения в ветке задачи","diff.truncated":"Дифф обрезан (превышен лимит)","diff.uncommitted":"Незакоммиченные изменения","diff.view":"Просмотр изменений","discard":"Отменить","epic.addSubtask":"Добавить подзадачу","epic.badge":"Эпик","epic.createGiteaIssues":"Также создать связанные задачи в Gitea","epic.noSubtasks":"Подзадач пока нет.","epic.progress":"Подзадач: {done}/{total}","epic.subtasks":"Подзадачи","epic.triage":"Декомпозировать","epic.triageHelp":"Введите по одному названию подзадачи в строке. Дочерние задачи будут привязаны к этому эпику.","epic.triageSubmit":"Создать подзадачи","epic.triageTitle":"Декомпозиция задачи на подзадачи","error.bad-repo-name":"В имени репозитория допустимы только латинские буквы, цифры, точка, дефис и подчёркивание.","error.badImport":"Неверный формат файла импорта","error.crossSite":"Запрос отклонён как межсайтовый.","error.gitea-unreachable":"Сервер Gitea недоступен","error.giteaAbsent":"Плагин Gitea не установлен, импорт недоступен.","error.giteaUnconfigured":"Сначала настройте Gitea в карточке плагина Gitea.","error.issue-not-created":"Issue не заведён. Если репозиторий был новым, он остался — ничего не удалено.","error.issueNotFound":"Issue не найден.","error.modelNotSelected":"Модель не выбрана — задайте её в настройках или укажите здесь.","error.no-live-sessions":"Нет ни одной идущей сессии, в очередь ставить некуда.","error.permission-refused":"Уровень доступа не принят, задача не запущена.","error.permission-unavailable":"В этой сборке уровней доступа нет — задача не запущена, чтобы не пойти с бо́льшими правами, чем просили.","error.repo-not-created":"Репозиторий не создан; больше ничего не сделано.","error.repo-required":"Выберите репозиторий или назовите новый.","error.session-not-live":"Эта сессия больше не идёт.","error.sessionNotOpened":"Сессия поднята ({id}), но эта сборка не умеет в неё переключиться. Найдите её в списке сессий.","error.startFailed":"Не удалось поднять сессию.","error.task-not-queued":"Задача не стоит в очереди.","error.taskHasNoIssue":"За этой задачей нет issue в Gitea.","error.taskNotFound":"Задача не найдена.","error.titleRequired":"Нужен заголовок.","error.unknown":"Запрос не выполнен.","facet.assignee":"Исполнитель","facet.author":"Автор","facet.priority":"Приоритет","facet.release":"Выпуск","facet.repo":"Репозиторий","facet.risk":"Риск","facet.scope":"Область","facet.signal":"Сигнал","facet.status":"Статус","facet.type":"Тип","field.announceToAgent":"Уведомлять агента об изменениях","field.archiveAfterDays":"Убирать в архив из «Выполнено» через, дней","field.autoSyncSessions":"Автосинхронизация внешних сессий чата","field.boardToolEnabled":"Разрешить агенту двигать карточки","field.columnNames":"Свои названия колонок","field.cronEnabled":"Включить планировщик задач","field.defaultProjectRoot":"Корень проектов","field.gitProvider":"Git-провайдер","field.giteaOwner":"Организация Gitea","field.giteaTokenRef":"Имя учётной записи","field.giteaUrl":"Адрес инстанса","field.githubOwner":"Организация или пользователь GitHub","field.githubTokenRef":"Токен учётных данных GitHub","field.githubWebhookSecretRef":"Секрет вебхука GitHub","field.maxConcurrentSessions":"Макс. параллельных сессий агентов","field.permissionGateEnabled":"Контроль прав доступа к доске","field.preventIdleSleep":"Предотвращать засыпание при активных задачах","field.progressDumpEnabled":"Дамп прогресса выполнения","field.pushToGitea":"Закрывать issue в Gitea","field.replyInstruction":"Постоянная приписка","field.sessionDefaultPermission":"Права доступа сессии по умолчанию","field.staleAfterMin":"Считать задачу молчащей после, минут","field.startPrompt":"Шаблон первого сообщения","field.syncIntervalSec":"Сверяться с Gitea раз в, секунд","field.watchRepos":"Сузить подхват до репозиториев","field.webhookSecretRef":"Имя учётной записи для вебхука","field.wipInProgress":"Предел «В работе»","field.wipReview":"Предел «Ревью»","field.workspaceClaimBoundaries":"Границы захвата рабочей области","field.worktreeIsolation":"Изоляция рабочих деревьев (worktree)","field.worktreeRoot":"Корневой каталог worktree","filter.active":"Активные","filter.all":"Все задачи","filter.assignee":"Исполнитель","filter.epics":"Эпики","filter.label":"Метка","filter.overdue":"Просроченные","filter.priority":"Приоритет","filter.review":"На проверке","filter.search":"Поиск задач…","filter.stale":"Без активности","giteaOwner":"Организация Gitea, чьи репозитории смотрит доска. Пусто — определяется сама, если организация одна.","giteaTokenRef":"ИМЯ учётной записи DSH, в которой лежит токен. Сам токен сюда не вводить.","giteaUrl":"Адрес инстанса Gitea или Forgejo, например https://gitea.example.com. Пусто — импорт недоступен.","group.assignee":"По исполнителям","group.forge":"Git-кузница","group.general":"Общее","group.gitea":"Gitea","group.github":"GitHub","group.limits":"Пределы колонок","group.nobody":"Без исполнителя","group.repo":"По репозиториям","group.sync":"Автоперемещение","hint.announceToAgent":"Автоматически отправлять агенту сообщения о перемещении карточек","hint.archiveAfterDays":"Считается с попадания карточки в «Выполнено». Ноль — оставлять всё на доске.","hint.autoSyncSessions":"Автоматически создавать карточки на доске для стандартных диалогов чата DSH.","hint.boardToolEnabled":"Выключено, пока скилл воркфлоу запрещает этому CLI трогать канбан.","hint.columnNames":"Пары «идентификатор=Название» через запятую, например «backlog=Идеи, review=Проверка». Пусто — обычные названия.","hint.cronEnabled":"Запуск фоновых периодических проверок статусов задач","hint.defaultProjectRoot":"Где лежат рабочие копии проектов. Пусто — рабочая папка харнесса.","hint.gitProvider":"Активная кузница: «auto» (определять по учётным данным), «gitea» или «github».","hint.giteaOwner":"Чьи репозитории смотрит доска. Пусто — определится сама, пока у токена ровно одна организация.","hint.giteaTokenRef":"ИМЯ учётной записи DSH, в которой лежит токен. Сам токен сюда не вводить.","hint.giteaUrl":"Например https://gitea.example.com. Пусто — импорт недоступен.","hint.githubOwner":"Основная учётная запись GitHub для отслеживания. Если пусто, используется авторизованный пользователь.","hint.githubTokenRef":"Имя учётных данных DSH, содержащих токен PAT или GitHub App. Никогда не вводите сам токен открытым текстом.","hint.githubWebhookSecretRef":"Имя учётных данных DSH, содержащих секрет вебхука GitHub (HMAC-SHA256).","hint.label":"Пусто — метка для этой колонки не ставится.","hint.limit":"Ноль — без предела. Превышение подсвечивается, но не запрещается.","hint.permissionGateEnabled":"Требовать подтверждения при выполнении деструктивных операций","hint.preventIdleSleep":"Не усыплять фоновый процесс DSH, пока есть незавершённые задачи","hint.progressDumpEnabled":"Периодически сохранять прогресс выполнения в файл progress.md","hint.pushToGitea":"Карточка, дошедшая до «Выполнено», закрывает свой issue. Меток доска не ставит: стадия и так видна по ветке и pull request.","hint.replyInstruction":"Дописывается к каждому первому сообщению — например язык ответа. Пусто — ничего не добавляется.","hint.sessionDefaultPermission":"Уровень прав, выдаваемый сессиям без явных настроек","hint.staleAfterMin":"Помечаются только задачи с сессией. Ноль отключает отметку.","hint.startPrompt":"Шаблон первого сообщения агенту. Пусто — встроенный шаблон.","hint.syncIntervalSec":"Ноль отключает сверку. Меньше пятнадцати секунд поднимается до пятнадцати.","hint.watchRepos":"Через запятую, «владелец/репо» или просто «репо». Пусто — все репозитории организации, где есть открытые задачи.","hint.webhookSecretRef":"ИМЯ учётной записи DSH с секретом вебхука Gitea. Пусто — остаётся только опрос.","hint.worktreeIsolation":"Создавать отдельный git worktree для каждой задачи","hint.worktreeRoot":"Каталог, в котором создаются временные изолированные worktree","import.error":"Ошибка импорта JSON доски","import.success":"Доска успешно импортирована","label.assigned":"Назначено","label.blocked":"Заблокировано","label.completed":"Выполнено","label.inProgress":"В работе","label.pending":"В очереди","label.review":"На проверке","metrics.columns":"Время в колонках","metrics.completed":"Завершено задач: {n}","metrics.cycleTime":"Среднее время выполнения: {days} дн.","metrics.empty":"Переходов ещё не было — измерять нечего.","metrics.hint":"{n} задач на доске • выполнено за неделю: {week} • за месяц: {month}","metrics.leadTime":"Общее время от создания: {days} дн.","metrics.leadTimeAvg":"Средний Lead Time","metrics.mean":"среднее {time}","metrics.median":"медиана {time}","metrics.noStale":"Ни одна задача не задерживалась так долго.","metrics.stale":"Без движения дольше {days} дн.","metrics.throughput":"Пропускная способность","metrics.total":"Всего задач: {n}","metrics.wip":"Задач в работе (WIP): {n}","metrics.wipLimit":"Лимит задач в работе (WIP)","modal.confirmDelete":"Подтверждение удаления","modal.createTask":"Создание новой задачи","modal.editTask":"Редактирование задачи","move.backlog":"Работа по задаче останавливается: идущий ход агента будет прерван. Если сессии нет, карточка просто переедет.","move.cleanup":"Агент удалит ветку в Gitea, worktree и локальную ветку и запишет это в issue.","move.confirm":"Перенести","move.deploy":"Агент вольёт pull request и выкатит. Сам перенос в эту колонку И ЕСТЬ ваше «ок» на deploy — второй раз агент спрашивать не станет.","move.done":"Задача считается завершённой. Это решение человека: сам агент карточку сюда не переносит.","move.in-progress":"Агент получит команду начать или продолжить реализацию.","move.review":"Агент доведёт работу до ревью: снимет с pull request пометку черновика и запросит проверку.","move.title":"Перенести в «{column}»?","nav.all":"Все доски","nav.back":"Назад к доске","nav.settings":"Настройки доски","order.manual":"Как разложено","order.new":"Сначала новые","order.old":"Сначала старые","panel.agentPreset":"Профиль агента","panel.archive":"В архив","panel.assignDrop":"Отказаться","panel.assignMe":"Взять себе","panel.assignee":"взял {who}","panel.author":"завёл {who}","panel.bodyLoading":"читаю описание…","panel.cleanupWorktree":"Очистить worktree","panel.close":"Закрыть","panel.continue":"Продолжить","panel.continueHint":"У задачи один чат: открывается прежняя сессия, а не новая.","panel.created":"заведена {ago} назад","panel.delete":"Удалить","panel.deleteConfirm":"Удалить «{title}»? Отменить будет нельзя.","panel.due":"Срок","panel.issue":"Issue","panel.labels":"Метки","panel.log":"Переходы","panel.message":"Сообщение агенту","panel.messageHint":"Правьте перед отправкой. Пустое — уйдёт встроенный текст.","panel.model":"Модель","panel.noLog":"Переходов пока нет.","panel.noModels":"У этого провайдера нет моделей","panel.noProviders":"Провайдеров нет","panel.openChat":"Открыть чат","panel.permission":"Уровень доступа","panel.pickModel":"Выберите модель","panel.pickProvider":"Выберите провайдера","panel.pickProviderFirst":"Сначала выберите провайдера","panel.presetDefault":"Как в харнессе по умолчанию","panel.priority":"Приоритет","panel.priorityNone":"Без приоритета","panel.provider":"Провайдер","panel.refresh":"Обновить из Gitea","panel.saveEdit":"Сохранить","panel.start":"Начать","panel.startHint":"Откроется отдельная сессия агента по этой задаче. Ветку и worktree заводит агент после preflight, а не отсюда.","panel.startWorkflow":"⚡ Workflow","panel.startWorkflowHint":"Запустить мультиагентный рабочий процесс через движок ядра","panel.starting":"Запускается…","panel.updated":"последнее изменение {ago} назад","panel.workDir":"Рабочая папка: {path}","panel.workDirHint":"Корень проекта не указан в настройках, поэтому используется эта папка.","panel.worktree":"Worktree: {path}","panel.worktreeDirty":"Незакоммиченные изменения в worktree: {files}","plan.counter":"{done} из {total}","plan.title":"План агента","pr.create":"Создать PR в Gitea","pr.created":"PR #{n} создан","pr.creating":"Создание PR…","pr.view":"Открыть PR","priority.high":"Высокий","priority.highest":"Критический","priority.low":"Низкий","priority.lowest":"Минимальный","priority.medium":"Средний","priority.normal":"Обычный","priority.urgent":"Срочный","queue.add":"В очередь","queue.hint":"Задача встанет в очередь сессии: агент возьмёт её, закончив текущую работу. До этого карточка остаётся там, где лежит.","queue.option":"{title} - задач: {n}","queue.session":"Сессия","queue.title":"Поставить в очередь идущей сессии","reasoning.default":"По умолчанию (модель)","reasoning.high":"Высокое (глубокие рассуждения)","reasoning.label":"Глубина рассуждений","reasoning.low":"Низкая (быстро / экономно)","reasoning.medium":"Средняя (сбалансировано)","replyInstruction":"Постоянная приписка к первому сообщению — например язык ответа. Пусто — ничего не добавляется.","report.artifacts":"Артефакты","report.changedFiles":"Изменённые файлы","report.checksRun":"Проверки и тесты","report.risks":"Риски и примечания","report.summary":"Сводка","report.title":"Отчёт о выполнении","revive.fresh":"Предыдущая сессия завершена, поэтому запущена новая; старый чат больше недоступен.","revive.same":"Предыдущая сессия восстановлена — чат на том месте, где вы остановились.","save":"Сохранить","section.label":"Канбан","settings.autoArchive":"Автоархивация завершённых задач","settings.autoArchiveHint":"Перемещать завершённые задачи в архив через указанное число дней","settings.boardName":"Название доски","settings.columns":"Колонки доски","settings.description":"Описание канбан-доски","settings.general":"Основные настройки","settings.integrations":"Интеграции","settings.loading":"Загрузка настроек доски…","settings.readOnly":"Настройки в этой сессии доступны только для чтения.","settings.save":"Сохранить настройки","settings.saveFailed":"Не сохранены поля: {fields}","settings.saved":"Настройки сохранены","settings.saving":"Сохранение настроек…","settings.subtitle":"Канбан-доска для сессий и задач","settings.unavailable":"Хост не знает пространство настроек dsh-kanban. Перезапустите веб-интерфейс после установки плагина.","slash.hint":"Введите / для списка команд и навыков","staleAfterMin":"После скольких минут молчания задача с сессией помечается тревожно. Ноль — не помечать.","startPrompt":"Шаблон первого сообщения агенту. Пусто — встроенный шаблон.","state.queued":"в очереди · {n}","state.running":"в работе","state.stopped":"остановился","status.active":"Активна","status.archived":"В архиве","status.closed":"Закрыта","status.open":"Открыта","stop.idle":"Агент не работал, останавливать было нечего.","stop.no-session":"У задачи нет сессии.","subtitle":"Доска задач: issue из Gitea и отдельная сессия под задачу","sync.failed":"сверка не проходит","sync.lastSeen":"последняя удачная сверка {ago} назад","sync.never":"сверки с Gitea ещё не было","sync.neverSeen":"удачной сверки с запуска харнесса не было","sync.okAgo":"сверено {ago} назад","sync.running":"сверяемся с Gitea…","syncIntervalSec":"Как часто сверяться с Gitea, в секундах. Ноль — не сверяться.","task.confirmPermission":"Подтвердить права","task.cron":"Расписание Cron","task.nextRun":"Следующий запуск: {date}","task.noRuns":"Запусков ещё не было","task.permissionConfirmed":"Права подтверждены","task.permissionGateWarning":"Требуется подтверждение повышенных прав ({permission})","task.progressDump":"Дамп прогресса (Handover)","task.runs":"История выполнений","template.bugfix":"Исправление бага (Bugfix)","template.feature":"Новая функция (Feature)","template.label":"Шаблон задачи","template.none":"Без шаблона (пусто)","template.refactor":"Рефакторинг (Refactor)","template.release":"Релиз (Подготовка выпуска)","template.security":"Безопасность (Аудит и CVE)","time.day":"{n} дн","time.hour":"{n} ч","time.min":"{n} мин","time.now":"только что","title":"Канбан","updater.check":"Проверить обновления","updater.checking":"Проверка…","updater.current":"Текущая версия","updater.failed":"Ошибка проверки обновлений: ","updater.latest":"Последняя версия","updater.success":"Плагин успешно обновлен! Пожалуйста, перезапустите сервис DSH.","updater.title":"Обновления плагина","updater.upToDate":"Актуальная версия","updater.updateNow":"Обновить до v{version}","updater.updating":"Обновление…","view.analytics":"Аналитика","view.archive":"Архив","view.board":"Доска","view.calendar":"Календарь","view.gantt":"Диаграмма Ганта","view.list":"Список","view.table":"Таблица","watchRepos":"Сузить подхват до этих репозиториев, через запятую. Пусто — все репозитории организации, где есть открытые задачи.","wipInProgress":"Предел числа карточек в колонке «В работе». Ноль — без предела.","wipReview":"Предел числа карточек в колонке «Ревью». Ноль — без предела."}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"dsh-moa":{"actions.retry":"Повторить","actions.save":"Сохранить конфигурацию","actions.saved":"Сохранено!","actions.saving":"Сохранение…","addCandidate":"Добавить слот параллельной модели","aggTempHint":"Рекомендуется 0.2 - 0.4 для строгой проверки и фактологического синтеза.","aggregator.add_fallback_btn":"Добавить резервную модель…","aggregator.blind_hint":"Анонимизировать ответы кандидатов, чтобы исключить предвзятость к конкретной модели","aggregator.blind_label":"Слепое судейство (Blind Evaluation)","aggregator.criteria_label":"Критерии оценки судьи","aggregator.criteria_placeholder":"Оценивай корректность кода, отсутствие галлюцинаций, следование стилю...","aggregator.curator_hint":"Специальные указания по синтезу ответов","aggregator.curator_label":"Инструкция куратора","aggregator.desc":"Модель, которая оценивает ответы кандидатов, применяет критерии и формирует итоговый результат","aggregator.fallbacks_desc":"Цепочка запасных моделей при отказе или превышении квот основного судьи","aggregator.fallbacks_title":"Резервные модели-судьи","aggregator.override_hint":"Заменить системную инструкцию судьи на собственную","aggregator.override_label":"Переопределение системного промпта","aggregator.peer_hint":"Включить раунд критики между кандидатами перед вынесением вердикта","aggregator.peer_label":"Режим взаимного консилиума","aggregator.questions_hint":"Список контрольных проверок при сопоставлении ответов кандидатов","aggregator.questions_label":"Контрольные вопросы для критики","aggregator.stream_hint":"Отображать финальный синтез в реальном времени","aggregator.stream_label":"Потоковый вывод агрегатора","aggregator.temp_hint":"Степень вариативности синтеза (обычно 0.1–0.3 для строгой оценки)","aggregator.temp_label":"Температура судьи","aggregator.timeout_label":"Таймаут агрегатора (сек)","aggregator.title":"Модель-судья и агрегация (Judge / Aggregator)","aggregatorDesc":"Оценивает предложения кандидатов, исправляет галлюцинации и формирует итоговое единое решение.","aggregatorTitle":"Модель-судья / Агрегатор (проверяет и синтезирует)","badge.candidates":"Кандидатов: {count}","badge.disabled":"Отключено","badge.models":"Доступно моделей: {count}","badge.offline":"Хост недоступен","badge.online":"MoA активен","badge.preset":"Пресет: {name}","btn.clear_stats":"Очистить статистику","btn.export_stats":"Экспорт статистики (CSV/JSON)","btn.refresh":"Обновить статус","btn.reset":"Сбросить к умолчаниям","btn.run":"Запустить раунд MoA","btn.running":"Генерация ответов…","btn.save":"Сохранить конфигурацию","btn.saving":"Сохранение…","cancel":"Отмена","candidate":"Кандидат","card.consensus":"Степень согласия консилиума: {consensus}%","card.critique_score":"Средний балл: {score}/10","card.critique_title":"Карточка взаимной критики","card.strengths":"Сильные стороны:","card.verdict":"Вердикт судьи:","card.weaknesses":"Замечания:","card.winner":"Выбранный кандидат: {model}","clear":"Очистить","col.avg_latency":"Средняя задержка","col.critique_score":"Оценка консилиума","col.model":"Модель","col.win_rate":"Винрейт","col.wins":"Побед","config.enabled_label":"Включить модуль Mixture of Agents","confirmDeletePreset":"Вы уверены, что хотите удалить пресет","create":"Создать","createNewPreset":"Создать новый пресет...","defaultPreset":"Пресет по умолчанию (используется для /moa без аргументов)","delete":"Удалить","deletePreset":"Удалить пресет","description":"Выполнение задач с несколькими параллельными моделями-советниками и синтезирующей моделью-судьёй","empty.models":"Нет доступных моделей для выбора","empty.proposers":"Выберите хотя бы одну модель-кандидата в списке выше","error.no_judge":"Необходимо указать модель-судью","error.no_proposers":"Необходимо выбрать хотя бы одну модель-кандидата","error.timeout":"Превышено время ожидания ответа моделей ({timeout}с)","export.copied":"Данные скопированы в буфер обмена","export.csv":"Экспорт CSV","export.json":"Экспорт JSON","field.blind_review":"Слепое рецензирование (Blind Review)","field.blind_review_hint":"Скрывать имена моделей при взаимной оценке для исключения предвзятости","field.curator_advice":"Совет куратора (Curator Guidance)","field.curator_advice_hint":"Инструкция судье, на какие аспекты обращать внимание (точность, лаконичность, код)","field.fallback_judges":"Резервные судьи (Fallback Judges)","field.fallback_judges_hint":"Цепочка моделей на случай превышения лимитов или недоступности основного судьи","field.judge_model":"Модель-судья (Judge / Synthesizer)","field.judge_model_hint":"Финальная модель, которая оценивает ответы кандидатов и формирует итоговый ответ","field.max_tokens":"Лимит токенов на раунд","field.max_tokens_hint":"Максимальное число токенов для ответов каждого кандидата","field.peer_critique":"Включить взаимную критику (Peer Critique)","field.peer_critique_hint":"Перед передачей судье кандидаты выставляют оценки и пишут замечания к чужим ответам","field.proposer_models":"Модели-кандидаты (Proposers)","field.proposer_models_hint":"Модели, генерирующие независимые варианты ответа в параллельном режиме","field.rounds":"Количество раундов синтеза","field.rounds_hint":"Число итераций доработки и взаимной критики (рекомендуется 1–2)","field.temperature":"Температура генерации","field.temperature_hint":"Степень креативности для моделей-кандидатов (0.0 — детерминировано, 1.0 — вариативно)","field.timeout_sec":"Таймаут раунда (сек)","field.timeout_sec_hint":"Максимальное время ожидания ответа самого медленного кандидата","header.sub":"Параллельная генерация несколькими моделями-кандидатами с финальной оценкой и объединением ведущей моделью-судьёй. Автоматически возвращает результат в модель текущей сессии.","header.title":"Оркестрация Mixture of Agents (MoA)","help.desc":"MoA комбинирует сильные стороны разных моделей (код, фактология, логика) для получения результата, превосходящего любую одиночную модель.","help.doc_link":"Документация и лучшие практики","help.slash_command":"Слэш-команда:","help.slash_example":"/moa Сравни подходы к кэшированию и составь архитектуру","help.title":"Справка по Mixture of Agents","isDefault":"по умолчанию","leaderboard.cost":"Расход токенов","leaderboard.desc":"Рейтинг эффективности кандидатов по оценкам судьи за все проведённые раунды","leaderboard.empty":"История раундов пока пуста","leaderboard.export_csv":"Экспорт CSV","leaderboard.export_json":"Экспорт JSON","leaderboard.filter_all":"Все модели","leaderboard.model":"Модель","leaderboard.runs":"Раундов","leaderboard.title":"Таблица побед моделей (Leaderboard)","leaderboard.winrate":"Винрейт","leaderboard.wins":"Побед","loading":"Сохранение…","makeDefault":"Сделать по умолчанию","makeDefaultHint":"Использовать этот пресет для /moa, когда аргумент пресета не указан","modelsFound":"Найдено","msg.reset":"Настройки сброшены к значениям по умолчанию","msg.saved":"Настройки MoA успешно сохранены","msg.stats_cleared":"История побед и статистика очищены","newPresetPlaceholder":"Имя нового пресета (например, fast-audit)","noModelsMatch":"Моделей по запросу не найдено.","of":"из","parallelCount":"Параллельные воркеры","picker.clear":"Очистить","picker.custom":"Указать вручную…","picker.found":"Найдено:","picker.none":"Модель не выбрана","picker.of":"из","picker.search_placeholder":"Поиск модели по имени или провайдеру…","picker.select":"Выбрать модель","presetSelectLabel":"Активный пресет для настройки:","presets.active_badge":"Активный пресет","presets.cancel":"Отмена","presets.create":"Создать","presets.del_btn":"Удалить пресет","presets.del_confirm":"Вы уверены, что хотите удалить этот пресет?","presets.desc":"Готовые наборы ролей, моделей-кандидатов и параметров судейства для различных типов задач","presets.name_placeholder":"Имя пресета (например: Code Review, Deep Debate)","presets.new_btn":"Создать пресет…","presets.set_default":"Сделать по умолчанию","presets.title":"Управление пресетами MoA","proposers.add_btn":"Добавить модель-кандидата…","proposers.candidate":"Кандидат #{index}","proposers.desc":"Список независимых моделей, параллельно генерирующих варианты ответа","proposers.grace_label":"Льготное время ожидания (сек)","proposers.parallel_count":"Параллельных потоков: {count}","proposers.quorum_hint":"Минимальное количество успешных ответов кандидатов для продолжения раунда","proposers.quorum_label":"Кворум ответов","proposers.role_general":"Общий ассистент (General)","proposers.role_label":"Специализация кандидата","proposers.role_minimalist":"Минималист (Ponytail/KISS)","proposers.role_performance":"Производительность и оптимизация","proposers.role_robustness":"Надёжность и безопасность","proposers.role_tester":"Тестирование и валидация","proposers.temp_hint":"Степень вариативности ответа кандидата","proposers.temp_label":"Температура кандидата","proposers.timeout_label":"Таймаут кандидатов (сек)","proposers.title":"Пул моделей-кандидатов (Proposers)","proposersDesc":"Параллельно генерируют независимые варианты ответов для предоставления различных точек зрения.","proposersTitle":"Модели-кандидаты (Советники)","refTempHint":"Рекомендуется 0.6 - 0.8 для генерации разнообразных творческих гипотез.","refTempLabel":"Температура кандидатов (разнообразие решений):","remove":"Удалить","retry":"Повторить подключение","save":"Сохранить изменения","saved":"Успешно сохранено","searchPlaceholder":"Поиск по названию модели или провайдеру...","sec.critique_desc":"Кандидаты анонимно рецензируют ответы друг друга перед финальным решением судьи","sec.critique_title":"Режим взаимной критики (Peer Review)","sec.roles_desc":"Выберите пул моделей-кандидатов (proposers) и синтезирующую модель-судью (judge)","sec.roles_title":"Назначение ролей моделей","sec.stats_desc":"Статистика качества ответов и частота выбора модели судьёй","sec.stats_title":"Метрики и победы моделей","selectModel":"Выберите модель...","slash.desc":"Выполнить запрос через оркестрацию нескольких моделей (MoA)","slashMoa":"Выполнить задачу через Mixture of Agents (/moa <промпт>)","stat.avg_latency":"Среднее время раунда","stat.no_data":"Статистика раундов пока пуста. Запустите MoA через /moa или кнопку выше.","stat.successful_runs":"Успешных раундов","stat.tokens_saved":"Экономия токенов","stat.total_runs":"Всего раундов MoA","stat.win_rate":"Доля побед моделей (Win Rate)","stats.active_models":"Активных моделей","stats.avg_cost":"Средняя стоимость","stats.desc":"Общая статистика генераций, экономия и средняя стоимость","stats.preset_count":"Пресетов","stats.title":"Сводная телеметрия MoA","stats.total_runs":"Всего раундов","status.completed":"Раунд успешно завершён","status.critique":"Взаимная критика и оценка ответов…","status.error":"Ошибка раунда: {error}","status.idle":"Готов к работе","status.judging":"Судья {judge} синтезирует финальный ответ…","status.proposing":"Генерация ответов кандидатами ({current}/{total})…","tab.advanced":"Дополнительно","tab.critique":"Консилиум и критика","tab.orchestration":"Оркестрация","tab.stats":"Лидерборд и винрейт","tag.coder":"Для кода","tag.fast":"Быстрая","tag.reasoning":"Рассуждающая","tag.recommended":"Рекомендуется","temperature":"Температура","title":"Смесь агентов (MoA)","toast.cleared":"История очищена","toast.copied":"Скопировано в буфер обмена","unavailable":"Сервис MoA временно недоступен (переподключение...)","updater.available":"Доступно обновление: v{version}","updater.btnCheck":"Проверить обновления","updater.btnUpdate":"Обновить до v{version}","updater.checkFailed":"Ошибка проверки реестра","updater.checking":"Проверка реестра...","updater.current":"Текущая версия: v{version}","updater.desc":"Проверка npm-реестра на новые версии и обновление в один клик.","updater.success":"Успешно обновлено до v{version}. Перезапустите DSH для применения.","updater.title":"Обновление плагина","updater.upToDate":"Актуальная версия","updater.updating":"Обновление плагина...","useCustom":"Использовать свою"}}
|
|
1
|
+
{"dsh-moa":{"actions.retry":"Повторить","actions.save":"Сохранить конфигурацию","actions.saved":"Сохранено!","actions.saving":"Сохранение…","addCandidate":"Добавить слот параллельной модели","aggTempHint":"Рекомендуется 0.2 - 0.4 для строгой проверки и фактологического синтеза.","aggregator.add_fallback_btn":"Добавить резервную модель…","aggregator.blind_hint":"Анонимизировать ответы кандидатов, чтобы исключить предвзятость к конкретной модели","aggregator.blind_label":"Слепое судейство (Blind Evaluation)","aggregator.criteria_label":"Критерии оценки судьи","aggregator.criteria_placeholder":"Оценивай корректность кода, отсутствие галлюцинаций, следование стилю...","aggregator.curator_hint":"Специальные указания по синтезу ответов","aggregator.curator_label":"Инструкция куратора","aggregator.desc":"Модель, которая оценивает ответы кандидатов, применяет критерии и формирует итоговый результат","aggregator.fallbacks_desc":"Цепочка запасных моделей при отказе или превышении квот основного судьи","aggregator.fallbacks_title":"Резервные модели-судьи","aggregator.override_hint":"Заменить системную инструкцию судьи на собственную","aggregator.override_label":"Переопределение системного промпта","aggregator.peer_hint":"Включить раунд критики между кандидатами перед вынесением вердикта","aggregator.peer_label":"Режим взаимного консилиума","aggregator.questions_hint":"Список контрольных проверок при сопоставлении ответов кандидатов","aggregator.questions_label":"Контрольные вопросы для критики","aggregator.stream_hint":"Отображать финальный синтез в реальном времени","aggregator.stream_label":"Потоковый вывод агрегатора","aggregator.temp_hint":"Степень вариативности синтеза (обычно 0.1–0.3 для строгой оценки)","aggregator.temp_label":"Температура судьи","aggregator.test_cmd_placeholder":"например, npm test или node --test","aggregator.test_gate_hint":"Выполняет запуск тестов в песочницах кандидатов до судейской оценки. Реальные результаты направляют выбор лучшего решения.","aggregator.test_gate_label":"Гейт выполнения тестов (автоматическое тестирование в песочнице)","aggregator.test_timeout_label":"Таймаут тестов (сек):","aggregator.timeout_label":"Таймаут агрегатора (сек)","aggregator.title":"Модель-судья и агрегация (Judge / Aggregator)","aggregatorDesc":"Оценивает предложения кандидатов, исправляет галлюцинации и формирует итоговое единое решение.","aggregatorTitle":"Модель-судья / Агрегатор (проверяет и синтезирует)","badge.candidates":"Кандидатов: {count}","badge.disabled":"Отключено","badge.models":"Доступно моделей: {count}","badge.offline":"Хост недоступен","badge.online":"MoA активен","badge.preset":"Пресет: {name}","btn.clear_stats":"Очистить статистику","btn.export_stats":"Экспорт статистики (CSV/JSON)","btn.refresh":"Обновить статус","btn.reset":"Сбросить к умолчаниям","btn.run":"Запустить раунд MoA","btn.running":"Генерация ответов…","btn.save":"Сохранить конфигурацию","btn.saving":"Сохранение…","cancel":"Отмена","candidate":"Кандидат","card.consensus":"Степень согласия консилиума: {consensus}%","card.critique_score":"Средний балл: {score}/10","card.critique_title":"Карточка взаимной критики","card.strengths":"Сильные стороны:","card.verdict":"Вердикт судьи:","card.weaknesses":"Замечания:","card.winner":"Выбранный кандидат: {model}","clear":"Очистить","col.avg_latency":"Средняя задержка","col.critique_score":"Оценка консилиума","col.model":"Модель","col.win_rate":"Винрейт","col.wins":"Побед","config.enabled_label":"Включить модуль Mixture of Agents","confirmDeletePreset":"Вы уверены, что хотите удалить пресет","create":"Создать","createNewPreset":"Создать новый пресет...","defaultPreset":"Пресет по умолчанию (используется для /moa без аргументов)","delete":"Удалить","deletePreset":"Удалить пресет","description":"Выполнение задач с несколькими параллельными моделями-советниками и синтезирующей моделью-судьёй","diff.candidate":"Кандидат {num}","diff.curator":"Синтез куратора (судьи)","diff.desc":"Визуальное сравнение файлов между решениями кандидатов и синтезом судьи в рабочей области проекта.","diff.empty":"Выбранные файлы идентичны (различий нет).","diff.loading":"Загрузка различий…","diff.no_files":"В рабочих областях кандидатов (.moa) файлов не найдено. Запустите задачу с /moa для генерации кода.","diff.refresh":"Обновить дифф","diff.select_file":"Файл:","diff.select_from":"Базовый вариант:","diff.select_to":"Сравнить с:","diff.title":"Просмотр различий решений кандидатов (Diff Viewer)","empty.models":"Нет доступных моделей для выбора","empty.proposers":"Выберите хотя бы одну модель-кандидата в списке выше","error.no_judge":"Необходимо указать модель-судью","error.no_proposers":"Необходимо выбрать хотя бы одну модель-кандидата","error.timeout":"Превышено время ожидания ответа моделей ({timeout}с)","export.copied":"Данные скопированы в буфер обмена","export.csv":"Экспорт CSV","export.json":"Экспорт JSON","field.blind_review":"Слепое рецензирование (Blind Review)","field.blind_review_hint":"Скрывать имена моделей при взаимной оценке для исключения предвзятости","field.curator_advice":"Совет куратора (Curator Guidance)","field.curator_advice_hint":"Инструкция судье, на какие аспекты обращать внимание (точность, лаконичность, код)","field.fallback_judges":"Резервные судьи (Fallback Judges)","field.fallback_judges_hint":"Цепочка моделей на случай превышения лимитов или недоступности основного судьи","field.judge_model":"Модель-судья (Judge / Synthesizer)","field.judge_model_hint":"Финальная модель, которая оценивает ответы кандидатов и формирует итоговый ответ","field.max_tokens":"Лимит токенов на раунд","field.max_tokens_hint":"Максимальное число токенов для ответов каждого кандидата","field.peer_critique":"Включить взаимную критику (Peer Critique)","field.peer_critique_hint":"Перед передачей судье кандидаты выставляют оценки и пишут замечания к чужим ответам","field.proposer_models":"Модели-кандидаты (Proposers)","field.proposer_models_hint":"Модели, генерирующие независимые варианты ответа в параллельном режиме","field.rounds":"Количество раундов синтеза","field.rounds_hint":"Число итераций доработки и взаимной критики (рекомендуется 1–2)","field.temperature":"Температура генерации","field.temperature_hint":"Степень креативности для моделей-кандидатов (0.0 — детерминировано, 1.0 — вариативно)","field.timeout_sec":"Таймаут раунда (сек)","field.timeout_sec_hint":"Максимальное время ожидания ответа самого медленного кандидата","header.sub":"Параллельная генерация несколькими моделями-кандидатами с финальной оценкой и объединением ведущей моделью-судьёй. Автоматически возвращает результат в модель текущей сессии.","header.title":"Оркестрация Mixture of Agents (MoA)","help.desc":"MoA комбинирует сильные стороны разных моделей (код, фактология, логика) для получения результата, превосходящего любую одиночную модель.","help.doc_link":"Документация и лучшие практики","help.slash_command":"Слэш-команда:","help.slash_example":"/moa Сравни подходы к кэшированию и составь архитектуру","help.title":"Справка по Mixture of Agents","isDefault":"по умолчанию","leaderboard.cost":"Расход токенов","leaderboard.desc":"Рейтинг эффективности кандидатов по оценкам судьи за все проведённые раунды","leaderboard.empty":"История раундов пока пуста","leaderboard.export_csv":"Экспорт CSV","leaderboard.export_json":"Экспорт JSON","leaderboard.filter_all":"Все модели","leaderboard.model":"Модель","leaderboard.runs":"Раундов","leaderboard.title":"Таблица побед моделей (Leaderboard)","leaderboard.winrate":"Винрейт","leaderboard.wins":"Побед","loading":"Сохранение…","makeDefault":"Сделать по умолчанию","makeDefaultHint":"Использовать этот пресет для /moa, когда аргумент пресета не указан","modelsFound":"Найдено","msg.reset":"Настройки сброшены к значениям по умолчанию","msg.saved":"Настройки MoA успешно сохранены","msg.stats_cleared":"История побед и статистика очищены","newPresetPlaceholder":"Имя нового пресета (например, fast-audit)","noModelsMatch":"Моделей по запросу не найдено.","of":"из","parallelCount":"Параллельные воркеры","picker.clear":"Очистить","picker.custom":"Указать вручную…","picker.found":"Найдено:","picker.none":"Модель не выбрана","picker.of":"из","picker.search_placeholder":"Поиск модели по имени или провайдеру…","picker.select":"Выбрать модель","presetSelectLabel":"Активный пресет для настройки:","presets.active_badge":"Активный пресет","presets.cancel":"Отмена","presets.create":"Создать","presets.del_btn":"Удалить пресет","presets.del_confirm":"Вы уверены, что хотите удалить этот пресет?","presets.desc":"Готовые наборы ролей, моделей-кандидатов и параметров судейства для различных типов задач","presets.name_placeholder":"Имя пресета (например: Code Review, Deep Debate)","presets.new_btn":"Создать пресет…","presets.set_default":"Сделать по умолчанию","presets.title":"Управление пресетами MoA","proposers.add_btn":"Добавить модель-кандидата…","proposers.candidate":"Кандидат #{index}","proposers.desc":"Список независимых моделей, параллельно генерирующих варианты ответа","proposers.grace_label":"Льготное время ожидания (сек)","proposers.parallel_count":"Параллельных потоков: {count}","proposers.quorum_hint":"Минимальное количество успешных ответов кандидатов для продолжения раунда","proposers.quorum_label":"Кворум ответов","proposers.role_general":"Общий ассистент (General)","proposers.role_label":"Специализация кандидата","proposers.role_minimalist":"Минималист (Ponytail/KISS)","proposers.role_performance":"Производительность и оптимизация","proposers.role_robustness":"Надёжность и безопасность","proposers.role_tester":"Тестирование и валидация","proposers.temp_hint":"Степень вариативности ответа кандидата","proposers.temp_label":"Температура кандидата","proposers.timeout_label":"Таймаут кандидатов (сек)","proposers.title":"Пул моделей-кандидатов (Proposers)","proposersDesc":"Параллельно генерируют независимые варианты ответов для предоставления различных точек зрения.","proposersTitle":"Модели-кандидаты (Советники)","refTempHint":"Рекомендуется 0.6 - 0.8 для генерации разнообразных творческих гипотез.","refTempLabel":"Температура кандидатов (разнообразие решений):","remove":"Удалить","retry":"Повторить подключение","save":"Сохранить изменения","saved":"Успешно сохранено","searchPlaceholder":"Поиск по названию модели или провайдеру...","sec.critique_desc":"Кандидаты анонимно рецензируют ответы друг друга перед финальным решением судьи","sec.critique_title":"Режим взаимной критики (Peer Review)","sec.roles_desc":"Выберите пул моделей-кандидатов (proposers) и синтезирующую модель-судью (judge)","sec.roles_title":"Назначение ролей моделей","sec.stats_desc":"Статистика качества ответов и частота выбора модели судьёй","sec.stats_title":"Метрики и победы моделей","selectModel":"Выберите модель...","slash.desc":"Выполнить запрос через оркестрацию нескольких моделей (MoA)","slashMoa":"Выполнить задачу через Mixture of Agents (/moa <промпт>)","stat.avg_latency":"Среднее время раунда","stat.no_data":"Статистика раундов пока пуста. Запустите MoA через /moa или кнопку выше.","stat.successful_runs":"Успешных раундов","stat.tokens_saved":"Экономия токенов","stat.total_runs":"Всего раундов MoA","stat.win_rate":"Доля побед моделей (Win Rate)","stats.active_models":"Активных моделей","stats.avg_cost":"Средняя стоимость","stats.desc":"Общая статистика генераций, экономия и средняя стоимость","stats.preset_count":"Пресетов","stats.title":"Сводная телеметрия MoA","stats.total_runs":"Всего раундов","status.completed":"Раунд успешно завершён","status.critique":"Взаимная критика и оценка ответов…","status.error":"Ошибка раунда: {error}","status.idle":"Готов к работе","status.judging":"Судья {judge} синтезирует финальный ответ…","status.proposing":"Генерация ответов кандидатами ({current}/{total})…","tab.advanced":"Дополнительно","tab.critique":"Консилиум и критика","tab.orchestration":"Оркестрация","tab.stats":"Лидерборд и винрейт","tag.coder":"Для кода","tag.fast":"Быстрая","tag.reasoning":"Рассуждающая","tag.recommended":"Рекомендуется","temperature":"Температура","title":"Смесь агентов (MoA)","toast.cleared":"История очищена","toast.copied":"Скопировано в буфер обмена","unavailable":"Сервис MoA временно недоступен (переподключение...)","updater.available":"Доступно обновление: v{version}","updater.btnCheck":"Проверить обновления","updater.btnUpdate":"Обновить до v{version}","updater.checkFailed":"Ошибка проверки реестра","updater.checking":"Проверка реестра...","updater.current":"Текущая версия: v{version}","updater.desc":"Проверка npm-реестра на новые версии и обновление в один клик.","updater.success":"Успешно обновлено до v{version}. Перезапустите DSH для применения.","updater.title":"Обновление плагина","updater.upToDate":"Актуальная версия","updater.updating":"Обновление плагина...","useCustom":"Использовать свою"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"dsh-key-rotation":{"activeBadge":"активен","addKey":"+ Добавить ключ","addKeyTitle":"Добавить API-ключ","addProvider":"+ Добавить провайдера","brokenKey":"повреждён (3× AUTH)","budgetLabel":"бюджет:","bulkApply":"Применить к выбранным","bulkCooldownPlaceholder":"Массовый таймаут (мс)","bulkRemove":"Удалить выбранные","cancel":"Отмена","cardDesc":"Ротация API-ключей для провайдеров: пулы ключей, автоматическое переключение при исчерпании квот и rate-limit, кулдаун и восстановление.","chooseProvider":"Выберите провайдера","codesTitle":"Переключать при этих ошибках","confirm":"Подтвердить","confirmBulkRemoveDesc":"Выбранные провайдеры и все их ключи будут исключены из ротации. Действие можно отменить один раз сразу после удаления.","confirmBulkRemoveTitle":"Удалить выбранных провайдеров ({n})?","confirmRemoveProvDesc":"Вы уверены, что хотите удалить этого провайдера и все настроенные ключи из ротации?","confirmRemoveProvTitle":"Удалить провайдера {p}?","confirmResetDesc":"Это немедленно сбросит счётчики сбоев, таймеры охлаждения и переведёт автоматический выключатель (circuit breaker) в исходное состояние.","confirmResetTitle":"Сбросить охлаждение для {p}?","cooldown":"Кулдаун после ошибки (мс)","currentVersion":"Текущая версия","desc":"Ротация API-ключей по провайдерам. Для каждого провайдера укажите список его ключей (имена переменных окружения из DSH credentials). Плагин направляет запросы по очереди и автоматически переключается на следующий ключ при ошибках лимитов или квот.","dialogLabel":"Подтверждение","discard":"Сбросить","empty":"Провайдеры для ротации ключей не настроены.","emptyDesc":"Добавьте провайдера и хотя бы одно имя API-ключа для запуска ротации.","emptyKeys":"В пуле пока нет ключей.","emptyTitle":"Пулов пока нет","errorCount":"Ошибок: {n}","errorTitle":"Не удалось загрузить настройки","eventAt":"Время","eventCooldown":"Таймаут","eventKey":"Ключ","eventReason":"Причина","exportCsv":"Экспорт в CSV","exportOne":"Экспорт пула","exportPools":"Экспорт всех пулов в JSON","exportProvider":"Экспортировать этого провайдера","failover":"Автоматическое переключение","failoverDesc":"Переключаться на следующий ключ в пуле при получении кодов 429, 402, 403, 503","filterAll":"Все ключи","filterCooldown":"На кулдауне","filterErrors":"С ошибками","filterReady":"Готовы к работе","header.keys_badge":"настроенных ключей","header.pools_badge":"активных пулов","header.sub":"Автоматическая круговая (round-robin) ротация нескольких ключей, экспоненциальные таймауты при ошибках 429/5xx, защита цепи failover и безопасность учётных данных (~/.dsh/.credentials.yaml).","header.title":"Ротация ключей и отказоустойчивость","headerPoolsTitle":"Пулы ротации ключей","health":"Состояние пула","healthBad":"Все ключи исчерпаны или заблокированы","healthGood":"Все ключи работоспособны","healthScoreTitle":"рейтинг надёжности","healthWarn":"Часть ключей на кулдауне","hoursAgo":"{n} ч назад","importEnv":"Импорт из переменных окружения (.env)","importPools":"Импорт пулов из JSON","justNow":"только что","key":"Ключ","keyActive":"Активен","keyBlocked":"Заблокирован","keyCooldown":"Кулдаун ({time}с)","keyCooling":"охлаждение, {s}с","keyDisabled":"Отключён вручную","keyErrors":"Ошибок подряд: {n}","keyExpired":"истёк","keyExpiringSoon":"истекает через {n} дн.","keyFromEnv":"из переменных окружения, только чтение","keyHint":"Значение сохраняется в учётных данных DSH и никогда не отправляется обратно в браузер — отображаются только последние 5 символов.","keyLabel":"Ключ {n}","keyLatency":"Задержка: {time}мс","keyMissing":"учётные данные отсутствуют","keyName":"Имя ключа","keyPlaceholder":"OPENAI_API_KEY_2","keyPool":"Пул ключей","keyPriority":"Приоритет","keyQuota":"Квота исчерпана","keyRateLimit":"Превышен лимит запросов","keyReady":"готов","keyRemoved":"Ключ удалён","keySave":"Сохранить key","keySaved":"Ключ добавлен","keySuccess":"Успешных запросов: {n}","keyValuePlaceholder":"paste the key, then Сохранить","keyWeight":"Вес: {n}","keyWriteFailed":"не удалось сохранить ключ: {msg}","keysCount":"Ключей в пуле: {n}","keysTitle":"Список ключей","lastError":"Последняя ошибка: {msg}","lastSuccess":"Успешный запрос: {time}","latestVersion":"Последняя версия","liveEventStream":"Лента событий в реальном времени","liveEventStreamEmpty":"События ротации пока не зафиксированы","loadChartAria":"Распределение трафика по ключам","loadDistribution":"Распределение трафика","loading":"Загрузка пулов ротации…","metrics":"Метрики использования","metricsAvgLatency":"Средняя задержка","metricsErrors":"Ошибки","metricsSuccess":"Успешные","metricsThroughput":"Запросов/мин","metricsTotal":"Всего запросов","minutesAgo":"{n} мин назад","modalAddKey":"Добавление ключа в пул","modalAddProvider":"Добавление пула провайдера","modalClose":"Закрыть диалог","modalEditKey":"Редактирование ключа","modalEditProvider":"Редактирование провайдера","mode":"Режим выбора ключа","modeOrder":"По порядку (Sequential)","modeRandom":"Случайно (Random)","modeWeighted":"По весам / бюджету","moveDown":"Переместить вниз","moveUp":"Переместить вверх","name":"Ротация API-ключей","noActivePools":"Нет активных пулов","noProviders":"Провайдеры не добавлены","noTrafficYet":"Трафик пока не зафиксирован","notRegistered":"не зарегистрирован","notSecretShape":"сохранено, но значение не похоже на API-ключ — проверьте опечатки","pausedBudget":"приостановлен","poolActive":"Пул активен","poolDisabled":"Пул отключён","poolEmpty":"В пуле нет активных ключей","poolExhausted":"пул исчерпан — все ключи охлаждаются","poolName":"Имя пула провайдера","proactiveGuardHint":"Заранее ставить ключи на паузу при приближении к квоте или заголовку Retry-After до получения 429","proactiveGuardLabel":"Превентивная защита от лимитов (Rate-Limit Guard)","provider":"Провайдер","providerActive":"Активен","providerCatalogUnavailable":"Список провайдеров недоступен","providerDisabled":"Отключён","providerName":"Имя провайдера (например openai, openrouter)","providerPlaceholder":"openai","providerRemoved":"Провайдер удалён","providerType":"Тип провайдера","providersTitle":"Провайдеры и их ключи","quotaExhausted":"Квота исчерпана","quotaResetIn":"Сброс через {time}","rateLimit":"Превышен лимит запросов","readOnly":"Настройки доступны только для чтения.","recentFailures":"Недавние сбои ({n})","removeKey":"Удалить ключ","removeProvider":"Удалить провайдера","resetAll":"Сбросить статистику и кулдауны","resetAllSuccess":"Статистика и кулдауны успешно сброшены","resetCooldown":"Сбросить охлаждение","resetCooldowns":"Сбросить все кулдауны","resetSuccess":"Кулдауны ключей сброшены","resetting":"Сброс…","retestBroken":"Повторный тест","retestFail":"повторный тест не пройден — ключ всё ещё не работает","retry":"Повторить","retryCount":"Попыток повтора","retryInterval":"Интервал повтора (мс)","rotationMode":"Режим ротации","rotationSequential":"Последовательный (Round-Robin)","rotationWeighted":"Взвешенный (Weighted)","routingStrategyLabel":"Стратегия маршрутизации","routingStrategyLeastLoaded":"Минимальная нагрузка (по параллелизму)","routingStrategyLowestLatency":"Минимальная задержка (p95)","routingStrategyRoundRobin":"Круговой перебор (Round-Robin, по умолчанию)","rpmTitle":"запросов/мин: {u} использовано, {r} осталось","save":"Сохранить настройки","saveRefused":"Хост отклонил это сохранение. Ваш черновик сохранён; сбросьте его для загрузки актуальных настроек.","saveUnconfirmed":"Не удалось подтвердить результат сохранения. Ваш черновик сохранён; обновите страницу перед повторной попыткой.","saved":"Настройки сохранены","saving":"Сохранение…","scheduleDays":"Расписание ротации (дней, 0=выкл.)","secondsAgo":"{n} с назад","sectionBackup":"Резервные копии и снимки","sectionBackupDesc":"Экспорт и импорт пулов провайдеров и создание полных снимков конфигурации плагина.","sectionFailover":"Триггеры отказа и коды ошибок","sectionFailoverDesc":"Выбор условий и ошибок, вызывающих автоматическое переключение на следующий доступный ключ.","sectionStats":"Здоровье пула и телеметрия","sectionStatsDesc":"Телеметрия активных пулов ключей в реальном времени, доступные учётные данные и статус переключения.","sectionTiming":"Тайминги и расписание ротации","sectionTimingDesc":"Настройка длительности периода охлаждения (cooldown) и окон периодической ротации.","selectProvider":"Выбрать провайдера {p}","selfHealingHint":"Периодическая проверка бесплатной моделью для возврата вышедших из строя ключей (0 — отключено)","selfHealingLabel":"Интервал автовосстановления (мин)","settingsChanged":"Служба настроек изменилась. Сбросьте этот черновик и обновите страницу перед сохранением.","snapshotExport":"Снимок ⬇","snapshotImport":"Восстановить","sortUsage":"Сортировать по нагрузке","statHealthy":"Исправны / Готовы","statKeys":"Всего ключей","statPools":"Настроенных пулов","statRequests":"запросов","status":"Статус","statusAvailable":"Доступен","statusCooldown":"Кулдаун","statusDisabled":"Отключён","statusExhausted":"Исчерпан","statusFailed":"Ошибка","strategy":"Стратегия failover","subtitle":"Ротация API-ключей по провайдерам: пулы ключей, автоматическое переключение при исчерпании квот/лимитов, охлаждение и восстановление.","switchCodes":"Коды переключения (через запятую)","switchCount":"Переключений: {n}","switchesNone":"переключений пока не было","switchesSome":"переключений: {n} · последнее: {reason}, {ago}","testAll":"Проверить все ключи","testFail":"СБОЙ","testKey":"Проверить ключ","testOk":"OK","testSuccess":"Ключ валиден: ответ за {time}мс","testing":"Тестирование…","testingAllProgress":"Проверка {n} из {total}…","title":"Ротация API-ключей (dsh-key-rotation)","totalCalls":"Всего вызовов: {n}","totalErrors":"Всего сбоев: {n}","totalRequestsTitle":"всего запросов","unavailableDesc":"Хост не предоставил пространство настроек dsh-key-rotation. Откройте «Настройки» заново или проверьте, включён ли плагин.","unavailableTitle":"Мост настроек недоступен","undo":"Отменить","undoKey":"Ключ удалён","undoProvider":"Провайдер удалён","updateAvailable":"Доступно обновление","updateCheck":"Проверить обновления","updateFailed":"Сбой обновления","updateNone":"Установлена актуальная версия","updateRestart":"Обновление установлено. Перезапустите DSH для применения.","updateRun":"Обновить сейчас","updateRunning":"Обновление…","usedAgo":"{ago} назад","weight":"Вес ключа","weightHint":"вес в round-robin: сколько раз ключ участвует в цикле (1 = равная доля)"},"keyRotation":{"currentVersion":"Текущая версия","latestVersion":"Последняя версия","updateAvailable":"Доступно обновление","updateCheck":"Проверить обновления","updateFailed":"Сбой обновления","updateNone":"Установлена актуальная версия","updateRestart":"Обновление установлено. Перезапустите DSH для применения.","updateRun":"Обновить сейчас","updateRunning":"Обновление…"}}
|
|
1
|
+
{"dsh-key-rotation":{"activeBadge":"активен","addKey":"+ Добавить ключ","addKeyTitle":"Добавить API-ключ","addProvider":"+ Добавить провайдера","brokenKey":"повреждён (3× AUTH)","budgetLabel":"бюджет:","bulkApply":"Применить к выбранным","bulkCooldownPlaceholder":"Массовый таймаут (мс)","bulkImport":"Пакетный импорт","bulkImportBtn":"Импортировать ключи","bulkImportCancel":"Отмена","bulkImportDesc":"Вставьте API-ключи построчно, в формате .env (KEY=value) или CSV (KEY, вес):","bulkImportSuccess":"Импортировано ключей: {n}","bulkRemove":"Удалить выбранные","cancel":"Отмена","cardDesc":"Ротация API-ключей для провайдеров: пулы ключей, автоматическое переключение при исчерпании квот и rate-limit, кулдаун и восстановление.","chooseProvider":"Выберите провайдера","codesTitle":"Переключать при этих ошибках","confirm":"Подтвердить","confirmBulkRemoveDesc":"Выбранные провайдеры и все их ключи будут исключены из ротации. Действие можно отменить один раз сразу после удаления.","confirmBulkRemoveTitle":"Удалить выбранных провайдеров ({n})?","confirmRemoveProvDesc":"Вы уверены, что хотите удалить этого провайдера и все настроенные ключи из ротации?","confirmRemoveProvTitle":"Удалить провайдера {p}?","confirmResetDesc":"Это немедленно сбросит счётчики сбоев, таймеры охлаждения и переведёт автоматический выключатель (circuit breaker) в исходное состояние.","confirmResetTitle":"Сбросить охлаждение для {p}?","cooldown":"Кулдаун после ошибки (мс)","currentVersion":"Текущая версия","desc":"Ротация API-ключей по провайдерам. Для каждого провайдера укажите список его ключей (имена переменных окружения из DSH credentials). Плагин направляет запросы по очереди и автоматически переключается на следующий ключ при ошибках лимитов или квот.","dialogLabel":"Подтверждение","discard":"Сбросить","empty":"Провайдеры для ротации ключей не настроены.","emptyDesc":"Добавьте провайдера и хотя бы одно имя API-ключа для запуска ротации.","emptyKeys":"В пуле пока нет ключей.","emptyTitle":"Пулов пока нет","errorCount":"Ошибок: {n}","errorTitle":"Не удалось загрузить настройки","eventAt":"Время","eventCooldown":"Таймаут","eventKey":"Ключ","eventReason":"Причина","exportCsv":"Экспорт в CSV","exportOne":"Экспорт пула","exportPools":"Экспорт всех пулов в JSON","exportProvider":"Экспортировать этого провайдера","failover":"Автоматическое переключение","failoverDesc":"Переключаться на следующий ключ в пуле при получении кодов 429, 402, 403, 503","filterAll":"Все ключи","filterCooldown":"На кулдауне","filterErrors":"С ошибками","filterReady":"Готовы к работе","header.keys_badge":"настроенных ключей","header.pools_badge":"активных пулов","header.sub":"Автоматическая круговая (round-robin) ротация нескольких ключей, экспоненциальные таймауты при ошибках 429/5xx, защита цепи failover и безопасность учётных данных (~/.dsh/.credentials.yaml).","header.title":"Ротация ключей и отказоустойчивость","headerPoolsTitle":"Пулы ротации ключей","health":"Состояние пула","healthBad":"Все ключи исчерпаны или заблокированы","healthGood":"Все ключи работоспособны","healthScoreTitle":"рейтинг надёжности","healthWarn":"Часть ключей на кулдауне","hoursAgo":"{n} ч назад","importEnv":"Импорт из переменных окружения (.env)","importPools":"Импорт пулов из JSON","justNow":"только что","key":"Ключ","keyActive":"Активен","keyBlocked":"Заблокирован","keyCooldown":"Кулдаун ({time}с)","keyCooling":"охлаждение, {s}с","keyDisabled":"Отключён вручную","keyErrors":"Ошибок подряд: {n}","keyExpired":"истёк","keyExpiringSoon":"истекает через {n} дн.","keyFromEnv":"из переменных окружения, только чтение","keyHint":"Значение сохраняется в учётных данных DSH и никогда не отправляется обратно в браузер — отображаются только последние 5 символов.","keyLabel":"Ключ {n}","keyLatency":"Задержка: {time}мс","keyMissing":"учётные данные отсутствуют","keyName":"Имя ключа","keyPaused":"Приостановлен","keyPlaceholder":"OPENAI_API_KEY_2","keyPool":"Пул ключей","keyPriority":"Приоритет","keyQuota":"Квота исчерпана","keyRateLimit":"Превышен лимит запросов","keyReady":"готов","keyRemoved":"Ключ удалён","keyRevoked":"Отозван (401)","keySave":"Сохранить key","keySaved":"Ключ добавлен","keySuccess":"Успешных запросов: {n}","keyValuePlaceholder":"paste the key, then Сохранить","keyWeight":"Вес: {n}","keyWriteFailed":"не удалось сохранить ключ: {msg}","keysCount":"Ключей в пуле: {n}","keysTitle":"Список ключей","lastError":"Последняя ошибка: {msg}","lastSuccess":"Успешный запрос: {time}","latestVersion":"Последняя версия","liveEventStream":"Лента событий в реальном времени","liveEventStreamEmpty":"События ротации пока не зафиксированы","loadChartAria":"Распределение трафика по ключам","loadDistribution":"Распределение трафика","loading":"Загрузка пулов ротации…","metrics":"Метрики использования","metricsAvgLatency":"Средняя задержка","metricsErrors":"Ошибки","metricsSuccess":"Успешные","metricsThroughput":"Запросов/мин","metricsTotal":"Всего запросов","minutesAgo":"{n} мин назад","modalAddKey":"Добавление ключа в пул","modalAddProvider":"Добавление пула провайдера","modalClose":"Закрыть диалог","modalEditKey":"Редактирование ключа","modalEditProvider":"Редактирование провайдера","mode":"Режим выбора ключа","modeOrder":"По порядку (Sequential)","modeRandom":"Случайно (Random)","modeWeighted":"По весам / бюджету","moveDown":"Переместить вниз","moveUp":"Переместить вверх","name":"Ротация API-ключей","noActivePools":"Нет активных пулов","noProviders":"Провайдеры не добавлены","noTrafficYet":"Трафик пока не зафиксирован","notRegistered":"не зарегистрирован","notSecretShape":"сохранено, но значение не похоже на API-ключ — проверьте опечатки","pauseKey":"Приостановить ключ в ротации","pausedBudget":"приостановлен","poolActive":"Пул активен","poolDisabled":"Пул отключён","poolEmpty":"В пуле нет активных ключей","poolExhausted":"пул исчерпан — все ключи охлаждаются","poolName":"Имя пула провайдера","proactiveGuardHint":"Заранее ставить ключи на паузу при приближении к квоте или заголовку Retry-After до получения 429","proactiveGuardLabel":"Превентивная защита от лимитов (Rate-Limit Guard)","provider":"Провайдер","providerActive":"Активен","providerCatalogUnavailable":"Список провайдеров недоступен","providerDisabled":"Отключён","providerName":"Имя провайдера (например openai, openrouter)","providerPlaceholder":"openai","providerRemoved":"Провайдер удалён","providerType":"Тип провайдера","providersTitle":"Провайдеры и их ключи","quotaExhausted":"Квота исчерпана","quotaResetIn":"Сброс через {time}","rateLimit":"Превышен лимит запросов","readOnly":"Настройки доступны только для чтения.","recentFailures":"Недавние сбои ({n})","removeKey":"Удалить ключ","removeProvider":"Удалить провайдера","resetAll":"Сбросить статистику и кулдауны","resetAllSuccess":"Статистика и кулдауны успешно сброшены","resetCooldown":"Сбросить охлаждение","resetCooldowns":"Сбросить все кулдауны","resetSuccess":"Кулдауны ключей сброшены","resetting":"Сброс…","resumeKey":"Возобновить ротацию ключа","retestBroken":"Повторный тест","retestFail":"повторный тест не пройден — ключ всё ещё не работает","retry":"Повторить","retryCount":"Попыток повтора","retryInterval":"Интервал повтора (мс)","rotationMode":"Режим ротации","rotationSequential":"Последовательный (Round-Robin)","rotationWeighted":"Взвешенный (Weighted)","routingStrategyLabel":"Стратегия маршрутизации","routingStrategyLeastLoaded":"Минимальная нагрузка (по параллелизму)","routingStrategyLowestLatency":"Минимальная задержка (p95)","routingStrategyRoundRobin":"Круговой перебор (Round-Robin, по умолчанию)","rpmTitle":"запросов/мин: {u} использовано, {r} осталось","save":"Сохранить настройки","saveRefused":"Хост отклонил это сохранение. Ваш черновик сохранён; сбросьте его для загрузки актуальных настроек.","saveUnconfirmed":"Не удалось подтвердить результат сохранения. Ваш черновик сохранён; обновите страницу перед повторной попыткой.","saved":"Настройки сохранены","saving":"Сохранение…","scheduleDays":"Расписание ротации (дней, 0=выкл.)","secondsAgo":"{n} с назад","sectionBackup":"Резервные копии и снимки","sectionBackupDesc":"Экспорт и импорт пулов провайдеров и создание полных снимков конфигурации плагина.","sectionFailover":"Триггеры отказа и коды ошибок","sectionFailoverDesc":"Выбор условий и ошибок, вызывающих автоматическое переключение на следующий доступный ключ.","sectionStats":"Здоровье пула и телеметрия","sectionStatsDesc":"Телеметрия активных пулов ключей в реальном времени, доступные учётные данные и статус переключения.","sectionTiming":"Тайминги и расписание ротации","sectionTimingDesc":"Настройка длительности периода охлаждения (cooldown) и окон периодической ротации.","selectProvider":"Выбрать провайдера {p}","selfHealingHint":"Периодическая проверка бесплатной моделью для возврата вышедших из строя ключей (0 — отключено)","selfHealingLabel":"Интервал автовосстановления (мин)","settingsChanged":"Служба настроек изменилась. Сбросьте этот черновик и обновите страницу перед сохранением.","snapshotExport":"Снимок ⬇","snapshotImport":"Восстановить","sortUsage":"Сортировать по нагрузке","sparklineLatency":"Тренд задержки","sparklineTraffic":"Тренд трафика","statHealthy":"Исправны / Готовы","statKeys":"Всего ключей","statPools":"Настроенных пулов","statRequests":"запросов","status":"Статус","statusAvailable":"Доступен","statusCooldown":"Кулдаун","statusDisabled":"Отключён","statusExhausted":"Исчерпан","statusFailed":"Ошибка","strategy":"Стратегия failover","subtitle":"Ротация API-ключей по провайдерам: пулы ключей, автоматическое переключение при исчерпании квот/лимитов, охлаждение и восстановление.","switchCodes":"Коды переключения (через запятую)","switchCount":"Переключений: {n}","switchesNone":"переключений пока не было","switchesSome":"переключений: {n} · последнее: {reason}, {ago}","testAll":"Проверить все ключи","testFail":"СБОЙ","testKey":"Проверить ключ","testOk":"OK","testSuccess":"Ключ валиден: ответ за {time}мс","testing":"Тестирование…","testingAllProgress":"Проверка {n} из {total}…","title":"Ротация API-ключей (dsh-key-rotation)","totalCalls":"Всего вызовов: {n}","totalErrors":"Всего сбоев: {n}","totalRequestsTitle":"всего запросов","unavailableDesc":"Хост не предоставил пространство настроек dsh-key-rotation. Откройте «Настройки» заново или проверьте, включён ли плагин.","unavailableTitle":"Мост настроек недоступен","undo":"Отменить","undoKey":"Ключ удалён","undoProvider":"Провайдер удалён","updateAvailable":"Доступно обновление","updateCheck":"Проверить обновления","updateFailed":"Сбой обновления","updateNone":"Установлена актуальная версия","updateRestart":"Обновление установлено. Перезапустите DSH для применения.","updateRun":"Обновить сейчас","updateRunning":"Обновление…","usedAgo":"{ago} назад","weight":"Вес ключа","weightHint":"вес в round-robin: сколько раз ключ участвует в цикле (1 = равная доля)"},"keyRotation":{"bulkImport":"Пакетный импорт","bulkImportBtn":"Импортировать ключи","bulkImportCancel":"Отмена","bulkImportDesc":"Вставьте API-ключи построчно, в формате .env (KEY=value) или CSV (KEY, вес):","bulkImportSuccess":"Импортировано ключей: {n}","currentVersion":"Текущая версия","keyPaused":"Приостановлен","keyRevoked":"Отозван (401)","latestVersion":"Последняя версия","pauseKey":"Приостановить ключ в ротации","resumeKey":"Возобновить ротацию ключа","sparklineLatency":"Тренд задержки","sparklineTraffic":"Тренд трафика","updateAvailable":"Доступно обновление","updateCheck":"Проверить обновления","updateFailed":"Сбой обновления","updateNone":"Установлена актуальная версия","updateRestart":"Обновление установлено. Перезапустите DSH для применения.","updateRun":"Обновить сейчас","updateRunning":"Обновление…"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"dsh-clinebot":{"accounts.active_badge":"Активен","accounts.add_btn":"Добавить аккаунт","accounts.apiBase":"Базовый URL API","accounts.apiKey":"API-ключ","accounts.cancel":"Отмена","accounts.cooldown":"Охлаждение: {s}с","accounts.delete":"Удалить","accounts.delete_confirm":"Удалить аккаунт «{name}»?","accounts.desc":"Управление учётными записями и API-ключами провайдеров для ClineBot.","accounts.edit":"Редактировать","accounts.empty":"Нет настроенных аккаунтов. Добавьте первый аккаунт выше.","accounts.env_placeholder":"Имя переменной окружения (напр. CLINE_API_KEY)","accounts.label_placeholder":"Название аккаунта (напр. Рабочий)","accounts.model":"Модель по умолчанию","accounts.pin_btn":"Сделать основным","accounts.pinned_badge":"Основной","accounts.provider":"Провайдер","accounts.quota":"Остаток квоты","accounts.rateLimit":"Лимит запросов","accounts.save":"Сохранить аккаунт","accounts.status":"Статус","accounts.title":"Аккаунты ClineBot","badge.key_missing":"Ключ отсутствует","badge.key_ok":"Ключ ✓ ({source})","badge.not_registered":"Не зарегистрирован","badge.offline":"Узел недоступен","badge.online":"Узел онлайн ({latency} мс)","badge.registered":"Зарегистрирован в DSH ({count} моделей)","diag.desc":"ClineBot автоматически регистрируется в моделях DSH при настройке ключа. Вы можете выполнить проверку связи или принудительную синхронизацию.","diag.resync_btn":"Принудительно синхронизировать с DSH","diag.resynced_msg":"Провайдер синхронизирован с моделями DSH ({count} моделей)","diag.resyncing":"Синхронизация…","diag.smoke_btn":"Выполнить экспресс-тест (Ping)","diag.smoke_ok":"Экспресс-тест пройден успешно! Задержка: {latency} мс","diag.smoke_testing":"Тестирование…","diag.title":"⚡ Диагностика и авторегистрация","diag.unregister_btn":"Снять регистрацию в DSH","diag.unregistered_msg":"Провайдер удалён из моделей DSH","diag.unregistering":"Удаление…","header.sub":"Подключение моделей подписки ClinePass ($9.99/мес). Совместимость с OpenAI API, автоматическое отслеживание скользящих лимитов и мгновенная авторегистрация в DSH.","header.title":"Провайдер ClineBot (ClinePass)","key.desc":"Ключ сохраняется непосредственно в хранилище учётных данных DSH (~/.dsh/.credentials.yaml) и никогда не отображается в открытом виде в конфигурациях.","key.empty_err":"Пожалуйста, введите API-ключ перед сохранением","key.env_label":"Имя переменной окружения: ","key.get_key":"Получить ключ в консоли app.cline.bot ↗","key.hide":"Скрыть","key.invalid":"✗ Ошибка проверки ключа: {error}","key.login_fast":"🚀 Быстрый вход через веб","key.login_fast: ":"🚀 Быстрый вход через веб","key.login_waiting":"Ожидание авторизации в браузере…","key.placeholder_empty":"Вставьте ключ ClinePass (cline_...)","key.placeholder_has":"••••••••••••••••••••••••","key.save":"Сохранить ключ","key.saved_msg":"Ключ сохранён в учётных данных DSH. Валидация: {status}","key.saving":"Сохранение…","key.show":"Показать","key.title":"🔑 Авторизация и API-ключ","key.verified":"✓ Ключ подтверждён: {email} ({plan})","key.verifying":"Проверка ключа в сервисе Cline…","models.all":"Все","models.auto_new":"Новинки","models.coding":"Только кодинг","models.desc":"Каталог синхронизируется напрямую с подпиской ClinePass. Модели новых тарифов подключаются автоматически. Снимите выбор, чтобы скрыть модель из выбора в чате DSH.","models.reasoning_tooltip":"Выбор интенсивности рассуждений в меню модели (Откл. / Низкая / Средняя / Высокая / Макс.)","models.recommended":"Рекомендуемые","models.star":"Избранное","models.sync":"🔄 Проверить модели тарифа","models.synced_at":"Синхронизировано: {date}","models.synced_msg":"Модели подписки синхронизированы: {total} ({discovered} обнаружено из ClinePass)","models.syncing":"Проверка…","models.th_active":"Вкл","models.th_caps":"Возможности","models.th_ctx":"Контекст","models.th_id":"ID модели","models.th_name":"Имя модели","models.title":"🎯 Выбор моделей в DSH (активно {enabled} из {total})","models.unverified":"Не синхронизировано (резервный каталог)","models.verified":"Подтверждено тарифом","models.vision":"Только с зрением","profiles.add":"Создать профиль","profiles.contextLimit":"Лимит контекста","profiles.default":"По умолчанию","profiles.delete":"Удалить профиль","profiles.desc":"Готовые наборы настроек, системных инструкций и разрешений.","profiles.maxTokens":"Максимум токенов","profiles.name":"Имя профиля","profiles.prompt":"Системный промпт","profiles.save":"Сохранить профиль","profiles.select":"Выбрать профиль","profiles.temperature":"Температура","profiles.title":"Профили настроек","quota.account":"Аккаунт: {email} · Тариф: {plan}","quota.desc":"Официальные скользящие лимиты запросов от ClinePass","quota.refresh":"Обновить квоты","quota.refreshed_msg":"Квоты подписки обновлены","quota.refreshing":"Обновление…","quota.remaining":"Осталось: {pct}%","quota.reset_at":"Сброс: {time}","quota.title":"📊 Квоты и лимиты запросов ClinePass","quota.used":"Использовано {pct}%","quota.window_5h":"⏱ 5-часовой скользящий лимит","quota.window_weekly":"📅 Еженедельный лимит","settings.advanced":"Дополнительно","settings.autoApprove":"Автоодобрение безопасных действий","settings.autoApproveDesc":"Автоматически выполнять команды чтения и безопасные операции без запроса подтверждения","settings.diffViewer":"Встроенный просмотрщик diff","settings.diffViewerDesc":"Отображать подробные различия кода перед применением правок","settings.general":"Основные","settings.loading":"Загрузка настроек ClineBot…","settings.models":"Модели","settings.retry":"Повторить","settings.saveFailed":"Не удалось сохранить настройки","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.security":"Безопасность","settings.soundNotifications":"Звуковые уведомления","settings.soundNotificationsDesc":"Воспроизводить сигнал при завершении длительной задачи или ожидании ввода","settings.subtitle":"Интеграция автономного кодинг-ассистента ClineBot в DeepSeek Harness.","settings.telemetry":"Анонимная телеметрия","settings.telemetryDesc":"Отправлять отчёты о сбоях для улучшения стабильности","settings.title":"Настройки ClineBot","settings.unavailable":"Настройки ClineBot временно недоступны","stats.desc":"Локальный мониторинг запросов, сетевой задержки и расхода токенов через ClinePass.","stats.last_req":"Время последнего запроса","stats.latency":"Задержка последнего запроса","stats.requests":"Успешных / Всего запросов","stats.title":"📈 Телеметрия текущей сессии DSH","stats.tokens":"Оценочные токены сессии","status.connecting":"Подключение к ClineBot…","status.disconnected":"Связь с ClineBot отключена","status.error":"Ошибка инициализации ClineBot","status.idle":"Ожидание задачи","status.ready":"ClineBot готов к работе","status.running":"Выполняется задача ClineBot","subtitle":"Автономный агент ClineBot для глубокого рефакторинга и парного программирования","title":"ClineBot","tools.bash":"Выполнение команд терминала","tools.browser":"Управление браузером","tools.desc":"Разрешённые системные инструменты для выполнения задач агентом.","tools.disableAll":"Отключить все","tools.editor":"Умная правка кода","tools.enableAll":"Включить все","tools.fs":"Чтение и запись файлов","tools.mcp":"Внешние MCP-серверы","tools.title":"Инструменты ClineBot","update.available":"Доступно обновление: v{latestVersion} (текущая: v{currentVersion})","update.btn":"Обновить сейчас","update.checking":"Проверка обновлений…","update.done":"Успешно обновлено до v{version}! Перезапустите DSH для применения.","update.failed":"Ошибка обновления: {error}","update.up_to_date":"Актуальная версия","update.updating":"Обновление…"}}
|
|
1
|
+
{"@goodandready/dsh-clinebot":{"accounts.cancel_btn":"Отмена","accounts.delete_btn":"Удалить","accounts.last_failover":"Последний failover: {from} → {to} ({reason})","accounts.quota_used":"Использовано {pct}%","accounts.save_btn":"Сохранить аккаунт","models.apply_original_all":"⚡ Оригинальные лимиты","models.context_updated_msg":"Лимиты контекста модели обновлены и синхронизированы с DSH.","models.ctx_cancel":"Отмена","models.ctx_custom_placeholder":"Токены (например, 2000000)","models.ctx_default":"По умолчанию ({ctx})","models.ctx_edit":"Изменить контекстное окно","models.ctx_original":"Оригинал ({ctx} · {provider})","models.ctx_save":"Сохранить","models.ctx_tag_custom":"Кастом","models.ctx_tag_original":"Оригинал","models.custom_add_title":"Пользовательские модели","models.custom_btn_add":"Добавить модель","models.custom_btn_del":"Удалить","models.custom_id":"ID модели (например, anthropic/claude-3-7-sonnet)","models.custom_name":"Отображаемое имя (необязательно)","models.effort_auto":"Автоматическая глубина рассуждений","models.filter_all":"Все","models.filter_coding":"Кодинг","models.filter_disabled":"Отключённые","models.filter_recommended":"Рекомендуемые","models.filter_vision":"Зрение","models.reset_contexts_all":"↺ Сбросить контексты","models.search_placeholder":"Поиск моделей по названию, ID или описанию…","stats.cancel_reset":"Отмена","stats.confirm_reset":"Подтвердить сброс?","stats.errors429":"Ограничения частоты 429 (отказоустойчивость)","stats.reset_btn":"Сбросить статистику","stats.top_models":"Топ моделей по расходу токенов"},"dsh-clinebot":{"accounts.active_badge":"Активен","accounts.add_btn":"Добавить аккаунт","accounts.apiBase":"Базовый URL API","accounts.apiKey":"API-ключ","accounts.cancel":"Отмена","accounts.cancel_btn":"Отмена","accounts.cooldown":"Охлаждение: {s}с","accounts.delete":"Удалить","accounts.delete_btn":"Удалить","accounts.delete_confirm":"Удалить аккаунт «{name}»?","accounts.desc":"Управление учётными записями и API-ключами провайдеров для ClineBot.","accounts.edit":"Редактировать","accounts.empty":"Нет настроенных аккаунтов. Добавьте первый аккаунт выше.","accounts.env_placeholder":"Имя переменной окружения (напр. CLINE_API_KEY)","accounts.label_placeholder":"Название аккаунта (напр. Рабочий)","accounts.last_failover":"Последний failover: {from} → {to} ({reason})","accounts.model":"Модель по умолчанию","accounts.pin_btn":"Сделать основным","accounts.pinned_badge":"Основной","accounts.provider":"Провайдер","accounts.quota":"Остаток квоты","accounts.quota_used":"Использовано {pct}%","accounts.rateLimit":"Лимит запросов","accounts.save":"Сохранить аккаунт","accounts.save_btn":"Сохранить аккаунт","accounts.status":"Статус","accounts.title":"Аккаунты ClineBot","badge.key_missing":"Ключ отсутствует","badge.key_ok":"Ключ ✓ ({source})","badge.not_registered":"Не зарегистрирован","badge.offline":"Узел недоступен","badge.online":"Узел онлайн ({latency} мс)","badge.registered":"Зарегистрирован в DSH ({count} моделей)","diag.desc":"ClineBot автоматически регистрируется в моделях DSH при настройке ключа. Вы можете выполнить проверку связи или принудительную синхронизацию.","diag.resync_btn":"Принудительно синхронизировать с DSH","diag.resynced_msg":"Провайдер синхронизирован с моделями DSH ({count} моделей)","diag.resyncing":"Синхронизация…","diag.smoke_btn":"Выполнить экспресс-тест (Ping)","diag.smoke_ok":"Экспресс-тест пройден успешно! Задержка: {latency} мс","diag.smoke_testing":"Тестирование…","diag.title":"⚡ Диагностика и авторегистрация","diag.unregister_btn":"Снять регистрацию в DSH","diag.unregistered_msg":"Провайдер удалён из моделей DSH","diag.unregistering":"Удаление…","header.sub":"Подключение моделей подписки ClinePass ($9.99/мес). Совместимость с OpenAI API, автоматическое отслеживание скользящих лимитов и мгновенная авторегистрация в DSH.","header.title":"Провайдер ClineBot (ClinePass)","key.desc":"Ключ сохраняется непосредственно в хранилище учётных данных DSH (~/.dsh/.credentials.yaml) и никогда не отображается в открытом виде в конфигурациях.","key.empty_err":"Пожалуйста, введите API-ключ перед сохранением","key.env_label":"Имя переменной окружения: ","key.get_key":"Получить ключ в консоли app.cline.bot ↗","key.hide":"Скрыть","key.invalid":"✗ Ошибка проверки ключа: {error}","key.login_fast":"🚀 Быстрый вход через веб","key.login_fast: ":"🚀 Быстрый вход через веб","key.login_waiting":"Ожидание авторизации в браузере…","key.placeholder_empty":"Вставьте ключ ClinePass (cline_...)","key.placeholder_has":"••••••••••••••••••••••••","key.save":"Сохранить ключ","key.saved_msg":"Ключ сохранён в учётных данных DSH. Валидация: {status}","key.saving":"Сохранение…","key.show":"Показать","key.title":"🔑 Авторизация и API-ключ","key.verified":"✓ Ключ подтверждён: {email} ({plan})","key.verifying":"Проверка ключа в сервисе Cline…","models.all":"Все","models.apply_original_all":"⚡ Оригинальные лимиты","models.auto_new":"Новинки","models.coding":"Только кодинг","models.context_updated_msg":"Лимиты контекста модели обновлены и синхронизированы с DSH.","models.ctx_cancel":"Отмена","models.ctx_custom_placeholder":"Токены (например, 2000000)","models.ctx_default":"По умолчанию ({ctx})","models.ctx_edit":"Изменить контекстное окно","models.ctx_original":"Оригинал ({ctx} · {provider})","models.ctx_save":"Сохранить","models.ctx_tag_custom":"Кастом","models.ctx_tag_original":"Оригинал","models.custom_add_title":"Пользовательские модели","models.custom_btn_add":"Добавить модель","models.custom_btn_del":"Удалить","models.custom_id":"ID модели (например, anthropic/claude-3-7-sonnet)","models.custom_name":"Отображаемое имя (необязательно)","models.desc":"Каталог синхронизируется напрямую с подпиской ClinePass. Модели новых тарифов подключаются автоматически. Снимите выбор, чтобы скрыть модель из выбора в чате DSH.","models.effort_auto":"Автоматическая глубина рассуждений","models.filter_all":"Все","models.filter_coding":"Кодинг","models.filter_disabled":"Отключённые","models.filter_recommended":"Рекомендуемые","models.filter_vision":"Зрение","models.reasoning_tooltip":"Выбор интенсивности рассуждений в меню модели (Откл. / Низкая / Средняя / Высокая / Макс.)","models.recommended":"Рекомендуемые","models.reset_contexts_all":"↺ Сбросить контексты","models.search_placeholder":"Поиск моделей по названию, ID или описанию…","models.star":"Избранное","models.sync":"🔄 Проверить модели тарифа","models.synced_at":"Синхронизировано: {date}","models.synced_msg":"Модели подписки синхронизированы: {total} ({discovered} обнаружено из ClinePass)","models.syncing":"Проверка…","models.th_active":"Вкл","models.th_caps":"Возможности","models.th_ctx":"Контекст","models.th_id":"ID модели","models.th_name":"Имя модели","models.title":"🎯 Выбор моделей в DSH (активно {enabled} из {total})","models.unverified":"Не синхронизировано (резервный каталог)","models.verified":"Подтверждено тарифом","models.vision":"Только с зрением","profiles.add":"Создать профиль","profiles.contextLimit":"Лимит контекста","profiles.default":"По умолчанию","profiles.delete":"Удалить профиль","profiles.desc":"Готовые наборы настроек, системных инструкций и разрешений.","profiles.maxTokens":"Максимум токенов","profiles.name":"Имя профиля","profiles.prompt":"Системный промпт","profiles.save":"Сохранить профиль","profiles.select":"Выбрать профиль","profiles.temperature":"Температура","profiles.title":"Профили настроек","quota.account":"Аккаунт: {email} · Тариф: {plan}","quota.desc":"Официальные скользящие лимиты запросов от ClinePass","quota.refresh":"Обновить квоты","quota.refreshed_msg":"Квоты подписки обновлены","quota.refreshing":"Обновление…","quota.remaining":"Осталось: {pct}%","quota.reset_at":"Сброс: {time}","quota.title":"📊 Квоты и лимиты запросов ClinePass","quota.used":"Использовано {pct}%","quota.window_5h":"⏱ 5-часовой скользящий лимит","quota.window_weekly":"📅 Еженедельный лимит","settings.advanced":"Дополнительно","settings.autoApprove":"Автоодобрение безопасных действий","settings.autoApproveDesc":"Автоматически выполнять команды чтения и безопасные операции без запроса подтверждения","settings.diffViewer":"Встроенный просмотрщик diff","settings.diffViewerDesc":"Отображать подробные различия кода перед применением правок","settings.general":"Основные","settings.loading":"Загрузка настроек ClineBot…","settings.models":"Модели","settings.retry":"Повторить","settings.saveFailed":"Не удалось сохранить настройки","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.security":"Безопасность","settings.soundNotifications":"Звуковые уведомления","settings.soundNotificationsDesc":"Воспроизводить сигнал при завершении длительной задачи или ожидании ввода","settings.subtitle":"Интеграция автономного кодинг-ассистента ClineBot в DeepSeek Harness.","settings.telemetry":"Анонимная телеметрия","settings.telemetryDesc":"Отправлять отчёты о сбоях для улучшения стабильности","settings.title":"Настройки ClineBot","settings.unavailable":"Настройки ClineBot временно недоступны","stats.cancel_reset":"Отмена","stats.confirm_reset":"Подтвердить сброс?","stats.desc":"Локальный мониторинг запросов, сетевой задержки и расхода токенов через ClinePass.","stats.errors429":"Ограничения частоты 429 (отказоустойчивость)","stats.last_req":"Время последнего запроса","stats.latency":"Задержка последнего запроса","stats.requests":"Успешных / Всего запросов","stats.reset_btn":"Сбросить статистику","stats.title":"📈 Телеметрия текущей сессии DSH","stats.tokens":"Оценочные токены сессии","stats.top_models":"Топ моделей по расходу токенов","status.connecting":"Подключение к ClineBot…","status.disconnected":"Связь с ClineBot отключена","status.error":"Ошибка инициализации ClineBot","status.idle":"Ожидание задачи","status.ready":"ClineBot готов к работе","status.running":"Выполняется задача ClineBot","subtitle":"Автономный агент ClineBot для глубокого рефакторинга и парного программирования","title":"ClineBot","tools.bash":"Выполнение команд терминала","tools.browser":"Управление браузером","tools.desc":"Разрешённые системные инструменты для выполнения задач агентом.","tools.disableAll":"Отключить все","tools.editor":"Умная правка кода","tools.enableAll":"Включить все","tools.fs":"Чтение и запись файлов","tools.mcp":"Внешние MCP-серверы","tools.title":"Инструменты ClineBot","update.available":"Доступно обновление: v{latestVersion} (текущая: v{currentVersion})","update.btn":"Обновить сейчас","update.checking":"Проверка обновлений…","update.done":"Успешно обновлено до v{version}! Перезапустите DSH для применения.","update.failed":"Ошибка обновления: {error}","update.up_to_date":"Актуальная версия","update.updating":"Обновление…"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"@goodandready-private/dsh-memory-brain":{"field.autoInject":"Автоматически добавлять воспоминания в контекст каждого хода","field.base":"Базовый URL memory-brain","field.checkpointBanking":"Сохранять в память контекст перед сжатием","field.includeNeighbors":"Включать соседние воспоминания (граф)","field.minRecallChars":"Мин. длина для инъекции (символов)","field.neighborK":"Количество соседних воспоминаний","field.predictionLoop":"Цикл прогнозирования контекста","field.recallBudget":"Бюджет воспоминаний (символов)","field.showMemoryIndicator":"Показывать индикатор памяти в ответах","field.timeoutMs":"Таймаут HTTP (мс)","field.token":"Имя переменной токена / учётных данных","hint.token":"Никогда не вставляйте сам токен — только имя учётных данных или переменной окружения (по умолчанию MEMORY_BRAIN_TOKEN).","intro":"Укажите базовый URL сервиса memory-brain. Сохраните токен API в учётных данных (или переменных окружения) и введите только имя ниже.","memory.chip":"память","memory.chip.close":"Закрыть","memory.chip.copied":"Скопировано","memory.chip.copy":"Копировать","memory.chip.title":"Память, использованная в этом ответе","memory.chip.unavailable":"память недоступна","save":"Сохранить","saved":"Настройки сохранены","settings.loading":"Загрузка настроек…","settings.save":"Сохранить","settings.saveFailed":"Ошибка сохранения: ","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.unavailable":"Область настроек недоступна для этого плагина.","subtitle":"Долгосрочная память (recall / remember) через HTTP API memory-brain","title":"Memory Brain","update.action":"Обновить сейчас","update.autoOff":"Автоматическое обновление недоступно в этой среде; выполните обновление через стандартный интерфейс DSH.","update.available":"Доступна версия {version}","update.checking":"Проверка наличия обновлений…","update.failed":"Ошибка обновления: {error}","update.restart":"Обновлено до {version}. Перезапустите веб-профиль DSH, чтобы применить изменения.","update.title":"Версия плагина","update.unavailable":"Не удалось проверить реестр пакетов.","update.upToDate":"Установлена актуальная версия","update.working":"Обновление…"},"@goodandready/dsh-memory-brain":{"field.autoInject":"Автоматически добавлять воспоминания в контекст каждого хода","field.base":"Базовый URL memory-brain","field.checkpointBanking":"Сохранять в память контекст перед сжатием","field.includeNeighbors":"Включать соседние воспоминания (граф)","field.minRecallChars":"Мин. длина для инъекции (символов)","field.neighborK":"Количество соседних воспоминаний","field.predictionLoop":"Цикл прогнозирования контекста","field.recallBudget":"Бюджет воспоминаний (символов)","field.timeoutMs":"Таймаут HTTP (мс)","field.token":"Имя переменной токена / учётных данных","hint.token":"Никогда не вставляйте сам токен — только имя учётных данных или переменной окружения (по умолчанию MEMORY_BRAIN_TOKEN).","intro":"Укажите базовый URL сервиса memory-brain. Сохраните токен API в учётных данных (или переменных окружения) и введите только имя ниже.","save":"Сохранить","saved":"Настройки сохранены","settings.loading":"Загрузка настроек…","settings.save":"Сохранить","settings.saveFailed":"Ошибка сохранения: ","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.unavailable":"Область настроек недоступна для этого плагина.","subtitle":"Долгосрочная память (recall / remember) через HTTP API memory-brain","title":"Memory Brain"},"dsh-memory-brain":{"field.autoInject":"Автоматически добавлять воспоминания в контекст каждого хода","field.base":"Базовый URL memory-brain","field.checkpointBanking":"Сохранять в память контекст перед сжатием","field.includeNeighbors":"Включать соседние воспоминания (граф)","field.minRecallChars":"Мин. длина для инъекции (символов)","field.neighborK":"Количество соседних воспоминаний","field.predictionLoop":"Цикл прогнозирования контекста","field.recallBudget":"Бюджет воспоминаний (символов)","field.timeoutMs":"Таймаут HTTP (мс)","field.token":"Имя переменной токена / учётных данных","hint.token":"Никогда не вставляйте сам токен — только имя учётных данных или переменной окружения (по умолчанию MEMORY_BRAIN_TOKEN).","intro":"Укажите базовый URL сервиса memory-brain. Сохраните токен API в учётных данных (или переменных окружения) и введите только имя ниже.","save":"Сохранить","saved":"Настройки сохранены","settings.loading":"Загрузка настроек…","settings.save":"Сохранить","settings.saveFailed":"Ошибка сохранения: ","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.unavailable":"Область настроек недоступна для этого плагина.","subtitle":"Долгосрочная память (recall / remember) через HTTP API memory-brain","title":"Memory Brain"}}
|
|
1
|
+
{"@goodandready-private/dsh-memory-brain":{"field.autoInject":"Автоматически добавлять воспоминания в контекст каждого хода","field.base":"Базовый URL memory-brain","field.checkpointBanking":"Сохранять в память контекст перед сжатием","field.includeNeighbors":"Включать соседние воспоминания (граф)","field.minRecallChars":"Мин. длина для инъекции (символов)","field.neighborK":"Количество соседних воспоминаний","field.predictionLoop":"Цикл прогнозирования контекста","field.recallBudget":"Бюджет воспоминаний (символов)","field.showMemoryIndicator":"Показывать индикатор памяти в ответах","field.timeoutMs":"Таймаут HTTP (мс)","field.token":"Имя переменной токена / учётных данных","hint.token":"Никогда не вставляйте сам токен — только имя учётных данных или переменной окружения (по умолчанию MEMORY_BRAIN_TOKEN).","intro":"Укажите базовый URL сервиса memory-brain. Сохраните токен API в учётных данных (или переменных окружения) и введите только имя ниже.","memory.chip":"память","memory.chip.close":"Закрыть","memory.chip.copied":"Скопировано","memory.chip.copy":"Копировать","memory.chip.title":"Память, использованная в этом ответе","memory.chip.unavailable":"память недоступна","save":"Сохранить","saved":"Настройки сохранены","settings.loading":"Загрузка настроек…","settings.save":"Сохранить","settings.saveFailed":"Ошибка сохранения: ","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.unavailable":"Область настроек недоступна для этого плагина.","subtitle":"Долгосрочная память (recall / remember) через HTTP API memory-brain","title":"Memory Brain","update.action":"Обновить сейчас","update.autoOff":"Автоматическое обновление недоступно в этой среде; выполните обновление через стандартный интерфейс DSH.","update.available":"Доступна версия {version}","update.checking":"Проверка наличия обновлений…","update.failed":"Ошибка обновления: {error}","update.restart":"Обновлено до {version}. Перезапустите веб-профиль DSH, чтобы применить изменения.","update.title":"Версия плагина","update.unavailable":"Не удалось проверить реестр пакетов.","update.upToDate":"Установлена актуальная версия","update.working":"Обновление…"},"@goodandready/dsh-memory-brain":{"field.autoInject":"Автоматически добавлять воспоминания в контекст каждого хода","field.base":"Базовый URL memory-brain","field.checkpointBanking":"Сохранять в память контекст перед сжатием","field.includeNeighbors":"Включать соседние воспоминания (граф)","field.minRecallChars":"Мин. длина для инъекции (символов)","field.neighborK":"Количество соседних воспоминаний","field.predictionLoop":"Цикл прогнозирования контекста","field.recallBudget":"Бюджет воспоминаний (символов)","field.showMemoryIndicator":"Показывать индикатор памяти в ответах","field.timeoutMs":"Таймаут HTTP (мс)","field.token":"Имя переменной токена / учётных данных","hint.token":"Никогда не вставляйте сам токен — только имя учётных данных или переменной окружения (по умолчанию MEMORY_BRAIN_TOKEN).","intro":"Укажите базовый URL сервиса memory-brain. Сохраните токен API в учётных данных (или переменных окружения) и введите только имя ниже.","memory.chip":"память","memory.chip.close":"Закрыть","memory.chip.copied":"Скопировано","memory.chip.copy":"Копировать","memory.chip.title":"Память, использованная в этом ответе","memory.chip.unavailable":"память недоступна","save":"Сохранить","saved":"Настройки сохранены","settings.loading":"Загрузка настроек…","settings.save":"Сохранить","settings.saveFailed":"Ошибка сохранения: ","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.unavailable":"Область настроек недоступна для этого плагина.","subtitle":"Долгосрочная память (recall / remember) через HTTP API memory-brain","title":"Memory Brain"},"dsh-memory-brain":{"field.autoInject":"Автоматически добавлять воспоминания в контекст каждого хода","field.base":"Базовый URL memory-brain","field.checkpointBanking":"Сохранять в память контекст перед сжатием","field.includeNeighbors":"Включать соседние воспоминания (граф)","field.minRecallChars":"Мин. длина для инъекции (символов)","field.neighborK":"Количество соседних воспоминаний","field.predictionLoop":"Цикл прогнозирования контекста","field.recallBudget":"Бюджет воспоминаний (символов)","field.showMemoryIndicator":"Показывать индикатор памяти в ответах","field.timeoutMs":"Таймаут HTTP (мс)","field.token":"Имя переменной токена / учётных данных","hint.token":"Никогда не вставляйте сам токен — только имя учётных данных или переменной окружения (по умолчанию MEMORY_BRAIN_TOKEN).","intro":"Укажите базовый URL сервиса memory-brain. Сохраните токен API в учётных данных (или переменных окружения) и введите только имя ниже.","memory.chip":"память","memory.chip.close":"Закрыть","memory.chip.copied":"Скопировано","memory.chip.copy":"Копировать","memory.chip.title":"Память, использованная в этом ответе","memory.chip.unavailable":"память недоступна","save":"Сохранить","saved":"Настройки сохранены","settings.loading":"Загрузка настроек…","settings.save":"Сохранить","settings.saveFailed":"Ошибка сохранения: ","settings.saved":"Настройки сохранены","settings.saving":"Сохранение…","settings.unavailable":"Область настроек недоступна для этого плагина.","subtitle":"Долгосрочная память (recall / remember) через HTTP API memory-brain","title":"Memory Brain"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"@goodandready/dsh-dsml-artifact-guard":{"checkUpdateFailed":"Не удалось проверить обновления","checking":"Проверка...","disabledNotice":"Защита отключена. Теги могут отображаться в чате.","mode":"Режим работы","modeAudit":"Только аудит","modeDisabled":"Отключено","modeSanitize":"Очистка потока (рекомендуется)","modelId":"Идентификатор модели","providerId":"Идентификатор провайдера","ready":"Сохранить настройки","saveError":"Ошибка сохранения: {msg}","saved":"Настройки сохранены","saving":"Сохранение…","statusUnavailable":"Служба настроек недоступна.","sub":"Удаляет утекшие закрывающие теги протокола DSML из текстовых потоков модели","subtitle":"Очистка закрывающих тегов протокола DSML","title":"Защита протокольных тегов","upToDate":"Актуальная версия","updateAvailable":"Доступно обновление: v{v}","updateChecking":"Проверка обновлений…","updateFailed":"Ошибка обновления: {msg}","updateNow":"Обновить сейчас","updateSuccess":"Обновлено до v{v}. Перезапустите службу DSH для применения.","updating":"Обновление...","version":"Версия"},"dsh-dsml-artifact-guard":{"checkUpdateFailed":"Не удалось проверить обновления","checking":"Проверка...","disabledNotice":"Защита отключена. Теги могут отображаться в чате.","mode":"Режим работы","modeAudit":"Только аудит","modeDisabled":"Отключено","modeSanitize":"Очистка потока (рекомендуется)","modelId":"Идентификатор модели","providerId":"Идентификатор провайдера","ready":"Сохранить настройки","saveError":"Ошибка сохранения: {msg}","saved":"Настройки сохранены","saving":"Сохранение…","statusUnavailable":"Служба настроек недоступна.","sub":"Удаляет утекшие закрывающие теги протокола DSML из текстовых потоков модели","subtitle":"Очистка закрывающих тегов протокола DSML","title":"Защита протокольных тегов","upToDate":"Актуальная версия","updateAvailable":"Доступно обновление: v{v}","updateChecking":"Проверка обновлений…","updateFailed":"Ошибка обновления: {msg}","updateNow":"Обновить сейчас","updateSuccess":"Обновлено до v{v}. Перезапустите службу DSH для применения.","updating":"Обновление...","version":"Версия"}}
|
|
1
|
+
{"@goodandready/dsh-dsml-artifact-guard":{"checkUpdateFailed":"Не удалось проверить обновления","checking":"Проверка...","disabledNotice":"Защита отключена. Теги могут отображаться в чате.","legacyClear":"Очистить устаревшие поля","legacyDetected":"Обнаружены устаревшие поля providerId / modelId: действуют как дополнительное правило.","mode":"Режим работы","modeAudit":"Только аудит","modeDisabled":"Отключено","modeSanitize":"Очистка потока (рекомендуется)","modelId":"Идентификатор модели","modelPattern":"Регулярное выражение модели (RegExp)","modelPatternHint":"Регистронезависимое регулярное выражение для сопоставления с ID моделей (например, deepseek, deepseek-v4.*). По умолчанию: deepseek.","providerId":"Идентификатор провайдера","providers":"Целевые провайдеры (опционально)","providersHint":"Список ID провайдеров через запятую. Оставьте пустым для защиты всех провайдеров.","providersPlaceholder":"все провайдеры (через запятую, например commandcode, deepseek-official)","ready":"Сохранить настройки","saveError":"Ошибка сохранения: {msg}","saved":"Настройки сохранены","saving":"Сохранение…","statusUnavailable":"Служба настроек недоступна.","sub":"Удаляет утекшие закрывающие теги протокола DSML из текстовых потоков модели","subtitle":"Очистка закрывающих тегов протокола DSML","title":"Защита протокольных тегов","upToDate":"Актуальная версия","updateAvailable":"Доступно обновление: v{v}","updateChecking":"Проверка обновлений…","updateFailed":"Ошибка обновления: {msg}","updateNow":"Обновить сейчас","updateSuccess":"Обновлено до v{v}. Перезапустите службу DSH для применения.","updating":"Обновление...","version":"Версия"},"dsh-dsml-artifact-guard":{"checkUpdateFailed":"Не удалось проверить обновления","checking":"Проверка...","disabledNotice":"Защита отключена. Теги могут отображаться в чате.","legacyClear":"Очистить устаревшие поля","legacyDetected":"Обнаружены устаревшие поля providerId / modelId: действуют как дополнительное правило.","mode":"Режим работы","modeAudit":"Только аудит","modeDisabled":"Отключено","modeSanitize":"Очистка потока (рекомендуется)","modelId":"Идентификатор модели","modelPattern":"Регулярное выражение модели (RegExp)","modelPatternHint":"Регистронезависимое регулярное выражение для сопоставления с ID моделей (например, deepseek, deepseek-v4.*). По умолчанию: deepseek.","providerId":"Идентификатор провайдера","providers":"Целевые провайдеры (опционально)","providersHint":"Список ID провайдеров через запятую. Оставьте пустым для защиты всех провайдеров.","providersPlaceholder":"все провайдеры (через запятую, например commandcode, deepseek-official)","ready":"Сохранить настройки","saveError":"Ошибка сохранения: {msg}","saved":"Настройки сохранены","saving":"Сохранение…","statusUnavailable":"Служба настроек недоступна.","sub":"Удаляет утекшие закрывающие теги протокола DSML из текстовых потоков модели","subtitle":"Очистка закрывающих тегов протокола DSML","title":"Защита протокольных тегов","upToDate":"Актуальная версия","updateAvailable":"Доступно обновление: v{v}","updateChecking":"Проверка обновлений…","updateFailed":"Ошибка обновления: {msg}","updateNow":"Обновить сейчас","updateSuccess":"Обновлено до v{v}. Перезапустите службу DSH для применения.","updating":"Обновление...","version":"Версия"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"dsh-model-sync":{"acknowledge":"Подтвердить","addAlias":"Сохранить алиас","aliasPlaceholder":"Алиас (например, gpt-4o-latest)","all":"Все провайдеры с API-ключами","allModels":"Все модели","apply":"Применить изменения","autoApplySchedule":"Автоматически применять изменения","batchTry":"Проверить выбранные модели","batchTryDeselectUnreachable":"Снять выбор с недоступных","batchTryResults":"Пакетная проверка: доступно %d из %d","batchTryRunning":"Проверка…","cacheHoursAgo":"кэш %d ч назад","cancel":"Отмена","capabilityCount":"показано","capabilityFilter":"Фильтр по возможностям","checkCredentials":"Проверить ключи","checkForUpdates":"Проверить обновления","checkUpdateFailed":"Не удалось проверить обновления","checkingUpdates":"Проверка…","credentialReady":"настроен","credentials":"Диагностика ключей","deprecated":"deprecated","deprecatesIn":"Устареет через %d дн.","desc":"Обновление каталогов моделей провайдеров по API-ключам. По умолчанию включён безопасный предпросмотр (dry-run); применение изменений выполняется явно.","deselectAllFiltered":"Снять выбор с показанных","diffAdded":"добавлено","diffChanged":"изменена метаинформация","diffRemoved":"удалено","diffRenamed":"переименовано","dormant":"не настроен","dryRun":"Только предпросмотр (dry-run)","empty":"нет настроенных провайдеров","enableContextFilter":"Фильтровать по минимальному контексту","enableCostFilter":"Фильтровать по максимальной цене","exportConfig":"Экспорт настроек","exportImportTitle":"Резервное копирование и восстановление настроек","failure":"ошибка","filterCheap":"Экономные ≤ $1/1M","filterContext100k":"Контекст ≥ 100k","filterCostContext":"Ограничения по цене и контексту","health":"Проверить доступность","healthDormant":"не настроен","healthError":"недоступна","healthOk":"доступна","hideSettings":"Скрыть настройки","history":"История синхронизаций","historyRun":"Запуск","importConfig":"Импорт настроек","importError":"Ошибка импорта: %s","importPlaceholder":"Вставьте JSON-конфигурацию сюда…","importSuccess":"Конфигурация успешно импортирована","intervalMinutes":"Интервал (в минутах)","invalidPattern":"Некорректный regex-шаблон: %s","invertFiltered":"Инвертировать выбор","lastRun":"Последний запуск","loading":"Загрузка…","markRead":"Прочитано","maxPricePerMillion":"Макс. цена ($ / 1 млн токенов)","minContextTokens":"Мин. размер контекста (токенов)","missingCredential":"не настроен","modelAliases":"Алиасы моделей","nextRun":"следующий запуск","noAliases":"Алиасы моделей не заданы.","noCapabilities":"В этом каталоге нет метаданных о возможностях.","noHistory":"Истории синхронизаций нет.","noModels":"В текущем каталоге нет моделей.","noNotifications":"Новых уведомлений нет.","noProviders":"Провайдеры с API-ключами не найдены.","notifications":"Уведомления","ok":"готов","partial":"частичный успех","pickerNote":"Выбранные модели сразу станут доступны в переключателе моделей DSH.","policy":"Ручной отбор моделей","policyDeny":"Запрещённые возможности (через запятую)","policyExclude":"Правила исключения (по одному regex в строке)","policyInclude":"Правила включения (по одному regex в строке)","policyNote":"Шаблоны сопоставляются с ID, именем и тегами моделей. Нажмите «Применить изменения», чтобы обновить список в DSH.","policyRequire":"Обязательные возможности (через запятую)","previewAdded":"Добавлено","previewApply":"Применить изменения","previewChanged":"Изменено","previewDismiss":"Закрыть предпросмотр","previewNone":"Изменений не обнаружено.","previewRemoved":"Удалено","previewTitle":"Предпросмотр изменений","refresh":"Обновить статус","refreshAll":"Обновить всё","removeAlias":"Удалить алиас","removeMissing":"Подтвердить удаление устаревших","report":"Итог запуска","restartRequired":" (требуется перезапуск)","rollback":"Откатить каталог","rollbackConfirm":"Откатить каталог этого провайдера к выбранному снимку?","run":"Найти модели","running":"синхронизация…","savePolicy":"Сохранить политику","saveScheduler":"Сохранить расписание","saveSelection":"Сохранить и применить выбор","scheduleEnabled":"Включить фоновое расписание","scheduler":"Планировщик","schedulerOff":"выключен","schedulerOn":"включён","schedulerSaved":"Сохранено","schedulerSettings":"Настройка планировщика","scopeUnavailable":"Служба настроек недоступна.","searchPlaceholder":"Поиск по ID / имени / тегу","selectAllFiltered":"Выбрать все показанные","selectAtLeastOne":"Выберите хотя бы одну модель или используйте вариант «Все модели».","selectModels":"Выбор моделей","selected":"выбрано","showMore":"Показать ещё (%d)","showSettings":"Показать настройки","showingCount":"Показано %d из %d моделей","sortContext":"Контекст ↓","sortDate":"Новые ↓","sortName":"Имя А→Я","sortPrice":"Цена ↑","stale":"устарела","success":"успех","targetModel":"Целевая модель","targetProvider":"Провайдер","title":"Синхронизация моделей","updateSuccess":"Обновлено до "}}
|
|
1
|
+
{"@goodandready/dsh-model-sync":{"aliasBestCodeDesc":"Высокая производительность для кодинга и рассуждений","aliasCheapDesc":"Минимальная стоимость токенов","aliasFastDesc":"Минимальное время ответа среди доступных моделей","diffWebhookSecret":"Секрет вебхука (опционально)","diffWebhookUrl":"URL вебхука","diffWebhooks":"Внешние вебхуки изменений","notifyOnModelAdded":"Уведомлять о новых моделях","notifyOnModelDeprecated":"Уведомлять об устаревших / удалённых","notifyOnPriceChanged":"Уведомлять об изменении цен","resolveAlias":"Проверить","resolvingAlias":"Вычисление…","saveWebhook":"Сохранить настройки вебхука","testWebhook":"Проверить вебхук","upToDate":"Установлена актуальная версия","updateAvailable":"Доступна новая версия: ","updateFailed":"Ошибка обновления: ","updateNow":"Обновить сейчас","updaterCheck":"Проверить обновления","updaterChecking":"Проверка…","updaterTitle":"Обновление плагина","updating":"Обновление…","virtualAliasDesc":"Динамические псевдонимы направляют запросы к оптимальным моделям по задержке, цене и проверкам доступности.","virtualAliases":"Виртуальные смарт-псевдонимы","webhookFailed":"Ошибка проверки вебхука: %s","webhookSaved":"Настройки вебхука сохранены","webhookSuccess":"Вебхук успешно протестирован","webhookTesting":"Проверка…"},"dsh-model-sync":{"acknowledge":"Подтвердить","addAlias":"Сохранить алиас","aliasBestCodeDesc":"Высокая производительность для кодинга и рассуждений","aliasCheapDesc":"Минимальная стоимость токенов","aliasFastDesc":"Минимальное время ответа среди доступных моделей","aliasPlaceholder":"Алиас (например, gpt-4o-latest)","all":"Все провайдеры с API-ключами","allModels":"Все модели","apply":"Применить изменения","autoApplySchedule":"Автоматически применять изменения","batchTry":"Проверить выбранные модели","batchTryDeselectUnreachable":"Снять выбор с недоступных","batchTryResults":"Пакетная проверка: доступно %d из %d","batchTryRunning":"Проверка…","cacheHoursAgo":"кэш %d ч назад","cancel":"Отмена","capabilityCount":"показано","capabilityFilter":"Фильтр по возможностям","checkCredentials":"Проверить ключи","checkForUpdates":"Проверить обновления","checkUpdateFailed":"Не удалось проверить обновления","checkingUpdates":"Проверка…","credentialReady":"настроен","credentials":"Диагностика ключей","deprecated":"deprecated","deprecatesIn":"Устареет через %d дн.","desc":"Обновление каталогов моделей провайдеров по API-ключам. По умолчанию включён безопасный предпросмотр (dry-run); применение изменений выполняется явно.","deselectAllFiltered":"Снять выбор с показанных","diffAdded":"добавлено","diffChanged":"изменена метаинформация","diffRemoved":"удалено","diffRenamed":"переименовано","diffWebhookSecret":"Секрет вебхука (опционально)","diffWebhookUrl":"URL вебхука","diffWebhooks":"Внешние вебхуки изменений","dormant":"не настроен","dryRun":"Только предпросмотр (dry-run)","empty":"нет настроенных провайдеров","enableContextFilter":"Фильтровать по минимальному контексту","enableCostFilter":"Фильтровать по максимальной цене","exportConfig":"Экспорт настроек","exportImportTitle":"Резервное копирование и восстановление настроек","failure":"ошибка","filterCheap":"Экономные ≤ $1/1M","filterContext100k":"Контекст ≥ 100k","filterCostContext":"Ограничения по цене и контексту","health":"Проверить доступность","healthDormant":"не настроен","healthError":"недоступна","healthOk":"доступна","hideSettings":"Скрыть настройки","history":"История синхронизаций","historyRun":"Запуск","importConfig":"Импорт настроек","importError":"Ошибка импорта: %s","importPlaceholder":"Вставьте JSON-конфигурацию сюда…","importSuccess":"Конфигурация успешно импортирована","intervalMinutes":"Интервал (в минутах)","invalidPattern":"Некорректный regex-шаблон: %s","invertFiltered":"Инвертировать выбор","lastRun":"Последний запуск","loading":"Загрузка…","markRead":"Прочитано","maxPricePerMillion":"Макс. цена ($ / 1 млн токенов)","minContextTokens":"Мин. размер контекста (токенов)","missingCredential":"не настроен","modelAliases":"Алиасы моделей","nextRun":"следующий запуск","noAliases":"Алиасы моделей не заданы.","noCapabilities":"В этом каталоге нет метаданных о возможностях.","noHistory":"Истории синхронизаций нет.","noModels":"В текущем каталоге нет моделей.","noNotifications":"Новых уведомлений нет.","noProviders":"Провайдеры с API-ключами не найдены.","notifications":"Уведомления","notifyOnModelAdded":"Уведомлять о новых моделях","notifyOnModelDeprecated":"Уведомлять об устаревших / удалённых","notifyOnPriceChanged":"Уведомлять об изменении цен","ok":"готов","partial":"частичный успех","pickerNote":"Выбранные модели сразу станут доступны в переключателе моделей DSH.","policy":"Ручной отбор моделей","policyDeny":"Запрещённые возможности (через запятую)","policyExclude":"Правила исключения (по одному regex в строке)","policyInclude":"Правила включения (по одному regex в строке)","policyNote":"Шаблоны сопоставляются с ID, именем и тегами моделей. Нажмите «Применить изменения», чтобы обновить список в DSH.","policyRequire":"Обязательные возможности (через запятую)","previewAdded":"Добавлено","previewApply":"Применить изменения","previewChanged":"Изменено","previewDismiss":"Закрыть предпросмотр","previewNone":"Изменений не обнаружено.","previewRemoved":"Удалено","previewTitle":"Предпросмотр изменений","refresh":"Обновить статус","refreshAll":"Обновить всё","removeAlias":"Удалить алиас","removeMissing":"Подтвердить удаление устаревших","report":"Итог запуска","resolveAlias":"Проверить","resolvingAlias":"Вычисление…","restartRequired":" (требуется перезапуск)","rollback":"Откатить каталог","rollbackConfirm":"Откатить каталог этого провайдера к выбранному снимку?","run":"Найти модели","running":"синхронизация…","savePolicy":"Сохранить политику","saveScheduler":"Сохранить расписание","saveSelection":"Сохранить и применить выбор","saveWebhook":"Сохранить настройки вебхука","scheduleEnabled":"Включить фоновое расписание","scheduler":"Планировщик","schedulerOff":"выключен","schedulerOn":"включён","schedulerSaved":"Сохранено","schedulerSettings":"Настройка планировщика","scopeUnavailable":"Служба настроек недоступна.","searchPlaceholder":"Поиск по ID / имени / тегу","selectAllFiltered":"Выбрать все показанные","selectAtLeastOne":"Выберите хотя бы одну модель или используйте вариант «Все модели».","selectModels":"Выбор моделей","selected":"выбрано","showMore":"Показать ещё (%d)","showSettings":"Показать настройки","showingCount":"Показано %d из %d моделей","sortContext":"Контекст ↓","sortDate":"Новые ↓","sortName":"Имя А→Я","sortPrice":"Цена ↑","stale":"устарела","success":"успех","targetModel":"Целевая модель","targetProvider":"Провайдер","testWebhook":"Проверить вебхук","title":"Синхронизация моделей","upToDate":"Установлена актуальная версия","updateAvailable":"Доступна новая версия: ","updateFailed":"Ошибка обновления: ","updateNow":"Обновить сейчас","updateSuccess":"Обновлено до ","updaterCheck":"Проверить обновления","updaterChecking":"Проверка…","updaterTitle":"Обновление плагина","updating":"Обновление…","virtualAliasDesc":"Динамические псевдонимы направляют запросы к оптимальным моделям по задержке, цене и проверкам доступности.","virtualAliases":"Виртуальные смарт-псевдонимы","webhookFailed":"Ошибка проверки вебхука: %s","webhookSaved":"Настройки вебхука сохранены","webhookSuccess":"Вебхук успешно протестирован","webhookTesting":"Проверка…"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"dsh-subscriptions":{"accountLabel":"Аккаунт","accountStatusActive":"Активен","accountStatusExpired":"Истёк срок действия","accountStatusQuarantined":"На карантине (ошибки авторизации)","accountStatusRateLimited":"Лимит запросов исчерпан","activeSubscriptions":"Активные подписки","addAccount":"Добавить аккаунт","advancedSettings":"Расширенные настройки и мониторинг","autoLoopback":"Автоматический перехват токена (Loopback)","autoLoopbackHint":"Слушать локальный порт обратного вызова для автоматического получения токенов OAuth без ручного копирования.","callbackPort":"Порт обратного вызова OAuth","cardIntro":"Аккаунты подписок, ротация и лимиты.","check":"Проверить","checking":"Проверка…","chipActive":"Подписки","close":"Закрыть","closeModal":"Закрыть","codexFastMode":"Быстрый режим Codex (1.5x)","codexFastModeHint":"Включить режим повышенной пропускной способности для моделей OpenAI Codex, если поддерживается подпиской.","codexVerbosity":"Codex streaming verbosity","codexVerbosityDefault":"Default","codexVerbosityHigh":"High","codexVerbosityHint":"Control streaming chunking detail level from the Codex provider.","codexVerbosityLow":"Low","codexVerbosityMedium":"Medium","composerQuota":"Composer quota indicator","composerQuotaBar":"Progress Bar","composerQuotaForecast":"Remaining Forecast","composerQuotaHint":"Display subscription usage indicator directly in the composer toolbar.","composerQuotaOff":"Disabled","composerQuotaPercent":"Percentage","connect":"Подключить","connected":"Подключено","cooldownMin":"Время паузы при ошибках (мин)","cooldownMs":"Failure cooldown (minutes)","cooldownMsHint":"How long to pause a failing or rate-limited account before retrying.","coolingDown":"Остывание (cooldown)","deleteAccount":"Удалить аккаунт","deleteConfirm":"Вы уверены, что хотите удалить подписку «{name}»?","deviceAuthorized":"Signed in","deviceCopy":"Copy code","deviceExpired":"Expired - start again","deviceHint":"Headless: open the link, enter the code, keep this tab open.","deviceLogin":"Device login","devicePending":"Waiting for confirmation","diagCopy":"Copy report","diagGenerate":"Generate diagnostics report","diagHint":"The report has no tokens, emails, proxy addresses or personal data.","diagIssues":"Open issue tracker","disableAccount":"Отключить","disconnect":"Отключить","enableAccount":"Включить","expiryLabel":"expires","expiryNotifyDays":"Expiry warning threshold (days)","expiryNotifyDaysHint":"Notify when subscription renewal or token expiration is within this many days (0 to disable).","fcCalibrating":"calibrating…","fcHours":"h","fcIdle":"no usage","fcMinutes":"m","forecast":"≈","groupAuth":"Авторизация и перенаправление","groupFallback":"Локальный фолбэк","groupPrivacy":"Приватность и список моделей","groupProvider":"Поведение провайдеров","groupRotation":"Ротация и лимиты","headerDesc":"Использование подписок ChatGPT, Claude, Grok, Kimi, Cursor и др. в качестве LLM-провайдеров через OAuth.","headerTitle":"Управление подписками","hide":"Скрыть","hideDeprecated":"Hide deprecated models","hideDeprecatedHint":"Hide older or superseded model variants from model dropdowns.","hostOffline":"Host unreachable","hostOnline":"Host online","howToGetToken":"❓ Instructions","howToGetTokenTitle":"How to get token / API key for this provider","hudHint":"drag · edge docks · click refresh","hudTitle":"Subscription balance","importLocalCli":"📥 From CLI","importLocalCliTitle":"Auto-import token from locally installed CLI on server","importLocalSuccess":"Successfully imported token from local CLI!","importToken":"Save token","importTokenPlace":"Paste token or API key","importTokens":"Импортировать токены","importTokensHint":"Вставьте JSON с сохранёнными токенами для быстрого восстановления доступа.","instructionsTitle":"How to obtain token","intro":"Войдите через пользовательскую подписку. Токены хранятся в защищённом хранилище хоста и не передаются в браузер. После нажатия «Подключить», если провайдер перенаправляет на localhost или страницу сервиса, вставьте перенаправленный URL или полученный код сюда.","loading":"Загрузка…","localFallbackEnabled":"Переключаться на локальные модели при отказе","localFallbackHint":"Автоматически направлять запросы на локальный Ollama или vLLM при недоступности всех подписок.","localFallbackProvider":"Локальный провайдер","login":"Войти через браузер","loginFailed":"Не удалось авторизоваться: {error}","loginSuccess":"Авторизация прошла успешно!","manualTitle":"If the browser did not come back","maskEmails":"Маскировать email в интерфейсе","missingClientIdAntigravity":"Для Google OAuth требуется собственный Client ID. Укажите antigravityClientId в настройках плагина ниже или нажмите «📥 Из CLI» для импорта активных учётных данных.","modelsCatalogDesc":"Available model catalog across active subscriptions in DeepSeek Harness.","modelsCatalogTitle":"Curated Subscription Models","noAccounts":"Нет подключённых аккаунтов подписок.","none":"none","notConnected":"Не подключено","notifyLimits":"Notify on rate limits","notifyLimitsHint":"Show notification alerts when account usage reaches quota ceiling.","oauthRedirectUrl":"URL перенаправления OAuth","ollamaBaseUrl":"Ollama Base URL","ollamaFallback":"Ollama local fallback","ollamaFallbackHint":"Automatically route queries to a local Ollama instance when cloud quota is exhausted.","ollamaFallbackModel":"Ollama Fallback Model","pastePlaceholder":"Вставьте URL перенаправления или код авторизации","plan":"Тариф / План","privacyMask":"Маскировать email и идентификаторы аккаунтов","privacyMaskHint":"Для демонстраций и демонстрации экрана: скрывает адреса вида j***n@example.com.","probeIntervalMin":"Health probe interval (minutes)","probeIntervalMinHint":"Interval for background checks to refresh account status and quota balance.","providerClaude":"Claude Pro / Team","providerCodex":"ChatGPT Plus / Team (Codex)","providerCursor":"Cursor Pro","providerGrok":"xAI Grok Premium","providerKimi":"Kimi Moonshot","proxyCheck":"Check proxy","proxyFail":"proxy fail","proxyOk":"proxy ok","proxyPlaceholder":"Per-account proxy (http://, https://, socks5://) - optional","quarantineHours":"Период карантина (часов)","quarantineHoursHint":"Время ожидания перед повторной попыткой использовать аккаунт после критической ошибки 401/403.","reconnect":"Переподключить","reconnectRequired":"Reconnect required","refreshQuota":"Обновить квоту","refreshing":"Обновление квоты…","remainingQuota":"Остаток квоты: {percent}%","removeSlot":"Удалить слот","resetAck":"I understand one attempt will be consumed","resetAvailable":"Reset attempts available","resetBusy":"resetting…","resetCooldowns":"Сбросить паузы ожидания","resetCredits":"Reset credits","resetCreditsAction":"Reset ChatGPT Limit","resetCreditsHint":"ChatGPT reset cards: emergency reset for the 5-hour window. Requires a 5s confirmation.","resetDone":"quota reset","resetExpires":"earliest expires","resetGo":"Reset now","resetLabel":"reset","resetNoCredit":"no usable credit (not consumed)","resetNothing":"server says nothing needs a reset (no attempt consumed)","resetReady":"ready","resetRedeemed":"already redeemed earlier","resetWait":"confirm enabled in","rotationStrategy":"Стратегия ротации аккаунтов","rotationStrategyHint":"Round-robin (по очереди), Least-used (наименее используемый) или Priority (по приоритету).","runSmoke":"⚡ Run Smoke Test (Ping)","save":"Сохранить","saved":"Настройки сохранены","saving":"Сохранение…","settingsLoading":"Loading settings…","settingsRetry":"Retry","settingsUnavailable":"Settings are unavailable","show":"Показать","slashLogin":"Login to a subscription provider","slashLogout":"Log out a subscription provider","slashStatus":"Subscription status","slotDetailsTitle":"Slot Details","smokeDesc":"Test live upstream connectivity and measure round-trip latency to the subscription provider.","smokeFail":"Smoke test failed","smokeOk":"Smoke test passed","smokeTesting":"Pinging…","smokeTitle":"Connection Smoke Test (Ping)","statsLastActivity":"Last Activity","statsLatency":"Avg Response Latency","statsRequests":"Successful / Total Requests","statsSuccessRate":"Session Success Rate","statsTitle":"Session Telemetry","storedAs":"Сохранено как","submitCode":"Отправить код","subsActiveHero":"Active Subscription","subsCooldown":"cooldown","subsFastMode":"Fast Mode 1.5x","subsFree":"free","subsHealthy":"Healthy","subsLogged":"connected","subsModalClose":"Close","subsModalTitle":"Subscription Hub","subsNotLogged":"not connected","subsOpenSettings":"All Settings →","subsPill":"SUBS","subsPoolTitle":"Provider Accounts","subsRefresh":"Refresh","subsUsed":"used","switchAccount":"Сменить аккаунт","switchLabel":"Provider","title":"Подписки","tokenExpired":"Токен истёк. Требуется повторная авторизация.","updateAvailable":"Доступно обновление","updateChecking":"Проверка обновлений…","updateFailed":"Ошибка обновления","updateNow":"Обновить","updateSuccessRestart":"Обновление завершено. Перезапуск службы…","updateUpToDate":"Актуальная версия","updating":"Обновление…","usageFull":"Лимит исчерпан (100%)","usageLimitsTitle":"Usage Limits","useOrigin":"Использовать адрес этого Web UI как OAuth redirect_uri","useOriginHint":"Оставьте выключенным, если вы не регистрировали отдельный OAuth-клиент для этого адреса. Официальным CLI-клиентам обычно требуется стандартный redirect URI с последующей вставкой кода.","verifyAccount":"Подтвердить аккаунт","verifyLink":"Открыть ссылку для подтверждения","verifyPrefix":"Google требует однократного подтверждения аккаунта. ","verifySuffix":" затем выполните повторное подключение.","viewQuotaDetails":"Подробности квоты","windowPrimary":"Primary window","windowSecondary":"Secondary window"}}
|
|
1
|
+
{"dsh-subscriptions":{"accountLabel":"Аккаунт","accountStatusActive":"Активен","accountStatusExpired":"Истёк срок действия","accountStatusQuarantined":"На карантине (ошибки авторизации)","accountStatusRateLimited":"Лимит запросов исчерпан","activeSubscriptions":"Активные подписки","addAccount":"Добавить аккаунт","advancedSettings":"Расширенные настройки и мониторинг","autoLoopback":"Автоматический перехват токена (Loopback)","autoLoopbackHint":"Слушать локальный порт обратного вызова для автоматического получения токенов OAuth без ручного копирования.","cacheAnalyze":"Анализ кэша сессии","cacheHitRate":"Коэффициент попадания в кэш","callbackPort":"Порт обратного вызова OAuth","cardIntro":"Аккаунты подписок, ротация и лимиты.","check":"Проверить","checking":"Проверка…","chipActive":"Подписки","close":"Закрыть","closeModal":"Закрыть","codexFastMode":"Быстрый режим Codex (1.5x)","codexFastModeHint":"Включить режим повышенной пропускной способности для моделей OpenAI Codex, если поддерживается подпиской.","codexVerbosity":"Codex streaming verbosity","codexVerbosityDefault":"Default","codexVerbosityHigh":"High","codexVerbosityHint":"Control streaming chunking detail level from the Codex provider.","codexVerbosityLow":"Low","codexVerbosityMedium":"Medium","composerQuota":"Composer quota indicator","composerQuotaBar":"Progress Bar","composerQuotaForecast":"Remaining Forecast","composerQuotaHint":"Display subscription usage indicator directly in the composer toolbar.","composerQuotaOff":"Disabled","composerQuotaPercent":"Percentage","connect":"Подключить","connected":"Подключено","cooldownMin":"Время паузы при ошибках (мин)","cooldownMs":"Failure cooldown (minutes)","cooldownMsHint":"How long to pause a failing or rate-limited account before retrying.","coolingDown":"Остывание (cooldown)","deleteAccount":"Удалить аккаунт","deleteConfirm":"Вы уверены, что хотите удалить подписку «{name}»?","deviceAuthorized":"Signed in","deviceCopy":"Copy code","deviceExpired":"Expired - start again","deviceHint":"Headless: open the link, enter the code, keep this tab open.","deviceLogin":"Device login","devicePending":"Waiting for confirmation","diagCopy":"Copy report","diagGenerate":"Generate diagnostics report","diagHint":"The report has no tokens, emails, proxy addresses or personal data.","diagIssues":"Open issue tracker","disableAccount":"Отключить","disconnect":"Отключить","enableAccount":"Включить","expiryLabel":"expires","expiryNotifyDays":"Expiry warning threshold (days)","expiryNotifyDaysHint":"Notify when subscription renewal or token expiration is within this many days (0 to disable).","fcCalibrating":"calibrating…","fcHours":"h","fcIdle":"no usage","fcMinutes":"m","forecast":"≈","groupAuth":"Авторизация и перенаправление","groupFallback":"Локальный фолбэк","groupPrivacy":"Приватность и список моделей","groupProvider":"Поведение провайдеров","groupRotation":"Ротация и лимиты","headerDesc":"Использование подписок ChatGPT, Claude, Grok, Kimi, Cursor и др. в качестве LLM-провайдеров через OAuth.","headerTitle":"Управление подписками","healthAccount":"Аккаунт","healthActive":"Активен","healthIdle":"В ожидании","healthLatency":"Задержка","healthMatrix":"Матрица здоровья и прогноз квоты","healthQuarantine":"Карантин","healthQuota":"Квота / Запас","healthScore":"Здоровье","healthStatus":"Статус","healthWarmup":"Прогрев","hide":"Скрыть","hideDeprecated":"Hide deprecated models","hideDeprecatedHint":"Hide older or superseded model variants from model dropdowns.","hostOffline":"Host unreachable","hostOnline":"Host online","howToGetToken":"❓ Instructions","howToGetTokenTitle":"How to get token / API key for this provider","hudHint":"drag · edge docks · click refresh","hudTitle":"Subscription balance","importLocalCli":"📥 From CLI","importLocalCliTitle":"Auto-import token from locally installed CLI on server","importLocalSuccess":"Successfully imported token from local CLI!","importToken":"Save token","importTokenPlace":"Paste token or API key","importTokens":"Импортировать токены","importTokensHint":"Вставьте JSON с сохранёнными токенами для быстрого восстановления доступа.","instructionsTitle":"How to obtain token","intro":"Войдите через пользовательскую подписку. Токены хранятся в защищённом хранилище хоста и не передаются в браузер. После нажатия «Подключить», если провайдер перенаправляет на localhost или страницу сервиса, вставьте перенаправленный URL или полученный код сюда.","loading":"Загрузка…","localFallbackEnabled":"Переключаться на локальные модели при отказе","localFallbackHint":"Автоматически направлять запросы на локальный Ollama или vLLM при недоступности всех подписок.","localFallbackProvider":"Локальный провайдер","login":"Войти через браузер","loginFailed":"Не удалось авторизоваться: {error}","loginSuccess":"Авторизация прошла успешно!","manualTitle":"If the browser did not come back","maskEmails":"Маскировать email в интерфейсе","missingClientIdAntigravity":"Для Google OAuth требуется собственный Client ID. Укажите antigravityClientId в настройках плагина ниже или нажмите «📥 Из CLI» для импорта активных учётных данных.","modelsCatalogDesc":"Available model catalog across active subscriptions in DeepSeek Harness.","modelsCatalogTitle":"Curated Subscription Models","noAccounts":"Нет подключённых аккаунтов подписок.","none":"none","notConnected":"Не подключено","notifyLimits":"Notify on rate limits","notifyLimitsHint":"Show notification alerts when account usage reaches quota ceiling.","oauthRedirectUrl":"URL перенаправления OAuth","ollamaBaseUrl":"Ollama Base URL","ollamaFallback":"Ollama local fallback","ollamaFallbackHint":"Automatically route queries to a local Ollama instance when cloud quota is exhausted.","ollamaFallbackModel":"Ollama Fallback Model","pastePlaceholder":"Вставьте URL перенаправления или код авторизации","plan":"Тариф / План","privacyMask":"Маскировать email и идентификаторы аккаунтов","privacyMaskHint":"Для демонстраций и демонстрации экрана: скрывает адреса вида j***n@example.com.","probeIntervalMin":"Health probe interval (minutes)","probeIntervalMinHint":"Interval for background checks to refresh account status and quota balance.","providerClaude":"Claude Pro / Team","providerCodex":"ChatGPT Plus / Team (Codex)","providerCursor":"Cursor Pro","providerGrok":"xAI Grok Premium","providerKimi":"Kimi Moonshot","proxyCheck":"Check proxy","proxyFail":"proxy fail","proxyOk":"proxy ok","proxyPlaceholder":"Per-account proxy (http://, https://, socks5://) - optional","quarantineHours":"Период карантина (часов)","quarantineHoursHint":"Время ожидания перед повторной попыткой использовать аккаунт после критической ошибки 401/403.","reconnect":"Переподключить","reconnectRequired":"Reconnect required","refreshQuota":"Обновить квоту","refreshing":"Обновление квоты…","remainingQuota":"Остаток квоты: {percent}%","removeSlot":"Удалить слот","resetAck":"I understand one attempt will be consumed","resetAvailable":"Reset attempts available","resetBusy":"resetting…","resetCooldowns":"Сбросить паузы ожидания","resetCredits":"Reset credits","resetCreditsAction":"Reset ChatGPT Limit","resetCreditsHint":"ChatGPT reset cards: emergency reset for the 5-hour window. Requires a 5s confirmation.","resetDone":"quota reset","resetExpires":"earliest expires","resetGo":"Reset now","resetLabel":"reset","resetNoCredit":"no usable credit (not consumed)","resetNothing":"server says nothing needs a reset (no attempt consumed)","resetReady":"ready","resetRedeemed":"already redeemed earlier","resetWait":"confirm enabled in","rotationStrategy":"Стратегия ротации аккаунтов","rotationStrategyHint":"Round-robin (по очереди), Least-used (наименее используемый) или Priority (по приоритету).","runSmoke":"⚡ Run Smoke Test (Ping)","save":"Сохранить","saved":"Настройки сохранены","saving":"Сохранение…","settingsLoading":"Loading settings…","settingsRetry":"Retry","settingsUnavailable":"Settings are unavailable","show":"Показать","slashLogin":"Login to a subscription provider","slashLogout":"Log out a subscription provider","slashStatus":"Subscription status","slotDetailsTitle":"Slot Details","smokeDesc":"Test live upstream connectivity and measure round-trip latency to the subscription provider.","smokeFail":"Smoke test failed","smokeOk":"Smoke test passed","smokeTesting":"Pinging…","smokeTitle":"Connection Smoke Test (Ping)","statsLastActivity":"Last Activity","statsLatency":"Avg Response Latency","statsRequests":"Successful / Total Requests","statsSuccessRate":"Session Success Rate","statsTitle":"Session Telemetry","storedAs":"Сохранено как","submitCode":"Отправить код","subsActiveHero":"Active Subscription","subsCooldown":"cooldown","subsFastMode":"Fast Mode 1.5x","subsFree":"free","subsHealthy":"Healthy","subsLogged":"connected","subsModalClose":"Close","subsModalTitle":"Subscription Hub","subsNotLogged":"not connected","subsOpenSettings":"All Settings →","subsPill":"SUBS","subsPoolTitle":"Provider Accounts","subsRefresh":"Refresh","subsUsed":"used","switchAccount":"Сменить аккаунт","switchLabel":"Provider","title":"Подписки","tokenExpired":"Токен истёк. Требуется повторная авторизация.","tokensSaved":"Сэкономлено токенов","updateAvailable":"Доступно обновление","updateChecking":"Проверка обновлений…","updateFailed":"Ошибка обновления","updateNow":"Обновить","updateSuccessRestart":"Обновление завершено. Перезапуск службы…","updateUpToDate":"Актуальная версия","updating":"Обновление…","usageFull":"Лимит исчерпан (100%)","usageLimitsTitle":"Usage Limits","useOrigin":"Использовать адрес этого Web UI как OAuth redirect_uri","useOriginHint":"Оставьте выключенным, если вы не регистрировали отдельный OAuth-клиент для этого адреса. Официальным CLI-клиентам обычно требуется стандартный redirect URI с последующей вставкой кода.","verifyAccount":"Подтвердить аккаунт","verifyLink":"Открыть ссылку для подтверждения","verifyPrefix":"Google требует однократного подтверждения аккаунта. ","verifySuffix":" затем выполните повторное подключение.","viewQuotaDetails":"Подробности квоты","windowPrimary":"Primary window","windowSecondary":"Secondary window"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"dsh-tts":{"activeProvider":"Активный провайдер","addProvider":"Добавить провайдера","addRule":"Добавить правило","addSubagentRole":"Добавить субагента","advancedCollapsed":"Расширенные настройки","advancedHint":"Лимиты и переопределение эндпоинтов. API-ключи провайдеров настраиваются в редакторе цепочки; имена слотов учётных данных (*KeyEnv) доступны только в конфигурации.","advancedTitle":"Расширенные","announce":"Озвучивать запросы подтверждения","announceHint":"Произносить вслух и проигрывать колокольчик, когда агент останавливается для подтверждения действия или задает вопрос.","approvalHint":"Произносится при запросе подтверждения; добавляется имя инструмента.","approvalText":"Формулировка подтверждения","autoDetect":"Автоопределение языка фрагментов","autoDetectHint":"Определять язык каждого озвучиваемого фрагмента вместо глобальной настройки языка.","autoDetectSubagent":"Автоопределение ролей субагентов","autoplayBlocked":"Звук заблокирован браузером — нажмите на страницу для включения","azureEndpoint":"Azure Speech: базовый URL","azureHint":"Требуется для провайдера Azure, например eastus.","azureRegion":"Регион Azure","bargeIn":"Умолкать при вашей речи","bargeInHint":"Прекращать чтение в момент включения микрофона.","binHint":"Ищется в PATH, если не указан абсолютный путь.","breakerOpen":"Защитный размыкатель активен (сбои провайдера)","breakerThreshold":"Порог ошибок до размыкания","breakerTimeout":"Время восстановления размыкателя (с)","cache":"Кэш синтеза речи","cacheClear":"Очистить кэш","cacheCleared":"Кэш озвучивания очищен","cacheHint":"Повторное использование синтезированного аудио для одинаковых фраз.","cacheMaxMb":"Максимальный объём кэша (МБ)","cacheMaxMbHint":"При заполнении кэша старые записи вытесняются по алгоритму LRU.","cacheStats":"Кэш","cardHint":"Озвучивание ответов ассистента в Web UI: выбор провайдеров, фолбэк-цепочки, кэш","chain":"Цепочка провайдеров озвучивания","chainHint":"Провайдеры опрашиваются по порядку до первого успешного ответа.","chainHintCard":"Выберите провайдера, вставьте его API-ключ и сохраните (или покиньте поле ключа). Ключ немедленно сохраняется в хранилище учетных данных хоста. Браузер никогда не считывает его обратно.","chainTitle":"Цепочка провайдеров","chime":"Звуковой сигнал","chimeHint":"ding, beep или none (без звука).","clear":"Очистить","clearCache":"Очистить кэш","clearQueue":"Очистить очередь","codeBlock":"блок кода, {n} строк","collapse":"Свернуть","configured":"Настроено","confirmClearCache":"Очистить кэш синтеза? Это действие необратимо.","confirmDeleteModel":"Удалить загруженные веса для этой модели?","currentVoice":"Голос","customBaseUrl":"Пользовательский endpoint TTS","customBaseUrlHint":"OpenAI-совместимый origin, например http://localhost:8880/v1; пусто = выключено.","customKeyEnv":"Переменная окружения ключа","customKeyEnvHint":"Имя переменной с токеном авторизации для пользовательского endpoint.","deepgramEndpoint":"Deepgram: базовый URL","deleteModel":"Удалить","deleteRule":"Удалить правило","dockClearQueue":"Очистить очередь","dockCurrent":"Сейчас звучит","dockFavorite":"Избранное","dockFavorites":"Избранные фрагменты","dockHide":"Скрыть плеер","dockLabel":"Синтез речи","dockNone":"Ожидание текста","dockPause":"Пауза","dockQueue":"Очередь","dockReplay":"Повторить","dockResume":"Продолжить речь","dockSpeed":"Скорость","dockStop":"Остановить речь","dockUnfavorite":"Убрать из избранного","down":"Вниз","downloading":"Загрузка…","edgeBin":"Бинарный файл edge-tts","edgeEndpoint":"Edge TTS: базовый URL","edgeHint":"CLI Python из пакета edge-tts.","elevenlabsEndpoint":"ElevenLabs: базовый URL","elevenlabsModel":"Модель ElevenLabs","enableItDictionary":"Встроенный IT-словарь","enableItDictionaryHint":"Автокоррекция произношения для SQL, Nginx, K8s, Docker, API, JSON, YAML и др.","enableLocalEngines":"Включить локальные движки","enableLocalEnginesHint":"Использовать Kokoro или F5-TTS при наличии.","enableSound":"Включить звук","espeakBin":"Бинарный файл eSpeak","espeakEndpoint":"eSpeak: базовый URL","espeakHint":"Обычно espeak-ng.","expand":"Развернуть","exportAudio":"Экспорт аудиозаписи","exportJson":"📥 Экспорт JSON","exportSuccess":"Аудиофайл экспортирован","filterCode":"Пропускать блоки кода при чтении","filterCodeHint":"Не озвучивать программный код, чтение продолжается со следующего абзаца.","filterMarkdown":"Очищать Markdown-разметку","filterMarkdownHint":"Удалять спецсимволы разметки перед отправкой в движок TTS.","fromEnv":"Задано в окружении","general":"Общие","googleEndpoint":"Google TTS: базовый URL","groqEndpoint":"Groq: базовый URL","groqModel":"Модель Groq","importJson":"📤 Импорт JSON","installF5":"Установить (2.1 ГБ)","installKokoro":"Установить (350 МБ)","installed":"Установлено","invalidJsonFormat":"Неверный формат JSON словаря","language":"Язык","languageHint":"Подсказка для голосов, которым требуется локаль (eSpeak, Azure SSML).","lastError":"Последняя ошибка","loadItDictionary":"Заполнить терминами IT","loading":"Загрузка…","localEnginesHint":"Синтез речи полностью автономно без API-ключей.","localEnginesTitle":"Локальные движки (офлайн)","localProvider":"Локальный / CLI провайдер — API-ключ не требуется","longReply":"Длинные ответы","longReplyHint":"truncate: обрезать по лимиту; summarize: краткий пересказ; full: читать полностью.","maxChars":"Максимум символов","maxCharsHint":"Жёсткий лимит перед обработкой длинного ответа; 0 отключает ограничение.","maxCharsPerChunk":"Максимум символов во фрагменте","maxCharsPerChunkHint":"Длинные сообщения разбиваются на части указанного размера.","maxQueue":"Макс. длина очереди","maxQueueHint":"Отбрасывать старые ожидающие фрагменты сверх этого количества.","messengerInstallHint":"Для отправки голосовых заметок в мессенджеры установите плагин командой","messengerIntegrationHint":"Голосовые ответы и заметки, отправляемые через @goodandready/dsh-messenger-gateway.","messengerIntegrationTitle":"Интеграция с мессенджерами (Telegram, Discord)","messengerNotInstalledTitle":"Требуемый плагин @goodandready/dsh-messenger-gateway не установлен","messengerTtsEnabled":"Голосовые ответы в мессенджерах","messengerTtsEnabledHint":"Разрешить шлюзу мессенджеров доставлять ответы голосовыми сообщениями.","mimoBaseUrl":"Базовый URL MiMo","mimoBaseUrlHint":"Корень API MiMo; синтез использует chat endpoint.","mimoFormat":"Формат MiMo","mimoFormatHint":"mp3 или wav.","minimaxBin":"Исполняемый файл MiniMax CLI","minimaxBinHint":"Ищется в PATH, если не абсолютный путь; установите и авторизуйтесь отдельно.","narrateQuotesHint":"Читать только «фрагменты в кавычках» из ответа.","narrateQuotesOnly":"Только цитаты","newSubagentRole":"Имя субагента (например, coder, reviewer)","notInstalled":"Не установлено","notSet":"Не задано","openaiBaseUrl":"Базовый URL OpenAI","openaiBaseUrlHint":"OpenAI-совместимый origin для провайдера openai.","openaiEndpoint":"OpenAI: базовый URL","openaiModel":"Модель OpenAI TTS","openrouterEndpoint":"OpenRouter: базовый URL","pause":"Пауза","piperBin":"Бинарный файл Piper","piperEndpoint":"Piper: базовый URL","piperModel":"Модель Piper","piperModelHint":"Абсолютный путь к модели ONNX. Оставьте пустым, чтобы пропустить Piper.","pitch":"Высота тона голоса","play":"Воспроизвести","playbackRate":"Скорость чтения","preloadNext":"Предзагрузка следующей фразы","preloadNextHint":"Синтезировать следующий фрагмент во время воспроизведения текущего.","preview":"Предпросмотр","previewPhrase":"Проверка голоса.","previewRule":"Прослушать","pronFrom":"Заменять","pronHint":"Правила выполняются сверху вниз. Оберните шаблон в /…/ для регулярного выражения; Lang фильтрует язык.","pronLang":"Язык","pronTitle":"Произношение","pronTo":"На","pronWhole":"Слово целиком","providerError":"Ошибка провайдера {provider}: {error}","questionHint":"Произносится, когда агент задает вопрос. Пустое значение отключает.","questionText":"Формулировка вопроса","queueEmpty":"Очередь воспроизведения пуста","queueLen":"Очередь","rate":"Скорость","rateHint":"От 0.5 до 2. Скорость синтеза не меняется; браузер воспроизводит быстрее или медленнее.","recent":"Недавние","recentEmpty":"Записей пока нет","remove":"Удалить","removeRegex":"Удалять по regex","removeRegexHint":"Глобальное регулярное выражение; совпадения вырезаются перед синтезом.","resume":"Продолжить","retry":"Повторить","roleApproval":"Подтверждение","roleError":"Ошибка","roleReply":"Ответ","role_coder":"Разработчик","role_planner":"Планировщик","role_reviewer":"Ревьюер","rolesHint":"Пустые поля наследуют основную цепочку.","rolesTitle":"Роли голосов","ruleCondition":"Условие","ruleRole":"Роль субагента","ruleVoice":"Назначенный голос","runtimeNotBundled":"Среда нейросетевого инференса не встроена","runtimeNotBundledHint":"Загрузка весов не активирует синтез. Для офлайн-TTS используйте Edge, Piper или eSpeak.","save":"Сохранить","saved":"Настройки сохранены","saving":"Сохранение…","secAdvanced":"Расширенные параметры","secCache":"Кэширование аудио","secDock":"Плеер речи","secGeneral":"Общие настройки","secProviders":"Провайдеры синтеза","secRules":"Правила распределения голосов","sentenceChars":"Размер фрагмента предложения","sentenceCharsHint":"Максимум символов на один фрагмент потокового предложения.","skipActions":"Пропускать *действия*","skipActionsHint":"Пропускать блоки действий, выделенные звёздочками.","skipCode":"Пропускать блоки кода","skipCodeHint":"Произносить краткое уведомление вместо чтения кода вслух.","speakAsItGoes":"Озвучивать по мере поступления","speakAsItGoesHint":"Читать каждый ответ сразу по предложениям, не дожидаясь завершения всей реплики.","speakReplies":"Озвучивать ответы агента","speakRepliesHint":"Если включено, каждый готовый ответ синтезируется на хосте и воспроизводится в браузере. Аудио не отправляется обратно в модель.","speakToolCalls":"Озвучивать действия инструментов","speaking":"Воспроизведение…","sseState":"SSE","ssmlStyle":"Стиль интонации SSML","ssmlStyleHint":"Выразительный тон (например, cheerful, serious, empathetic).","statErrors":"Ошибок","statHits":"Попаданий в кэш","statReset":"Сбросить статистику","statTotal":"Всего","statsTitle":"Статистика","statusIdle":"Готов к синтезу","statusOffline":"Хост недоступен","statusOnline":"Хост доступен","statusPlaying":"Воспроизводится","statusSynthesizing":"Синтез аудио…","stop":"Остановить","streamingEnabled":"Мгновенный стриминг (< 300 мс)","streamingEnabledHint":"Воспроизведение аудио через AudioWorklet и SSE в реальном времени.","subagentVoiceRules":"Голоса субагентов","subagentVoiceRulesHint":"Назначение индивидуальных тембров и моделей разным ролям субагентов.","subtitle":"Синтез речи и звуковое сопровождение реплик агента","summaryIntro":"Пересказ ответа…","summaryModel":"Модель суммаризации","summaryModelHint":"провайдер/модель, пусто = модель диалога по умолчанию.","summarySentences":"Длина пересказа","summarySentencesHint":"Количество предложений в голосовом пересказе.","synthesizeFailed":"Не удалось синтезировать речь: {error}","table":"таблица, {n} строк","testProvider":"Проверить провайдера","testVoice":"Прослушать образец","timeoutMs":"Таймаут запроса к TTS (мс)","timeoutMsHint":"Прерывать попытку провайдера после указанного числа миллисекунд.","title":"Синтез речи","up":"Вверх","useF5":"Включить F5-TTS (GPU)","useF5Hint":"Высокоточный zero-shot синтез на NVIDIA GPU.","useKokoro":"Включить Kokoro-82M (CPU)","useKokoroHint":"Быстрый нейросетевой синтез на процессоре.","vadBargeIn":"Прерывание по голосу (VAD Barge-in)","vadBargeInHint":"Мгновенно глушить воспроизведение синтеза речи при обнаружении голоса пользователя.","voice":"Основной голос","voiceDuplex":"Режим Voice-to-Voice","voiceDuplexHint":"Интерактивный голосовой диалог, интегрированный с dsh-voice.","voiceDuplexHintToggle":"Автоматически озвучивать ответ ассистента по окончании речи пользователя.","voiceDuplexTitle":"Голосовой дуплекс (Voice-to-Voice)","voiceInstallHint":"Для включения голосового дуплекса установите плагин командой","voiceNotInstalledTitle":"Требуемый плагин @goodandready/dsh-voice не установлен","voicePitch":"Высота голоса","voiceSpeed":"Скорость речи","volume":"Громкость","volumeMuted":"Без звука"}}
|
|
1
|
+
{"dsh-tts":{"activeProvider":"Активный провайдер","addProvider":"Добавить провайдера","addRule":"Добавить правило","addSubagentRole":"Добавить субагента","advancedCollapsed":"Расширенные настройки","advancedHint":"Лимиты и переопределение эндпоинтов. API-ключи провайдеров настраиваются в редакторе цепочки; имена слотов учётных данных (*KeyEnv) доступны только в конфигурации.","advancedTitle":"Расширенные","announce":"Озвучивать запросы подтверждения","announceHint":"Произносить вслух и проигрывать колокольчик, когда агент останавливается для подтверждения действия или задает вопрос.","approvalHint":"Произносится при запросе подтверждения; добавляется имя инструмента.","approvalText":"Формулировка подтверждения","autoDetect":"Автоопределение языка фрагментов","autoDetectHint":"Определять язык каждого озвучиваемого фрагмента вместо глобальной настройки языка.","autoDetectSubagent":"Автоопределение ролей субагентов","autoplayBlocked":"Звук заблокирован браузером — нажмите на страницу для включения","azureEndpoint":"Azure Speech: базовый URL","azureHint":"Требуется для провайдера Azure, например eastus.","azureRegion":"Регион Azure","bargeIn":"Умолкать при вашей речи","bargeInHint":"Прекращать чтение в момент включения микрофона.","binHint":"Ищется в PATH, если не указан абсолютный путь.","breakerOpen":"Защитный размыкатель активен (сбои провайдера)","breakerThreshold":"Порог ошибок до размыкания","breakerTimeout":"Время восстановления размыкателя (с)","cache":"Кэш синтеза речи","cacheClear":"Очистить кэш","cacheCleared":"Кэш озвучивания очищен","cacheHint":"Повторное использование синтезированного аудио для одинаковых фраз.","cacheMaxMb":"Максимальный объём кэша (МБ)","cacheMaxMbHint":"При заполнении кэша старые записи вытесняются по алгоритму LRU.","cacheStats":"Кэш","cardHint":"Озвучивание ответов ассистента в Web UI: выбор провайдеров, фолбэк-цепочки, кэш","chain":"Цепочка провайдеров озвучивания","chainHint":"Провайдеры опрашиваются по порядку до первого успешного ответа.","chainHintCard":"Выберите провайдера, вставьте его API-ключ и сохраните (или покиньте поле ключа). Ключ немедленно сохраняется в хранилище учетных данных хоста. Браузер никогда не считывает его обратно.","chainTitle":"Цепочка провайдеров","chime":"Звуковой сигнал","chimeHint":"ding, beep или none (без звука).","clear":"Очистить","clearCache":"Очистить кэш","clearQueue":"Очистить очередь","codeBlock":"блок кода, {n} строк","collapse":"Свернуть","configured":"Настроено","confirmClearCache":"Очистить кэш синтеза? Это действие необратимо.","confirmDeleteModel":"Удалить загруженные веса для этой модели?","currentVoice":"Голос","customBaseUrl":"Пользовательский endpoint TTS","customBaseUrlHint":"OpenAI-совместимый origin, например http://localhost:8880/v1; пусто = выключено.","customKeyEnv":"Переменная окружения ключа","customKeyEnvHint":"Имя переменной с токеном авторизации для пользовательского endpoint.","deepgramEndpoint":"Deepgram: базовый URL","deleteModel":"Удалить","deleteRule":"Удалить правило","dockClearQueue":"Очистить очередь","dockCurrent":"Сейчас звучит","dockFavorite":"Избранное","dockFavorites":"Избранные фрагменты","dockHide":"Скрыть плеер","dockLabel":"Синтез речи","dockNone":"Ожидание текста","dockPause":"Пауза","dockQueue":"Очередь","dockReplay":"Повторить","dockResume":"Продолжить речь","dockSpeed":"Скорость","dockStop":"Остановить речь","dockUnfavorite":"Убрать из избранного","down":"Вниз","downloading":"Загрузка…","edgeBin":"Бинарный файл edge-tts","edgeEndpoint":"Edge TTS: базовый URL","edgeHint":"CLI Python из пакета edge-tts.","elevenlabsEndpoint":"ElevenLabs: базовый URL","elevenlabsModel":"Модель ElevenLabs","enableItDictionary":"Встроенный IT-словарь","enableItDictionaryHint":"Автокоррекция произношения для SQL, Nginx, K8s, Docker, API, JSON, YAML и др.","enableLocalEngines":"Включить локальные движки","enableLocalEnginesHint":"Использовать Kokoro или F5-TTS при наличии.","enableSound":"Включить звук","espeakBin":"Бинарный файл eSpeak","espeakEndpoint":"eSpeak: базовый URL","espeakHint":"Обычно espeak-ng.","expand":"Развернуть","exportAudio":"Экспорт аудиозаписи","exportJson":"📥 Экспорт JSON","exportSuccess":"Аудиофайл экспортирован","filterCode":"Пропускать блоки кода при чтении","filterCodeHint":"Не озвучивать программный код, чтение продолжается со следующего абзаца.","filterMarkdown":"Очищать Markdown-разметку","filterMarkdownHint":"Удалять спецсимволы разметки перед отправкой в движок TTS.","fromEnv":"Задано в окружении","general":"Общие","googleEndpoint":"Google TTS: базовый URL","groqEndpoint":"Groq: базовый URL","groqModel":"Модель Groq","importJson":"📤 Импорт JSON","installF5":"Установить (2.1 ГБ)","installKokoro":"Установить (350 МБ)","installed":"Установлено","invalidJsonFormat":"Неверный формат JSON словаря","language":"Язык","languageHint":"Подсказка для голосов, которым требуется локаль (eSpeak, Azure SSML).","lastError":"Последняя ошибка","loadItDictionary":"Заполнить терминами IT","loading":"Загрузка…","localEnginesHint":"Синтез речи полностью автономно без API-ключей.","localEnginesTitle":"Локальные движки (офлайн)","localProvider":"Локальный / CLI провайдер — API-ключ не требуется","longReply":"Длинные ответы","longReplyHint":"truncate: обрезать по лимиту; summarize: краткий пересказ; full: читать полностью.","maxChars":"Максимум символов","maxCharsHint":"Жёсткий лимит перед обработкой длинного ответа; 0 отключает ограничение.","maxCharsPerChunk":"Максимум символов во фрагменте","maxCharsPerChunkHint":"Длинные сообщения разбиваются на части указанного размера.","maxQueue":"Макс. длина очереди","maxQueueHint":"Отбрасывать старые ожидающие фрагменты сверх этого количества.","messengerInstallHint":"Для отправки голосовых заметок в мессенджеры установите плагин командой","messengerIntegrationHint":"Голосовые ответы и заметки, отправляемые через @goodandready/dsh-messenger-gateway.","messengerIntegrationTitle":"Интеграция с мессенджерами (Telegram, Discord)","messengerNotInstalledTitle":"Требуемый плагин @goodandready/dsh-messenger-gateway не установлен","messengerTtsEnabled":"Голосовые ответы в мессенджерах","messengerTtsEnabledHint":"Разрешить шлюзу мессенджеров доставлять ответы голосовыми сообщениями.","mimoBaseUrl":"Базовый URL MiMo","mimoBaseUrlHint":"Корень API MiMo; синтез использует chat endpoint.","mimoFormat":"Формат MiMo","mimoFormatHint":"mp3 или wav.","minimaxBin":"Исполняемый файл MiniMax CLI","minimaxBinHint":"Ищется в PATH, если не абсолютный путь; установите и авторизуйтесь отдельно.","narrateQuotesHint":"Читать только «фрагменты в кавычках» из ответа.","narrateQuotesOnly":"Только цитаты","newSubagentRole":"Имя субагента (например, coder, reviewer)","notInstalled":"Не установлено","notSet":"Не задано","openaiBaseUrl":"Базовый URL OpenAI","openaiBaseUrlHint":"OpenAI-совместимый origin для провайдера openai.","openaiEndpoint":"OpenAI: базовый URL","openaiModel":"Модель OpenAI TTS","openrouterEndpoint":"OpenRouter: базовый URL","pause":"Пауза","piperBin":"Бинарный файл Piper","piperEndpoint":"Piper: базовый URL","piperModel":"Модель Piper","piperModelHint":"Абсолютный путь к модели ONNX. Оставьте пустым, чтобы пропустить Piper.","pitch":"Высота тона голоса","play":"Воспроизвести","playbackRate":"Скорость чтения","preloadNext":"Предзагрузка следующей фразы","preloadNextHint":"Синтезировать следующий фрагмент во время воспроизведения текущего.","preview":"Предпросмотр","previewPhrase":"Проверка голоса.","previewRule":"Прослушать","pronFrom":"Заменять","pronHint":"Правила выполняются сверху вниз. Оберните шаблон в /…/ для регулярного выражения; Lang фильтрует язык.","pronLang":"Язык","pronTitle":"Произношение","pronTo":"На","pronWhole":"Слово целиком","providerError":"Ошибка провайдера {provider}: {error}","questionHint":"Произносится, когда агент задает вопрос. Пустое значение отключает.","questionText":"Формулировка вопроса","queueEmpty":"Очередь воспроизведения пуста","queueLen":"Очередь","rate":"Скорость","rateHint":"От 0.5 до 2. Скорость синтеза не меняется; браузер воспроизводит быстрее или медленнее.","recent":"Недавние","recentEmpty":"Записей пока нет","remove":"Удалить","removeRegex":"Удалять по regex","removeRegexHint":"Глобальное регулярное выражение; совпадения вырезаются перед синтезом.","resume":"Продолжить","retry":"Повторить","roleApproval":"Подтверждение","roleError":"Ошибка","roleReply":"Ответ","role_coder":"Разработчик","role_planner":"Планировщик","role_reviewer":"Ревьюер","rolesHint":"Пустые поля наследуют основную цепочку.","rolesTitle":"Роли голосов","ruleCondition":"Условие","ruleRole":"Роль субагента","ruleVoice":"Назначенный голос","runtimeNotBundled":"Среда нейросетевого инференса не встроена","runtimeNotBundledHint":"Загрузка весов не активирует синтез. Для офлайн-TTS используйте Edge, Piper или eSpeak.","save":"Сохранить","saved":"Настройки сохранены","saving":"Сохранение…","secAdvanced":"Расширенные параметры","secCache":"Кэширование аудио","secDock":"Плеер речи","secGeneral":"Общие настройки","secProviders":"Провайдеры синтеза","secRules":"Правила распределения голосов","sentenceChars":"Размер фрагмента предложения","sentenceCharsHint":"Максимум символов на один фрагмент потокового предложения.","skipActions":"Пропускать *действия*","skipActionsHint":"Пропускать блоки действий, выделенные звёздочками.","skipCode":"Пропускать блоки кода","skipCodeHint":"Произносить краткое уведомление вместо чтения кода вслух.","speakAsItGoes":"Озвучивать по мере поступления","speakAsItGoesHint":"Читать каждый ответ сразу по предложениям, не дожидаясь завершения всей реплики.","speakReplies":"Озвучивать ответы агента","speakRepliesHint":"Если включено, каждый готовый ответ синтезируется на хосте и воспроизводится в браузере. Аудио не отправляется обратно в модель.","speakToolCalls":"Озвучивать действия инструментов","speaking":"Воспроизведение…","sseState":"SSE","ssmlStyle":"Стиль интонации SSML","ssmlStyleHint":"Выразительный тон (например, cheerful, serious, empathetic).","statErrors":"Ошибок","statHits":"Попаданий в кэш","statReset":"Сбросить статистику","statTotal":"Всего","statsTitle":"Статистика","statusIdle":"Готов к синтезу","statusOffline":"Хост недоступен","statusOnline":"Хост доступен","statusPlaying":"Воспроизводится","statusSynthesizing":"Синтез аудио…","stop":"Остановить","streamingEnabled":"Мгновенный стриминг (< 300 мс)","streamingEnabledHint":"Воспроизведение аудио через AudioWorklet и SSE в реальном времени.","subagentVoiceRules":"Голоса субагентов","subagentVoiceRulesHint":"Назначение индивидуальных тембров и моделей разным ролям субагентов.","subtitle":"Синтез речи и звуковое сопровождение реплик агента","summaryIntro":"Пересказ ответа…","summaryModel":"Модель суммаризации","summaryModelHint":"провайдер/модель, пусто = модель диалога по умолчанию.","summarySentences":"Длина пересказа","summarySentencesHint":"Количество предложений в голосовом пересказе.","synthesizeFailed":"Не удалось синтезировать речь: {error}","table":"таблица, {n} строк","testProvider":"Проверить провайдера","testVoice":"Прослушать образец","timeoutMs":"Таймаут запроса к TTS (мс)","timeoutMsHint":"Прерывать попытку провайдера после указанного числа миллисекунд.","title":"Синтез речи","up":"Вверх","updaterCheck":"Проверить обновления","updaterChecking":"Проверка…","updaterCurrent":"Текущая версия","updaterFailed":"Ошибка проверки обновления: ","updaterLatest":"Последняя версия","updaterSuccess":"Плагин успешно обновлён! Перезапустите службу DSH для применения.","updaterTitle":"Обновление плагина","updaterUpToDate":"Установлена актуальная версия","updaterUpdateNow":"Обновить до v{version}","updaterUpdating":"Обновление…","useF5":"Включить F5-TTS (GPU)","useF5Hint":"Высокоточный zero-shot синтез на NVIDIA GPU.","useKokoro":"Включить Kokoro-82M (CPU)","useKokoroHint":"Быстрый нейросетевой синтез на процессоре.","vadBargeIn":"Прерывание по голосу (VAD Barge-in)","vadBargeInHint":"Мгновенно глушить воспроизведение синтеза речи при обнаружении голоса пользователя.","voice":"Основной голос","voiceDuplex":"Режим Voice-to-Voice","voiceDuplexHint":"Интерактивный голосовой диалог, интегрированный с dsh-voice.","voiceDuplexHintToggle":"Автоматически озвучивать ответ ассистента по окончании речи пользователя.","voiceDuplexTitle":"Голосовой дуплекс (Voice-to-Voice)","voiceInstallHint":"Для включения голосового дуплекса установите плагин командой","voiceNotInstalledTitle":"Требуемый плагин @goodandready/dsh-voice не установлен","voicePitch":"Высота голоса","voiceSpeed":"Скорость речи","volume":"Громкость","volumeMuted":"Без звука"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"dsh-voice":{"addCustom":"Добавить собственного провайдера","addProvider":"Добавить провайдера","autoSendVisualRing":"Анимация таймера отправки (Silence Ring)","avgLatency":"Средняя задержка","badgeHostOffline":"Хост недоступен","badgeHostOnline":"Хост в сети ({ms} мс)","badgeProviders":"Провайдеров готово: {count}","badgeSenseVoiceActive":"SenseVoice активен","badgeSenseVoiceInactive":"SenseVoice не в сети","badgeWhisperActive":"Whisper активен","badgeWhisperInactive":"Whisper не в сети","bargeIn":"Перебивание (Barge-in)","bargeInDesc":"Реальный перехват (Barge-In: голос прерывает речь ассистента)","beep":"Звуковой сигнал старта/остановки","browserFailed":"Браузер не распознал: ","browserHint":"распознавание выполняет браузер, ключ не требуется","cancel":"Отмена","cardHint":"Диктовка и голосовые сообщения: провайдеры, цепочки, локальный Whisper","chainHint":"Сверху вниз — порядок попыток обращения к провайдерам","clearKey":"Стереть ключ","collapse":"Свернуть","composerUnavailable":"Поле ввода недоступно","contextGlossary":"Инъекция глоссария контекста","contextGlossaryHint":"Автоматически извлекает идентификаторы кода и термины из поля ввода для повышения точности распознавания речи (STT)","customHint":"Любое OpenAI-совместимое API. Имя появится в списке цепочек выше.","customKeyName":"имя ключа","customModel":"модель","customModelHint":"модель для запроса (пусто — использовать встроенную)","customName":"имя в цепочке","customTitle":"Собственные провайдеры","deepgramEndpoint":"Deepgram: базовый URL","deepgramEndpointHint":"Base URL for Deepgram or self-hosted deployment (default https://api.deepgram.com)","deepinfraHint":"openai/whisper-large-v3-turbo · ключ DEEPINFRA_API_KEY","deleteAudio":"Удалить аудиозапись","dictationBtn":"Голосовой ввод","dictationChain":"Цепочка диктовки","dictationChunkSec":"Размер фрагмента диктовки (с)","dictationChunkSecHint":"Длительность непрерывной записи перед промежуточной отправкой на распознавание.","dictationEnabled":"Включить диктовку","dictationHint":"Речь разбивается по паузам, и текст вставляется в поле ввода.","dictationHotkey":"Горячая клавиша диктовки","dictationHotkeyHint":"Сочетание клавиш для быстрого запуска и остановки записи.","dictationLanguage":"Язык диктовки","dictationLanguageHint":"Язык по умолчанию (ru, en, auto).","dictationPill":"Диктовка — текст добавляется в поле ввода","dictationProvider":"Основной провайдер диктовки","dictationProviderHint":"Провайдер STT для голосового набора текста.","dictationSilenceSec":"Пауза тишины для отправки (с)","dictationSilenceSecHint":"Длительность тишины, после которой фрагмент считается завершённым.","down":"Вниз","downloadAudio":"Скачать аудио","emptyHistory":"История голосовых сообщений пуста.","error":"Error","expand":"Развернуть","fast":"Fast","fireworksHint":"whisper-v3-turbo · ключ FIREWORKS_API_KEY","gatedTurnTaking":"Режим шлюза (микрофон отключается во время речи ассистента)","general":"Общие","groqEndpoint":"Groq: базовый URL","groqModel":"Модель Groq","hardwareDesc":"Microphone device, local whisper.cpp and SenseVoice runtime settings.","hardwareTitle":"Hardware & Local Engines","hide":"Скрыть","holdHint":"Удерживайте — отпустите для отправки","hotkey":"Клавиша голосового сообщения","hotkeyHint1":"Удерживайте для записи, отпустите для отправки агенту, Esc отменяет. ","hotkeyHint2":"Подойдет любая клавиша: буква, F-клавиша или модификатор.","huggingfaceEndpoint":"HuggingFace: базовый URL","huggingfaceModel":"Модель HuggingFace","idle":"No calls","inputGain":"Усиление микрофона (dB)","inputGainHint":"Программное усиление входящего аудиосигнала.","installSensevoice":"Установить SenseVoice-Small (в 1 клик)","installingSensevoice":"Установка SenseVoice…","jargonAdd":"Добавить замену","jargonFrom":"Разговорный сленг","jargonTitle":"Словарь разработчика и IT-терминов","jargonTo":"Корректное написание","keepPending":"Не отправлять","keySpace":"Пробел","keyUnset":"не задана","language":"Язык","lastLatency":"Последняя задержка: {ms} мс","lastRecording":"Last voice note","listen":"Слушать","listenBack":"Listen back","listening":"Слушаю в браузере…","liveInterimPreview":"Живой предпросмотр речи (промежуточный текст)","livePreview":"Предпросмотр на лету","livePreviewHint":"Отображать промежуточный текст в поле ввода во время речи.","loadingSettings":"Загрузка настроек…","localEndpoint":"Локальный STT: базовый URL","localHint":"задаётся при запуске сервера","localModel":"Локальная модель","localOnly":"Local whisper only","localOnlyHint":"Restrict both chains to the local whisper.cpp server: fully offline.","maxDurationSec":"Макс. длительность записи (с)","maxDurationSecHint":"Автоматическая остановка записи при превышении лимита времени.","messageBtn":"Голосовое сообщение — нажмите или удерживайте","messageHint":"Единая запись, отправляемая агенту после распознавания.","messagePill":"Запись голосового сообщения","messageTitle":"Голосовое сообщение","mic":"Microphone","micAccessDenied":"Доступ к микрофону заблокирован в браузере.","micActive":"Микрофон активен","micDefault":"System default","micLevel":"Mic level","micMuted":"Микрофон отключён","micUnavailable":"Микрофон недоступен: требуется HTTPS или localhost","mistralHint":"voxtral-mini-latest · ключ MISTRAL_API_KEY","noRecorder":"MediaRecorder не поддерживается этим браузером","noiseGate":"Noise Gate (dB)","noiseGateHint":"Mute background fan hum and keyboard clicks below threshold. Off = disabled","noiseGateOff":"Off","noiseSuppression":"Шумоподавление","noiseSuppressionHint":"Аппаратное или программное подавление фонового шума.","normal":"Normal","normalizeTranscript":"Нормализовать расшифровку файлов","normalizeTranscriptHint":"transcribe_audio: spoken numbers to digits, tidy punctuation","notReady1":"Харнесс еще не передал настройки плагина. Если он только что перезапустился, ","notReady2":"раздел появится сам через несколько секунд.","nothingHeard":"Ничего не распознано","nothingToUndo":"Нечего отменять","openaiEndpoint":"OpenAI: базовый URL","openaiHint":"whisper-1 · ключ OPENAI_API_KEY","openaiModel":"Модель OpenAI Whisper","openrouterHint":"google/gemini-2.5-flash · ключ OPENROUTER_API_KEY","openrouterWarning":"В OpenRouter нет эндпоинта /audio/transcriptions — используйте шаблон openai-chat-audio","pause":"Пауза","pauseHint":"Меньше — чаще фрагменты и быстрее появление, но выше риск обрыва слова","pauseMs":"Пауза завершения фразы, мс","play":"Воспроизвести","playbackSpeed":"Скорость воспроизведения","polish":"Polish transcript with model","polishBaseUrl":"Offline polish endpoint","polishBaseUrlHint":"OpenAI-compatible /chat/completions base URL, e.g. a local Ollama. Empty = harness model","polishHint":"Fix punctuation and fillers via the harness model before inserting","polishKeyEnv":"Offline polish key credential","polishModel":"Offline polish model","polishSend":"Polish whole draft before sending","polishSendHint":"Run the composed draft through the model right before sending","pressKey":"Нажмите клавишу…","providerChain":"Резервная цепочка провайдеров","providerChainHint":"Список провайдеров через запятую на случай сбоя основного сервиса.","providerDashboard":"Provider Latency & Health","recognitionError":"сбой распознавания","record":"Запись","recordSlot":"Запись голоса","recording":"Идёт запись…","refreshStats":"Refresh Stats","remove":"Удалить","resume":"Продолжить","retry":"Retry","sampleRate":"Частота дискретизации (Гц)","save":"Сохранить","saveAudio":"Сохранять аудиозаписи сессии","saveAudioHint":"Сохранять записанные аудиофайлы в директории данных плагина.","saveFailed":"Некоторые поля не сохранились —","saved":"Настройки сохранены","saving":"Сохранение…","secAudio":"Параметры звука","secDictation":"Режим диктовки","secProviders":"Настройки провайдеров","secVoiceMessage":"Голосовые сообщения","secondsShort":" с","sendDelay":"Dictation send delay (ms)","sendDelayHint":"Wait before appending a dictated phrase, with a cancel window. 0 = off","sendingIn":"Отправка агенту через","sensevoiceAutostart":"Autostart the SenseVoice server","sensevoiceBin":"SenseVoice: binary","sensevoiceBinHint":"used when autostart is on","sensevoiceDesc":"Сверхбыстрое офлайн-распознавание речи на CPU (задержка 50–100 мс, русский/английский).","sensevoiceDownloading":"Загрузка модели…","sensevoiceEndpoint":"SenseVoice: endpoint","sensevoiceEndpointHint":"POST endpoint of sherpa-onnx or compatible server","sensevoiceHint":"SenseVoice-ONNX / Sherpa-ONNX · ultra-fast local STT (~50ms)","sensevoiceModel":"SenseVoice: model path","sensevoiceModelHint":"Absolute path or identifier of the SenseVoice / sherpa-onnx model","sensevoiceNotInstalled":"Не установлено","sensevoiceReady":"Готово","sensevoiceTitle":"Локальный ASR SenseVoice (установка в 1 клик)","sessionCommands":"Voice session commands","sessionCommandsHint":"\"send\", \"cancel\", \"stop\", \"continue\" act on the session instead of becoming text","silence":"Пауза…","siliconflowHint":"FunAudioLLM/SenseVoiceSmall · ключ SILICONFLOW_API_KEY","slow":"Slow","smartActionsTitle":"Голосовые команды и автоматизация (Hands-free)","speaking":"Вы говорите…","statusDesc":"Current runtime connectivity to voice backends and recognition services.","statusIdle":"Ожидание ввода","statusListening":"Прослушивание…","statusProcessing":"Распознавание речи…","statusTitle":"Connection & Engine Status","stop":"Стоп","stopRecording":"Остановить запись","stopTest":"Stop Test","stream":"Continuous dictation","streamChunkMs":"Stream chunk (ms)","streamHint":"Cut phrases by a timer while you speak instead of waiting for a long pause","structuredPromptVoice":"Голосовые ответы на интерактивные запросы выбора","successRate":"Success","techJargonCorrection":"Автокоррекция технического жаргона (GitHub, Docker, pnpm, Kubernetes и др.)","testMic":"Проверить микрофон","testSuccess":"Аудио успешно записано и воспроизведено!","title":"Голос","transcribeFailed":"Ошибка распознавания: {error}","transcribing":"Идёт транскрипция…","transcript":"Текст расшифровки","turnTakingDesc":"Координация говорения и прослушивания, чтобы звук ассистента не попадал в микрофон.","turnTakingTitle":"Очередность реплик и координация аудио","uiError":"Voice UI Error:","undo":"Отменить последнюю вставку","undoHint":"Время, в течение которого автоотправку еще можно отменить","undoMs":"Окно отмены, мс","undone":"Вставка отменена","up":"Вверх","upToDate":"Актуальная версия","updateAvailable":"Доступно обновление","updateFailed":"Ошибка обновления. Проверьте логи.","updateNow":"Обновить сейчас","updatePrompt":"Доступна новая версия в npm. Нажмите «Обновить» для установки.","updateSuccess":"Успешно обновлено! Перезапустите DSH для применения.","updating":"Обновление…","vadAdapt":"Adaptive silence","vadAdaptHint":"Auto-tune the silence threshold to the pace of your speech. 0 = fixed","vadSensitivity":"Чувствительность детектора голоса (VAD)","vadSensitivityHint":"Порог обнаружения речевой активности.","versionHint":"Проверка новых версий и обновление напрямую из npm.","versionTitle":"Версия плагина и обновления","visBars":"Classic Bars","visDynamicOrb":"Dynamic Orb","visLiquidWave":"Liquid Wave","visOff":"Off","visualizerStyle":"Audio visualizer style","visualizerStyleHint":"Waveform animation inside the recording pill","vocabulary":"Custom vocabulary (one word per line)","voiceActionsLabel":"Команды голосовых действий (","voiceCommandsLabel":"Voice edit commands (\"new line\", \"paragraph\")","voiceMessageChain":"Цепочка голосовых сообщений","voiceMessageEnabled":"Разрешить отправку голосовых сообщений","voiceMessageProvider":"Провайдер голосовых сообщений","wakeWord":"Wake word","wakeWordHint":"Browser recognition starts recording when speech begins with this phrase. Empty = off","waveform":"Аудиоволна","whisperAutostart":"Автозапуск локального whisper","whisperBin":"Локальный whisper: бинарный файл","whisperBinHint":"используется при включенном автозапуске","whisperEndpoint":"Локальный whisper: эндпоинт","whisperEndpointHint":"POST /inference сервера whisper.cpp","whisperModel":"Локальный whisper: модель","whisperModelHint":"Absolute path to the ggml model file"}}
|
|
1
|
+
{"dsh-voice":{"addCustom":"Добавить собственного провайдера","addProvider":"Добавить провайдера","autoSendVisualRing":"Анимация таймера отправки (Silence Ring)","avgLatency":"Средняя задержка","badgeHostOffline":"Хост недоступен","badgeHostOnline":"Хост в сети ({ms} мс)","badgeProviders":"Провайдеров готово: {count}","badgeSenseVoiceActive":"SenseVoice активен","badgeSenseVoiceInactive":"SenseVoice не в сети","badgeWhisperActive":"Whisper активен","badgeWhisperInactive":"Whisper не в сети","bargeIn":"Перебивание (Barge-in)","bargeInDesc":"Реальный перехват (Barge-In: голос прерывает речь ассистента)","beep":"Звуковой сигнал старта/остановки","browserFailed":"Браузер не распознал: ","browserHint":"распознавание выполняет браузер, ключ не требуется","cancel":"Отмена","cardHint":"Диктовка и голосовые сообщения: провайдеры, цепочки, локальный Whisper","chainHint":"Сверху вниз — порядок попыток обращения к провайдерам","clearKey":"Стереть ключ","collapse":"Свернуть","composerUnavailable":"Поле ввода недоступно","contextGlossary":"Инъекция глоссария контекста","contextGlossaryHint":"Автоматически извлекает идентификаторы кода и термины из поля ввода для повышения точности распознавания речи (STT)","customHint":"Любое OpenAI-совместимое API. Имя появится в списке цепочек выше.","customKeyName":"имя ключа","customModel":"модель","customModelHint":"модель для запроса (пусто — использовать встроенную)","customName":"имя в цепочке","customTitle":"Собственные провайдеры","deepgramEndpoint":"Deepgram: базовый URL","deepgramEndpointHint":"Base URL for Deepgram or self-hosted deployment (default https://api.deepgram.com)","deepinfraHint":"openai/whisper-large-v3-turbo · ключ DEEPINFRA_API_KEY","deleteAudio":"Удалить аудиозапись","dictationBtn":"Голосовой ввод","dictationChain":"Цепочка диктовки","dictationChunkSec":"Размер фрагмента диктовки (с)","dictationChunkSecHint":"Длительность непрерывной записи перед промежуточной отправкой на распознавание.","dictationEnabled":"Включить диктовку","dictationHint":"Речь разбивается по паузам, и текст вставляется в поле ввода.","dictationHotkey":"Горячая клавиша диктовки","dictationHotkeyHint":"Сочетание клавиш для быстрого запуска и остановки записи.","dictationLanguage":"Язык диктовки","dictationLanguageHint":"Язык по умолчанию (ru, en, auto).","dictationPill":"Диктовка — текст добавляется в поле ввода","dictationProvider":"Основной провайдер диктовки","dictationProviderHint":"Провайдер STT для голосового набора текста.","dictationSilenceSec":"Пауза тишины для отправки (с)","dictationSilenceSecHint":"Длительность тишины, после которой фрагмент считается завершённым.","down":"Вниз","downloadAudio":"Скачать аудио","emptyHistory":"История голосовых сообщений пуста.","error":"Error","expand":"Развернуть","fast":"Fast","fireworksHint":"whisper-v3-turbo · ключ FIREWORKS_API_KEY","gatedTurnTaking":"Режим шлюза (микрофон отключается во время речи ассистента)","general":"Общие","groqEndpoint":"Groq: базовый URL","groqModel":"Модель Groq","hardwareDesc":"Microphone device, local whisper.cpp and SenseVoice runtime settings.","hardwareTitle":"Hardware & Local Engines","hide":"Скрыть","holdHint":"Удерживайте — отпустите для отправки","hotkey":"Клавиша голосового сообщения","hotkeyHint1":"Удерживайте для записи, отпустите для отправки агенту, Esc отменяет. ","hotkeyHint2":"Подойдет любая клавиша: буква, F-клавиша или модификатор.","huggingfaceEndpoint":"HuggingFace: базовый URL","huggingfaceModel":"Модель HuggingFace","idle":"No calls","inputGain":"Усиление микрофона (dB)","inputGainHint":"Программное усиление входящего аудиосигнала.","installSensevoice":"Установить SenseVoice-Small (в 1 клик)","installingSensevoice":"Установка SenseVoice…","jargonAdd":"Добавить замену","jargonFrom":"Разговорный сленг","jargonPlaceholder":"k8s -> kubernetes\npr -> pull request","jargonTitle":"Словарь разработчика и IT-терминов","jargonTo":"Корректное написание","keepPending":"Не отправлять","keySpace":"Пробел","keyUnset":"не задана","language":"Язык","lastLatency":"Последняя задержка: {ms} мс","lastRecording":"Last voice note","listen":"Слушать","listenBack":"Listen back","listening":"Слушаю в браузере…","liveInterimPreview":"Живой предпросмотр речи (промежуточный текст)","livePreview":"Предпросмотр на лету","livePreviewHint":"Отображать промежуточный текст в поле ввода во время речи.","loadingSettings":"Загрузка настроек…","localEndpoint":"Локальный STT: базовый URL","localHint":"задаётся при запуске сервера","localModel":"Локальная модель","localOnly":"Local whisper only","localOnlyHint":"Restrict both chains to the local whisper.cpp server: fully offline.","maxDurationSec":"Макс. длительность записи (с)","maxDurationSecHint":"Автоматическая остановка записи при превышении лимита времени.","messageBtn":"Голосовое сообщение — нажмите или удерживайте","messageHint":"Единая запись, отправляемая агенту после распознавания.","messagePill":"Запись голосового сообщения","messageTitle":"Голосовое сообщение","mic":"Microphone","micAccessDenied":"Доступ к микрофону заблокирован в браузере.","micActive":"Микрофон активен","micDefault":"System default","micLevel":"Mic level","micMuted":"Микрофон отключён","micUnavailable":"Микрофон недоступен: требуется HTTPS или localhost","mistralHint":"voxtral-mini-latest · ключ MISTRAL_API_KEY","noRecorder":"MediaRecorder не поддерживается этим браузером","noiseGate":"Noise Gate (dB)","noiseGateHint":"Mute background fan hum and keyboard clicks below threshold. Off = disabled","noiseGateOff":"Off","noiseSuppression":"Шумоподавление","noiseSuppressionHint":"Аппаратное или программное подавление фонового шума.","normal":"Normal","normalizeTranscript":"Нормализовать расшифровку файлов","normalizeTranscriptHint":"transcribe_audio: spoken numbers to digits, tidy punctuation","notReady1":"Харнесс еще не передал настройки плагина. Если он только что перезапустился, ","notReady2":"раздел появится сам через несколько секунд.","nothingHeard":"Ничего не распознано","nothingToUndo":"Нечего отменять","openaiEndpoint":"OpenAI: базовый URL","openaiHint":"whisper-1 · ключ OPENAI_API_KEY","openaiModel":"Модель OpenAI Whisper","openrouterHint":"google/gemini-2.5-flash · ключ OPENROUTER_API_KEY","openrouterWarning":"В OpenRouter нет эндпоинта /audio/transcriptions — используйте шаблон openai-chat-audio","pause":"Пауза","pauseHint":"Меньше — чаще фрагменты и быстрее появление, но выше риск обрыва слова","pauseMs":"Пауза завершения фразы, мс","play":"Воспроизвести","playbackSpeed":"Скорость воспроизведения","polish":"Polish transcript with model","polishBaseUrl":"Offline polish endpoint","polishBaseUrlHint":"OpenAI-compatible /chat/completions base URL, e.g. a local Ollama. Empty = harness model","polishHint":"Fix punctuation and fillers via the harness model before inserting","polishKeyEnv":"Offline polish key credential","polishModel":"Offline polish model","polishSend":"Polish whole draft before sending","polishSendHint":"Run the composed draft through the model right before sending","pressKey":"Нажмите клавишу…","providerChain":"Резервная цепочка провайдеров","providerChainHint":"Список провайдеров через запятую на случай сбоя основного сервиса.","providerDashboard":"Provider Latency & Health","recognitionError":"сбой распознавания","record":"Запись","recordSlot":"Запись голоса","recording":"Идёт запись…","refreshStats":"Refresh Stats","remove":"Удалить","resume":"Продолжить","retry":"Retry","sampleRate":"Частота дискретизации (Гц)","save":"Сохранить","saveAudio":"Сохранять аудиозаписи сессии","saveAudioHint":"Сохранять записанные аудиофайлы в директории данных плагина.","saveFailed":"Некоторые поля не сохранились —","saved":"Настройки сохранены","saving":"Сохранение…","secAudio":"Параметры звука","secDictation":"Режим диктовки","secProviders":"Настройки провайдеров","secVoiceMessage":"Голосовые сообщения","secondsShort":" с","sendDelay":"Dictation send delay (ms)","sendDelayHint":"Wait before appending a dictated phrase, with a cancel window. 0 = off","sendingIn":"Отправка агенту через","sensevoiceAutostart":"Autostart the SenseVoice server","sensevoiceBin":"SenseVoice: binary","sensevoiceBinHint":"used when autostart is on","sensevoiceDesc":"Сверхбыстрое офлайн-распознавание речи на CPU (задержка 50–100 мс, русский/английский).","sensevoiceDownloading":"Загрузка модели…","sensevoiceEndpoint":"SenseVoice: endpoint","sensevoiceEndpointHint":"POST endpoint of sherpa-onnx or compatible server","sensevoiceHint":"SenseVoice-ONNX / Sherpa-ONNX · ultra-fast local STT (~50ms)","sensevoiceModel":"SenseVoice: model path","sensevoiceModelHint":"Absolute path or identifier of the SenseVoice / sherpa-onnx model","sensevoiceNotInstalled":"Не установлено","sensevoiceReady":"Готово","sensevoiceTitle":"Локальный ASR SenseVoice (установка в 1 клик)","sessionCommands":"Voice session commands","sessionCommandsHint":"\"send\", \"cancel\", \"stop\", \"continue\" act on the session instead of becoming text","silence":"Пауза…","siliconflowHint":"FunAudioLLM/SenseVoiceSmall · ключ SILICONFLOW_API_KEY","slow":"Slow","smartActionsTitle":"Голосовые команды и автоматизация (Hands-free)","speaking":"Вы говорите…","statusDesc":"Current runtime connectivity to voice backends and recognition services.","statusIdle":"Ожидание ввода","statusListening":"Прослушивание…","statusProcessing":"Распознавание речи…","statusTitle":"Connection & Engine Status","stop":"Стоп","stopRecording":"Остановить запись","stopTest":"Stop Test","stream":"Continuous dictation","streamChunkMs":"Stream chunk (ms)","streamHint":"Cut phrases by a timer while you speak instead of waiting for a long pause","structuredPromptVoice":"Голосовые ответы на интерактивные запросы выбора","successRate":"Success","techJargonCorrection":"Автокоррекция технического жаргона (GitHub, Docker, pnpm, Kubernetes и др.)","testMic":"Проверить микрофон","testSuccess":"Аудио успешно записано и воспроизведено!","title":"Голос","transcribeFailed":"Ошибка распознавания: {error}","transcribing":"Идёт транскрипция…","transcript":"Текст расшифровки","turnTakingDesc":"Координация говорения и прослушивания, чтобы звук ассистента не попадал в микрофон.","turnTakingTitle":"Очередность реплик и координация аудио","uiError":"Voice UI Error:","undo":"Отменить последнюю вставку","undoHint":"Время, в течение которого автоотправку еще можно отменить","undoMs":"Окно отмены, мс","undone":"Вставка отменена","up":"Вверх","upToDate":"Актуальная версия","updateAvailable":"Доступно обновление","updateFailed":"Ошибка обновления. Проверьте логи.","updateNow":"Обновить сейчас","updatePrompt":"Доступна новая версия в npm. Нажмите «Обновить» для установки.","updateSuccess":"Успешно обновлено! Перезапустите DSH для применения.","updating":"Обновление…","vadAdapt":"Adaptive silence","vadAdaptHint":"Auto-tune the silence threshold to the pace of your speech. 0 = fixed","vadSensitivity":"Чувствительность детектора голоса (VAD)","vadSensitivityHint":"Порог обнаружения речевой активности.","versionHint":"Проверка новых версий и обновление напрямую из npm.","versionTitle":"Версия плагина и обновления","visBars":"Classic Bars","visDynamicOrb":"Dynamic Orb","visLiquidWave":"Liquid Wave","visOff":"Off","visualizerStyle":"Audio visualizer style","visualizerStyleHint":"Waveform animation inside the recording pill","vocabulary":"Custom vocabulary (one word per line)","voiceActionsLabel":"Команды голосовых действий (","voiceCommandsLabel":"Voice edit commands (\"new line\", \"paragraph\")","voiceMessageChain":"Цепочка голосовых сообщений","voiceMessageEnabled":"Разрешить отправку голосовых сообщений","voiceMessageProvider":"Провайдер голосовых сообщений","wakeWord":"Wake word","wakeWordHint":"Browser recognition starts recording when speech begins with this phrase. Empty = off","waveform":"Аудиоволна","whisperAutostart":"Автозапуск локального whisper","whisperBin":"Локальный whisper: бинарный файл","whisperBinHint":"используется при включенном автозапуске","whisperEndpoint":"Локальный whisper: эндпоинт","whisperEndpointHint":"POST /inference сервера whisper.cpp","whisperModel":"Локальный whisper: модель","whisperModelHint":"Absolute path to the ggml model file"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"dsh-smart-restart":{"delayMs":"Задержка перед перезапуском (мс)","delayMsHint":"Достаточно времени, чтобы ответ успел дойти до вызывающей стороны.","enabled":"Включено","enabledHint":"Регистрировать инструменты и проверять каждый запуск.","expectTools":"Требуемые инструменты (через запятую)","expectToolsHint":"Отсутствие инструмента делает вердикт запуска деградировавшим.","invalid":"Введите число, а не текст.","maxRestarts":"Лимит перезапусков","maxRestartsHint":"Отклонять перезапуск при превышении этого количества внутри окна.","restartMode":"Режим перезапуска","restartModeHint":"«kill» завершает процесс и доверяет перезапуск systemd (без привилегий); «systemctl» выполняет systemctl restart <unit>.","save":"Сохранить","saved":"Сохранено","stateDir":"Директория состояния","stateDirHint":"Внутри $DSH_HOME: маркер загрузки, намерение, последний отчёт, история.","summary":"Проверенный перезапуск: загрузка проверяется, вердикт возвращается в запросившую сессию, работа возобновляется.","target":"Куда отправлять отчёт","targetHint":"requester, primary или идентификатор сессии.","title":"Защита перезапуска","toolEnabled":"Предоставлять инструменты","toolEnabledHint":"dsh_restart и dsh_restart_status.","unavailable":"Служба настроек недоступна, форма не может быть сохранена прямо сейчас.","unit":"Юнит systemd","unitHint":"Если пусто — юнит определяется автоматически из cgroup процесса.","windowMs":"Окно мониторинга (мс)","windowMsHint":"Временное окно для защиты от циклических перезапусков."}}
|
|
1
|
+
{"dsh-smart-restart":{"delayMs":"Задержка перед перезапуском (мс)","delayMsHint":"Достаточно времени, чтобы ответ успел дойти до вызывающей стороны.","enabled":"Включено","enabledHint":"Регистрировать инструменты и проверять каждый запуск.","expectTools":"Требуемые инструменты (через запятую)","expectToolsHint":"Отсутствие инструмента делает вердикт запуска деградировавшим.","invalid":"Введите число, а не текст.","loading":"Загрузка настроек…","maxRestarts":"Лимит перезапусков","maxRestartsHint":"Отклонять перезапуск при превышении этого количества внутри окна.","restartMode":"Режим перезапуска","restartModeHint":"«kill» завершает процесс и доверяет перезапуск systemd (без привилегий); «systemctl» выполняет systemctl restart <unit>.","save":"Сохранить","saved":"Сохранено","stateDir":"Директория состояния","stateDirHint":"Внутри $DSH_HOME: маркер загрузки, намерение, последний отчёт, история.","summary":"Проверенный перезапуск: загрузка проверяется, вердикт возвращается в запросившую сессию, работа возобновляется.","target":"Куда отправлять отчёт","targetHint":"requester, primary или идентификатор сессии.","title":"Защита перезапуска","toolEnabled":"Предоставлять инструменты","toolEnabledHint":"dsh_restart и dsh_restart_status.","unavailable":"Служба настроек недоступна, форма не может быть сохранена прямо сейчас.","unit":"Юнит systemd","unitHint":"Если пусто — юнит определяется автоматически из cgroup процесса.","windowMs":"Окно мониторинга (мс)","windowMsHint":"Временное окно для защиты от циклических перезапусков."}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"@goodandready/dsh-session-search":{"badge.concurrency":"Параллелизм: Безопасно","badge.engine":"Движок: SQLite FTS5 (ядро)","badge.tool":"Инструмент: session_search","badge.version":"Версия: v0.1.7","btn.save":"Сохранить настройки","btn.saving":"Сохранение…","desc.header":"Настройка лимитов результатов, длины сниппетов и таймаутов инструмента автономного поиска session_search.","error.maxResults":"Число результатов должно быть целым числом от 1 до 100.","error.snippetLength":"Длина сниппета должна быть целым числом от 50 до 1000.","error.timeoutMs":"Таймаут должен быть целым числом от 1000 до 120000 мс.","field.maxResults":"Максимум результатов по умолчанию","field.maxResults.desc":"Максимальное число найденных сессий на запрос (1–100, по умолчанию: 20).","field.snippetLength":"Длина контекстного фрагмента","field.snippetLength.desc":"Количество символов фрагмента вокруг совпадения (50–1000, по умолчанию: 200).","field.timeoutMs":"Таймаут выполнения (мс)","field.timeoutMs.desc":"Предельное время совместного поиска в миллисекундах (1000–120000, по умолчанию: 30000).","status.error":"Ошибка валидации параметров: ","status.saved":"Настройки успешно сохранены.","subtitle":"Инструмент семантического поиска в памяти агента на базе SQLite FTS5 ядра","title":"Полнотекстовый поиск по сессиям","updater.desc":"Плагин использует движок sessionQuery ядра DSH. Обновление выполняется через CLI: dsh plugin --profile web add @goodandready/dsh-session-search@latest","updater.title":"Обновление и обслуживание"},"dsh-session-search":{"badge.concurrency":"Параллелизм: Безопасно","badge.engine":"Движок: SQLite FTS5 (ядро)","badge.tool":"Инструмент: session_search","badge.version":"Версия: v0.1.7","btn.save":"Сохранить настройки","btn.saving":"Сохранение…","desc.header":"Настройка лимитов результатов, длины сниппетов и таймаутов инструмента автономного поиска session_search.","error.maxResults":"Число результатов должно быть целым числом от 1 до 100.","error.snippetLength":"Длина сниппета должна быть целым числом от 50 до 1000.","error.timeoutMs":"Таймаут должен быть целым числом от 1000 до 120000 мс.","field.maxResults":"Максимум результатов по умолчанию","field.maxResults.desc":"Максимальное число найденных сессий на запрос (1–100, по умолчанию: 20).","field.snippetLength":"Длина контекстного фрагмента","field.snippetLength.desc":"Количество символов фрагмента вокруг совпадения (50–1000, по умолчанию: 200).","field.timeoutMs":"Таймаут выполнения (мс)","field.timeoutMs.desc":"Предельное время совместного поиска в миллисекундах (1000–120000, по умолчанию: 30000).","status.error":"Ошибка валидации параметров: ","status.saved":"Настройки успешно сохранены.","subtitle":"Инструмент семантического поиска в памяти агента на базе SQLite FTS5 ядра","title":"Полнотекстовый поиск по сессиям","updater.desc":"Плагин использует движок sessionQuery ядра DSH. Обновление выполняется через CLI: dsh plugin --profile web add @goodandready/dsh-session-search@latest","updater.title":"Обновление и обслуживание"}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@goodandready/dsh-russian-lang",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.13",
|
|
4
4
|
"description": "Russian localization for DeepSeek Harness (DSH v0.1.7-rc.1+) web UI: adds Русский as native language option. 100.0% coverage across 11,295 keys (127 namespaces). Features full DSH v0.1.7-rc.1 core support (terminal, archive, command palette, Auto review, trajectory, PTC/Creator presets) and complete GoodAndReady plugin catalog (subscriptions, tts, image-gen, voice, key-limits, notify, commandcode, plugin-console).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"@goodandready/dsh-agent-orchestrator":{"btnCancel":"Отмена","btnDelegate":"Делегировать субагенту","btnDispatching":"Отправка…","btnStartPipeline":"Запустить пайплайн","description":"Декомпозиция и выполнение задач специализированными автономными агентами с оптимизацией кэширования промптов.","launchTitle":"🚀 Запуск мультиагентного оркестратора","roleInstructionsLabel":"Инструкции для субагента","roleInstructionsPlaceholder":"Конкретные инструкции, вопросы или требования для данного специалиста…","roleLabel":"Роль целевого специалиста","role_architecture":"Системный архитектор (DESIGN.md / ADR)","role_backend":"Ведущий backend-разработчик","role_bugfix":"Инженер хотфиксов и диагностики","role_devops":"DevOps и инфраструктурный специалист","role_docs":"Технический писатель / Документация","role_frontend":"Ведущий frontend-разработчик","role_qa_tests":"Инженер автоматизации тестирования","role_refactoring":"Специалист по рефакторингу и сложности","role_research":"Исследователь R&D и прототипирования","role_spec":"Аналитик технических спецификаций","role_ui_design":"UI/UX дизайнер интерфейсов","scenarioAuto":"Авто (определить по сложности задачи)","scenarioComplex":"Сложный (6 этапов: полный инженерный цикл)","scenarioEnterprise":"Enterprise (7 этапов: R&D исследование -> Фулстек -> Гейт приёмки)","scenarioHotfix":"Хотфикс (1 этап: анализ и точечный фикс)","scenarioLabel":"Топологический сценарий","scenarioMedium":"Средний (4 этапа: ТЗ -> Дизайн -> Код -> Тестирование)","scenarioSimple":"Простой (2 этапа: ТЗ + реализация)","scopeLabel":"Объём и требования","scopePlaceholder":"Детальная функциональная спецификация, критерии приёмки, ограничения…","subtitle":"Автономный рабочий процесс на базе DAG с оптимизацией кэширования промптов","tabPipeline":"Полный DAG-пайплайн","tabSpecialist":"Прямой субагент-специалист","title":"Мульти-агентный оркестратор","titleLabel":"Название задачи","titlePlaceholder":"Например: Реализовать карточку настроек профиля с токенами темы"},"dsh-agent-orchestrator":{"badge.accepted":"🟢 Результат субагента принят оркестратором","btnCancel":"Отмена","btnDelegate":"Делегировать субагенту","btnDispatching":"Отправка…","btnStartPipeline":"Запустить пайплайн","description":"Декомпозиция и выполнение задач специализированными автономными агентами с оптимизацией кэширования промптов.","launchTitle":"🚀 Запуск мультиагентного оркестратора","roleInstructionsLabel":"Инструкции для субагента","roleInstructionsPlaceholder":"Конкретные инструкции, вопросы или требования для данного специалиста…","roleLabel":"Роль целевого специалиста","role_architecture":"Системный архитектор (DESIGN.md / ADR)","role_backend":"Ведущий backend-разработчик","role_bugfix":"Инженер хотфиксов и диагностики","role_devops":"DevOps и инфраструктурный специалист","role_docs":"Технический писатель / Документация","role_frontend":"Ведущий frontend-разработчик","role_qa_tests":"Инженер автоматизации тестирования","role_refactoring":"Специалист по рефакторингу и сложности","role_research":"Исследователь R&D и прототипирования","role_spec":"Аналитик технических спецификаций","role_ui_design":"UI/UX дизайнер интерфейсов","scenarioAuto":"Авто (определить по сложности задачи)","scenarioComplex":"Сложный (6 этапов: полный инженерный цикл)","scenarioEnterprise":"Enterprise (7 этапов: R&D исследование -> Фулстек -> Гейт приёмки)","scenarioHotfix":"Хотфикс (1 этап: анализ и точечный фикс)","scenarioLabel":"Топологический сценарий","scenarioMedium":"Средний (4 этапа: ТЗ -> Дизайн -> Код -> Тестирование)","scenarioSimple":"Простой (2 этапа: ТЗ + реализация)","scopeLabel":"Объём и требования","scopePlaceholder":"Детальная функциональная спецификация, критерии приёмки, ограничения…","subtitle":"Автономный рабочий процесс на базе DAG с оптимизацией кэширования промптов","tabPipeline":"Полный DAG-пайплайн","tabSpecialist":"Прямой субагент-специалист","title":"Мульти-агентный оркестратор","titleLabel":"Название задачи","titlePlaceholder":"Например: Реализовать карточку настроек профиля с токенами темы"}}
|