@goodandready/dsh-russian-lang 0.2.19 → 0.2.21
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 +13 -3
- package/README.ru.md +13 -3
- package/lib/client.js +199 -270
- package/lib/index.js +50 -9
- package/lib/locales/plugins/01-token-dashboard.json +1 -0
- package/lib/locales/plugins/02-subscriptions.json +1 -0
- package/lib/locales/plugins/03-dshmarket.json +1 -0
- package/lib/locales/plugins/04-context-doctor.json +1 -0
- package/lib/locales/plugins/05-plugins-store.json +1 -0
- package/lib/locales/plugins/06-im-hub.json +1 -0
- package/lib/locales/plugins/07-better-sidebar.json +1 -0
- package/lib/locales/plugins/08-task-board.json +1 -0
- package/lib/locales/plugins/09-dshmarket-1.13.json +1 -0
- package/lib/locales/plugins/10-kanban.json +1 -0
- package/lib/locales/plugins/11-skill-hub.json +1 -0
- package/lib/locales/plugins/12-skills-manager.json +1 -0
- package/lib/locales/plugins/13-agent-teams.json +1 -0
- package/lib/locales/plugins/14-ollama-cloud.json +1 -0
- package/lib/locales/plugins/15-commandcode.json +1 -0
- package/lib/locales/plugins/16-usage-stats.json +1 -0
- package/lib/locales/plugins/17-dsh-context.json +1 -0
- package/lib/locales/plugins/18-opencode-palette.json +1 -0
- package/lib/locales/plugins/19-univer-office.json +1 -0
- package/lib/locales/plugins/20-skill-explorer.json +1 -0
- package/lib/locales/plugins/21-auto-collapse.json +1 -0
- package/lib/locales/plugins/22-subagent-director.json +1 -0
- package/lib/locales/plugins/23-moa.json +1 -0
- package/lib/locales/plugins/24-personal-directive.json +1 -0
- package/lib/locales/plugins/25-hooks.json +1 -0
- package/lib/locales/plugins/26-config-manager.json +1 -0
- package/lib/locales/plugins/27-config-manager-sync.json +1 -0
- package/lib/locales/plugins/28-config-manager-market.json +1 -0
- package/lib/locales/plugins/29-config-manager-recovery.json +1 -0
- package/lib/locales/plugins/30-config-manager-history.json +1 -0
- package/lib/locales/plugins/31-dshhub-market.json +1 -0
- package/lib/locales/plugins/32-vision-bridge.json +1 -0
- package/lib/locales/plugins/33-messenger-gateway.json +1 -0
- package/lib/locales/plugins/34-key-rotation.json +1 -0
- package/lib/locales/plugins/35-gitea.json +1 -0
- package/lib/locales/plugins/36-cost-meter.json +1 -0
- package/lib/locales/plugins/37-time-machine.json +1 -0
- package/lib/locales/plugins/38-context-lens.json +1 -0
- package/lib/locales/plugins/39-shadow-auditor.json +1 -0
- package/lib/locales/plugins/40-clinebot.json +1 -0
- package/lib/locales/plugins/41-lanmode.json +1 -0
- package/lib/locales/plugins/42-plugin-console.json +1 -0
- package/lib/locales/plugins/43-better-input.json +1 -0
- package/lib/locales/plugins/44-auto-review.json +1 -0
- package/lib/locales/plugins/45-session-control.json +1 -0
- package/lib/locales/plugins/46-memory-brain.json +1 -0
- package/lib/locales/plugins/47-llm-wiki.json +1 -0
- package/lib/locales/plugins/48-task-tracker.json +1 -0
- package/lib/locales/plugins/49-usage-guard.json +1 -0
- package/lib/locales/plugins/50-automode.json +1 -0
- package/lib/locales/plugins/51-plugin-guard.json +1 -0
- package/lib/locales/plugins/52-navbar.json +1 -0
- package/lib/locales/plugins/53-remote-workspace.json +1 -0
- package/lib/locales/plugins/54-workshop-market.json +1 -0
- package/lib/locales/plugins/55-skin-center.json +1 -0
- package/lib/locales/plugins/56-cron.json +1 -0
- package/lib/locales/plugins/57-live-canvas.json +1 -0
- package/lib/locales/plugins/58-grok-xsearch.json +1 -0
- package/lib/locales/plugins/59-goal.json +1 -0
- package/lib/locales/plugins/60-model-sync.json +1 -0
- package/lib/locales/plugins/61-issue-reporter.json +1 -0
- package/lib/locales/plugins/62-model-search.json +1 -0
- package/lib/locales/plugins/63-agent-orchestrator.json +1 -0
- package/lib/locales/plugins/64-key-limits.json +1 -0
- package/lib/locales/plugins/65-subscriptions.json +1 -0
- package/lib/locales/plugins/66-tts.json +1 -0
- package/lib/locales/plugins/67-voice.json +1 -0
- package/lib/locales/plugins/68-image-gen.json +1 -0
- package/lib/locales/plugins/69-plugin-notify.json +1 -0
- package/lib/locales/plugins/70-hypotheses.json +1 -0
- package/lib/locales/zh-ru.json +1 -0
- package/lib/locales.js +32 -0
- package/lib/plugin-updater.js +8 -2
- package/lib/translator.js +303 -0
- package/package.json +5 -7
- package/docs/media/banner.jpg +0 -0
- package/docs/media/language-selector.png +0 -0
- package/docs/media/ui-russian.png +0 -0
- package/ru/01-core-small.json +0 -225
- package/ru/02-conversation.json +0 -846
- package/ru/03-models-workspace.json +0 -193
- package/ru/04-preset-cordis.json +0 -142
- package/ru/05-plugins-subagent.json +0 -158
- package/ru/06-rest.json +0 -257
- package/ru/07-sidebar-previewers.json +0 -58
- package/ru/08-sidebar-terminal-archive.json +0 -48
- package/ru-plugins/01-token-dashboard.json +0 -83
- package/ru-plugins/02-subscriptions.json +0 -40
- package/ru-plugins/03-dshmarket.json +0 -539
- package/ru-plugins/04-context-doctor.json +0 -64
- package/ru-plugins/05-plugins-store.json +0 -81
- package/ru-plugins/06-im-hub.json +0 -97
- package/ru-plugins/07-better-sidebar.json +0 -490
- package/ru-plugins/08-task-board.json +0 -126
- package/ru-plugins/09-dshmarket-1.13.json +0 -46
- package/ru-plugins/10-kanban.json +0 -460
- package/ru-plugins/11-skill-hub.json +0 -257
- package/ru-plugins/12-skills-manager.json +0 -222
- package/ru-plugins/13-agent-teams.json +0 -193
- package/ru-plugins/14-ollama-cloud.json +0 -72
- package/ru-plugins/15-commandcode.json +0 -253
- package/ru-plugins/16-usage-stats.json +0 -126
- package/ru-plugins/17-dsh-context.json +0 -321
- package/ru-plugins/18-opencode-palette.json +0 -31
- package/ru-plugins/19-univer-office.json +0 -57
- package/ru-plugins/20-skill-explorer.json +0 -69
- package/ru-plugins/21-auto-collapse.json +0 -16
- package/ru-plugins/22-subagent-director.json +0 -142
- package/ru-plugins/23-moa.json +0 -214
- package/ru-plugins/24-personal-directive.json +0 -9
- package/ru-plugins/25-hooks.json +0 -11
- package/ru-plugins/26-config-manager.json +0 -468
- package/ru-plugins/27-config-manager-sync.json +0 -202
- package/ru-plugins/28-config-manager-market.json +0 -142
- package/ru-plugins/29-config-manager-recovery.json +0 -102
- package/ru-plugins/30-config-manager-history.json +0 -55
- package/ru-plugins/31-dshhub-market.json +0 -398
- package/ru-plugins/32-vision-bridge.json +0 -216
- package/ru-plugins/33-messenger-gateway.json +0 -236
- package/ru-plugins/34-key-rotation.json +0 -217
- package/ru-plugins/35-gitea.json +0 -174
- package/ru-plugins/36-cost-meter.json +0 -90
- package/ru-plugins/37-time-machine.json +0 -38
- package/ru-plugins/38-context-lens.json +0 -36
- package/ru-plugins/39-shadow-auditor.json +0 -67
- package/ru-plugins/40-clinebot.json +0 -142
- package/ru-plugins/41-lanmode.json +0 -164
- package/ru-plugins/42-plugin-console.json +0 -382
- package/ru-plugins/43-better-input.json +0 -127
- package/ru-plugins/44-auto-review.json +0 -83
- package/ru-plugins/45-session-control.json +0 -122
- package/ru-plugins/46-memory-brain.json +0 -33
- package/ru-plugins/47-llm-wiki.json +0 -26
- package/ru-plugins/48-task-tracker.json +0 -19
- package/ru-plugins/49-usage-guard.json +0 -51
- package/ru-plugins/50-automode.json +0 -46
- package/ru-plugins/51-plugin-guard.json +0 -12
- package/ru-plugins/52-navbar.json +0 -6
- package/ru-plugins/53-remote-workspace.json +0 -140
- package/ru-plugins/54-workshop-market.json +0 -58
- package/ru-plugins/55-skin-center.json +0 -97
- package/ru-plugins/56-cron.json +0 -334
- package/ru-plugins/57-live-canvas.json +0 -121
- package/ru-plugins/58-grok-xsearch.json +0 -80
- package/ru-plugins/59-goal.json +0 -54
- package/ru-plugins/60-model-sync.json +0 -121
- package/ru-plugins/61-issue-reporter.json +0 -192
- package/ru-plugins/62-model-search.json +0 -22
- package/ru-plugins/63-agent-orchestrator.json +0 -11
- package/ru-plugins/64-key-limits.json +0 -27
- package/ru-plugins/65-subscriptions.json +0 -185
- package/ru-plugins/66-tts.json +0 -211
- package/ru-plugins/67-voice.json +0 -158
- package/ru-plugins/68-image-gen.json +0 -143
- package/ru-plugins/69-plugin-notify.json +0 -29
|
@@ -1,236 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"dsh-messenger-gateway": {
|
|
3
|
-
"advanced": "Опрос Telegram (Long Polling)",
|
|
4
|
-
"agent": "Агент",
|
|
5
|
-
"allowedIds": "Разрешённые ID пользователей",
|
|
6
|
-
"allowedIdsHint": "Через запятую. Пусто = доступ разрешён всем",
|
|
7
|
-
"artifactPreviews": "Генерировать превью диаграмм и таблиц",
|
|
8
|
-
"botToken": "Токен бота (только запись)",
|
|
9
|
-
"botTokenHint": "Оставьте пустым, чтобы сохранить текущий токен",
|
|
10
|
-
"description": "Telegram-бот: обмен текстом, голосом, фото и документами.",
|
|
11
|
-
"disableTelegram": "Отключить Telegram",
|
|
12
|
-
"enableTelegram": "Включить Telegram",
|
|
13
|
-
"endpoint": "Webhook URL / Endpoint",
|
|
14
|
-
"endpointHint": "URL для приёма входящих вебхуков от Telegram",
|
|
15
|
-
"fileHandling": "Обработка файлов",
|
|
16
|
-
"fileHandlingDesc": "Автоматически передавать прикреплённые документы и изображения в рабочую область",
|
|
17
|
-
"loading": "Загрузка настроек шлюза…",
|
|
18
|
-
"maxFileSize": "Максимальный размер файла (МБ)",
|
|
19
|
-
"maxFileSizeHint": "Лимит размера файлов, принимаемых от пользователей",
|
|
20
|
-
"mediaGroup": "Группировка медиа",
|
|
21
|
-
"mediaGroupDesc": "Объединять серии фото и документов в одно сообщение",
|
|
22
|
-
"mode": "Режим работы",
|
|
23
|
-
"modePolling": "Опрос (Long Polling)",
|
|
24
|
-
"modeWebhook": "Вебхук (Webhook)",
|
|
25
|
-
"notifications": "Уведомления",
|
|
26
|
-
"notificationsDesc": "Отправлять системные оповещения в Telegram",
|
|
27
|
-
"pairing": "Привязка аккаунта",
|
|
28
|
-
"pairingCode": "Код привязки: {code}",
|
|
29
|
-
"pairingDesc": "Отправьте этот код боту для авторизации вашего Telegram-аккаунта",
|
|
30
|
-
"photoQuality": "Качество фото",
|
|
31
|
-
"photoQualityHigh": "Высокое (несжатое)",
|
|
32
|
-
"photoQualityNormal": "Обычное (сжатое Telegram)",
|
|
33
|
-
"pollingInterval": "Интервал опроса (мс)",
|
|
34
|
-
"pollingIntervalHint": "Задержка между запросами getUpdates в режиме polling",
|
|
35
|
-
"proxy": "HTTPS прокси",
|
|
36
|
-
"proxyHint": "например http://127.0.0.1:10808 для обхода сетевых ограничений",
|
|
37
|
-
"renderMarkdown": "Форматирование Markdown",
|
|
38
|
-
"renderMarkdownDesc": "Преобразовывать ответы модели в красивую разметку Telegram HTML/MarkdownV2",
|
|
39
|
-
"resetToken": "Сбросить токен",
|
|
40
|
-
"save": "Сохранить",
|
|
41
|
-
"saved": "Настройки сохранены",
|
|
42
|
-
"saving": "Сохранение…",
|
|
43
|
-
"secretToken": "Секретный токен вебхука",
|
|
44
|
-
"secretTokenHint": "Случайная строка для заголовка X-Telegram-Bot-Api-Secret-Token",
|
|
45
|
-
"sessionMode": "Режим диалога",
|
|
46
|
-
"sessionModeGroup": "Один общий диалог на группу",
|
|
47
|
-
"sessionModeUser": "Отдельный диалог для каждого пользователя",
|
|
48
|
-
"status": "Статус подключения",
|
|
49
|
-
"statusConnected": "Telegram-бот подключён и работает",
|
|
50
|
-
"statusDisabled": "Telegram-шлюз отключён",
|
|
51
|
-
"statusError": "Ошибка подключения бота: {error}",
|
|
52
|
-
"statusWaiting": "Ожидание подключения к Telegram…",
|
|
53
|
-
"title": "Шлюз Telegram (Messenger Gateway)",
|
|
54
|
-
"typingIndicator": "Индикатор набора текста",
|
|
55
|
-
"typingIndicatorDesc": "Показывать «печатает…» во время генерации ответа моделью",
|
|
56
|
-
"voiceFormat": "Формат голосовых сообщений",
|
|
57
|
-
"voiceInput": "Приём голосовых сообщений",
|
|
58
|
-
"voiceInputDesc": "Распознавать входящие голосовые аудиосообщения через Whisper / STT",
|
|
59
|
-
"voiceOutput": "Голосовые ответы",
|
|
60
|
-
"voiceOutputDesc": "Озвучивать ответы модели с помощью модуля синтеза речи (TTS)",
|
|
61
|
-
"voiceSpeed": "Скорость озвучки",
|
|
62
|
-
"voiceVoice": "Голос синтеза речи",
|
|
63
|
-
"welcomeMessage": "Приветственное сообщение",
|
|
64
|
-
"welcomeMessageHint": "Текст сообщения при команде /start",
|
|
65
|
-
"whitelist": "Белый список пользователей",
|
|
66
|
-
"whitelistDesc": "Ограничить доступ к боту только указанными Telegram ID",
|
|
67
|
-
"wrapCode": "Оформление блоков кода",
|
|
68
|
-
"wrapCodeDesc": "Автоматически оборачивать фрагменты кода в моноширинные блоки с подсветкой",
|
|
69
|
-
"adminIds": "ID администраторов",
|
|
70
|
-
"adminIdsHint": "ID пользователей с правами выполнения привилегированных команд",
|
|
71
|
-
"allowDirectMessages": "Разрешить личные сообщения",
|
|
72
|
-
"allowGroupMessages": "Разрешить работу в группах",
|
|
73
|
-
"autoSummarize": "Автосводка длинных сообщений",
|
|
74
|
-
"botUsername": "Имя пользователя бота (@username)",
|
|
75
|
-
"debugLogs": "Подробные логи отладки",
|
|
76
|
-
"errorNotification": "Уведомлять об ошибках выполнения",
|
|
77
|
-
"maxHistory": "Глубина истории контекста (сообщений)",
|
|
78
|
-
"retryAttempts": "Количество попыток отправки",
|
|
79
|
-
"sendTyping": "Отправлять действие чата",
|
|
80
|
-
"streamResponse": "Потоковая передача ответа",
|
|
81
|
-
"groupMention": "Отвечать только при упоминании в группах",
|
|
82
|
-
"groupsEnable": "Разрешить работу в группах",
|
|
83
|
-
"hideAdvanced": "Скрыть расширенные настройки",
|
|
84
|
-
"idleTimeout": "Таймаут неактивности сессии (мин)",
|
|
85
|
-
"instruction": "Пользовательская инструкция",
|
|
86
|
-
"instructionHint": "Дополнительная системная инструкция для сообщений из Telegram",
|
|
87
|
-
"instructionPlaceholder": "Отвечай кратко и лаконично…",
|
|
88
|
-
"maxDocMb": "Макс. размер документа (МБ)",
|
|
89
|
-
"maxImageMb": "Макс. размер фото (МБ)",
|
|
90
|
-
"maxMessageLength": "Максимальная длина сообщения",
|
|
91
|
-
"maxVoiceSec": "Макс. длительность голосового (сек)",
|
|
92
|
-
"mediaCaption": "Подпись к медиа",
|
|
93
|
-
"messageChunkSize": "Размер фрагмента при разбиении сообщений",
|
|
94
|
-
"messageRateLimit": "Лимит сообщений в секунду",
|
|
95
|
-
"modeHelp": "Режимы доставки входящих сообщений от Telegram API",
|
|
96
|
-
"parseMode": "Режим парсинга разметки",
|
|
97
|
-
"parseModeHtml": "HTML",
|
|
98
|
-
"parseModeMarkdown": "MarkdownV2",
|
|
99
|
-
"parseModeNone": "Без разметки (Plain text)",
|
|
100
|
-
"privacyMode": "Режим приватности",
|
|
101
|
-
"privacyModeDesc": "Не сохранять вложения и медиафайлы на диск",
|
|
102
|
-
"proxyAuth": "Авторизация прокси (user:pass)",
|
|
103
|
-
"proxyType": "Тип прокси",
|
|
104
|
-
"proxyTypeHttp": "HTTP",
|
|
105
|
-
"proxyTypeHttps": "HTTPS",
|
|
106
|
-
"proxyTypeSocks5": "SOCKS5",
|
|
107
|
-
"queueSize": "Размер очереди сообщений",
|
|
108
|
-
"rateLimitExceeded": "Превышен лимит сообщений, попробуйте позже",
|
|
109
|
-
"reconnectDelay": "Задержка переподключения (сек)",
|
|
110
|
-
"sendPhotoAsFile": "Всегда отправлять фото как документ (без сжатия)",
|
|
111
|
-
"sendVoiceNote": "Отправлять аудио как голосовое сообщение",
|
|
112
|
-
"sessionTimeout": "Таймаут сессии диалога",
|
|
113
|
-
"showAdvanced": "Показать расширенные настройки",
|
|
114
|
-
"splitMessages": "Автоматически разбивать длинные сообщения",
|
|
115
|
-
"sttEngine": "Движок распознавания речи (STT)",
|
|
116
|
-
"sttEngineLocal": "Локальный Whisper",
|
|
117
|
-
"sttEngineOpenAI": "OpenAI Whisper API",
|
|
118
|
-
"sttLanguage": "Язык распознавания речи",
|
|
119
|
-
"telegramApiUrl": "Пользовательский URL Telegram Bot API",
|
|
120
|
-
"telegramApiUrlHint": "Для локального сервера telegram-bot-api",
|
|
121
|
-
"ttsEngine": "Движок синтеза речи (TTS)",
|
|
122
|
-
"ttsEngineEdge": "Edge TTS",
|
|
123
|
-
"ttsEngineOpenAI": "OpenAI TTS",
|
|
124
|
-
"ttsSpeed": "Скорость речи",
|
|
125
|
-
"ttsVoice": "Голос синтеза",
|
|
126
|
-
"unauthorizedMessage": "Сообщение при отказе в доступе",
|
|
127
|
-
"unauthorizedMessageHint": "Отправляется пользователям, не входящим в белый список",
|
|
128
|
-
"userLanguage": "Язык ответов пользователю",
|
|
129
|
-
"voiceBitrate": "Битрейт аудио",
|
|
130
|
-
"voiceFormatOgg": "OGG Opus",
|
|
131
|
-
"voiceFormatMp3": "MP3",
|
|
132
|
-
"webhookHost": "Хост вебхука",
|
|
133
|
-
"webhookPath": "Путь вебхука",
|
|
134
|
-
"webhookPort": "Порт вебхука",
|
|
135
|
-
"webhookSecret": "Секретный токен",
|
|
136
|
-
"webhookUrl": "Публичный URL вебхука",
|
|
137
|
-
"maxTextKb": "Макс. текст из документа (КБ)",
|
|
138
|
-
"media": "Медиа",
|
|
139
|
-
"model": "Модель",
|
|
140
|
-
"modelHint": "Пусто = по умолчанию в DSH",
|
|
141
|
-
"notifyBridge": "Уведомления → Telegram-чат",
|
|
142
|
-
"notifyBridgeHint": "task_done/error из веб-сессий (не msgw-*)",
|
|
143
|
-
"notifyHome": "Имя домашнего чата уведомлений",
|
|
144
|
-
"pairingApprove": "Одобрить",
|
|
145
|
-
"pairingEmpty": "Нет ожидающих кодов",
|
|
146
|
-
"pairingRefresh": "Обновить",
|
|
147
|
-
"pairingReject": "Отклонить",
|
|
148
|
-
"photoOnly": "Фото без подписи",
|
|
149
|
-
"photoPrompt": "Ждать вопроса (рекомендуется)",
|
|
150
|
-
"photoRun": "Отвечать немедленно",
|
|
151
|
-
"pollInterval": "Интервал опроса (мс)",
|
|
152
|
-
"pollTimeout": "Таймаут опроса (сек)",
|
|
153
|
-
"progressEnable": "Сообщение о ходе выполнения (рассуждение → удаление → финал)",
|
|
154
|
-
"provider": "Провайдер",
|
|
155
|
-
"providerHint": "Пусто = по умолчанию в DSH",
|
|
156
|
-
"quickActions": "Клавиатура быстрых действий (/new, /stop, /voice, /status)",
|
|
157
|
-
"reactionsEnable": "Реакции во время обработки (👀)",
|
|
158
|
-
"sessionScope": "Область действия групповых сессий",
|
|
159
|
-
"sessionScopeChat": "Общая для чата/темы",
|
|
160
|
-
"sessionScopeUser": "Для каждого пользователя (рекомендуется)",
|
|
161
|
-
"statusIndicator": "Статус indicator (Online/Offline)",
|
|
162
|
-
"statusIndicatorHint": "Задаёт краткое описание бота; у ботов нет индикатора присутствия.",
|
|
163
|
-
"telegram": "Telegram",
|
|
164
|
-
"textFormat": "Формат текста",
|
|
165
|
-
"textFormatHtml": "Markdown → Telegram HTML",
|
|
166
|
-
"textFormatPlain": "Простой текст",
|
|
167
|
-
"transport": "Транспорт",
|
|
168
|
-
"transportPoll": "Длинный опрос (getUpdates)",
|
|
169
|
-
"transportWebhook": "Вебхук (Webhook)",
|
|
170
|
-
"tts": "Голосовые ответы",
|
|
171
|
-
"ttsEnable": "Голосовые ответы через dsh-tts",
|
|
172
|
-
"ttsMaxChars": "Макс. символов для озвучки",
|
|
173
|
-
"turnTimeout": "Таймаут хода агента (сек)",
|
|
174
|
-
"voiceMode": "Режим голосовых ответов",
|
|
175
|
-
"voiceModeAlways": "Всегда использовать TTS",
|
|
176
|
-
"voiceModeMirror": "В ответ на входящие голосовые",
|
|
177
|
-
"voiceModeOff": "Выключено (если не включён /voice)",
|
|
178
|
-
"webhookSecretHint": "Оставьте пустым для сохранения текущего",
|
|
179
|
-
"webhookUrlHint": "Полный HTTPS URL, на который Telegram отправляет POST-запросы",
|
|
180
|
-
"settings.loading": "Загрузка настроек шлюза мессенджеров…",
|
|
181
|
-
"settings.retry": "Повторить",
|
|
182
|
-
"settings.unavailable": "Настройки недоступны (хостовый модуль не готов).",
|
|
183
|
-
"header.title": "Шлюз Telegram и мессенджеров",
|
|
184
|
-
"header.sub": "Мост между DeepSeek Harness и Telegram: сессии, управление, уведомления и доступ с мобильных",
|
|
185
|
-
"badge.online": "Telegram онлайн (@{username})",
|
|
186
|
-
"badge.offline": "Telegram отключен",
|
|
187
|
-
"badge.pending": "Ожидание подключения бота…",
|
|
188
|
-
"sec.bot_title": "Параметры Telegram-бота",
|
|
189
|
-
"sec.bot_desc": "Укажите токен бота от @BotFather для приёма сообщений и запуска сессий DSH",
|
|
190
|
-
"sec.access_title": "Контроль доступа и белый список",
|
|
191
|
-
"sec.access_desc": "Ограничение доступа по Telegram User ID или разовым кодам сопряжения",
|
|
192
|
-
"sec.notify_title": "Уведомления о событиях",
|
|
193
|
-
"sec.notify_desc": "Оповещения в Telegram о завершении ответов и ошибках",
|
|
194
|
-
"field.token": "Bot Token (Telegram)",
|
|
195
|
-
"field.token_hint": "Токен бота от @BotFather (хранится безопасно в DSH Credentials)",
|
|
196
|
-
"field.allowed_users": "Разрешённые ID пользователей",
|
|
197
|
-
"field.allowed_users_hint": "Список Telegram ID через запятую (оставьте пустым для сопряжения по коду)",
|
|
198
|
-
"field.pairing_code": "Код сопряжения (Pairing Code)",
|
|
199
|
-
"field.pairing_code_hint": "Введите этот 6-значный код боту для авторизации нового устройства",
|
|
200
|
-
"field.notify_on_turn": "Уведомлять о завершении хода",
|
|
201
|
-
"field.notify_on_turn_hint": "Отправлять сообщение в Telegram, когда модель закончила длинный ответ",
|
|
202
|
-
"field.notify_on_error": "Оповещать об ошибках выполнения",
|
|
203
|
-
"field.notify_on_error_hint": "Срочные уведомления о падении агента или превышении лимитов",
|
|
204
|
-
"stat.active_chats": "Активных чатов",
|
|
205
|
-
"stat.messages_relayed": "Передано сообщений",
|
|
206
|
-
"stat.avg_latency": "Пинг до Telegram API",
|
|
207
|
-
"btn.ping": "Проверить связь (Ping)",
|
|
208
|
-
"btn.regenerate_code": "Новый код сопряжения",
|
|
209
|
-
"btn.disconnect": "Отключить бота",
|
|
210
|
-
"msg.ping_ok": "Связь с Telegram API установлена ({ms} мс)",
|
|
211
|
-
"msg.ping_failed": "Не удалось связаться с Telegram API: {error}",
|
|
212
|
-
"badge.running": "Шлюз запущен",
|
|
213
|
-
"badge.stopped": "Шлюз остановлен",
|
|
214
|
-
"badge.token_ok": "Токен настроен",
|
|
215
|
-
"badge.token_missing": "Токен отсутствует",
|
|
216
|
-
"badge.pairing_count": "Сопряжено устройств: {count}",
|
|
217
|
-
"badge.transport": "Транспорт: Long Polling",
|
|
218
|
-
"telegramSub": "Настройки Telegram Bot API и интеграции",
|
|
219
|
-
"agentSub": "Назначение модели и системных инструкций для Telegram-сессий",
|
|
220
|
-
"mediaSub": "Приём и отправка голосовых сообщений, фото и файлов",
|
|
221
|
-
"ttsSub": "Синтез речи (TTS) для голосовых ответов бота",
|
|
222
|
-
"pairingSub": "Управление авторизованными пользователями и разовыми кодами",
|
|
223
|
-
"diag.title": "Диагностика связи и Smoke-тест",
|
|
224
|
-
"diag.desc": "Проверка доступности Telegram Bot API, пинга и прав бота",
|
|
225
|
-
"diag.smoke_btn": "Запустить Smoke-тест",
|
|
226
|
-
"diag.smoke_testing": "Тестирование шлюза…",
|
|
227
|
-
"diag.smoke_ok": "Smoke-тест пройден успешно! Бот готов к работе.",
|
|
228
|
-
"diag.smoke_err": "Smoke-тест завершился с ошибкой: {error}",
|
|
229
|
-
"stats.title": "Метрики шлюза",
|
|
230
|
-
"stats.desc": "Текущая статистика передаваемых сообщений и времени аптайма",
|
|
231
|
-
"stats.sent": "Отправлено сообщений",
|
|
232
|
-
"stats.errors": "Ошибок шлюза",
|
|
233
|
-
"stats.uptime": "Время работы",
|
|
234
|
-
"stats.active_chats": "Активных чатов"
|
|
235
|
-
}
|
|
236
|
-
}
|
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"dsh-key-rotation": {
|
|
3
|
-
"addKey": "+ Добавить ключ",
|
|
4
|
-
"addKeyTitle": "Добавить API-ключ",
|
|
5
|
-
"addProvider": "+ Добавить провайдера",
|
|
6
|
-
"brokenKey": "повреждён (3× AUTH)",
|
|
7
|
-
"budgetLabel": "бюджет:",
|
|
8
|
-
"cardDesc": "Ротация API-ключей для провайдеров: пулы ключей, автоматическое переключение при исчерпании квот и rate-limit, кулдаун и восстановление.",
|
|
9
|
-
"codesTitle": "Переключать при этих ошибках",
|
|
10
|
-
"cooldown": "Кулдаун после ошибки (мс)",
|
|
11
|
-
"desc": "Ротация API-ключей по провайдерам. Для каждого провайдера укажите список его ключей (имена переменных окружения из DSH credentials). Плагин направляет запросы по очереди и автоматически переключается на следующий ключ при ошибках лимитов или квот.",
|
|
12
|
-
"discard": "Сбросить",
|
|
13
|
-
"empty": "Провайдеры для ротации ключей не настроены.",
|
|
14
|
-
"emptyKeys": "В пуле пока нет ключей.",
|
|
15
|
-
"errorCount": "Ошибок: {n}",
|
|
16
|
-
"failover": "Автоматическое переключение",
|
|
17
|
-
"failoverDesc": "Переключаться на следующий ключ в пуле при получении кодов 429, 402, 403, 503",
|
|
18
|
-
"health": "Состояние пула",
|
|
19
|
-
"healthBad": "Все ключи исчерпаны или заблокированы",
|
|
20
|
-
"healthGood": "Все ключи работоспособны",
|
|
21
|
-
"healthWarn": "Часть ключей на кулдауне",
|
|
22
|
-
"key": "Ключ",
|
|
23
|
-
"keyActive": "Активен",
|
|
24
|
-
"keyBlocked": "Заблокирован",
|
|
25
|
-
"keyCooldown": "Кулдаун ({time}с)",
|
|
26
|
-
"keyName": "Имя ключа",
|
|
27
|
-
"keyPlaceholder": "OPENAI_API_KEY_2",
|
|
28
|
-
"keyPool": "Пул ключей",
|
|
29
|
-
"keyQuota": "Квота исчерпана",
|
|
30
|
-
"keyRateLimit": "Превышен лимит запросов",
|
|
31
|
-
"keyRemoved": "Ключ удалён",
|
|
32
|
-
"keySaved": "Ключ добавлен",
|
|
33
|
-
"keysCount": "Ключей в пуле: {n}",
|
|
34
|
-
"keysTitle": "Список ключей",
|
|
35
|
-
"lastError": "Последняя ошибка: {msg}",
|
|
36
|
-
"lastSuccess": "Успешный запрос: {time}",
|
|
37
|
-
"loading": "Загрузка пулов ротации…",
|
|
38
|
-
"metrics": "Метрики использования",
|
|
39
|
-
"mode": "Режим выбора ключа",
|
|
40
|
-
"modeOrder": "По порядку (Sequential)",
|
|
41
|
-
"modeRandom": "Случайно (Random)",
|
|
42
|
-
"modeWeighted": "По весам / бюджету",
|
|
43
|
-
"name": "Ротация API-ключей",
|
|
44
|
-
"noProviders": "Провайдеры не добавлены",
|
|
45
|
-
"provider": "Провайдер",
|
|
46
|
-
"providerName": "Имя провайдера (например openai, openrouter)",
|
|
47
|
-
"providerPlaceholder": "openai",
|
|
48
|
-
"providerRemoved": "Провайдер удалён",
|
|
49
|
-
"removeKey": "Удалить ключ",
|
|
50
|
-
"removeProvider": "Удалить провайдера",
|
|
51
|
-
"resetCooldowns": "Сбросить все кулдауны",
|
|
52
|
-
"resetSuccess": "Кулдауны ключей сброшены",
|
|
53
|
-
"retryCount": "Попыток повтора",
|
|
54
|
-
"save": "Сохранить настройки",
|
|
55
|
-
"saved": "Настройки сохранены",
|
|
56
|
-
"saving": "Сохранение…",
|
|
57
|
-
"status": "Статус",
|
|
58
|
-
"strategy": "Стратегия failover",
|
|
59
|
-
"title": "Ротация API-ключей (dsh-key-rotation)",
|
|
60
|
-
"totalCalls": "Всего вызовов: {n}",
|
|
61
|
-
"totalErrors": "Всего сбоев: {n}",
|
|
62
|
-
"weight": "Вес ключа",
|
|
63
|
-
"exportCsv": "Экспорт в CSV",
|
|
64
|
-
"exportOne": "Экспорт пула",
|
|
65
|
-
"exportPools": "Экспорт всех пулов в JSON",
|
|
66
|
-
"filterAll": "Все ключи",
|
|
67
|
-
"filterCooldown": "На кулдауне",
|
|
68
|
-
"filterErrors": "С ошибками",
|
|
69
|
-
"filterReady": "Готовы к работе",
|
|
70
|
-
"hoursAgo": "{n} ч назад",
|
|
71
|
-
"importEnv": "Импорт из переменных окружения (.env)",
|
|
72
|
-
"importPools": "Импорт пулов из JSON",
|
|
73
|
-
"keyDisabled": "Отключён вручную",
|
|
74
|
-
"keyErrors": "Ошибок подряд: {n}",
|
|
75
|
-
"keyLatency": "Задержка: {time}мс",
|
|
76
|
-
"keyPriority": "Приоритет",
|
|
77
|
-
"keySuccess": "Успешных запросов: {n}",
|
|
78
|
-
"keyWeight": "Вес: {n}",
|
|
79
|
-
"metricsAvgLatency": "Средняя задержка",
|
|
80
|
-
"metricsErrors": "Ошибки",
|
|
81
|
-
"metricsSuccess": "Успешные",
|
|
82
|
-
"metricsThroughput": "Запросов/мин",
|
|
83
|
-
"metricsTotal": "Всего запросов",
|
|
84
|
-
"minutesAgo": "{n} мин назад",
|
|
85
|
-
"modalAddKey": "Добавление ключа в пул",
|
|
86
|
-
"modalAddProvider": "Добавление пула провайдера",
|
|
87
|
-
"modalEditKey": "Редактирование ключа",
|
|
88
|
-
"modalEditProvider": "Редактирование провайдера",
|
|
89
|
-
"poolActive": "Пул активен",
|
|
90
|
-
"poolDisabled": "Пул отключён",
|
|
91
|
-
"poolEmpty": "В пуле нет активных ключей",
|
|
92
|
-
"poolName": "Имя пула провайдера",
|
|
93
|
-
"providerActive": "Активен",
|
|
94
|
-
"providerDisabled": "Отключён",
|
|
95
|
-
"providerType": "Тип провайдера",
|
|
96
|
-
"quotaExhausted": "Квота исчерпана",
|
|
97
|
-
"rateLimit": "Превышен лимит запросов",
|
|
98
|
-
"resetAll": "Сбросить статистику и кулдауны",
|
|
99
|
-
"resetAllSuccess": "Статистика и кулдауны успешно сброшены",
|
|
100
|
-
"retryInterval": "Интервал повтора (мс)",
|
|
101
|
-
"rotationMode": "Режим ротации",
|
|
102
|
-
"rotationSequential": "Последовательный (Round-Robin)",
|
|
103
|
-
"rotationWeighted": "Взвешенный (Weighted)",
|
|
104
|
-
"secondsAgo": "{n} с назад",
|
|
105
|
-
"statusAvailable": "Доступен",
|
|
106
|
-
"statusCooldown": "Кулдаун",
|
|
107
|
-
"statusDisabled": "Отключён",
|
|
108
|
-
"statusExhausted": "Исчерпан",
|
|
109
|
-
"statusFailed": "Ошибка",
|
|
110
|
-
"switchCount": "Переключений: {n}",
|
|
111
|
-
"testKey": "Проверить ключ",
|
|
112
|
-
"testSuccess": "Ключ валиден: ответ за {time}мс",
|
|
113
|
-
"justNow": "только что",
|
|
114
|
-
"keyCooling": "охлаждение, {s}с",
|
|
115
|
-
"keyExpired": "истёк",
|
|
116
|
-
"keyExpiringSoon": "истекает через {n} дн.",
|
|
117
|
-
"keyFromEnv": "из переменных окружения, только чтение",
|
|
118
|
-
"keyHint": "Значение сохраняется в учётных данных DSH и никогда не отправляется обратно в браузер — отображаются только последние 5 символов.",
|
|
119
|
-
"keyLabel": "Ключ {n}",
|
|
120
|
-
"keyMissing": "учётные данные отсутствуют",
|
|
121
|
-
"keyReady": "готов",
|
|
122
|
-
"keySave": "Сохранить key",
|
|
123
|
-
"keyValuePlaceholder": "paste the key, then Сохранить",
|
|
124
|
-
"keyWriteFailed": "не удалось сохранить ключ: {msg}",
|
|
125
|
-
"moveDown": "Переместить вниз",
|
|
126
|
-
"moveUp": "Переместить вверх",
|
|
127
|
-
"notRegistered": "не зарегистрирован",
|
|
128
|
-
"notSecretShape": "сохранено, но значение не похоже на API-ключ — проверьте опечатки",
|
|
129
|
-
"poolExhausted": "пул исчерпан — все ключи охлаждаются",
|
|
130
|
-
"providersTitle": "Провайдеры и их ключи",
|
|
131
|
-
"resetCooldown": "Сбросить охлаждение",
|
|
132
|
-
"resetting": "Сброс…",
|
|
133
|
-
"retestBroken": "Повторный тест",
|
|
134
|
-
"retestFail": "повторный тест не пройден — ключ всё ещё не работает",
|
|
135
|
-
"rpmTitle": "запросов/мин: {u} использовано, {r} осталось",
|
|
136
|
-
"scheduleDays": "Расписание ротации (дней, 0=выкл.)",
|
|
137
|
-
"snapshotExport": "Снимок ⬇",
|
|
138
|
-
"snapshotImport": "Восстановить",
|
|
139
|
-
"subtitle": "Ротация API-ключей по провайдерам: пулы ключей, автоматическое переключение при исчерпании квот/лимитов, охлаждение и восстановление.",
|
|
140
|
-
"switchCodes": "Коды переключения (через запятую)",
|
|
141
|
-
"switchesNone": "переключений пока не было",
|
|
142
|
-
"switchesSome": "переключений: {n} · последнее: {reason}, {ago}",
|
|
143
|
-
"testAll": "Проверить все ключи",
|
|
144
|
-
"testFail": "СБОЙ",
|
|
145
|
-
"testOk": "OK",
|
|
146
|
-
"testing": "Тестирование…",
|
|
147
|
-
"usedAgo": "{ago} назад",
|
|
148
|
-
"weightHint": "вес в round-robin: сколько раз ключ участвует в цикле (1 = равная доля)",
|
|
149
|
-
"sectionStats": "Здоровье пула и телеметрия",
|
|
150
|
-
"sectionStatsDesc": "Телеметрия активных пулов ключей в реальном времени, доступные учётные данные и статус переключения.",
|
|
151
|
-
"sectionFailover": "Триггеры отказа и коды ошибок",
|
|
152
|
-
"sectionFailoverDesc": "Выбор условий и ошибок, вызывающих автоматическое переключение на следующий доступный ключ.",
|
|
153
|
-
"sectionTiming": "Тайминги и расписание ротации",
|
|
154
|
-
"sectionTimingDesc": "Настройка длительности периода охлаждения (cooldown) и окон периодической ротации.",
|
|
155
|
-
"sectionBackup": "Резервные копии и снимки",
|
|
156
|
-
"sectionBackupDesc": "Экспорт и импорт пулов провайдеров и создание полных снимков конфигурации плагина.",
|
|
157
|
-
"statPools": "Настроенных пулов",
|
|
158
|
-
"statKeys": "Всего ключей",
|
|
159
|
-
"statHealthy": "Исправны / Готовы",
|
|
160
|
-
"loadDistribution": "Распределение трафика",
|
|
161
|
-
"statRequests": "запросов",
|
|
162
|
-
"noTrafficYet": "Трафик пока не зафиксирован",
|
|
163
|
-
"confirm": "Подтвердить",
|
|
164
|
-
"cancel": "Отмена",
|
|
165
|
-
"confirmResetTitle": "Сбросить охлаждение для {p}?",
|
|
166
|
-
"confirmResetDesc": "Это немедленно сбросит счётчики сбоев, таймеры охлаждения и переведёт автоматический выключатель (circuit breaker) в исходное состояние.",
|
|
167
|
-
"confirmRemoveProvTitle": "Удалить провайдера {p}?",
|
|
168
|
-
"confirmRemoveProvDesc": "Вы уверены, что хотите удалить этого провайдера и все настроенные ключи из ротации?",
|
|
169
|
-
"undoProvider": "Провайдер удалён",
|
|
170
|
-
"undoKey": "Ключ удалён",
|
|
171
|
-
"undo": "Отменить",
|
|
172
|
-
"header.title": "Ротация ключей и отказоустойчивость",
|
|
173
|
-
"header.sub": "Автоматическая круговая (round-robin) ротация нескольких ключей, экспоненциальные таймауты при ошибках 429/5xx, защита цепи failover и безопасность учётных данных (~/.dsh/.credentials.yaml).",
|
|
174
|
-
"header.pools_badge": "активных пулов",
|
|
175
|
-
"header.keys_badge": "настроенных ключей",
|
|
176
|
-
"emptyTitle": "Пулов пока нет",
|
|
177
|
-
"emptyDesc": "Добавьте провайдера и хотя бы одно имя API-ключа для запуска ротации.",
|
|
178
|
-
"errorTitle": "Не удалось загрузить настройки",
|
|
179
|
-
"retry": "Повторить",
|
|
180
|
-
"unavailableTitle": "Мост настроек недоступен",
|
|
181
|
-
"unavailableDesc": "Хост не предоставил пространство настроек dsh-key-rotation. Откройте «Настройки» заново или проверьте, включён ли плагин.",
|
|
182
|
-
"modalClose": "Закрыть диалог",
|
|
183
|
-
"dialogLabel": "Подтверждение",
|
|
184
|
-
"loadChartAria": "Распределение трафика по ключам",
|
|
185
|
-
"bulkCooldownPlaceholder": "Массовый таймаут (мс)",
|
|
186
|
-
"bulkApply": "Применить к выбранным",
|
|
187
|
-
"bulkRemove": "Удалить выбранные",
|
|
188
|
-
"confirmBulkRemoveTitle": "Удалить выбранных провайдеров ({n})?",
|
|
189
|
-
"confirmBulkRemoveDesc": "Выбранные провайдеры и все их ключи будут исключены из ротации. Действие можно отменить один раз сразу после удаления.",
|
|
190
|
-
"selectProvider": "Выбрать провайдера {p}",
|
|
191
|
-
"activeBadge": "активен",
|
|
192
|
-
"healthScoreTitle": "рейтинг надёжности",
|
|
193
|
-
"totalRequestsTitle": "всего запросов",
|
|
194
|
-
"exportProvider": "Экспортировать этого провайдера",
|
|
195
|
-
"recentFailures": "Недавние сбои ({n})",
|
|
196
|
-
"noActivePools": "Нет активных пулов",
|
|
197
|
-
"headerPoolsTitle": "Пулы ротации ключей",
|
|
198
|
-
"pausedBudget": "приостановлен",
|
|
199
|
-
"sortUsage": "Сортировать по нагрузке",
|
|
200
|
-
"testingAllProgress": "Проверка {n} из {total}…",
|
|
201
|
-
"liveEventStream": "Лента событий в реальном времени",
|
|
202
|
-
"liveEventStreamEmpty": "События ротации пока не зафиксированы",
|
|
203
|
-
"eventAt": "Время",
|
|
204
|
-
"eventKey": "Ключ",
|
|
205
|
-
"eventReason": "Причина",
|
|
206
|
-
"eventCooldown": "Таймаут",
|
|
207
|
-
"quotaResetIn": "Сброс через {time}",
|
|
208
|
-
"routingStrategyLabel": "Стратегия маршрутизации",
|
|
209
|
-
"routingStrategyRoundRobin": "Круговой перебор (Round-Robin, по умолчанию)",
|
|
210
|
-
"routingStrategyLeastLoaded": "Минимальная нагрузка (по параллелизму)",
|
|
211
|
-
"routingStrategyLowestLatency": "Минимальная задержка (p95)",
|
|
212
|
-
"proactiveGuardLabel": "Превентивная защита от лимитов (Rate-Limit Guard)",
|
|
213
|
-
"proactiveGuardHint": "Заранее ставить ключи на паузу при приближении к квоте или заголовку Retry-After до получения 429",
|
|
214
|
-
"selfHealingLabel": "Интервал автовосстановления (мин)",
|
|
215
|
-
"selfHealingHint": "Периодическая проверка бесплатной моделью для возврата вышедших из строя ключей (0 — отключено)"
|
|
216
|
-
}
|
|
217
|
-
}
|