Rename profiles to automations across backend and frontend

Rename the "profiles" entity to "automations" throughout the entire
codebase for clarity. Updates Python models, storage, API routes/schemas,
engine, frontend JS modules, HTML templates, CSS classes, i18n keys
(en/ru/zh), dashboard, tutorials, and command palette.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-02-28 18:01:39 +03:00
parent da3e53e1f1
commit 21248e2dc9
39 changed files with 1180 additions and 1179 deletions

View File

@@ -220,10 +220,10 @@
"calibration.tip.skip_leds_start": "Пропуск LED в начале ленты — пропущенные LED остаются выключенными",
"calibration.tip.skip_leds_end": "Пропуск LED в конце ленты — пропущенные LED остаются выключенными",
"tour.welcome": "Добро пожаловать в LED Grab! Этот краткий тур познакомит вас с интерфейсом. Используйте стрелки или кнопки для навигации.",
"tour.dashboard": "Дашборд — обзор запущенных целей, профилей и состояния устройств.",
"tour.dashboard": "Дашборд — обзор запущенных целей, автоматизаций и состояния устройств.",
"tour.targets": "Цели — добавляйте WLED-устройства, настраивайте LED-цели с захватом и калибровкой.",
"tour.sources": "Источники — управление шаблонами захвата, источниками изображений, звука и цветовых полос.",
"tour.profiles": "Профили — группируйте цели и автоматизируйте переключение по расписанию, звуку или значениям.",
"tour.automations": "Автоматизации — автоматизируйте переключение сцен по расписанию, звуку или значениям.",
"tour.settings": "Настройки — резервное копирование и восстановление конфигурации.",
"tour.api": "API Документация — интерактивная документация REST API на базе Swagger.",
"tour.search": "Поиск — быстрый поиск и переход к любому объекту по Ctrl+K.",
@@ -234,7 +234,7 @@
"tour.dash.perf": "Производительность — графики FPS в реальном времени, метрики задержки и интервал опроса.",
"tour.dash.running": "Запущенные цели — метрики стриминга и быстрая остановка.",
"tour.dash.stopped": "Остановленные цели — готовы к запуску одним нажатием.",
"tour.dash.profiles": "Профили — статус активных профилей и быстрое включение/выключение.",
"tour.dash.automations": "Автоматизации — статус активных автоматизаций и быстрое включение/выключение.",
"tour.tgt.led_tab": "LED — стандартные LED-цели с настройкой устройств и цветовых полос.",
"tour.tgt.devices": "Устройства — ваши WLED-контроллеры, найденные в сети.",
"tour.tgt.css": "Цветовые полосы — определите, как области экрана соответствуют сегментам LED.",
@@ -245,10 +245,10 @@
"tour.src.static": "Статичные изображения — тестируйте настройку с файлами изображений.",
"tour.src.processed": "Обработка — применяйте эффекты: размытие, яркость, цветокоррекция.",
"tour.src.audio": "Аудио — анализ микрофона или системного звука для реактивных LED-эффектов.",
"tour.src.value": "Значения — числовые источники данных для условий автоматизации профилей.",
"tour.prof.list": "Профили — автоматизируйте управление целями по времени, звуку или значениям.",
"tour.prof.add": "Нажмите + для создания нового профиля с целями и условиями активации.",
"tour.prof.card": "Каждая карточка показывает статус профиля, условия и кнопки управления.",
"tour.src.value": "Значения — числовые источники данных для условий автоматизаций.",
"tour.auto.list": "Автоматизации — автоматизируйте активацию сцен по времени, звуку или значениям.",
"tour.auto.add": "Нажмите + для создания новой автоматизации с условиями и сценой для активации.",
"tour.auto.card": "Каждая карточка показывает статус автоматизации, условия и кнопки управления.",
"calibration.tutorial.start": "Начать обучение",
"calibration.overlay_toggle": "Оверлей",
"calibration.start_position": "Начальная Позиция:",
@@ -531,7 +531,7 @@
"dashboard.device": "Устройство",
"dashboard.stop_all": "Остановить все",
"dashboard.failed": "Не удалось загрузить обзор",
"dashboard.section.profiles": "Профили",
"dashboard.section.automations": "Автоматизации",
"dashboard.section.scenes": "Пресеты сцен",
"dashboard.targets": "Цели",
"dashboard.section.performance": "Производительность системы",
@@ -541,83 +541,83 @@
"dashboard.perf.unavailable": "недоступно",
"dashboard.perf.color": "Цвет графика",
"dashboard.poll_interval": "Интервал обновления",
"profiles.title": "Профили",
"profiles.empty": "Профили не настроены. Создайте профиль для автоматизации целей.",
"profiles.add": "Добавить профиль",
"profiles.edit": "Редактировать профиль",
"profiles.delete.confirm": "Удалить профиль \"{name}\"?",
"profiles.name": "Название:",
"profiles.name.hint": "Описательное имя для профиля",
"profiles.enabled": "Включён:",
"profiles.enabled.hint": "Отключённые профили не активируются даже при выполнении условий",
"profiles.condition_logic": "Логика условий:",
"profiles.condition_logic.hint": "Как объединяются несколько условий: ЛЮБОЕ (ИЛИ) или ВСЕ (И)",
"profiles.condition_logic.or": "Любое условие (ИЛИ)",
"profiles.condition_logic.and": "Все условия (И)",
"profiles.conditions": "Условия:",
"profiles.conditions.hint": "Правила, определяющие когда профиль активируется",
"profiles.conditions.add": "Добавить условие",
"profiles.conditions.empty": "Нет условий — профиль всегда активен когда включён",
"profiles.condition.always": "Всегда",
"profiles.condition.always.hint": "Профиль активируется сразу при включении и остаётся активным. Используйте для автозапуска целей при старте сервера.",
"profiles.condition.application": "Приложение",
"profiles.condition.application.apps": "Приложения:",
"profiles.condition.application.apps.hint": "Имена процессов, по одному на строку (например firefox.exe)",
"profiles.condition.application.browse": "Обзор",
"profiles.condition.application.search": "Фильтр процессов...",
"profiles.condition.application.no_processes": "Процессы не найдены",
"profiles.condition.application.match_type": "Тип соответствия:",
"profiles.condition.application.match_type.hint": "Как определять наличие приложения",
"profiles.condition.application.match_type.running": "Запущено",
"profiles.condition.application.match_type.topmost": "На переднем плане",
"profiles.condition.application.match_type.topmost_fullscreen": "На переднем плане + Полный экран",
"profiles.condition.application.match_type.fullscreen": "Полный экран",
"profiles.condition.time_of_day": "Время суток",
"profiles.condition.time_of_day.start_time": "Время начала:",
"profiles.condition.time_of_day.end_time": "Время окончания:",
"profiles.condition.time_of_day.overnight_hint": "Для ночных диапазонов (например 22:0006:00) укажите время начала позже времени окончания.",
"profiles.condition.system_idle": "Бездействие системы",
"profiles.condition.system_idle.idle_minutes": "Тайм-аут бездействия (минуты):",
"profiles.condition.system_idle.mode": "Режим срабатывания:",
"profiles.condition.system_idle.when_idle": "При бездействии",
"profiles.condition.system_idle.when_active": "При активности",
"profiles.condition.display_state": "Состояние дисплея",
"profiles.condition.display_state.state": "Состояние монитора:",
"profiles.condition.display_state.on": "Включён",
"profiles.condition.display_state.off": "Выключен (спящий режим)",
"profiles.condition.mqtt": "MQTT",
"profiles.condition.mqtt.topic": "Топик:",
"profiles.condition.mqtt.payload": "Значение:",
"profiles.condition.mqtt.match_mode": "Режим сравнения:",
"profiles.condition.mqtt.match_mode.exact": "Точное совпадение",
"profiles.condition.mqtt.match_mode.contains": "Содержит",
"profiles.condition.mqtt.match_mode.regex": "Регулярное выражение",
"profiles.condition.mqtt.hint": "Активировать при получении совпадающего значения по MQTT топику",
"profiles.scene": "Сцена:",
"profiles.scene.hint": "Пресет сцены для активации при выполнении условий",
"profiles.scene.search_placeholder": "Поиск сцен...",
"profiles.scene.none_selected": "Нет сцены",
"profiles.scene.none_available": "Нет доступных сцен",
"profiles.deactivation_mode": "Деактивация:",
"profiles.deactivation_mode.hint": "Что происходит, когда условия перестают выполняться",
"profiles.deactivation_mode.none": "Ничего — оставить текущее состояние",
"profiles.deactivation_mode.revert": "Вернуть предыдущее состояние",
"profiles.deactivation_mode.fallback_scene": "Активировать резервную сцену",
"profiles.deactivation_scene": "Резервная сцена:",
"profiles.deactivation_scene.hint": "Сцена для активации при деактивации профиля",
"profiles.status.active": "Активен",
"profiles.status.inactive": "Неактивен",
"profiles.status.disabled": "Отключён",
"profiles.action.disable": "Отключить",
"profiles.last_activated": "Последняя активация",
"profiles.logic.and": " И ",
"profiles.logic.or": " ИЛИ ",
"profiles.logic.all": "ВСЕ",
"profiles.logic.any": "ЛЮБОЕ",
"profiles.updated": "Профиль обновлён",
"profiles.created": "Профиль создан",
"profiles.deleted": "Профиль удалён",
"profiles.error.name_required": "Введите название",
"automations.title": "Автоматизации",
"automations.empty": "Автоматизации не настроены. Создайте автоматизацию для автоматической активации сцен.",
"automations.add": "Добавить автоматизацию",
"automations.edit": "Редактировать автоматизацию",
"automations.delete.confirm": "Удалить автоматизацию \"{name}\"?",
"automations.name": "Название:",
"automations.name.hint": "Описательное имя для автоматизации",
"automations.enabled": "Включена:",
"automations.enabled.hint": "Отключённые автоматизации не активируются даже при выполнении условий",
"automations.condition_logic": "Логика условий:",
"automations.condition_logic.hint": "Как объединяются несколько условий: ЛЮБОЕ (ИЛИ) или ВСЕ (И)",
"automations.condition_logic.or": "Любое условие (ИЛИ)",
"automations.condition_logic.and": "Все условия (И)",
"automations.conditions": "Условия:",
"automations.conditions.hint": "Правила, определяющие когда автоматизация активируется",
"automations.conditions.add": "Добавить условие",
"automations.conditions.empty": "Нет условий — автоматизация всегда активна когда включена",
"automations.condition.always": "Всегда",
"automations.condition.always.hint": "Автоматизация активируется сразу при включении и остаётся активной. Используйте для автозапуска сцен при старте сервера.",
"automations.condition.application": "Приложение",
"automations.condition.application.apps": "Приложения:",
"automations.condition.application.apps.hint": "Имена процессов, по одному на строку (например firefox.exe)",
"automations.condition.application.browse": "Обзор",
"automations.condition.application.search": "Фильтр процессов...",
"automations.condition.application.no_processes": "Процессы не найдены",
"automations.condition.application.match_type": "Тип соответствия:",
"automations.condition.application.match_type.hint": "Как определять наличие приложения",
"automations.condition.application.match_type.running": "Запущено",
"automations.condition.application.match_type.topmost": "На переднем плане",
"automations.condition.application.match_type.topmost_fullscreen": "На переднем плане + Полный экран",
"automations.condition.application.match_type.fullscreen": "Полный экран",
"automations.condition.time_of_day": "Время суток",
"automations.condition.time_of_day.start_time": "Время начала:",
"automations.condition.time_of_day.end_time": "Время окончания:",
"automations.condition.time_of_day.overnight_hint": "Для ночных диапазонов (например 22:0006:00) укажите время начала позже времени окончания.",
"automations.condition.system_idle": "Бездействие системы",
"automations.condition.system_idle.idle_minutes": "Тайм-аут бездействия (минуты):",
"automations.condition.system_idle.mode": "Режим срабатывания:",
"automations.condition.system_idle.when_idle": "При бездействии",
"automations.condition.system_idle.when_active": "При активности",
"automations.condition.display_state": "Состояние дисплея",
"automations.condition.display_state.state": "Состояние монитора:",
"automations.condition.display_state.on": "Включён",
"automations.condition.display_state.off": "Выключен (спящий режим)",
"automations.condition.mqtt": "MQTT",
"automations.condition.mqtt.topic": "Топик:",
"automations.condition.mqtt.payload": "Значение:",
"automations.condition.mqtt.match_mode": "Режим сравнения:",
"automations.condition.mqtt.match_mode.exact": "Точное совпадение",
"automations.condition.mqtt.match_mode.contains": "Содержит",
"automations.condition.mqtt.match_mode.regex": "Регулярное выражение",
"automations.condition.mqtt.hint": "Активировать при получении совпадающего значения по MQTT топику",
"automations.scene": "Сцена:",
"automations.scene.hint": "Пресет сцены для активации при выполнении условий",
"automations.scene.search_placeholder": "Поиск сцен...",
"automations.scene.none_selected": "Нет сцены",
"automations.scene.none_available": "Нет доступных сцен",
"automations.deactivation_mode": "Деактивация:",
"automations.deactivation_mode.hint": "Что происходит, когда условия перестают выполняться",
"automations.deactivation_mode.none": "Ничего — оставить текущее состояние",
"automations.deactivation_mode.revert": "Вернуть предыдущее состояние",
"automations.deactivation_mode.fallback_scene": "Активировать резервную сцену",
"automations.deactivation_scene": "Резервная сцена:",
"automations.deactivation_scene.hint": "Сцена для активации при деактивации автоматизации",
"automations.status.active": "Активна",
"automations.status.inactive": "Неактивна",
"automations.status.disabled": "Отключена",
"automations.action.disable": "Отключить",
"automations.last_activated": "Последняя активация",
"automations.logic.and": " И ",
"automations.logic.or": " ИЛИ ",
"automations.logic.all": "ВСЕ",
"automations.logic.any": "ЛЮБОЕ",
"automations.updated": "Автоматизация обновлена",
"automations.created": "Автоматизация создана",
"automations.deleted": "Автоматизация удалена",
"automations.error.name_required": "Введите название",
"scenes.title": "Сцены",
"scenes.add": "Захватить сцену",
"scenes.edit": "Редактировать сцену",
@@ -633,7 +633,7 @@
"scenes.delete": "Удалить сцену",
"scenes.targets_count": "целей",
"scenes.devices_count": "устройств",
"scenes.profiles_count": "профилей",
"scenes.automations_count": "автоматизаций",
"scenes.captured": "Сцена захвачена",
"scenes.updated": "Сцена обновлена",
"scenes.activated": "Сцена активирована",
@@ -1016,7 +1016,7 @@
"search.group.targets": "LED-цели",
"search.group.kc_targets": "Цели Key Colors",
"search.group.css": "Источники цветных лент",
"search.group.profiles": "Профили",
"search.group.automations": "Автоматизации",
"search.group.streams": "Потоки изображений",
"search.group.capture_templates": "Шаблоны захвата",
"search.group.pp_templates": "Шаблоны постобработки",
@@ -1025,7 +1025,7 @@
"search.group.value": "Источники значений",
"search.group.scenes": "Пресеты сцен",
"settings.backup.label": "Резервное копирование",
"settings.backup.hint": "Скачать всю конфигурацию (устройства, цели, потоки, шаблоны, профили) в виде одного JSON-файла.",
"settings.backup.hint": "Скачать всю конфигурацию (устройства, цели, потоки, шаблоны, автоматизации) в виде одного JSON-файла.",
"settings.backup.button": "Скачать резервную копию",
"settings.backup.success": "Резервная копия скачана",
"settings.backup.error": "Ошибка скачивания резервной копии",
@@ -1074,7 +1074,7 @@
"calibration.error.save_failed": "Не удалось сохранить калибровку",
"calibration.error.led_count_mismatch": "Общее количество LED должно совпадать с количеством LED устройства",
"calibration.error.led_count_exceeded": "Калиброванных LED больше, чем общее количество LED",
"dashboard.error.profile_toggle_failed": "Не удалось переключить профиль",
"dashboard.error.automation_toggle_failed": "Не удалось переключить автоматизацию",
"dashboard.error.start_failed": "Не удалось запустить обработку",
"dashboard.error.stop_failed": "Не удалось остановить обработку",
"dashboard.error.autostart_toggle_failed": "Не удалось переключить автозапуск",