@goodandready/dsh-russian-lang 0.2.13 → 0.2.15
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 +17 -8
- package/README.ru.md +220 -0
- package/docs/media/banner.jpg +0 -0
- package/lib/client.js +4 -4
- package/package.json +2 -2
- package/ru-plugins/07-better-sidebar.json +3 -1
- package/ru-plugins/10-kanban.json +21 -1
- package/ru-plugins/12-skills-manager.json +34 -2
- package/ru-plugins/17-dsh-context.json +16 -1
- package/ru-plugins/26-config-manager.json +147 -2
- package/ru-plugins/27-config-manager-sync.json +27 -2
- package/ru-plugins/28-config-manager-market.json +9 -2
- package/ru-plugins/32-vision-bridge.json +19 -2
- package/ru-plugins/34-key-rotation.json +45 -1
- package/ru-plugins/36-cost-meter.json +26 -1
- package/ru-plugins/37-time-machine.json +8 -2
- package/ru-plugins/38-context-lens.json +6 -2
- package/ru-plugins/39-shadow-auditor.json +24 -1
- package/ru-plugins/50-automode.json +16 -0
- package/ru-plugins/53-remote-workspace.json +59 -1
- package/ru-plugins/56-cron.json +323 -0
- package/ru-plugins/57-live-canvas.json +121 -0
- package/ru-plugins/58-grok-xsearch.json +77 -0
- package/ru-plugins/59-goal.json +54 -0
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
{
|
|
2
|
+
"dsh-cron": {
|
|
3
|
+
"sidebar.label": "Задачи по расписанию",
|
|
4
|
+
"sidebar.jobsTitle": "Активные задачи",
|
|
5
|
+
"sidebar.noActiveJobs": "Нет активных задач",
|
|
6
|
+
"sidebar.moreJobs": "и ещё {count}",
|
|
7
|
+
"chip.title": "Задачи по расписанию (Cron)",
|
|
8
|
+
"panel.back": "Назад к чату",
|
|
9
|
+
"panel.title": "Задачи по расписанию",
|
|
10
|
+
"panel.subtitle": "Попросите DSH спланировать задачи, установить напоминания или отслеживать обновления",
|
|
11
|
+
"actions.create": "Создать",
|
|
12
|
+
"actions.createWithDsh": "💬 Создать через DSH",
|
|
13
|
+
"actions.setupManually": "✏️ Настроить вручную",
|
|
14
|
+
"actions.runNow": "Запустить сейчас",
|
|
15
|
+
"actions.runNowShort": "Запуск",
|
|
16
|
+
"actions.edit": "Изменить / Детали",
|
|
17
|
+
"actions.duplicate": "Дублировать задачу",
|
|
18
|
+
"actions.tuneWithDsh": "Настроить через DSH",
|
|
19
|
+
"tune.startFailed": "Не удалось начать диалог настройки: {error}",
|
|
20
|
+
"actions.delete": "Удалить задачу",
|
|
21
|
+
"duplicate.done": "Копия создана и поставлена на паузу: проверьте расписание перед запуском.",
|
|
22
|
+
"duplicate.oneShotHint": "Копия является разовой и на паузе — исходное время уже могло пройти, задайте новое время перед возобновлением.",
|
|
23
|
+
"duplicate.failed": "Не удалось дублировать задачу: {error}",
|
|
24
|
+
"transfer.exportTitle": "Экспорт задач",
|
|
25
|
+
"transfer.importTitle": "Импорт задач",
|
|
26
|
+
"transfer.exported": "Экспортировано задач: {count}.",
|
|
27
|
+
"transfer.exportFailed": "Сбой экспорта: {error}",
|
|
28
|
+
"transfer.importTitleModal": "Импорт задач",
|
|
29
|
+
"transfer.importHint": "Экспортируются только настройки задач: без истории запусков и счетчиков. Секреты не включаются — каналы ссылаются на учетные данные по имени, поэтому убедитесь, что эти имена существуют на целевом сервере.",
|
|
30
|
+
"transfer.strategyAdd": "Добавить как новые задачи (новые ID, существующие не изменятся)",
|
|
31
|
+
"transfer.strategyReplace": "Заменить задачи с совпадающим ID",
|
|
32
|
+
"transfer.strategySkip": "Пропустить задачи, чей ID уже существует",
|
|
33
|
+
"transfer.summary": "В файле содержится задач: {total} (новых: {add}, совпадает по ID: {replace}, пропущено: {skip}).",
|
|
34
|
+
"transfer.confirm": "Импортировать",
|
|
35
|
+
"transfer.imported": "Импортировано задач: {count}.",
|
|
36
|
+
"transfer.importFailed": "Сбой импорта: {error}",
|
|
37
|
+
"transfer.badFile": "Выбранный файл не является корректным JSON-экспортом: {error}",
|
|
38
|
+
"actions.pause": "Пауза",
|
|
39
|
+
"actions.resume": "Возобновить",
|
|
40
|
+
"actions.settings": "Уведомления и каналы",
|
|
41
|
+
"search.placeholder": "Поиск задач по расписанию",
|
|
42
|
+
"filters.title": "Фильтры",
|
|
43
|
+
"filters.type": "Тип",
|
|
44
|
+
"filters.model": "Модель",
|
|
45
|
+
"filters.channel": "Канал",
|
|
46
|
+
"filters.any": "Любой",
|
|
47
|
+
"filters.reset": "Сбросить фильтры",
|
|
48
|
+
"filters.empty": "Нет задач, соответствующих выбранным фильтрам.",
|
|
49
|
+
"filters.showing": "Показано {shown} из {total}",
|
|
50
|
+
"stats.activeTasks": "Активных задач",
|
|
51
|
+
"stats.totalRuns": "Всего запусков",
|
|
52
|
+
"stats.totalTokens": "Потрачено токенов",
|
|
53
|
+
"stats.totalCost": "Расчётная стоимость",
|
|
54
|
+
"tabs.all": "Все",
|
|
55
|
+
"tabs.active": "Активные",
|
|
56
|
+
"tabs.paused": "На паузе",
|
|
57
|
+
"tabs.completed": "Завершённые",
|
|
58
|
+
"banner.loadError": "Не удалось загрузить задачи: {error}",
|
|
59
|
+
"banner.retry": "Повторить",
|
|
60
|
+
"list.loading": "Загрузка задач по расписанию…",
|
|
61
|
+
"list.empty": "Задач по расписанию пока нет",
|
|
62
|
+
"list.typeShell": "Shell",
|
|
63
|
+
"list.typeLlm": "LLM",
|
|
64
|
+
"list.oneShot": "Разовая",
|
|
65
|
+
"list.configManaged": "Конфиг",
|
|
66
|
+
"list.configManagedHint": "Задача создана автоматически из файла конфигурации DSH",
|
|
67
|
+
"list.paused": "Пауза",
|
|
68
|
+
"list.failed": "Сбой",
|
|
69
|
+
"list.running": "Выполняется",
|
|
70
|
+
"list.nextRun": "Следующий запуск: {time}",
|
|
71
|
+
"list.lastRun": "Последний запуск: {time}",
|
|
72
|
+
"list.runsCount": "Запусков: {count}",
|
|
73
|
+
"list.tokens": "Токены: {tokens}",
|
|
74
|
+
"list.cost": "Стоимость: {cost}",
|
|
75
|
+
"list.deleteConfirm": "Удалить задачу «{name}»? Это действие нельзя отменить.",
|
|
76
|
+
"list.deleteBtn": "Удалить",
|
|
77
|
+
"list.cancelBtn": "Отмена",
|
|
78
|
+
"details.title": "Детали задачи",
|
|
79
|
+
"details.prompt": "Промпт / Команда",
|
|
80
|
+
"details.schedule": "Расписание",
|
|
81
|
+
"details.model": "Модель",
|
|
82
|
+
"details.channel": "Канал доставки",
|
|
83
|
+
"details.created": "Создана",
|
|
84
|
+
"details.updated": "Обновлена",
|
|
85
|
+
"details.historyTitle": "История недавних запусков",
|
|
86
|
+
"details.noHistory": "Запусков пока не было.",
|
|
87
|
+
"details.statusSuccess": "Успешно",
|
|
88
|
+
"details.statusFailed": "Сбой",
|
|
89
|
+
"details.duration": "Длительность",
|
|
90
|
+
"details.output": "Вывод",
|
|
91
|
+
"details.error": "Ошибка",
|
|
92
|
+
"form.titleCreate": "Создание задачи по расписанию",
|
|
93
|
+
"form.titleEdit": "Редактирование задачи по расписанию",
|
|
94
|
+
"form.nameLabel": "Название задачи",
|
|
95
|
+
"form.namePlaceholder": "Например: Ежедневный отчёт по коммитам",
|
|
96
|
+
"form.typeLabel": "Тип исполнителя",
|
|
97
|
+
"form.typeLlm": "Инструкция для AI-агента (LLM)",
|
|
98
|
+
"form.typeShell": "Shell-скрипт / Команда ОС",
|
|
99
|
+
"form.typeHttp": "HTTP-запрос (Webhook)",
|
|
100
|
+
"form.scheduleTypeLabel": "Режим расписания",
|
|
101
|
+
"form.scheduleTypeCron": "Стандартный Cron (выражение из 5 полей)",
|
|
102
|
+
"form.scheduleTypeInterval": "Повторяющийся интервал (каждые N минут/часов)",
|
|
103
|
+
"form.scheduleTypeOneShot": "Разовый отложенный запуск (в заданное время)",
|
|
104
|
+
"form.cronExprLabel": "Cron-выражение",
|
|
105
|
+
"form.cronExprPlaceholder": "0 9 * * 1-5 (по будням в 09:00)",
|
|
106
|
+
"form.cronExprHint": "Синтаксис: минута (0-59) час (0-23) день месяца (1-31) месяц (1-12) день недели (0-6)",
|
|
107
|
+
"form.intervalValueLabel": "Интервал выполнения",
|
|
108
|
+
"form.intervalUnitMinutes": "минут",
|
|
109
|
+
"form.intervalUnitHours": "часов",
|
|
110
|
+
"form.intervalUnitDays": "дней",
|
|
111
|
+
"form.oneShotDateLabel": "Дата и время разового запуска",
|
|
112
|
+
"form.modelLabel": "Модель агента (для типа LLM)",
|
|
113
|
+
"form.modelDefault": "Модель по умолчанию из профиля DSH",
|
|
114
|
+
"form.fallbackModelLabel": "Резервная модель (Fallback)",
|
|
115
|
+
"form.fallbackModelPlaceholder": "например deepseek-reasoner",
|
|
116
|
+
"form.fallbackModelHint": "Если запуск на основной модели выше завершится ошибкой, задача будет повторена один раз на резервной модели. Обе попытки учитываются в стоимости.",
|
|
117
|
+
"form.promptLabelScript": "Shell-команда или скрипт",
|
|
118
|
+
"form.promptLabelLlm": "Инструкция / Промпт для агента",
|
|
119
|
+
"form.promptPlaceholderScript": "curl -fsSL https://... || exit 1",
|
|
120
|
+
"form.promptPlaceholderLlm": "Опишите подробно, что именно должен сделать агент…",
|
|
121
|
+
"form.timezoneLabel": "Часовой пояс (IANA, необязательно)",
|
|
122
|
+
"form.timezonePlaceholder": "например Europe/Moscow (пусто = локальное время сервера)",
|
|
123
|
+
"form.misfireLabel": "При пропущенном запуске (после простоя)",
|
|
124
|
+
"form.misfireSkip": "Пропустить невыполненный запуск (skip)",
|
|
125
|
+
"form.misfireRunOnce": "Выполнить один раз с опозданием (runOnce)",
|
|
126
|
+
"form.misfireCatchUp": "Выполнить разово и зафиксировать пропуск (catchUpAll)",
|
|
127
|
+
"form.retriesLabel": "Автоматических повторов при сбое (0 = выкл)",
|
|
128
|
+
"form.permissionLabel": "Разрешения сессии",
|
|
129
|
+
"form.permissionDefault": "По умолчанию (как настроено в DSH)",
|
|
130
|
+
"form.permissionReadonly": "Только чтение",
|
|
131
|
+
"form.permissionWrite": "Запись в рабочее пространство",
|
|
132
|
+
"form.permissionFull": "Полный доступ",
|
|
133
|
+
"list.runningNow": "Выполняется прямо сейчас",
|
|
134
|
+
"history.openSession": "Открыть сессию",
|
|
135
|
+
"form.notifyTitle": "Уведомления в Telegram",
|
|
136
|
+
"form.notifyTelegram": "Отправлять отчёт о выполнении в Telegram",
|
|
137
|
+
"form.notifyOnlyFailure": "Только при сбоях (onlyOnFailure / молчать при успехе)",
|
|
138
|
+
"form.channelsTitle": "Каналы доставки",
|
|
139
|
+
"form.channelsHint": "Выберите каналы для этой задачи. Явный выбор переопределяет переключатель Telegram выше; оставьте всё неотмеченным для отката к нему.",
|
|
140
|
+
"form.templateLabel": "Шаблон сообщения (необязательно)",
|
|
141
|
+
"form.templatePlaceholder": "⏰ {title} — {status} за {duration}",
|
|
142
|
+
"form.templateHint": "Переменные: {title} {id} {status} {output} {error} {duration} {schedule} {time} {tokens} {cost} {model}. Пусто = встроенный текст.",
|
|
143
|
+
"form.channelTelegram": "Telegram",
|
|
144
|
+
"form.channelKanban": "Карточка dsh-kanban",
|
|
145
|
+
"form.channelDiscord": "Discord",
|
|
146
|
+
"form.channelSlack": "Slack",
|
|
147
|
+
"form.channelNtfy": "ntfy",
|
|
148
|
+
"form.channelBark": "Bark",
|
|
149
|
+
"form.channelPushplus": "PushPlus",
|
|
150
|
+
"form.channelTts": "Голос (dsh-tts)",
|
|
151
|
+
"form.channelGitea": "Задача в Gitea",
|
|
152
|
+
"settings.deliverySection": "Каналы доставки",
|
|
153
|
+
"settings.secretsSection": "Учётные данные (ссылки по имени)",
|
|
154
|
+
"settings.secretsHint": "Введите ИМЯ учётных данных DSH, а не сам секрет. Секреты остаются в защищённом хранилище credentials.",
|
|
155
|
+
"settings.telegramSection": "Telegram",
|
|
156
|
+
"settings.templatesSection": "Шаблоны сообщений",
|
|
157
|
+
"settings.channelTemplateLabel": "Шаблон для канала {channel}",
|
|
158
|
+
"settings.botTokenRefLabel": "Имя секрета для Telegram Bot Token",
|
|
159
|
+
"settings.botTokenRefPlaceholder": "например TELEGRAM_BOT_TOKEN",
|
|
160
|
+
"settings.apiTokenLabel": "Внешний API-токен",
|
|
161
|
+
"settings.apiTokenPlaceholder": "Bearer-токен для /dsh-cron/api/* (пусто = отключено)",
|
|
162
|
+
"settings.discordLabel": "URL вебхука Discord",
|
|
163
|
+
"settings.slackLabel": "URL вебхука Slack",
|
|
164
|
+
"settings.ntfyUrlLabel": "URL сервера ntfy",
|
|
165
|
+
"settings.ntfyTopicLabel": "Тема (topic) в ntfy",
|
|
166
|
+
"settings.ntfyTokenRefLabel": "Имя секрета для токена ntfy",
|
|
167
|
+
"settings.barkServerLabel": "URL сервера Bark",
|
|
168
|
+
"settings.barkKeyLabel": "Ключ устройства Bark",
|
|
169
|
+
"settings.pushplusTokenRefLabel": "Имя секрета для токена PushPlus",
|
|
170
|
+
"settings.pushplusUrlLabel": "Конечная точка PushPlus",
|
|
171
|
+
"settings.ttsBaseUrlLabel": "Базовый URL службы dsh-tts",
|
|
172
|
+
"settings.giteaBaseUrlLabel": "Базовый URL Gitea",
|
|
173
|
+
"settings.giteaRepoLabel": "Репозиторий Gitea (владелец/репозиторий)",
|
|
174
|
+
"settings.giteaTokenRefLabel": "Имя секрета для токена Gitea",
|
|
175
|
+
"settings.templateLabel": "Шаблон сообщения по умолчанию",
|
|
176
|
+
"settings.templateHint": "Применяется ко всем каналам без индивидуального шаблона. Пусто = стандартный встроенный текст.",
|
|
177
|
+
"settings.deliveryTimeoutMsLabel": "Таймаут доставки по каналу (мс)",
|
|
178
|
+
"settings.automationSection": "Модели автоматизации",
|
|
179
|
+
"settings.automationHint": "Модели для вспомогательных вызовов (оценка правил, экспресс-анализ сбоев). Оставьте пустым для использования модели задачи.",
|
|
180
|
+
"settings.silentRuleModelLabel": "Модель для фоновых правил",
|
|
181
|
+
"settings.secretsOnCard": "Учётные данные, на которые ссылается панель настроек, отображаются скрытыми и сохраняются по имени ссылки.",
|
|
182
|
+
"form.nextRunLabel": "Следующий запуск: ",
|
|
183
|
+
"form.notScheduled": "не запланировано",
|
|
184
|
+
"settings.loading": "Загрузка настроек…",
|
|
185
|
+
"settings.unavailable": "Настройки сейчас недоступны.",
|
|
186
|
+
"settings.retry": "Повторить",
|
|
187
|
+
"settings.cardTitle": "⏰ Планировщик задач (Cron)",
|
|
188
|
+
"settings.cardDesc": "Запуск задач по расписанию (cron/интервалы), фоновые сценарии агента и доставка отчётов в Telegram, Discord, Slack, ntfy, Bark, PushPlus, голос и Gitea.",
|
|
189
|
+
"settings.openPanel": "Открыть панель задач",
|
|
190
|
+
"settings.modalTitle": "Уведомления и каналы доставки",
|
|
191
|
+
"settings.tokenLabel": "Токен бота Telegram",
|
|
192
|
+
"settings.tokenPlaceholder": "123456789:ABCdefGhIJKlmNoPQRsTUVwxyZ",
|
|
193
|
+
"settings.tokenPlaceholderDefault": "Используется бот, настроенный в профиле DSH (или введите свой)",
|
|
194
|
+
"settings.defaultHint": "✓ Настроенный бот обнаружен в профиле DSH",
|
|
195
|
+
"settings.chatIdLabel": "ID чата в Telegram",
|
|
196
|
+
"settings.chatIdPlaceholder": "Например: 345678901",
|
|
197
|
+
"settings.kanbanUrlLabel": "Базовый URL Kanban",
|
|
198
|
+
"settings.globalNotify": "Глобально доставлять отчёты обо всех задачах в Telegram",
|
|
199
|
+
"settings.globalOnlyFailure": "Глобальный режим: только при ошибках (молчать при успехе)",
|
|
200
|
+
"settings.testTelegram": "🔔 Проверить доставку в Telegram",
|
|
201
|
+
"settings.testKanban": "📋 Проверить Kanban",
|
|
202
|
+
"settings.sending": "Отправка…",
|
|
203
|
+
"settings.checkingKanban": "Проверка Kanban…",
|
|
204
|
+
"settings.testOk": "✅ Тестовое сообщение доставлено в Telegram!",
|
|
205
|
+
"settings.testFail": "❌ {error}",
|
|
206
|
+
"settings.kanbanOk": "✅ Карточка Kanban создана",
|
|
207
|
+
"settings.kanbanFail": "❌ {error}",
|
|
208
|
+
"settings.save": "Сохранить настройки",
|
|
209
|
+
"settings.saved": "✓ Сохранено",
|
|
210
|
+
"settings.saveError": "Ошибка сохранения: {error}",
|
|
211
|
+
"settings.saveErrorUnknown": "неизвестная ошибка",
|
|
212
|
+
"dsh.modalTitle": "Планирование задачи с агентом DSH",
|
|
213
|
+
"dsh.descLabel": "Опишите задачу и желаемую периодичность:",
|
|
214
|
+
"dsh.placeholder": "Например: проверяй свободное место на диске и упавшие службы systemd каждые 2 часа и присылай алерт, только если что-то сломалось…",
|
|
215
|
+
"dsh.sendHint": "Ctrl+Enter для отправки",
|
|
216
|
+
"dsh.sendTitle": "Отправить агенту",
|
|
217
|
+
"dsh.startFailed": "Не удалось начать диалог с агентом: {error}",
|
|
218
|
+
"dsh.launchError": "Сбой запуска: {error}",
|
|
219
|
+
"confirm.delete": "Удалить эту задачу?",
|
|
220
|
+
"list.loadErrorPrefix": "Не удалось загрузить задачи",
|
|
221
|
+
"actions.dryRun": "Имитация",
|
|
222
|
+
"actions.dryRunTitle": "Имитация запуска (проверка выполнения без побочных эффектов и уведомлений)",
|
|
223
|
+
"actions.archive": "Архив",
|
|
224
|
+
"actions.archiveTitle": "Архив выполнений и журнал",
|
|
225
|
+
"dryRun.title": "🧪 Результат имитации запуска",
|
|
226
|
+
"dryRun.task": "Задача",
|
|
227
|
+
"dryRun.status": "Статус имитации",
|
|
228
|
+
"dryRun.duration": "Длительность",
|
|
229
|
+
"dryRun.output": "Результат вывода",
|
|
230
|
+
"dryRun.preflight": "Предварительная проверка",
|
|
231
|
+
"dryRun.close": "Закрыть",
|
|
232
|
+
"archive.title": "📜 Архив выполнения",
|
|
233
|
+
"archive.totalRuns": "Всего записей: {total}",
|
|
234
|
+
"archive.empty": "Для этой задачи пока нет архивных записей.",
|
|
235
|
+
"archive.loadMore": "Загрузить ещё ({shown} из {total})",
|
|
236
|
+
"archive.close": "Закрыть",
|
|
237
|
+
"form.reliabilityTitle": "🛡️ Надёжность, Heartbeat и самоисцеление",
|
|
238
|
+
"form.preflightLabel": "Предварительная проверка (Pre-flight)",
|
|
239
|
+
"form.preflightNone": "Отключена",
|
|
240
|
+
"form.preflightHttp": "HTTP (проверка кода 2xx)",
|
|
241
|
+
"form.preflightShell": "Shell-команда (код возврата 0)",
|
|
242
|
+
"form.preflightDisk": "Свободное место на диске (путь:мин%)",
|
|
243
|
+
"form.preflightTargetLabel": "Цель предварительной проверки",
|
|
244
|
+
"form.preflightTargetPlaceholder": "https://example.com/healthz или ls /data или /:10%",
|
|
245
|
+
"form.heartbeatIntervalLabel": "Интервал heartbeat (секунды, 0 = выкл)",
|
|
246
|
+
"form.gracePeriodLabel": "Льготный период heartbeat (секунды)",
|
|
247
|
+
"form.priorityLabel": "Приоритет в очереди (1-10, выше = раньше)",
|
|
248
|
+
"form.concurrencyGroupLabel": "Группа параллелизма (Concurrency Group)",
|
|
249
|
+
"form.selfHealingLabel": "Команда самоисцеления (Shell)",
|
|
250
|
+
"form.selfHealingPlaceholder": "systemctl restart app || true",
|
|
251
|
+
"form.autoDiagnoseLabel": "Автоматическая AI-диагностика сбоев",
|
|
252
|
+
"form.previewSchedule": "Рассчитать следующие запуски",
|
|
253
|
+
"form.previewScheduleTitle": "Следующие 5 запусков по расписанию:",
|
|
254
|
+
"list.next": " · след: {time}",
|
|
255
|
+
"recs.title": "Рекомендуемые задачи",
|
|
256
|
+
"recs.hint": "Готовые шаблоны задач. Нажатие открывает форму с заполненными полями — ничего не создаётся до сохранения.",
|
|
257
|
+
"modal.editTitle": "Редактирование задачи",
|
|
258
|
+
"modal.newTitle": "Новая задача по расписанию",
|
|
259
|
+
"modal.statusActive": "● Активна",
|
|
260
|
+
"modal.statusPaused": "○ На паузе",
|
|
261
|
+
"modal.params": "Параметры",
|
|
262
|
+
"modal.history": "История запусков ({count})",
|
|
263
|
+
"modal.cancel": "Отмена",
|
|
264
|
+
"modal.save": "Сохранить изменения",
|
|
265
|
+
"modal.create": "Создать задачу",
|
|
266
|
+
"modal.close": "Закрыть",
|
|
267
|
+
"history.loading": "Загрузка истории…",
|
|
268
|
+
"history.empty": "Запусков пока не зафиксировано",
|
|
269
|
+
"history.refresh": "Обновить историю",
|
|
270
|
+
"history.statusSuccess": "Успешно",
|
|
271
|
+
"history.statusSkipped": "Пропущено",
|
|
272
|
+
"history.statusMissed": "Пропущено (простой)",
|
|
273
|
+
"history.statusTimeout": "Таймаут",
|
|
274
|
+
"history.statusFailed": "Ошибка",
|
|
275
|
+
"form.typeScript": "Shell-команда / скрипт",
|
|
276
|
+
"form.typeNode": "Node.js",
|
|
277
|
+
"form.typePython": "Python",
|
|
278
|
+
"form.typeSsh": "Удалённый SSH",
|
|
279
|
+
"form.typeDocker": "Контейнер Docker",
|
|
280
|
+
"form.typeSkill": "Навык DSH (Skill)",
|
|
281
|
+
"form.typeWorkflow": "Рабочий процесс (Workflow)",
|
|
282
|
+
"form.envLabel": "Переменные окружения (КЛЮЧ=ЗНАЧЕНИЕ в строке)",
|
|
283
|
+
"form.envPlaceholder": "NODE_ENV=production\nTZ=Europe/Moscow",
|
|
284
|
+
"form.envHint": "Применяется только для сред без LLM. Не храните здесь секреты.",
|
|
285
|
+
"form.cwdLabel": "Рабочий каталог (необязательно)",
|
|
286
|
+
"form.workspaceLabel": "ID или путь рабочего пространства (необязательно)",
|
|
287
|
+
"form.worktreeLabel": "Запускать в изолированном git worktree",
|
|
288
|
+
"form.keepWorktreeLabel": "Сохранять worktree после завершения запуска",
|
|
289
|
+
"form.httpMethodLabel": "HTTP-метод",
|
|
290
|
+
"form.httpUrlLabel": "URL",
|
|
291
|
+
"form.httpHeadersLabel": "Заголовки (JSON, необязательно)",
|
|
292
|
+
"form.httpBodyLabel": "Тело запроса (необязательно)",
|
|
293
|
+
"form.sshProfileLabel": "Профиль dsh-remote-workspace",
|
|
294
|
+
"form.sshProfileHint": "Рекомендуется: хост и реквизиты доступа берутся из плагина remote-workspace.",
|
|
295
|
+
"form.sshTargetLabel": "Резервный адрес хоста (user@host, необязательно)",
|
|
296
|
+
"form.sshKeyLabel": "Путь к закрытому ключу (резервный, необязательно)",
|
|
297
|
+
"form.dockerImageLabel": "Образ контейнера",
|
|
298
|
+
"form.skillNameLabel": "Имя навыка",
|
|
299
|
+
"form.workflowNameLabel": "Имя рабочего процесса",
|
|
300
|
+
"form.scheduleLabel": "Расписание (cron или интервал)",
|
|
301
|
+
"form.schedulePlaceholder": "0 */6 * * * или every 2h или in 30m или at: 2026-09-05T15:00:00Z",
|
|
302
|
+
"form.timeoutLabel": "Таймаут выполнения (секунды)",
|
|
303
|
+
"form.overlapLabel": "Политика наложения запусков",
|
|
304
|
+
"form.overlapSkip": "Пропустить новый запуск (skip)",
|
|
305
|
+
"form.overlapQueue": "Поставить следующий запуск в очередь (queue)",
|
|
306
|
+
"form.overlapReplace": "Отменить текущий запуск и перезапустить (replace)",
|
|
307
|
+
"form.kanbanLabel": "Создание карточек в Kanban (dsh-kanban)",
|
|
308
|
+
"form.kanbanNone": "Не создавать карточки (отключено)",
|
|
309
|
+
"form.kanbanOnFailure": "Создавать карточку при сбое (в Backlog)",
|
|
310
|
+
"form.kanbanAlways": "Создавать карточку при каждом завершении (Done / Backlog)",
|
|
311
|
+
"form.providerLabel": "Провайдер LLM",
|
|
312
|
+
"form.providerDefault": "По умолчанию (DSH)",
|
|
313
|
+
"form.silentRuleLabel": "Правило подавления уведомлений (Silent rule, необязательно)",
|
|
314
|
+
"form.silentRulePlaceholder": "Молчать, если ни одна файловая система не заполнена более чем на 80%",
|
|
315
|
+
"form.silentRuleHint": "Для задач с выводом: легковесная модель оценивает результат по этому правилу и пропускает отчёт, если предписано молчать. При сбое модели отчёт доставляется.",
|
|
316
|
+
"history.silentSkip": "подавлено по правилу:",
|
|
317
|
+
"history.diagnosis": "Диагностика",
|
|
318
|
+
"history.applySuggestion": "Открыть форму редактирования с этой рекомендацией",
|
|
319
|
+
"form.inspectOnFailureLabel": "Диагностировать сбои с помощью модели",
|
|
320
|
+
"form.inspectOnFailureHint": "После сбоя модель анализирует промпт, ошибку и вывод, сохраняя диагноз и предлагаемые правки промпта вместе с запуском. Изменения не применяются автоматически.",
|
|
321
|
+
"settings.inspectorModelLabel": "Модель для диагностики сбоев"
|
|
322
|
+
}
|
|
323
|
+
}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
{
|
|
2
|
+
"@goodandready/dsh-live-canvas": {
|
|
3
|
+
"title": "Интерактивный холст (Live Canvas)",
|
|
4
|
+
"description": "Интерактивный холст в браузере для предпросмотра HTML (с Tailwind CSS и иконками Lucide), React-компонентов, SVG и диаграмм в реальном времени: обнаружение файлов воркспейса, переключение сессий, контролы параметров props, визуальный diff, матрица устройств, AI-мок-данные, экспорт проекта Vite в 1 клик и интеграция с Better Sidebar.",
|
|
5
|
+
"defaultViewport": "Область просмотра по умолчанию",
|
|
6
|
+
"defaultViewportDesc": "Начальный размер экрана фрейма для живого предпросмотра",
|
|
7
|
+
"responsive": "Адаптивный",
|
|
8
|
+
"mobile": "Смартфон (375px)",
|
|
9
|
+
"tablet": "Планшет (768px)",
|
|
10
|
+
"desktop": "Десктоп (1280px)",
|
|
11
|
+
"matrix": "Матрица устройств",
|
|
12
|
+
"autoOpen": "Автооткрытие холста",
|
|
13
|
+
"autoOpenDesc": "Автоматически открывать холст предпросмотра при создании агентом HTML или React компонентов",
|
|
14
|
+
"enableHotReload": "Включить горячую перезагрузку (SSE Hot-Reload)",
|
|
15
|
+
"enableHotReloadDesc": "Мгновенное обновление предпросмотра при изменении компонентов",
|
|
16
|
+
"maxSessions": "Макс. кэшированных сессий",
|
|
17
|
+
"maxSessionsDesc": "Количество активных сессий предпросмотра, удерживаемых в памяти",
|
|
18
|
+
"save": "Сохранить изменения",
|
|
19
|
+
"saved": "Настройки успешно сохранены",
|
|
20
|
+
"saveError": "Не удалось сохранить настройки",
|
|
21
|
+
"loading": "Загрузка…",
|
|
22
|
+
"unavailable": "Служба настроек недоступна",
|
|
23
|
+
"inspectBtn": "Инспектор",
|
|
24
|
+
"inspectingBtn": "Инспекция…",
|
|
25
|
+
"refreshBtn": "Обновить",
|
|
26
|
+
"openTabBtn": "В новой вкладке",
|
|
27
|
+
"exportBtn": "Экспорт",
|
|
28
|
+
"packBtn": "Собрать Vite-проект",
|
|
29
|
+
"annotateBtn": "Аннотации",
|
|
30
|
+
"drawingBtn": "Рисование…",
|
|
31
|
+
"notesCount": "заметок",
|
|
32
|
+
"controlsBtn": "Параметры",
|
|
33
|
+
"compareBtn": "Сравнить",
|
|
34
|
+
"matrixBtn": "Матрица",
|
|
35
|
+
"openFileBtn": "Файлы",
|
|
36
|
+
"browseFilesBtn": "Обзор",
|
|
37
|
+
"mockBadge": "Mock API",
|
|
38
|
+
"themeLight": "Светлая",
|
|
39
|
+
"themeDark": "Тёмная",
|
|
40
|
+
"sessionsGroup": "⚡ Активные сессии",
|
|
41
|
+
"workspaceFilesGroup": "📂 Файлы рабочего пространства",
|
|
42
|
+
"searchPlaceholder": "🔍 Поиск файлов проекта (напр. preview.html)…",
|
|
43
|
+
"customPathPlaceholder": "Или введите путь…",
|
|
44
|
+
"openActionBtn": "Открыть",
|
|
45
|
+
"choosePlaceholder": "⚡ Выберите файл или сессию…",
|
|
46
|
+
"noFilesFound": "Фронтенд-файлы (.html, .jsx, .tsx, .svg, .md) не найдены.",
|
|
47
|
+
"noControls": "Для этого компонента не объявлены интерактивные параметры props.",
|
|
48
|
+
"noLogs": "Журнал телеметрии пока пуст.",
|
|
49
|
+
"syncScroll": "Синхронная прокрутка",
|
|
50
|
+
"selectedLabel": "Выбрано",
|
|
51
|
+
"sidebarTab": "Live Canvas",
|
|
52
|
+
"errCount": "ошибок",
|
|
53
|
+
"aiPromptBtn": "✨ AI Доработка",
|
|
54
|
+
"aiPromptModalTitle": "Доработка элемента с помощью ИИ",
|
|
55
|
+
"aiPromptDesc": "Опишите, что нужно изменить в компоненте, или выберите готовый пресет:",
|
|
56
|
+
"aiPromptPlaceholder": "Например: Сделай эту карточку в стиле glassmorphism, добавь светящуюся рамку и настрой отступы для мобильных…",
|
|
57
|
+
"aiSubmitBtn": "Отправить задачу агенту",
|
|
58
|
+
"aiSentSuccess": "Задача отправлена! Холст обновится автоматически по завершении.",
|
|
59
|
+
"presetGlass": "💎 Глассморфизм и неоновое свечение",
|
|
60
|
+
"presetModern": "⚡ Минималистичная типографика и аккуратные отступы",
|
|
61
|
+
"presetBadge": "🔥 Бейдж скидки и анимированная кнопка действия",
|
|
62
|
+
"presetMobile": "📱 Оптимизация адаптивности под смартфоны",
|
|
63
|
+
"blocksBtn": "✨ Блоки",
|
|
64
|
+
"storybookBtn": "🧩 UI Kit",
|
|
65
|
+
"reorderBtn": "↕️ Перестановка",
|
|
66
|
+
"codeBtn": "💻 Код",
|
|
67
|
+
"codeDrawerTitle": "Исходный код",
|
|
68
|
+
"codeDrawerSync": "Правки синхронизируются в реальном времени",
|
|
69
|
+
"codeDrawerLive": "● Живая синхронизация",
|
|
70
|
+
"blocksModalTitle": "✨ Каталог современных дизайн-блоков",
|
|
71
|
+
"insertBlockBtn": "Вставить блок",
|
|
72
|
+
"reorderOnToast": "Режим Drag & Drop включён: перетаскивайте секции для изменения порядка",
|
|
73
|
+
"reorderOffToast": "Режим Drag & Drop отключён",
|
|
74
|
+
"blockInsertedToast": "Блок успешно вставлен",
|
|
75
|
+
"codeSyncedToast": "Код синхронизирован",
|
|
76
|
+
"themesLabel": "🎨 Тема оформления",
|
|
77
|
+
"mockBtn": "⚡ Мок-данные",
|
|
78
|
+
"shareBtn": "📱 QR-предпросмотр",
|
|
79
|
+
"shareModalTitle": "📱 Мобильный предпросмотр по QR-коду",
|
|
80
|
+
"shareModalDesc": "Отсканируйте камерой смартфона в локальной Wi-Fi сети:",
|
|
81
|
+
"copyShareLink": "Скопировать ссылку",
|
|
82
|
+
"mockPopulatedToast": "Набор мок-данных загружен в песочницу",
|
|
83
|
+
"themeAppliedToast": "Тема дизайн-системы применена",
|
|
84
|
+
"blueprintBtn": "📐 Скетч / Wireframe",
|
|
85
|
+
"artifactsBtn": "📋 Артефакты",
|
|
86
|
+
"artifactsModalTitle": "📋 Генератор интерактивных HTML-артефактов",
|
|
87
|
+
"wireframeArtifact": "📐 Low-Fi скетч / вайрфрейм",
|
|
88
|
+
"planArtifact": "📋 Интерактивная дорожная карта",
|
|
89
|
+
"diagramArtifact": "📊 Интерактивная диаграмма архитектуры",
|
|
90
|
+
"prototypeArtifact": "🧪 Многошаговый прототип",
|
|
91
|
+
"crudArtifact": "🗄️ Дашборд Retool / CRUD",
|
|
92
|
+
"resolveAnnotationBtn": "✓ Решено",
|
|
93
|
+
"annotationResolvedToast": "Аннотация помечена как решённая",
|
|
94
|
+
"deployBtn": "🌍 Деплой",
|
|
95
|
+
"timetravelBtn": "⏳ Таймлайн",
|
|
96
|
+
"soundBtn": "🔊 Звук",
|
|
97
|
+
"deployModalTitle": "🌍 Мгновенная публикация в Web",
|
|
98
|
+
"cancelBtn": "Отмена",
|
|
99
|
+
"consoleBtn": "Консоль",
|
|
100
|
+
"consoleDrawerTitle": "Мини-консоль и журнал выполнения",
|
|
101
|
+
"consoleClearBtn": "Очистить",
|
|
102
|
+
"consoleFilterAll": "Все",
|
|
103
|
+
"consoleFilterErrors": "Ошибки",
|
|
104
|
+
"consoleFilterWarnings": "Предупреждения",
|
|
105
|
+
"consoleFilterLogs": "Логи",
|
|
106
|
+
"noConsoleLogs": "Вывод консоли пока не зафиксирован.",
|
|
107
|
+
"tweakerBarTitle": "Редактор стилей",
|
|
108
|
+
"tweakText": "Текст",
|
|
109
|
+
"tweakPadding": "Отступы",
|
|
110
|
+
"tweakRadius": "Скругление",
|
|
111
|
+
"tweakEdit": "Инлайн-правка",
|
|
112
|
+
"stateDefault": "Обычное",
|
|
113
|
+
"stateLoading": "Загрузка",
|
|
114
|
+
"stateEmpty": "Пусто",
|
|
115
|
+
"stateError": "Ошибка",
|
|
116
|
+
"stateOverflow": "Переполнение",
|
|
117
|
+
"snapshotBtn": "Снимок экрана",
|
|
118
|
+
"snapshotCapturedToast": "Снимок интерфейса сохранён и готов к анализу моделью.",
|
|
119
|
+
"standaloneExportBtn": "Один HTML-файл"
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
{
|
|
2
|
+
"dsh-grok-xsearch": {
|
|
3
|
+
"plugin_title": "Grok X Search",
|
|
4
|
+
"plugin_subtitle": "Поиск в реальном времени и аналитика X (Twitter) на базе xAI Grok",
|
|
5
|
+
"api_key": "Ключ API xAI",
|
|
6
|
+
"api_key_placeholder": "xai-...",
|
|
7
|
+
"api_key_hint": "Ключ API xAI. Если поле пустое, используется переменная окружения XAI_API_KEY.",
|
|
8
|
+
"model": "Модель поиска",
|
|
9
|
+
"model_hint": "Модель xAI для обобщения и синтеза поисковой выдачи.",
|
|
10
|
+
"max_results": "Макс. результатов поиска",
|
|
11
|
+
"max_results_hint": "Максимальное количество твитов или постов, возвращаемых за один поисковый запрос (1–50).",
|
|
12
|
+
"enable_news": "Включить агрегацию новостей X",
|
|
13
|
+
"enable_news_hint": "Позволяет модели обобщать актуальные тренды новостей и медиа-повестки.",
|
|
14
|
+
"enable_deep_search": "Режим углублённого поиска (Deep Search)",
|
|
15
|
+
"enable_deep_search_hint": "Выполняет многошаговые поисковые проходы для всестороннего анализа темы.",
|
|
16
|
+
"save_settings": "Сохранить настройки",
|
|
17
|
+
"settings_saved": "Настройки успешно сохранены",
|
|
18
|
+
"save_error": "Ошибка при сохранении настроек",
|
|
19
|
+
"status_active": "Активен",
|
|
20
|
+
"status_no_key": "API-ключ не задан",
|
|
21
|
+
"status_error": "Ошибка подключения",
|
|
22
|
+
"search_tab": "Поиск в X",
|
|
23
|
+
"search_placeholder": "Поиск трендов, аккаунтов или тем в X...",
|
|
24
|
+
"search_btn": "Найти",
|
|
25
|
+
"searching": "Поиск в X…",
|
|
26
|
+
"no_results": "По вашему запросу ничего не найдено в X.",
|
|
27
|
+
"results_count": "Найдено результатов: {count}",
|
|
28
|
+
"sentiment_positive": "Позитивная тональность",
|
|
29
|
+
"sentiment_neutral": "Нейтральная тональность",
|
|
30
|
+
"sentiment_negative": "Негативная тональность",
|
|
31
|
+
"posted_at": "Опубликовано {time}",
|
|
32
|
+
"reposts": "Репостов",
|
|
33
|
+
"likes": "Лайков",
|
|
34
|
+
"author": "Автор",
|
|
35
|
+
"advanced_settings": "Расширенные настройки",
|
|
36
|
+
"timeout_seconds": "Таймаут поиска (сек)",
|
|
37
|
+
"timeout_hint": "Максимальное время ожидания ответа перед отменой (по умолчанию: 180 с).",
|
|
38
|
+
"retries": "Макс. попыток",
|
|
39
|
+
"retries_hint": "Количество повторных попыток при сетевых сбоях (по умолчанию: 2).",
|
|
40
|
+
"cache_ttl_seconds": "Время жизни кэша (сек)",
|
|
41
|
+
"cache_ttl_hint": "Длительность хранения результатов в кэше запросов (по умолчанию: 300 с).",
|
|
42
|
+
"base_url": "Базовый URL API",
|
|
43
|
+
"base_url_hint": "Конечная точка xAI API (по умолчанию: https://api.x.ai/v1).",
|
|
44
|
+
"redirect_uri": "URL перенаправления OAuth",
|
|
45
|
+
"redirect_uri_hint": "Локальный URL обратного вызова OAuth (по умолчанию: http://127.0.0.1:56121/callback).",
|
|
46
|
+
"sec_auth_title": "🔑 Аутентификация и доступ к SuperGrok",
|
|
47
|
+
"sec_auth_desc": "Токен подключения OAuth безопасно хранится в службе Credentials DSH и обновляется автоматически.",
|
|
48
|
+
"sec_model_title": "🧠 Настройка модели и отказоустойчивости",
|
|
49
|
+
"sec_model_desc": "Выбор модели xAI для синтеза поисковой выдачи и автоматический переход на резервную при лимитах.",
|
|
50
|
+
"sec_cache_title": "⚡ Производительность и кэш запросов",
|
|
51
|
+
"sec_cache_desc": "Кэш запросов LRU в оперативной памяти исключает дублирующие вызовы API и ускоряет повторные поиски.",
|
|
52
|
+
"title": "Grok X Search & Intelligence Suite",
|
|
53
|
+
"subtitle": "Real-time X (Twitter) search, author profiling, trends, and fact-checking powered by SuperGrok OAuth.",
|
|
54
|
+
"ready_msg": "Ready for x_search, x_author_profile, x_trending_topics, and x_fact_check_notes tools in chat.",
|
|
55
|
+
"not_connected_msg": "Connect your SuperGrok account to enable X intelligence tools.",
|
|
56
|
+
"connected": "Connected",
|
|
57
|
+
"not_connected": "Not connected",
|
|
58
|
+
"connect": "Connect",
|
|
59
|
+
"reconnect": "Reconnect",
|
|
60
|
+
"disconnect": "Disconnect",
|
|
61
|
+
"saving": "Saving…",
|
|
62
|
+
"auto_fallback": "Auto-fallback to Grok 4.5 on Rate Limits (429)",
|
|
63
|
+
"enable_cache": "Enable in-memory query caching (5 min)",
|
|
64
|
+
"cache_stats": "Cached queries",
|
|
65
|
+
"clear_cache": "Clear cache",
|
|
66
|
+
"cache_cleared": "Cache cleared",
|
|
67
|
+
"browser_no_return": "Browser did not return here? Paste the redirected URL",
|
|
68
|
+
"paste_hint": "Paste the full URL from the browser address bar after sign-in.",
|
|
69
|
+
"submit": "Submit",
|
|
70
|
+
"cancel": "Cancel",
|
|
71
|
+
"supergrok_account": "SuperGrok account",
|
|
72
|
+
"grok_client_id": "Grok Client ID",
|
|
73
|
+
"client_id_hint": "OAuth Client ID from your SuperGrok / xAI developer portal.",
|
|
74
|
+
"loading": "Loading…",
|
|
75
|
+
"enabled_plugin": "Enable Grok X Search plugin"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"dsh-goal": {
|
|
3
|
+
"goalLabel": "Текущая цель",
|
|
4
|
+
"goalCompleted": "Цель достигнута",
|
|
5
|
+
"clearGoal": "Очистить цель",
|
|
6
|
+
"closeBanner": "Закрыть баннер цели",
|
|
7
|
+
"pause": "Пауза",
|
|
8
|
+
"paused": "Приостановлено",
|
|
9
|
+
"resume": "Возобновить",
|
|
10
|
+
"details": "Развернуть детали цели",
|
|
11
|
+
"modalTitle": "План и статус цели",
|
|
12
|
+
"modalTitleCompleted": "Цель выполнена: план и результаты",
|
|
13
|
+
"time": "Время выполнения",
|
|
14
|
+
"eta": "Оценка времени (ETA)",
|
|
15
|
+
"tokens": "Токены",
|
|
16
|
+
"iterations": "Итерации",
|
|
17
|
+
"progress": "Прогресс",
|
|
18
|
+
"done": "Выполнено",
|
|
19
|
+
"milestones": "План работы:",
|
|
20
|
+
"noMilestones": "Агент формирует план работы…",
|
|
21
|
+
"close": "Закрыть",
|
|
22
|
+
"pluginTitle": "Автономный режим целей (Goal Mode)",
|
|
23
|
+
"pluginDesc": "Баннер цели над полем ввода, декомпозиция задач и автопилот",
|
|
24
|
+
"maxIterLabel": "Макс. итераций (лимит безопасности):",
|
|
25
|
+
"autoDriveLabel": "Автопилот: непрерывное автономное выполнение цикла",
|
|
26
|
+
"soundLabel": "Звуковой сигнал при завершении цели",
|
|
27
|
+
"quickLaunchLabel": "Кнопка быстрого запуска цели над полем ввода",
|
|
28
|
+
"quickLaunch": "Начать цель",
|
|
29
|
+
"quickLaunchTitle": "Быстрый запуск цели",
|
|
30
|
+
"quickLaunchDesc": "Сформулируйте задачу для автономной работы агента:",
|
|
31
|
+
"quickLaunchPlaceholder": "Например: Реализовать экспорт отчёта и покрыть юнит-тестами…",
|
|
32
|
+
"startGoal": "Запустить цель",
|
|
33
|
+
"copyReport": "📋 Скопировать отчёт в Markdown",
|
|
34
|
+
"reportCopied": "✅ Скопировано!",
|
|
35
|
+
"save": "Сохранить",
|
|
36
|
+
"saving": "Сохранение…",
|
|
37
|
+
"discard": "Сбросить изменения",
|
|
38
|
+
"resetField": "По умолчанию",
|
|
39
|
+
"overridden": "переопределено",
|
|
40
|
+
"saveFailed": "Не удалось сохранить — исправьте значения и повторите",
|
|
41
|
+
"loading": "Загрузка настроек…",
|
|
42
|
+
"unavailable": "Настройки недоступны",
|
|
43
|
+
"localeCode": "ru",
|
|
44
|
+
"copyPRComment": "🐙 Скопировать для GitHub PR",
|
|
45
|
+
"prCommentCopied": "✅ Отчёт для PR скопирован!",
|
|
46
|
+
"nudgePlaceholder": "💡 Уточнить задачу или скорректировать агента…",
|
|
47
|
+
"sendNudge": "Подрулить",
|
|
48
|
+
"nudgeSent": "✅ Уточнение отправлено!",
|
|
49
|
+
"copyGitDiff": "Нажмите, чтобы скопировать команду git diff",
|
|
50
|
+
"toolFailLabel": "Лимит автопаузы при сбоях инструментов:",
|
|
51
|
+
"toolFailHint": "Приостанавливать цель, если N ходов подряд завершаются ошибками инструментов (0 — выкл)",
|
|
52
|
+
"notifLabel": "Нативные уведомления на рабочем столе браузера при завершении"
|
|
53
|
+
}
|
|
54
|
+
}
|