feat: load plugin frontends at runtime and remove plugin ids from the shell

This commit is contained in:
LukeGus committed 2026-09-22 20:15:52 -05:00
1 parent 49f0286a14
commit e88d5a52e3
721 files changed
+54265 -44416

No files matched your search

@@ -0,0 +1,149 @@
{
"newUi": {
"sidebar": {
"automations": {
"title": "Автоматизация",
"tabAutomations": "Автоматизация",
"tabRuns": "Беги",
"tabChannels": "Каналы",
"createAutomation": "Новая автоматизация",
"backToAutomations": "Назад к автоматизации",
"createTitle": "Новая автоматизация",
"editTitle": "Редактировать автоматизацию",
"empty": "Автоматизации пока нет. Создайте автоматизацию, которая будет реагировать на показатель, расписание или событие.",
"emptyRuns": "Пока ни одного заезда.",
"emptyChannels": "Каналов пока нет. Добавьте канал, чтобы отправлять уведомления куда-нибудь.",
"noChannelsHint": "Каналы пока не созданы. Добавьте его на вкладке «Каналы».",
"addChannel": "Добавить канал",
"testChannel": "Тест",
"channelTestSent": "Уведомление о тестировании отправлено.",
"channelTestFailed": "Тестовое уведомление не удалось.",
"channelDeleted": "Канал удален",
"deleteChannelConfirm": "Удалить этот канал? Тогда автоматизация, использующая его, перестанет отправлять уведомления.",
"nameLabel": "Имя",
"namePlaceholder": "Например, очищать каталог /data, когда он заполняется.",
"nameRequired": "Имя обязательно для указания.",
"descriptionLabel": "Описание",
"descriptionPlaceholder": "Дополнительное описание",
"enabledLabel": "Включено",
"concurrencyLabel": "Если он уже запущен",
"concurrencyHint": "Что делать, если это снова произойдет до завершения последнего запуска?",
"concurrency": {
"skip": "Пропустите новый запуск",
"queue": "Подожди и беги после",
"allow": "Запустите оба одновременно."
},
"save": "Сохранять",
"created": "Создана автоматизация",
"updated": "Автоматизация спасла",
"deleted": "Автоматизация удалена",
"deleteConfirm": "Удалить эту автоматизацию? История её выполнения также будет удалена.",
"runNow": "Запустите сейчас",
"testRun": "Тестовый запуск",
"testRunHint": "Программа выполняет каждый этап, но не затрагивает ничего за пределами Termix.",
"runStarted": "Запуск начался",
"runFinished": "Выполнение завершено: {{status}}",
"trigger": "Курок",
"steps": "Шаги",
"addStep": "Добавить шаг",
"removeStep": "Удалить шаг",
"moveUp": "Поднимитесь выше",
"moveDown": "Спуститесь вниз",
"noSteps": "Шагов пока нет. Добавьте один, чтобы указать, что должно произойти.",
"webhookTokenTitle": "URL веб-перехватчика",
"webhookTokenDescription": "Эта информация отображается только один раз. Сохраните её сейчас, позже восстановить её будет невозможно.",
"copy": "Копия",
"copied": "Скопировано",
"viewJson": "JSON",
"viewBuilder": "Строитель",
"viewGraph": "График",
"lastRun": "Последний забег",
"never": "Никогда",
"duration": "{{seconds}}с",
"stepOutput": "Выход",
"stepError": "Ошибка",
"dryRunBadge": "Тестовый запуск",
"hostSelector": {
"trigger": "Запуск хоста",
"host": "Конкретный хост",
"fleet": "Флот",
"all": "Все хосты"
},
"triggerKinds": {
"metric_threshold": "Пороговое значение метрики",
"host_status": "Хост переходит в режим повышения или понижения.",
"health_check": "Изменения в результатах медицинского осмотра",
"schedule": "По расписанию",
"docker_event": "Событие контейнера",
"internal_event": "Мероприятие Termix",
"webhook": "Входящий веб-хук"
},
"stepTypes": {
"notify": "Отправить уведомление",
"http": "Вызов URL-адреса",
"run_snippet": "Запустить фрагмент кода",
"run_command": "Выполните команду",
"docker": "Управлять контейнером",
"tunnel": "Контролировать туннель",
"wol": "Разбудить хозяина",
"wait": "Ждать",
"set_var": "Задайте переменную",
"if": "Если / в противном случае",
"run_automation": "Запустите еще одну автоматизацию",
"stop": "Останавливаться"
},
"statuses": {
"running": "Бег",
"success": "Успех",
"failed": "Неуспешный",
"timeout": "Время истекло",
"skipped": "Пропущено",
"cancelled": "Отменено"
},
"fields": {
"host": "Хозяин",
"metric": "Метрика",
"mount": "Маунт-Пойнт",
"operator": "Является",
"value": "Ценить",
"forSeconds": "Длительность (секунды)",
"cooldown": "Время восстановления (минуты)",
"cron": "Выражение Cron",
"intervalSeconds": "Каждые (секунды)",
"timezone": "Часовой пояс",
"timezoneServer": "Время сервера",
"timezoneHint": "В этой зоне считываются временные параметры Cron. Это не относится к интервальным расписаниям.",
"container": "Контейнер",
"command": "Командование",
"url": "URL",
"method": "Метод",
"body": "Тело",
"channels": "Каналы",
"title": "Заголовок",
"message": "Сообщение",
"snippet": "Фрагмент",
"seconds": "Секунды",
"conditionLeftPlaceholder": "Значение для проверки",
"conditionRightPlaceholder": "Сравните с",
"variableName": "Имя переменной",
"variableValue": "Ценить",
"elevated": "Запустить с правами суперпользователя (sudo)",
"onError": "Если это не поможет",
"allowPrivateNetwork": "Разрешить использование локальных сетевых адресов",
"allowPrivateNetworkHint": "Необходим для самостоятельного размещения сервиса в вашей локальной сети. По умолчанию отключен, чтобы предотвратить запросы к внутренним адресам."
},
"onError": {
"stop": "Остановить бег",
"continue": "Продолжать"
}
}
}
},
"nav": {
"automations": "Автоматизация"
},
"onboarding": {
"feature_automations": "Автоматизация",
"feature_automations_desc": "Запускайте шаги автоматически при возникновении событий и получайте уведомления."
}
}