@goodandready/dsh-russian-lang 0.2.26 → 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bin/dsh-i18n.mjs +247 -0
- package/lib/client.js +785 -410
- package/lib/index.js +69 -13
- package/lib/locales/plugins/01-token-dashboard.json +1 -1
- package/lib/locales/plugins/10-kanban.json +1 -1
- package/lib/locales/plugins/13-agent-teams.json +1 -1
- package/lib/locales/plugins/16-usage-stats.json +1 -1
- package/lib/locales/plugins/23-moa.json +1 -1
- package/lib/locales/plugins/24-personal-directive.json +1 -1
- package/lib/locales/plugins/33-messenger-gateway.json +1 -1
- package/lib/locales/plugins/35-gitea.json +1 -1
- package/lib/locales/plugins/36-cost-meter.json +1 -1
- package/lib/locales/plugins/37-time-machine.json +1 -1
- package/lib/locales/plugins/38-context-lens.json +1 -1
- package/lib/locales/plugins/39-shadow-auditor.json +1 -1
- package/lib/locales/plugins/40-clinebot.json +1 -1
- package/lib/locales/plugins/41-lanmode.json +1 -1
- package/lib/locales/plugins/42-plugin-console.json +1 -1
- package/lib/locales/plugins/46-memory-brain.json +1 -1
- package/lib/locales/plugins/48-task-tracker.json +1 -1
- package/lib/locales/plugins/49-dsml-guard.json +1 -1
- package/lib/locales/plugins/49-usage-guard.json +1 -1
- package/lib/locales/plugins/50-automode.json +1 -1
- package/lib/locales/plugins/54-workshop-market.json +1 -1
- package/lib/locales/plugins/56-cron.json +1 -1
- package/lib/locales/plugins/57-live-canvas.json +1 -1
- package/lib/locales/plugins/58-grok-xsearch.json +1 -1
- package/lib/locales/plugins/59-goal.json +1 -1
- package/lib/locales/plugins/60-model-sync.json +1 -1
- package/lib/locales/plugins/61-issue-reporter.json +1 -1
- package/lib/locales/plugins/62-model-search.json +1 -1
- package/lib/locales/plugins/63-agent-orchestrator.json +1 -1
- package/lib/locales/plugins/64-key-limits.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/68-image-gen.json +1 -1
- package/lib/locales/plugins/69-plugin-notify.json +1 -1
- package/lib/locales/plugins/70-hypotheses.json +1 -1
- package/lib/locales/plugins/71-memory-meter.json +1 -1
- package/lib/locales/plugins/72-server-monitor.json +1 -70
- package/lib/locales/plugins/73-agentrouter.json +1 -1
- package/lib/locales/plugins/75-test-pilot.json +1 -0
- package/lib/locales/plugins/76-visualize.json +1 -0
- package/lib/locales/plugins/77-github-ops.json +1 -0
- package/lib/locales/plugins/78-web-gateway.json +1 -0
- package/lib/locales/plugins/79-approval-gate.json +1 -0
- package/lib/locales.js +50 -12
- package/lib/pure.js +251 -13
- package/package.json +7 -3
- package/lib/locales/plugins/44-goal.json +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"dsh-usage-stats":{"dates.tipFull":"{date} · {total} токенов · вызовов: {calls}","deepseek.balancesEmpty":"Нет данных о балансе","deepseek.grantedBalance":"Бонусный","deepseek.label":"Баланс DeepSeek","deepseek.notAvailable":"Баланс недоступен","deepseek.notConfigured":"API-ключ не настроен (укажите DEEPSEEK_API_KEY в учетных данных DSH)","deepseek.refresh":"Обновить баланс сейчас","deepseek.title":"Баланс DeepSeek","deepseek.toppedUpBalance":"Пополненный","deepseek.unavailable":"Ошибка запроса баланса, повтор…","events":"событий","footer.cacheHitRate":"Попадание в кэш","footer.railAria":"Сегодня {tokens} токенов — открыть статистику использования","footer.railEmpty":"Нет данных","footer.railHeader":"Сегодня:","footer.todayLabel":"Сегодня","go.label":"Квота Go","go.monthly":"В этом месяце","go.noPlan":"Подписка OpenCode Go не оформлена","go.notConfigured":"API-ключ не настроен (укажите OPENCODE_GO_API_KEY в учетных данных DSH)","go.refresh":"Обновить квоту сейчас","go.resetsAt":"Сброс в {time}","go.rolling":"Плавающие 5 часов","go.short.monthly":"Мес","go.short.rolling":"5ч","go.short.weekly":"Нед","go.title":"Квота OpenCode Go","go.unavailable":"Ошибка запроса квоты, повтор…","go.weekly":"На этой неделе","heat.legendLess":"Меньше","heat.legendMore":"Больше","heat.total":"Всего {tokens} токенов · вызовов: {calls}","modelRange.14d":"14 дней","modelRange.180d":"Полгода","modelRange.30d":"1 месяц","modelRange.365d":"1 год","modelRange.7d":"7 дней","modelRange.90d":"3 месяца","modelRange.all":"Все","models.chartTokens":"Токены","models.chartTurns":"Ходы","models.context":"Контекст","models.distribution":"Распределение","models.empty":"Нет данных по моделям","models.filterAll":"Все","models.filterDeepseek":"DeepSeek","models.filterOpenai":"OpenAI","models.filterQwen":"Qwen","models.input":"Ввод","models.mergedSources":"Merged {n}","models.mergedSourcesHint":"This row includes usage from","models.output":"Вывод","models.reasoning":"Рассуждения","models.sortTokens":"По токенам","models.sortTurns":"По вызовам","models.title":"Использование моделей","models.totalCalls":"Всего вызовов","models.totalCost":"Стоимость","models.totalTokens":"Всего токенов","month.1":"Jan","month.10":"Oct","month.11":"Nov","month.12":"Dec","month.2":"Feb","month.3":"Mar","month.4":"Apr","month.5":"May","month.6":"Jun","month.7":"Jul","month.8":"Aug","month.9":"Sep","pagination.label":"Pagination","pagination.next":"Next","pagination.page":"Page {current} of {total}","pagination.prev":"Previous","panel.close":"Закрыть статистику","panel.models":"By model","panel.summary.callsSuffix":" вызовов","panel.summary.sessions":"Sessions","panel.summary.totalTokens":"Total","panel.title":"Статистика использования","panel.trend":"Daily trend","range.14d":"14 дней","range.180d":"Полгода","range.30d":"30 дней","range.365d":"1 год","range.7d":"7 дней","range.90d":"90 дней","range.all":"Все","sessions.childrenCount":"{n} subagents","sessions.collapseChildren":"Hide subagents","sessions.cost":"Стоимость","sessions.duration":"Длительность","sessions.empty":"Нет сессий за выбранный период","sessions.expandChildren":"Show {n} subagents","sessions.filterAll":"Все сессии","sessions.input":"Входные","sessions.lastActive":"Активность","sessions.model":"Модель","sessions.name":"Название сессии","sessions.output":"Выходные","sessions.search":"Поиск по сессиям…","sessions.title":"Сессии","sessions.tokens":"Токены","sessions.total":"Всего","sessions.turns":"Ходов","settings.clear":"Очистить реестр","settings.clearAction":"Очистить реестр","settings.clearCancel":"Отмена","settings.clearConfirm":"Подтвердить очистку","settings.clearConfirmAck":"Я понимаю, что это удалит все накопленные данные учета","settings.clearConfirmDesc":"Очищает все данные реестра и сбрасывает статистику на ноль без повторного сканирования истории. Это действие необратимо. Продолжить?","settings.clearConfirmTitle":"Очистить реестр?","settings.clearHint":"Удалить все данные реестра (события и метаданные) и обнулить статистику без повторного анализа истории","settings.cleared":"Очищено","settings.clearing":"Очистка…","settings.deepseekEnabled":"Включить мониторинг баланса DeepSeek","settings.deepseekEnabledHint":"Отображать баланс официального API DeepSeek в панели и на боковой панели","settings.deepseekInterval":"Интервал проверки баланса DeepSeek","settings.deepseekIntervalHint":"Частота запроса официального API (в минутах, не менее {min} мин)","settings.goEnabled":"Включить мониторинг квоты OpenCode Go","settings.goEnabledHint":"Отображать статус квоты OpenCode Go в панели и на боковой панели","settings.goInterval":"Интервал проверки квоты Go","settings.goIntervalHint":"Частота запроса официального API квот (в минутах, не менее {min} мин)","settings.ledgerBusyHint":"Выполняется сканирование журналов сессий; очистка или пересборка недоступны до его завершения","settings.ledgerOps":"Операции с реестром","settings.modelRedirects":"Model statistics redirect","settings.modelRedirectsAdd":"Add a rule","settings.modelRedirectsDuplicate":"The same source already has a rule; only the topmost one applies","settings.modelRedirectsEmpty":"No redirect yet — the Models tab counts each provider and model separately","settings.modelRedirectsHint":"Count one provider/model usage under another provider/model; only the Models tab statistics and charts change, the ledger keeps its raw data","settings.modelRedirectsIncomplete":"Takes effect once all four fields are filled","settings.modelRedirectsMax":"At most {max} rules","settings.preferences":"Настройки","settings.rebuild":"Пересобрать реестр","settings.rebuildAction":"Пересобрать реестр","settings.rebuildCancel":"Отмена","settings.rebuildConfirm":"Пересобрать","settings.rebuildConfirmAck":"Я понимаю, что это очистит и заново пересоберет все данные учета","settings.rebuildConfirmDesc":"Очищает поток событий и заново сканирует все файлы истории сессий для пересчета статистики. Это действие необратимо. Продолжить?","settings.rebuildConfirmTitle":"Пересобрать реестр?","settings.rebuildHint":"Очистить поток событий и заново просканировать журналы всех сессий для актуализации реестра","settings.rebuilding":"Пересборка…","settings.rebuilt":"Пересобрано","settings.redirectFrom":"From","settings.redirectModel":"Model","settings.redirectPick":"Pick from the list or type a value","settings.redirectProvider":"Provider","settings.redirectRemove":"Remove this rule","settings.redirectTo":"Into","settings.showDeepSeekInSidebar":"Show DeepSeek balance in the sidebar","settings.showDeepSeekInSidebarHint":"Show DeepSeek balance chips at the bottom of the sidebar (still visible in the panel)","settings.showGoInSidebar":"Show OpenCode Go remaining quota in the sidebar","settings.showGoInSidebarHint":"Show rolling 5h / weekly / monthly usage chips at the bottom of the sidebar (still visible in the panel)","settings.showZaiInSidebar":"Show Z.ai quota in the sidebar","settings.showZaiInSidebarHint":"Show rolling 5h / weekly / web searches chips at the bottom of the sidebar (still visible in the panel)","settings.storageHint":"Настройки сохраняются в серверном файле settings.yaml, поэтому синхронизируются между всеми браузерами","settings.storageReadonly":"Серверные настройки в настоящее время доступны только для чтения; изменения не сохранятся","settings.storageUnavailable":"На этом сервере нет постоянного хранилища настроек; изменения сохраняются только до закрытия вкладки","settings.unitMinutes":"min","settings.zaiEnabled":"Включить мониторинг квоты Z.ai","settings.zaiEnabledHint":"Опрашивать официальный эндпоинт квот Z.ai и показывать индикатор на панели","settings.zaiInterval":"Интервал проверки квоты Z.ai","settings.zaiIntervalHint":"Частота опроса официального API (в минутах, не менее {min} мин)","state.loading":"Loading…","state.missingSessions":"{n} sessions unreadable","state.noKey":"Ключ не задан","state.noPlan":"Нет подписки","state.noUsage":"No usage data yet","state.scanning":"Scanning…","state.unavailable":"Data unavailable, retrying…","tab.dates":"По дням","tab.models":"Модели","tab.overview":"Обзор","tab.sessions":"Сессии","tab.settings":"Настройки","table.avgPerCall":"Per call","table.cacheRead":"Cache","table.calls":"Calls","table.hitRate":"Hit rate","table.input":"Input","table.lastActive":"Last active","table.model":"Model / Provider","table.output":"Output","table.session":"Session","table.share":"Share","table.total":"Total","time.today":"Today","time.yesterday":"Yesterday","updatedAt":"Updated","zai.label":"Квота Z.ai","zai.noData":"Нет данных о квоте","zai.noPlan":"План GLM Coding не подключён","zai.notConfigured":"API-ключ не настроен (укажите ZAI_API_KEY или ZAI_CODING_CN_API_KEY в учетных данных DSH)","zai.refresh":"Обновить квоту сейчас","zai.resetsAt":"Сброс в {time}","zai.session":"Плавающие 5 часов","zai.short.label":"Z.ai","zai.short.session":"5ч","zai.short.webSearches":"Поиск","zai.short.weekly":"Нед","zai.title":"Квота Z.ai","zai.unavailable":"Ошибка запроса квоты, повтор…","zai.webSearches":"Веб-поиск","zai.webSearchesCount":"Поисков: {used} из {limit}","zai.weekly":"На этой неделе"},"usageStats":{"account.balanceMode":"Баланс API","account.blocked":"Запрос к учетной записи был заблокирован локальной политикой безопасности. Проверьте настройки HTTPS, same-origin и private-network.","account.health.age":"Возраст данных","account.health.lastAttempt":"Последняя попытка","account.health.lastSuccess":"Последний успех","account.health.provenance":"Источник","account.invalidResponse":"Провайдер вернул нераспознанные данные о квоте.","account.loading":"Загрузка провайдеров…","account.provenance.configured":"Настроено","account.provenance.experimental":"Экспериментальный","account.provenance.official":"Официальный API","account.provenance.provider":"API провайдера","account.provenance.unknown":"Неизвестно","account.provider":"Текущий провайдер","account.reason.allAddressesUnreachable":"Ни один из проверенных сетевых адресов не доступен.","account.reason.blockedNetwork":"Запрос на учетную запись был заблокирован политикой локальной сети.","account.reason.dnsResolutionFailed":"Имя хоста провайдера не удалось разрешить.","account.reason.noValidatedAddress":"Не было доступно ни одного проверенного адреса провайдера.","account.reason.rateLimited":"Провайдер ограничил проверку аккаунтов по частоте запросов.","account.reason.sub2apiBalanceShapeUnrecognized":"Конечная точка баланса Sub2API вернула данные в нераспознанном формате.","account.reason.timeout":"Запрос аккаунта завершился по тайм-ауту.","account.reason.unauthorized":"Учетные данные аккаунта были отклонены.","account.reason.unknown":"Проверка учетной записи завершилась неудачей без безопасного диагностического сообщения.","account.reason.upstreamInvalidJson":"Вверх по течению возвращен нечитаемый JSON","account.reason.upstreamInvalidResponse":"Восходящий поток вернул нераспознанный ответ.","account.reason.upstreamNotJson":"Ответ вышестоящего сервера не был в формате JSON","account.reason.upstreamTooLarge":"Ответ от вышестоящего сервера превысил допустимый размер.","account.status.blocked":"Заблокировано","account.status.invalidResponse":"Неверный ответ","account.status.loading":"Загрузка","account.status.stale":"Устаревшие данные","account.status.unknown":"Неизвестно","account.status.unsupported":"Баланс не поддерживается","account.title":"Аккаунт провайдера","action.close":"Закрыть","action.nextMonth":"Следующий месяц","action.prevMonth":"Предыдущий месяц","action.refresh":"Обновить","action.retry":"Повторить","action.today":"Сегодня","balance.available":"доступно","balance.error":"Не удалось получить баланс: {message}","balance.granted":"Предоставлено","balance.loading":"Получение баланса…","balance.noCredential":"{ref} не настроен (отредактируйте ~/.dsh/.credentials.yaml)","balance.noSchemeTag":"нет баланса API","balance.provider":"Провайдер","balance.remaining":"Доступный баланс","balance.title":"Баланс счета","balance.toppedUp":"Пополнено","balance.total":"Общий баланс","balance.unavailable":"недоступно","balance.unsupported":"У этого провайдера нет публичного интерфейса для проверки баланса.","balance.used":"Использовано","billing.monthly":"≈ {amount}/мес","billing.parts":"Композиция","billing.projected":"Прогнозируемое использование на конец месяца","billing.tokenOnly":"расчет на основе использования","billing.total":"Ориентировочные ежемесячные траты","budget.exceeded":"превышен бюджет","budget.level.critical":"Превышение бюджета","budget.level.normal":"Обычный","budget.level.unknown":"Неполная стоимость","budget.level.warning":"Близко к бюджету","budget.over":"{pct}% бюджета использовано","budget.period.daily":"Оценка за сегодня","budget.period.monthly":"Ожидаемый за этот месяц","budget.remaining":"осталось","budget.summary":"{period}: {spent} / {limit} · {level}","budget.title":"Ежемесячный бюджет","budget.used":"использовано","col.cacheRead":"Чтение кэша","col.cacheWrite":"Запись в кеш","col.calls":"Звонки","col.cost":"Стоимость","col.created":"Создано","col.cwd":"Рабочая папка","col.day":"День","col.default":"Стандартная ставка","col.hour":"Время","col.input":"Ввод","col.model":"Модель","col.models":"Модели","col.output":"Вывод","col.price":"Тариф","col.provider":"Провайдер","col.session":"Сессия","col.sessions":"Сессии","col.share":"Поделиться","col.time":"Время","col.tokens":"Токены","col.turn":"Поворот/шаг","curve.cost":"Стоимость","curve.empty":"Нет данных о сериях (нет вызовов в указанном интервале)","curve.legendCacheRead":"Чтение кеша","curve.legendInput":"Ввод","curve.legendOutput":"Вывод","curve.tokens":"Токены","details.auto":"Автоматически обновляется вместе с главным окном","details.exportCalls":"Экспорт журнала вызовов в CSV","details.exportCsv":"Экспорт CSV","details.exportJson":"Экспортировать JSON","details.hint":"Звонки, токены и стоимость за сессию × модель","details.open":"Открыть подробности в новом окне","details.title":"Детали звонка · сессия × модель","details.updated":"Обновлено","duration.daysHours":"{days}д {hours}ч","duration.hoursMinutes":"{hours}ч {minutes}м","duration.minutes":"{minutes}м","export.dailyCsv":"Ежедневный CSV","export.json":"Полный JSON","export.sessionsCsv":"Сессии CSV","export.title":"Экспорт без секретов","filter.all":"Все рабочие пространства","filter.scope":"Фильтровать статистику по одной рабочей директории","footnote.disclaimer":"Стоимость рассчитана на основе установленных тарифов и не является счетом.","footnote.errors":"({errors} логов не удалось декодировать)","footnote.scanned":"{sessions} сессий, {calls} звонков просканировано","heatmap.empty":"Данные тепловой карты пока отсутствуют","heatmap.fri":"Пт","heatmap.less":"Меньше","heatmap.mon":"Пн","heatmap.month":"{m}","heatmap.more":"Ещё","heatmap.title":"Тепловая карта активности (52 недели)","heatmap.wed":"Ср","lastUpdated":"Обновлено","month.names":"Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек","month.year":"{month} {year}","orcarouter.addError":"Не удалось добавить OrcaRouter. Пожалуйста, попробуйте ещё раз.","orcarouter.choiceSuffix":"(Спонсированная интеграция)","panel.badge":"Использование/Баланс","panel.title":"Расход и баланс","panel.updatedAt":"Обновлено в {time}","perf.empty":"Нет данных о производительности (отсутствуют временные метки в журналах)","perf.est":"прибл.","perf.latencyAvg":"Средняя задержка","perf.modeTps":"токены/с","perf.modeTtft":"ТТФТ","perf.note":"TTFT = запрос → первый токен контента. Последующие шаги в цикле инструментов не имеют отдельного лога запросов, поэтому их TTFT оценивается с начала шага.","perf.samples":"Образцы","perf.title":"Скорость и задержка модели","perf.tps":"токенов/с","perf.ttftAvg":"Среднее значение TTFT","perf.ttftP50":"ТТФТ P50","perf.ttftP90":"TTFT P90","plan.auto":"авто","plan.balance":"Баланс","plan.code":"План кода","plan.noBalance":"не настроен баланс","plan.perMonth":"месяц","plan.period":"последние {days} дней","plan.quota":"квота","plan.remaining":"Осталось","plan.requests":"запросы","plan.subscription":"Подписка","plan.tiers":"Уровни","plan.token":"Тарифный план","plan.tokenEstimate":"оценка токенов","plan.tokens":"Токены","plan.used":"Использовано","plan.usedCost":"Стоимость использования","pricing.peakOffpeak":"пиковый/непиковый","recent.anomaly":"Аномалия стоимости (значительно выше среднего)","refresh":"Обновить","section.byCwd":"Рабочий каталог","section.byDay":"Днём","section.byModel":"По модели","section.byProvider":"По провайдеру","section.bySession":"По сеансу","section.plans":"Тарифы","section.pricing":"Тарифы (за миллион токенов)","section.recent":"Последние звонки","section.series":"Временные ряды","state.empty":"Данные об использовании токенов пока отсутствуют (нет вызовов с использованием)","state.error":"Не удалось загрузить","state.loading":"Вычисление…","state.retry":"Повторить","subscription.error":"Не удалось использовать подписку: {message}","subscription.loading":"Получение данных об использовании подписки…","subscription.notConfigured":"Настройте {refs} для отображения текущего использования подписки.","subscription.planUnknown":"План подписки","subscription.rateLimited":"Провайдер ограничивает частоту проверок; попробуйте позже.","subscription.resetDue":"Сброс квоты","subscription.resets":"Сбросится через {time}","subscription.status.notConfigured":"Не настроено","subscription.status.ok":"В прямом эфире","subscription.status.rateLimited":"Ограничение по частоте запросов","subscription.status.unauthorized":"Войдите снова","subscription.status.unavailable":"Недоступно","subscription.title":"Использование подписки","subscription.unauthorized":"Учетные данные истекли; обновите их и повторите попытку.","subscription.unavailable":"Провайдер не вернул распознаваемых окон квот.","subscription.used":"{value}% использовано","subscription.window.daily":"Ежедневное окно","subscription.window.mcp":"Ежемесячная квота MCP","subscription.window.monthly":"Ежемесячное окно","subscription.window.quota":"Общая квота","subscription.window.session":"5-часовое окно","subscription.window.weekly":"Еженедельное окно","summary.activeDays":"Активные дни","summary.avgCost":"Среднее / вызов","summary.cacheHit":"Процент попаданий в кеш","summary.cacheRead":"Чтение кэша","summary.cacheWrite":"Запись в кеш","summary.calls":"Звонки","summary.cost":"Примерная стоимость","summary.input":"Ввод","summary.output":"Вывод","summary.sessions":"Сессии","summary.streak":"Дневная серия","summary.today":"Сегодня","summary.tokens":"Всего токенов","tab.details":"Детали звонка","tab.overview":"Обзор","tab.perf":"Производительность","tab.today":"Сегодня","today.calls":"Звонков сегодня","today.cost":"Стоимость сегодня","today.empty":"Сегодня звонков еще не было","today.title":"Сегодняшние токены и стоимость","today.tokens":"Токены сегодня","usage.back":"Назад","usage.cacheRead":"Чтение кэша","usage.error":"Агрегация использования не удалась: {message}","usage.heatmap":"Ежедневное использование в этом месяце","usage.hit.today":"Сегодняшний процент попаданий в кэш","usage.hitRate":"Кэш-попадание","usage.input":"Ввод","usage.legendLess":"Меньше","usage.legendMore":"Ещё","usage.loading":"Агрегирование использования…","usage.month":"В этом месяце","usage.noModels":"Нет данных по моделям за этот день.","usage.output":"Вывод","usage.recent":"Последние 14 дней","usage.title":"Использование токенов","usage.today":"Сегодня","usage.total":"За всё время","usage.unknownModel":"Неизвестная модель","weekday.fri":"Ф","weekday.mon":"М","weekday.sat":"С","weekday.sun":"С","weekday.thu":"Т","weekday.tue":"Т","weekday.wed":"В","widget.close":"Свернуть","widget.hint":"Использование токенов & примерная стоимость","widget.hoverHint":"Нажмите, чтобы развернуть","widget.open":"Развернуть"}}
|
|
1
|
+
{"@xfqz86/dsh-usage-stats":{"dates.tipFull":"{date} · {total} токенов · вызовов: {calls}","deepseek.balancesEmpty":"Нет данных о балансе","deepseek.grantedBalance":"Бонусный","deepseek.label":"Баланс DeepSeek","deepseek.notAvailable":"Баланс недоступен","deepseek.notConfigured":"API-ключ не настроен (укажите DEEPSEEK_API_KEY в учетных данных DSH)","deepseek.refresh":"Обновить баланс сейчас","deepseek.title":"Баланс DeepSeek","deepseek.toppedUpBalance":"Пополненный","deepseek.unavailable":"Ошибка запроса баланса, повтор…","events":"событий","footer.cacheHitRate":"Попадание в кэш","footer.railAria":"Сегодня {tokens} токенов — открыть статистику использования","footer.railEmpty":"Нет данных","footer.railHeader":"Сегодня:","footer.todayLabel":"Сегодня","go.label":"Квота Go","go.monthly":"В этом месяце","go.noPlan":"Подписка OpenCode Go не оформлена","go.notConfigured":"API-ключ не настроен (укажите OPENCODE_GO_API_KEY в учетных данных DSH)","go.refresh":"Обновить квоту сейчас","go.resetsAt":"Сброс в {time}","go.rolling":"Плавающие 5 часов","go.short.monthly":"Мес","go.short.rolling":"5ч","go.short.weekly":"Нед","go.title":"Квота OpenCode Go","go.unavailable":"Ошибка запроса квоты, повтор…","go.weekly":"На этой неделе","heat.legendLess":"Меньше","heat.legendMore":"Больше","heat.total":"Всего {tokens} токенов · вызовов: {calls}","modelRange.14d":"14 дней","modelRange.180d":"Полгода","modelRange.30d":"1 месяц","modelRange.365d":"1 год","modelRange.7d":"7 дней","modelRange.90d":"3 месяца","modelRange.all":"Все","models.chartTokens":"Токены","models.chartTurns":"Ходы","models.context":"Контекст","models.distribution":"Распределение","models.empty":"Нет данных по моделям","models.filterAll":"Все","models.filterDeepseek":"DeepSeek","models.filterOpenai":"OpenAI","models.filterQwen":"Qwen","models.input":"Ввод","models.mergedSources":"Объединено {n}","models.mergedSourcesHint":"Эта строка включает расход от","models.output":"Вывод","models.reasoning":"Рассуждения","models.sortTokens":"По токенам","models.sortTurns":"По вызовам","models.title":"Использование моделей","models.totalCalls":"Всего вызовов","models.totalCost":"Стоимость","models.totalTokens":"Всего токенов","month.1":"Янв","month.10":"Окт","month.11":"Ноя","month.12":"Дек","month.2":"Фев","month.3":"Мар","month.4":"Апр","month.5":"Май","month.6":"Июн","month.7":"Июл","month.8":"Авг","month.9":"Сен","pagination.label":"Навигация по страницам","pagination.next":"Вперёд","pagination.page":"Страница {current} из {total}","pagination.prev":"Назад","panel.close":"Закрыть статистику","panel.models":"По моделям","panel.summary.callsSuffix":" вызовов","panel.summary.sessions":"Сессии","panel.summary.totalTokens":"Всего","panel.title":"Статистика использования","panel.trend":"Динамика по дням","range.14d":"14 дней","range.180d":"Полгода","range.30d":"30 дней","range.365d":"1 год","range.7d":"7 дней","range.90d":"90 дней","range.all":"Все","sessions.childrenCount":"{n} субагентов","sessions.collapseChildren":"Скрыть субагентов","sessions.cost":"Стоимость","sessions.duration":"Длительность","sessions.empty":"Нет сессий за выбранный период","sessions.expandChildren":"Показать {n} субагентов","sessions.filterAll":"Все сессии","sessions.input":"Входные","sessions.lastActive":"Активность","sessions.model":"Модель","sessions.name":"Название сессии","sessions.output":"Выходные","sessions.search":"Поиск по сессиям…","sessions.title":"Сессии","sessions.tokens":"Токены","sessions.total":"Всего","sessions.turns":"Ходов","settings.clear":"Очистить реестр","settings.clearAction":"Очистить реестр","settings.clearCancel":"Отмена","settings.clearConfirm":"Подтвердить очистку","settings.clearConfirmAck":"Я понимаю, что это удалит все накопленные данные учета","settings.clearConfirmDesc":"Очищает все данные реестра и сбрасывает статистику на ноль без повторного сканирования истории. Это действие необратимо. Продолжить?","settings.clearConfirmTitle":"Очистить реестр?","settings.clearHint":"Удалить все данные реестра (события и метаданные) и обнулить статистику без повторного анализа истории","settings.cleared":"Очищено","settings.clearing":"Очистка…","settings.deepseekEnabled":"Включить мониторинг баланса DeepSeek","settings.deepseekEnabledHint":"Отображать баланс официального API DeepSeek в панели и на боковой панели","settings.deepseekInterval":"Интервал проверки баланса DeepSeek","settings.deepseekIntervalHint":"Частота запроса официального API (в минутах, не менее {min} мин)","settings.goEnabled":"Включить мониторинг квоты OpenCode Go","settings.goEnabledHint":"Отображать статус квоты OpenCode Go в панели и на боковой панели","settings.goInterval":"Интервал проверки квоты Go","settings.goIntervalHint":"Частота запроса официального API квот (в минутах, не менее {min} мин)","settings.ledgerBusyHint":"Выполняется сканирование журналов сессий; очистка или пересборка недоступны до его завершения","settings.ledgerOps":"Операции с реестром","settings.modelRedirects":"Перенаправление статистики моделей","settings.modelRedirectsAdd":"Добавить правило","settings.modelRedirectsDuplicate":"Для этого источника уже есть правило; применяется только верхнее","settings.modelRedirectsEmpty":"Правил пока нет — вкладка «Модели» считает каждого провайдера и модель отдельно","settings.modelRedirectsHint":"Учитывать расход одной модели/провайдера под именем другой; меняется только отображение во вкладке «Модели», реестр сохраняет исходные данные","settings.modelRedirectsIncomplete":"Вступает в силу после заполнения всех четырёх полей","settings.modelRedirectsMax":"Не более {max} правил","settings.preferences":"Настройки","settings.rebuild":"Пересобрать реестр","settings.rebuildAction":"Пересобрать реестр","settings.rebuildCancel":"Отмена","settings.rebuildConfirm":"Пересобрать","settings.rebuildConfirmAck":"Я понимаю, что это очистит и заново пересоберет все данные учета","settings.rebuildConfirmDesc":"Очищает поток событий и заново сканирует все файлы истории сессий для пересчета статистики. Это действие необратимо. Продолжить?","settings.rebuildConfirmTitle":"Пересобрать реестр?","settings.rebuildHint":"Очистить поток событий и заново просканировать журналы всех сессий для актуализации реестра","settings.rebuilding":"Пересборка…","settings.rebuilt":"Пересобрано","settings.redirectFrom":"Откуда","settings.redirectModel":"Модель","settings.redirectPick":"Выберите из списка или введите значение","settings.redirectProvider":"Провайдер","settings.redirectRemove":"Удалить правило","settings.redirectTo":"Куда","settings.showDeepSeekInSidebar":"Показывать баланс DeepSeek на боковой панели","settings.showDeepSeekInSidebarHint":"Отображать чипы баланса DeepSeek внизу боковой панели (также видны в панели)","settings.showGoInSidebar":"Показывать остаток квоты OpenCode Go на боковой панели","settings.showGoInSidebarHint":"Отображать чипы использования (5ч / неделя / месяц) внизу боковой панели (также видны в панели)","settings.showZaiInSidebar":"Показывать квоту Z.ai на боковой панели","settings.showZaiInSidebarHint":"Отображать чипы квоты Z.ai (5ч / неделя / поиск) внизу боковой панели (также видны в панели)","settings.storageHint":"Настройки сохраняются в серверном файле settings.yaml, поэтому синхронизируются между всеми браузерами","settings.storageReadonly":"Серверные настройки в настоящее время доступны только для чтения; изменения не сохранятся","settings.storageUnavailable":"На этом сервере нет постоянного хранилища настроек; изменения сохраняются только до закрытия вкладки","settings.unitMinutes":"мин","settings.zaiEnabled":"Включить мониторинг квоты Z.ai","settings.zaiEnabledHint":"Опрашивать официальный эндпоинт квот Z.ai и показывать индикатор на панели","settings.zaiInterval":"Интервал проверки квоты Z.ai","settings.zaiIntervalHint":"Частота опроса официального API (в минутах, не менее {min} мин)","state.loading":"Загрузка…","state.missingSessions":"Не удалось прочитать {n} сессий","state.noKey":"Ключ не задан","state.noPlan":"Нет подписки","state.noUsage":"Данных об использовании пока нет","state.scanning":"Сканирование…","state.unavailable":"Данные недоступны, повтор…","tab.dates":"По дням","tab.models":"Модели","tab.overview":"Обзор","tab.sessions":"Сессии","tab.settings":"Настройки","table.avgPerCall":"На вызов","table.cacheRead":"Кэш","table.calls":"Вызовы","table.hitRate":"Попадание в кэш","table.input":"Вход","table.lastActive":"Последняя активность","table.model":"Модель / Провайдер","table.output":"Выход","table.session":"Сессия","table.share":"Доля","table.total":"Всего","time.today":"Сегодня","time.yesterday":"Вчера","updatedAt":"Обновлено","zai.label":"Квота Z.ai","zai.noData":"Нет данных о квоте","zai.noPlan":"План GLM Coding не подключён","zai.notConfigured":"API-ключ не настроен (укажите ZAI_API_KEY или ZAI_CODING_CN_API_KEY в учетных данных DSH)","zai.refresh":"Обновить квоту сейчас","zai.resetsAt":"Сброс в {time}","zai.session":"Плавающие 5 часов","zai.short.label":"Z.ai","zai.short.session":"5ч","zai.short.webSearches":"Поиск","zai.short.weekly":"Нед","zai.title":"Квота Z.ai","zai.unavailable":"Ошибка запроса квоты, повтор…","zai.webSearches":"Веб-поиск","zai.webSearchesCount":"Поисков: {used} из {limit}","zai.weekly":"На этой неделе"},"dsh-usage-stats":{"dates.tipFull":"{date} · {total} токенов · вызовов: {calls}","deepseek.balancesEmpty":"Нет данных о балансе","deepseek.grantedBalance":"Бонусный","deepseek.label":"Баланс DeepSeek","deepseek.notAvailable":"Баланс недоступен","deepseek.notConfigured":"API-ключ не настроен (укажите DEEPSEEK_API_KEY в учетных данных DSH)","deepseek.refresh":"Обновить баланс сейчас","deepseek.title":"Баланс DeepSeek","deepseek.toppedUpBalance":"Пополненный","deepseek.unavailable":"Ошибка запроса баланса, повтор…","events":"событий","footer.cacheHitRate":"Попадание в кэш","footer.railAria":"Сегодня {tokens} токенов — открыть статистику использования","footer.railEmpty":"Нет данных","footer.railHeader":"Сегодня:","footer.todayLabel":"Сегодня","go.label":"Квота Go","go.monthly":"В этом месяце","go.noPlan":"Подписка OpenCode Go не оформлена","go.notConfigured":"API-ключ не настроен (укажите OPENCODE_GO_API_KEY в учетных данных DSH)","go.refresh":"Обновить квоту сейчас","go.resetsAt":"Сброс в {time}","go.rolling":"Плавающие 5 часов","go.short.monthly":"Мес","go.short.rolling":"5ч","go.short.weekly":"Нед","go.title":"Квота OpenCode Go","go.unavailable":"Ошибка запроса квоты, повтор…","go.weekly":"На этой неделе","heat.legendLess":"Меньше","heat.legendMore":"Больше","heat.total":"Всего {tokens} токенов · вызовов: {calls}","modelRange.14d":"14 дней","modelRange.180d":"Полгода","modelRange.30d":"1 месяц","modelRange.365d":"1 год","modelRange.7d":"7 дней","modelRange.90d":"3 месяца","modelRange.all":"Все","models.chartTokens":"Токены","models.chartTurns":"Ходы","models.context":"Контекст","models.distribution":"Распределение","models.empty":"Нет данных по моделям","models.filterAll":"Все","models.filterDeepseek":"DeepSeek","models.filterOpenai":"OpenAI","models.filterQwen":"Qwen","models.input":"Ввод","models.mergedSources":"Объединено {n}","models.mergedSourcesHint":"Эта строка включает расход от","models.output":"Вывод","models.reasoning":"Рассуждения","models.sortTokens":"По токенам","models.sortTurns":"По вызовам","models.title":"Использование моделей","models.totalCalls":"Всего вызовов","models.totalCost":"Стоимость","models.totalTokens":"Всего токенов","month.1":"Янв","month.10":"Окт","month.11":"Ноя","month.12":"Дек","month.2":"Фев","month.3":"Мар","month.4":"Апр","month.5":"Май","month.6":"Июн","month.7":"Июл","month.8":"Авг","month.9":"Сен","pagination.label":"Навигация по страницам","pagination.next":"Вперёд","pagination.page":"Страница {current} из {total}","pagination.prev":"Назад","panel.close":"Закрыть статистику","panel.models":"По моделям","panel.summary.callsSuffix":" вызовов","panel.summary.sessions":"Сессии","panel.summary.totalTokens":"Всего","panel.title":"Статистика использования","panel.trend":"Динамика по дням","range.14d":"14 дней","range.180d":"Полгода","range.30d":"30 дней","range.365d":"1 год","range.7d":"7 дней","range.90d":"90 дней","range.all":"Все","sessions.childrenCount":"{n} субагентов","sessions.collapseChildren":"Скрыть субагентов","sessions.cost":"Стоимость","sessions.duration":"Длительность","sessions.empty":"Нет сессий за выбранный период","sessions.expandChildren":"Показать {n} субагентов","sessions.filterAll":"Все сессии","sessions.input":"Входные","sessions.lastActive":"Активность","sessions.model":"Модель","sessions.name":"Название сессии","sessions.output":"Выходные","sessions.search":"Поиск по сессиям…","sessions.title":"Сессии","sessions.tokens":"Токены","sessions.total":"Всего","sessions.turns":"Ходов","settings.clear":"Очистить реестр","settings.clearAction":"Очистить реестр","settings.clearCancel":"Отмена","settings.clearConfirm":"Подтвердить очистку","settings.clearConfirmAck":"Я понимаю, что это удалит все накопленные данные учета","settings.clearConfirmDesc":"Очищает все данные реестра и сбрасывает статистику на ноль без повторного сканирования истории. Это действие необратимо. Продолжить?","settings.clearConfirmTitle":"Очистить реестр?","settings.clearHint":"Удалить все данные реестра (события и метаданные) и обнулить статистику без повторного анализа истории","settings.cleared":"Очищено","settings.clearing":"Очистка…","settings.deepseekEnabled":"Включить мониторинг баланса DeepSeek","settings.deepseekEnabledHint":"Отображать баланс официального API DeepSeek в панели и на боковой панели","settings.deepseekInterval":"Интервал проверки баланса DeepSeek","settings.deepseekIntervalHint":"Частота запроса официального API (в минутах, не менее {min} мин)","settings.goEnabled":"Включить мониторинг квоты OpenCode Go","settings.goEnabledHint":"Отображать статус квоты OpenCode Go в панели и на боковой панели","settings.goInterval":"Интервал проверки квоты Go","settings.goIntervalHint":"Частота запроса официального API квот (в минутах, не менее {min} мин)","settings.ledgerBusyHint":"Выполняется сканирование журналов сессий; очистка или пересборка недоступны до его завершения","settings.ledgerOps":"Операции с реестром","settings.modelRedirects":"Перенаправление статистики моделей","settings.modelRedirectsAdd":"Добавить правило","settings.modelRedirectsDuplicate":"Для этого источника уже есть правило; применяется только верхнее","settings.modelRedirectsEmpty":"Правил пока нет — вкладка «Модели» считает каждого провайдера и модель отдельно","settings.modelRedirectsHint":"Учитывать расход одной модели/провайдера под именем другой; меняется только отображение во вкладке «Модели», реестр сохраняет исходные данные","settings.modelRedirectsIncomplete":"Вступает в силу после заполнения всех четырёх полей","settings.modelRedirectsMax":"Не более {max} правил","settings.preferences":"Настройки","settings.rebuild":"Пересобрать реестр","settings.rebuildAction":"Пересобрать реестр","settings.rebuildCancel":"Отмена","settings.rebuildConfirm":"Пересобрать","settings.rebuildConfirmAck":"Я понимаю, что это очистит и заново пересоберет все данные учета","settings.rebuildConfirmDesc":"Очищает поток событий и заново сканирует все файлы истории сессий для пересчета статистики. Это действие необратимо. Продолжить?","settings.rebuildConfirmTitle":"Пересобрать реестр?","settings.rebuildHint":"Очистить поток событий и заново просканировать журналы всех сессий для актуализации реестра","settings.rebuilding":"Пересборка…","settings.rebuilt":"Пересобрано","settings.redirectFrom":"Откуда","settings.redirectModel":"Модель","settings.redirectPick":"Выберите из списка или введите значение","settings.redirectProvider":"Провайдер","settings.redirectRemove":"Удалить правило","settings.redirectTo":"Куда","settings.showDeepSeekInSidebar":"Показывать баланс DeepSeek на боковой панели","settings.showDeepSeekInSidebarHint":"Отображать чипы баланса DeepSeek внизу боковой панели (также видны в панели)","settings.showGoInSidebar":"Показывать остаток квоты OpenCode Go на боковой панели","settings.showGoInSidebarHint":"Отображать чипы использования (5ч / неделя / месяц) внизу боковой панели (также видны в панели)","settings.showZaiInSidebar":"Показывать квоту Z.ai на боковой панели","settings.showZaiInSidebarHint":"Отображать чипы квоты Z.ai (5ч / неделя / поиск) внизу боковой панели (также видны в панели)","settings.storageHint":"Настройки сохраняются в серверном файле settings.yaml, поэтому синхронизируются между всеми браузерами","settings.storageReadonly":"Серверные настройки в настоящее время доступны только для чтения; изменения не сохранятся","settings.storageUnavailable":"На этом сервере нет постоянного хранилища настроек; изменения сохраняются только до закрытия вкладки","settings.unitMinutes":"мин","settings.zaiEnabled":"Включить мониторинг квоты Z.ai","settings.zaiEnabledHint":"Опрашивать официальный эндпоинт квот Z.ai и показывать индикатор на панели","settings.zaiInterval":"Интервал проверки квоты Z.ai","settings.zaiIntervalHint":"Частота опроса официального API (в минутах, не менее {min} мин)","state.loading":"Загрузка…","state.missingSessions":"Не удалось прочитать {n} сессий","state.noKey":"Ключ не задан","state.noPlan":"Нет подписки","state.noUsage":"Данных об использовании пока нет","state.scanning":"Сканирование…","state.unavailable":"Данные недоступны, повтор…","tab.dates":"По дням","tab.models":"Модели","tab.overview":"Обзор","tab.sessions":"Сессии","tab.settings":"Настройки","table.avgPerCall":"На вызов","table.cacheRead":"Кэш","table.calls":"Вызовы","table.hitRate":"Попадание в кэш","table.input":"Вход","table.lastActive":"Последняя активность","table.model":"Модель / Провайдер","table.output":"Выход","table.session":"Сессия","table.share":"Доля","table.total":"Всего","time.today":"Сегодня","time.yesterday":"Вчера","updatedAt":"Обновлено","zai.label":"Квота Z.ai","zai.noData":"Нет данных о квоте","zai.noPlan":"План GLM Coding не подключён","zai.notConfigured":"API-ключ не настроен (укажите ZAI_API_KEY или ZAI_CODING_CN_API_KEY в учетных данных DSH)","zai.refresh":"Обновить квоту сейчас","zai.resetsAt":"Сброс в {time}","zai.session":"Плавающие 5 часов","zai.short.label":"Z.ai","zai.short.session":"5ч","zai.short.webSearches":"Поиск","zai.short.weekly":"Нед","zai.title":"Квота Z.ai","zai.unavailable":"Ошибка запроса квоты, повтор…","zai.webSearches":"Веб-поиск","zai.webSearchesCount":"Поисков: {used} из {limit}","zai.weekly":"На этой неделе"},"usage-stats":{"dates.tipFull":"{date} · {total} токенов · вызовов: {calls}","deepseek.balancesEmpty":"Нет данных о балансе","deepseek.grantedBalance":"Бонусный","deepseek.label":"Баланс DeepSeek","deepseek.notAvailable":"Баланс недоступен","deepseek.notConfigured":"API-ключ не настроен (укажите DEEPSEEK_API_KEY в учетных данных DSH)","deepseek.refresh":"Обновить баланс сейчас","deepseek.title":"Баланс DeepSeek","deepseek.toppedUpBalance":"Пополненный","deepseek.unavailable":"Ошибка запроса баланса, повтор…","events":"событий","footer.cacheHitRate":"Попадание в кэш","footer.railAria":"Сегодня {tokens} токенов — открыть статистику использования","footer.railEmpty":"Нет данных","footer.railHeader":"Сегодня:","footer.todayLabel":"Сегодня","go.label":"Квота Go","go.monthly":"В этом месяце","go.noPlan":"Подписка OpenCode Go не оформлена","go.notConfigured":"API-ключ не настроен (укажите OPENCODE_GO_API_KEY в учетных данных DSH)","go.refresh":"Обновить квоту сейчас","go.resetsAt":"Сброс в {time}","go.rolling":"Плавающие 5 часов","go.short.monthly":"Мес","go.short.rolling":"5ч","go.short.weekly":"Нед","go.title":"Квота OpenCode Go","go.unavailable":"Ошибка запроса квоты, повтор…","go.weekly":"На этой неделе","heat.legendLess":"Меньше","heat.legendMore":"Больше","heat.total":"Всего {tokens} токенов · вызовов: {calls}","modelRange.14d":"14 дней","modelRange.180d":"Полгода","modelRange.30d":"1 месяц","modelRange.365d":"1 год","modelRange.7d":"7 дней","modelRange.90d":"3 месяца","modelRange.all":"Все","models.chartTokens":"Токены","models.chartTurns":"Ходы","models.context":"Контекст","models.distribution":"Распределение","models.empty":"Нет данных по моделям","models.filterAll":"Все","models.filterDeepseek":"DeepSeek","models.filterOpenai":"OpenAI","models.filterQwen":"Qwen","models.input":"Ввод","models.mergedSources":"Объединено {n}","models.mergedSourcesHint":"Эта строка включает расход от","models.output":"Вывод","models.reasoning":"Рассуждения","models.sortTokens":"По токенам","models.sortTurns":"По вызовам","models.title":"Использование моделей","models.totalCalls":"Всего вызовов","models.totalCost":"Стоимость","models.totalTokens":"Всего токенов","month.1":"Янв","month.10":"Окт","month.11":"Ноя","month.12":"Дек","month.2":"Фев","month.3":"Мар","month.4":"Апр","month.5":"Май","month.6":"Июн","month.7":"Июл","month.8":"Авг","month.9":"Сен","pagination.label":"Навигация по страницам","pagination.next":"Вперёд","pagination.page":"Страница {current} из {total}","pagination.prev":"Назад","panel.close":"Закрыть статистику","panel.models":"По моделям","panel.summary.callsSuffix":" вызовов","panel.summary.sessions":"Сессии","panel.summary.totalTokens":"Всего","panel.title":"Статистика использования","panel.trend":"Динамика по дням","range.14d":"14 дней","range.180d":"Полгода","range.30d":"30 дней","range.365d":"1 год","range.7d":"7 дней","range.90d":"90 дней","range.all":"Все","sessions.childrenCount":"{n} субагентов","sessions.collapseChildren":"Скрыть субагентов","sessions.cost":"Стоимость","sessions.duration":"Длительность","sessions.empty":"Нет сессий за выбранный период","sessions.expandChildren":"Показать {n} субагентов","sessions.filterAll":"Все сессии","sessions.input":"Входные","sessions.lastActive":"Активность","sessions.model":"Модель","sessions.name":"Название сессии","sessions.output":"Выходные","sessions.search":"Поиск по сессиям…","sessions.title":"Сессии","sessions.tokens":"Токены","sessions.total":"Всего","sessions.turns":"Ходов","settings.clear":"Очистить реестр","settings.clearAction":"Очистить реестр","settings.clearCancel":"Отмена","settings.clearConfirm":"Подтвердить очистку","settings.clearConfirmAck":"Я понимаю, что это удалит все накопленные данные учета","settings.clearConfirmDesc":"Очищает все данные реестра и сбрасывает статистику на ноль без повторного сканирования истории. Это действие необратимо. Продолжить?","settings.clearConfirmTitle":"Очистить реестр?","settings.clearHint":"Удалить все данные реестра (события и метаданные) и обнулить статистику без повторного анализа истории","settings.cleared":"Очищено","settings.clearing":"Очистка…","settings.deepseekEnabled":"Включить мониторинг баланса DeepSeek","settings.deepseekEnabledHint":"Отображать баланс официального API DeepSeek в панели и на боковой панели","settings.deepseekInterval":"Интервал проверки баланса DeepSeek","settings.deepseekIntervalHint":"Частота запроса официального API (в минутах, не менее {min} мин)","settings.goEnabled":"Включить мониторинг квоты OpenCode Go","settings.goEnabledHint":"Отображать статус квоты OpenCode Go в панели и на боковой панели","settings.goInterval":"Интервал проверки квоты Go","settings.goIntervalHint":"Частота запроса официального API квот (в минутах, не менее {min} мин)","settings.ledgerBusyHint":"Выполняется сканирование журналов сессий; очистка или пересборка недоступны до его завершения","settings.ledgerOps":"Операции с реестром","settings.modelRedirects":"Перенаправление статистики моделей","settings.modelRedirectsAdd":"Добавить правило","settings.modelRedirectsDuplicate":"Для этого источника уже есть правило; применяется только верхнее","settings.modelRedirectsEmpty":"Правил пока нет — вкладка «Модели» считает каждого провайдера и модель отдельно","settings.modelRedirectsHint":"Учитывать расход одной модели/провайдера под именем другой; меняется только отображение во вкладке «Модели», реестр сохраняет исходные данные","settings.modelRedirectsIncomplete":"Вступает в силу после заполнения всех четырёх полей","settings.modelRedirectsMax":"Не более {max} правил","settings.preferences":"Настройки","settings.rebuild":"Пересобрать реестр","settings.rebuildAction":"Пересобрать реестр","settings.rebuildCancel":"Отмена","settings.rebuildConfirm":"Пересобрать","settings.rebuildConfirmAck":"Я понимаю, что это очистит и заново пересоберет все данные учета","settings.rebuildConfirmDesc":"Очищает поток событий и заново сканирует все файлы истории сессий для пересчета статистики. Это действие необратимо. Продолжить?","settings.rebuildConfirmTitle":"Пересобрать реестр?","settings.rebuildHint":"Очистить поток событий и заново просканировать журналы всех сессий для актуализации реестра","settings.rebuilding":"Пересборка…","settings.rebuilt":"Пересобрано","settings.redirectFrom":"Откуда","settings.redirectModel":"Модель","settings.redirectPick":"Выберите из списка или введите значение","settings.redirectProvider":"Провайдер","settings.redirectRemove":"Удалить правило","settings.redirectTo":"Куда","settings.showDeepSeekInSidebar":"Показывать баланс DeepSeek на боковой панели","settings.showDeepSeekInSidebarHint":"Отображать чипы баланса DeepSeek внизу боковой панели (также видны в панели)","settings.showGoInSidebar":"Показывать остаток квоты OpenCode Go на боковой панели","settings.showGoInSidebarHint":"Отображать чипы использования (5ч / неделя / месяц) внизу боковой панели (также видны в панели)","settings.showZaiInSidebar":"Показывать квоту Z.ai на боковой панели","settings.showZaiInSidebarHint":"Отображать чипы квоты Z.ai (5ч / неделя / поиск) внизу боковой панели (также видны в панели)","settings.storageHint":"Настройки сохраняются в серверном файле settings.yaml, поэтому синхронизируются между всеми браузерами","settings.storageReadonly":"Серверные настройки в настоящее время доступны только для чтения; изменения не сохранятся","settings.storageUnavailable":"На этом сервере нет постоянного хранилища настроек; изменения сохраняются только до закрытия вкладки","settings.unitMinutes":"мин","settings.zaiEnabled":"Включить мониторинг квоты Z.ai","settings.zaiEnabledHint":"Опрашивать официальный эндпоинт квот Z.ai и показывать индикатор на панели","settings.zaiInterval":"Интервал проверки квоты Z.ai","settings.zaiIntervalHint":"Частота опроса официального API (в минутах, не менее {min} мин)","state.loading":"Загрузка…","state.missingSessions":"Не удалось прочитать {n} сессий","state.noKey":"Ключ не задан","state.noPlan":"Нет подписки","state.noUsage":"Данных об использовании пока нет","state.scanning":"Сканирование…","state.unavailable":"Данные недоступны, повтор…","tab.dates":"По дням","tab.models":"Модели","tab.overview":"Обзор","tab.sessions":"Сессии","tab.settings":"Настройки","table.avgPerCall":"На вызов","table.cacheRead":"Кэш","table.calls":"Вызовы","table.hitRate":"Попадание в кэш","table.input":"Вход","table.lastActive":"Последняя активность","table.model":"Модель / Провайдер","table.output":"Выход","table.session":"Сессия","table.share":"Доля","table.total":"Всего","time.today":"Сегодня","time.yesterday":"Вчера","updatedAt":"Обновлено","zai.label":"Квота Z.ai","zai.noData":"Нет данных о квоте","zai.noPlan":"План GLM Coding не подключён","zai.notConfigured":"API-ключ не настроен (укажите ZAI_API_KEY или ZAI_CODING_CN_API_KEY в учетных данных DSH)","zai.refresh":"Обновить квоту сейчас","zai.resetsAt":"Сброс в {time}","zai.session":"Плавающие 5 часов","zai.short.label":"Z.ai","zai.short.session":"5ч","zai.short.webSearches":"Поиск","zai.short.weekly":"Нед","zai.title":"Квота Z.ai","zai.unavailable":"Ошибка запроса квоты, повтор…","zai.webSearches":"Веб-поиск","zai.webSearchesCount":"Поисков: {used} из {limit}","zai.weekly":"На этой неделе"},"usageStats":{"account.balanceMode":"Баланс API","account.blocked":"Запрос к учетной записи был заблокирован локальной политикой безопасности. Проверьте настройки HTTPS, same-origin и private-network.","account.health.age":"Возраст данных","account.health.lastAttempt":"Последняя попытка","account.health.lastSuccess":"Последний успех","account.health.provenance":"Источник","account.invalidResponse":"Провайдер вернул нераспознанные данные о квоте.","account.loading":"Загрузка провайдеров…","account.provenance.configured":"Настроено","account.provenance.experimental":"Экспериментальный","account.provenance.official":"Официальный API","account.provenance.provider":"API провайдера","account.provenance.unknown":"Неизвестно","account.provider":"Текущий провайдер","account.reason.allAddressesUnreachable":"Ни один из проверенных сетевых адресов не доступен.","account.reason.blockedNetwork":"Запрос на учетную запись был заблокирован политикой локальной сети.","account.reason.dnsResolutionFailed":"Имя хоста провайдера не удалось разрешить.","account.reason.noValidatedAddress":"Не было доступно ни одного проверенного адреса провайдера.","account.reason.rateLimited":"Провайдер ограничил проверку аккаунтов по частоте запросов.","account.reason.sub2apiBalanceShapeUnrecognized":"Конечная точка баланса Sub2API вернула данные в нераспознанном формате.","account.reason.timeout":"Запрос аккаунта завершился по тайм-ауту.","account.reason.unauthorized":"Учетные данные аккаунта были отклонены.","account.reason.unknown":"Проверка учетной записи завершилась неудачей без безопасного диагностического сообщения.","account.reason.upstreamInvalidJson":"Вверх по течению возвращен нечитаемый JSON","account.reason.upstreamInvalidResponse":"Восходящий поток вернул нераспознанный ответ.","account.reason.upstreamNotJson":"Ответ вышестоящего сервера не был в формате JSON","account.reason.upstreamTooLarge":"Ответ от вышестоящего сервера превысил допустимый размер.","account.status.blocked":"Заблокировано","account.status.invalidResponse":"Неверный ответ","account.status.loading":"Загрузка","account.status.stale":"Устаревшие данные","account.status.unknown":"Неизвестно","account.status.unsupported":"Баланс не поддерживается","account.title":"Аккаунт провайдера","action.close":"Закрыть","action.nextMonth":"Следующий месяц","action.prevMonth":"Предыдущий месяц","action.refresh":"Обновить","action.retry":"Повторить","action.today":"Сегодня","balance.available":"доступно","balance.error":"Не удалось получить баланс: {message}","balance.granted":"Предоставлено","balance.loading":"Получение баланса…","balance.noCredential":"{ref} не настроен (отредактируйте ~/.dsh/.credentials.yaml)","balance.noSchemeTag":"нет баланса API","balance.provider":"Провайдер","balance.remaining":"Доступный баланс","balance.title":"Баланс счета","balance.toppedUp":"Пополнено","balance.total":"Общий баланс","balance.unavailable":"недоступно","balance.unsupported":"У этого провайдера нет публичного интерфейса для проверки баланса.","balance.used":"Использовано","billing.monthly":"≈ {amount}/мес","billing.parts":"Композиция","billing.projected":"Прогнозируемое использование на конец месяца","billing.tokenOnly":"расчет на основе использования","billing.total":"Ориентировочные ежемесячные траты","budget.exceeded":"превышен бюджет","budget.level.critical":"Превышение бюджета","budget.level.normal":"Обычный","budget.level.unknown":"Неполная стоимость","budget.level.warning":"Близко к бюджету","budget.over":"{pct}% бюджета использовано","budget.period.daily":"Оценка за сегодня","budget.period.monthly":"Ожидаемый за этот месяц","budget.remaining":"осталось","budget.summary":"{period}: {spent} / {limit} · {level}","budget.title":"Ежемесячный бюджет","budget.used":"использовано","col.cacheRead":"Чтение кэша","col.cacheWrite":"Запись в кеш","col.calls":"Звонки","col.cost":"Стоимость","col.created":"Создано","col.cwd":"Рабочая папка","col.day":"День","col.default":"Стандартная ставка","col.hour":"Время","col.input":"Ввод","col.model":"Модель","col.models":"Модели","col.output":"Вывод","col.price":"Тариф","col.provider":"Провайдер","col.session":"Сессия","col.sessions":"Сессии","col.share":"Поделиться","col.time":"Время","col.tokens":"Токены","col.turn":"Поворот/шаг","curve.cost":"Стоимость","curve.empty":"Нет данных о сериях (нет вызовов в указанном интервале)","curve.legendCacheRead":"Чтение кеша","curve.legendInput":"Ввод","curve.legendOutput":"Вывод","curve.tokens":"Токены","dates.tipFull":"{date} · {total} токенов · вызовов: {calls}","deepseek.balancesEmpty":"Нет данных о балансе","deepseek.grantedBalance":"Бонусный","deepseek.label":"Баланс DeepSeek","deepseek.notAvailable":"Баланс недоступен","deepseek.notConfigured":"API-ключ не настроен (укажите DEEPSEEK_API_KEY в учетных данных DSH)","deepseek.refresh":"Обновить баланс сейчас","deepseek.title":"Баланс DeepSeek","deepseek.toppedUpBalance":"Пополненный","deepseek.unavailable":"Ошибка запроса баланса, повтор…","details.auto":"Автоматически обновляется вместе с главным окном","details.exportCalls":"Экспорт журнала вызовов в CSV","details.exportCsv":"Экспорт CSV","details.exportJson":"Экспортировать JSON","details.hint":"Звонки, токены и стоимость за сессию × модель","details.open":"Открыть подробности в новом окне","details.title":"Детали звонка · сессия × модель","details.updated":"Обновлено","duration.daysHours":"{days}д {hours}ч","duration.hoursMinutes":"{hours}ч {minutes}м","duration.minutes":"{minutes}м","events":"событий","export.dailyCsv":"Ежедневный CSV","export.json":"Полный JSON","export.sessionsCsv":"Сессии CSV","export.title":"Экспорт без секретов","filter.all":"Все рабочие пространства","filter.scope":"Фильтровать статистику по одной рабочей директории","footer.cacheHitRate":"Попадание в кэш","footer.railAria":"Сегодня {tokens} токенов — открыть статистику использования","footer.railEmpty":"Нет данных","footer.railHeader":"Сегодня:","footer.todayLabel":"Сегодня","footnote.disclaimer":"Стоимость рассчитана на основе установленных тарифов и не является счетом.","footnote.errors":"({errors} логов не удалось декодировать)","footnote.scanned":"{sessions} сессий, {calls} звонков просканировано","go.label":"Квота Go","go.monthly":"В этом месяце","go.noPlan":"Подписка OpenCode Go не оформлена","go.notConfigured":"API-ключ не настроен (укажите OPENCODE_GO_API_KEY в учетных данных DSH)","go.refresh":"Обновить квоту сейчас","go.resetsAt":"Сброс в {time}","go.rolling":"Плавающие 5 часов","go.short.monthly":"Мес","go.short.rolling":"5ч","go.short.weekly":"Нед","go.title":"Квота OpenCode Go","go.unavailable":"Ошибка запроса квоты, повтор…","go.weekly":"На этой неделе","heat.legendLess":"Меньше","heat.legendMore":"Больше","heat.total":"Всего {tokens} токенов · вызовов: {calls}","heatmap.empty":"Данные тепловой карты пока отсутствуют","heatmap.fri":"Пт","heatmap.less":"Меньше","heatmap.mon":"Пн","heatmap.month":"{m}","heatmap.more":"Ещё","heatmap.title":"Тепловая карта активности (52 недели)","heatmap.wed":"Ср","lastUpdated":"Обновлено","modelRange.14d":"14 дней","modelRange.180d":"Полгода","modelRange.30d":"1 месяц","modelRange.365d":"1 год","modelRange.7d":"7 дней","modelRange.90d":"3 месяца","modelRange.all":"Все","models.chartTokens":"Токены","models.chartTurns":"Ходы","models.context":"Контекст","models.distribution":"Распределение","models.empty":"Нет данных по моделям","models.filterAll":"Все","models.filterDeepseek":"DeepSeek","models.filterOpenai":"OpenAI","models.filterQwen":"Qwen","models.input":"Ввод","models.mergedSources":"Объединено {n}","models.mergedSourcesHint":"Эта строка включает расход от","models.output":"Вывод","models.reasoning":"Рассуждения","models.sortTokens":"По токенам","models.sortTurns":"По вызовам","models.title":"Использование моделей","models.totalCalls":"Всего вызовов","models.totalCost":"Стоимость","models.totalTokens":"Всего токенов","month.1":"Янв","month.10":"Окт","month.11":"Ноя","month.12":"Дек","month.2":"Фев","month.3":"Мар","month.4":"Апр","month.5":"Май","month.6":"Июн","month.7":"Июл","month.8":"Авг","month.9":"Сен","month.names":"Янв,Фев,Мар,Апр,Май,Июн,Июл,Авг,Сен,Окт,Ноя,Дек","month.year":"{month} {year}","orcarouter.addError":"Не удалось добавить OrcaRouter. Пожалуйста, попробуйте ещё раз.","orcarouter.choiceSuffix":"(Спонсированная интеграция)","pagination.label":"Навигация по страницам","pagination.next":"Вперёд","pagination.page":"Страница {current} из {total}","pagination.prev":"Назад","panel.badge":"Использование/Баланс","panel.close":"Закрыть статистику","panel.models":"По моделям","panel.summary.callsSuffix":" вызовов","panel.summary.sessions":"Сессии","panel.summary.totalTokens":"Всего","panel.title":"Статистика использования","panel.trend":"Динамика по дням","panel.updatedAt":"Обновлено в {time}","perf.empty":"Нет данных о производительности (отсутствуют временные метки в журналах)","perf.est":"прибл.","perf.latencyAvg":"Средняя задержка","perf.modeTps":"токены/с","perf.modeTtft":"ТТФТ","perf.note":"TTFT = запрос → первый токен контента. Последующие шаги в цикле инструментов не имеют отдельного лога запросов, поэтому их TTFT оценивается с начала шага.","perf.samples":"Образцы","perf.title":"Скорость и задержка модели","perf.tps":"токенов/с","perf.ttftAvg":"Среднее значение TTFT","perf.ttftP50":"ТТФТ P50","perf.ttftP90":"TTFT P90","plan.auto":"авто","plan.balance":"Баланс","plan.code":"План кода","plan.noBalance":"не настроен баланс","plan.perMonth":"месяц","plan.period":"последние {days} дней","plan.quota":"квота","plan.remaining":"Осталось","plan.requests":"запросы","plan.subscription":"Подписка","plan.tiers":"Уровни","plan.token":"Тарифный план","plan.tokenEstimate":"оценка токенов","plan.tokens":"Токены","plan.used":"Использовано","plan.usedCost":"Стоимость использования","pricing.peakOffpeak":"пиковый/непиковый","range.14d":"14 дней","range.180d":"Полгода","range.30d":"30 дней","range.365d":"1 год","range.7d":"7 дней","range.90d":"90 дней","range.all":"Все","recent.anomaly":"Аномалия стоимости (значительно выше среднего)","refresh":"Обновить","section.byCwd":"Рабочий каталог","section.byDay":"Днём","section.byModel":"По модели","section.byProvider":"По провайдеру","section.bySession":"По сеансу","section.plans":"Тарифы","section.pricing":"Тарифы (за миллион токенов)","section.recent":"Последние звонки","section.series":"Временные ряды","sessions.childrenCount":"{n} субагентов","sessions.collapseChildren":"Скрыть субагентов","sessions.cost":"Стоимость","sessions.duration":"Длительность","sessions.empty":"Нет сессий за выбранный период","sessions.expandChildren":"Показать {n} субагентов","sessions.filterAll":"Все сессии","sessions.input":"Входные","sessions.lastActive":"Активность","sessions.model":"Модель","sessions.name":"Название сессии","sessions.output":"Выходные","sessions.search":"Поиск по сессиям…","sessions.title":"Сессии","sessions.tokens":"Токены","sessions.total":"Всего","sessions.turns":"Ходов","settings.clear":"Очистить реестр","settings.clearAction":"Очистить реестр","settings.clearCancel":"Отмена","settings.clearConfirm":"Подтвердить очистку","settings.clearConfirmAck":"Я понимаю, что это удалит все накопленные данные учета","settings.clearConfirmDesc":"Очищает все данные реестра и сбрасывает статистику на ноль без повторного сканирования истории. Это действие необратимо. Продолжить?","settings.clearConfirmTitle":"Очистить реестр?","settings.clearHint":"Удалить все данные реестра (события и метаданные) и обнулить статистику без повторного анализа истории","settings.cleared":"Очищено","settings.clearing":"Очистка…","settings.deepseekEnabled":"Включить мониторинг баланса DeepSeek","settings.deepseekEnabledHint":"Отображать баланс официального API DeepSeek в панели и на боковой панели","settings.deepseekInterval":"Интервал проверки баланса DeepSeek","settings.deepseekIntervalHint":"Частота запроса официального API (в минутах, не менее {min} мин)","settings.goEnabled":"Включить мониторинг квоты OpenCode Go","settings.goEnabledHint":"Отображать статус квоты OpenCode Go в панели и на боковой панели","settings.goInterval":"Интервал проверки квоты Go","settings.goIntervalHint":"Частота запроса официального API квот (в минутах, не менее {min} мин)","settings.ledgerBusyHint":"Выполняется сканирование журналов сессий; очистка или пересборка недоступны до его завершения","settings.ledgerOps":"Операции с реестром","settings.modelRedirects":"Перенаправление статистики моделей","settings.modelRedirectsAdd":"Добавить правило","settings.modelRedirectsDuplicate":"Для этого источника уже есть правило; применяется только верхнее","settings.modelRedirectsEmpty":"Правил пока нет — вкладка «Модели» считает каждого провайдера и модель отдельно","settings.modelRedirectsHint":"Учитывать расход одной модели/провайдера под именем другой; меняется только отображение во вкладке «Модели», реестр сохраняет исходные данные","settings.modelRedirectsIncomplete":"Вступает в силу после заполнения всех четырёх полей","settings.modelRedirectsMax":"Не более {max} правил","settings.preferences":"Настройки","settings.rebuild":"Пересобрать реестр","settings.rebuildAction":"Пересобрать реестр","settings.rebuildCancel":"Отмена","settings.rebuildConfirm":"Пересобрать","settings.rebuildConfirmAck":"Я понимаю, что это очистит и заново пересоберет все данные учета","settings.rebuildConfirmDesc":"Очищает поток событий и заново сканирует все файлы истории сессий для пересчета статистики. Это действие необратимо. Продолжить?","settings.rebuildConfirmTitle":"Пересобрать реестр?","settings.rebuildHint":"Очистить поток событий и заново просканировать журналы всех сессий для актуализации реестра","settings.rebuilding":"Пересборка…","settings.rebuilt":"Пересобрано","settings.redirectFrom":"Откуда","settings.redirectModel":"Модель","settings.redirectPick":"Выберите из списка или введите значение","settings.redirectProvider":"Провайдер","settings.redirectRemove":"Удалить правило","settings.redirectTo":"Куда","settings.showDeepSeekInSidebar":"Показывать баланс DeepSeek на боковой панели","settings.showDeepSeekInSidebarHint":"Отображать чипы баланса DeepSeek внизу боковой панели (также видны в панели)","settings.showGoInSidebar":"Показывать остаток квоты OpenCode Go на боковой панели","settings.showGoInSidebarHint":"Отображать чипы использования (5ч / неделя / месяц) внизу боковой панели (также видны в панели)","settings.showZaiInSidebar":"Показывать квоту Z.ai на боковой панели","settings.showZaiInSidebarHint":"Отображать чипы квоты Z.ai (5ч / неделя / поиск) внизу боковой панели (также видны в панели)","settings.storageHint":"Настройки сохраняются в серверном файле settings.yaml, поэтому синхронизируются между всеми браузерами","settings.storageReadonly":"Серверные настройки в настоящее время доступны только для чтения; изменения не сохранятся","settings.storageUnavailable":"На этом сервере нет постоянного хранилища настроек; изменения сохраняются только до закрытия вкладки","settings.unitMinutes":"мин","settings.zaiEnabled":"Включить мониторинг квоты Z.ai","settings.zaiEnabledHint":"Опрашивать официальный эндпоинт квот Z.ai и показывать индикатор на панели","settings.zaiInterval":"Интервал проверки квоты Z.ai","settings.zaiIntervalHint":"Частота опроса официального API (в минутах, не менее {min} мин)","state.empty":"Данные об использовании токенов пока отсутствуют (нет вызовов с использованием)","state.error":"Не удалось загрузить","state.loading":"Загрузка…","state.missingSessions":"Не удалось прочитать {n} сессий","state.noKey":"Ключ не задан","state.noPlan":"Нет подписки","state.noUsage":"Данных об использовании пока нет","state.retry":"Повторить","state.scanning":"Сканирование…","state.unavailable":"Данные недоступны, повтор…","subscription.error":"Не удалось использовать подписку: {message}","subscription.loading":"Получение данных об использовании подписки…","subscription.notConfigured":"Настройте {refs} для отображения текущего использования подписки.","subscription.planUnknown":"План подписки","subscription.rateLimited":"Провайдер ограничивает частоту проверок; попробуйте позже.","subscription.resetDue":"Сброс квоты","subscription.resets":"Сбросится через {time}","subscription.status.notConfigured":"Не настроено","subscription.status.ok":"В прямом эфире","subscription.status.rateLimited":"Ограничение по частоте запросов","subscription.status.unauthorized":"Войдите снова","subscription.status.unavailable":"Недоступно","subscription.title":"Использование подписки","subscription.unauthorized":"Учетные данные истекли; обновите их и повторите попытку.","subscription.unavailable":"Провайдер не вернул распознаваемых окон квот.","subscription.used":"{value}% использовано","subscription.window.daily":"Ежедневное окно","subscription.window.mcp":"Ежемесячная квота MCP","subscription.window.monthly":"Ежемесячное окно","subscription.window.quota":"Общая квота","subscription.window.session":"5-часовое окно","subscription.window.weekly":"Еженедельное окно","summary.activeDays":"Активные дни","summary.avgCost":"Среднее / вызов","summary.cacheHit":"Процент попаданий в кеш","summary.cacheRead":"Чтение кэша","summary.cacheWrite":"Запись в кеш","summary.calls":"Звонки","summary.cost":"Примерная стоимость","summary.input":"Ввод","summary.output":"Вывод","summary.sessions":"Сессии","summary.streak":"Дневная серия","summary.today":"Сегодня","summary.tokens":"Всего токенов","tab.dates":"По дням","tab.details":"Детали звонка","tab.models":"Модели","tab.overview":"Обзор","tab.perf":"Производительность","tab.sessions":"Сессии","tab.settings":"Настройки","tab.today":"Сегодня","table.avgPerCall":"На вызов","table.cacheRead":"Кэш","table.calls":"Вызовы","table.hitRate":"Попадание в кэш","table.input":"Вход","table.lastActive":"Последняя активность","table.model":"Модель / Провайдер","table.output":"Выход","table.session":"Сессия","table.share":"Доля","table.total":"Всего","time.today":"Сегодня","time.yesterday":"Вчера","today.calls":"Звонков сегодня","today.cost":"Стоимость сегодня","today.empty":"Сегодня звонков еще не было","today.title":"Сегодняшние токены и стоимость","today.tokens":"Токены сегодня","updatedAt":"Обновлено","usage.back":"Назад","usage.cacheRead":"Чтение кэша","usage.error":"Агрегация использования не удалась: {message}","usage.heatmap":"Ежедневное использование в этом месяце","usage.hit.today":"Сегодняшний процент попаданий в кэш","usage.hitRate":"Кэш-попадание","usage.input":"Ввод","usage.legendLess":"Меньше","usage.legendMore":"Ещё","usage.loading":"Агрегирование использования…","usage.month":"В этом месяце","usage.noModels":"Нет данных по моделям за этот день.","usage.output":"Вывод","usage.recent":"Последние 14 дней","usage.title":"Использование токенов","usage.today":"Сегодня","usage.total":"За всё время","usage.unknownModel":"Неизвестная модель","weekday.fri":"Ф","weekday.mon":"М","weekday.sat":"С","weekday.sun":"С","weekday.thu":"Т","weekday.tue":"Т","weekday.wed":"В","widget.close":"Свернуть","widget.hint":"Использование токенов & примерная стоимость","widget.hoverHint":"Нажмите, чтобы развернуть","widget.open":"Развернуть","zai.label":"Квота Z.ai","zai.noData":"Нет данных о квоте","zai.noPlan":"План GLM Coding не подключён","zai.notConfigured":"API-ключ не настроен (укажите ZAI_API_KEY или ZAI_CODING_CN_API_KEY в учетных данных DSH)","zai.refresh":"Обновить квоту сейчас","zai.resetsAt":"Сброс в {time}","zai.session":"Плавающие 5 часов","zai.short.label":"Z.ai","zai.short.session":"5ч","zai.short.webSearches":"Поиск","zai.short.weekly":"Нед","zai.title":"Квота Z.ai","zai.unavailable":"Ошибка запроса квоты, повтор…","zai.webSearches":"Веб-поиск","zai.webSearchesCount":"Поисков: {used} из {limit}","zai.weekly":"На этой неделе"}}
|
|
@@ -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 временно недоступен (переподключение...)","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.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 +1 @@
|
|
|
1
|
-
{"personalDirective":{"disabled":"Директива: Выкл","enabled":"Директива: Вкл","failed":"Сбой подключения переключателя директивы","switching":"Переключение…","title":"Переключить персональную директиву"}}
|
|
1
|
+
{"dsh-personal-directive":{"disabled":"Директива: Выкл","enabled":"Директива: Вкл","failed":"Сбой подключения переключателя директивы","switching":"Переключение…","title":"Переключить персональную директиву"},"personalDirective":{"disabled":"Директива: Выкл","enabled":"Директива: Вкл","failed":"Сбой подключения переключателя директивы","switching":"Переключение…","title":"Переключить персональную директиву"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"dsh-messenger-gateway":{"adminIds":"ID администраторов","adminIdsHint":"ID пользователей с правами выполнения привилегированных команд","advanced":"Опрос Telegram (Long Polling)","agent":"Агент","agentSub":"Назначение модели и системных инструкций для Telegram-сессий","allowDirectMessages":"Разрешить личные сообщения","allowGroupMessages":"Разрешить работу в группах","allowedIds":"Разрешённые ID пользователей","allowedIdsHint":"Через запятую. Пусто = доступ разрешён всем","artifactPreviews":"Генерировать превью диаграмм и таблиц","autoSummarize":"Автосводка длинных сообщений","badge.cron_count":"Cron: {count}","badge.offline":"Telegram отключен","badge.online":"Telegram онлайн (@{username})","badge.pairing_count":"Сопряжено устройств: {count}","badge.pending":"Ожидание подключения бота…","badge.running":"Шлюз запущен","badge.stopped":"Шлюз остановлен","badge.token_missing":"Токен отсутствует","badge.token_ok":"Токен настроен","badge.transport":"Транспорт: Long Polling","botToken":"Токен бота (только запись)","botTokenHint":"Оставьте пустым, чтобы сохранить текущий токен","botUsername":"Имя пользователя бота (@username)","btn.disconnect":"Отключить бота","btn.ping":"Проверить связь (Ping)","btn.regenerate_code":"Новый код сопряжения","cmd.update":"Проверить или установить обновление плагина","debugLogs":"Подробные логи отладки","description":"Telegram-бот: обмен текстом, голосом, фото и документами.","diag.desc":"Проверка доступности Telegram Bot API, пинга и прав бота","diag.smoke_btn":"Запустить Smoke-тест","diag.smoke_err":"Smoke-тест завершился с ошибкой: {error}","diag.smoke_ok":"Smoke-тест пройден успешно! Бот готов к работе.","diag.smoke_testing":"Тестирование шлюза…","diag.title":"Диагностика связи и Smoke-тест","disableDiscord":"Отключить Discord","disableSlack":"Отключить Slack","disableTelegram":"Отключить Telegram","discord":"Шлюз Discord","discordChannels":"Разрешённые ID каналов Discord","discordChannelsHint":"Список ID каналов через запятую. Оставьте пустым, чтобы разрешить все настроенные.","discordSub":"Настройки бота и исходящих вебхуков Discord.","discordToken":"Токен бота Discord","discordTokenHint":"Из Discord Developer Portal. Оставьте пустым для сохранения текущего.","discordWebhook":"URL вебхука Discord","discordWebhookHint":"Входящий вебхук для отправки сообщений/уведомлений.","enableDiscord":"Включить Discord","enableSlack":"Включить Slack","enableTelegram":"Включить Telegram","endpoint":"Webhook URL / Endpoint","endpointHint":"URL для приёма входящих вебхуков от Telegram","errorNotification":"Уведомлять об ошибках выполнения","field.allowed_users":"Разрешённые ID пользователей","field.allowed_users_hint":"Список Telegram ID через запятую (оставьте пустым для сопряжения по коду)","field.notify_on_error":"Оповещать об ошибках выполнения","field.notify_on_error_hint":"Срочные уведомления о падении агента или превышении лимитов","field.notify_on_turn":"Уведомлять о завершении хода","field.notify_on_turn_hint":"Отправлять сообщение в Telegram, когда модель закончила длинный ответ","field.pairing_code":"Код сопряжения (Pairing Code)","field.pairing_code_hint":"Введите этот 6-значный код боту для авторизации нового устройства","field.token":"Bot Token (Telegram)","field.token_hint":"Токен бота от @BotFather (хранится безопасно в DSH Credentials)","fileHandling":"Обработка файлов","fileHandlingDesc":"Автоматически передавать прикреплённые документы и изображения в рабочую область","groupMention":"Отвечать только при упоминании в группах","groupsEnable":"Разрешить работу в группах","header.sub":"Мост между DeepSeek Harness и Telegram: сессии, управление, уведомления и доступ с мобильных","header.title":"Шлюз Telegram и мессенджеров","hideAdvanced":"Скрыть расширенные настройки","idleTimeout":"Таймаут неактивности сессии (мин)","instruction":"Пользовательская инструкция","instructionHint":"Дополнительная системная инструкция для сообщений из Telegram","instructionPlaceholder":"Отвечай кратко и лаконично…","loading":"Загрузка настроек шлюза…","maxDocMb":"Макс. размер документа (МБ)","maxFileSize":"Максимальный размер файла (МБ)","maxFileSizeHint":"Лимит размера файлов, принимаемых от пользователей","maxHistory":"Глубина истории контекста (сообщений)","maxImageMb":"Макс. размер фото (МБ)","maxMessageLength":"Максимальная длина сообщения","maxTextKb":"Макс. текст из документа (КБ)","maxVoiceSec":"Макс. длительность голосового (сек)","media":"Медиа","mediaCaption":"Подпись к медиа","mediaGroup":"Группировка медиа","mediaGroupDesc":"Объединять серии фото и документов в одно сообщение","mediaSub":"Приём и отправка голосовых сообщений, фото и файлов","messageChunkSize":"Размер фрагмента при разбиении сообщений","messageRateLimit":"Лимит сообщений в секунду","mode":"Режим работы","modeHelp":"Режимы доставки входящих сообщений от Telegram API","modePolling":"Опрос (Long Polling)","modeWebhook":"Вебхук (Webhook)","model":"Модель","modelHint":"Пусто = по умолчанию в DSH","msg.ping_failed":"Не удалось связаться с Telegram API: {error}","msg.ping_ok":"Связь с Telegram API установлена ({ms} мс)","notifications":"Уведомления","notificationsDesc":"Отправлять системные оповещения в Telegram","notifyBridge":"Уведомления → Telegram-чат","notifyBridgeHint":"task_done/error из веб-сессий (не msgw-*)","notifyHome":"Имя домашнего чата уведомлений","pairing":"Привязка аккаунта","pairingApprove":"Одобрить","pairingCode":"Код привязки: {code}","pairingDesc":"Отправьте этот код боту для авторизации вашего Telegram-аккаунта","pairingEmpty":"Нет ожидающих кодов","pairingRefresh":"Обновить","pairingReject":"Отклонить","pairingSub":"Управление авторизованными пользователями и разовыми кодами","parseMode":"Режим парсинга разметки","parseModeHtml":"HTML","parseModeMarkdown":"MarkdownV2","parseModeNone":"Без разметки (Plain text)","photoOnly":"Фото без подписи","photoPrompt":"Ждать вопроса (рекомендуется)","photoQuality":"Качество фото","photoQualityHigh":"Высокое (несжатое)","photoQualityNormal":"Обычное (сжатое Telegram)","photoRun":"Отвечать немедленно","pollInterval":"Интервал опроса (мс)","pollTimeout":"Таймаут опроса (сек)","pollingInterval":"Интервал опроса (мс)","pollingIntervalHint":"Задержка между запросами getUpdates в режиме polling","privacyMode":"Режим приватности","privacyModeDesc":"Не сохранять вложения и медиафайлы на диск","progressEnable":"Сообщение о ходе выполнения (рассуждение → удаление → финал)","provider":"Провайдер","providerHint":"Пусто = по умолчанию в DSH","proxy":"HTTPS прокси","proxyAuth":"Авторизация прокси (user:pass)","proxyHint":"например http://127.0.0.1:10808 для обхода сетевых ограничений","proxyType":"Тип прокси","proxyTypeHttp":"HTTP","proxyTypeHttps":"HTTPS","proxyTypeSocks5":"SOCKS5","queueSize":"Размер очереди сообщений","quickActions":"Клавиатура быстрых действий (/new, /stop, /voice, /status)","rateLimitExceeded":"Превышен лимит сообщений, попробуйте позже","reactionsEnable":"Реакции во время обработки (👀)","reconnectDelay":"Задержка переподключения (сек)","renderMarkdown":"Форматирование Markdown","renderMarkdownDesc":"Преобразовывать ответы модели в красивую разметку Telegram HTML/MarkdownV2","resetToken":"Сбросить токен","retryAttempts":"Количество попыток отправки","save":"Сохранить","saved":"Настройки сохранены","saving":"Сохранение…","sec.access_desc":"Ограничение доступа по Telegram User ID или разовым кодам сопряжения","sec.access_title":"Контроль доступа и белый список","sec.bot_desc":"Укажите токен бота от @BotFather для приёма сообщений и запуска сессий DSH","sec.bot_title":"Параметры Telegram-бота","sec.notify_desc":"Оповещения в Telegram о завершении ответов и ошибках","sec.notify_title":"Уведомления о событиях","secretToken":"Секретный токен вебхука","secretTokenHint":"Случайная строка для заголовка X-Telegram-Bot-Api-Secret-Token","sendPhotoAsFile":"Всегда отправлять фото как документ (без сжатия)","sendTyping":"Отправлять действие чата","sendVoiceNote":"Отправлять аудио как голосовое сообщение","sessionMode":"Режим диалога","sessionModeGroup":"Один общий диалог на группу","sessionModeUser":"Отдельный диалог для каждого пользователя","sessionScope":"Область действия групповых сессий","sessionScopeChat":"Общая для чата/темы","sessionScopeUser":"Для каждого пользователя (рекомендуется)","sessionTimeout":"Таймаут сессии диалога","settings.loading":"Загрузка настроек шлюза мессенджеров…","settings.retry":"Повторить","settings.unavailable":"Настройки недоступны (хостовый модуль не готов).","showAdvanced":"Показать расширенные настройки","slack":"Шлюз Slack","slackDefaultChannel":"Канал по умолчанию Slack","slackDefaultChannelHint":"Канал или ID участника для исходящих сообщений (напр. #general или C12345).","slackSub":"Настройки бота и входящих вебхуков Slack.","slackToken":"Токен бота Slack (xoxb-…)","slackTokenHint":"Bot User OAuth Token. Оставьте пустым для сохранения текущего.","slackWebhook":"URL вебхука Slack","slackWebhookHint":"Входящий вебхук для отправки сообщений/уведомлений в канал.","splitMessages":"Автоматически разбивать длинные сообщения","stat.active_chats":"Активных чатов","stat.avg_latency":"Пинг до Telegram API","stat.messages_relayed":"Передано сообщений","stats.active_chats":"Активных чатов","stats.desc":"Текущая статистика передаваемых сообщений и времени аптайма","stats.errors":"Ошибок шлюза","stats.sent":"Отправлено сообщений","stats.title":"Метрики шлюза","stats.uptime":"Время работы","status":"Статус подключения","statusConnected":"Telegram-бот подключён и работает","statusDisabled":"Telegram-шлюз отключён","statusError":"Ошибка подключения бота: {error}","statusIndicator":"Статус indicator (Online/Offline)","statusIndicatorHint":"Задаёт краткое описание бота; у ботов нет индикатора присутствия.","statusWaiting":"Ожидание подключения к Telegram…","streamResponse":"Потоковая передача ответа","sttEngine":"Движок распознавания речи (STT)","sttEngineLocal":"Локальный Whisper","sttEngineOpenAI":"OpenAI Whisper API","sttLanguage":"Язык распознавания речи","telegram":"Telegram","telegramApiUrl":"Пользовательский URL Telegram Bot API","telegramApiUrlHint":"Для локального сервера telegram-bot-api","telegramSub":"Настройки Telegram Bot API и интеграции","textFormat":"Формат текста","textFormatHtml":"Markdown → Telegram HTML","textFormatPlain":"Простой текст","title":"Шлюз Telegram (Messenger Gateway)","transport":"Транспорт","transportPoll":"Длинный опрос (getUpdates)","transportWebhook":"Вебхук (Webhook)","tts":"Голосовые ответы","ttsEnable":"Голосовые ответы через dsh-tts","ttsEngine":"Движок синтеза речи (TTS)","ttsEngineEdge":"Edge TTS","ttsEngineOpenAI":"OpenAI TTS","ttsMaxChars":"Макс. символов для озвучки","ttsSpeed":"Скорость речи","ttsSub":"Синтез речи (TTS) для голосовых ответов бота","ttsVoice":"Голос синтеза","turnTimeout":"Таймаут хода агента (сек)","typingIndicator":"Индикатор набора текста","typingIndicatorDesc":"Показывать «печатает…» во время генерации ответа моделью","unauthorizedMessage":"Сообщение при отказе в доступе","unauthorizedMessageHint":"Отправляется пользователям, не входящим в белый список","update.already_latest":"✅ Плагин уже обновлён до актуальной версии (<code>v{version}</code>).","update.available":"📦 <b>Доступно обновление!</b>\nТекущая версия: <code>v{current}</code>\nНовый релиз: <code>v{latest}</code>\n\nЗапустите <code>/update now</code> для установки.","update.check_failed":"⚠️ Не удалось проверить обновления: {error}","update.current":"✅ <b>Messenger Gateway актуален.</b>\nТекущая версия: <code>v{version}</code>.","update.failed":"❌ <b>Ошибка обновления:</b> {error}","update.installing":"⏳ <b>Обновление плагина…</b>\nЗапущена фоновая установка пакета DSH…","update.success":"🎉 <b>Успешно обновлено до v{version}!</b>\nПожалуйста, перезапустите службу: <code>sudo systemctl restart dsh-web.service</code>","updater.available":"Доступно обновление: v{version}","updater.btn_check":"Проверить обновления","updater.btn_update":"Обновить до v{version}","updater.check_failed":"Ошибка проверки обновлений: {error}","updater.checking":"Проверка обновлений…","updater.current":"Текущая версия: {version}","updater.desc":"Проверка обновлений в реестре npmjs и обновление на месте.","updater.failed":"Сбой обновления: {error}","updater.success":"Обновлено до v{version}! Перезапустите службу DSH при необходимости.","updater.title":"Автообновление плагина","updater.upToDate":"Актуальная версия","updater.updating":"Обновление…","userLanguage":"Язык ответов пользователю","voiceBitrate":"Битрейт аудио","voiceFormat":"Формат голосовых сообщений","voiceFormatMp3":"MP3","voiceFormatOgg":"OGG Opus","voiceInput":"Приём голосовых сообщений","voiceInputDesc":"Распознавать входящие голосовые аудиосообщения через Whisper / STT","voiceMode":"Режим голосовых ответов","voiceModeAlways":"Всегда использовать TTS","voiceModeMirror":"В ответ на входящие голосовые","voiceModeOff":"Выключено (если не включён /voice)","voiceOutput":"Голосовые ответы","voiceOutputDesc":"Озвучивать ответы модели с помощью модуля синтеза речи (TTS)","voiceSpeed":"Скорость озвучки","voiceVoice":"Голос синтеза речи","webhookHost":"Хост вебхука","webhookPath":"Путь вебхука","webhookPort":"Порт вебхука","webhookSecret":"Секретный токен","webhookSecretHint":"Оставьте пустым для сохранения текущего","webhookUrl":"Публичный URL вебхука","webhookUrlHint":"Полный HTTPS URL, на который Telegram отправляет POST-запросы","welcomeMessage":"Приветственное сообщение","welcomeMessageHint":"Текст сообщения при команде /start","whitelist":"Белый список пользователей","whitelistDesc":"Ограничить доступ к боту только указанными Telegram ID","wrapCode":"Оформление блоков кода","wrapCodeDesc":"Автоматически оборачивать фрагменты кода в моноширинные блоки с подсветкой"}}
|
|
1
|
+
{"dsh-messenger-gateway":{"adminIds":"ID администраторов","adminIdsHint":"ID пользователей с правами выполнения привилегированных команд","advanced":"Опрос Telegram (Long Polling)","agent":"Агент","agentSub":"Назначение модели и системных инструкций для Telegram-сессий","allowDirectMessages":"Разрешить личные сообщения","allowGroupMessages":"Разрешить работу в группах","allowedIds":"Разрешённые ID пользователей","allowedIdsHint":"Через запятую. Пусто = доступ разрешён всем","artifactPreviews":"Генерировать превью диаграмм и таблиц","autoSummarize":"Автосводка длинных сообщений","badge.api_degraded":"Сбои Telegram API ({count})","badge.cron_count":"Cron: {count}","badge.offline":"Telegram отключен","badge.online":"Telegram онлайн (@{username})","badge.pairing_count":"Сопряжено устройств: {count}","badge.pending":"Ожидание подключения бота…","badge.running":"Шлюз запущен","badge.stopped":"Шлюз остановлен","badge.token_missing":"Токен отсутствует","badge.token_ok":"Токен настроен","badge.transport":"Транспорт: Long Polling","botToken":"Токен бота (только запись)","botTokenHint":"Оставьте пустым, чтобы сохранить текущий токен","botUsername":"Имя пользователя бота (@username)","btn.disconnect":"Отключить бота","btn.ping":"Проверить связь (Ping)","btn.regenerate_code":"Новый код сопряжения","cmd.update":"Проверить или установить обновление плагина","debugLogs":"Подробные логи отладки","description":"Telegram-бот: обмен текстом, голосом, фото и документами.","diag.desc":"Проверка доступности Telegram Bot API, пинга и прав бота","diag.smoke_btn":"Запустить Smoke-тест","diag.smoke_err":"Smoke-тест завершился с ошибкой: {error}","diag.smoke_ok":"Smoke-тест пройден успешно! Бот готов к работе.","diag.smoke_testing":"Тестирование шлюза…","diag.title":"Диагностика связи и Smoke-тест","disableDiscord":"Отключить Discord","disableSlack":"Отключить Slack","disableTelegram":"Отключить Telegram","discord":"Шлюз Discord","discordChannels":"Разрешённые ID каналов Discord","discordChannelsHint":"Список ID каналов через запятую. Оставьте пустым, чтобы разрешить все настроенные.","discordSub":"Настройки бота и исходящих вебхуков Discord.","discordToken":"Токен бота Discord","discordTokenHint":"Из Discord Developer Portal. Оставьте пустым для сохранения текущего.","discordWebhook":"URL вебхука Discord","discordWebhookHint":"Входящий вебхук для отправки сообщений/уведомлений.","enableDiscord":"Включить Discord","enableSlack":"Включить Slack","enableTelegram":"Включить Telegram","endpoint":"Webhook URL / Endpoint","endpointHint":"URL для приёма входящих вебхуков от Telegram","errorNotification":"Уведомлять об ошибках выполнения","field.allowed_users":"Разрешённые ID пользователей","field.allowed_users_hint":"Список Telegram ID через запятую (оставьте пустым для сопряжения по коду)","field.notify_on_error":"Оповещать об ошибках выполнения","field.notify_on_error_hint":"Срочные уведомления о падении агента или превышении лимитов","field.notify_on_turn":"Уведомлять о завершении хода","field.notify_on_turn_hint":"Отправлять сообщение в Telegram, когда модель закончила длинный ответ","field.pairing_code":"Код сопряжения (Pairing Code)","field.pairing_code_hint":"Введите этот 6-значный код боту для авторизации нового устройства","field.token":"Bot Token (Telegram)","field.token_hint":"Токен бота от @BotFather (хранится безопасно в DSH Credentials)","fileHandling":"Обработка файлов","fileHandlingDesc":"Автоматически передавать прикреплённые документы и изображения в рабочую область","groupMention":"Отвечать только при упоминании в группах","groupsEnable":"Разрешить работу в группах","header.sub":"Мост между DeepSeek Harness и Telegram: сессии, управление, уведомления и доступ с мобильных","header.title":"Шлюз Telegram и мессенджеров","hideAdvanced":"Скрыть расширенные настройки","idleTimeout":"Таймаут неактивности сессии (мин)","instruction":"Пользовательская инструкция","instructionHint":"Дополнительная системная инструкция для сообщений из Telegram","instructionPlaceholder":"Отвечай кратко и лаконично…","loading":"Загрузка настроек шлюза…","maxDocMb":"Макс. размер документа (МБ)","maxFileSize":"Максимальный размер файла (МБ)","maxFileSizeHint":"Лимит размера файлов, принимаемых от пользователей","maxHistory":"Глубина истории контекста (сообщений)","maxImageMb":"Макс. размер фото (МБ)","maxMessageLength":"Максимальная длина сообщения","maxTextKb":"Макс. текст из документа (КБ)","maxVoiceSec":"Макс. длительность голосового (сек)","media":"Медиа","mediaCaption":"Подпись к медиа","mediaGroup":"Группировка медиа","mediaGroupDesc":"Объединять серии фото и документов в одно сообщение","mediaSub":"Приём и отправка голосовых сообщений, фото и файлов","messageChunkSize":"Размер фрагмента при разбиении сообщений","messageRateLimit":"Лимит сообщений в секунду","mode":"Режим работы","modeHelp":"Режимы доставки входящих сообщений от Telegram API","modePolling":"Опрос (Long Polling)","modeWebhook":"Вебхук (Webhook)","model":"Модель","modelHint":"Пусто = по умолчанию в DSH","msg.ping_failed":"Не удалось связаться с Telegram API: {error}","msg.ping_ok":"Связь с Telegram API установлена ({ms} мс)","notifications":"Уведомления","notificationsDesc":"Отправлять системные оповещения в Telegram","notifyBridge":"Уведомления → Telegram-чат","notifyBridgeHint":"task_done/error из веб-сессий (не msgw-*)","notifyHome":"Имя домашнего чата уведомлений","pairing":"Привязка аккаунта","pairingApprove":"Одобрить","pairingCode":"Код привязки: {code}","pairingDesc":"Отправьте этот код боту для авторизации вашего Telegram-аккаунта","pairingEmpty":"Нет ожидающих кодов","pairingRefresh":"Обновить","pairingReject":"Отклонить","pairingSub":"Управление авторизованными пользователями и разовыми кодами","parseMode":"Режим парсинга разметки","parseModeHtml":"HTML","parseModeMarkdown":"MarkdownV2","parseModeNone":"Без разметки (Plain text)","photoOnly":"Фото без подписи","photoPrompt":"Ждать вопроса (рекомендуется)","photoQuality":"Качество фото","photoQualityHigh":"Высокое (несжатое)","photoQualityNormal":"Обычное (сжатое Telegram)","photoRun":"Отвечать немедленно","pollInterval":"Интервал опроса (мс)","pollTimeout":"Таймаут опроса (сек)","pollingInterval":"Интервал опроса (мс)","pollingIntervalHint":"Задержка между запросами getUpdates в режиме polling","privacyMode":"Режим приватности","privacyModeDesc":"Не сохранять вложения и медиафайлы на диск","progressEnable":"Сообщение о ходе выполнения (рассуждение → удаление → финал)","provider":"Провайдер","providerHint":"Пусто = по умолчанию в DSH","proxy":"HTTPS прокси","proxyAuth":"Авторизация прокси (user:pass)","proxyHint":"например http://127.0.0.1:10808 для обхода сетевых ограничений","proxyType":"Тип прокси","proxyTypeHttp":"HTTP","proxyTypeHttps":"HTTPS","proxyTypeSocks5":"SOCKS5","queueSize":"Размер очереди сообщений","quickActions":"Клавиатура быстрых действий (/new, /stop, /voice, /status)","rateLimitExceeded":"Превышен лимит сообщений, попробуйте позже","reactionsEnable":"Реакции во время обработки (👀)","reconnectDelay":"Задержка переподключения (сек)","renderMarkdown":"Форматирование Markdown","renderMarkdownDesc":"Преобразовывать ответы модели в красивую разметку Telegram HTML/MarkdownV2","resetToken":"Сбросить токен","retryAttempts":"Количество попыток отправки","save":"Сохранить","saved":"Настройки сохранены","saving":"Сохранение…","sec.access_desc":"Ограничение доступа по Telegram User ID или разовым кодам сопряжения","sec.access_title":"Контроль доступа и белый список","sec.bot_desc":"Укажите токен бота от @BotFather для приёма сообщений и запуска сессий DSH","sec.bot_title":"Параметры Telegram-бота","sec.notify_desc":"Оповещения в Telegram о завершении ответов и ошибках","sec.notify_title":"Уведомления о событиях","secretToken":"Секретный токен вебхука","secretTokenHint":"Случайная строка для заголовка X-Telegram-Bot-Api-Secret-Token","sendPhotoAsFile":"Всегда отправлять фото как документ (без сжатия)","sendTyping":"Отправлять действие чата","sendVoiceNote":"Отправлять аудио как голосовое сообщение","sessionMode":"Режим диалога","sessionModeGroup":"Один общий диалог на группу","sessionModeUser":"Отдельный диалог для каждого пользователя","sessionScope":"Область действия групповых сессий","sessionScopeChat":"Общая для чата/темы","sessionScopeUser":"Для каждого пользователя (рекомендуется)","sessionTimeout":"Таймаут сессии диалога","settings.loading":"Загрузка настроек шлюза мессенджеров…","settings.retry":"Повторить","settings.unavailable":"Настройки недоступны (хостовый модуль не готов).","showAdvanced":"Показать расширенные настройки","slack":"Шлюз Slack","slackDefaultChannel":"Канал по умолчанию Slack","slackDefaultChannelHint":"Канал или ID участника для исходящих сообщений (напр. #general или C12345).","slackSub":"Настройки бота и входящих вебхуков Slack.","slackToken":"Токен бота Slack (xoxb-…)","slackTokenHint":"Bot User OAuth Token. Оставьте пустым для сохранения текущего.","slackWebhook":"URL вебхука Slack","slackWebhookHint":"Входящий вебхук для отправки сообщений/уведомлений в канал.","splitMessages":"Автоматически разбивать длинные сообщения","stat.active_chats":"Активных чатов","stat.avg_latency":"Пинг до Telegram API","stat.messages_relayed":"Передано сообщений","stats.active_chats":"Активных чатов","stats.desc":"Текущая статистика передаваемых сообщений и времени аптайма","stats.errors":"Ошибок шлюза","stats.sent":"Отправлено сообщений","stats.title":"Метрики шлюза","stats.uptime":"Время работы","status":"Статус подключения","statusConnected":"Telegram-бот подключён и работает","statusDisabled":"Telegram-шлюз отключён","statusError":"Ошибка подключения бота: {error}","statusIndicator":"Статус indicator (Online/Offline)","statusIndicatorHint":"Задаёт краткое описание бота; у ботов нет индикатора присутствия.","statusWaiting":"Ожидание подключения к Telegram…","streamResponse":"Потоковая передача ответа","sttEngine":"Движок распознавания речи (STT)","sttEngineLocal":"Локальный Whisper","sttEngineOpenAI":"OpenAI Whisper API","sttLanguage":"Язык распознавания речи","telegram":"Telegram","telegramApiUrl":"Пользовательский URL Telegram Bot API","telegramApiUrlHint":"Для локального сервера telegram-bot-api","telegramSub":"Настройки Telegram Bot API и интеграции","textFormat":"Формат текста","textFormatHtml":"Markdown → Telegram HTML","textFormatPlain":"Простой текст","title":"Шлюз Telegram (Messenger Gateway)","transport":"Транспорт","transportPoll":"Длинный опрос (getUpdates)","transportWebhook":"Вебхук (Webhook)","tts":"Голосовые ответы","ttsEnable":"Голосовые ответы через dsh-tts","ttsEngine":"Движок синтеза речи (TTS)","ttsEngineEdge":"Edge TTS","ttsEngineOpenAI":"OpenAI TTS","ttsMaxChars":"Макс. символов для озвучки","ttsSpeed":"Скорость речи","ttsSub":"Синтез речи (TTS) для голосовых ответов бота","ttsVoice":"Голос синтеза","turnTimeout":"Таймаут хода агента (сек)","typingIndicator":"Индикатор набора текста","typingIndicatorDesc":"Показывать «печатает…» во время генерации ответа моделью","unauthorizedMessage":"Сообщение при отказе в доступе","unauthorizedMessageHint":"Отправляется пользователям, не входящим в белый список","update.already_latest":"✅ Плагин уже обновлён до актуальной версии (<code>v{version}</code>).","update.available":"📦 <b>Доступно обновление!</b>\nТекущая версия: <code>v{current}</code>\nНовый релиз: <code>v{latest}</code>\n\nЗапустите <code>/update now</code> для установки.","update.check_failed":"⚠️ Не удалось проверить обновления: {error}","update.current":"✅ <b>Messenger Gateway актуален.</b>\nТекущая версия: <code>v{version}</code>.","update.failed":"❌ <b>Ошибка обновления:</b> {error}","update.installing":"⏳ <b>Обновление плагина…</b>\nЗапущена фоновая установка пакета DSH…","update.success":"🎉 <b>Успешно обновлено до v{version}!</b>\nПожалуйста, перезапустите службу: <code>sudo systemctl restart dsh-web.service</code>","updater.available":"Доступно обновление: v{version}","updater.btn_check":"Проверить обновления","updater.btn_update":"Обновить до v{version}","updater.check_failed":"Ошибка проверки обновлений: {error}","updater.checking":"Проверка обновлений…","updater.current":"Текущая версия: {version}","updater.desc":"Проверка обновлений в реестре npmjs и обновление на месте.","updater.failed":"Сбой обновления: {error}","updater.success":"Обновлено до v{version}! Перезапустите службу DSH при необходимости.","updater.title":"Автообновление плагина","updater.upToDate":"Актуальная версия","updater.updating":"Обновление…","userLanguage":"Язык ответов пользователю","voiceBitrate":"Битрейт аудио","voiceFormat":"Формат голосовых сообщений","voiceFormatMp3":"MP3","voiceFormatOgg":"OGG Opus","voiceInput":"Приём голосовых сообщений","voiceInputDesc":"Распознавать входящие голосовые аудиосообщения через Whisper / STT","voiceMode":"Режим голосовых ответов","voiceModeAlways":"Всегда использовать TTS","voiceModeMirror":"В ответ на входящие голосовые","voiceModeOff":"Выключено (если не включён /voice)","voiceOutput":"Голосовые ответы","voiceOutputDesc":"Озвучивать ответы модели с помощью модуля синтеза речи (TTS)","voiceSpeed":"Скорость озвучки","voiceVoice":"Голос синтеза речи","webhookHost":"Хост вебхука","webhookPath":"Путь вебхука","webhookPort":"Порт вебхука","webhookSecret":"Секретный токен","webhookSecretConfigured":"Секретный ключ вебхука настроен","webhookSecretHint":"Оставьте пустым для сохранения текущего","webhookSecretRequired":"Требуется секретный ключ вебхука","webhookUrl":"Публичный URL вебхука","webhookUrlHint":"Полный HTTPS URL, на который Telegram отправляет POST-запросы","welcomeMessage":"Приветственное сообщение","welcomeMessageHint":"Текст сообщения при команде /start","whitelist":"Белый список пользователей","whitelistDesc":"Ограничить доступ к боту только указанными Telegram ID","wrapCode":"Оформление блоков кода","wrapCodeDesc":"Автоматически оборачивать фрагменты кода в моноширинные блоки с подсветкой"}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"dsh-gitea":{"activePr":"Активный Pull Request: #{number}","baseUrl":"URL сервера Gitea","baseUrlHint":"например https://gitea.example.com","bgSchedulerEnabled":"Включить фоновый планировщик триажа","bgSchedulerEnabledHint":"Периодически проверять открытые задачи и пул-реквесты в фоне","bgSchedulerIntervalMin":"Интервал планировщика (минуты)","bgSchedulerIntervalMinHint":"Частота выполнения фонового триажа","bgSchedulerOwner":"Владелец для фонового триажа","bgSchedulerOwnerHint":"Пользователь или организация для фонового сканирования","bgSchedulerRepo":"Репозиторий для фонового триажа","bgSchedulerRepoHint":"Имя репозитория для фонового сканирования","bgSchedulerWebhook":"Вебхук для отчётов триажа","bgSchedulerWebhookHint":"URL для отправки дайджестов проверки задач","branch":"
|
|
1
|
+
{"dsh-gitea":{"activePr":"Активный Pull Request: #{number}","badgeOffline":"Не в сети","badgeOnline":"В сети","baseUrl":"URL сервера Gitea","baseUrlHint":"например https://gitea.example.com","bgSchedulerEnabled":"Включить фоновый планировщик триажа","bgSchedulerEnabledHint":"Периодически проверять открытые задачи и пул-реквесты в фоне","bgSchedulerIntervalMin":"Интервал планировщика (минуты)","bgSchedulerIntervalMinHint":"Частота выполнения фонового триажа","bgSchedulerOwner":"Владелец для фонового триажа","bgSchedulerOwnerHint":"Пользователь или организация для фонового сканирования","bgSchedulerRepo":"Репозиторий для фонового триажа","bgSchedulerRepoHint":"Имя репозитория для фонового сканирования","bgSchedulerWebhook":"Вебхук для отчётов триажа","bgSchedulerWebhookHint":"URL для отправки дайджестов проверки задач","branch":"Ветка","btn.save_settings":"Сохранить параметры Gitea","btn.trigger_triage":"Запустить триаж сейчас","ciFail":"CI завершился с ошибкой","ciPass":"CI пройден успешно","ciPending":"CI выполняется","collapse":"Свернуть","daysAgo":"дн. назад","defaultOwner":"Владелец / Организация по умолчанию","defaultOwnerHint":"Организация или пользователь в Gitea для создания репозиториев","defaultRepo":"Репозиторий по умолчанию","defaultRepoHint":"Основной репозиторий проекта","description":"Инструменты и учётные данные Gitea или Forgejo.","discard":"Сбросить","dodReminder":"Напоминания Definition of Done (DoD)","dodReminderHint":"Напоминать о критериях приёмки перед открытием или слиянием PR","drawerClose":"Закрыть панель","drawerRefresh":"Обновить состояние Git","drawerTitle":"Инспектор Git и Worktree","eventsEmptyHint":"Вебхуки не настроены или событий пока нет. Настройте вебхук на адрес {url}.","eventsTitle":"События","expand":"Развернуть","forceHttpsUrls":"Принудительный HTTPS для URL репозиториев","forceHttpsUrlsHint":"Преобразовывать http:// ссылки в безопасный https://","gitAhead":"Впереди","gitBehind":"Позади","gitChanges":"Изменения","gitClean":"Чисто","gitCommits":"ПОСЛЕДНИЕ КОММИТЫ","gitDirty":"Есть незакоммиченные изменения","gitEmpty":"В репозитории нет коммитов","gitHint":"Сведения о состоянии локального git-репозитория и удалённой ветки","gitNoChanges":"Нет изменений","gitNoCommits":"Нет коммитов для отправки","gitNoRemote":"Удалённый репозиторий не настроен","gitPulled":"Ветка обновлена из удалённого репозитория","gitPushed":"Коммиты успешно отправлены в Gitea","gitRemote":"Удалённый репозиторий (Remote)","gitStatus":"Статус Git","gitSync":"Синхронизация","gitSynced":"Ветка синхронизирована с Gitea","gitUpToDate":"Синхронизировано с удалённым репозиторием","gitWrapper":"Пользовательский Git-враппер","gitWrapperHint":"Имя бинарника/скрипта-обёртки для Git (например, git-antigravity)","giteaBranch":"Ветка","giteaCommit":"Коммит","giteaOwner":"Владелец / Организация","giteaRepo":"Репозиторий","giteaToken":"Персональный токен","giteaUrl":"URL сервера","giteaUser":"Пользователь","graph.ci_failing":"CI: Ошибки сборки","graph.ci_passing":"CI: Тесты пройдены","graph.ci_pending":"CI: Выполняется…","graph.desc":"Визуальный граф веток, слияний и результатов автоматических тестов","graph.refresh":"Обновить граф","graph.title":"История коммитов и статус CI","graphClose":"Закрыть граф","graphEmpty":"В репозитории не найдено коммитов","graphLoadMore":"Загрузить ещё коммиты","graphLoading":"Загрузка графа коммитов…","graphTitle":"Граф коммитов Git","hoursAgo":"ч назад","inspector.branch":"Текущая ветка: {name}","inspector.clean_state":"Рабочее дерево чисто (Clean)","inspector.desc":"Просмотр активных веток, коммитов, worktree и незафиксированных изменений","inspector.empty":"Рабочие деревья и изменения не найдены","inspector.last_commit":"Последний коммит: {hash} — {msg}","inspector.loading":"Считывание состояния репозитория…","inspector.refresh":"Обновить дерево Git","inspector.staged":"Файлы в индексе (Staged) ({count})","inspector.title":"Инспектор Git и репозиториев","inspector.unstaged":"Незафиксированные файлы ({count})","inspector.worktrees":"Активные Worktree ({count}):","intro":"Создайте учётные данные DSH, вставьте туда токен API, затем укажите только имя учётных данных ниже (например, GITEA_TOKEN).","issues":"Задачи (Issues)","justNow":"только что","loading":"Загрузка данных Gitea…","minutesAgo":"мин назад","msg.saved":"Настройки Gitea успешно сохранены","msg.triage_started":"Фоновый триаж запущен","noChangesDesc":"В рабочем каталоге нет изменённых или неотслеживаемых файлов.","noEvents":"События не зафиксированы","noInstances":"Дополнительные инстансы Gitea не настроены","noIssues":"Нет открытых задач","noPulls":"Нет открытых pull request","noRepos":"Репозитории не найдены","notifyWebhook":"URL вебхука для уведомлений","notifyWebhookHint":"Внешний вебхук для отправки статусов триажа и событий","openGraph":"Граф коммитов","openInGitea":"Открыть в Gitea","password":"Пароль / Токен доступа","passwordHint":"Персональный токен доступа Gitea с правами api, repo, issue","pullRequests":"Запросы на слияние (Pull Requests)","recentEvents":"Недавние события репозитория","refresh":"Обновить","repoCloned":"Репозиторий успешно клонирован","repoCloning":"Клонирование репозитория…","repos":"Репозитории","save":"Сохранить","saveFailed":"Сохранить failed","saved":"Настройки сохранены","saving":"Сохранение…","scheduler.auto_triage":"Автоматический триаж новых Issue","scheduler.desc":"Автоматическая проверка новых задач (issues), напоминания DoD и ревью","scheduler.dod_hint":"Проверять чек-листы готовности перед закрытием PR и задач","scheduler.dod_reminder":"Напоминания Definition of Done (DoD)","scheduler.enabled":"Включить фоновый планировщик","scheduler.interval":"Интервал проверки (минуты)","scheduler.last_run":"Последний запуск: {time}","scheduler.next_run":"Следующий запуск: через {mins} мин","scheduler.title":"Фоновый триаж и задачи по расписанию","sectionDefaults":"Значения по умолчанию и Git Worktrees","sectionInstance":"Подключение и основные настройки","sectionInstances":"Дополнительные инстансы","sectionScheduler":"Фоновый планировщик триажа","sectionWebhooks":"Вебхуки и уведомления","settingsUnavailable":"Настройки unavailable (namespace not registered).","status":"Статус подключения","statusClean":"Рабочее дерево чисто (Clean)","statusConnected":"Подключено к Gitea","statusDirty":"Есть незафиксированные изменения","statusDisconnected":"Не подключено","statusError":"Ошибка подключения","tabEvents":"События и PR","tabGraph":"Граф и CI","tabInspector":"Git Inspector","tabScheduler":"Планировщик задач","tabStatus":"Статус","tabWebhooks":"Входящие вебхуки","timeoutMs":"Таймаут API запросов (мс)","timeoutMsHint":"Максимальное время ожидания ответа Gitea API","title":"Интеграция с Gitea","toggleAdvanced":"Расширенные настройки","token":"Токен API","tokenEnv":"Имя учётных данных","tokenEnvHint":"Имя учётных данных DSH, а не сам токен. По умолчанию GITEA_TOKEN.","tokenHint":"Токен авторизации Gitea API","tokenOff":"Токен не настроен","tokenOn":"Токен настроен","unsaved":"Не сохранено","updaterAvailable":"Доступно обновление: v{version}","updaterBtnCheck":"Проверить обновления","updaterBtnUpdate":"Обновить до v{version}","updaterCheckFailed":"Ошибка проверки реестра","updaterChecking":"Проверка реестра...","updaterCurrent":"Текущая версия: v{version}","updaterDesc":"Проверка npm-реестра на новые версии и обновление в один клик.","updaterSuccess":"Успешно обновлено до v{version}. Перезапустите DSH для применения.","updaterTitle":"Обновление плагина","updaterUpToDate":"Актуальная версия","updaterUpdating":"Обновление плагина...","upstream":"Ветка upstream:","username":"Имя пользователя","usernameHint":"Логин вашей учётной записи в Gitea","viewCommit":"Посмотреть коммит","viewInGitea":"Открыть в Gitea ↗","viewIssue":"Посмотреть задачу","viewPull":"Посмотреть PR","viewRepo":"Посмотреть репозиторий","webhookSecretEnv":"Переменная окружения для HMAC-секрета","webhookSecretEnvHint":"Имя переменной с секретным ключом для валидации входящих вебхуков","webhooks.desc":"Приём событий push, pull_request, issue с проверкой HMAC-SHA256 подписи","webhooks.endpoint":"URL вебхука: {url}","webhooks.no_events":"События вебхуков ещё не поступали","webhooks.recent":"Недавние события ({count})","webhooks.secret":"Секретный ключ (HMAC Secret)","webhooks.secret_hint":"Секрет для верификации подписи X-Gitea-Signature","webhooks.title":"Входящие вебхуки Gitea","worktreeBranch":"Ветка worktree"}}
|